/* Author: G. Jungman * RCS: $Id: test_gamma.c,v 1.8 1999/08/09 22:34:44 jungman Exp $ */ #include #include #include #include "test_sf.h" int test_gamma(void) { gsl_sf_result r; gsl_sf_result r1, r2; double sgn; int s = 0; TEST_SF(s, gsl_sf_lngamma_impl, (-0.1, &r), 2.368961332728788655 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (-1.0/256.0, &r), 5.547444766967471595 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (1.0e-08, &r), 18.420680738180208905 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (0.1, &r), 2.252712651734205 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (1.0 + 1.0/256.0, &r), -0.0022422226599611501448 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (2.0 + 1.0/256.0, &r), 0.0016564177556961728692 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (100.0, &r), 359.1342053695753 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (-1.0-1.0/65536.0, &r), 11.090348438090047844 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (-1.0-1.0/268435456.0, &r), 19.408121054103474300 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (-100.5, &r), -364.9009683094273518 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lngamma_impl, (-100-1.0/65536.0, &r), -352.6490910117097874 , TEST_TOL0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lngamma_sgn_impl, (0.7, &r, &sgn), 0.26086724653166651439, TEST_TOL1, 1.0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lngamma_sgn_impl, (0.1, &r, &sgn), 2.2527126517342059599, TEST_TOL0, 1.0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lngamma_sgn_impl, (-0.1, &r, &sgn), 2.368961332728788655, TEST_TOL0, -1.0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lngamma_sgn_impl, (-1.0-1.0/65536.0, &r, &sgn), 11.090348438090047844, TEST_TOL0, 1.0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lngamma_sgn_impl, (-2.0-1.0/256.0, &r, &sgn), 4.848447725860607213, TEST_TOL0, -1.0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lngamma_sgn_impl, (-2.0-1.0/65536.0, &r, &sgn), 10.397193628164674967, TEST_TOL0, -1.0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lngamma_sgn_impl, (-3.0-1.0/8.0, &r, &sgn), 0.15431112768404182427, TEST_TOL2, 1.0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lngamma_sgn_impl, (-100.5, &r, &sgn), -364.9009683094273518, TEST_TOL0, -1.0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_impl, (1.0 + 1.0/4096.0, &r), 0.9998591371459403421 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_impl, (1.0 + 1.0/32.0, &r), 0.9829010992836269148 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_impl, (2.0 + 1.0/256.0, &r), 1.0016577903733583299 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_impl, (9.0, &r), 40320.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_impl, (10.0, &r), 362880.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_impl, (100.0, &r), 9.332621544394415268e+155 , TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_impl, (170.0, &r), 4.269068009004705275e+304 , TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_impl, (-10.5, &r), -2.640121820547716316e-07 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_impl, (-11.25, &r), 6.027393816261931672e-08 , TEST_TOL0, GSL_SUCCESS); /* exp()... not my fault */ TEST_SF(s, gsl_sf_gamma_impl, (-1.0+1.0/65536.0, &r), -65536.42280587818970 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (1.0e-08, &r), 3989.423555759890865 , TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (1.0e-05, &r), 126.17168469882690233 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (0.001, &r), 12.708492464364073506 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (1.5, &r), 1.0563442442685598666 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (3.0, &r), 1.0280645179187893045 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (9.0, &r), 1.0092984264218189715 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (11.0, &r), 1.0076024283104962850 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (100.0, &r), 1.0008336778720121418 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (1.0e+05, &r), 1.0000008333336805529 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammastar_impl, (1.0e+20, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammainv_impl, (10.0, &r), 1.0/362880.0, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammainv_impl, (100.0, &r), 1.0715102881254669232e-156, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammainv_impl, (-10.5, &r), -1.0/2.640121820547716316e-07, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammainv_impl, (-11.25, &r), 1.0/6.027393816261931672e-08, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammainv_impl, (-1.0+1.0/65536.0, &r), -1.0/65536.42280587818970 , TEST_TOL1, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_lngamma_complex_impl, (5.0, 2.0, &r1, &r2), 2.7487017561338026749, TEST_TOL0, 3.0738434100497007915, TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_lngamma_complex_impl, (100.0, 100.0, &r1, &r2), 315.07804459949331323, TEST_TOL1, 2.0821801804113110099, TEST_TOL3, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_lngamma_complex_impl, (100.0, -1000.0, &r1, &r2), -882.3920483010362817000, TEST_TOL1, -2.1169293725678813270, TEST_TOL3, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_lngamma_complex_impl, (-100.0, -1.0, &r1, &r2), -365.0362469529239516000, TEST_TOL1, -3.0393820262864361140, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_taylorcoeff_impl, (10, 1.0/1048576.0, &r), 1.7148961854776073928e-67 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_taylorcoeff_impl, (10, 1.0/1024.0, &r), 2.1738891788497900281e-37 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_taylorcoeff_impl, (10, 1.0, &r), 2.7557319223985890653e-07 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_taylorcoeff_impl, (10, 5.0, &r), 2.6911444554673721340 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_taylorcoeff_impl, (10, 500.0, &r), 2.6911444554673721340e+20 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_taylorcoeff_impl, (100, 100.0, &r), 1.0715102881254669232e+42 , TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_taylorcoeff_impl, (1000, 200.0, &r), 2.6628790558154746898e-267 , TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_taylorcoeff_impl, (1000, 500.0, &r), 2.3193170139740855074e+131 , TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_fact_impl, (0, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_fact_impl, (1, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_fact_impl, (7, &r), 5040.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_fact_impl, (33, &r), 8.683317618811886496e+36 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_doublefact_impl, (0, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_doublefact_impl, (1, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_doublefact_impl, (7, &r), 105.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_doublefact_impl, (33, &r), 6.332659870762850625e+18 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnfact_impl, (0, &r), 0.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnfact_impl, (1, &r), 0.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnfact_impl, (7, &r), 8.525161361065414300 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnfact_impl, (33, &r), 85.05446701758151741 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lndoublefact_impl, (0, &r), 0.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lndoublefact_impl, (7, &r), 4.653960350157523371 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lndoublefact_impl, (33, &r), 43.292252022541719660 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lndoublefact_impl, (34, &r), 45.288575519655959140 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lndoublefact_impl, (1034, &r), 3075.6383796271197707 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lndoublefact_impl, (1035, &r), 3078.8839081731809169 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnchoose_impl, (7,3, &r), 3.555348061489413680 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnchoose_impl, (5,2, &r), 2.302585092994045684 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_choose_impl, (7,3, &r), 35.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_choose_impl, (5,2, &r), 10.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_choose_impl, (500,200, &r), 5.054949849935532221e+144 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnpoch_impl, (5, 1.0/65536.0, &r), 0.000022981557571259389129, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnpoch_impl, (5, 1.0/256.0, &r), 0.005884960217985189004, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnpoch_impl, (7,3, &r), 6.222576268071368616, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnpoch_impl, (5,2, &r), 3.401197381662155375, TEST_TOL0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lnpoch_sgn_impl, (-4.5, 0.25, &r, &sgn), 0.7430116475119920117, TEST_TOL1, 1.0, GSL_SUCCESS); TEST_SF_SGN(s, gsl_sf_lnpoch_sgn_impl, (-4.5, 1.25, &r, &sgn), 2.1899306304483174731, TEST_TOL1, -1.0, GSL_SUCCESS); TEST_SF(s, gsl_sf_poch_impl, (7,3, &r), 504.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_poch_impl, (5,2, &r), 30.0 , TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_poch_impl, (5,1.0/256.0, &r), 1.0059023106151364982 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_pochrel_impl, (7,3, &r), 503.0/3.0, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_pochrel_impl, (5,2, &r), 29.0/2.0, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_pochrel_impl, (5,0.01, &r), 1.5186393661368275330, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_pochrel_impl, (-5.5,0.01, &r), 1.8584945633829063516, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_pochrel_impl, (-5.5,-1.0/8.0, &r), 1.0883319303552135488, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_pochrel_impl, (-5.5,-1.0/256.0, &r), 1.7678268037726177453, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_pochrel_impl, (-5.5,-11.0, &r), 0.09090909090939652475, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_impl, (0.001, 0.001, &r), 0.9936876467088602902, TEST_TOL0, GSL_SUCCESS) ; TEST_SF(s, gsl_sf_gamma_inc_P_impl, (0.001, 1.0, &r), 0.9997803916424144436, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_impl, (0.001, 10.0, &r), 0.9999999958306921828, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_impl, (1.0, 0.001, &r), 0.0009995001666250083319, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_impl, (1.0, 1.01, &r), 0.6357810204284766802, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_impl, (1.0, 10.0, &r), 0.9999546000702375151, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_impl, (10.0, 10.01, &r), 0.5433207586693410570, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_impl, (10.0, 20.0, &r), 0.9950045876916924128, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_impl, (1000.0, 1000.1, &r), 0.5054666401440661753, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_impl, (1000.0, 2000.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (0.001, 0.001, &r), 0.006312353291139709793, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (0.001, 1.0, &r), 0.00021960835758555639171, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (0.001, 2.0, &r), 0.00004897691783098147880, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (0.001, 5.0, &r), 1.1509813397308608541e-06, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (1.0, 0.001, &r), 0.9990004998333749917, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (1.0, 1.01, &r), 0.3642189795715233198, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (1.0, 10.0, &r), 0.00004539992976248485154, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (10.0, 10.01, &r), 0.4566792413306589430, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (10.0, 100.0, &r), 1.1253473960842733885e-31, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (1000.0, 1000.1, &r), 0.4945333598559338247, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_impl, (1000.0, 2000.0, &r), 6.847349459614753180e-136, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (1.0e-8, 1.0e-8, &r), 19.113827924512310617 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (1.0e-8, 0.01, &r), 18.420681743788563403 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (1.0e-8, 1.0, &r), 18.420680743952365472 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (1.0e-8, 10.0, &r), 18.420680715662683009 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (1.0e-8, 1000.0, &r), 18.420680669107656949 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (0.1, 0.1, &r), 2.9813614810376273949 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (0.1, 1.0, &r), 2.3025850929940456840 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (0.1, 100.0, &r), 1.7926462324527931217 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (0.1, 1000, &r), 1.5619821298353164928 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (1.0, 1.00025, &r), -0.0002499687552073570, TEST_TOL4, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (1.0, 1.01, &r), -0.009950330853168082848 , TEST_TOL3, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (1.0, 1000.0, &r), -6.907755278982137052 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (100.0, 100.0, &r), -139.66525908670663927 , TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (100.0, 1000.0, &r), -336.4348576477366051 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnbeta_impl, (100.0, 1.0e+8, &r), -1482.9339185256447309 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_beta_impl, (1.0, 1.0, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_beta_impl, (1.0, 1.001, &r), 0.9990009990009990010 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_beta_impl, (1.0, 5.0, &r), 0.2 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_beta_impl, (1.0, 100.0, &r), 0.01 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_beta_impl, (10.0, 100.0, &r), 2.3455339739604649879e-15 , TEST_TOL2, GSL_SUCCESS); return s; }