1 /*
2  * this function computes log, correctly rounded,
3  * using double-extended arithmetic
4  *
5  * Copyright (C) 2004-2011 David Defour, Catherine Daramy-Loirat,
6  * Florent de Dinechin, Matthieu Gallet, Nicolas Gast, Christoph Quirin Lauter,
7  * and Jean-Michel Muller
8  *
9  * This file is part of crlibm, the correctly rounded mathematical library,
10  * which has been developed by the Arénaire project at École normale supérieure
11  * de Lyon.
12  *
13  * This library is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU Lesser General Public
15  * License as published by the Free Software Foundation; either
16  * version 2.1 of the License, or (at your option) any later version.
17  *
18  * This library is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21  * Lesser General Public License for more details.
22  *
23  * You should have received a copy of the GNU Lesser General Public
24  * License along with this library; if not, write to the Free Software
25  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
26  */
27 
28 
29 /*File generated by maple/log-de.mpl*/
30 
31 #define L        7
32 #define MAXINDEX 53
33 #define INDEXMASK 127
34 static const double two64 = 1.84467440737095516160000000000000000000000000000000e+19 ;
35 #if 1
36 #define ESTRIN
37 #else
38 #define PATERSON
39 #endif
40 #if defined(CRLIBM_TYPECPU_X86) || defined(CRLIBM_TYPECPU_AMD64)
41 
42 #ifdef PATERSON
43 static const long double c7 = 1.42860987471441585385531838903183654565509641543031e-01;
44 static const long double c3 = 3.33333333333333491175099611014687184251670259982347e-01;
45 static const long double c2 = -5.00000000000000049710669608460378299241710919886827e-01;
46 static const long double ps_alpha = -1.16665881748332273275172571436186785831523593515158e+00;
47 static const long double ps_beta = -1.28333333319474127305875182925021249502606224268675e+00;
48 static const long double ps_c = 3.99962323494931883068092062782916684682277264073491e-01;
49 #endif/* PATERSON*/
50 
51 #ifdef ESTRIN
52   /* Coefficients are read directly from the array thanks to the following macros */
53 #define c7  c[0]
54 #define c6  c[1]
55 #define c5  c[2]
56 #define c4  c[3]
57 #define c3  c[4]
58 #define c2  c[5]
59 static const double c[7] =  {
60    /* c7  = */ 1.42860563385550420889558154158294200897216796875000e-01L,
61    /* c6  = */ -1.66669572609547372854521540830319281667470932006836e-01L,
62    /* c5  = */ 1.99999999967484798357730824136524461209774017333984e-01L,
63    /* c4  = */ -2.49999999984237081251947643067978788167238235473633e-01L,
64    /* c3  = */ 3.33333333333333425851918718763045035302639007568359e-01L,
65    /* c2  = */ -5.00000000000000000000000000000000000000000000000000e-01L,
66 };
67 
68 #endif/* ESTRIN */
69 
70 #define c14h  ch[0]
71 #define c13h  ch[1]
72 #define c12h  ch[2]
73 #define c11h  ch[3]
74 #define c10h  ch[4]
75 #define c9h  ch[5]
76 #define c8h  ch[6]
77 #define c7h  ch[7]
78 #define c6h  ch[8]
79 #define c5h  ch[9]
80 #define c4h  ch[10]
81 #define c3h  ch[11]
82 #define c2h  ch[12]
83 #define c1h  ch[13]
84 #define c7l  cl[0]
85 #define c6l  cl[1]
86 #define c5l  cl[2]
87 #define c4l  cl[3]
88 #define c3l  cl[4]
89 #define c2l  cl[5]
90 #define c1l  cl[6]
91 #define PREFETCH_POLY_ACCURATE
92 
93 #else /* not(defined(CRLIBM_TYPECPU_X86) || defined(CRLIBM_TYPECPU_AMD64)),
94    assuming Itanium, otherwise we shouldn't be there */
95 
96 #define PREFETCH_POLY_QUICK c7=c[0]; c6=c[1]; c5=c[2]; c4=c[3]; c3=c[4]; c2=c[5];
97 #define PREFETCH_POLY_ACCURATE c14h=ch[0]; c13h=ch[1]; c12h=ch[2]; \
98         c11h=ch[3]; c10h=ch[4]; c9h=ch[5]; c8h=ch[6]; \
99         c7h=ch[7]; c6h=ch[8]; c5h=ch[9]; c4h=ch[10]; \
100         c3h=ch[11]; c2h=ch[12]; c1h=ch[13]; \
101         c7l=cl[0]; c6l=cl[1]; c5l=cl[2]; c4l=cl[3]; c3l=cl[4]; c2l=cl[5]; c1l=cl[6];
102 #endif /* defined(CRLIBM_TYPECPU_X86) || defined(CRLIBM_TYPECPU_AMD64) */
103 
104 static const long double log2H  = 6.93147180559945309428690474184975300886435434222221e-01L ;
105 static const long double log2L  = -1.14583527267987328109462081210062935494878745868567e-20L ;
106 static const long double ch[14] =  {
107    /* ch14  = */ -7.14324161786485507414918953716931326880512642674148e-02L,
108    /* ch13  = */ 7.69266652810744782218957231456624157317492063157260e-02L,
109    /* ch12  = */ -8.33333332381758034492348456712118576206194120459259e-02L,
110    /* ch11  = */ 9.09090908332141065513009973997338164508619229309261e-02L,
111    /* ch10  = */ -1.00000000000001207646721339272755102456358144991100e-01L,
112    /* ch9  = */ 1.11111111111111906697159444623590474066077149473131e-01L,
113    /* ch8  = */ -1.24999999999999999993223736421965597287453419994563e-01L,
114    /* ch7  = */ 1.42857142857142857140921067549133027796415262855589e-01L,
115    /* ch6  = */ -1.66666666666666666671184175718689601808364386670291e-01L,
116    /* ch5  = */ 2.00000000000000000002710505431213761085018632002175e-01L,
117    /* ch4  = */ -2.50000000000000000000000000000000000000000000000000e-01L,
118    /* ch3  = */ 3.33333333333333333342368351437379203616728773340583e-01L,
119    /* ch2  = */ -5.00000000000000000000000000000000000000000000000000e-01L,
120    /* ch1  = */ 1.00000000000000000000000000000000000000000000000000e+00L,
121 };
122 
123 static const long double cl[8] =  {
124    /* cl7  = */ -2.34607301544056142329539178188626637856988425622953e-21L,
125    /* cl6  = */ 4.51747965172264117284728817178707773935320194423540e-21L,
126    /* cl5  = */ -2.71049445588233034921278017356112411600953390125340e-21L,
127    /* cl4  = */ 4.66256664939948057471422101604617896775339795184375e-32L,
128    /* cl3  = */ -9.03501810405641912072078793108404620486918713178584e-21L,
129    /* cl2  = */ -2.17279608948233676401606923369245026501745724471211e-38L,
130    /* cl1  = */ 1.65533283613483715658161425689915551329447733519200e-39L,
131 };
132 
133 typedef struct rri_tag {float r; long double logirh;  long double logirl; } rri ;
134 static const rri argredtable[128] = {
135   {
136     1.00000000000000000000000000000000000000000000000000e+00L,   /* r[0] */
137     0.00000000000000000000000000000000000000000000000000e+00L, /* logirh[0] */
138     0.00000000000000000000000000000000000000000000000000e+00L, /* logirl[0] */
139   } ,
140   {
141     9.92187500000000000000000000000000000000000000000000e-01L,   /* r[1] */
142     7.84317746102589287284596788335511163836599735077471e-03L, /* logirh[1] */
143     3.38074607588470016237165513745732472460993853200422e-22L, /* logirl[1] */
144   } ,
145   {
146     9.84375000000000000000000000000000000000000000000000e-01L,   /* r[2] */
147     1.57483569681391686082786579570225171664787922054529e-02L, /* logirh[2] */
148     -7.29146496194247645559133241782926476205899642506092e-22L, /* logirl[2] */
149   } ,
150   {
151     9.77050781250000000000000000000000000000000000000000e-01L,   /* r[3] */
152     2.32166515756649942034666594947722728647931944578886e-02L, /* logirh[3] */
153     8.16575450536547381330756941074595397347505963439697e-22L, /* logirl[3] */
154   } ,
155   {
156     9.69726562500000000000000000000000000000000000000000e-01L,   /* r[4] */
157     3.07411415542805019917064427575903451383965148124844e-02L, /* logirh[4] */
158     7.52695325012824272079306803804945762930133964168774e-22L, /* logirl[4] */
159   } ,
160   {
161     9.62402343750000000000000000000000000000000000000000e-01L,   /* r[5] */
162     3.83226790066782003103828830453680964751583815086633e-02L, /* logirh[5] */
163     1.32588478845446750814375495501523698113568837341268e-21L, /* logirl[5] */
164   } ,
165   {
166     9.55078125000000000000000000000000000000000000000000e-01L,   /* r[6] */
167     4.59621355646357592953472545604931553953065304085612e-02L, /* logirh[6] */
168     -4.35764480179623995168944249774175041700203429439418e-22L, /* logirl[6] */
169   } ,
170   {
171     9.48242187500000000000000000000000000000000000000000e-01L,   /* r[7] */
172     5.31453373081281829112658150054970818132460408378392e-02L, /* logirh[7] */
173     1.44205225309117178233184984742382173167310218612172e-21L, /* logirl[7] */
174   } ,
175   {
176     9.41406250000000000000000000000000000000000000000000e-01L,   /* r[8] */
177     6.03805109889074798701694406916073987190429761540145e-02L, /* logirh[8] */
178     1.27621226298941086768118279123481924424995440912208e-21L, /* logirl[8] */
179   } ,
180   {
181     9.34082031250000000000000000000000000000000000000000e-01L,   /* r[9] */
182     6.81910167191455281494459790547768562873898190446198e-02L, /* logirh[9] */
183     -1.70880559998991196112313542261373401163426418187142e-21L, /* logirl[9] */
184   } ,
185   {
186     9.27734375000000000000000000000000000000000000000000e-01L,   /* r[10] */
187     7.50098210048665755422673054320092944635689491406083e-02L, /* logirh[10] */
188     2.27568935135100192738710607079520297834759644719280e-21L, /* logirl[10] */
189   } ,
190   {
191     9.20898437500000000000000000000000000000000000000000e-01L,   /* r[11] */
192     8.24055229659955995008915365096502370079178945161402e-02L, /* logirh[11] */
193     -2.08652677548826307173863192982976527450361189636477e-21L, /* logirl[11] */
194   } ,
195   {
196     9.14062500000000000000000000000000000000000000000000e-01L,   /* r[12] */
197     8.98563291218610470738304384086259091191095649264753e-02L, /* logirh[12] */
198     2.81649638824005330910700533403251014557157154610229e-21L, /* logirl[12] */
199   } ,
200   {
201     9.07714843750000000000000000000000000000000000000000e-01L,   /* r[13] */
202     9.68249984379543874202667802508770478198130149394274e-02L, /* logirh[13] */
203     3.68094693298691578446114201021493215549389467689654e-22L, /* logirl[13] */
204   } ,
205   {
206     9.01367187500000000000000000000000000000000000000000e-01L,   /* r[14] */
207     1.03842571096600936786835851777244243976383586414158e-01L, /* logirh[14] */
208     2.54338872616873521380798016729106577000795946658943e-21L, /* logirl[14] */
209   } ,
210   {
211     8.95019531250000000000000000000000000000000000000000e-01L,   /* r[15] */
212     1.10909738319693389317513541186821512951610202435404e-01L, /* logirh[15] */
213     2.35644659310271753015106107980519412012017300780629e-21L, /* logirl[15] */
214   } ,
215   {
216     8.88671875000000000000000000000000000000000000000000e-01L,   /* r[16] */
217     1.18027206088557368998193455866818624144798377528787e-01L, /* logirh[16] */
218     -2.70388097791548543320098495660860118836293912482208e-21L, /* logirl[16] */
219   } ,
220   {
221     8.82812500000000000000000000000000000000000000000000e-01L,   /* r[17] */
222     1.24642445207276597340148149156702217510428454261273e-01L, /* logirh[17] */
223     -1.65479256548791301121285753303466491277640159570672e-21L, /* logirl[17] */
224   } ,
225   {
226     8.76953125000000000000000000000000000000000000000000e-01L,   /* r[18] */
227     1.31301737297253491506014363987553394963470054790378e-01L, /* logirh[18] */
228     -4.44706169007428370264461881106553970898124442872790e-21L, /* logirl[18] */
229   } ,
230   {
231     8.70605468750000000000000000000000000000000000000000e-01L,   /* r[19] */
232     1.38566368296257995358167561250617438872723141685128e-01L, /* logirh[19] */
233     -4.67634371291677236899800289793824808374204801868093e-22L, /* logirl[19] */
234   } ,
235   {
236     8.64746093750000000000000000000000000000000000000000e-01L,   /* r[20] */
237     1.45319348376564863616804482160382860911340685561299e-01L, /* logirh[20] */
238     -1.30029933894575998199859720642569228712037418444249e-21L, /* logirl[20] */
239   } ,
240   {
241     8.58886718750000000000000000000000000000000000000000e-01L,   /* r[21] */
242     1.52118241421840233982849116545210677031718660145998e-01L, /* logirh[21] */
243     3.64354833902581289681945250205165982842948711023632e-21L, /* logirl[21] */
244   } ,
245   {
246     8.53515625000000000000000000000000000000000000000000e-01L,   /* r[22] */
247     1.58391429943917633934029505493601419630067539401352e-01L, /* logirh[22] */
248     5.27932393193803736951671071669282537406718712467109e-21L, /* logirl[22] */
249   } ,
250   {
251     8.47656250000000000000000000000000000000000000000000e-01L,   /* r[23] */
252     1.65280090939102924306155009692709256796661065891385e-01L, /* logirh[23] */
253     -2.81510601283365227976423953518023725736246907863349e-21L, /* logirl[23] */
254   } ,
255   {
256     8.42285156250000000000000000000000000000000000000000e-01L,   /* r[24] */
257     1.71636656693938272180742846129142264999245526269078e-01L, /* logirh[24] */
258     5.29375472570288169027310108578005956387644768823013e-21L, /* logirl[24] */
259   } ,
260   {
261     8.36425781250000000000000000000000000000000000000000e-01L,   /* r[25] */
262     1.78617487835278495469731006861646704919621697627008e-01L, /* logirh[25] */
263     -5.38910368385932491449404580991668679267931166391590e-21L, /* logirl[25] */
264   } ,
265   {
266     8.31054687500000000000000000000000000000000000000000e-01L,   /* r[26] */
267     1.85059677026078958999807423657646410219967947341502e-01L, /* logirh[26] */
268     -2.33471191752401180750814334631327570292249238444557e-21L, /* logirl[26] */
269   } ,
270   {
271     8.25683593750000000000000000000000000000000000000000e-01L,   /* r[27] */
272     1.91543637260818105263310805186360852303550927899778e-01L, /* logirh[27] */
273     -6.00441704121360115108475562878860059804996577890616e-22L, /* logirl[27] */
274   } ,
275   {
276     8.20312500000000000000000000000000000000000000000000e-01L,   /* r[28] */
277     1.98069913762093794816921549228894150473934132605791e-01L, /* logirh[28] */
278     2.34598738644875224435499574368287811489905562806854e-21L, /* logirl[28] */
279   } ,
280   {
281     8.15429687500000000000000000000000000000000000000000e-01L,   /* r[29] */
282     2.04040080748597612311876631219220712409878615289927e-01L, /* logirh[29] */
283     -6.55266084220369778013064711105338848331692231543846e-23L, /* logirl[29] */
284   } ,
285   {
286     8.10058593750000000000000000000000000000000000000000e-01L,   /* r[30] */
287     2.10648695968953912917276914684716615511206327937543e-01L, /* logirh[30] */
288     -1.26710049189072313882986012728331847015236776848568e-21L, /* logirl[30] */
289   } ,
290   {
291     8.05175781250000000000000000000000000000000000000000e-01L,   /* r[31] */
292     2.16694663599799501227903542055486241224571131169796e-01L, /* logirh[31] */
293     -4.60644559263224179134698153089361151013881754428009e-21L, /* logirl[31] */
294   } ,
295   {
296     7.99804687500000000000000000000000000000000000000000e-01L,   /* r[32] */
297     2.23387721746383670218673127283448565094658988527954e-01L, /* logirh[32] */
298     4.31742844476737192308069645283904795344591963380062e-21L, /* logirl[32] */
299   } ,
300   {
301     7.94921875000000000000000000000000000000000000000000e-01L,   /* r[33] */
302     2.29511439596912796321610469862939396534784464165568e-01L, /* logirh[33] */
303     3.43937426407325242308884173752237970071183767432875e-21L, /* logirl[33] */
304   } ,
305   {
306     7.90039062500000000000000000000000000000000000000000e-01L,   /* r[34] */
307     2.35672888540961404738862880470229299589846050366759e-01L, /* logirh[34] */
308     -1.79412857504879722290348395953977521127195555595173e-21L, /* logirl[34] */
309   } ,
310   {
311     7.85156250000000000000000000000000000000000000000000e-01L,   /* r[35] */
312     2.41872536420486724268049359698462552614728338085115e-01L, /* logirh[35] */
313     4.49037868070153677475908787622962677106946524955373e-21L, /* logirl[35] */
314   } ,
315   {
316     7.80273437500000000000000000000000000000000000000000e-01L,   /* r[36] */
317     2.48110859833178427105411859021621978627081261947751e-01L, /* logirh[36] */
318     -3.57593208515654235641923519987160957618932290654994e-21L, /* logirl[36] */
319   } ,
320   {
321     7.75878906250000000000000000000000000000000000000000e-01L,   /* r[37] */
322     2.53758819622682423467613377354723525058943778276443e-01L, /* logirh[37] */
323     3.20563840854194897949310719402625620635813869593052e-21L, /* logirl[37] */
324   } ,
325   {
326     7.70996093750000000000000000000000000000000000000000e-01L,   /* r[38] */
327     2.60071971903756312988632154459267553647805470973253e-01L, /* logirh[38] */
328     -5.41882056366019440034410441132485333532494541348922e-21L, /* logirl[38] */
329   } ,
330   {
331     7.66601562500000000000000000000000000000000000000000e-01L,   /* r[39] */
332     2.65788087817044662143715211266581377458351198583841e-01L, /* logirh[39] */
333     3.40143368552141502891849732509800494117246716875116e-21L, /* logirl[39] */
334   } ,
335   {
336     7.61718750000000000000000000000000000000000000000000e-01L,   /* r[40] */
337     2.72177885915815673289249593258531945139111485332251e-01L, /* logirh[40] */
338     -8.84633307151349513479527937859825353954577224837834e-22L, /* logirl[40] */
339   } ,
340   {
341     7.57324218750000000000000000000000000000000000000000e-01L,   /* r[41] */
342     2.77963822982859581314958596909292509735678322613239e-01L, /* logirh[41] */
343     -3.54474552917897427055990528561562900487032834630297e-21L, /* logirl[41] */
344   } ,
345   {
346     7.52929687500000000000000000000000000000000000000000e-01L,   /* r[42] */
347     2.83783432036123604418629065571089142849814379587770e-01L, /* logirh[42] */
348     6.65259732689538164307466344899173176872160839687638e-21L, /* logirl[42] */
349   } ,
350   {
351     7.48535156250000000000000000000000000000000000000000e-01L,   /* r[43] */
352     2.89637107287584277988401471048973689903505146503448e-01L, /* logirh[43] */
353     8.44502718672055373787764268905081131551582182658017e-21L, /* logirl[43] */
354   } ,
355   {
356     7.44140625000000000000000000000000000000000000000000e-01L,   /* r[44] */
357     2.95525249912806820310438860044399689286365173757076e-01L, /* logirh[44] */
358     1.96418844037132387179566864994176219064092063775800e-21L, /* logirl[44] */
359   } ,
360   {
361     7.39746093750000000000000000000000000000000000000000e-01L,   /* r[45] */
362     3.01448268215928886712157847016513301241502631455660e-01L, /* logirh[45] */
363     -2.80734803827355347488954127622224279750224052590805e-21L, /* logirl[45] */
364   } ,
365   {
366     7.35839843750000000000000000000000000000000000000000e-01L,   /* r[46] */
367     3.06742787532902944200221412307527657503669615834951e-01L, /* logirh[46] */
368     1.21982177874199009422425119496965659738938728771737e-20L, /* logirl[46] */
369   } ,
370   {
371     7.31445312500000000000000000000000000000000000000000e-01L,   /* r[47] */
372     3.12732822082233615765050824264470463731413474306464e-01L, /* logirh[47] */
373     -2.48117014916151417666322195359345625530313936737052e-21L, /* logirl[47] */
374   } ,
375   {
376     7.27050781250000000000000000000000000000000000000000e-01L,   /* r[48] */
377     3.18758953475389418655326981277831066563521744683385e-01L, /* logirh[48] */
378     6.18924657142483596407123884547314261312268979674812e-21L, /* logirl[48] */
379   } ,
380   {
381     7.23144531250000000000000000000000000000000000000000e-01L,   /* r[49] */
382     3.24146171891599621094504773965994104401033837348223e-01L, /* logirh[49] */
383     -6.77810676502059511550248363328884520138042030679722e-21L, /* logirl[49] */
384   } ,
385   {
386     7.19238281250000000000000000000000000000000000000000e-01L,   /* r[50] */
387     3.29562569696768133456748345322395721268549095839262e-01L, /* logirh[50] */
388     3.36942877993616991096538545261104308752103794630367e-21L, /* logirl[50] */
389   } ,
390   {
391     7.14843750000000000000000000000000000000000000000000e-01L,   /* r[51] */
392     3.35691291638141535192156258982087990716536296531558e-01L, /* logirh[51] */
393     -9.33627664815897075676848962806562975738122262236195e-22L, /* logirl[51] */
394   } ,
395   {
396     7.10937500000000000000000000000000000000000000000000e-01L,   /* r[52] */
397     3.41170757402767124748460894623214301191183039918542e-01L, /* logirh[52] */
398     1.33237705755233408947468410861546874819170412376378e-20L, /* logirl[52] */
399   } ,
400   {
401     1.41406250000000000000000000000000000000000000000000e+00L,   /* r[53] */
402     -3.46466767346208580905441917763276649111503502354026e-01L, /* logirh[53] */
403     -1.30202706624963016000170912600455670740294985927040e-20L, /* logirl[53] */
404   } ,
405   {
406     1.40625000000000000000000000000000000000000000000000e+00L,   /* r[54] */
407     -3.40926586970593210293607733252230218568001873791218e-01L, /* logirh[54] */
408     -1.14814665281259898750718236421526040752891815931201e-20L, /* logirl[54] */
409   } ,
410   {
411     1.39843750000000000000000000000000000000000000000000e+00L,   /* r[55] */
412     -3.35355541921137830261656978536599638118786970153451e-01L, /* logirh[55] */
413     4.47739872243343904426499770912991919745896227107013e-21L, /* logirl[55] */
414   } ,
415   {
416     1.39160156250000000000000000000000000000000000000000e+00L,   /* r[56] */
417     -3.30455287103297806430195551752326821315364213660359e-01L, /* logirh[56] */
418     -3.27456892866201886570311318311258813067527495773846e-21L, /* logirl[56] */
419   } ,
420   {
421     1.38378906250000000000000000000000000000000000000000e+00L,   /* r[57] */
422     -3.24825434091227342270433858795186665702203754335642e-01L, /* logirh[57] */
423     1.19511796024320905916745808450236450294857297262032e-20L, /* logirl[57] */
424   } ,
425   {
426     1.37597656250000000000000000000000000000000000000000e+00L,   /* r[58] */
427     -3.19163706299227122796481267985591045999171910807490e-01L, /* logirh[58] */
428     6.90202297465146164725318961579993617833444966789173e-21L, /* logirl[58] */
429   } ,
430   {
431     1.36914062500000000000000000000000000000000000000000e+00L,   /* r[59] */
432     -3.14183261995082305749471540678996461792849004268646e-01L, /* logirh[59] */
433     4.21220977458500148787692752842598753888865534619897e-21L, /* logirl[59] */
434   } ,
435   {
436     1.36132812500000000000000000000000000000000000000000e+00L,   /* r[60] */
437     -3.08460785721016099366091275935097826277342392131686e-01L, /* logirh[60] */
438     4.88237814815281499208804200664728929895975484184937e-21L, /* logirl[60] */
439   } ,
440   {
441     1.35449218750000000000000000000000000000000000000000e+00L,   /* r[61] */
442     -3.03426614715378494924018226708284373671631328761578e-01L, /* logirh[61] */
443     -4.79684803634605371547569285269009577973457927997898e-21L, /* logirl[61] */
444   } ,
445   {
446     1.34765625000000000000000000000000000000000000000000e+00L,   /* r[62] */
447     -2.98366972551797281470575134987299747990618925541639e-01L, /* logirh[62] */
448     5.67470469380282997916448622011708142111988647148768e-21L, /* logirl[62] */
449   } ,
450   {
451     1.33984375000000000000000000000000000000000000000000e+00L,   /* r[63] */
452     -2.92553002686377439973833616826404124822147423401475e-01L, /* logirh[63] */
453     -4.36764183772251948513980052351746496236270975543032e-21L, /* logirl[63] */
454   } ,
455   {
456     1.33300781250000000000000000000000000000000000000000e+00L,   /* r[64] */
457     -2.87437902019607012987821928473586297059227945283055e-01L, /* logirh[64] */
458     5.29838789814029919861828480804189667231634001130568e-21L, /* logirl[64] */
459   } ,
460   {
461     1.32617187500000000000000000000000000000000000000000e+00L,   /* r[65] */
462     -2.82296502519188342454669118919419190660846652463078e-01L, /* logirh[65] */
463     -1.23161531041331401059141407104196718032007794736410e-20L, /* logirl[65] */
464   } ,
465   {
466     1.31933593750000000000000000000000000000000000000000e+00L,   /* r[66] */
467     -2.77128532360745762785523768623185958404064876958728e-01L, /* logirh[66] */
468     -2.43881362128685466800250141549314299428343038574346e-21L, /* logirl[66] */
469   } ,
470   {
471     1.31250000000000000000000000000000000000000000000000e+00L,   /* r[67] */
472     -2.71933715483641758834396431887547862515930319204926e-01L, /* logirh[67] */
473     2.72693735454870053343005187033588239526260949526707e-21L, /* logirl[67] */
474   } ,
475   {
476     1.30566406250000000000000000000000000000000000000000e+00L,   /* r[68] */
477     -2.66711771502490083769927597945326169792679138481617e-01L, /* logirh[68] */
478     -1.30538831184550256981566412802003295683583076000542e-20L, /* logirl[68] */
479   } ,
480   {
481     1.29980468750000000000000000000000000000000000000000e+00L,   /* r[69] */
482     -2.62214012795658537999981055333087454073393018916249e-01L, /* logirh[69] */
483     -1.35284639805347646364569630725426945939555870993862e-20L, /* logirl[69] */
484   } ,
485   {
486     1.29296875000000000000000000000000000000000000000000e+00L,   /* r[70] */
487     -2.56940930897500425454356778875997235900285886600614e-01L, /* logirh[70] */
488     7.59691096477297380738769966672131808838423827917718e-21L, /* logirl[70] */
489   } ,
490   {
491     1.28613281250000000000000000000000000000000000000000e+00L,   /* r[71] */
492     -2.51639896143827947226981334161166614649118855595589e-01L, /* logirh[71] */
493     1.08451820776528904003677301321556919497451301342926e-20L, /* logirl[71] */
494   } ,
495   {
496     1.28027343750000000000000000000000000000000000000000e+00L,   /* r[72] */
497     -2.47073678164246748038433351690734696148865623399615e-01L, /* logirh[72] */
498     -2.70934348074983423389837544898983311835569196319188e-22L, /* logirl[72] */
499   } ,
500   {
501     1.27343750000000000000000000000000000000000000000000e+00L,   /* r[73] */
502     -2.41719936887145168147327835284077224287102581001818e-01L, /* logirh[73] */
503     3.02031937056332418377432311426563822398827693734850e-21L, /* logirl[73] */
504   } ,
505   {
506     1.26757812500000000000000000000000000000000000000000e+00L,   /* r[74] */
507     -2.37108091664582209921611002934049849955044919624925e-01L, /* logirh[74] */
508     -1.29385562718796125049667754614832437256004301349817e-21L, /* logirl[74] */
509   } ,
510   {
511     1.26074218750000000000000000000000000000000000000000e+00L,   /* r[75] */
512     -2.31700585247189405499685169176338206398213515058160e-01L, /* logirh[75] */
513     6.62539371561050126516331629758628121599171156714272e-21L, /* logirl[75] */
514   } ,
515   {
516     1.25488281250000000000000000000000000000000000000000e+00L,   /* r[76] */
517     -2.27042191729867078774313463029876913878979394212365e-01L, /* logirh[76] */
518     -5.91897037580049650648090820667969090523023685061856e-21L, /* logirl[76] */
519   } ,
520   {
521     1.24902343750000000000000000000000000000000000000000e+00L,   /* r[77] */
522     -2.22361995979389595864202273933774023362275329418480e-01L, /* logirh[77] */
523     1.99231806901499648836052705402258881903978292639586e-21L, /* logirl[77] */
524   } ,
525   {
526     1.24316406250000000000000000000000000000000000000000e+00L,   /* r[78] */
527     -2.17659792957953425506303912762007257697405293583870e-01L, /* logirh[78] */
528     -4.74300907803349351890305548951624396775339872866125e-22L, /* logirl[78] */
529   } ,
530   {
531     1.23632812500000000000000000000000000000000000000000e+00L,   /* r[79] */
532     -2.12145797104668402385590705860884952471678843721747e-01L, /* logirh[79] */
533     3.47829660766824246239119087253730459399781610669550e-21L, /* logirl[79] */
534   } ,
535   {
536     1.23046875000000000000000000000000000000000000000000e+00L,   /* r[80] */
537     -2.07395194346070587155541307955441965304999030195177e-01L, /* logirh[80] */
538     -3.20427089356426854873522351022491299412381577686272e-21L, /* logirl[80] */
539   } ,
540   {
541     1.22460937500000000000000000000000000000000000000000e+00L,   /* r[81] */
542     -2.02621915593412910716630305485441709834049106575549e-01L, /* logirh[81] */
543     5.50315183352228080702347654662068966867864577851415e-21L, /* logirl[81] */
544   } ,
545   {
546     1.21875000000000000000000000000000000000000000000000e+00L,   /* r[82] */
547     -1.97825743329919880362068387857910067850752966478467e-01L, /* logirh[82] */
548     -5.03683339051401224496307307364812285151080899609793e-22L, /* logirl[82] */
549   } ,
550   {
551     1.21289062500000000000000000000000000000000000000000e+00L,   /* r[83] */
552     -1.93006456893970980236542936414601001615665154531598e-01L, /* logirh[83] */
553     -8.56513039583118089646992381309540829893520394889616e-22L, /* logirl[83] */
554   } ,
555   {
556     1.20800781250000000000000000000000000000000000000000e+00L,   /* r[84] */
557     -1.88972566793034805259442719671536536907296977005899e-01L, /* logirh[84] */
558     -1.46116025447516430873070498908178881036913039739167e-21L, /* logirl[84] */
559   } ,
560   {
561     1.20214843750000000000000000000000000000000000000000e+00L,   /* r[85] */
562     -1.84110320585000416173803057529045901219433289952576e-01L, /* logirh[85] */
563     -4.15395156136845605789354429056953059762833513205358e-21L, /* logirl[85] */
564   } ,
565   {
566     1.19628906250000000000000000000000000000000000000000e+00L,   /* r[86] */
567     -1.79224317379374265237954554075283652991856797598302e-01L, /* logirh[86] */
568     -1.94838468168540457849663379542888863164719363528710e-21L, /* logirl[86] */
569   } ,
570   {
571     1.19042968750000000000000000000000000000000000000000e+00L,   /* r[87] */
572     -1.74314323881818430785127331528183702857859316281974e-01L, /* logirh[87] */
573     6.22657527069549481059986868787317656634503241639655e-21L, /* logirl[87] */
574   } ,
575   {
576     1.18554687500000000000000000000000000000000000000000e+00L,   /* r[88] */
577     -1.70204166019990477397598113706855826876562787219882e-01L, /* logirh[88] */
578     2.71497198375317303100785063981453318980131866492304e-21L, /* logirl[88] */
579   } ,
580   {
581     1.17968750000000000000000000000000000000000000000000e+00L,   /* r[89] */
582     -1.65249572895307162873914340328607153196571744047105e-01L, /* logirh[89] */
583     -1.69710894863316053274660137780472619090744715377758e-21L, /* logirl[89] */
584   } ,
585   {
586     1.17382812500000000000000000000000000000000000000000e+00L,   /* r[90] */
587     -1.60270309495699794511943195307601683907705591991544e-01L, /* logirh[90] */
588     -6.04821814795533552862893869629633677033284792785115e-21L, /* logirl[90] */
589   } ,
590   {
591     1.16894531250000000000000000000000000000000000000000e+00L,   /* r[91] */
592     -1.56101899958520053736952051814945718888338888064027e-01L, /* logirh[91] */
593     4.40261722062672347380361273563329366574299418033041e-21L, /* logirl[91] */
594   } ,
595   {
596     1.16406250000000000000000000000000000000000000000000e+00L,   /* r[92] */
597     -1.51916042025841975066048281095554273179004667326808e-01L, /* logirh[92] */
598     -5.75514380133023814872665374682664797890000868696983e-21L, /* logirl[92] */
599   } ,
600   {
601     1.15820312500000000000000000000000000000000000000000e+00L,   /* r[93] */
602     -1.46869773958217667795276076270205578566674375906587e-01L, /* logirh[93] */
603     3.74542574364605198240110299363146340829881458953744e-21L, /* logirl[93] */
604   } ,
605   {
606     1.15332031250000000000000000000000000000000000000000e+00L,   /* r[94] */
607     -1.42645010597909210864992976541820723923592595383525e-01L, /* logirh[94] */
608     -1.49668764603399746810002277800399641956108986115277e-21L, /* logirl[94] */
609   } ,
610   {
611     1.14843750000000000000000000000000000000000000000000e+00L,   /* r[95] */
612     -1.38402322859119135682777479434690803827834315598011e-01L, /* logirh[95] */
613     -2.54839416695838356532650800861069791639429031347559e-21L, /* logirl[95] */
614   } ,
615   {
616     1.14257812500000000000000000000000000000000000000000e+00L,   /* r[96] */
617     -1.33287222192348708683213263925804170639821677468717e-01L, /* logirh[96] */
618     -6.43489158716437030647791169560962525141739108779860e-21L, /* logirl[96] */
619   } ,
620   {
621     1.13769531250000000000000000000000000000000000000000e+00L,   /* r[97] */
622     -1.29004560400347845734790423743998388772524776868522e-01L, /* logirh[97] */
623     4.12743043068895141295491814920903816740508819920186e-21L, /* logirl[97] */
624   } ,
625   {
626     1.13281250000000000000000000000000000000000000000000e+00L,   /* r[98] */
627     -1.24703478500957235860374400920891346800090104807168e-01L, /* logirh[98] */
628     -3.03211445997192169150157656625233654585699365130551e-21L, /* logirl[98] */
629   } ,
630   {
631     1.12792968750000000000000000000000000000000000000000e+00L,   /* r[99] */
632     -1.20383817356440820990376872751115300275159825105220e-01L, /* logirh[99] */
633     -6.02804224141392601725339572746961606433931174921632e-22L, /* logirl[99] */
634   } ,
635   {
636     1.12304687500000000000000000000000000000000000000000e+00L,   /* r[100] */
637     -1.16045415757842655255155980137393711970617005135864e-01L, /* logirh[100] */
638     1.97357499841142715648611745206675471003368015857707e-21L, /* logirl[100] */
639   } ,
640   {
641     1.11816406250000000000000000000000000000000000000000e+00L,   /* r[101] */
642     -1.11688110388886928867871375231635155955700611229986e-01L, /* logirh[101] */
643     -1.80234734539512005333983723608110499312624517402909e-21L, /* logirl[101] */
644   } ,
645   {
646     1.11328125000000000000000000000000000000000000000000e+00L,   /* r[102] */
647     -1.07311735789088050666375585839862338843886391259730e-01L, /* logirh[102] */
648     -7.99444531291997962572940662749597218537387594367069e-22L, /* logirl[102] */
649   } ,
650   {
651     1.10839843750000000000000000000000000000000000000000e+00L,   /* r[103] */
652     -1.02916124316049955441049277432563613388083467725664e-01L, /* logirh[103] */
653     -7.70418045355390537427085452827290090533981671198214e-22L, /* logirl[103] */
654   } ,
655   {
656     1.10351562500000000000000000000000000000000000000000e+00L,   /* r[104] */
657     -9.85011061069331584304480803337966676735959481447935e-02L, /* logirh[104] */
658     2.64634661517646879820354995203947987149684385342190e-21L, /* logirl[104] */
659   } ,
660   {
661     1.09863281250000000000000000000000000000000000000000e+00L,   /* r[105] */
662     -9.40665090390674124196622452043214934747084043920040e-02L, /* logirh[105] */
663     -7.85013737527153642092056782136336663408299656719499e-22L, /* logirl[105] */
664   } ,
665   {
666     1.09375000000000000000000000000000000000000000000000e+00L,   /* r[106] */
667     -8.96121586896871326189772770376418264959283987991512e-02L, /* logirh[106] */
668     -9.74192340842702289248316897714444315823596817643550e-22L, /* logirl[106] */
669   } ,
670   {
671     1.08984375000000000000000000000000000000000000000000e+00L,   /* r[107] */
672     -8.60343373418031533820279736779479407005055691115558e-02L, /* logirh[107] */
673     2.30146955951865559597249227413865587554269312860475e-22L, /* logirl[107] */
674   } ,
675   {
676     1.08496093750000000000000000000000000000000000000000e+00L,   /* r[108] */
677     -8.15439840401769007739956988956020467185226152651012e-02L, /* logirh[108] */
678     1.75068599249270760931371736454488137316032510066418e-22L, /* logirl[108] */
679   } ,
680   {
681     1.08007812500000000000000000000000000000000000000000e+00L,   /* r[109] */
682     -7.70333764828270145253981751598537641712027834728360e-02L, /* logirh[109] */
683     2.18898335885222504011340723675649479553611259830224e-21L, /* logirl[109] */
684   } ,
685   {
686     1.07519531250000000000000000000000000000000000000000e+00L,   /* r[110] */
687     -7.25023311232268688402238278334355214838069514371455e-02L, /* logirh[110] */
688     -2.13213366575366793826831658963525268068913415683098e-21L, /* logirl[110] */
689   } ,
690   {
691     1.07128906250000000000000000000000000000000000000000e+00L,   /* r[111] */
692     -6.88626546757771517366978307472802356414831592701375e-02L, /* logirh[111] */
693     -3.28324237603869825985548439776523090582575800369088e-22L, /* logirl[111] */
694   } ,
695   {
696     1.06640625000000000000000000000000000000000000000000e+00L,   /* r[112] */
697     -6.42943507053972572172256989830874118752035428769886e-02L, /* logirh[112] */
698     9.97248717475917389385548315283734311163209646118044e-22L, /* logirl[112] */
699   } ,
700   {
701     1.06250000000000000000000000000000000000000000000000e+00L,   /* r[113] */
702     -6.06246218164348425809463336011440048878284869715571e-02L, /* logirh[113] */
703     3.40201560723741601617729662632506532290642311489711e-22L, /* logirl[113] */
704   } ,
705   {
706     1.05761718750000000000000000000000000000000000000000e+00L,   /* r[114] */
707     -5.60184414015375172410100661213316897146796691231430e-02L, /* logirh[114] */
708     3.11800048645913474307950146912226463632967430723724e-23L, /* logirl[114] */
709   } ,
710   {
711     1.05371093750000000000000000000000000000000000000000e+00L,   /* r[115] */
712     -5.23181596586815653583246027436004510491329710930586e-02L, /* logirh[115] */
713     1.68615246867707396959723624602535685414462357313269e-21L, /* logirl[115] */
714   } ,
715   {
716     1.04882812500000000000000000000000000000000000000000e+00L,   /* r[116] */
717     -4.76734694693569028189818886920292584363778587430716e-02L, /* logirh[116] */
718     1.02131487169049086541356584124809714333053944625270e-21L, /* logirl[116] */
719   } ,
720   {
721     1.04492187500000000000000000000000000000000000000000e+00L,   /* r[117] */
722     -4.39421218564987631503880941008510774281603517010808e-02L, /* logirh[117] */
723     3.19036974975549018917247656911137538435844307015502e-22L, /* logirl[117] */
724   } ,
725   {
726     1.04101562500000000000000000000000000000000000000000e+00L,   /* r[118] */
727     -4.01967991263367551645860776404761693925138388294727e-02L, /* logirh[118] */
728     -5.75643838660911109663810221439950742515738641098385e-22L, /* logirl[118] */
729   } ,
730   {
731     1.03613281250000000000000000000000000000000000000000e+00L,   /* r[119] */
732     -3.54953330145300408896490932525447092871218046639115e-02L, /* logirh[119] */
733     9.92857944898394620246865383584341693120429858950945e-23L, /* logirl[119] */
734   } ,
735   {
736     1.03222656250000000000000000000000000000000000000000e+00L,   /* r[120] */
737     -3.17181802707845397290716514537844972210223204456270e-02L, /* logirh[120] */
738     -1.96176892105841918795869133037686185923113451571873e-22L, /* logirl[120] */
739   } ,
740   {
741     1.02832031250000000000000000000000000000000000000000e+00L,   /* r[121] */
742     -2.79267065345224074627335925091742296899610664695501e-02L, /* logirh[121] */
743     5.86417835518487049711934217680032678831410128853609e-22L, /* logirl[121] */
744   } ,
745   {
746     1.02441406250000000000000000000000000000000000000000e+00L,   /* r[122] */
747     -2.41208027968440809158740456216718506254892417928204e-02L, /* logirh[122] */
748     3.02985243973796148231999463903827273031077578359612e-22L, /* logirl[122] */
749   } ,
750   {
751     1.01953125000000000000000000000000000000000000000000e+00L,   /* r[123] */
752     -1.93429628431309346365065977152442044939562038052827e-02L, /* logirh[123] */
753     6.01063173693734308460897092397749141966269930081944e-22L, /* logirl[123] */
754   } ,
755   {
756     1.01562500000000000000000000000000000000000000000000e+00L,   /* r[124] */
757     -1.55041865359652541508843977442755335260926585760899e-02L, /* logirh[124] */
758     3.03517018286976482243336130818153212447067590236466e-23L, /* logirl[124] */
759   } ,
760   {
761     1.01171875000000000000000000000000000000000000000000e+00L,   /* r[125] */
762     -1.16506172199752741354571356803548898284361712285317e-02L, /* logirh[125] */
763     -1.34307128859459104723409399281441278120110731736138e-22L, /* logirl[125] */
764   } ,
765   {
766     1.00781250000000000000000000000000000000000000000000e+00L,   /* r[126] */
767     -7.78214044205494894757658497566610300566480873385444e-03L, /* logirh[126] */
768     1.13684914529339327537355164185463042556838581909991e-22L, /* logirl[126] */
769   } ,
770   {
771     1.00390625000000000000000000000000000000000000000000e+00L,   /* r[127] */
772     -3.89864041565732301388162890642963276377486181445420e-03L, /* logirh[127] */
773     -5.57141894132742469511718763808942289917039607877533e-23L, /* logirl[127] */
774   } };
775 
776