From c249c9caa4db5232d3e3e30de5a8b4e375114dff Mon Sep 17 00:00:00 2001 From: Lakshmi Krishnamurthy Date: Sat, 16 Mar 2024 21:25:06 -0400 Subject: [PATCH] Features: Bug Fixes/Re-organization: - Special Function Property Digamma Inequality Lemma - Alzer Difference 1997 #1 (1, 2) - Special Function Property Digamma Inequality Lemma - Alzer Difference 1997 #2 (3, 4) - Special Function Property Digamma Inequality Lemma - Alzer Jameson 2017 #1 (5, 6, 7) - Special Function Property Digamma Inequality Lemma - Alzer Jameson 2017 #2 (8, 9, 10) - Special Function Property Digamma Inequality Lemma - Alzer Jameson 2017 #3 (11, 12) - Special Function Property Digamma Saddle Point Equality Lemma (13, 14, 15) - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Reciprocal Sum #1 (16, 17, 18) - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Reciprocal Sum #2 (19, 20, 21) - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Reciprocal Sum #3 (22, 23, 24) - Special Function Property Digamma Saddle Point Equality Lemma - Cubic Reciprocal Sum #1 (25, 26, 27) - Special Function Property Digamma Saddle Point Equality Lemma - Cubic Reciprocal Sum #2 (28, 29, 30) - Special Function Property Digamma Saddle Point Equality Lemma - Cubic Reciprocal Sum #3 (31, 32) - Special Function Property Digamma Saddle Point Equality Lemma - Quartic Reciprocal Sum #1 (33, 34, 35) - Special Function Property Digamma Saddle Point Equality Lemma - Quartic Reciprocal Sum #2 (36, 37, 38) - Special Function Property Digamma Saddle Point Equality Lemma - Quartic Reciprocal Sum #3 (39, 40) - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 1 #1 (41, 42, 43) - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 1 #2 (44, 45, 46) - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 1 #3 (47, 48) - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 2 #1 (49, 50, 51) - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 2 #2 (52, 53, 54) - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 2 #3 (55, 56) - Special Function Property Gamma Equality Lemma (57, 58, 59) - Special Function Property Gamma Equality Lemma - Reflection Formula (60) Samples: IdeaDRIP: --- ReleaseNotes/08_29_2023.txt | 33 ++ ScheduleSheet.xlsx | Bin 56111 -> 56213 bytes .../property/DigammaInequalityLemma.java | 49 ++- .../DigammaSaddlePointEqualityLemma.java | 354 ++++++++---------- .../property/GammaEqualityLemma.java | 195 +++++----- 5 files changed, 318 insertions(+), 313 deletions(-) create mode 100644 ReleaseNotes/08_29_2023.txt diff --git a/ReleaseNotes/08_29_2023.txt b/ReleaseNotes/08_29_2023.txt new file mode 100644 index 000000000000..7bc4aeac0bf6 --- /dev/null +++ b/ReleaseNotes/08_29_2023.txt @@ -0,0 +1,33 @@ + +Features: + +Bug Fixes/Re-organization: + + - Special Function Property Digamma Inequality Lemma - Alzer Difference 1997 #1 (1, 2) + - Special Function Property Digamma Inequality Lemma - Alzer Difference 1997 #2 (3, 4) + - Special Function Property Digamma Inequality Lemma - Alzer Jameson 2017 #1 (5, 6, 7) + - Special Function Property Digamma Inequality Lemma - Alzer Jameson 2017 #2 (8, 9, 10) + - Special Function Property Digamma Inequality Lemma - Alzer Jameson 2017 #3 (11, 12) + - Special Function Property Digamma Saddle Point Equality Lemma (13, 14, 15) + - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Reciprocal Sum #1 (16, 17, 18) + - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Reciprocal Sum #2 (19, 20, 21) + - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Reciprocal Sum #3 (22, 23, 24) + - Special Function Property Digamma Saddle Point Equality Lemma - Cubic Reciprocal Sum #1 (25, 26, 27) + - Special Function Property Digamma Saddle Point Equality Lemma - Cubic Reciprocal Sum #2 (28, 29, 30) + - Special Function Property Digamma Saddle Point Equality Lemma - Cubic Reciprocal Sum #3 (31, 32) + - Special Function Property Digamma Saddle Point Equality Lemma - Quartic Reciprocal Sum #1 (33, 34, 35) + - Special Function Property Digamma Saddle Point Equality Lemma - Quartic Reciprocal Sum #2 (36, 37, 38) + - Special Function Property Digamma Saddle Point Equality Lemma - Quartic Reciprocal Sum #3 (39, 40) + - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 1 #1 (41, 42, 43) + - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 1 #2 (44, 45, 46) + - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 1 #3 (47, 48) + - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 2 #1 (49, 50, 51) + - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 2 #2 (52, 53, 54) + - Special Function Property Digamma Saddle Point Equality Lemma - Quadratic Polynomial Reciprocal Sum 2 #3 (55, 56) + - Special Function Property Gamma Equality Lemma (57, 58, 59) + - Special Function Property Gamma Equality Lemma - Reflection Formula (60) + + +Samples: + +IdeaDRIP: diff --git a/ScheduleSheet.xlsx b/ScheduleSheet.xlsx index f68d23e1eec0094ab4c15956fcf48f20a1d4b20f..cd84e226c14ec221c166d27948f277da4c759ea7 100644 GIT binary patch delta 6755 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ξqkcZ*->3hP7KCpr8`oq zQYLIeWtD`yLbv!K;s0HKm2NR{W44**@F6EoosJh@fWEQN)r*qeb3%T_1HkVxosBpz zPd17UgP*h~kYtTncYxe4IMsJ#&m(H`GfVS^%o)`LF+%_TvM2;Bg=v0595yBoFerhR zeKR4}TuF-QVri%gFfM9#5Oxp&Eks_o(*6{k@w3%#qrVpjkB!#OHW)i#3Q3 zNq?9+nIRiKUq?L8T_b@TH(sRr9)YIgByaGfzfZIBpPe&HWBN_d@$oS*e_(le*0`rU z=-u3OdwW|k47xrv?eJ6%JKVSzFCu!nWpCRQILqv=lwG)&;UPB{Okl+JLVp>my9E_> z|1maZz1gDBl)p!^R}};K&STs359-DsC1-~u%A;&=CN$@o7-KKDjgt>sSXobuXN~Kj{P1%%MkaYdBxE;+SX2o#Lsc`-QF|8$=&};CH)^HpGw~r@Q%eJMIF`w443nt_spnq;(~v zd79byi8sd6Gk?iPLYm-1492e+(ni;AS8jXbVgT`XR{muw(qRLJeA?^HMqpT4mQBKL zsQfi8oS!yQs8vKo+I2X4=hD?2_o;b!B_?fT_3yH4#|1cX6_1ztJ593J0)^!opHnM+ z*XA?}mg`0b1Hiy<*^E7bMINg;l|)yzJSJN~n=nd3N{w1N+p~Y_!@~HY!*;6nPH6I2 zyI3v+&mIO7J!miN8mky1$gKJ(Z7ARnV>(U)Nw=!OokURcN(e)O0u+d5UWxT1lL+UD zpU#QZnRyI2D%DjE7swY9W^(#_9TDY(8BPCm&z%8ZNK_tYlV)+$?8Vf$_~}~nSGoo={B6qhI^KqU zqMm#n5%bR~TuHcKuB+{DrK~~Srt(g%h(=u(^rvi16VB)?Mmyb&vi~$iaI)!1rS~tV zvWkIb!9`nuDD@FcJT!y#Vj?kBMZ)k{qZi97C{76W>zPKQGJ47@qN@a0801tm(yb7# z^7(0s8&|3ORPAu{_v(!R0Y;67Ei1&|8{iLGa zGjQ8qZxnVz;(6UYWQ42CphHx6%A3&`6OAAy`bc29pfXE+syd;(WMk(|3#&K|R>O_f z$xTw2H`}ve`Sr4ZII*}t&wB3{7!r+ErERH5Ytea8$Tj6{Ek48Fc>J{2kRM*V{nnf= zMsLJ~yWMy4w6s~5am@!8T)LHZjm*vt-go3J>bqPTzw+{XN1e5abE6=5tJ7;HB_rKp zb>G6BvQz(>Mw)lNuDKa_o2Gew{7uu0hA!FC=l*?m{IByi?`sdrHVOkiDnWIan*ZSn&?>31&T^7H=Rj2C1paxWeyGzpcez!GLp z=hHo2?rHfBNwKzNxT-XY_J6y^a8URnK!(M5BwLw=UyB@lS$VSA4^8IKD0v|lBF<+M zZ(>qV%2+yekh_CjLvAXmtQ}IpB41ET*fCQSR>y`3@ykD1NRnM~oL&rS|@ycsO_LA0R4XjMFOMPoLD zwrA`epSfV219i;+ao2k6LEqa`aoyA4ZOsm{a*&2KGrmMJSsN_}+2H1ufuU!B(s)=QgNV>Nq7)?L7Texm1j*H2>l z?Uh#6sz+R0+CV-u{W@v);Ua#i7h^_`LM$G~Tc}DtIAT0s#~EltubR+#fcHOtY!F7% z>X=@5XlMvtJSs&0G%@x6?Hi+V_rFIc;&@sSgFX)-KBItPP=k0sBZEGTXrB?s;OIpB z?0AewnjuC!nWaL1j)oVi@!xVrMlmUiKp%^|K>z=QuF722n$1gy9@7x+fxh ej_I$b5fyWf(SIWP=A_Z>5!mxg*u2w!=KL>xI39@r delta 6687 zcmY+Jc{o(>`^T+gH`c6KV(iS=hU{Bq3!@@g$1;>*$e!hdkf@lEZEQs-vWkp-inL74lV&KQiRT(B3q^wy~N42&Z@w;FhSk|SoOCxjT2V)>ZV$W&Pt{^n*z z7fXWZFuKU%*6F@Ijo#gm)fwRm7e~La;g;Uv!ymOWi8NB8i?<$aW;|uQ^IF4YTuQI4 zTzr{~$1+(;gu2}05g_o!AdSnhEelhB8>;HaM`qDS`@?wrrCXm;5hU5YxscN!)h@-L z-J(>+hQU}NgU5~6%$k$S74dLg_BW3$xuamjR4mZ58W{Dl&kABfofh_H zm~3VyS!?vU7sH~p91@a9l@6Pj_&Cx?NuPD4YFI;7?T2gD|Sq| zdF-);7L!g(%mRQ}>>nC4^KvSeu9#P^ENMx4(1C7 z4ApujpOR#j5{u_N3|L9!H2Gyj_2iZczE!D!i(q+@BN(mynpk#mGE=BG-Xqbd7@Y!WQv{| zu{{r0G`z|Vj4^;}dFr=5bVVmeA4iP*rg0efp!Vvs177Fd#?!YoM;fg$12zjqUa`r- zdM%OZsM`!`4!kBt)CTpNR=iCxxYLr<9F$EjnFFZ7i+&p zem1%Z&vD!LTv@Y~wT*!N2{mrCiGvVJZ%o0=p(WZZkxE9^i=!grCd1`TapEvj)Ib)_ z3xkKT^e&js1nEQw(ms!rsJ@4*G<#e4X1>$2m%m-AXD~3+b*%Mx7-gh*Yv!%-!*KY1 z6ES-vVW8z_^EHdifmYF%+7N+V(~0JVl%;`{dsudJzM08toMy@rS*D#sb2wqjXfMx} zY*F~-B;@W>o@L!U8-}QRj?5ny%>a=Xd7$exbh~*ECx(sub(OMFk$KJHBFHj_j->0I zJf)(u^goAa5g!rJM*#yg;RSSm*|PF}A=OROIVdkpG%qfH&Ff-EpCQLgu1sEBZUM9R zH@9?%cc^H^`mT*!q8m>6TqUoCjYjP3>?Y*VN~kC2tPn4mrc==iG-$pTzX|NB86h7y zUoo#Zcu}!VMfhR4BU^5=t!N`_J)qhzW}{UiX7r*BZ#VR6%_wtuT!AUgrsmGsC9Z_b zMY`Ei4eIMgWu1ritTCeXx9gdY`jJH=%Q@aZez$zzll?15`w{R{}77Wp>q5QV`t*Hq3mbx>0Y%?-r}w@u9gd zfuejMNPLQ?7_Qo4Tk1b@5MZ-H1!ykm@RXp}Ejb(co2KBh;45HoYX$gdblDmh*E` zzS}VPa%%k4A)xm6@-50<-UvBecNg%OgCg@{%42Qqznh=)rSV%yE11NAt(Tk9Vr%UJ zsJfsmw(7~mPN#J73ml+MH~4&~*8};mj82r@4-p`CXRk>clDLVtVj4jn{WLyv)wi}} zjz-q1n$aEo>?gkwTl8S4*44Ld^LpC%J@t#GcVrM@;7K7zrTk3@usJID71wFayuh3; zFCz%U`eQp!=sUl#%UnI+TsV4&bP#y!d9VVDX@^0<2yVualsHid*WgMGQSaST$(J($ zwE&&t@xF*hMNCLQ@fj@!PP;rVOdst8KX&+<$9~VGc3T=hS;D|`&jtZ1`1H4m;<v9{~x~ZU%-K z$uZCYl-a`qc4K?3&6e?wqt`NDt71m3di`{oC&Zpk6VZFq?_GN|=VcDNh#vEU_5Hv# z>Ca*U8{yKQ2`zq0CZV(Rw~FBJEQYzyBv5i^Y$!(c>BLAsMNp30;ONi=udjegrH=bM z3rOrQRFxT@i@&0H&rg(D;^yjs z)0?`}a+Q7>t-u1MM#SoEPvr4m0#>TxuZ$eL3+~xr3k!&FXAJtgY2}x<`8te+2;S`b zCLM>N8RRbeyS2L)i{HY66>z_jvMGQCTzqmSc*jV4r*^M?qNc)pwt2l2r+|gA$=QPO zJuL!Oy=S+E;2WsN?{ZiuI8QvMp;cK6Xj7khR;icQ~* zl*b2B9?7IUMDUm8ufqMD6Vc0E+|#5)Toqj|35s@g!&-6tiD)r|MnrMt7U=L#~8)Zig;hn%t5S$dAn3$=89Bsy^qaR~k@#KFIy z=L)$VAn0w7!Efi$9dl>lxDA}JSe;kLoB$(%cbF!wGHx0T8)Psb?Y8Cx)33z~G9d%y z>kdT=>oz#06ib0ao7bYM6f-GnC(Z&h>zla&P$AWg<=n(1v3d_I6jzWU4UCl_Afa~J za*47t!@yag65^!ykFSU+{ck#4AL8s91CA2<;0HZdG1pzzQ~uHjR?SwHo$l7P6@tsu zmKZa@r5Ky-)$_iMhjInQ*kskik5staU(Qc<2)`a<0EzT^FRV&C_NE;$BBhD}SH{1+iC-67TJEtQ6W za@e{kyHz^J2x+sQtsC2Sas@~*#)c^9B4HZmwfV5=tRU>Y8wtCNL=#)b^V$WL=TZLf z^D4%)Z<^L+P{lAp1M%^E;kjjZ(}uh{rUV#wQlfwkRY2Th2!#)zIAu$ z$*dh~qK^*65;xjmBhd3ek&io^(pR|HbBPWUv^)`WnbyO|K7~fMEXh+d?%C*XaN&yZ zaZ(-7a5FkkG!o-U@GU_z6rKlSYF)j}M8mj4!5UK;7ZU05eP=NxU77{bd(I6-GN)L{ zkfvMue$Kcus7@Kq7fKo;xXGLYe3`20Gp zrJtqMBclK$O^H{3Q0)*lN__}hu6AXuajQ^6pspH-eV~||$n>a>IpF6Y50(~Z+*O~F zEBs7!z-Vd3>ikw=gpRN2M9`>3a z?9en8OwE+U8u=|sAiX*ZE_SkF$D${GjPi6YbaWvV@$zUV#aMz)55K*F&4+USw}&~V z0Y*UO>!L;yqa#r#gqeW#5GR*Jxz!Vyd=oYKK=s*NH-94=_p529U$&(`t2aCf9}e!A zI14Y)J-eRPp{g7#r;9}2f%6>)iKQjwNeG&eWQ?KaW$Cefbhe?eLHy7;IV2Hm&@VoI z4Yqz=VcH%+(mTTGf%^yj-)6}P znliaUGo5`H5?19}uKs=Z?vGS`=T&k_SHX{xd}uO`v^v23mp&VZLi24wwh~gj(%AhJ zRMy7w}E z1b})zVuVh_)n<+FF8E972G5F0oyYjaOBovy{&<)KyOsgc2k(BZap|w2y_MP5tY5ox znLun`^}XGn7EHWZ?@NQD|EPi%!<=CCZm?k*Q1mQg+?I~s>kAondQq?N z-c`AdNL9y<(AcMPHrF>KJ2ldZJr7juN#(0meMX&QVj32~&lB>LS(H9*=!Z@ zR8A6cj?B$T?ku)*a?bezG7nCig3Gk3*Oo*i%8Cv?su;YYAOTZcCVx)PPc&?9I6@v% zl}nPTmb2!tCG5SNUsWZXV%a!hga4!Oe6D|{daG5PYi43;@XR`NYS$!HqJNWhDW{Xa z)#pE_s%jY2Cog-WsOB$$zr10*5pa#CuYYaMe9^PMDXsHss#UBiqxUr02mdW;wkGpq z#Qkm6@Nfy;=m;ZbfFn51WP4iZg_sXN=nWcfIOOvY+K@ZZuX8zP&m@($&9Um*)4TNl zKxc!mlCW!=q{#~0*&7h?rFU&^wzISke1A`!=r(C}iMs9-du&wXv33ezL!LUM$+)!2 zP3Iq7vCLBx*Zu^(JH77Yg(^i!bKBJtR8Bee$@M!v@~XV+WG8T?^gyq`I+8$BB` zp63xl^@5l%75Br;G1jO3lm1l916sTV7zs90di)|!h0>*s~BIWdEE`%?2m*w^+eJ3MuBt(-cRV?$J@wuw|s82d6 z9baQWO^S&A{}DeKBo!|dSkj#v~9tx?Hh*`g`t0(Q?&wnWmzeO3p3xT zgf4suxX$snwPh+(_~g}<1bAC$_7KG}4Ki9_z<4c!3y?ZwRYEW`Oc9BQLC-B73`Rb z!OZ#s)mgo9$GHpOwG)4SbFcn5MW<$VxM$oA23*xR{Nga#s>g3pT ze!KbB#MYqHnI<~k3B#dVbijUtk=*Z1zafIy)ID+32mQMWV2JX; zYq38A!TOR%OstJ^m42vLN35?AE3YYHxttr_T_CG6N0X!>-fBL1yR4Yz;r0Mi!_f5^ z%PXbi{ZQr4`u8kN;?*b(+n&r7O8McpVik3^m9~|J2;ahu+JxPIG762jdJ~4do_(a! zIRYR{5^Gw?7i;K}Fy>#e*d^=-$Xz+Q@YR%REkzfmBn|2NDJ5n5@tUrmGzgLI6PKfw z%`Y3z{twvB<*qzZ9$W}m?N1Lcm0`|0RiUk} z-o6&4YrHc~T^z>_y@0kNdjm1sCE-{WsL8k>l?-drZpD)@ciZxPA!U-hA6l``?O7sjde;@+I=?&n z6hl*doONR;fc;si{KGIomDDL7@5GGNbm|#0%SnwfHTU1_1Vx26Tw@P>C(?m6UcU)$ zot_xw<;I?@{g4%{Ut={|*_ZEUi?}}{!!qox-pL)VCo2#g|WoJxeY=svtaCtCX@zdvZh%yk9r4bF$(V-rCv%F5h8~ zxRe!@}1C3W`9i#N_;WS~~oQCq8JFs(P_hqz!|k=wME)>n7Yoa4#n@Fu2# z2iXg?1A+Emo-KOW)a~7$@A*c(Kx}%yd9)g+`E1TC?$1u6ecK5UzvmOK@oY`-dFV?0 zvAYd10?1g|_@<5XrROBb=C{jH#RV-)5w=Ig$pM5(CyXOzftsk_7m9}msOir}_B+h! zRJ=O4fNfGPH8R0AY%JgdZ8t2!1~tVUhZ{uk8@DcoMOIdgUN(NkO`R7aQsA)i^IcZl z4UXHr)lLEV!q;djJgn>--I`xF%WpboUP#0_QJQ~B-G*O#;V0WYwN1}KNDlIVmhtAN z?*P{bJ+g~@wII{)2N$G$Okuq~G>o&6kIf9*X1Hdf&`b_lI1l4%9lf?k1l+zu( z^299TM*TJQ?C;N}qXfI#Tk7t^eg`&rr2Ul-JEH<*xXQ!FEq-}h^IIg-nKh6v^WKn| z>aj9L1uL!nwN_k9jTo1v`~Jp|Tp;aIAdMu$p^U(@Qc^q>yNRPc<9DYU=cW(wt9*xVKxk(E0XGVnYytuc> g$;iAY$jDg#4RAhqfRmloA_w8nvm&6riSsxA2QrPoiU0rr diff --git a/src/main/java/org/drip/specialfunction/property/DigammaInequalityLemma.java b/src/main/java/org/drip/specialfunction/property/DigammaInequalityLemma.java index ef597fbd6206..edc56acb39f4 100644 --- a/src/main/java/org/drip/specialfunction/property/DigammaInequalityLemma.java +++ b/src/main/java/org/drip/specialfunction/property/DigammaInequalityLemma.java @@ -615,40 +615,37 @@ public static final R1ToR1Property AlzerDifference1997 ( * @return The Alzer-Jameson (2017) Inequality Verifier */ - public static final org.drip.function.definition.R1ToR1Property AlzerJameson2017() + public static final R1ToR1Property AlzerJameson2017() { - final org.drip.specialfunction.digamma.CumulativeSeriesEstimator abramowitzStegun2007 = - org.drip.specialfunction.digamma.CumulativeSeriesEstimator.AbramowitzStegun2007 (1638400); - - try - { - return new org.drip.function.definition.R1ToR1Property ( - org.drip.function.definition.R1ToR1Property.LTE, - new org.drip.function.definition.R1ToR1 (null) - { + final CumulativeSeriesEstimator abramowitzStegun2007 = + CumulativeSeriesEstimator.AbramowitzStegun2007 (1638400); + + try { + return new R1ToR1Property ( + R1ToR1Property.LTE, + new R1ToR1 (null) { @Override public double evaluate ( final double z) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (z)) - { - throw new java.lang.Exception - ("DigammaInequalityLemma::AlzerJameson2017::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (z)) { + throw new Exception ( + "DigammaInequalityLemma::AlzerJameson2017::evaluate => Invalid Inputs" + ); } - return -1. * org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI; + return -1. * Definitions.EULER_MASCHERONI; } }, - new org.drip.function.definition.R1ToR1 (null) - { + new R1ToR1 (null) { @Override public double evaluate ( final double z) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (z)) - { - throw new java.lang.Exception - ("DigammaInequalityLemma::AlzerJameson2017::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (z)) { + throw new Exception ( + "DigammaInequalityLemma::AlzerJameson2017::evaluate => Invalid Inputs" + ); } double digammaZ = abramowitzStegun2007.evaluate (z); @@ -658,11 +655,9 @@ public static final org.drip.function.definition.R1ToR1Property AlzerJameson2017 return 2. * digammaZ * digammaZInverse / (digammaZ + digammaZInverse); } }, - org.drip.function.definition.R1ToR1Property.MISMATCH_TOLERANCE + R1ToR1Property.MISMATCH_TOLERANCE ); - } - catch (java.lang.Exception e) - { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/org/drip/specialfunction/property/DigammaSaddlePointEqualityLemma.java b/src/main/java/org/drip/specialfunction/property/DigammaSaddlePointEqualityLemma.java index 85f452261db4..d535e8fd78e4 100644 --- a/src/main/java/org/drip/specialfunction/property/DigammaSaddlePointEqualityLemma.java +++ b/src/main/java/org/drip/specialfunction/property/DigammaSaddlePointEqualityLemma.java @@ -1,11 +1,21 @@ package org.drip.specialfunction.property; +import org.drip.function.definition.R1ToR1; +import org.drip.function.definition.R1ToR1Property; +import org.drip.numerical.common.NumberUtil; +import org.drip.specialfunction.derived.RiemannZeta; +import org.drip.specialfunction.gamma.Definitions; +import org.drip.specialfunction.gamma.WindschitlTothAnalytic; + /* * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /*! + * Copyright (C) 2025 Lakshmi Krishnamurthy + * Copyright (C) 2024 Lakshmi Krishnamurthy + * Copyright (C) 2023 Lakshmi Krishnamurthy * Copyright (C) 2022 Lakshmi Krishnamurthy * Copyright (C) 2021 Lakshmi Krishnamurthy * Copyright (C) 2020 Lakshmi Krishnamurthy @@ -78,7 +88,7 @@ /** * DigammaSaddlePointEqualityLemma contains the Verifiable Equality Lemmas for the Digamma Saddle - * Points. The References are: + * Points. The References are: * *

*
    @@ -102,15 +112,31 @@ * Wikipedia (2019): Gamma Function https://en.wikipedia.org/wiki/Gamma_function * *
+ * + * It provides the following functionality: * - *

* * + *
+ * + * + * + * + * + * + * + *
Module Computational Core Module
Library Function Analysis Library
Project Special Function Implementation and Analysis
Package Special Function Property Lemma Verifiers
+ * * @author Lakshmi Krishnamurthy */ @@ -125,37 +151,32 @@ public class DigammaSaddlePointEqualityLemma * @return The Quadratic Reciprocal Sum Verifier */ - public static final org.drip.function.definition.R1ToR1Property QuadraticReciprocalSum ( - final org.drip.function.definition.R1ToR1 digammaSaddlePointsFunction) + public static final R1ToR1Property QuadraticReciprocalSum ( + final R1ToR1 digammaSaddlePointsFunction) { - if (null == digammaSaddlePointsFunction) - { + if (null == digammaSaddlePointsFunction) { return null; } - try - { - return new org.drip.function.definition.R1ToR1Property ( - org.drip.function.definition.R1ToR1Property.EQ, - new org.drip.function.definition.R1ToR1 (null) - { + try { + return new R1ToR1Property ( + R1ToR1Property.EQ, + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::QuadraticReciprocalSum::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::QuadraticReciprocalSum::evaluate => Invalid Inputs" + ); } double quadraticReciprocalSum = 1. / ( - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION * - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION + Definitions.MINIMUM_VARIATE_LOCATION * Definitions.MINIMUM_VARIATE_LOCATION ); - for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) - { + for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) { double saddlePoint = digammaSaddlePointsFunction.evaluate (saddlePointIndex); quadraticReciprocalSum = quadraticReciprocalSum + 1. / ( @@ -166,28 +187,24 @@ public static final org.drip.function.definition.R1ToR1Property QuadraticRecipro return quadraticReciprocalSum; } }, - new org.drip.function.definition.R1ToR1 (null) - { + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::QuadraticReciprocalSum::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::QuadraticReciprocalSum::evaluate => Invalid Inputs" + ); } - return org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI + - 0.5 * java.lang.Math.PI * java.lang.Math.PI; + return Definitions.EULER_MASCHERONI * Definitions.EULER_MASCHERONI + + 0.5 * Math.PI * Math.PI; } }, - org.drip.function.definition.R1ToR1Property.MISMATCH_TOLERANCE + R1ToR1Property.MISMATCH_TOLERANCE ); - } - catch (java.lang.Exception e) - { + } catch (Exception e) { e.printStackTrace(); } @@ -202,38 +219,34 @@ public static final org.drip.function.definition.R1ToR1Property QuadraticRecipro * @return The Cubic Reciprocal Sum Verifier */ - public static final org.drip.function.definition.R1ToR1Property CubicReciprocalSum ( - final org.drip.function.definition.R1ToR1 digammaSaddlePointsFunction) + public static final R1ToR1Property CubicReciprocalSum ( + final R1ToR1 digammaSaddlePointsFunction) { - if (null == digammaSaddlePointsFunction) - { + if (null == digammaSaddlePointsFunction) { return null; } - try - { - return new org.drip.function.definition.R1ToR1Property ( - org.drip.function.definition.R1ToR1Property.EQ, - new org.drip.function.definition.R1ToR1 (null) - { + try { + return new R1ToR1Property ( + R1ToR1Property.EQ, + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::CubicReciprocalSum::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::CubicReciprocalSum::evaluate => Invalid Inputs" + ); } double cubicReciprocalSum = 1. / ( - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION * - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION * - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION + Definitions.MINIMUM_VARIATE_LOCATION * + Definitions.MINIMUM_VARIATE_LOCATION * + Definitions.MINIMUM_VARIATE_LOCATION ); - for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) - { + for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) { double saddlePoint = digammaSaddlePointsFunction.evaluate (saddlePointIndex); cubicReciprocalSum = cubicReciprocalSum + 1. / ( @@ -244,34 +257,26 @@ public static final org.drip.function.definition.R1ToR1Property CubicReciprocalS return cubicReciprocalSum; } }, - new org.drip.function.definition.R1ToR1 (null) - { + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::CubicReciprocalSum::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::CubicReciprocalSum::evaluate => Invalid Inputs" + ); } - return -4. * new org.drip.specialfunction.derived.RiemannZeta ( - null, - new org.drip.specialfunction.gamma.WindschitlTothAnalytic (null) - ).evaluate (3.) - - org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI - - 0.5 * org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - java.lang.Math.PI * java.lang.Math.PI; + return -4. * new RiemannZeta (null, new WindschitlTothAnalytic (null)).evaluate (3.) + - Definitions.EULER_MASCHERONI * Definitions.EULER_MASCHERONI * + Definitions.EULER_MASCHERONI - 0.5 * Definitions.EULER_MASCHERONI * Math.PI * + Math.PI; } }, - org.drip.function.definition.R1ToR1Property.MISMATCH_TOLERANCE + R1ToR1Property.MISMATCH_TOLERANCE ); - } - catch (java.lang.Exception e) - { + } catch (Exception e) { e.printStackTrace(); } @@ -286,39 +291,33 @@ public static final org.drip.function.definition.R1ToR1Property CubicReciprocalS * @return The Quartic Reciprocal Sum Verifier */ - public static final org.drip.function.definition.R1ToR1Property QuarticReciprocalSum ( - final org.drip.function.definition.R1ToR1 digammaSaddlePointsFunction) + public static final R1ToR1Property QuarticReciprocalSum ( + final R1ToR1 digammaSaddlePointsFunction) { - if (null == digammaSaddlePointsFunction) - { + if (null == digammaSaddlePointsFunction) { return null; } - try - { - return new org.drip.function.definition.R1ToR1Property ( - org.drip.function.definition.R1ToR1Property.EQ, - new org.drip.function.definition.R1ToR1 (null) - { + try { + return new R1ToR1Property ( + R1ToR1Property.EQ, + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::QuarticReciprocalSum::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::QuarticReciprocalSum::evaluate => Invalid Inputs" + ); } double quarticReciprocalSum = 1. / ( - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION * - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION * - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION * - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION + Definitions.MINIMUM_VARIATE_LOCATION * Definitions.MINIMUM_VARIATE_LOCATION * + Definitions.MINIMUM_VARIATE_LOCATION * Definitions.MINIMUM_VARIATE_LOCATION ); - for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) - { + for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) { double saddlePoint = digammaSaddlePointsFunction.evaluate (saddlePointIndex); quarticReciprocalSum = quarticReciprocalSum + 1. / ( @@ -329,40 +328,29 @@ public static final org.drip.function.definition.R1ToR1Property QuarticReciproca return quarticReciprocalSum; } }, - new org.drip.function.definition.R1ToR1 (null) - { + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::QuarticReciprocalSum::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::QuarticReciprocalSum::evaluate => Invalid Inputs" + ); } - return - org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI + - java.lang.Math.PI * java.lang.Math.PI * java.lang.Math.PI * java.lang.Math.PI / - 9. + - 2. * org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - java.lang.Math.PI * java.lang.Math.PI / 3. + - 4. * org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI * - new org.drip.specialfunction.derived.RiemannZeta ( - null, - new org.drip.specialfunction.gamma.WindschitlTothAnalytic (null) - ).evaluate (3.); + return Definitions.EULER_MASCHERONI * Definitions.EULER_MASCHERONI * + Definitions.EULER_MASCHERONI * Definitions.EULER_MASCHERONI + + Math.PI * Math.PI * Math.PI * Math.PI / 9. + + 2. * Definitions.EULER_MASCHERONI * Definitions.EULER_MASCHERONI * Math.PI * + Math.PI / 3. + + 4. * Definitions.EULER_MASCHERONI * + new RiemannZeta (null, new WindschitlTothAnalytic (null)).evaluate (3.); } }, - org.drip.function.definition.R1ToR1Property.MISMATCH_TOLERANCE + R1ToR1Property.MISMATCH_TOLERANCE ); - } - catch (java.lang.Exception e) - { + } catch (Exception e) { e.printStackTrace(); } @@ -377,38 +365,33 @@ public static final org.drip.function.definition.R1ToR1Property QuarticReciproca * @return The First Quadratic Polynomial Reciprocal Sum Verifier */ - public static final org.drip.function.definition.R1ToR1Property QuadraticPolynomialReciprocalSum1 ( - final org.drip.function.definition.R1ToR1 digammaSaddlePointsFunction) + public static final R1ToR1Property QuadraticPolynomialReciprocalSum1 ( + final R1ToR1 digammaSaddlePointsFunction) { - if (null == digammaSaddlePointsFunction) - { + if (null == digammaSaddlePointsFunction) { return null; } - try - { - return new org.drip.function.definition.R1ToR1Property ( - org.drip.function.definition.R1ToR1Property.EQ, - new org.drip.function.definition.R1ToR1 (null) - { + try { + return new R1ToR1Property ( + R1ToR1Property.EQ, + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::QuadraticPolynomialReciprocalSum1::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::QuadraticPolynomialReciprocalSum1::evaluate => Invalid Inputs" + ); } double quadraticReciprocalSum = 1. / ( - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION * - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION + - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION + Definitions.MINIMUM_VARIATE_LOCATION * Definitions.MINIMUM_VARIATE_LOCATION + + Definitions.MINIMUM_VARIATE_LOCATION ); - for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) - { + for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) { double saddlePoint = digammaSaddlePointsFunction.evaluate (saddlePointIndex); quadraticReciprocalSum = quadraticReciprocalSum + 1. / ( @@ -419,26 +402,23 @@ public static final org.drip.function.definition.R1ToR1Property QuadraticPolynom return quadraticReciprocalSum; } }, - new org.drip.function.definition.R1ToR1 (null) - { + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::QuadraticPolynomialReciprocalSum1::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::QuadraticPolynomialReciprocalSum1::evaluate => Invalid Inputs" + ); } return -2.; } }, - org.drip.function.definition.R1ToR1Property.MISMATCH_TOLERANCE + R1ToR1Property.MISMATCH_TOLERANCE ); - } - catch (java.lang.Exception e) - { + } catch (Exception e) { e.printStackTrace(); } @@ -453,38 +433,33 @@ public static final org.drip.function.definition.R1ToR1Property QuadraticPolynom * @return The Second Quadratic Polynomial Reciprocal Sum Verifier */ - public static final org.drip.function.definition.R1ToR1Property QuadraticPolynomialReciprocalSum2 ( - final org.drip.function.definition.R1ToR1 digammaSaddlePointsFunction) + public static final R1ToR1Property QuadraticPolynomialReciprocalSum2 ( + final R1ToR1 digammaSaddlePointsFunction) { - if (null == digammaSaddlePointsFunction) - { + if (null == digammaSaddlePointsFunction) { return null; } - try - { - return new org.drip.function.definition.R1ToR1Property ( - org.drip.function.definition.R1ToR1Property.EQ, - new org.drip.function.definition.R1ToR1 (null) - { + try { + return new R1ToR1Property ( + R1ToR1Property.EQ, + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::QuadraticPolynomialReciprocalSum2::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::QuadraticPolynomialReciprocalSum2::evaluate => Invalid Inputs" + ); } double quadraticReciprocalSum = 1. / ( - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION * - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION - - org.drip.specialfunction.gamma.Definitions.MINIMUM_VARIATE_LOCATION + Definitions.MINIMUM_VARIATE_LOCATION * Definitions.MINIMUM_VARIATE_LOCATION - + Definitions.MINIMUM_VARIATE_LOCATION ); - for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) - { + for (int saddlePointIndex = 1; saddlePointIndex <= s; ++saddlePointIndex) { double saddlePoint = digammaSaddlePointsFunction.evaluate (saddlePointIndex); quadraticReciprocalSum = quadraticReciprocalSum + 1. / ( @@ -495,28 +470,25 @@ public static final org.drip.function.definition.R1ToR1Property QuadraticPolynom return quadraticReciprocalSum; } }, - new org.drip.function.definition.R1ToR1 (null) - { + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("DigammaSaddlePointEqualityLemma::QuadraticPolynomialReciprocalSum2::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "DigammaSaddlePointEqualityLemma::QuadraticPolynomialReciprocalSum2::evaluate => Invalid Inputs" + ); } - return org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI + - (java.lang.Math.PI * java.lang.Math.PI / - (6. * org.drip.specialfunction.gamma.Definitions.EULER_MASCHERONI)); + return Definitions.EULER_MASCHERONI + ( + Math.PI * Math.PI / (6. * Definitions.EULER_MASCHERONI) + ); } }, - org.drip.function.definition.R1ToR1Property.MISMATCH_TOLERANCE + R1ToR1Property.MISMATCH_TOLERANCE ); - } - catch (java.lang.Exception e) - { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/org/drip/specialfunction/property/GammaEqualityLemma.java b/src/main/java/org/drip/specialfunction/property/GammaEqualityLemma.java index 4a7769eb6b59..86671ac3c00d 100644 --- a/src/main/java/org/drip/specialfunction/property/GammaEqualityLemma.java +++ b/src/main/java/org/drip/specialfunction/property/GammaEqualityLemma.java @@ -1,11 +1,19 @@ package org.drip.specialfunction.property; +import org.drip.function.definition.R1ToR1; +import org.drip.function.definition.R1ToR1Property; +import org.drip.numerical.common.NumberUtil; +import org.drip.specialfunction.loggamma.InfiniteSumEstimator; + /* * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /*! + * Copyright (C) 2025 Lakshmi Krishnamurthy + * Copyright (C) 2024 Lakshmi Krishnamurthy + * Copyright (C) 2023 Lakshmi Krishnamurthy * Copyright (C) 2022 Lakshmi Krishnamurthy * Copyright (C) 2021 Lakshmi Krishnamurthy * Copyright (C) 2020 Lakshmi Krishnamurthy @@ -78,7 +86,7 @@ /** * GammaEqualityLemma contains the Verifiable Equality Lemmas of the Gamma Function. The References - * are: + * are: * *

*
    @@ -102,15 +110,29 @@ * Wikipedia (2019): Gamma Function https://en.wikipedia.org/wiki/Gamma_function * *
+ * + * It provides the following functionality: * - *

* * + *
+ * + * + * + * + * + * + * + *
Module Computational Core Module
Library Function Analysis Library
Project Special Function Implementation and Analysis
Package Special Function Property Lemma Verifiers
+ * * @author Lakshmi Krishnamurthy */ @@ -123,51 +145,48 @@ public class GammaEqualityLemma * @return The Reflection Formula Verifier */ - public static final org.drip.function.definition.R1ToR1Property ReflectionFormula() + public static final R1ToR1Property ReflectionFormula() { - try - { - return new org.drip.function.definition.R1ToR1Property ( - org.drip.function.definition.R1ToR1Property.EQ, - new org.drip.function.definition.R1ToR1 (null) - { + try { + return new R1ToR1Property ( + R1ToR1Property.EQ, + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("GammaEqualityLemma::ReflectionFormula::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "GammaEqualityLemma::ReflectionFormula::evaluate => Invalid Inputs" + ); } - org.drip.specialfunction.loggamma.InfiniteSumEstimator weierstrassInfiniteProduct = - org.drip.specialfunction.loggamma.InfiniteSumEstimator.Weierstrass (1638400); + InfiniteSumEstimator weierstrassInfiniteProduct = + InfiniteSumEstimator.Weierstrass (1638400); - return java.lang.Math.exp (weierstrassInfiniteProduct.evaluate (1. - s) + - weierstrassInfiniteProduct.evaluate (s)); + return Math.exp ( + weierstrassInfiniteProduct.evaluate (1. - s) + + weierstrassInfiniteProduct.evaluate (s) + ); } }, - new org.drip.function.definition.R1ToR1 (null) - { + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("GammaEqualityLemma::ReflectionFormula::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "GammaEqualityLemma::ReflectionFormula::evaluate => Invalid Inputs" + ); } - return java.lang.Math.PI / java.lang.Math.sin (java.lang.Math.PI * s); + return Math.PI / Math.sin (Math.PI * s); } }, - org.drip.function.definition.R1ToR1Property.MISMATCH_TOLERANCE + R1ToR1Property.MISMATCH_TOLERANCE ); - } - catch (java.lang.Exception e) - { + } catch (Exception e) { e.printStackTrace(); } @@ -180,53 +199,47 @@ public static final org.drip.function.definition.R1ToR1Property ReflectionFormul * @return The Duplication Formula Verifier */ - public static final org.drip.function.definition.R1ToR1Property DuplicationFormula() + public static final R1ToR1Property DuplicationFormula() { - try - { - return new org.drip.function.definition.R1ToR1Property ( - org.drip.function.definition.R1ToR1Property.EQ, - new org.drip.function.definition.R1ToR1 (null) - { + try { + return new R1ToR1Property ( + R1ToR1Property.EQ, + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("GammaEqualityLemma::DuplicationFormula::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "GammaEqualityLemma::DuplicationFormula::evaluate => Invalid Inputs" + ); } - org.drip.specialfunction.loggamma.InfiniteSumEstimator weierstrassInfiniteProduct = - org.drip.specialfunction.loggamma.InfiniteSumEstimator.Weierstrass (1638400); + InfiniteSumEstimator weierstrassInfiniteProduct = + InfiniteSumEstimator.Weierstrass (1638400); - return weierstrassInfiniteProduct.evaluate (s) + weierstrassInfiniteProduct.evaluate - (s + 0.5); + return weierstrassInfiniteProduct.evaluate (s) + + weierstrassInfiniteProduct.evaluate (s + 0.5); } }, - new org.drip.function.definition.R1ToR1 (null) - { + new R1ToR1 (null) { @Override public double evaluate ( final double s) throws java.lang.Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("GammaEqualityLemma::DuplicationFormula::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "GammaEqualityLemma::DuplicationFormula::evaluate => Invalid Inputs" + ); } - return (1. - 2. * s) * java.lang.Math.log (2.) + - 0.5 * java.lang.Math.log (java.lang.Math.PI) + - org.drip.specialfunction.loggamma.InfiniteSumEstimator.Weierstrass (1638400).evaluate (2. * s); + return (1. - 2. * s) * Math.log (2.) + 0.5 * Math.log (Math.PI) + + InfiniteSumEstimator.Weierstrass (1638400).evaluate (2. * s); } }, - org.drip.function.definition.R1ToR1Property.MISMATCH_TOLERANCE + R1ToR1Property.MISMATCH_TOLERANCE ); - } - catch (java.lang.Exception e) - { + } catch (Exception e) { e.printStackTrace(); } @@ -241,65 +254,57 @@ public static final org.drip.function.definition.R1ToR1Property DuplicationFormu * @return The Multiplication Formula Verifier */ - public static final org.drip.function.definition.R1ToR1Property MultiplicationFormula ( + public static final R1ToR1Property MultiplicationFormula ( final int m) { - if (1 >= m) - { + if (1 >= m) { return null; } - try - { - return new org.drip.function.definition.R1ToR1Property ( - org.drip.function.definition.R1ToR1Property.EQ, - new org.drip.function.definition.R1ToR1 (null) - { + try { + return new R1ToR1Property ( + R1ToR1Property.EQ, + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("GammaEqualityLemma::MultiplicationFormula::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "GammaEqualityLemma::MultiplicationFormula::evaluate => Invalid Inputs" + ); } double logGammaSum = 0.; - org.drip.specialfunction.loggamma.InfiniteSumEstimator weierstrassInfiniteProduct = - org.drip.specialfunction.loggamma.InfiniteSumEstimator.Weierstrass (1638400); + InfiniteSumEstimator weierstrassInfiniteProduct = + InfiniteSumEstimator.Weierstrass (1638400); - for (double i = 0; i < m; ++i) - { + for (double i = 0; i < m; ++i) { logGammaSum = logGammaSum + weierstrassInfiniteProduct.evaluate (s + (i / m)); } return logGammaSum; } }, - new org.drip.function.definition.R1ToR1 (null) - { + new R1ToR1 (null) { @Override public double evaluate ( final double s) - throws java.lang.Exception + throws Exception { - if (!org.drip.numerical.common.NumberUtil.IsValid (s)) - { - throw new java.lang.Exception - ("GammaEqualityLemma::MultiplicationFormula::evaluate => Invalid Inputs"); + if (!NumberUtil.IsValid (s)) { + throw new Exception ( + "GammaEqualityLemma::MultiplicationFormula::evaluate => Invalid Inputs" + ); } - return 0.5 * (m - 1.) * java.lang.Math.log (2. * java.lang.Math.PI) + - (0.5 - m * s) * java.lang.Math.log (m) + - org.drip.specialfunction.loggamma.InfiniteSumEstimator.Weierstrass (1638400).evaluate (m * s); + return 0.5 * (m - 1.) * Math.log (2. * Math.PI) + (0.5 - m * s) * Math.log (m) + + InfiniteSumEstimator.Weierstrass (1638400).evaluate (m * s); } }, - org.drip.function.definition.R1ToR1Property.MISMATCH_TOLERANCE + R1ToR1Property.MISMATCH_TOLERANCE ); - } - catch (java.lang.Exception e) - { + } catch (Exception e) { e.printStackTrace(); }