1/* Copyright (C) 2007-2015 Free Software Foundation, Inc.
2
3This file is part of GCC.
4
5GCC is free software; you can redistribute it and/or modify it under
6the terms of the GNU General Public License as published by the Free
7Software Foundation; either version 3, or (at your option) any later
8version.
9
10GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11WARRANTY; without even the implied warranty of MERCHANTABILITY or
12FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13for more details.
14
15Under Section 7 of GPL version 3, you are granted additional
16permissions described in the GCC Runtime Library Exception, version
173.1, as published by the Free Software Foundation.
18
19You should have received a copy of the GNU General Public License and
20a copy of the GCC Runtime Library Exception along with this program;
21see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
22<http://www.gnu.org/licenses/>.  */
23
24#include "bid_internal.h"
25
26UINT64 round_const_table[][19] = {
27  {	// RN
28   0ull,	// 0 extra digits
29   5ull,	// 1 extra digits
30   50ull,	// 2 extra digits
31   500ull,	// 3 extra digits
32   5000ull,	// 4 extra digits
33   50000ull,	// 5 extra digits
34   500000ull,	// 6 extra digits
35   5000000ull,	// 7 extra digits
36   50000000ull,	// 8 extra digits
37   500000000ull,	// 9 extra digits
38   5000000000ull,	// 10 extra digits
39   50000000000ull,	// 11 extra digits
40   500000000000ull,	// 12 extra digits
41   5000000000000ull,	// 13 extra digits
42   50000000000000ull,	// 14 extra digits
43   500000000000000ull,	// 15 extra digits
44   5000000000000000ull,	// 16 extra digits
45   50000000000000000ull,	// 17 extra digits
46   500000000000000000ull	// 18 extra digits
47   }
48  ,
49  {	// RD
50   0ull,	// 0 extra digits
51   0ull,	// 1 extra digits
52   0ull,	// 2 extra digits
53   00ull,	// 3 extra digits
54   000ull,	// 4 extra digits
55   0000ull,	// 5 extra digits
56   00000ull,	// 6 extra digits
57   000000ull,	// 7 extra digits
58   0000000ull,	// 8 extra digits
59   00000000ull,	// 9 extra digits
60   000000000ull,	// 10 extra digits
61   0000000000ull,	// 11 extra digits
62   00000000000ull,	// 12 extra digits
63   000000000000ull,	// 13 extra digits
64   0000000000000ull,	// 14 extra digits
65   00000000000000ull,	// 15 extra digits
66   000000000000000ull,	// 16 extra digits
67   0000000000000000ull,	// 17 extra digits
68   00000000000000000ull	// 18 extra digits
69   }
70  ,
71  {	// round to Inf
72   0ull,	// 0 extra digits
73   9ull,	// 1 extra digits
74   99ull,	// 2 extra digits
75   999ull,	// 3 extra digits
76   9999ull,	// 4 extra digits
77   99999ull,	// 5 extra digits
78   999999ull,	// 6 extra digits
79   9999999ull,	// 7 extra digits
80   99999999ull,	// 8 extra digits
81   999999999ull,	// 9 extra digits
82   9999999999ull,	// 10 extra digits
83   99999999999ull,	// 11 extra digits
84   999999999999ull,	// 12 extra digits
85   9999999999999ull,	// 13 extra digits
86   99999999999999ull,	// 14 extra digits
87   999999999999999ull,	// 15 extra digits
88   9999999999999999ull,	// 16 extra digits
89   99999999999999999ull,	// 17 extra digits
90   999999999999999999ull	// 18 extra digits
91   }
92  ,
93  {	// RZ
94   0ull,	// 0 extra digits
95   0ull,	// 1 extra digits
96   0ull,	// 2 extra digits
97   00ull,	// 3 extra digits
98   000ull,	// 4 extra digits
99   0000ull,	// 5 extra digits
100   00000ull,	// 6 extra digits
101   000000ull,	// 7 extra digits
102   0000000ull,	// 8 extra digits
103   00000000ull,	// 9 extra digits
104   000000000ull,	// 10 extra digits
105   0000000000ull,	// 11 extra digits
106   00000000000ull,	// 12 extra digits
107   000000000000ull,	// 13 extra digits
108   0000000000000ull,	// 14 extra digits
109   00000000000000ull,	// 15 extra digits
110   000000000000000ull,	// 16 extra digits
111   0000000000000000ull,	// 17 extra digits
112   00000000000000000ull	// 18 extra digits
113   }
114  ,
115  {	// round ties away from 0
116   0ull,	// 0 extra digits
117   5ull,	// 1 extra digits
118   50ull,	// 2 extra digits
119   500ull,	// 3 extra digits
120   5000ull,	// 4 extra digits
121   50000ull,	// 5 extra digits
122   500000ull,	// 6 extra digits
123   5000000ull,	// 7 extra digits
124   50000000ull,	// 8 extra digits
125   500000000ull,	// 9 extra digits
126   5000000000ull,	// 10 extra digits
127   50000000000ull,	// 11 extra digits
128   500000000000ull,	// 12 extra digits
129   5000000000000ull,	// 13 extra digits
130   50000000000000ull,	// 14 extra digits
131   500000000000000ull,	// 15 extra digits
132   5000000000000000ull,	// 16 extra digits
133   50000000000000000ull,	// 17 extra digits
134   500000000000000000ull	// 18 extra digits
135   }
136  ,
137};
138
139UINT128 round_const_table_128[][36] = {
140  {	//RN
141   {{0ull, 0ull}
142    }
143   ,	// 0 extra digits
144   {{5ull, 0ull}
145    }
146   ,	// 1 extra digits
147   {{50ull, 0ull}
148    }
149   ,	// 2 extra digits
150   {{500ull, 0ull}
151    }
152   ,	// 3 extra digits
153   {{5000ull, 0ull}
154    }
155   ,	// 4 extra digits
156   {{50000ull, 0ull}
157    }
158   ,	// 5 extra digits
159   {{500000ull, 0ull}
160    }
161   ,	// 6 extra digits
162   {{5000000ull, 0ull}
163    }
164   ,	// 7 extra digits
165   {{50000000ull, 0ull}
166    }
167   ,	// 8 extra digits
168   {{500000000ull, 0ull}
169    }
170   ,	// 9 extra digits
171   {{5000000000ull, 0ull}
172    }
173   ,	// 10 extra digits
174   {{50000000000ull, 0ull}
175    }
176   ,	// 11 extra digits
177   {{500000000000ull, 0ull}
178    }
179   ,	// 12 extra digits
180   {{5000000000000ull, 0ull}
181    }
182   ,	// 13 extra digits
183   {{50000000000000ull, 0ull}
184    }
185   ,	// 14 extra digits
186   {{500000000000000ull, 0ull}
187    }
188   ,	// 15 extra digits
189   {{5000000000000000ull, 0ull}
190    }
191   ,	// 16 extra digits
192   {{50000000000000000ull, 0ull}
193    }
194   ,	// 17 extra digits
195   {{500000000000000000ull, 0ull}
196    }
197   ,	// 18 extra digits
198   {{5000000000000000000ull, 0ull}
199    }
200   ,	// 19 extra digits
201   {{0xb5e3af16b1880000ull, 2ull}
202    }
203   ,	//20
204   {{0x1ae4d6e2ef500000ull, 27ull}
205    }
206   ,	//21
207   {{0xcf064dd59200000ull, 271ull}
208    }
209   ,	//22
210   {{0x8163f0a57b400000ull, 2710ull}
211    }
212   ,	//23
213   {{0xde76676d0800000ull, 27105ull}
214    }
215   ,	//24
216   {{0x8b0a00a425000000ull, 0x422caull}
217    }
218   ,	//25
219   {{0x6e64066972000000ull, 0x295be9ull}
220    }
221   ,	//26
222   {{0x4fe8401e74000000ull, 0x19d971eull}
223    }
224   ,	//27
225   {{0x1f12813088000000ull, 0x1027e72full}
226    }
227   ,	//28
228   {{0x36b90be550000000ull, 0xa18f07d7ull}
229    }
230   ,	//29
231   {{0x233a76f520000000ull, 0x64f964e68ull}
232    }
233   ,	//30
234   {{0x6048a59340000000ull, 0x3f1bdf1011ull}
235    }
236   ,	//31
237   {{0xc2d677c080000000ull, 0x27716b6a0adull}
238    }
239   ,	//32
240   {{0x9c60ad8500000000ull, 0x18a6e32246c9ull}
241    }
242   ,	//33
243   {{0x1bc6c73200000000ull, 0xf684df56c3e0ull}
244    }
245   ,	//34
246   {{0x15c3c7f400000000ull, 0x9a130b963a6c1ull}
247    }
248   ,	//35
249   }
250  ,
251  {	//RD
252   {{0ull, 0ull}
253    }
254   ,	// 0 extra digits
255   {{0ull, 0ull}
256    }
257   ,	// 1 extra digits
258   {{0ull, 0ull}
259    }
260   ,	// 2 extra digits
261   {{00ull, 0ull}
262    }
263   ,	// 3 extra digits
264   {{000ull, 0ull}
265    }
266   ,	// 4 extra digits
267   {{0000ull, 0ull}
268    }
269   ,	// 5 extra digits
270   {{00000ull, 0ull}
271    }
272   ,	// 6 extra digits
273   {{000000ull, 0ull}
274    }
275   ,	// 7 extra digits
276   {{0000000ull, 0ull}
277    }
278   ,	// 8 extra digits
279   {{00000000ull, 0ull}
280    }
281   ,	// 9 extra digits
282   {{000000000ull, 0ull}
283    }
284   ,	// 10 extra digits
285   {{0000000000ull, 0ull}
286    }
287   ,	// 11 extra digits
288   {{00000000000ull, 0ull}
289    }
290   ,	// 12 extra digits
291   {{000000000000ull, 0ull}
292    }
293   ,	// 13 extra digits
294   {{0000000000000ull, 0ull}
295    }
296   ,	// 14 extra digits
297   {{00000000000000ull, 0ull}
298    }
299   ,	// 15 extra digits
300   {{000000000000000ull, 0ull}
301    }
302   ,	// 16 extra digits
303   {{0000000000000000ull, 0ull}
304    }
305   ,	// 17 extra digits
306   {{00000000000000000ull, 0ull}
307    }
308   ,	// 18 extra digits
309   {{000000000000000000ull, 0ull}
310    }
311   ,	// 19 extra digits
312   {{0ull, 0ull}
313    }
314   ,	//20
315   {{0ull, 0ull}
316    }
317   ,	//21
318   {{0ull, 0ull}
319    }
320   ,	//22
321   {{0ull, 0ull}
322    }
323   ,	//23
324   {{0ull, 0ull}
325    }
326   ,	//24
327   {{0ull, 0ull}
328    }
329   ,	//25
330   {{0ull, 0ull}
331    }
332   ,	//26
333   {{0ull, 0ull}
334    }
335   ,	//27
336   {{0ull, 0ull}
337    }
338   ,	//28
339   {{0ull, 0ull}
340    }
341   ,	//29
342   {{0ull, 0ull}
343    }
344   ,	//30
345   {{0ull, 0ull}
346    }
347   ,	//31
348   {{0ull, 0ull}
349    }
350   ,	//32
351   {{0ull, 0ull}
352    }
353   ,	//33
354   {{0ull, 0ull}
355    }
356   ,	//34
357   {{0ull, 0ull}
358    }
359   ,	//35
360   }
361  ,
362  {	//RU
363   {{0ull, 0ull}
364    }
365   ,	// 0 extra digits
366   {{9ull, 0ull}
367    }
368   ,	// 1 extra digits
369   {{99ull, 0ull}
370    }
371   ,	// 2 extra digits
372   {{999ull, 0ull}
373    }
374   ,	// 3 extra digits
375   {{9999ull, 0ull}
376    }
377   ,	// 4 extra digits
378   {{99999ull, 0ull}
379    }
380   ,	// 5 extra digits
381   {{999999ull, 0ull}
382    }
383   ,	// 6 extra digits
384   {{9999999ull, 0ull}
385    }
386   ,	// 7 extra digits
387   {{99999999ull, 0ull}
388    }
389   ,	// 8 extra digits
390   {{999999999ull, 0ull}
391    }
392   ,	// 9 extra digits
393   {{9999999999ull, 0ull}
394    }
395   ,	// 10 extra digits
396   {{99999999999ull, 0ull}
397    }
398   ,	// 11 extra digits
399   {{999999999999ull, 0ull}
400    }
401   ,	// 12 extra digits
402   {{9999999999999ull, 0ull}
403    }
404   ,	// 13 extra digits
405   {{99999999999999ull, 0ull}
406    }
407   ,	// 14 extra digits
408   {{999999999999999ull, 0ull}
409    }
410   ,	// 15 extra digits
411   {{9999999999999999ull, 0ull}
412    }
413   ,	// 16 extra digits
414   {{99999999999999999ull, 0ull}
415    }
416   ,	// 17 extra digits
417   {{999999999999999999ull, 0ull}
418    }
419   ,	// 18 extra digits
420   {{9999999999999999999ull, 0ull}
421    }
422   ,	// 19 extra digits
423   {{0x6BC75E2D630FFFFFull, 0x5ull}
424    }
425   ,	//20
426   {{0x35C9ADC5DE9FFFFFull, 0x36ull}
427    }
428   ,	//21
429   {{0x19E0C9BAB23FFFFFull, 0x21eull}
430    }
431   ,	//22
432   {{0x2C7E14AF67FFFFFull, 0x152dull}
433    }
434   ,	//23
435   {{0x1BCECCEDA0FFFFFFull, 0xd3c2ull}
436    }
437   ,	//24
438   {{0x1614014849FFFFFFull, 0x84595ull}
439    }
440   ,	//25
441   {{0xDCC80CD2E3FFFFFFull, 0x52b7d2ull}
442    }
443   ,	//26
444   {{0x9FD0803CE7FFFFFFull, 0x33B2E3Cull}
445    }
446   ,	//27
447   {{0x3E2502610FFFFFFFull, 0x204FCE5Eull}
448    }
449   ,	//28
450   {{0x6D7217CA9FFFFFFFull, 0x1431E0FAEull}
451    }
452   ,	//29
453   {{0x4674EDEA3FFFFFFFull, 0xC9F2C9CD0ull}
454    }
455   ,	//30
456   {{0xC0914B267FFFFFFFull, 0x7E37BE2022ull}
457    }
458   ,	//31
459   {{0x85ACEF80FFFFFFFFull, 0x4EE2D6D415Bull}
460    }
461   ,	//32
462   {{0x38c15b09ffffffffull, 0x314dc6448d93ull}
463    }
464   ,	//33
465   {{0x378d8e63ffffffffull, 0x1ed09bead87c0ull}
466    }
467   ,	//34
468   {{0x2b878fe7ffffffffull, 0x13426172c74d82ull}
469    }
470   ,	//35
471   }
472  ,
473  {	//RZ
474   {{0ull, 0ull}
475    }
476   ,	// 0 extra digits
477   {{0ull, 0ull}
478    }
479   ,	// 1 extra digits
480   {{0ull, 0ull}
481    }
482   ,	// 2 extra digits
483   {{00ull, 0ull}
484    }
485   ,	// 3 extra digits
486   {{000ull, 0ull}
487    }
488   ,	// 4 extra digits
489   {{0000ull, 0ull}
490    }
491   ,	// 5 extra digits
492   {{00000ull, 0ull}
493    }
494   ,	// 6 extra digits
495   {{000000ull, 0ull}
496    }
497   ,	// 7 extra digits
498   {{0000000ull, 0ull}
499    }
500   ,	// 8 extra digits
501   {{00000000ull, 0ull}
502    }
503   ,	// 9 extra digits
504   {{000000000ull, 0ull}
505    }
506   ,	// 10 extra digits
507   {{0000000000ull, 0ull}
508    }
509   ,	// 11 extra digits
510   {{00000000000ull, 0ull}
511    }
512   ,	// 12 extra digits
513   {{000000000000ull, 0ull}
514    }
515   ,	// 13 extra digits
516   {{0000000000000ull, 0ull}
517    }
518   ,	// 14 extra digits
519   {{00000000000000ull, 0ull}
520    }
521   ,	// 15 extra digits
522   {{000000000000000ull, 0ull}
523    }
524   ,	// 16 extra digits
525   {{0000000000000000ull, 0ull}
526    }
527   ,	// 17 extra digits
528   {{00000000000000000ull, 0ull}
529    }
530   ,	// 18 extra digits
531   {{000000000000000000ull, 0ull}
532    }
533   ,	// 19 extra digits
534   {{0ull, 0ull}
535    }
536   ,	//20
537   {{0ull, 0ull}
538    }
539   ,	//21
540   {{0ull, 0ull}
541    }
542   ,	//22
543   {{0ull, 0ull}
544    }
545   ,	//23
546   {{0ull, 0ull}
547    }
548   ,	//24
549   {{0ull, 0ull}
550    }
551   ,	//25
552   {{0ull, 0ull}
553    }
554   ,	//26
555   {{0ull, 0ull}
556    }
557   ,	//27
558   {{0ull, 0ull}
559    }
560   ,	//28
561   {{0ull, 0ull}
562    }
563   ,	//29
564   {{0ull, 0ull}
565    }
566   ,	//30
567   {{0ull, 0ull}
568    }
569   ,	//31
570   {{0ull, 0ull}
571    }
572   ,	//32
573   {{0ull, 0ull}
574    }
575   ,	//33
576   {{0ull, 0ull}
577    }
578   ,	//34
579   {{0ull, 0ull}
580    }
581   ,	//35
582   }
583  ,
584  {	//RN, ties away
585   {{0ull, 0ull}
586    }
587   ,	// 0 extra digits
588   {{5ull, 0ull}
589    }
590   ,	// 1 extra digits
591   {{50ull, 0ull}
592    }
593   ,	// 2 extra digits
594   {{500ull, 0ull}
595    }
596   ,	// 3 extra digits
597   {{5000ull, 0ull}
598    }
599   ,	// 4 extra digits
600   {{50000ull, 0ull}
601    }
602   ,	// 5 extra digits
603   {{500000ull, 0ull}
604    }
605   ,	// 6 extra digits
606   {{5000000ull, 0ull}
607    }
608   ,	// 7 extra digits
609   {{50000000ull, 0ull}
610    }
611   ,	// 8 extra digits
612   {{500000000ull, 0ull}
613    }
614   ,	// 9 extra digits
615   {{5000000000ull, 0ull}
616    }
617   ,	// 10 extra digits
618   {{50000000000ull, 0ull}
619    }
620   ,	// 11 extra digits
621   {{500000000000ull, 0ull}
622    }
623   ,	// 12 extra digits
624   {{5000000000000ull, 0ull}
625    }
626   ,	// 13 extra digits
627   {{50000000000000ull, 0ull}
628    }
629   ,	// 14 extra digits
630   {{500000000000000ull, 0ull}
631    }
632   ,	// 15 extra digits
633   {{5000000000000000ull, 0ull}
634    }
635   ,	// 16 extra digits
636   {{50000000000000000ull, 0ull}
637    }
638   ,	// 17 extra digits
639   {{500000000000000000ull, 0ull}
640    }
641   ,	// 18 extra digits
642   {{5000000000000000000ull, 0ull}
643    }
644   ,	// 19 extra digits
645   {{0xb5e3af16b1880000ull, 2ull}
646    }
647   ,	//20
648   {{0x1ae4d6e2ef500000ull, 27ull}
649    }
650   ,	//21
651   {{0xcf064dd59200000ull, 271ull}
652    }
653   ,	//22
654   {{0x8163f0a57b400000ull, 2710ull}
655    }
656   ,	//23
657   {{0xde76676d0800000ull, 27105ull}
658    }
659   ,	//24
660   {{0x8b0a00a425000000ull, 0x422caull}
661    }
662   ,	//25
663   {{0x6e64066972000000ull, 0x295be9ull}
664    }
665   ,	//26
666   {{0x4fe8401e74000000ull, 0x19d971eull}
667    }
668   ,	//27
669   {{0x1f12813088000000ull, 0x1027e72full}
670    }
671   ,	//28
672   {{0x36b90be550000000ull, 0xa18f07d7ull}
673    }
674   ,	//29
675   {{0x233a76f520000000ull, 0x64f964e68ull}
676    }
677   ,	//30
678   {{0x6048a59340000000ull, 0x3f1bdf1011ull}
679    }
680   ,	//31
681   {{0xc2d677c080000000ull, 0x27716b6a0adull}
682    }
683   ,	//32
684   {{0x9c60ad8500000000ull, 0x18a6e32246c9ull}
685    }
686   ,	//33
687   {{0x1bc6c73200000000ull, 0xf684df56c3e0ull}
688    }
689   ,	//34
690   {{0x15c3c7f400000000ull, 0x9a130b963a6c1ull}
691    }
692   ,	//35
693   }
694};
695
696
697UINT128 reciprocals10_128[] = {
698  {{0ull, 0ull}
699   }
700  ,	// 0 extra digits
701  {{0x3333333333333334ull, 0x3333333333333333ull}
702   }
703  ,	// 1 extra digit
704  {{0x51eb851eb851eb86ull, 0x051eb851eb851eb8ull}
705   }
706  ,	// 2 extra digits
707  {{0x3b645a1cac083127ull, 0x0083126e978d4fdfull}
708   }
709  ,	// 3 extra digits
710  {{0x4af4f0d844d013aaULL, 0x00346dc5d6388659ULL}
711   }
712  ,	//  10^(-4) * 2^131
713  {{0x08c3f3e0370cdc88ULL, 0x0029f16b11c6d1e1ULL}
714   }
715  ,	//  10^(-5) * 2^134
716  {{0x6d698fe69270b06dULL, 0x00218def416bdb1aULL}
717   }
718  ,	//  10^(-6) * 2^137
719  {{0xaf0f4ca41d811a47ULL, 0x0035afe535795e90ULL}
720   }
721  ,	//  10^(-7) * 2^141
722  {{0xbf3f70834acdaea0ULL, 0x002af31dc4611873ULL}
723   }
724  ,	//  10^(-8) * 2^144
725  {{0x65cc5a02a23e254dULL, 0x00225c17d04dad29ULL}
726   }
727  ,	//  10^(-9) * 2^147
728  {{0x6fad5cd10396a214ULL, 0x0036f9bfb3af7b75ULL}
729   }
730  ,	// 10^(-10) * 2^151
731  {{0xbfbde3da69454e76ULL, 0x002bfaffc2f2c92aULL}
732   }
733  ,	// 10^(-11) * 2^154
734  {{0x32fe4fe1edd10b92ULL, 0x00232f33025bd422ULL}
735   }
736  ,	// 10^(-12) * 2^157
737  {{0x84ca19697c81ac1cULL, 0x00384b84d092ed03ULL}
738   }
739  ,	// 10^(-13) * 2^161
740  {{0x03d4e1213067bce4ULL, 0x002d09370d425736ULL}
741   }
742  ,	// 10^(-14) * 2^164
743  {{0x3643e74dc052fd83ULL, 0x0024075f3dceac2bULL}
744   }
745  ,	// 10^(-15) * 2^167
746  {{0x56d30baf9a1e626bULL, 0x0039a5652fb11378ULL}
747   }
748  ,	// 10^(-16) * 2^171
749  {{0x12426fbfae7eb522ULL, 0x002e1dea8c8da92dULL}
750   }
751  ,	// 10^(-17) * 2^174
752  {{0x41cebfcc8b9890e8ULL, 0x0024e4bba3a48757ULL}
753   }
754  ,	// 10^(-18) * 2^177
755  {{0x694acc7a78f41b0dULL, 0x003b07929f6da558ULL}
756   }
757  ,	// 10^(-19) * 2^181
758  {{0xbaa23d2ec729af3eULL, 0x002f394219248446ULL}
759   }
760  ,	// 10^(-20) * 2^184
761  {{0xfbb4fdbf05baf298ULL, 0x0025c768141d369eULL}
762   }
763  ,	// 10^(-21) * 2^187
764  {{0x2c54c931a2c4b759ULL, 0x003c7240202ebdcbULL}
765   }
766  ,	// 10^(-22) * 2^191
767  {{0x89dd6dc14f03c5e1ULL, 0x00305b66802564a2ULL}
768   }
769  ,	// 10^(-23) * 2^194
770  {{0xd4b1249aa59c9e4eULL, 0x0026af8533511d4eULL}
771   }
772  ,	// 10^(-24) * 2^197
773  {{0x544ea0f76f60fd49ULL, 0x003de5a1ebb4fbb1ULL}
774   }
775  ,	// 10^(-25) * 2^201
776  {{0x76a54d92bf80caa1ULL, 0x00318481895d9627ULL}
777   }
778  ,	// 10^(-26) * 2^204
779  {{0x921dd7a89933d54eULL, 0x00279d346de4781fULL}
780   }
781  ,	// 10^(-27) * 2^207
782  {{0x8362f2a75b862215ULL, 0x003f61ed7ca0c032ULL}
783   }
784  ,	// 10^(-28) * 2^211
785  {{0xcf825bb91604e811ULL, 0x0032b4bdfd4d668eULL}
786   }
787  ,	// 10^(-29) * 2^214
788  {{0x0c684960de6a5341ULL, 0x00289097fdd7853fULL}
789   }
790  ,	// 10^(-30) * 2^217
791  {{0x3d203ab3e521dc34ULL, 0x002073accb12d0ffULL}
792   }
793  ,	// 10^(-31) * 2^220
794  {{0x2e99f7863b696053ULL, 0x0033ec47ab514e65ULL}
795   }
796  ,	// 10^(-32) * 2^224
797  {{0x587b2c6b62bab376ULL, 0x002989d2ef743eb7ULL}
798   }
799  ,	// 10^(-33) * 2^227
800  {{0xad2f56bc4efbc2c5ULL, 0x00213b0f25f69892ULL}
801   }
802  ,	// 10^(-34) * 2^230
803  {{0x0f2abc9d8c9689d1ull, 0x01a95a5b7f87a0efull}
804   }
805  ,	// 35 extra digits
806};
807
808
809int recip_scale[] = {
810  129 - 128,	// 1
811  129 - 128,	// 1/10
812  129 - 128,	// 1/10^2
813  129 - 128,	// 1/10^3
814  3,	// 131 - 128
815  6,	// 134 - 128
816  9,	// 137 - 128
817  13,	// 141 - 128
818  16,	// 144 - 128
819  19,	// 147 - 128
820  23,	// 151 - 128
821  26,	// 154 - 128
822  29,	// 157 - 128
823  33,	// 161 - 128
824  36,	// 164 - 128
825  39,	// 167 - 128
826  43,	// 171 - 128
827  46,	// 174 - 128
828  49,	// 177 - 128
829  53,	// 181 - 128
830  56,	// 184 - 128
831  59,	// 187 - 128
832  63,	// 191 - 128
833
834  66,	// 194 - 128
835  69,	// 197 - 128
836  73,	// 201 - 128
837  76,	// 204 - 128
838  79,	// 207 - 128
839  83,	// 211 - 128
840  86,	// 214 - 128
841  89,	// 217 - 128
842  92,	// 220 - 128
843  96,	// 224 - 128
844  99,	// 227 - 128
845  102,	// 230 - 128
846  109,	// 237 - 128, 1/10^35
847};
848
849
850// tables used in computation
851int estimate_decimal_digits[129] = {
852  1,	//2^0 =1     < 10^0
853  1,	//2^1 =2     < 10^1
854  1,	//2^2 =4     < 10^1
855  1,	//2^3 =8     < 10^1
856  2,	//2^4 =16    < 10^2
857  2,	//2^5 =32    < 10^2
858  2,	//2^6 =64    < 10^2
859  3,	//2^7 =128   < 10^3
860  3,	//2^8 =256   < 10^3
861  3,	//2^9 =512   < 10^3
862  4,	//2^10=1024  < 10^4
863  4,	//2^11=2048  < 10^4
864  4,	//2^12=4096  < 10^4
865  4,	//2^13=8192  < 10^4
866  5,	//2^14=16384 < 10^5
867  5,	//2^15=32768 < 10^5
868
869  5,	//2^16=65536     < 10^5
870  6,	//2^17=131072    < 10^6
871  6,	//2^18=262144    < 10^6
872  6,	//2^19=524288    < 10^6
873  7,	//2^20=1048576   < 10^7
874  7,	//2^21=2097152   < 10^7
875  7,	//2^22=4194304   < 10^7
876  7,	//2^23=8388608   < 10^7
877  8,	//2^24=16777216  < 10^8
878  8,	//2^25=33554432  < 10^8
879  8,	//2^26=67108864  < 10^8
880  9,	//2^27=134217728 < 10^9
881  9,	//2^28=268435456 < 10^9
882  9,	//2^29=536870912 < 10^9
883  10,	//2^30=1073741824< 10^10
884  10,	//2^31=2147483648< 10^10
885
886  10,	//2^32=4294967296     < 10^10
887  10,	//2^33=8589934592     < 10^10
888  11,	//2^34=17179869184    < 10^11
889  11,	//2^35=34359738368    < 10^11
890  11,	//2^36=68719476736    < 10^11
891  12,	//2^37=137438953472   < 10^12
892  12,	//2^38=274877906944   < 10^12
893  12,	//2^39=549755813888   < 10^12
894  13,	//2^40=1099511627776  < 10^13
895  13,	//2^41=2199023255552  < 10^13
896  13,	//2^42=4398046511104  < 10^13
897  13,	//2^43=8796093022208  < 10^13
898  14,	//2^44=17592186044416 < 10^14
899  14,	//2^45=35184372088832 < 10^14
900  14,	//2^46=70368744177664 < 10^14
901  15,	//2^47=140737488355328< 10^15
902
903  15,	//2^48=281474976710656    < 10^15
904  15,	//2^49=562949953421312    < 10^15
905  16,	//2^50=1125899906842624   < 10^16
906  16,	//2^51=2251799813685248   < 10^16
907  16,	//2^52=4503599627370496   < 10^16
908  16,	//2^53=9007199254740992   < 10^16
909  17,	//2^54=18014398509481984  < 10^17
910  17,	//2^55=36028797018963968  < 10^17
911  17,	//2^56=72057594037927936  < 10^17
912  18,	//2^57=144115188075855872 < 10^18
913  18,	//2^58=288230376151711744 < 10^18
914  18,	//2^59=576460752303423488 < 10^18
915  19,	//2^60=1152921504606846976< 10^19
916  19,	//2^61=2305843009213693952< 10^19
917  19,	//2^62=4611686018427387904< 10^19
918  19,	//2^63=9223372036854775808< 10^19
919
920  20,	//2^64=18446744073709551616
921  20,	//2^65=36893488147419103232
922  20,	//2^66=73786976294838206464
923  21,	//2^67=147573952589676412928
924  21,	//2^68=295147905179352825856
925  21,	//2^69=590295810358705651712
926  22,	//2^70=1180591620717411303424
927  22,	//2^71=2361183241434822606848
928  22,	//2^72=4722366482869645213696
929  22,	//2^73=9444732965739290427392
930  23,	//2^74=18889465931478580854784
931  23,	//2^75=37778931862957161709568
932  23,	//2^76=75557863725914323419136
933  24,	//2^77=151115727451828646838272
934  24,	//2^78=302231454903657293676544
935  24,	//2^79=604462909807314587353088
936
937  25,	//2^80=1208925819614629174706176
938  25,	//2^81=2417851639229258349412352
939  25,	//2^82=4835703278458516698824704
940  25,	//2^83=9671406556917033397649408
941  26,	//2^84=19342813113834066795298816
942  26,	//2^85=38685626227668133590597632
943  26,	//2^86=77371252455336267181195264
944  27,	//2^87=154742504910672534362390528
945  27,	//2^88=309485009821345068724781056
946  27,	//2^89=618970019642690137449562112
947  28,	//2^90=1237940039285380274899124224
948  28,	//2^91=2475880078570760549798248448
949  28,	//2^92=4951760157141521099596496896
950  28,	//2^93=9903520314283042199192993792
951  29,	//2^94=19807040628566084398385987584
952  29,	//2^95=39614081257132168796771975168
953  29,	//2^96=79228162514264337593543950336
954
955  30,	//2^97=158456325028528675187087900672
956  30,	//2^98=316912650057057350374175801344
957  30,	//2^99=633825300114114700748351602688
958  31,	//2^100=1267650600228229401496703205376
959  31,	//2^101=2535301200456458802993406410752
960  31,	//2^102=5070602400912917605986812821504
961  32,	//2^103=10141204801825835211973625643008
962  32,	//2^104=20282409603651670423947251286016
963  32,	//2^105=40564819207303340847894502572032
964  32,	//2^106=81129638414606681695789005144064
965  33,	//2^107=162259276829213363391578010288128
966  33,	// 2^108
967  33,	// 2^109
968  34,	// 2^110
969  34,	// 2^111
970  34,	// 2^112
971  35,	// 2^113
972  35,	// 2^114
973  35,	// 2^115
974  35,	// 2^116
975  36,	// 2^117
976  36,	// 2^118
977  36,	// 2^119
978  37,	// 2^120
979  37,	// 2^121
980  37,	// 2^122
981  38,	// 2^123
982  38,	// 2^124
983  38,	// 2^125
984  38,	// 2^126
985  39,	// 2^127
986  39	// 2^128
987};
988
989
990UINT128 power10_table_128[] = {
991  {{0x0000000000000001ull, 0x0000000000000000ull}},	// 10^0
992  {{0x000000000000000aull, 0x0000000000000000ull}},	// 10^1
993  {{0x0000000000000064ull, 0x0000000000000000ull}},	// 10^2
994  {{0x00000000000003e8ull, 0x0000000000000000ull}},	// 10^3
995  {{0x0000000000002710ull, 0x0000000000000000ull}},	// 10^4
996  {{0x00000000000186a0ull, 0x0000000000000000ull}},	// 10^5
997  {{0x00000000000f4240ull, 0x0000000000000000ull}},	// 10^6
998  {{0x0000000000989680ull, 0x0000000000000000ull}},	// 10^7
999  {{0x0000000005f5e100ull, 0x0000000000000000ull}},	// 10^8
1000  {{0x000000003b9aca00ull, 0x0000000000000000ull}},	// 10^9
1001  {{0x00000002540be400ull, 0x0000000000000000ull}},	// 10^10
1002  {{0x000000174876e800ull, 0x0000000000000000ull}},	// 10^11
1003  {{0x000000e8d4a51000ull, 0x0000000000000000ull}},	// 10^12
1004  {{0x000009184e72a000ull, 0x0000000000000000ull}},	// 10^13
1005  {{0x00005af3107a4000ull, 0x0000000000000000ull}},	// 10^14
1006  {{0x00038d7ea4c68000ull, 0x0000000000000000ull}},	// 10^15
1007  {{0x002386f26fc10000ull, 0x0000000000000000ull}},	// 10^16
1008  {{0x016345785d8a0000ull, 0x0000000000000000ull}},	// 10^17
1009  {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}},	// 10^18
1010  {{0x8ac7230489e80000ull, 0x0000000000000000ull}},	// 10^19
1011  {{0x6bc75e2d63100000ull, 0x0000000000000005ull}},	// 10^20
1012  {{0x35c9adc5dea00000ull, 0x0000000000000036ull}},	// 10^21
1013  {{0x19e0c9bab2400000ull, 0x000000000000021eull}},	// 10^22
1014  {{0x02c7e14af6800000ull, 0x000000000000152dull}},	// 10^23
1015  {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}},	// 10^24
1016  {{0x161401484a000000ull, 0x0000000000084595ull}},	// 10^25
1017  {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}},	// 10^26
1018  {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}},	// 10^27
1019  {{0x3e25026110000000ull, 0x00000000204fce5eull}},	// 10^28
1020  {{0x6d7217caa0000000ull, 0x00000001431e0faeull}},	// 10^29
1021  {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}},	// 10^30
1022  {{0xc0914b2680000000ull, 0x0000007e37be2022ull}},	// 10^31
1023  {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},	// 10^32
1024  {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}},	// 10^33
1025  {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}},	// 10^34
1026  {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},	// 10^35
1027  {{0xb34b9f1000000000ull, 0x00c097ce7bc90715ull}},	// 10^36
1028  {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}},	// 10^37
1029  {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},	// 10^38
1030};
1031
1032
1033int estimate_bin_expon[] = {
1034  0,	// 10^0
1035  3,	// 10^1
1036  6,	// 10^2
1037  9,	// 10^3
1038  13,	// 10^4
1039  16,	// 10^5
1040  19,	// 10^6
1041  23,	// 10^7
1042  26,	// 10^8
1043  29,	// 10^9
1044  33,	// 10^10
1045  36,	// 10^11
1046  39,	// 10^12
1047  43,	// 10^13
1048  46,	// 10^14
1049  49,	// 10^15
1050  53	// 10^16
1051};
1052
1053
1054UINT64 power10_index_binexp[] = {
1055  0x000000000000000aull,
1056  0x000000000000000aull,
1057  0x000000000000000aull,
1058  0x000000000000000aull,
1059  0x0000000000000064ull,
1060  0x0000000000000064ull,
1061  0x0000000000000064ull,
1062  0x00000000000003e8ull,
1063  0x00000000000003e8ull,
1064  0x00000000000003e8ull,
1065  0x0000000000002710ull,
1066  0x0000000000002710ull,
1067  0x0000000000002710ull,
1068  0x0000000000002710ull,
1069  0x00000000000186a0ull,
1070  0x00000000000186a0ull,
1071  0x00000000000186a0ull,
1072  0x00000000000f4240ull,
1073  0x00000000000f4240ull,
1074  0x00000000000f4240ull,
1075  0x0000000000989680ull,
1076  0x0000000000989680ull,
1077  0x0000000000989680ull,
1078  0x0000000000989680ull,
1079  0x0000000005f5e100ull,
1080  0x0000000005f5e100ull,
1081  0x0000000005f5e100ull,
1082  0x000000003b9aca00ull,
1083  0x000000003b9aca00ull,
1084  0x000000003b9aca00ull,
1085  0x00000002540be400ull,
1086  0x00000002540be400ull,
1087  0x00000002540be400ull,
1088  0x00000002540be400ull,
1089  0x000000174876e800ull,
1090  0x000000174876e800ull,
1091  0x000000174876e800ull,
1092  0x000000e8d4a51000ull,
1093  0x000000e8d4a51000ull,
1094  0x000000e8d4a51000ull,
1095  0x000009184e72a000ull,
1096  0x000009184e72a000ull,
1097  0x000009184e72a000ull,
1098  0x000009184e72a000ull,
1099  0x00005af3107a4000ull,
1100  0x00005af3107a4000ull,
1101  0x00005af3107a4000ull,
1102  0x00038d7ea4c68000ull,
1103  0x00038d7ea4c68000ull,
1104  0x00038d7ea4c68000ull,
1105  0x002386f26fc10000ull,
1106  0x002386f26fc10000ull,
1107  0x002386f26fc10000ull,
1108  0x002386f26fc10000ull,
1109  0x016345785d8a0000ull,
1110  0x016345785d8a0000ull,
1111  0x016345785d8a0000ull,
1112  0x0de0b6b3a7640000ull,
1113  0x0de0b6b3a7640000ull,
1114  0x0de0b6b3a7640000ull,
1115  0x8ac7230489e80000ull,
1116  0x8ac7230489e80000ull,
1117  0x8ac7230489e80000ull,
1118  0x8ac7230489e80000ull
1119};
1120
1121
1122int short_recip_scale[] = {
1123  1,
1124  65 - 64,
1125  69 - 64,
1126  71 - 64,
1127  75 - 64,
1128  78 - 64,
1129  81 - 64,
1130  85 - 64,
1131  88 - 64,
1132  91 - 64,
1133  95 - 64,
1134  98 - 64,
1135  101 - 64,
1136  105 - 64,
1137  108 - 64,
1138  111 - 64,
1139  115 - 64,	//114 - 64
1140  118 - 64
1141};
1142
1143
1144UINT64 reciprocals10_64[] = {
1145  1ull,	// dummy value for 0 extra digits
1146  0x3333333333333334ull,	// 1 extra digit
1147  0x51eb851eb851eb86ull,
1148  0x20c49ba5e353f7cfull,
1149  0x346dc5d63886594bull,
1150  0x29f16b11c6d1e109ull,
1151  0x218def416bdb1a6eull,
1152  0x35afe535795e90b0ull,
1153  0x2af31dc4611873c0ull,
1154  0x225c17d04dad2966ull,
1155  0x36f9bfb3af7b7570ull,
1156  0x2bfaffc2f2c92ac0ull,
1157  0x232f33025bd42233ull,
1158  0x384b84d092ed0385ull,
1159  0x2d09370d42573604ull,
1160  0x24075f3dceac2b37ull,
1161  0x39a5652fb1137857ull,
1162  0x2e1dea8c8da92d13ull
1163};
1164
1165
1166
1167UINT128 power10_index_binexp_128[] = {
1168  {{0x000000000000000aull, 0x0000000000000000ull}},
1169  {{0x000000000000000aull, 0x0000000000000000ull}},
1170  {{0x000000000000000aull, 0x0000000000000000ull}},
1171  {{0x000000000000000aull, 0x0000000000000000ull}},
1172  {{0x0000000000000064ull, 0x0000000000000000ull}},
1173  {{0x0000000000000064ull, 0x0000000000000000ull}},
1174  {{0x0000000000000064ull, 0x0000000000000000ull}},
1175  {{0x00000000000003e8ull, 0x0000000000000000ull}},
1176  {{0x00000000000003e8ull, 0x0000000000000000ull}},
1177  {{0x00000000000003e8ull, 0x0000000000000000ull}},
1178  {{0x0000000000002710ull, 0x0000000000000000ull}},
1179  {{0x0000000000002710ull, 0x0000000000000000ull}},
1180  {{0x0000000000002710ull, 0x0000000000000000ull}},
1181  {{0x0000000000002710ull, 0x0000000000000000ull}},
1182  {{0x00000000000186a0ull, 0x0000000000000000ull}},
1183  {{0x00000000000186a0ull, 0x0000000000000000ull}},
1184  {{0x00000000000186a0ull, 0x0000000000000000ull}},
1185  {{0x00000000000f4240ull, 0x0000000000000000ull}},
1186  {{0x00000000000f4240ull, 0x0000000000000000ull}},
1187  {{0x00000000000f4240ull, 0x0000000000000000ull}},
1188  {{0x0000000000989680ull, 0x0000000000000000ull}},
1189  {{0x0000000000989680ull, 0x0000000000000000ull}},
1190  {{0x0000000000989680ull, 0x0000000000000000ull}},
1191  {{0x0000000000989680ull, 0x0000000000000000ull}},
1192  {{0x0000000005f5e100ull, 0x0000000000000000ull}},
1193  {{0x0000000005f5e100ull, 0x0000000000000000ull}},
1194  {{0x0000000005f5e100ull, 0x0000000000000000ull}},
1195  {{0x000000003b9aca00ull, 0x0000000000000000ull}},
1196  {{0x000000003b9aca00ull, 0x0000000000000000ull}},
1197  {{0x000000003b9aca00ull, 0x0000000000000000ull}},
1198  {{0x00000002540be400ull, 0x0000000000000000ull}},
1199  {{0x00000002540be400ull, 0x0000000000000000ull}},
1200  {{0x00000002540be400ull, 0x0000000000000000ull}},
1201  {{0x00000002540be400ull, 0x0000000000000000ull}},
1202  {{0x000000174876e800ull, 0x0000000000000000ull}},
1203  {{0x000000174876e800ull, 0x0000000000000000ull}},
1204  {{0x000000174876e800ull, 0x0000000000000000ull}},
1205  {{0x000000e8d4a51000ull, 0x0000000000000000ull}},
1206  {{0x000000e8d4a51000ull, 0x0000000000000000ull}},
1207  {{0x000000e8d4a51000ull, 0x0000000000000000ull}},
1208  {{0x000009184e72a000ull, 0x0000000000000000ull}},
1209  {{0x000009184e72a000ull, 0x0000000000000000ull}},
1210  {{0x000009184e72a000ull, 0x0000000000000000ull}},
1211  {{0x000009184e72a000ull, 0x0000000000000000ull}},
1212  {{0x00005af3107a4000ull, 0x0000000000000000ull}},
1213  {{0x00005af3107a4000ull, 0x0000000000000000ull}},
1214  {{0x00005af3107a4000ull, 0x0000000000000000ull}},
1215  {{0x00038d7ea4c68000ull, 0x0000000000000000ull}},
1216  {{0x00038d7ea4c68000ull, 0x0000000000000000ull}},
1217  {{0x00038d7ea4c68000ull, 0x0000000000000000ull}},
1218  {{0x002386f26fc10000ull, 0x0000000000000000ull}},
1219  {{0x002386f26fc10000ull, 0x0000000000000000ull}},
1220  {{0x002386f26fc10000ull, 0x0000000000000000ull}},
1221  {{0x002386f26fc10000ull, 0x0000000000000000ull}},
1222  {{0x016345785d8a0000ull, 0x0000000000000000ull}},
1223  {{0x016345785d8a0000ull, 0x0000000000000000ull}},
1224  {{0x016345785d8a0000ull, 0x0000000000000000ull}},
1225  {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}},
1226  {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}},
1227  {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}},
1228  {{0x8ac7230489e80000ull, 0x0000000000000000ull}},
1229  {{0x8ac7230489e80000ull, 0x0000000000000000ull}},
1230  {{0x8ac7230489e80000ull, 0x0000000000000000ull}},
1231  {{0x8ac7230489e80000ull, 0x0000000000000000ull}},
1232  {{0x6bc75e2d63100000ull, 0x0000000000000005ull}},	// 10^20
1233  {{0x6bc75e2d63100000ull, 0x0000000000000005ull}},	// 10^20
1234  {{0x6bc75e2d63100000ull, 0x0000000000000005ull}},	// 10^20
1235  {{0x35c9adc5dea00000ull, 0x0000000000000036ull}},	// 10^21
1236  {{0x35c9adc5dea00000ull, 0x0000000000000036ull}},	// 10^21
1237  {{0x35c9adc5dea00000ull, 0x0000000000000036ull}},	// 10^21
1238  {{0x19e0c9bab2400000ull, 0x000000000000021eull}},	// 10^22
1239  {{0x19e0c9bab2400000ull, 0x000000000000021eull}},	// 10^22
1240  {{0x19e0c9bab2400000ull, 0x000000000000021eull}},	// 10^22
1241  {{0x19e0c9bab2400000ull, 0x000000000000021eull}},	// 10^22
1242  {{0x02c7e14af6800000ull, 0x000000000000152dull}},	// 10^23
1243  {{0x02c7e14af6800000ull, 0x000000000000152dull}},	// 10^23
1244  {{0x02c7e14af6800000ull, 0x000000000000152dull}},	// 10^23
1245  {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}},	// 10^24
1246  {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}},	// 10^24
1247  {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}},	// 10^24
1248  {{0x161401484a000000ull, 0x0000000000084595ull}},	// 10^25
1249  {{0x161401484a000000ull, 0x0000000000084595ull}},	// 10^25
1250  {{0x161401484a000000ull, 0x0000000000084595ull}},	// 10^25
1251  {{0x161401484a000000ull, 0x0000000000084595ull}},	// 10^25
1252  {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}},	// 10^26
1253  {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}},	// 10^26
1254  {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}},	// 10^26
1255  {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}},	// 10^27
1256  {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}},	// 10^27
1257  {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}},	// 10^27
1258  {{0x3e25026110000000ull, 0x00000000204fce5eull}},	// 10^28
1259  {{0x3e25026110000000ull, 0x00000000204fce5eull}},	// 10^28
1260  {{0x3e25026110000000ull, 0x00000000204fce5eull}},	// 10^28
1261  {{0x3e25026110000000ull, 0x00000000204fce5eull}},	// 10^28
1262  {{0x6d7217caa0000000ull, 0x00000001431e0faeull}},	// 10^29
1263  {{0x6d7217caa0000000ull, 0x00000001431e0faeull}},	// 10^29
1264  {{0x6d7217caa0000000ull, 0x00000001431e0faeull}},	// 10^29
1265  {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}},	// 10^30
1266  {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}},	// 10^30
1267  {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}},	// 10^30
1268  {{0xc0914b2680000000ull, 0x0000007e37be2022ull}},	// 10^31
1269  {{0xc0914b2680000000ull, 0x0000007e37be2022ull}},	// 10^31
1270  {{0xc0914b2680000000ull, 0x0000007e37be2022ull}},	// 10^31
1271  {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},	// 10^32
1272  {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},	// 10^32
1273  {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},	// 10^32
1274  {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},	// 10^32
1275  {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}},	// 10^33
1276  {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}},	// 10^33
1277  {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}},	// 10^33, entry 112
1278  {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}},	// 10^34
1279  {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}},	// 10^34
1280  {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}},	// 10^34
1281  {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},	// 10^35
1282  {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},	// 10^35
1283  {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},	// 10^35
1284  {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},	// 10^35
1285  {{0xb34b9f1000000000ull, 0x00c097ce7bc90715ull}},	// 10^36
1286  {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}},	// 10^37
1287  {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}},	// 10^37
1288  {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}},	// 10^37
1289  {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},	// 10^38
1290  {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},	// 10^38
1291  {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},	// 10^38
1292  {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},	// 10^38
1293};
1294