In[]:=
lbeta[x_,y_]:=LogGamma[x]+LogGamma[y]-LogGamma[x+y]dlbetadx[x_,y_]=D[lbeta[x,y],x];dlbetady[x_,y_]=D[lbeta[x,y],y];
Precomputed test
toCString[x_]:=ToString[CForm[N[x,24]]];singleTest[x_,y_]:=Module[{val,cdx,cdy,big},{val=toCString[lbeta[x,y]];cdx=If[x>10^6||y>10^6,"NaN",toCString[dlbetadx[x,y]]];cdy=If[x>10^6||y>10^6,"NaN",toCString[dlbetady[x,y]]];StringJoin[" {",toCString[x],",",toCString[y],",",val,",",cdx,",",cdy,"},\n"]}];xs=SetPrecision[{0.00000001,0.004,1,1.00000001,5.0,23.0,19845.0},Infinity];ys=SetPrecision[{0.00000000001,0.00002,1.000000000001,0.5,2.0,1624.0},Infinity];out="std::vector<TestValue> testValues = {\n"; For[i=1,i≤Length[xs],i++,{For[j=1,j≤Length[ys],j++,{ out=StringJoin[out,singleTest[xs[[i]],ys[[j]]]]; }]}]extremeXs={3*10^15+10^-1,10^20+10^-1};lowYs={3,100,12895};For[i=1,i≤Length[extremeXs],i++,{For[j=1,j≤Length[lowYs],j++,{ out=StringJoin[out,singleTest[extremeXs[[i]],lowYs[[j]]]]; }] }]out=StringJoin[out,"};\n"]; out
Out[]=
std::vector<TestValue> testValues = { {1.00000000000000002092256e-8,9.9999999999999993949697e-12,25.3294355232675861176219,-99900.0999000999063327762,-9.99000999000999061687346e10}, {1.00000000000000002092256e-8,0.0000200000000000000016360611,18.4211806189936875171022,-9.99500249875391429884343e7,-24.987506263325417893104}, {1.00000000000000002092256e-8,1.00000000000100008890058,18.4206807439523654512049,-9.9999999999999997909389e7,-1.64493405482525322002407e-8}, {1.00000000000000002092256e-8,0.5,18.4206807578153088979269,-9.99999986137056696865339e7,-4.93480211640069781497916e-8}, {1.00000000000000002092256e-8,2.,18.4206807339523655012214,-1.00000000999999987907744e8,-6.44934064827657426602468e-9}, {1.00000000000000002092256e-8,1624.,18.4206806642568128109103,-1.00000007969555253717259e8,-6.15953168081550363455631e-12}, {0.00400000000000000008326673,9.9999999999999993949697e-12,25.3284360254344369758523,-6.25016352130489628103017e-7,-9.99999997500065672476642e10}, {0.00400000000000000008326673,0.0000200000000000000016360611,10.8247656947117877977197,-1.24381380143768420568693,-49751.2503414755942898455}, {0.00400000000000000008326673,1.00000000000100008890058,5.52146091786223985124723,-250.000000000001630310514,-0.00656057236120388443368478}, {0.00400000000000000008326673,0.5,5.52697992926150651043563,-248.626750675814271729954,-0.0196056092953810030104119}, {0.00400000000000000008326673,2.,5.51746889659270895932082,-250.996015936254974875428,-0.00257650861619352965053606}, {0.00400000000000000008326673,1624.,5.48959582574332553066745,-257.962997163701114672183,-2.46380963715242861602996e-6}, {1.,9.9999999999999993949697e-12,25.3284360229345025847009,-1.64493406683620576791743e-11,-1.00000000000000006050303e11}, {1.,0.0000200000000000000016360611,10.8197782844102830288697,-0.0000328982005228616875473718,-49999.9999999999959098473}, {1.,1.00000000000100008890058,-1.00008890058184092270907e-12,-1.00000000000064499140186,-0.99999999999899991109942}, {1.,0.5,0.693147180559945309417232,-0.613705638880109381165536,-2.}, {1.,2.,-0.693147180559945309417232,-1.5,-0.5}, {1.,1624.,-7.39264752072162326054032,-7.97017103579949420353338,-0.000615763546798029556650246}, {1.00000000999999993922529,9.9999999999999993949697e-12,25.3284360229345025845364,-1.64493404279506817585652e-11,-1.00000000000000006066752e11}, {1.00000000999999993922529,0.0000200000000000000016360611,10.8197782844099540468688,-0.0000328982000420519232463277,-50000.0000000164447694858}, {1.00000000999999993922529,1.00000000000100008890058,-1.00009999781323229867408e-8,-0.999999990000645152172528,-1.00000000644834052017627}, {1.00000000999999993922529,0.5,0.693147174422888993420513,-0.613705631778790840053979,-2.00000000934802190719463}, {1.00000000999999993922529,2.,-0.693147195559945155755169,-1.49999998750000018846838,-0.500000003949340636774571}, {1.00000000999999993922529,1624.,-7.39264760042333305193451,-7.97017101935630949522315,-0.000615763552953769552598789}, {5.,9.9999999999999993949697e-12,25.3284360229136692513677,-2.21322955736871363309369e-12,-1.00000000002083339383622e11}, {5.,0.0000200000000000000016360611,10.8197366180283354440329,-4.42644935682442819025907e-6,-50002.0833048615780771434}, {5.,1.00000000000100008890058,-1.60943791243638391092375,-0.200000000000181339075453,-2.28333333333186959210634}, {5.,0.5,-0.207395194346070587158746,-0.104975480149950651006806,-3.5746031746031746031746}, {5.,2.,-3.40119738166215537541324,-0.366666666666666666666667,-1.45}, {5.,1624.,-33.7913357290267948074624,-5.88929697199582686904279,-0.00307503307646402839938757}, {23.,9.9999999999999993949697e-12,25.3284360228975944521988,-4.44371335365687819119143e-13,-1.00000000003690819300504e11}, {23.,0.0000200000000000000016360611,10.8197044684653748672169,-8.88742275864946586539857e-7,-50003.6907812407549378356}, {23.,1.00000000000100008890058,-3.13549421593288431429853,-0.0434782608696077679481057,-3.7342915110852376727225}, {23.,0.5,-0.989947810259228199543883,-0.0219753695482036950492042,-5.09908298088536929896051}, {23.,2.,-6.31354804627709531045369,-0.085144927536231884057971,-2.77595817775350686913481}, {23.,1624.,-121.714785277510463870251,-4.29280953187037223167221,-0.0140675098349510427723158}, {19845.,9.9999999999999993949697e-12,25.3284360228297736063546,-5.03917962049126253574903e-16,-1.0000000001047290388493e11}, {19845.,0.0000200000000000000016360611,10.8195688267825636822676,-1.00783592359038628000151e-9,-50010.4728649374470305881}, {19845.,1.00000000000100008890058,-9.89570736522763962966881,-0.000050390526581053165215596,-10.4729482251687436517705}, {19845.,0.5,-4.37548244086806082919414,-0.0000251955806911474238396687,-11.859217391344389445166}, {19845.,2.,-19.7914651196913525680177,-0.000100778514084781870541745,-9.47299861315789246077826}, {19845.,1624.,-5756.4146766727238501215,-0.078659853852481428671324,-2.58200241624359293360231}, {3.0000000000000001e15,3.,-106.219018870176440645578,NaN,NaN}, {3.0000000000000001e15,100.,-3204.6046629883057497238,NaN,NaN}, {3.0000000000000001e15,12895.,-350396.988955562107351686,NaN,NaN}, {1.000000000000000000001e20,3.,-137.461958399082795731695,NaN,NaN}, {1.000000000000000000001e20,100.,-4246.03598061851596930954,NaN,NaN}, {1.000000000000000000001e20,12895.,-484689.557363950217404724,NaN,NaN},};
In[]:=
N[dlbetady[3000000,3],24]
Out[]=
-13.9913393448669073970356
N[dlbetadx[10^8,3],24]
Out[]=
$Aborted
In[]:=
lstirling[x_]:=1/2 * Log[2*Pi] + (x - 1/2)*Log[x] -xlfstirling[x_]:=1/2 * Log[2*Pi*x]+x*(Log[x]-1)FullSimplify[lfstirling[x]-Log[x]-lstirling[x],Assumptions{x∈Reals,x>0}]
Out[]=
0
In[]:=
FullSimplify[lfstirling[x-1]]Reduce[{lfstirling[x]==lstirling[x+1],x>1}]
Out[]=
(-1+x)(-1+Log[-1+x])+Log[2π(-1+x)]
1
2
Edge cases