Browse Source

GammaRegularized: Tests to confirm bug on large arguments

v2
Christoph Ruegg 13 years ago
parent
commit
be761ba11a
  1. 106
      src/UnitTests/SpecialFunctionsTests/GammaTests.cs

106
src/UnitTests/SpecialFunctionsTests/GammaTests.cs

@ -94,33 +94,43 @@ namespace MathNet.Numerics.UnitTests.SpecialFunctionsTests
/// <summary>
/// Gamma lower regularized.
/// </summary>
/// <param name="a">Value of A parameter.</param>
/// <param name="x">Input X value.</param>
/// <param name="f">Function result.</param>
[TestCase(double.NaN, Double.NaN, Double.NaN)]
[TestCase(0.1, 1.0, 0.97587265627367222115949155252812057714751052498477013)]
[TestCase(0.1, 2.0, 0.99432617602018847196075251078067514034772764693462125)]
[TestCase(0.1, 8.0, 0.99999507519205198048686442150578226823401842046310854)]
[TestCase(1.5, 1.0, 0.42759329552912016600095238564127189392715996802703368)]
[TestCase(1.5, 2.0, 0.73853587005088937779717792402407879809718939080920993)]
[TestCase(1.5, 8.0, 0.99886601571021467734329986257903021041757398191304284)]
[TestCase(2.5, 1.0, 0.15085496391539036377410688601371365034788861473418704)]
[TestCase(2.5, 2.0, 0.45058404864721976739416885516693969548484517509263197)]
[TestCase(2.5, 8.0, 0.99315592607757956900093935107222761316136944145439676)]
[TestCase(5.5, 1.0, 0.0015041182825838038421585211353488839717739161316985392)]
[TestCase(5.5, 2.0, 0.030082976121226050615171484772387355162056796585883967)]
[TestCase(5.5, 8.0, 0.85886911973294184646060071855669224657735916933487681)]
public void GammaLowerRegularized(double a, double x, double f)
[TestCase(double.NaN, Double.NaN, Double.NaN, 14)]
[TestCase(0.1, 1.0, 0.97587265627367222115949155252812057714751052498477013, 14)]
[TestCase(0.1, 2.0, 0.99432617602018847196075251078067514034772764693462125, 14)]
[TestCase(0.1, 8.0, 0.99999507519205198048686442150578226823401842046310854, 14)]
[TestCase(1.5, 1.0, 0.42759329552912016600095238564127189392715996802703368, 14)]
[TestCase(1.5, 2.0, 0.73853587005088937779717792402407879809718939080920993, 14)]
[TestCase(1.5, 8.0, 0.99886601571021467734329986257903021041757398191304284, 14)]
[TestCase(2.5, 1.0, 0.15085496391539036377410688601371365034788861473418704, 14)]
[TestCase(2.5, 2.0, 0.45058404864721976739416885516693969548484517509263197, 14)]
[TestCase(2.5, 8.0, 0.99315592607757956900093935107222761316136944145439676, 14)]
[TestCase(5.5, 1.0, 0.0015041182825838038421585211353488839717739161316985392, 14)]
[TestCase(5.5, 2.0, 0.030082976121226050615171484772387355162056796585883967, 14)]
[TestCase(5.5, 8.0, 0.85886911973294184646060071855669224657735916933487681, 14)]
[TestCase(100, 0.5, 0.0, 14)]
[TestCase(100, 1.5, 0.0, 14)]
[TestCase(100, 90, 0.1582209891864301681049696996709105316998233457433473, 12)]
[TestCase(100, 100, 0.5132987982791486648573142565640291634709251499279450, 12)]
[TestCase(100, 110, 0.8417213299399129061982996209829688531933500308658222, 12)]
[TestCase(100, 200, 1.0, 14)]
[TestCase(500, 0.5, 0.0, 14)]
[TestCase(500, 1.5, 0.0, 14)]
[TestCase(500, 200, 0.0, 14)]
[TestCase(500, 450, 0.0107172380912897415573958770655204965434869949241480, 12)]
[TestCase(500, 500, 0.5059471461707603580470479574412058032802735425634263, 12)]
[TestCase(500, 550, 0.9853855918737048059548470006900844665580616318702748, 12)]
[TestCase(500, 700, 1.0, 14)]
[TestCase(1000, 10000, 1.0, 14)]
[TestCase(1e+50, 1e+48, 0.0, 14)]
[TestCase(1e+50, 1e+52, 1.0, 14)]
public void GammaLowerRegularized(double a, double x, double f, int digits)
{
AssertHelpers.AlmostEqual(f, SpecialFunctions.GammaLowerRegularized(a, x), 14);
AssertHelpers.AlmostEqual(f, SpecialFunctions.GammaLowerRegularized(a, x), digits);
}
/// <summary>
/// Gamma lower incomplete.
/// </summary>
/// <param name="a">Value of A parameter.</param>
/// <param name="x">Input X value.</param>
/// <param name="f">Function result.</param>
[TestCase(double.NaN, Double.NaN, Double.NaN)]
[TestCase(0.1, 1.0, 9.2839720283798852469443229940217320532607158711056334)]
[TestCase(0.1, 2.0, 9.4595297305559030536119885480983751098528458886962883)]
@ -142,35 +152,45 @@ namespace MathNet.Numerics.UnitTests.SpecialFunctionsTests
/// <summary>
/// Gamma upper regularized.
/// </summary>
/// <param name="a">Value of A parameter.</param>
/// <param name="x">Input X value.</param>
/// <param name="f">Function result.</param>
[TestCase(double.NaN, Double.NaN, Double.NaN)]
[TestCase(0.1, 1.0, 0.024127343726327778840508447471879422852489475015229)]
[TestCase(0.1, 2.0, 0.0056738239798115280392474892193248596522723530653781)]
[TestCase(0.1, 8.0, 0.0000049248079480195131355784942177317659815795368919702)]
[TestCase(1.5, 1.0, 0.57240670447087983399904761435872810607284003197297)]
[TestCase(1.5, 2.0, 0.26146412994911062220282207597592120190281060919079)]
[TestCase(1.5, 8.0, 0.0011339842897853226567001374209697895824260180869567)]
[TestCase(2.5, 1.0, 0.84914503608460963622589311398628634965211138526581)]
[TestCase(2.5, 2.0, 0.54941595135278023260583114483306030451515482490737)]
[TestCase(2.5, 8.0, 0.0068440739224204309990606489277723868386305585456026)]
[TestCase(5.5, 1.0, 0.9984958817174161961578414788646511160282260838683)]
[TestCase(5.5, 2.0, 0.96991702387877394938482851522761264483794320341412)]
[TestCase(5.5, 8.0, 0.14113088026705815353939928144330775342264083066512)]
public void GammaUpperRegularized(double a, double x, double f)
[TestCase(double.NaN, Double.NaN, Double.NaN, 14)]
[TestCase(0.1, 1.0, 0.0241273437263277773829694356333550393309597428392044, 14)]
[TestCase(0.1, 2.0, 0.0056738239798115280392474892193248596522723530653781, 14)]
[TestCase(0.1, 8.0, 0.0000049248079480195131355784942177317659815795368919702, 14)]
[TestCase(1.5, 1.0, 0.57240670447087983399904761435872810607284003197297, 14)]
[TestCase(1.5, 2.0, 0.26146412994911062220282207597592120190281060919079, 14)]
[TestCase(1.5, 8.0, 0.0011339842897853226567001374209697895824260180869567, 14)]
[TestCase(2.5, 1.0, 0.84914503608460963622589311398628634965211138526581, 14)]
[TestCase(2.5, 2.0, 0.54941595135278023260583114483306030451515482490737, 14)]
[TestCase(2.5, 8.0, 0.0068440739224204309990606489277723868386305585456026, 14)]
[TestCase(5.5, 1.0, 0.9984958817174161961578414788646511160282260838683, 14)]
[TestCase(5.5, 2.0, 0.96991702387877394938482851522761264483794320341412, 14)]
[TestCase(5.5, 8.0, 0.14113088026705815353939928144330775342264083066512, 14)]
[TestCase(100, 0.5, 1.0, 14)]
[TestCase(100, 1.5, 1.0, 14)]
[TestCase(100, 90, 0.8417790108135698318950303003290894683001766542566526, 12)]
[TestCase(100, 100, 0.4867012017208513351426857434359708365290748500720549, 12)]
[TestCase(100, 110, 0.1582786700600870938017003790170311468066499691341777, 12)]
[TestCase(100, 200, 0.0, 14)]
[TestCase(500, 0.5, 1.0, 14)]
[TestCase(500, 1.5, 1.0, 14)]
[TestCase(500, 200, 1.0, 14)]
[TestCase(500, 450, 0.9892827619087102584426041229344795034565130050758519, 12)]
[TestCase(500, 500, 0.4940528538292396419529520425587941967197264574365736, 12)]
[TestCase(500, 550, 0.0146144081262951940451529993099155334419383681297251, 12)]
[TestCase(500, 700, 0.0, 14)]
[TestCase(1000, 10000, 0.0, 14)]
[TestCase(1e+50, 1e+48, 1.0, 14)]
[TestCase(1e+50, 1e+52, 0.0, 14)]
public void GammaUpperRegularized(double a, double x, double f, int digits)
{
AssertHelpers.AlmostEqual(f, SpecialFunctions.GammaUpperRegularized(a, x), 14);
AssertHelpers.AlmostEqual(f, SpecialFunctions.GammaUpperRegularized(a, x), digits);
}
/// <summary>
/// Gamma upper incomplete.
/// </summary>
/// <param name="a">Value of A parameter.</param>
/// <param name="x">Input X value.</param>
/// <param name="f">Function result.</param>
[TestCase(double.NaN, Double.NaN, Double.NaN)]
[TestCase(0.1, 1.0, 0.22953567028884603886365690180350044765300023528467)]
[TestCase(0.1, 1.0, 0.2295356702888460382790772147651768201739736396141314)]
[TestCase(0.1, 2.0, 0.053977968112828232195991347726857391060870217694027)]
[TestCase(0.1, 8.0, 0.000046852198327948595220974570460669512682180005810156)]
[TestCase(1.5, 1.0, 0.50728223381177330984514007570018045349008617228036)]

Loading…
Cancel
Save