1 /* Copyright (C) 2007 Free Software Foundation, Inc.
3 This file is part of GCC.
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 2, or (at your option) any later
10 In addition to the permissions in the GNU General Public License, the
11 Free Software Foundation gives you unlimited permission to link the
12 compiled version of this file into combinations with other programs,
13 and to distribute those combinations without any restriction coming
14 from the use of this file. (The General Public License restrictions
15 do apply in other respects; for example, they cover modification of
16 the file, and distribution when not linked into a combine
19 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
20 WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24 You should have received a copy of the GNU General Public License
25 along with GCC; see the file COPYING. If not, write to the Free
26 Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
29 #include "bid_internal.h"
31 UINT64 __bid_round_const_table
[][19] = {
33 0ull, // 0 extra digits
34 5ull, // 1 extra digits
35 50ull, // 2 extra digits
36 500ull, // 3 extra digits
37 5000ull, // 4 extra digits
38 50000ull, // 5 extra digits
39 500000ull, // 6 extra digits
40 5000000ull, // 7 extra digits
41 50000000ull, // 8 extra digits
42 500000000ull, // 9 extra digits
43 5000000000ull, // 10 extra digits
44 50000000000ull, // 11 extra digits
45 500000000000ull, // 12 extra digits
46 5000000000000ull, // 13 extra digits
47 50000000000000ull, // 14 extra digits
48 500000000000000ull, // 15 extra digits
49 5000000000000000ull, // 16 extra digits
50 50000000000000000ull, // 17 extra digits
51 500000000000000000ull // 18 extra digits
55 0ull, // 0 extra digits
56 0ull, // 1 extra digits
57 0ull, // 2 extra digits
58 00ull, // 3 extra digits
59 000ull, // 4 extra digits
60 0000ull, // 5 extra digits
61 00000ull, // 6 extra digits
62 000000ull, // 7 extra digits
63 0000000ull, // 8 extra digits
64 00000000ull, // 9 extra digits
65 000000000ull, // 10 extra digits
66 0000000000ull, // 11 extra digits
67 00000000000ull, // 12 extra digits
68 000000000000ull, // 13 extra digits
69 0000000000000ull, // 14 extra digits
70 00000000000000ull, // 15 extra digits
71 000000000000000ull, // 16 extra digits
72 0000000000000000ull, // 17 extra digits
73 00000000000000000ull // 18 extra digits
77 0ull, // 0 extra digits
78 9ull, // 1 extra digits
79 99ull, // 2 extra digits
80 999ull, // 3 extra digits
81 9999ull, // 4 extra digits
82 99999ull, // 5 extra digits
83 999999ull, // 6 extra digits
84 9999999ull, // 7 extra digits
85 99999999ull, // 8 extra digits
86 999999999ull, // 9 extra digits
87 9999999999ull, // 10 extra digits
88 99999999999ull, // 11 extra digits
89 999999999999ull, // 12 extra digits
90 9999999999999ull, // 13 extra digits
91 99999999999999ull, // 14 extra digits
92 999999999999999ull, // 15 extra digits
93 9999999999999999ull, // 16 extra digits
94 99999999999999999ull, // 17 extra digits
95 999999999999999999ull // 18 extra digits
99 0ull, // 0 extra digits
100 0ull, // 1 extra digits
101 0ull, // 2 extra digits
102 00ull, // 3 extra digits
103 000ull, // 4 extra digits
104 0000ull, // 5 extra digits
105 00000ull, // 6 extra digits
106 000000ull, // 7 extra digits
107 0000000ull, // 8 extra digits
108 00000000ull, // 9 extra digits
109 000000000ull, // 10 extra digits
110 0000000000ull, // 11 extra digits
111 00000000000ull, // 12 extra digits
112 000000000000ull, // 13 extra digits
113 0000000000000ull, // 14 extra digits
114 00000000000000ull, // 15 extra digits
115 000000000000000ull, // 16 extra digits
116 0000000000000000ull, // 17 extra digits
117 00000000000000000ull // 18 extra digits
120 { // round ties away from 0
121 0ull, // 0 extra digits
122 5ull, // 1 extra digits
123 50ull, // 2 extra digits
124 500ull, // 3 extra digits
125 5000ull, // 4 extra digits
126 50000ull, // 5 extra digits
127 500000ull, // 6 extra digits
128 5000000ull, // 7 extra digits
129 50000000ull, // 8 extra digits
130 500000000ull, // 9 extra digits
131 5000000000ull, // 10 extra digits
132 50000000000ull, // 11 extra digits
133 500000000000ull, // 12 extra digits
134 5000000000000ull, // 13 extra digits
135 50000000000000ull, // 14 extra digits
136 500000000000000ull, // 15 extra digits
137 5000000000000000ull, // 16 extra digits
138 50000000000000000ull, // 17 extra digits
139 500000000000000000ull // 18 extra digits
144 UINT128 __bid_round_const_table_128
[][36] = {
162 {{50000000ull, 0ull}}
164 {{500000000ull, 0ull}}
166 {{5000000000ull, 0ull}}
168 {{50000000000ull, 0ull}}
170 {{500000000000ull, 0ull}}
172 {{5000000000000ull, 0ull}}
174 {{50000000000000ull, 0ull}}
176 {{500000000000000ull, 0ull}}
178 {{5000000000000000ull, 0ull}}
180 {{50000000000000000ull, 0ull}}
182 {{500000000000000000ull, 0ull}}
184 {{5000000000000000000ull, 0ull}}
186 {{0xb5e3af16b1880000ull
, 2ull}}
188 {{0x1ae4d6e2ef500000ull
, 27ull}}
190 {{0xcf064dd59200000ull
, 271ull}}
192 {{0x8163f0a57b400000ull
, 2710ull}}
194 {{0xde76676d0800000ull
, 27105ull}}
196 {{0x8b0a00a425000000ull
, 0x422caull
}}
198 {{0x6e64066972000000ull
, 0x295be9ull
}}
200 {{0x4fe8401e74000000ull
, 0x19d971eull
}}
202 {{0x1f12813088000000ull
, 0x1027e72full
}}
204 {{0x36b90be550000000ull
, 0xa18f07d7ull
}}
206 {{0x233a76f520000000ull
, 0x64f964e68ull
}}
208 {{0x6048a59340000000ull
, 0x3f1bdf1011ull
}}
210 {{0xc2d677c080000000ull
, 0x27716b6a0adull
}}
212 {{0x9c60ad8500000000ull
, 0x18a6e32246c9ull
}}
214 {{0x1bc6c73200000000ull
, 0xf684df56c3e0ull
}}
216 {{0x15c3c7f400000000ull
, 0x9a130b963a6c1ull
}}
239 {{00000000ull, 0ull}}
241 {{000000000ull, 0ull}}
243 {{0000000000ull, 0ull}}
245 {{00000000000ull, 0ull}}
247 {{000000000000ull, 0ull}}
249 {{0000000000000ull, 0ull}}
251 {{00000000000000ull, 0ull}}
253 {{000000000000000ull, 0ull}}
255 {{0000000000000000ull, 0ull}}
257 {{00000000000000000ull, 0ull}}
259 {{000000000000000000ull, 0ull}}
312 {{99999999ull, 0ull}}
314 {{999999999ull, 0ull}}
316 {{9999999999ull, 0ull}}
318 {{99999999999ull, 0ull}}
320 {{999999999999ull, 0ull}}
322 {{9999999999999ull, 0ull}}
324 {{99999999999999ull, 0ull}}
326 {{999999999999999ull, 0ull}}
328 {{9999999999999999ull, 0ull}}
330 {{99999999999999999ull, 0ull}}
332 {{999999999999999999ull, 0ull}}
334 {{9999999999999999999ull, 0ull}}
336 {{0x6BC75E2D630FFFFFull
, 0x5ull
}}
338 {{0x35C9ADC5DE9FFFFFull
, 0x36ull
}}
340 {{0x19E0C9BAB23FFFFFull
, 0x21eull
}}
342 {{0x2C7E14AF67FFFFFull
, 0x152dull
}}
344 {{0x1BCECCEDA0FFFFFFull
, 0xd3c2ull
}}
346 {{0x1614014849FFFFFFull
, 0x84595ull
}}
348 {{0xDCC80CD2E3FFFFFFull
, 0x52b7d2ull
}}
350 {{0x9FD0803CE7FFFFFFull
, 0x33B2E3Cull
}}
352 {{0x3E2502610FFFFFFFull
, 0x204FCE5Eull
}}
354 {{0x6D7217CA9FFFFFFFull
, 0x1431E0FAEull
}}
356 {{0x4674EDEA3FFFFFFFull
, 0xC9F2C9CD0ull
}}
358 {{0xC0914B267FFFFFFFull
, 0x7E37BE2022ull
}}
360 {{0x85ACEF80FFFFFFFFull
, 0x4EE2D6D415Bull
}}
362 {{0x38c15b09ffffffffull
, 0x314dc6448d93ull
}}
364 {{0x378d8e63ffffffffull
, 0x1ed09bead87c0ull
}}
366 {{0x2b878fe7ffffffffull
, 0x13426172c74d82ull
}}
389 {{00000000ull, 0ull}}
391 {{000000000ull, 0ull}}
393 {{0000000000ull, 0ull}}
395 {{00000000000ull, 0ull}}
397 {{000000000000ull, 0ull}}
399 {{0000000000000ull, 0ull}}
401 {{00000000000000ull, 0ull}}
403 {{000000000000000ull, 0ull}}
405 {{0000000000000000ull, 0ull}}
407 {{00000000000000000ull, 0ull}}
409 {{000000000000000000ull, 0ull}}
462 {{50000000ull, 0ull}}
464 {{500000000ull, 0ull}}
466 {{5000000000ull, 0ull}}
468 {{50000000000ull, 0ull}}
470 {{500000000000ull, 0ull}}
472 {{5000000000000ull, 0ull}}
474 {{50000000000000ull, 0ull}}
476 {{500000000000000ull, 0ull}}
478 {{5000000000000000ull, 0ull}}
480 {{50000000000000000ull, 0ull}}
482 {{500000000000000000ull, 0ull}}
484 {{5000000000000000000ull, 0ull}}
486 {{0xb5e3af16b1880000ull
, 2ull}}
488 {{0x1ae4d6e2ef500000ull
, 27ull}}
490 {{0xcf064dd59200000ull
, 271ull}}
492 {{0x8163f0a57b400000ull
, 2710ull}}
494 {{0xde76676d0800000ull
, 27105ull}}
496 {{0x8b0a00a425000000ull
, 0x422caull
}}
498 {{0x6e64066972000000ull
, 0x295be9ull
}}
500 {{0x4fe8401e74000000ull
, 0x19d971eull
}}
502 {{0x1f12813088000000ull
, 0x1027e72full
}}
504 {{0x36b90be550000000ull
, 0xa18f07d7ull
}}
506 {{0x233a76f520000000ull
, 0x64f964e68ull
}}
508 {{0x6048a59340000000ull
, 0x3f1bdf1011ull
}}
510 {{0xc2d677c080000000ull
, 0x27716b6a0adull
}}
512 {{0x9c60ad8500000000ull
, 0x18a6e32246c9ull
}}
514 {{0x1bc6c73200000000ull
, 0xf684df56c3e0ull
}}
516 {{0x15c3c7f400000000ull
, 0x9a130b963a6c1ull
}}
522 UINT128 __bid_reciprocals10_128
[] = {
525 {{0x3333333333333334ull
, 0x3333333333333333ull
}}
527 {{0x51eb851eb851eb86ull
, 0x051eb851eb851eb8ull
}}
529 {{0x3b645a1cac083127ull
, 0x0083126e978d4fdfull
}}
531 {{0x4af4f0d844d013aaULL
, 0x00346dc5d6388659ULL
}}
533 {{0x08c3f3e0370cdc88ULL
, 0x0029f16b11c6d1e1ULL
}}
535 {{0x6d698fe69270b06dULL
, 0x00218def416bdb1aULL
}}
537 {{0xaf0f4ca41d811a47ULL
, 0x0035afe535795e90ULL
}}
539 {{0xbf3f70834acdaea0ULL
, 0x002af31dc4611873ULL
}}
541 {{0x65cc5a02a23e254dULL
, 0x00225c17d04dad29ULL
}}
543 {{0x6fad5cd10396a214ULL
, 0x0036f9bfb3af7b75ULL
}}
544 , // 10^(-10) * 2^151
545 {{0xbfbde3da69454e76ULL
, 0x002bfaffc2f2c92aULL
}}
546 , // 10^(-11) * 2^154
547 {{0x32fe4fe1edd10b92ULL
, 0x00232f33025bd422ULL
}}
548 , // 10^(-12) * 2^157
549 {{0x84ca19697c81ac1cULL
, 0x00384b84d092ed03ULL
}}
550 , // 10^(-13) * 2^161
551 {{0x03d4e1213067bce4ULL
, 0x002d09370d425736ULL
}}
552 , // 10^(-14) * 2^164
553 {{0x3643e74dc052fd83ULL
, 0x0024075f3dceac2bULL
}}
554 , // 10^(-15) * 2^167
555 {{0x56d30baf9a1e626bULL
, 0x0039a5652fb11378ULL
}}
556 , // 10^(-16) * 2^171
557 {{0x12426fbfae7eb522ULL
, 0x002e1dea8c8da92dULL
}}
558 , // 10^(-17) * 2^174
559 {{0x41cebfcc8b9890e8ULL
, 0x0024e4bba3a48757ULL
}}
560 , // 10^(-18) * 2^177
561 {{0x694acc7a78f41b0dULL
, 0x003b07929f6da558ULL
}}
562 , // 10^(-19) * 2^181
563 {{0xbaa23d2ec729af3eULL
, 0x002f394219248446ULL
}}
564 , // 10^(-20) * 2^184
565 {{0xfbb4fdbf05baf298ULL
, 0x0025c768141d369eULL
}}
566 , // 10^(-21) * 2^187
567 {{0x2c54c931a2c4b759ULL
, 0x003c7240202ebdcbULL
}}
568 , // 10^(-22) * 2^191
569 {{0x89dd6dc14f03c5e1ULL
, 0x00305b66802564a2ULL
}}
570 , // 10^(-23) * 2^194
571 {{0xd4b1249aa59c9e4eULL
, 0x0026af8533511d4eULL
}}
572 , // 10^(-24) * 2^197
573 {{0x544ea0f76f60fd49ULL
, 0x003de5a1ebb4fbb1ULL
}}
574 , // 10^(-25) * 2^201
575 {{0x76a54d92bf80caa1ULL
, 0x00318481895d9627ULL
}}
576 , // 10^(-26) * 2^204
577 {{0x921dd7a89933d54eULL
, 0x00279d346de4781fULL
}}
578 , // 10^(-27) * 2^207
579 {{0x8362f2a75b862215ULL
, 0x003f61ed7ca0c032ULL
}}
580 , // 10^(-28) * 2^211
581 {{0xcf825bb91604e811ULL
, 0x0032b4bdfd4d668eULL
}}
582 , // 10^(-29) * 2^214
583 {{0x0c684960de6a5341ULL
, 0x00289097fdd7853fULL
}}
584 , // 10^(-30) * 2^217
585 {{0x3d203ab3e521dc34ULL
, 0x002073accb12d0ffULL
}}
586 , // 10^(-31) * 2^220
587 {{0x2e99f7863b696053ULL
, 0x0033ec47ab514e65ULL
}}
588 , // 10^(-32) * 2^224
589 {{0x587b2c6b62bab376ULL
, 0x002989d2ef743eb7ULL
}}
590 , // 10^(-33) * 2^227
591 {{0xad2f56bc4efbc2c5ULL
, 0x00213b0f25f69892ULL
}}
592 , // 10^(-34) * 2^230
593 {{0x0f2abc9d8c9689d1ull
, 0x01a95a5b7f87a0efull
}}
598 int __bid_recip_scale
[] = {
635 109, // 237 - 128, 1/10^35
639 // tables used in computation
640 int __bid_estimate_decimal_digits
[129] = {
651 4, //2^10=1024 < 10^4
652 4, //2^11=2048 < 10^4
653 4, //2^12=4096 < 10^4
654 4, //2^13=8192 < 10^4
655 5, //2^14=16384 < 10^5
656 5, //2^15=32768 < 10^5
658 5, //2^16=65536 < 10^5
659 6, //2^17=131072 < 10^6
660 6, //2^18=262144 < 10^6
661 6, //2^19=524288 < 10^6
662 7, //2^20=1048576 < 10^7
663 7, //2^21=2097152 < 10^7
664 7, //2^22=4194304 < 10^7
665 7, //2^23=8388608 < 10^7
666 8, //2^24=16777216 < 10^8
667 8, //2^25=33554432 < 10^8
668 8, //2^26=67108864 < 10^8
669 9, //2^27=134217728 < 10^9
670 9, //2^28=268435456 < 10^9
671 9, //2^29=536870912 < 10^9
672 10, //2^30=1073741824< 10^10
673 10, //2^31=2147483648< 10^10
675 10, //2^32=4294967296 < 10^10
676 10, //2^33=8589934592 < 10^10
677 11, //2^34=17179869184 < 10^11
678 11, //2^35=34359738368 < 10^11
679 11, //2^36=68719476736 < 10^11
680 12, //2^37=137438953472 < 10^12
681 12, //2^38=274877906944 < 10^12
682 12, //2^39=549755813888 < 10^12
683 13, //2^40=1099511627776 < 10^13
684 13, //2^41=2199023255552 < 10^13
685 13, //2^42=4398046511104 < 10^13
686 13, //2^43=8796093022208 < 10^13
687 14, //2^44=17592186044416 < 10^14
688 14, //2^45=35184372088832 < 10^14
689 14, //2^46=70368744177664 < 10^14
690 15, //2^47=140737488355328< 10^15
692 15, //2^48=281474976710656 < 10^15
693 15, //2^49=562949953421312 < 10^15
694 16, //2^50=1125899906842624 < 10^16
695 16, //2^51=2251799813685248 < 10^16
696 16, //2^52=4503599627370496 < 10^16
697 16, //2^53=9007199254740992 < 10^16
698 17, //2^54=18014398509481984 < 10^17
699 17, //2^55=36028797018963968 < 10^17
700 17, //2^56=72057594037927936 < 10^17
701 18, //2^57=144115188075855872 < 10^18
702 18, //2^58=288230376151711744 < 10^18
703 18, //2^59=576460752303423488 < 10^18
704 19, //2^60=1152921504606846976< 10^19
705 19, //2^61=2305843009213693952< 10^19
706 19, //2^62=4611686018427387904< 10^19
707 19, //2^63=9223372036854775808< 10^19
709 20, //2^64=18446744073709551616
710 20, //2^65=36893488147419103232
711 20, //2^66=73786976294838206464
712 21, //2^67=147573952589676412928
713 21, //2^68=295147905179352825856
714 21, //2^69=590295810358705651712
715 22, //2^70=1180591620717411303424
716 22, //2^71=2361183241434822606848
717 22, //2^72=4722366482869645213696
718 22, //2^73=9444732965739290427392
719 23, //2^74=18889465931478580854784
720 23, //2^75=37778931862957161709568
721 23, //2^76=75557863725914323419136
722 24, //2^77=151115727451828646838272
723 24, //2^78=302231454903657293676544
724 24, //2^79=604462909807314587353088
726 25, //2^80=1208925819614629174706176
727 25, //2^81=2417851639229258349412352
728 25, //2^82=4835703278458516698824704
729 25, //2^83=9671406556917033397649408
730 26, //2^84=19342813113834066795298816
731 26, //2^85=38685626227668133590597632
732 26, //2^86=77371252455336267181195264
733 27, //2^87=154742504910672534362390528
734 27, //2^88=309485009821345068724781056
735 27, //2^89=618970019642690137449562112
736 28, //2^90=1237940039285380274899124224
737 28, //2^91=2475880078570760549798248448
738 28, //2^92=4951760157141521099596496896
739 28, //2^93=9903520314283042199192993792
740 29, //2^94=19807040628566084398385987584
741 29, //2^95=39614081257132168796771975168
742 29, //2^96=79228162514264337593543950336
744 30, //2^97=158456325028528675187087900672
745 30, //2^98=316912650057057350374175801344
746 30, //2^99=633825300114114700748351602688
747 31, //2^100=1267650600228229401496703205376
748 31, //2^101=2535301200456458802993406410752
749 31, //2^102=5070602400912917605986812821504
750 32, //2^103=10141204801825835211973625643008
751 32, //2^104=20282409603651670423947251286016
752 32, //2^105=40564819207303340847894502572032
753 32, //2^106=81129638414606681695789005144064
754 33, //2^107=162259276829213363391578010288128
779 UINT128 __bid_power10_table_128
[] = {
780 {{0x0000000000000001ull
, 0x0000000000000000ull
}}, // 10^0
781 {{0x000000000000000aull
, 0x0000000000000000ull
}}, // 10^1
782 {{0x0000000000000064ull
, 0x0000000000000000ull
}}, // 10^2
783 {{0x00000000000003e8ull
, 0x0000000000000000ull
}}, // 10^3
784 {{0x0000000000002710ull
, 0x0000000000000000ull
}}, // 10^4
785 {{0x00000000000186a0ull
, 0x0000000000000000ull
}}, // 10^5
786 {{0x00000000000f4240ull
, 0x0000000000000000ull
}}, // 10^6
787 {{0x0000000000989680ull
, 0x0000000000000000ull
}}, // 10^7
788 {{0x0000000005f5e100ull
, 0x0000000000000000ull
}}, // 10^8
789 {{0x000000003b9aca00ull
, 0x0000000000000000ull
}}, // 10^9
790 {{0x00000002540be400ull
, 0x0000000000000000ull
}}, // 10^10
791 {{0x000000174876e800ull
, 0x0000000000000000ull
}}, // 10^11
792 {{0x000000e8d4a51000ull
, 0x0000000000000000ull
}}, // 10^12
793 {{0x000009184e72a000ull
, 0x0000000000000000ull
}}, // 10^13
794 {{0x00005af3107a4000ull
, 0x0000000000000000ull
}}, // 10^14
795 {{0x00038d7ea4c68000ull
, 0x0000000000000000ull
}}, // 10^15
796 {{0x002386f26fc10000ull
, 0x0000000000000000ull
}}, // 10^16
797 {{0x016345785d8a0000ull
, 0x0000000000000000ull
}}, // 10^17
798 {{0x0de0b6b3a7640000ull
, 0x0000000000000000ull
}}, // 10^18
799 {{0x8ac7230489e80000ull
, 0x0000000000000000ull
}}, // 10^19
800 {{0x6bc75e2d63100000ull
, 0x0000000000000005ull
}}, // 10^20
801 {{0x35c9adc5dea00000ull
, 0x0000000000000036ull
}}, // 10^21
802 {{0x19e0c9bab2400000ull
, 0x000000000000021eull
}}, // 10^22
803 {{0x02c7e14af6800000ull
, 0x000000000000152dull
}}, // 10^23
804 {{0x1bcecceda1000000ull
, 0x000000000000d3c2ull
}}, // 10^24
805 {{0x161401484a000000ull
, 0x0000000000084595ull
}}, // 10^25
806 {{0xdcc80cd2e4000000ull
, 0x000000000052b7d2ull
}}, // 10^26
807 {{0x9fd0803ce8000000ull
, 0x00000000033b2e3cull
}}, // 10^27
808 {{0x3e25026110000000ull
, 0x00000000204fce5eull
}}, // 10^28
809 {{0x6d7217caa0000000ull
, 0x00000001431e0faeull
}}, // 10^29
810 {{0x4674edea40000000ull
, 0x0000000c9f2c9cd0ull
}}, // 10^30
811 {{0xc0914b2680000000ull
, 0x0000007e37be2022ull
}}, // 10^31
812 {{0x85acef8100000000ull
, 0x000004ee2d6d415bull
}}, // 10^32
813 {{0x38c15b0a00000000ull
, 0x0000314dc6448d93ull
}}, // 10^33
814 {{0x378d8e6400000000ull
, 0x0001ed09bead87c0ull
}}, // 10^34
815 {{0x2b878fe800000000ull
, 0x0013426172c74d82ull
}}, // 10^35
816 {{0xb34b9f1000000000ull
, 0x00c097ce7bc90715ull
}}, // 10^36
817 {{0x00f436a000000000ull
, 0x0785ee10d5da46d9ull
}}, // 10^37
818 {{0x098a224000000000ull
, 0x4b3b4ca85a86c47aull
}}, // 10^38
822 int __bid_estimate_bin_expon
[] = {
843 UINT64 __bid_power10_index_binexp
[] = {
844 0x000000000000000aull
,
845 0x000000000000000aull
,
846 0x000000000000000aull
,
847 0x000000000000000aull
,
848 0x0000000000000064ull
,
849 0x0000000000000064ull
,
850 0x0000000000000064ull
,
851 0x00000000000003e8ull
,
852 0x00000000000003e8ull
,
853 0x00000000000003e8ull
,
854 0x0000000000002710ull
,
855 0x0000000000002710ull
,
856 0x0000000000002710ull
,
857 0x0000000000002710ull
,
858 0x00000000000186a0ull
,
859 0x00000000000186a0ull
,
860 0x00000000000186a0ull
,
861 0x00000000000f4240ull
,
862 0x00000000000f4240ull
,
863 0x00000000000f4240ull
,
864 0x0000000000989680ull
,
865 0x0000000000989680ull
,
866 0x0000000000989680ull
,
867 0x0000000000989680ull
,
868 0x0000000005f5e100ull
,
869 0x0000000005f5e100ull
,
870 0x0000000005f5e100ull
,
871 0x000000003b9aca00ull
,
872 0x000000003b9aca00ull
,
873 0x000000003b9aca00ull
,
874 0x00000002540be400ull
,
875 0x00000002540be400ull
,
876 0x00000002540be400ull
,
877 0x00000002540be400ull
,
878 0x000000174876e800ull
,
879 0x000000174876e800ull
,
880 0x000000174876e800ull
,
881 0x000000e8d4a51000ull
,
882 0x000000e8d4a51000ull
,
883 0x000000e8d4a51000ull
,
884 0x000009184e72a000ull
,
885 0x000009184e72a000ull
,
886 0x000009184e72a000ull
,
887 0x000009184e72a000ull
,
888 0x00005af3107a4000ull
,
889 0x00005af3107a4000ull
,
890 0x00005af3107a4000ull
,
891 0x00038d7ea4c68000ull
,
892 0x00038d7ea4c68000ull
,
893 0x00038d7ea4c68000ull
,
894 0x002386f26fc10000ull
,
895 0x002386f26fc10000ull
,
896 0x002386f26fc10000ull
,
897 0x002386f26fc10000ull
,
898 0x016345785d8a0000ull
,
899 0x016345785d8a0000ull
,
900 0x016345785d8a0000ull
,
901 0x0de0b6b3a7640000ull
,
902 0x0de0b6b3a7640000ull
,
903 0x0de0b6b3a7640000ull
,
904 0x8ac7230489e80000ull
,
905 0x8ac7230489e80000ull
,
906 0x8ac7230489e80000ull
,
907 0x8ac7230489e80000ull
911 int __bid_short_recip_scale
[] = {
933 UINT64 __bid_reciprocals10_64
[] = {
934 1ull, // dummy value for 0 extra digits
935 0x3333333333333334ull
, // 1 extra digit
936 0x51eb851eb851eb86ull
,
937 0x20c49ba5e353f7cfull
,
938 0x346dc5d63886594bull
,
939 0x29f16b11c6d1e109ull
,
940 0x218def416bdb1a6eull
,
941 0x35afe535795e90b0ull
,
942 0x2af31dc4611873c0ull
,
943 0x225c17d04dad2966ull
,
944 0x36f9bfb3af7b7570ull
,
945 0x2bfaffc2f2c92ac0ull
,
946 0x232f33025bd42233ull
,
947 0x384b84d092ed0385ull
,
948 0x2d09370d42573604ull
,
949 0x24075f3dceac2b37ull
,
950 0x39a5652fb1137857ull
,
951 0x2e1dea8c8da92d13ull
956 UINT128 __bid_power10_index_binexp_128
[] = {
957 {{0x000000000000000aull
, 0x0000000000000000ull
}},
958 {{0x000000000000000aull
, 0x0000000000000000ull
}},
959 {{0x000000000000000aull
, 0x0000000000000000ull
}},
960 {{0x000000000000000aull
, 0x0000000000000000ull
}},
961 {{0x0000000000000064ull
, 0x0000000000000000ull
}},
962 {{0x0000000000000064ull
, 0x0000000000000000ull
}},
963 {{0x0000000000000064ull
, 0x0000000000000000ull
}},
964 {{0x00000000000003e8ull
, 0x0000000000000000ull
}},
965 {{0x00000000000003e8ull
, 0x0000000000000000ull
}},
966 {{0x00000000000003e8ull
, 0x0000000000000000ull
}},
967 {{0x0000000000002710ull
, 0x0000000000000000ull
}},
968 {{0x0000000000002710ull
, 0x0000000000000000ull
}},
969 {{0x0000000000002710ull
, 0x0000000000000000ull
}},
970 {{0x0000000000002710ull
, 0x0000000000000000ull
}},
971 {{0x00000000000186a0ull
, 0x0000000000000000ull
}},
972 {{0x00000000000186a0ull
, 0x0000000000000000ull
}},
973 {{0x00000000000186a0ull
, 0x0000000000000000ull
}},
974 {{0x00000000000f4240ull
, 0x0000000000000000ull
}},
975 {{0x00000000000f4240ull
, 0x0000000000000000ull
}},
976 {{0x00000000000f4240ull
, 0x0000000000000000ull
}},
977 {{0x0000000000989680ull
, 0x0000000000000000ull
}},
978 {{0x0000000000989680ull
, 0x0000000000000000ull
}},
979 {{0x0000000000989680ull
, 0x0000000000000000ull
}},
980 {{0x0000000000989680ull
, 0x0000000000000000ull
}},
981 {{0x0000000005f5e100ull
, 0x0000000000000000ull
}},
982 {{0x0000000005f5e100ull
, 0x0000000000000000ull
}},
983 {{0x0000000005f5e100ull
, 0x0000000000000000ull
}},
984 {{0x000000003b9aca00ull
, 0x0000000000000000ull
}},
985 {{0x000000003b9aca00ull
, 0x0000000000000000ull
}},
986 {{0x000000003b9aca00ull
, 0x0000000000000000ull
}},
987 {{0x00000002540be400ull
, 0x0000000000000000ull
}},
988 {{0x00000002540be400ull
, 0x0000000000000000ull
}},
989 {{0x00000002540be400ull
, 0x0000000000000000ull
}},
990 {{0x00000002540be400ull
, 0x0000000000000000ull
}},
991 {{0x000000174876e800ull
, 0x0000000000000000ull
}},
992 {{0x000000174876e800ull
, 0x0000000000000000ull
}},
993 {{0x000000174876e800ull
, 0x0000000000000000ull
}},
994 {{0x000000e8d4a51000ull
, 0x0000000000000000ull
}},
995 {{0x000000e8d4a51000ull
, 0x0000000000000000ull
}},
996 {{0x000000e8d4a51000ull
, 0x0000000000000000ull
}},
997 {{0x000009184e72a000ull
, 0x0000000000000000ull
}},
998 {{0x000009184e72a000ull
, 0x0000000000000000ull
}},
999 {{0x000009184e72a000ull
, 0x0000000000000000ull
}},
1000 {{0x000009184e72a000ull
, 0x0000000000000000ull
}},
1001 {{0x00005af3107a4000ull
, 0x0000000000000000ull
}},
1002 {{0x00005af3107a4000ull
, 0x0000000000000000ull
}},
1003 {{0x00005af3107a4000ull
, 0x0000000000000000ull
}},
1004 {{0x00038d7ea4c68000ull
, 0x0000000000000000ull
}},
1005 {{0x00038d7ea4c68000ull
, 0x0000000000000000ull
}},
1006 {{0x00038d7ea4c68000ull
, 0x0000000000000000ull
}},
1007 {{0x002386f26fc10000ull
, 0x0000000000000000ull
}},
1008 {{0x002386f26fc10000ull
, 0x0000000000000000ull
}},
1009 {{0x002386f26fc10000ull
, 0x0000000000000000ull
}},
1010 {{0x002386f26fc10000ull
, 0x0000000000000000ull
}},
1011 {{0x016345785d8a0000ull
, 0x0000000000000000ull
}},
1012 {{0x016345785d8a0000ull
, 0x0000000000000000ull
}},
1013 {{0x016345785d8a0000ull
, 0x0000000000000000ull
}},
1014 {{0x0de0b6b3a7640000ull
, 0x0000000000000000ull
}},
1015 {{0x0de0b6b3a7640000ull
, 0x0000000000000000ull
}},
1016 {{0x0de0b6b3a7640000ull
, 0x0000000000000000ull
}},
1017 {{0x8ac7230489e80000ull
, 0x0000000000000000ull
}},
1018 {{0x8ac7230489e80000ull
, 0x0000000000000000ull
}},
1019 {{0x8ac7230489e80000ull
, 0x0000000000000000ull
}},
1020 {{0x8ac7230489e80000ull
, 0x0000000000000000ull
}},
1021 {{0x6bc75e2d63100000ull
, 0x0000000000000005ull
}}, // 10^20
1022 {{0x6bc75e2d63100000ull
, 0x0000000000000005ull
}}, // 10^20
1023 {{0x6bc75e2d63100000ull
, 0x0000000000000005ull
}}, // 10^20
1024 {{0x35c9adc5dea00000ull
, 0x0000000000000036ull
}}, // 10^21
1025 {{0x35c9adc5dea00000ull
, 0x0000000000000036ull
}}, // 10^21
1026 {{0x35c9adc5dea00000ull
, 0x0000000000000036ull
}}, // 10^21
1027 {{0x19e0c9bab2400000ull
, 0x000000000000021eull
}}, // 10^22
1028 {{0x19e0c9bab2400000ull
, 0x000000000000021eull
}}, // 10^22
1029 {{0x19e0c9bab2400000ull
, 0x000000000000021eull
}}, // 10^22
1030 {{0x19e0c9bab2400000ull
, 0x000000000000021eull
}}, // 10^22
1031 {{0x02c7e14af6800000ull
, 0x000000000000152dull
}}, // 10^23
1032 {{0x02c7e14af6800000ull
, 0x000000000000152dull
}}, // 10^23
1033 {{0x02c7e14af6800000ull
, 0x000000000000152dull
}}, // 10^23
1034 {{0x1bcecceda1000000ull
, 0x000000000000d3c2ull
}}, // 10^24
1035 {{0x1bcecceda1000000ull
, 0x000000000000d3c2ull
}}, // 10^24
1036 {{0x1bcecceda1000000ull
, 0x000000000000d3c2ull
}}, // 10^24
1037 {{0x161401484a000000ull
, 0x0000000000084595ull
}}, // 10^25
1038 {{0x161401484a000000ull
, 0x0000000000084595ull
}}, // 10^25
1039 {{0x161401484a000000ull
, 0x0000000000084595ull
}}, // 10^25
1040 {{0x161401484a000000ull
, 0x0000000000084595ull
}}, // 10^25
1041 {{0xdcc80cd2e4000000ull
, 0x000000000052b7d2ull
}}, // 10^26
1042 {{0xdcc80cd2e4000000ull
, 0x000000000052b7d2ull
}}, // 10^26
1043 {{0xdcc80cd2e4000000ull
, 0x000000000052b7d2ull
}}, // 10^26
1044 {{0x9fd0803ce8000000ull
, 0x00000000033b2e3cull
}}, // 10^27
1045 {{0x9fd0803ce8000000ull
, 0x00000000033b2e3cull
}}, // 10^27
1046 {{0x9fd0803ce8000000ull
, 0x00000000033b2e3cull
}}, // 10^27
1047 {{0x3e25026110000000ull
, 0x00000000204fce5eull
}}, // 10^28
1048 {{0x3e25026110000000ull
, 0x00000000204fce5eull
}}, // 10^28
1049 {{0x3e25026110000000ull
, 0x00000000204fce5eull
}}, // 10^28
1050 {{0x3e25026110000000ull
, 0x00000000204fce5eull
}}, // 10^28
1051 {{0x6d7217caa0000000ull
, 0x00000001431e0faeull
}}, // 10^29
1052 {{0x6d7217caa0000000ull
, 0x00000001431e0faeull
}}, // 10^29
1053 {{0x6d7217caa0000000ull
, 0x00000001431e0faeull
}}, // 10^29
1054 {{0x4674edea40000000ull
, 0x0000000c9f2c9cd0ull
}}, // 10^30
1055 {{0x4674edea40000000ull
, 0x0000000c9f2c9cd0ull
}}, // 10^30
1056 {{0x4674edea40000000ull
, 0x0000000c9f2c9cd0ull
}}, // 10^30
1057 {{0xc0914b2680000000ull
, 0x0000007e37be2022ull
}}, // 10^31
1058 {{0xc0914b2680000000ull
, 0x0000007e37be2022ull
}}, // 10^31
1059 {{0xc0914b2680000000ull
, 0x0000007e37be2022ull
}}, // 10^31
1060 {{0x85acef8100000000ull
, 0x000004ee2d6d415bull
}}, // 10^32
1061 {{0x85acef8100000000ull
, 0x000004ee2d6d415bull
}}, // 10^32
1062 {{0x85acef8100000000ull
, 0x000004ee2d6d415bull
}}, // 10^32
1063 {{0x85acef8100000000ull
, 0x000004ee2d6d415bull
}}, // 10^32
1064 {{0x38c15b0a00000000ull
, 0x0000314dc6448d93ull
}}, // 10^33
1065 {{0x38c15b0a00000000ull
, 0x0000314dc6448d93ull
}}, // 10^33
1066 {{0x38c15b0a00000000ull
, 0x0000314dc6448d93ull
}}, // 10^33, entry 112
1067 {{0x378d8e6400000000ull
, 0x0001ed09bead87c0ull
}}, // 10^34
1068 {{0x378d8e6400000000ull
, 0x0001ed09bead87c0ull
}}, // 10^34
1069 {{0x378d8e6400000000ull
, 0x0001ed09bead87c0ull
}}, // 10^34
1070 {{0x2b878fe800000000ull
, 0x0013426172c74d82ull
}}, // 10^35
1071 {{0x2b878fe800000000ull
, 0x0013426172c74d82ull
}}, // 10^35
1072 {{0x2b878fe800000000ull
, 0x0013426172c74d82ull
}}, // 10^35
1073 {{0x2b878fe800000000ull
, 0x0013426172c74d82ull
}}, // 10^35
1074 {{0xb34b9f1000000000ull
, 0x00c097ce7bc90715ull
}}, // 10^36
1075 {{0x00f436a000000000ull
, 0x0785ee10d5da46d9ull
}}, // 10^37
1076 {{0x00f436a000000000ull
, 0x0785ee10d5da46d9ull
}}, // 10^37
1077 {{0x00f436a000000000ull
, 0x0785ee10d5da46d9ull
}}, // 10^37
1078 {{0x098a224000000000ull
, 0x4b3b4ca85a86c47aull
}}, // 10^38
1079 {{0x098a224000000000ull
, 0x4b3b4ca85a86c47aull
}}, // 10^38
1080 {{0x098a224000000000ull
, 0x4b3b4ca85a86c47aull
}}, // 10^38
1081 {{0x098a224000000000ull
, 0x4b3b4ca85a86c47aull
}}, // 10^38