Chris@16
|
1 // (C) Copyright John Maddock 2006-8.
|
Chris@16
|
2 // Use, modification and distribution are subject to the
|
Chris@16
|
3 // Boost Software License, Version 1.0. (See accompanying file
|
Chris@16
|
4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
5
|
Chris@16
|
6 #ifndef BOOST_MATH_NTL_DIGAMMA
|
Chris@16
|
7 #define BOOST_MATH_NTL_DIGAMMA
|
Chris@16
|
8
|
Chris@16
|
9 #include <boost/math/tools/rational.hpp>
|
Chris@16
|
10 #include <boost/math/policies/error_handling.hpp>
|
Chris@16
|
11 #include <boost/math/constants/constants.hpp>
|
Chris@16
|
12 #include <boost/lexical_cast.hpp>
|
Chris@16
|
13
|
Chris@16
|
14 namespace boost{ namespace math{ namespace detail{
|
Chris@16
|
15
|
Chris@16
|
16 template <class T>
|
Chris@16
|
17 T big_digamma_helper(T x)
|
Chris@16
|
18 {
|
Chris@16
|
19 static const T P[61] = {
|
Chris@16
|
20 boost::lexical_cast<T>("0.6660133691143982067148122682345055274952e81"),
|
Chris@16
|
21 boost::lexical_cast<T>("0.6365271516829242456324234577164675383137e81"),
|
Chris@16
|
22 boost::lexical_cast<T>("0.2991038873096202943405966144203628966976e81"),
|
Chris@16
|
23 boost::lexical_cast<T>("0.9211116495503170498076013367421231351115e80"),
|
Chris@16
|
24 boost::lexical_cast<T>("0.2090792764676090716286400360584443891749e80"),
|
Chris@16
|
25 boost::lexical_cast<T>("0.3730037777359591428226035156377978092809e79"),
|
Chris@16
|
26 boost::lexical_cast<T>("0.5446396536956682043376492370432031543834e78"),
|
Chris@16
|
27 boost::lexical_cast<T>("0.6692523966335177847425047827449069256345e77"),
|
Chris@16
|
28 boost::lexical_cast<T>("0.7062543624100864681625612653756619116848e76"),
|
Chris@16
|
29 boost::lexical_cast<T>("0.6499914905966283735005256964443226879158e75"),
|
Chris@16
|
30 boost::lexical_cast<T>("0.5280364564853225211197557708655426736091e74"),
|
Chris@16
|
31 boost::lexical_cast<T>("0.3823205608981176913075543599005095206953e73"),
|
Chris@16
|
32 boost::lexical_cast<T>("0.2486733714214237704739129972671154532415e72"),
|
Chris@16
|
33 boost::lexical_cast<T>("0.1462562139602039577983434547171318011675e71"),
|
Chris@16
|
34 boost::lexical_cast<T>("0.7821169065036815012381267259559910324285e69"),
|
Chris@16
|
35 boost::lexical_cast<T>("0.3820552182348155468636157988764435365078e68"),
|
Chris@16
|
36 boost::lexical_cast<T>("0.1711618296983598244658239925535632505062e67"),
|
Chris@16
|
37 boost::lexical_cast<T>("0.7056661618357643731419080738521475204245e65"),
|
Chris@16
|
38 boost::lexical_cast<T>("0.2685246896473614017356264531791459936036e64"),
|
Chris@16
|
39 boost::lexical_cast<T>("0.9455168125599643085283071944864977592391e62"),
|
Chris@16
|
40 boost::lexical_cast<T>("0.3087541626972538362237309145177486236219e61"),
|
Chris@16
|
41 boost::lexical_cast<T>("0.9367928873352980208052601301625005737407e59"),
|
Chris@16
|
42 boost::lexical_cast<T>("0.2645306130689794942883818547314327466007e58"),
|
Chris@16
|
43 boost::lexical_cast<T>("0.6961815141171454309161007351079576190079e56"),
|
Chris@16
|
44 boost::lexical_cast<T>("0.1709637824471794552313802669803885946843e55"),
|
Chris@16
|
45 boost::lexical_cast<T>("0.3921553258481531526663112728778759311158e53"),
|
Chris@16
|
46 boost::lexical_cast<T>("0.8409006354449988687714450897575728228696e51"),
|
Chris@16
|
47 boost::lexical_cast<T>("0.1686755204461325935742097669030363344927e50"),
|
Chris@16
|
48 boost::lexical_cast<T>("0.3166653542877070999007425197729038754254e48"),
|
Chris@16
|
49 boost::lexical_cast<T>("0.5566029092358215049069560272835654229637e46"),
|
Chris@16
|
50 boost::lexical_cast<T>("0.9161766287916328133080586672953875116242e44"),
|
Chris@16
|
51 boost::lexical_cast<T>("1412317772330871298317974693514430627922000"),
|
Chris@16
|
52 boost::lexical_cast<T>("20387991986727877473732570146112459874790"),
|
Chris@16
|
53 boost::lexical_cast<T>("275557928713904105182512535678580359839.3"),
|
Chris@16
|
54 boost::lexical_cast<T>("3485719851040516559072031256589598330.723"),
|
Chris@16
|
55 boost::lexical_cast<T>("41247046743564028399938106707656877.40859"),
|
Chris@16
|
56 boost::lexical_cast<T>("456274078125709314602601667471879.0147312"),
|
Chris@16
|
57 boost::lexical_cast<T>("4714450683242899367025707077155.310613012"),
|
Chris@16
|
58 boost::lexical_cast<T>("45453933537925041680009544258.75073849996"),
|
Chris@16
|
59 boost::lexical_cast<T>("408437900487067278846361972.302331241052"),
|
Chris@16
|
60 boost::lexical_cast<T>("3415719344386166273085838.705771571751035"),
|
Chris@16
|
61 boost::lexical_cast<T>("26541502879185876562320.93134691487351145"),
|
Chris@16
|
62 boost::lexical_cast<T>("191261415065918713661.1571433274648417668"),
|
Chris@16
|
63 boost::lexical_cast<T>("1275349770108718421.645275944284937551702"),
|
Chris@16
|
64 boost::lexical_cast<T>("7849171120971773.318910987434906905704272"),
|
Chris@16
|
65 boost::lexical_cast<T>("44455946386549.80866460312682983576538056"),
|
Chris@16
|
66 boost::lexical_cast<T>("230920362395.3198137186361608905136598046"),
|
Chris@16
|
67 boost::lexical_cast<T>("1095700096.240863858624279930600654130254"),
|
Chris@16
|
68 boost::lexical_cast<T>("4727085.467506050153744334085516289728134"),
|
Chris@16
|
69 boost::lexical_cast<T>("18440.75118859447173303252421991479005424"),
|
Chris@16
|
70 boost::lexical_cast<T>("64.62515887799460295677071749181651317052"),
|
Chris@16
|
71 boost::lexical_cast<T>("0.201851568864688406206528472883512147547"),
|
Chris@16
|
72 boost::lexical_cast<T>("0.0005565091674187978029138500039504078098143"),
|
Chris@16
|
73 boost::lexical_cast<T>("0.1338097668312907986354698683493366559613e-5"),
|
Chris@16
|
74 boost::lexical_cast<T>("0.276308225077464312820179030238305271638e-8"),
|
Chris@16
|
75 boost::lexical_cast<T>("0.4801582970473168520375942100071070575043e-11"),
|
Chris@16
|
76 boost::lexical_cast<T>("0.6829184144212920949740376186058541800175e-14"),
|
Chris@16
|
77 boost::lexical_cast<T>("0.7634080076358511276617829524639455399182e-17"),
|
Chris@16
|
78 boost::lexical_cast<T>("0.6290035083727140966418512608156646142409e-20"),
|
Chris@16
|
79 boost::lexical_cast<T>("0.339652245667538733044036638506893821352e-23"),
|
Chris@16
|
80 boost::lexical_cast<T>("0.9017518064256388530773585529891677854909e-27")
|
Chris@16
|
81 };
|
Chris@16
|
82 static const T Q[61] = {
|
Chris@16
|
83 boost::lexical_cast<T>("0"),
|
Chris@16
|
84 boost::lexical_cast<T>("0.1386831185456898357379390197203894063459e81"),
|
Chris@16
|
85 boost::lexical_cast<T>("0.6467076379487574703291056110838151259438e81"),
|
Chris@16
|
86 boost::lexical_cast<T>("0.1394967823848615838336194279565285465161e82"),
|
Chris@16
|
87 boost::lexical_cast<T>("0.1872927317344192945218570366455046340458e82"),
|
Chris@16
|
88 boost::lexical_cast<T>("0.1772461045338946243584650759986310355937e82"),
|
Chris@16
|
89 boost::lexical_cast<T>("0.1267294892200258648315971144069595555118e82"),
|
Chris@16
|
90 boost::lexical_cast<T>("0.7157764838362416821508872117623058626589e81"),
|
Chris@16
|
91 boost::lexical_cast<T>("0.329447266909948668265277828268378274513e81"),
|
Chris@16
|
92 boost::lexical_cast<T>("0.1264376077317689779509250183194342571207e81"),
|
Chris@16
|
93 boost::lexical_cast<T>("0.4118230304191980787640446056583623228873e80"),
|
Chris@16
|
94 boost::lexical_cast<T>("0.1154393529762694616405952270558316515261e80"),
|
Chris@16
|
95 boost::lexical_cast<T>("0.281655612889423906125295485693696744275e79"),
|
Chris@16
|
96 boost::lexical_cast<T>("0.6037483524928743102724159846414025482077e78"),
|
Chris@16
|
97 boost::lexical_cast<T>("0.1145927995397835468123576831800276999614e78"),
|
Chris@16
|
98 boost::lexical_cast<T>("0.1938624296151985600348534009382865995154e77"),
|
Chris@16
|
99 boost::lexical_cast<T>("0.293980925856227626211879961219188406675e76"),
|
Chris@16
|
100 boost::lexical_cast<T>("0.4015574518216966910319562902099567437832e75"),
|
Chris@16
|
101 boost::lexical_cast<T>("0.4961475457509727343545565970423431880907e74"),
|
Chris@16
|
102 boost::lexical_cast<T>("0.5565482348278933960215521991000378896338e73"),
|
Chris@16
|
103 boost::lexical_cast<T>("0.5686112924615820754631098622770303094938e72"),
|
Chris@16
|
104 boost::lexical_cast<T>("0.5305988545844796293285410303747469932856e71"),
|
Chris@16
|
105 boost::lexical_cast<T>("0.4533363413802585060568537458067343491358e70"),
|
Chris@16
|
106 boost::lexical_cast<T>("0.3553932059473516064068322757331575565718e69"),
|
Chris@16
|
107 boost::lexical_cast<T>("0.2561198565218704414618802902533972354203e68"),
|
Chris@16
|
108 boost::lexical_cast<T>("0.1699519313292900324098102065697454295572e67"),
|
Chris@16
|
109 boost::lexical_cast<T>("0.1039830160862334505389615281373574959236e66"),
|
Chris@16
|
110 boost::lexical_cast<T>("0.5873082967977428281000961954715372504986e64"),
|
Chris@16
|
111 boost::lexical_cast<T>("0.3065255179030575882202133042549783442446e63"),
|
Chris@16
|
112 boost::lexical_cast<T>("0.1479494813481364701208655943688307245459e62"),
|
Chris@16
|
113 boost::lexical_cast<T>("0.6608150467921598615495180659808895663164e60"),
|
Chris@16
|
114 boost::lexical_cast<T>("0.2732535313770902021791888953487787496976e59"),
|
Chris@16
|
115 boost::lexical_cast<T>("0.1046402297662493314531194338414508049069e58"),
|
Chris@16
|
116 boost::lexical_cast<T>("0.3711375077192882936085049147920021549622e56"),
|
Chris@16
|
117 boost::lexical_cast<T>("0.1219154482883895482637944309702972234576e55"),
|
Chris@16
|
118 boost::lexical_cast<T>("0.3708359374149458741391374452286837880162e53"),
|
Chris@16
|
119 boost::lexical_cast<T>("0.1044095509971707189716913168889769471468e52"),
|
Chris@16
|
120 boost::lexical_cast<T>("0.271951506225063286130946773813524945052e50"),
|
Chris@16
|
121 boost::lexical_cast<T>("0.6548016291215163843464133978454065823866e48"),
|
Chris@16
|
122 boost::lexical_cast<T>("0.1456062447610542135403751730809295219344e47"),
|
Chris@16
|
123 boost::lexical_cast<T>("0.2986690175077969760978388356833006028929e45"),
|
Chris@16
|
124 boost::lexical_cast<T>("5643149706574013350061247429006443326844000"),
|
Chris@16
|
125 boost::lexical_cast<T>("98047545414467090421964387960743688053480"),
|
Chris@16
|
126 boost::lexical_cast<T>("1563378767746846395507385099301468978550"),
|
Chris@16
|
127 boost::lexical_cast<T>("22823360528584500077862274918382796495"),
|
Chris@16
|
128 boost::lexical_cast<T>("304215527004115213046601295970388750"),
|
Chris@16
|
129 boost::lexical_cast<T>("3690289075895685793844344966820325"),
|
Chris@16
|
130 boost::lexical_cast<T>("40584512015702371433911456606050"),
|
Chris@16
|
131 boost::lexical_cast<T>("402834190897282802772754873905"),
|
Chris@16
|
132 boost::lexical_cast<T>("3589522158493606918146495750"),
|
Chris@16
|
133 boost::lexical_cast<T>("28530557707503483723634725"),
|
Chris@16
|
134 boost::lexical_cast<T>("200714561335055753000730"),
|
Chris@16
|
135 boost::lexical_cast<T>("1237953783437761888641"),
|
Chris@16
|
136 boost::lexical_cast<T>("6614698701445762950"),
|
Chris@16
|
137 boost::lexical_cast<T>("30155495647727505"),
|
Chris@16
|
138 boost::lexical_cast<T>("114953256021450"),
|
Chris@16
|
139 boost::lexical_cast<T>("356398020013"),
|
Chris@16
|
140 boost::lexical_cast<T>("863113950"),
|
Chris@16
|
141 boost::lexical_cast<T>("1531345"),
|
Chris@16
|
142 boost::lexical_cast<T>("1770"),
|
Chris@16
|
143 boost::lexical_cast<T>("1")
|
Chris@16
|
144 };
|
Chris@16
|
145 static const T PD[60] = {
|
Chris@16
|
146 boost::lexical_cast<T>("0.6365271516829242456324234577164675383137e81"),
|
Chris@16
|
147 2*boost::lexical_cast<T>("0.2991038873096202943405966144203628966976e81"),
|
Chris@16
|
148 3*boost::lexical_cast<T>("0.9211116495503170498076013367421231351115e80"),
|
Chris@16
|
149 4*boost::lexical_cast<T>("0.2090792764676090716286400360584443891749e80"),
|
Chris@16
|
150 5*boost::lexical_cast<T>("0.3730037777359591428226035156377978092809e79"),
|
Chris@16
|
151 6*boost::lexical_cast<T>("0.5446396536956682043376492370432031543834e78"),
|
Chris@16
|
152 7*boost::lexical_cast<T>("0.6692523966335177847425047827449069256345e77"),
|
Chris@16
|
153 8*boost::lexical_cast<T>("0.7062543624100864681625612653756619116848e76"),
|
Chris@16
|
154 9*boost::lexical_cast<T>("0.6499914905966283735005256964443226879158e75"),
|
Chris@16
|
155 10*boost::lexical_cast<T>("0.5280364564853225211197557708655426736091e74"),
|
Chris@16
|
156 11*boost::lexical_cast<T>("0.3823205608981176913075543599005095206953e73"),
|
Chris@16
|
157 12*boost::lexical_cast<T>("0.2486733714214237704739129972671154532415e72"),
|
Chris@16
|
158 13*boost::lexical_cast<T>("0.1462562139602039577983434547171318011675e71"),
|
Chris@16
|
159 14*boost::lexical_cast<T>("0.7821169065036815012381267259559910324285e69"),
|
Chris@16
|
160 15*boost::lexical_cast<T>("0.3820552182348155468636157988764435365078e68"),
|
Chris@16
|
161 16*boost::lexical_cast<T>("0.1711618296983598244658239925535632505062e67"),
|
Chris@16
|
162 17*boost::lexical_cast<T>("0.7056661618357643731419080738521475204245e65"),
|
Chris@16
|
163 18*boost::lexical_cast<T>("0.2685246896473614017356264531791459936036e64"),
|
Chris@16
|
164 19*boost::lexical_cast<T>("0.9455168125599643085283071944864977592391e62"),
|
Chris@16
|
165 20*boost::lexical_cast<T>("0.3087541626972538362237309145177486236219e61"),
|
Chris@16
|
166 21*boost::lexical_cast<T>("0.9367928873352980208052601301625005737407e59"),
|
Chris@16
|
167 22*boost::lexical_cast<T>("0.2645306130689794942883818547314327466007e58"),
|
Chris@16
|
168 23*boost::lexical_cast<T>("0.6961815141171454309161007351079576190079e56"),
|
Chris@16
|
169 24*boost::lexical_cast<T>("0.1709637824471794552313802669803885946843e55"),
|
Chris@16
|
170 25*boost::lexical_cast<T>("0.3921553258481531526663112728778759311158e53"),
|
Chris@16
|
171 26*boost::lexical_cast<T>("0.8409006354449988687714450897575728228696e51"),
|
Chris@16
|
172 27*boost::lexical_cast<T>("0.1686755204461325935742097669030363344927e50"),
|
Chris@16
|
173 28*boost::lexical_cast<T>("0.3166653542877070999007425197729038754254e48"),
|
Chris@16
|
174 29*boost::lexical_cast<T>("0.5566029092358215049069560272835654229637e46"),
|
Chris@16
|
175 30*boost::lexical_cast<T>("0.9161766287916328133080586672953875116242e44"),
|
Chris@16
|
176 31*boost::lexical_cast<T>("1412317772330871298317974693514430627922000"),
|
Chris@16
|
177 32*boost::lexical_cast<T>("20387991986727877473732570146112459874790"),
|
Chris@16
|
178 33*boost::lexical_cast<T>("275557928713904105182512535678580359839.3"),
|
Chris@16
|
179 34*boost::lexical_cast<T>("3485719851040516559072031256589598330.723"),
|
Chris@16
|
180 35*boost::lexical_cast<T>("41247046743564028399938106707656877.40859"),
|
Chris@16
|
181 36*boost::lexical_cast<T>("456274078125709314602601667471879.0147312"),
|
Chris@16
|
182 37*boost::lexical_cast<T>("4714450683242899367025707077155.310613012"),
|
Chris@16
|
183 38*boost::lexical_cast<T>("45453933537925041680009544258.75073849996"),
|
Chris@16
|
184 39*boost::lexical_cast<T>("408437900487067278846361972.302331241052"),
|
Chris@16
|
185 40*boost::lexical_cast<T>("3415719344386166273085838.705771571751035"),
|
Chris@16
|
186 41*boost::lexical_cast<T>("26541502879185876562320.93134691487351145"),
|
Chris@16
|
187 42*boost::lexical_cast<T>("191261415065918713661.1571433274648417668"),
|
Chris@16
|
188 43*boost::lexical_cast<T>("1275349770108718421.645275944284937551702"),
|
Chris@16
|
189 44*boost::lexical_cast<T>("7849171120971773.318910987434906905704272"),
|
Chris@16
|
190 45*boost::lexical_cast<T>("44455946386549.80866460312682983576538056"),
|
Chris@16
|
191 46*boost::lexical_cast<T>("230920362395.3198137186361608905136598046"),
|
Chris@16
|
192 47*boost::lexical_cast<T>("1095700096.240863858624279930600654130254"),
|
Chris@16
|
193 48*boost::lexical_cast<T>("4727085.467506050153744334085516289728134"),
|
Chris@16
|
194 49*boost::lexical_cast<T>("18440.75118859447173303252421991479005424"),
|
Chris@16
|
195 50*boost::lexical_cast<T>("64.62515887799460295677071749181651317052"),
|
Chris@16
|
196 51*boost::lexical_cast<T>("0.201851568864688406206528472883512147547"),
|
Chris@16
|
197 52*boost::lexical_cast<T>("0.0005565091674187978029138500039504078098143"),
|
Chris@16
|
198 53*boost::lexical_cast<T>("0.1338097668312907986354698683493366559613e-5"),
|
Chris@16
|
199 54*boost::lexical_cast<T>("0.276308225077464312820179030238305271638e-8"),
|
Chris@16
|
200 55*boost::lexical_cast<T>("0.4801582970473168520375942100071070575043e-11"),
|
Chris@16
|
201 56*boost::lexical_cast<T>("0.6829184144212920949740376186058541800175e-14"),
|
Chris@16
|
202 57*boost::lexical_cast<T>("0.7634080076358511276617829524639455399182e-17"),
|
Chris@16
|
203 58*boost::lexical_cast<T>("0.6290035083727140966418512608156646142409e-20"),
|
Chris@16
|
204 59*boost::lexical_cast<T>("0.339652245667538733044036638506893821352e-23"),
|
Chris@16
|
205 60*boost::lexical_cast<T>("0.9017518064256388530773585529891677854909e-27")
|
Chris@16
|
206 };
|
Chris@16
|
207 static const T QD[60] = {
|
Chris@16
|
208 boost::lexical_cast<T>("0.1386831185456898357379390197203894063459e81"),
|
Chris@16
|
209 2*boost::lexical_cast<T>("0.6467076379487574703291056110838151259438e81"),
|
Chris@16
|
210 3*boost::lexical_cast<T>("0.1394967823848615838336194279565285465161e82"),
|
Chris@16
|
211 4*boost::lexical_cast<T>("0.1872927317344192945218570366455046340458e82"),
|
Chris@16
|
212 5*boost::lexical_cast<T>("0.1772461045338946243584650759986310355937e82"),
|
Chris@16
|
213 6*boost::lexical_cast<T>("0.1267294892200258648315971144069595555118e82"),
|
Chris@16
|
214 7*boost::lexical_cast<T>("0.7157764838362416821508872117623058626589e81"),
|
Chris@16
|
215 8*boost::lexical_cast<T>("0.329447266909948668265277828268378274513e81"),
|
Chris@16
|
216 9*boost::lexical_cast<T>("0.1264376077317689779509250183194342571207e81"),
|
Chris@16
|
217 10*boost::lexical_cast<T>("0.4118230304191980787640446056583623228873e80"),
|
Chris@16
|
218 11*boost::lexical_cast<T>("0.1154393529762694616405952270558316515261e80"),
|
Chris@16
|
219 12*boost::lexical_cast<T>("0.281655612889423906125295485693696744275e79"),
|
Chris@16
|
220 13*boost::lexical_cast<T>("0.6037483524928743102724159846414025482077e78"),
|
Chris@16
|
221 14*boost::lexical_cast<T>("0.1145927995397835468123576831800276999614e78"),
|
Chris@16
|
222 15*boost::lexical_cast<T>("0.1938624296151985600348534009382865995154e77"),
|
Chris@16
|
223 16*boost::lexical_cast<T>("0.293980925856227626211879961219188406675e76"),
|
Chris@16
|
224 17*boost::lexical_cast<T>("0.4015574518216966910319562902099567437832e75"),
|
Chris@16
|
225 18*boost::lexical_cast<T>("0.4961475457509727343545565970423431880907e74"),
|
Chris@16
|
226 19*boost::lexical_cast<T>("0.5565482348278933960215521991000378896338e73"),
|
Chris@16
|
227 20*boost::lexical_cast<T>("0.5686112924615820754631098622770303094938e72"),
|
Chris@16
|
228 21*boost::lexical_cast<T>("0.5305988545844796293285410303747469932856e71"),
|
Chris@16
|
229 22*boost::lexical_cast<T>("0.4533363413802585060568537458067343491358e70"),
|
Chris@16
|
230 23*boost::lexical_cast<T>("0.3553932059473516064068322757331575565718e69"),
|
Chris@16
|
231 24*boost::lexical_cast<T>("0.2561198565218704414618802902533972354203e68"),
|
Chris@16
|
232 25*boost::lexical_cast<T>("0.1699519313292900324098102065697454295572e67"),
|
Chris@16
|
233 26*boost::lexical_cast<T>("0.1039830160862334505389615281373574959236e66"),
|
Chris@16
|
234 27*boost::lexical_cast<T>("0.5873082967977428281000961954715372504986e64"),
|
Chris@16
|
235 28*boost::lexical_cast<T>("0.3065255179030575882202133042549783442446e63"),
|
Chris@16
|
236 29*boost::lexical_cast<T>("0.1479494813481364701208655943688307245459e62"),
|
Chris@16
|
237 30*boost::lexical_cast<T>("0.6608150467921598615495180659808895663164e60"),
|
Chris@16
|
238 31*boost::lexical_cast<T>("0.2732535313770902021791888953487787496976e59"),
|
Chris@16
|
239 32*boost::lexical_cast<T>("0.1046402297662493314531194338414508049069e58"),
|
Chris@16
|
240 33*boost::lexical_cast<T>("0.3711375077192882936085049147920021549622e56"),
|
Chris@16
|
241 34*boost::lexical_cast<T>("0.1219154482883895482637944309702972234576e55"),
|
Chris@16
|
242 35*boost::lexical_cast<T>("0.3708359374149458741391374452286837880162e53"),
|
Chris@16
|
243 36*boost::lexical_cast<T>("0.1044095509971707189716913168889769471468e52"),
|
Chris@16
|
244 37*boost::lexical_cast<T>("0.271951506225063286130946773813524945052e50"),
|
Chris@16
|
245 38*boost::lexical_cast<T>("0.6548016291215163843464133978454065823866e48"),
|
Chris@16
|
246 39*boost::lexical_cast<T>("0.1456062447610542135403751730809295219344e47"),
|
Chris@16
|
247 40*boost::lexical_cast<T>("0.2986690175077969760978388356833006028929e45"),
|
Chris@16
|
248 41*boost::lexical_cast<T>("5643149706574013350061247429006443326844000"),
|
Chris@16
|
249 42*boost::lexical_cast<T>("98047545414467090421964387960743688053480"),
|
Chris@16
|
250 43*boost::lexical_cast<T>("1563378767746846395507385099301468978550"),
|
Chris@16
|
251 44*boost::lexical_cast<T>("22823360528584500077862274918382796495"),
|
Chris@16
|
252 45*boost::lexical_cast<T>("304215527004115213046601295970388750"),
|
Chris@16
|
253 46*boost::lexical_cast<T>("3690289075895685793844344966820325"),
|
Chris@16
|
254 47*boost::lexical_cast<T>("40584512015702371433911456606050"),
|
Chris@16
|
255 48*boost::lexical_cast<T>("402834190897282802772754873905"),
|
Chris@16
|
256 49*boost::lexical_cast<T>("3589522158493606918146495750"),
|
Chris@16
|
257 50*boost::lexical_cast<T>("28530557707503483723634725"),
|
Chris@16
|
258 51*boost::lexical_cast<T>("200714561335055753000730"),
|
Chris@16
|
259 52*boost::lexical_cast<T>("1237953783437761888641"),
|
Chris@16
|
260 53*boost::lexical_cast<T>("6614698701445762950"),
|
Chris@16
|
261 54*boost::lexical_cast<T>("30155495647727505"),
|
Chris@16
|
262 55*boost::lexical_cast<T>("114953256021450"),
|
Chris@16
|
263 56*boost::lexical_cast<T>("356398020013"),
|
Chris@16
|
264 57*boost::lexical_cast<T>("863113950"),
|
Chris@16
|
265 58*boost::lexical_cast<T>("1531345"),
|
Chris@16
|
266 59*boost::lexical_cast<T>("1770"),
|
Chris@16
|
267 60*boost::lexical_cast<T>("1")
|
Chris@16
|
268 };
|
Chris@16
|
269 static const double g = 63.192152;
|
Chris@16
|
270
|
Chris@16
|
271 T zgh = x + g - 0.5;
|
Chris@16
|
272
|
Chris@16
|
273 T result = (x - 0.5) / zgh;
|
Chris@16
|
274 result += log(zgh);
|
Chris@16
|
275 result += tools::evaluate_polynomial(PD, x) / tools::evaluate_polynomial(P, x);
|
Chris@16
|
276 result -= tools::evaluate_polynomial(QD, x) / tools::evaluate_polynomial(Q, x);
|
Chris@16
|
277 result -= 1;
|
Chris@16
|
278
|
Chris@16
|
279 return result;
|
Chris@16
|
280 }
|
Chris@16
|
281
|
Chris@16
|
282 template <class T>
|
Chris@16
|
283 T big_digamma(T x)
|
Chris@16
|
284 {
|
Chris@16
|
285 BOOST_MATH_STD_USING
|
Chris@16
|
286 if(x < 0)
|
Chris@16
|
287 {
|
Chris@16
|
288 return big_digamma_helper(static_cast<T>(1-x)) + constants::pi<T>() / tan(constants::pi<T>() * (1-x));
|
Chris@16
|
289 }
|
Chris@16
|
290 return big_digamma_helper(x);
|
Chris@16
|
291 }
|
Chris@16
|
292
|
Chris@16
|
293 }}}
|
Chris@16
|
294
|
Chris@16
|
295 #endif // include guard
|