80 static const double A1 = .08333333333333178827;
81 static const double A2 = .01250000000377174923;
82 static const double A3 = .002232139987919447809;
83 static const double A4 = .0004348877777076145742;
85 static const double logF_head[
N+1] = {
87 .007782140442060381246,
88 .015504186535963526694,
89 .023167059281547608406,
90 .030771658666765233647,
91 .038318864302141264488,
92 .045809536031242714670,
93 .053244514518837604555,
94 .060624621816486978786,
95 .067950661908525944454,
96 .075223421237524235039,
97 .082443669210988446138,
98 .089612158689760690322,
99 .096729626458454731618,
100 .103796793681567578460,
101 .110814366340264314203,
102 .117783035656430001836,
103 .124703478501032805070,
104 .131576357788617315236,
105 .138402322859292326029,
106 .145182009844575077295,
107 .151916042025732167530,
108 .158605030176659056451,
109 .165249572895390883786,
110 .171850256926518341060,
111 .178407657472689606947,
112 .184922338493834104156,
113 .191394852999565046047,
114 .197825743329758552135,
115 .204215541428766300668,
116 .210564769107350002741,
117 .216873938300523150246,
118 .223143551314024080056,
119 .229374101064877322642,
120 .235566071312860003672,
121 .241719936886966024758,
122 .247836163904594286577,
123 .253915209980732470285,
124 .259957524436686071567,
125 .265963548496984003577,
126 .271933715484010463114,
127 .277868451003087102435,
128 .283768173130738432519,
129 .289633292582948342896,
130 .295464212893421063199,
131 .301261330578199704177,
132 .307025035294827830512,
133 .312755710004239517729,
134 .318453731118097493890,
135 .324119468654316733591,
136 .329753286372579168528,
137 .335355541920762334484,
138 .340926586970454081892,
139 .346466767346100823488,
140 .351976423156884266063,
141 .357455888922231679316,
142 .362905493689140712376,
143 .368325561158599157352,
144 .373716409793814818840,
145 .379078352934811846353,
146 .384411698910298582632,
147 .389716751140440464951,
148 .394993808240542421117,
149 .400243164127459749579,
150 .405465108107819105498,
151 .410659924985338875558,
152 .415827895143593195825,
153 .420969294644237379543,
154 .426084395310681429691,
155 .431173464818130014464,
156 .436236766774527495726,
157 .441274560805140936281,
158 .446287102628048160113,
159 .451274644139630254358,
160 .456237433481874177232,
161 .461175715122408291790,
162 .466089729924533457960,
163 .470979715219073113985,
164 .475845904869856894947,
165 .480688529345570714212,
166 .485507815781602403149,
167 .490303988045525329653,
168 .495077266798034543171,
169 .499827869556611403822,
170 .504556010751912253908,
171 .509261901790523552335,
172 .513945751101346104405,
173 .518607764208354637958,
174 .523248143765158602036,
175 .527867089620485785417,
176 .532464798869114019908,
177 .537041465897345915436,
178 .541597282432121573947,
179 .546132437597407260909,
180 .550647117952394182793,
181 .555141507540611200965,
182 .559615787935399566777,
183 .564070138285387656651,
184 .568504735352689749561,
185 .572919753562018740922,
186 .577315365035246941260,
187 .581691739635061821900,
188 .586049045003164792433,
189 .590387446602107957005,
190 .594707107746216934174,
191 .599008189645246602594,
192 .603290851438941899687,
193 .607555250224322662688,
194 .611801541106615331955,
195 .616029877215623855590,
196 .620240409751204424537,
197 .624433288012369303032,
198 .628608659422752680256,
199 .632766669570628437213,
200 .636907462236194987781,
201 .641031179420679109171,
202 .645137961373620782978,
203 .649227946625615004450,
204 .653301272011958644725,
205 .657358072709030238911,
206 .661398482245203922502,
207 .665422632544505177065,
208 .669430653942981734871,
209 .673422675212350441142,
210 .677398823590920073911,
211 .681359224807238206267,
212 .685304003098281100392,
213 .689233281238557538017,
214 .693147180560117703862
217 static const double logF_tail[
N+1] = {
219 -.00000000000000543229938420049,
220 .00000000000000172745674997061,
221 -.00000000000001323017818229233,
222 -.00000000000001154527628289872,
223 -.00000000000000466529469958300,
224 .00000000000005148849572685810,
225 -.00000000000002532168943117445,
226 -.00000000000005213620639136504,
227 -.00000000000001819506003016881,
228 .00000000000006329065958724544,
229 .00000000000008614512936087814,
230 -.00000000000007355770219435028,
231 .00000000000009638067658552277,
232 .00000000000007598636597194141,
233 .00000000000002579999128306990,
234 -.00000000000004654729747598444,
235 -.00000000000007556920687451336,
236 .00000000000010195735223708472,
237 -.00000000000017319034406422306,
238 -.00000000000007718001336828098,
239 .00000000000010980754099855238,
240 -.00000000000002047235780046195,
241 -.00000000000008372091099235912,
242 .00000000000014088127937111135,
243 .00000000000012869017157588257,
244 .00000000000017788850778198106,
245 .00000000000006440856150696891,
246 .00000000000016132822667240822,
247 -.00000000000007540916511956188,
248 -.00000000000000036507188831790,
249 .00000000000009120937249914984,
250 .00000000000018567570959796010,
251 -.00000000000003149265065191483,
252 -.00000000000009309459495196889,
253 .00000000000017914338601329117,
254 -.00000000000001302979717330866,
255 .00000000000023097385217586939,
256 .00000000000023999540484211737,
257 .00000000000015393776174455408,
258 -.00000000000036870428315837678,
259 .00000000000036920375082080089,
260 -.00000000000009383417223663699,
261 .00000000000009433398189512690,
262 .00000000000041481318704258568,
263 -.00000000000003792316480209314,
264 .00000000000008403156304792424,
265 -.00000000000034262934348285429,
266 .00000000000043712191957429145,
267 -.00000000000010475750058776541,
268 -.00000000000011118671389559323,
269 .00000000000037549577257259853,
270 .00000000000013912841212197565,
271 .00000000000010775743037572640,
272 .00000000000029391859187648000,
273 -.00000000000042790509060060774,
274 .00000000000022774076114039555,
275 .00000000000010849569622967912,
276 -.00000000000023073801945705758,
277 .00000000000015761203773969435,
278 .00000000000003345710269544082,
279 -.00000000000041525158063436123,
280 .00000000000032655698896907146,
281 -.00000000000044704265010452446,
282 .00000000000034527647952039772,
283 -.00000000000007048962392109746,
284 .00000000000011776978751369214,
285 -.00000000000010774341461609578,
286 .00000000000021863343293215910,
287 .00000000000024132639491333131,
288 .00000000000039057462209830700,
289 -.00000000000026570679203560751,
290 .00000000000037135141919592021,
291 -.00000000000017166921336082431,
292 -.00000000000028658285157914353,
293 -.00000000000023812542263446809,
294 .00000000000006576659768580062,
295 -.00000000000028210143846181267,
296 .00000000000010701931762114254,
297 .00000000000018119346366441110,
298 .00000000000009840465278232627,
299 -.00000000000033149150282752542,
300 -.00000000000018302857356041668,
301 -.00000000000016207400156744949,
302 .00000000000048303314949553201,
303 -.00000000000071560553172382115,
304 .00000000000088821239518571855,
305 -.00000000000030900580513238244,
306 -.00000000000061076551972851496,
307 .00000000000035659969663347830,
308 .00000000000035782396591276383,
309 -.00000000000046226087001544578,
310 .00000000000062279762917225156,
311 .00000000000072838947272065741,
312 .00000000000026809646615211673,
313 -.00000000000010960825046059278,
314 .00000000000002311949383800537,
315 -.00000000000058469058005299247,
316 -.00000000000002103748251144494,
317 -.00000000000023323182945587408,
318 -.00000000000042333694288141916,
319 -.00000000000043933937969737844,
320 .00000000000041341647073835565,
321 .00000000000006841763641591466,
322 .00000000000047585534004430641,
323 .00000000000083679678674757695,
324 -.00000000000085763734646658640,
325 .00000000000021913281229340092,
326 -.00000000000062242842536431148,
327 -.00000000000010983594325438430,
328 .00000000000065310431377633651,
329 -.00000000000047580199021710769,
330 -.00000000000037854251265457040,
331 .00000000000040939233218678664,
332 .00000000000087424383914858291,
333 .00000000000025218188456842882,
334 -.00000000000003608131360422557,
335 -.00000000000050518555924280902,
336 .00000000000078699403323355317,
337 -.00000000000067020876961949060,
338 .00000000000016108575753932458,
339 .00000000000058527188436251509,
340 -.00000000000035246757297904791,
341 -.00000000000018372084495629058,
342 .00000000000088606689813494916,
343 .00000000000066486268071468700,
344 .00000000000063831615170646519,
345 .00000000000025144230728376072,
346 -.00000000000017239444525614834
357 double F, f, g, q, u, v, u2;
378 q = u*v*(A1 + v*(A2 + v*(A3 + v*A4)));
387 u2 = (2.0*(f - F*u1) - u1*f) * g;
389 u1 += m*logF_head[
N] + logF_head[j];
391 u2 += logF_tail[j]; u2 += q;
392 u2 += logF_tail[
N]*m;
395 r.
b = (u1 - r.
a) + u2;
struct Double __log__D(double x)