(root)/
gcc-13.2.0/
libgcc/
config/
libbid/
bid_decimal_data.c
       1  /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
       2  
       3  This file is part of GCC.
       4  
       5  GCC is free software; you can redistribute it and/or modify it under
       6  the terms of the GNU General Public License as published by the Free
       7  Software Foundation; either version 3, or (at your option) any later
       8  version.
       9  
      10  GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      11  WARRANTY; without even the implied warranty of MERCHANTABILITY or
      12  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      13  for more details.
      14  
      15  Under Section 7 of GPL version 3, you are granted additional
      16  permissions described in the GCC Runtime Library Exception, version
      17  3.1, as published by the Free Software Foundation.
      18  
      19  You should have received a copy of the GNU General Public License and
      20  a copy of the GCC Runtime Library Exception along with this program;
      21  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      22  <http://www.gnu.org/licenses/>.  */
      23  
      24  #include "bid_internal.h"
      25  
      26  UINT64 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  
     139  UINT128 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  
     697  UINT128 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  
     809  int 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
     851  int 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  
     990  UINT128 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  
    1033  int 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  
    1054  UINT64 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  
    1122  int 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  
    1144  UINT64 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  
    1167  UINT128 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  };