1 /* Copyright (C) 2007, 2009 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 3, or (at your option) any later
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
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.
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/>. */
24 static const UINT128 reciprocals10_128[] = {
25 { { 0ull, 0ull } }, /* 0 extra digits */
26 { { 0x3333333333333334ull ,0x3333333333333333ull } }, /* 1 extra digit */
27 { { 0x51eb851eb851eb86ull ,0x051eb851eb851eb8ull } }, /* 2 extra digits */
28 { { 0x3b645a1cac083127ull, 0x0083126e978d4fdfull } }, /* 3 extra digits */
29 { { 0x4af4f0d844d013aaULL, 0x00346dc5d6388659ULL } }, /* 10^(-4) * 2^131 */
30 { { 0x08c3f3e0370cdc88ULL, 0x0029f16b11c6d1e1ULL } }, /* 10^(-5) * 2^134 */
31 { { 0x6d698fe69270b06dULL, 0x00218def416bdb1aULL } }, /* 10^(-6) * 2^137 */
32 { { 0xaf0f4ca41d811a47ULL, 0x0035afe535795e90ULL } }, /* 10^(-7) * 2^141 */
33 { { 0xbf3f70834acdaea0ULL, 0x002af31dc4611873ULL } }, /* 10^(-8) * 2^144 */
34 { { 0x65cc5a02a23e254dULL, 0x00225c17d04dad29ULL } }, /* 10^(-9) * 2^147 */
35 { { 0x6fad5cd10396a214ULL, 0x0036f9bfb3af7b75ULL } }, /* 10^(-10) * 2^151 */
36 { { 0xbfbde3da69454e76ULL, 0x002bfaffc2f2c92aULL } }, /* 10^(-11) * 2^154 */
37 { { 0x32fe4fe1edd10b92ULL, 0x00232f33025bd422ULL } }, /* 10^(-12) * 2^157 */
38 { { 0x84ca19697c81ac1cULL, 0x00384b84d092ed03ULL } }, /* 10^(-13) * 2^161 */
39 { { 0x03d4e1213067bce4ULL, 0x002d09370d425736ULL } }, /* 10^(-14) * 2^164 */
40 { { 0x3643e74dc052fd83ULL, 0x0024075f3dceac2bULL } }, /* 10^(-15) * 2^167 */
41 { { 0x56d30baf9a1e626bULL, 0x0039a5652fb11378ULL } }, /* 10^(-16) * 2^171 */
42 { { 0x12426fbfae7eb522ULL, 0x002e1dea8c8da92dULL } }, /* 10^(-17) * 2^174 */
43 { { 0x41cebfcc8b9890e8ULL, 0x0024e4bba3a48757ULL } }, /* 10^(-18) * 2^177 */
44 { { 0x694acc7a78f41b0dULL, 0x003b07929f6da558ULL } }, /* 10^(-19) * 2^181 */
45 { { 0xbaa23d2ec729af3eULL, 0x002f394219248446ULL } }, /* 10^(-20) * 2^184 */
46 { { 0xfbb4fdbf05baf298ULL, 0x0025c768141d369eULL } }, /* 10^(-21) * 2^187 */
47 { { 0x2c54c931a2c4b759ULL, 0x003c7240202ebdcbULL } }, /* 10^(-22) * 2^191 */
48 { { 0x89dd6dc14f03c5e1ULL, 0x00305b66802564a2ULL } }, /* 10^(-23) * 2^194 */
49 { { 0xd4b1249aa59c9e4eULL, 0x0026af8533511d4eULL } }, /* 10^(-24) * 2^197 */
50 { { 0x544ea0f76f60fd49ULL, 0x003de5a1ebb4fbb1ULL } }, /* 10^(-25) * 2^201 */
51 { { 0x76a54d92bf80caa1ULL, 0x00318481895d9627ULL } }, /* 10^(-26) * 2^204 */
52 { { 0x921dd7a89933d54eULL, 0x00279d346de4781fULL } }, /* 10^(-27) * 2^207 */
53 { { 0x8362f2a75b862215ULL, 0x003f61ed7ca0c032ULL } }, /* 10^(-28) * 2^211 */
54 { { 0xcf825bb91604e811ULL, 0x0032b4bdfd4d668eULL } }, /* 10^(-29) * 2^214 */
55 { { 0x0c684960de6a5341ULL, 0x00289097fdd7853fULL } }, /* 10^(-30) * 2^217 */
56 { { 0x3d203ab3e521dc34ULL, 0x002073accb12d0ffULL } }, /* 10^(-31) * 2^220 */
57 { { 0x2e99f7863b696053ULL, 0x0033ec47ab514e65ULL } }, /* 10^(-32) * 2^224 */
58 { { 0x587b2c6b62bab376ULL, 0x002989d2ef743eb7ULL } }, /* 10^(-33) * 2^227 */
59 { { 0xad2f56bc4efbc2c5ULL, 0x00213b0f25f69892ULL } }, /* 10^(-34) * 2^230 */
60 { { 0x0f2abc9d8c9689d1ull, 0x01a95a5b7f87a0efull } } /* 35 extra digits */
63 static const int recip_scale[] = {
66 129 - 128, /* 1/10^2 */
67 129 - 128, /* 1/10^3 */
100 237 - 128, /* 1/10^35 */
103 static const int short_recip_scale[] = {
120 115 - 64, /* 114 - 64 */
124 static const unsigned long long reciprocals10_64[] = {
125 1ull, /* dummy value for 0 extra digits */
126 0x3333333333333334ull, /* 1 extra digit */
127 0x51eb851eb851eb86ull,
128 0x20c49ba5e353f7cfull,
129 0x346dc5d63886594bull,
130 0x29f16b11c6d1e109ull,
131 0x218def416bdb1a6eull,
132 0x35afe535795e90b0ull,
133 0x2af31dc4611873c0ull,
134 0x225c17d04dad2966ull,
135 0x36f9bfb3af7b7570ull,
136 0x2bfaffc2f2c92ac0ull,
137 0x232f33025bd42233ull,
138 0x384b84d092ed0385ull,
139 0x2d09370d42573604ull,
140 0x24075f3dceac2b37ull,
141 0x39a5652fb1137857ull,
142 0x2e1dea8c8da92d13ull
145 static const UINT64 d2b[] = {
146 0, 1, 2, 3, 4, 5, 6, 7,
147 8, 9, 80, 81, 800, 801, 880, 881,
148 10, 11, 12, 13, 14, 15, 16, 17,
149 18, 19, 90, 91, 810, 811, 890, 891,
150 20, 21, 22, 23, 24, 25, 26, 27,
151 28, 29, 82, 83, 820, 821, 808, 809,
152 30, 31, 32, 33, 34, 35, 36, 37,
153 38, 39, 92, 93, 830, 831, 818, 819,
154 40, 41, 42, 43, 44, 45, 46, 47,
155 48, 49, 84, 85, 840, 841, 88, 89,
156 50, 51, 52, 53, 54, 55, 56, 57,
157 58, 59, 94, 95, 850, 851, 98, 99,
158 60, 61, 62, 63, 64, 65, 66, 67,
159 68, 69, 86, 87, 860, 861, 888, 889,
160 70, 71, 72, 73, 74, 75, 76, 77,
161 78, 79, 96, 97, 870, 871, 898, 899,
162 100, 101, 102, 103, 104, 105, 106, 107,
163 108, 109, 180, 181, 900, 901, 980, 981,
164 110, 111, 112, 113, 114, 115, 116, 117,
165 118, 119, 190, 191, 910, 911, 990, 991,
166 120, 121, 122, 123, 124, 125, 126, 127,
167 128, 129, 182, 183, 920, 921, 908, 909,
168 130, 131, 132, 133, 134, 135, 136, 137,
169 138, 139, 192, 193, 930, 931, 918, 919,
170 140, 141, 142, 143, 144, 145, 146, 147,
171 148, 149, 184, 185, 940, 941, 188, 189,
172 150, 151, 152, 153, 154, 155, 156, 157,
173 158, 159, 194, 195, 950, 951, 198, 199,
174 160, 161, 162, 163, 164, 165, 166, 167,
175 168, 169, 186, 187, 960, 961, 988, 989,
176 170, 171, 172, 173, 174, 175, 176, 177,
177 178, 179, 196, 197, 970, 971, 998, 999,
178 200, 201, 202, 203, 204, 205, 206, 207,
179 208, 209, 280, 281, 802, 803, 882, 883,
180 210, 211, 212, 213, 214, 215, 216, 217,
181 218, 219, 290, 291, 812, 813, 892, 893,
182 220, 221, 222, 223, 224, 225, 226, 227,
183 228, 229, 282, 283, 822, 823, 828, 829,
184 230, 231, 232, 233, 234, 235, 236, 237,
185 238, 239, 292, 293, 832, 833, 838, 839,
186 240, 241, 242, 243, 244, 245, 246, 247,
187 248, 249, 284, 285, 842, 843, 288, 289,
188 250, 251, 252, 253, 254, 255, 256, 257,
189 258, 259, 294, 295, 852, 853, 298, 299,
190 260, 261, 262, 263, 264, 265, 266, 267,
191 268, 269, 286, 287, 862, 863, 888, 889,
192 270, 271, 272, 273, 274, 275, 276, 277,
193 278, 279, 296, 297, 872, 873, 898, 899,
194 300, 301, 302, 303, 304, 305, 306, 307,
195 308, 309, 380, 381, 902, 903, 982, 983,
196 310, 311, 312, 313, 314, 315, 316, 317,
197 318, 319, 390, 391, 912, 913, 992, 993,
198 320, 321, 322, 323, 324, 325, 326, 327,
199 328, 329, 382, 383, 922, 923, 928, 929,
200 330, 331, 332, 333, 334, 335, 336, 337,
201 338, 339, 392, 393, 932, 933, 938, 939,
202 340, 341, 342, 343, 344, 345, 346, 347,
203 348, 349, 384, 385, 942, 943, 388, 389,
204 350, 351, 352, 353, 354, 355, 356, 357,
205 358, 359, 394, 395, 952, 953, 398, 399,
206 360, 361, 362, 363, 364, 365, 366, 367,
207 368, 369, 386, 387, 962, 963, 988, 989,
208 370, 371, 372, 373, 374, 375, 376, 377,
209 378, 379, 396, 397, 972, 973, 998, 999,
210 400, 401, 402, 403, 404, 405, 406, 407,
211 408, 409, 480, 481, 804, 805, 884, 885,
212 410, 411, 412, 413, 414, 415, 416, 417,
213 418, 419, 490, 491, 814, 815, 894, 895,
214 420, 421, 422, 423, 424, 425, 426, 427,
215 428, 429, 482, 483, 824, 825, 848, 849,
216 430, 431, 432, 433, 434, 435, 436, 437,
217 438, 439, 492, 493, 834, 835, 858, 859,
218 440, 441, 442, 443, 444, 445, 446, 447,
219 448, 449, 484, 485, 844, 845, 488, 489,
220 450, 451, 452, 453, 454, 455, 456, 457,
221 458, 459, 494, 495, 854, 855, 498, 499,
222 460, 461, 462, 463, 464, 465, 466, 467,
223 468, 469, 486, 487, 864, 865, 888, 889,
224 470, 471, 472, 473, 474, 475, 476, 477,
225 478, 479, 496, 497, 874, 875, 898, 899,
226 500, 501, 502, 503, 504, 505, 506, 507,
227 508, 509, 580, 581, 904, 905, 984, 985,
228 510, 511, 512, 513, 514, 515, 516, 517,
229 518, 519, 590, 591, 914, 915, 994, 995,
230 520, 521, 522, 523, 524, 525, 526, 527,
231 528, 529, 582, 583, 924, 925, 948, 949,
232 530, 531, 532, 533, 534, 535, 536, 537,
233 538, 539, 592, 593, 934, 935, 958, 959,
234 540, 541, 542, 543, 544, 545, 546, 547,
235 548, 549, 584, 585, 944, 945, 588, 589,
236 550, 551, 552, 553, 554, 555, 556, 557,
237 558, 559, 594, 595, 954, 955, 598, 599,
238 560, 561, 562, 563, 564, 565, 566, 567,
239 568, 569, 586, 587, 964, 965, 988, 989,
240 570, 571, 572, 573, 574, 575, 576, 577,
241 578, 579, 596, 597, 974, 975, 998, 999,
242 600, 601, 602, 603, 604, 605, 606, 607,
243 608, 609, 680, 681, 806, 807, 886, 887,
244 610, 611, 612, 613, 614, 615, 616, 617,
245 618, 619, 690, 691, 816, 817, 896, 897,
246 620, 621, 622, 623, 624, 625, 626, 627,
247 628, 629, 682, 683, 826, 827, 868, 869,
248 630, 631, 632, 633, 634, 635, 636, 637,
249 638, 639, 692, 693, 836, 837, 878, 879,
250 640, 641, 642, 643, 644, 645, 646, 647,
251 648, 649, 684, 685, 846, 847, 688, 689,
252 650, 651, 652, 653, 654, 655, 656, 657,
253 658, 659, 694, 695, 856, 857, 698, 699,
254 660, 661, 662, 663, 664, 665, 666, 667,
255 668, 669, 686, 687, 866, 867, 888, 889,
256 670, 671, 672, 673, 674, 675, 676, 677,
257 678, 679, 696, 697, 876, 877, 898, 899,
258 700, 701, 702, 703, 704, 705, 706, 707,
259 708, 709, 780, 781, 906, 907, 986, 987,
260 710, 711, 712, 713, 714, 715, 716, 717,
261 718, 719, 790, 791, 916, 917, 996, 997,
262 720, 721, 722, 723, 724, 725, 726, 727,
263 728, 729, 782, 783, 926, 927, 968, 969,
264 730, 731, 732, 733, 734, 735, 736, 737,
265 738, 739, 792, 793, 936, 937, 978, 979,
266 740, 741, 742, 743, 744, 745, 746, 747,
267 748, 749, 784, 785, 946, 947, 788, 789,
268 750, 751, 752, 753, 754, 755, 756, 757,
269 758, 759, 794, 795, 956, 957, 798, 799,
270 760, 761, 762, 763, 764, 765, 766, 767,
271 768, 769, 786, 787, 966, 967, 988, 989,
272 770, 771, 772, 773, 774, 775, 776, 777,
273 778, 779, 796, 797, 976, 977, 998, 999 };
275 static const UINT64 d2b2[] = {
276 0000ull, 1000ull, 2000ull, 3000ull,
277 4000ull, 5000ull, 6000ull, 7000ull,
278 8000ull, 9000ull, 80000ull, 81000ull,
279 800000ull, 801000ull, 880000ull, 881000ull,
280 10000ull, 11000ull, 12000ull, 13000ull,
281 14000ull, 15000ull, 16000ull, 17000ull,
282 18000ull, 19000ull, 90000ull, 91000ull,
283 810000ull, 811000ull, 890000ull, 891000ull,
284 20000ull, 21000ull, 22000ull, 23000ull,
285 24000ull, 25000ull, 26000ull, 27000ull,
286 28000ull, 29000ull, 82000ull, 83000ull,
287 820000ull, 821000ull, 808000ull, 809000ull,
288 30000ull, 31000ull, 32000ull, 33000ull,
289 34000ull, 35000ull, 36000ull, 37000ull,
290 38000ull, 39000ull, 92000ull, 93000ull,
291 830000ull, 831000ull, 818000ull, 819000ull,
292 40000ull, 41000ull, 42000ull, 43000ull,
293 44000ull, 45000ull, 46000ull, 47000ull,
294 48000ull, 49000ull, 84000ull, 85000ull,
295 840000ull, 841000ull, 88000ull, 89000ull,
296 50000ull, 51000ull, 52000ull, 53000ull,
297 54000ull, 55000ull, 56000ull, 57000ull,
298 58000ull, 59000ull, 94000ull, 95000ull,
299 850000ull, 851000ull, 98000ull, 99000ull,
300 60000ull, 61000ull, 62000ull, 63000ull,
301 64000ull, 65000ull, 66000ull, 67000ull,
302 68000ull, 69000ull, 86000ull, 87000ull,
303 860000ull, 861000ull, 888000ull, 889000ull,
304 70000ull, 71000ull, 72000ull, 73000ull,
305 74000ull, 75000ull, 76000ull, 77000ull,
306 78000ull, 79000ull, 96000ull, 97000ull,
307 870000ull, 871000ull, 898000ull, 899000ull,
308 100000ull, 101000ull, 102000ull, 103000ull,
309 104000ull, 105000ull, 106000ull, 107000ull,
310 108000ull, 109000ull, 180000ull, 181000ull,
311 900000ull, 901000ull, 980000ull, 981000ull,
312 110000ull, 111000ull, 112000ull, 113000ull,
313 114000ull, 115000ull, 116000ull, 117000ull,
314 118000ull, 119000ull, 190000ull, 191000ull,
315 910000ull, 911000ull, 990000ull, 991000ull,
316 120000ull, 121000ull, 122000ull, 123000ull,
317 124000ull, 125000ull, 126000ull, 127000ull,
318 128000ull, 129000ull, 182000ull, 183000ull,
319 920000ull, 921000ull, 908000ull, 909000ull,
320 130000ull, 131000ull, 132000ull, 133000ull,
321 134000ull, 135000ull, 136000ull, 137000ull,
322 138000ull, 139000ull, 192000ull, 193000ull,
323 930000ull, 931000ull, 918000ull, 919000ull,
324 140000ull, 141000ull, 142000ull, 143000ull,
325 144000ull, 145000ull, 146000ull, 147000ull,
326 148000ull, 149000ull, 184000ull, 185000ull,
327 940000ull, 941000ull, 188000ull, 189000ull,
328 150000ull, 151000ull, 152000ull, 153000ull,
329 154000ull, 155000ull, 156000ull, 157000ull,
330 158000ull, 159000ull, 194000ull, 195000ull,
331 950000ull, 951000ull, 198000ull, 199000ull,
332 160000ull, 161000ull, 162000ull, 163000ull,
333 164000ull, 165000ull, 166000ull, 167000ull,
334 168000ull, 169000ull, 186000ull, 187000ull,
335 960000ull, 961000ull, 988000ull, 989000ull,
336 170000ull, 171000ull, 172000ull, 173000ull,
337 174000ull, 175000ull, 176000ull, 177000ull,
338 178000ull, 179000ull, 196000ull, 197000ull,
339 970000ull, 971000ull, 998000ull, 999000ull,
340 200000ull, 201000ull, 202000ull, 203000ull,
341 204000ull, 205000ull, 206000ull, 207000ull,
342 208000ull, 209000ull, 280000ull, 281000ull,
343 802000ull, 803000ull, 882000ull, 883000ull,
344 210000ull, 211000ull, 212000ull, 213000ull,
345 214000ull, 215000ull, 216000ull, 217000ull,
346 218000ull, 219000ull, 290000ull, 291000ull,
347 812000ull, 813000ull, 892000ull, 893000ull,
348 220000ull, 221000ull, 222000ull, 223000ull,
349 224000ull, 225000ull, 226000ull, 227000ull,
350 228000ull, 229000ull, 282000ull, 283000ull,
351 822000ull, 823000ull, 828000ull, 829000ull,
352 230000ull, 231000ull, 232000ull, 233000ull,
353 234000ull, 235000ull, 236000ull, 237000ull,
354 238000ull, 239000ull, 292000ull, 293000ull,
355 832000ull, 833000ull, 838000ull, 839000ull,
356 240000ull, 241000ull, 242000ull, 243000ull,
357 244000ull, 245000ull, 246000ull, 247000ull,
358 248000ull, 249000ull, 284000ull, 285000ull,
359 842000ull, 843000ull, 288000ull, 289000ull,
360 250000ull, 251000ull, 252000ull, 253000ull,
361 254000ull, 255000ull, 256000ull, 257000ull,
362 258000ull, 259000ull, 294000ull, 295000ull,
363 852000ull, 853000ull, 298000ull, 299000ull,
364 260000ull, 261000ull, 262000ull, 263000ull,
365 264000ull, 265000ull, 266000ull, 267000ull,
366 268000ull, 269000ull, 286000ull, 287000ull,
367 862000ull, 863000ull, 888000ull, 889000ull,
368 270000ull, 271000ull, 272000ull, 273000ull,
369 274000ull, 275000ull, 276000ull, 277000ull,
370 278000ull, 279000ull, 296000ull, 297000ull,
371 872000ull, 873000ull, 898000ull, 899000ull,
372 300000ull, 301000ull, 302000ull, 303000ull,
373 304000ull, 305000ull, 306000ull, 307000ull,
374 308000ull, 309000ull, 380000ull, 381000ull,
375 902000ull, 903000ull, 982000ull, 983000ull,
376 310000ull, 311000ull, 312000ull, 313000ull,
377 314000ull, 315000ull, 316000ull, 317000ull,
378 318000ull, 319000ull, 390000ull, 391000ull,
379 912000ull, 913000ull, 992000ull, 993000ull,
380 320000ull, 321000ull, 322000ull, 323000ull,
381 324000ull, 325000ull, 326000ull, 327000ull,
382 328000ull, 329000ull, 382000ull, 383000ull,
383 922000ull, 923000ull, 928000ull, 929000ull,
384 330000ull, 331000ull, 332000ull, 333000ull,
385 334000ull, 335000ull, 336000ull, 337000ull,
386 338000ull, 339000ull, 392000ull, 393000ull,
387 932000ull, 933000ull, 938000ull, 939000ull,
388 340000ull, 341000ull, 342000ull, 343000ull,
389 344000ull, 345000ull, 346000ull, 347000ull,
390 348000ull, 349000ull, 384000ull, 385000ull,
391 942000ull, 943000ull, 388000ull, 389000ull,
392 350000ull, 351000ull, 352000ull, 353000ull,
393 354000ull, 355000ull, 356000ull, 357000ull,
394 358000ull, 359000ull, 394000ull, 395000ull,
395 952000ull, 953000ull, 398000ull, 399000ull,
396 360000ull, 361000ull, 362000ull, 363000ull,
397 364000ull, 365000ull, 366000ull, 367000ull,
398 368000ull, 369000ull, 386000ull, 387000ull,
399 962000ull, 963000ull, 988000ull, 989000ull,
400 370000ull, 371000ull, 372000ull, 373000ull,
401 374000ull, 375000ull, 376000ull, 377000ull,
402 378000ull, 379000ull, 396000ull, 397000ull,
403 972000ull, 973000ull, 998000ull, 999000ull,
404 400000ull, 401000ull, 402000ull, 403000ull,
405 404000ull, 405000ull, 406000ull, 407000ull,
406 408000ull, 409000ull, 480000ull, 481000ull,
407 804000ull, 805000ull, 884000ull, 885000ull,
408 410000ull, 411000ull, 412000ull, 413000ull,
409 414000ull, 415000ull, 416000ull, 417000ull,
410 418000ull, 419000ull, 490000ull, 491000ull,
411 814000ull, 815000ull, 894000ull, 895000ull,
412 420000ull, 421000ull, 422000ull, 423000ull,
413 424000ull, 425000ull, 426000ull, 427000ull,
414 428000ull, 429000ull, 482000ull, 483000ull,
415 824000ull, 825000ull, 848000ull, 849000ull,
416 430000ull, 431000ull, 432000ull, 433000ull,
417 434000ull, 435000ull, 436000ull, 437000ull,
418 438000ull, 439000ull, 492000ull, 493000ull,
419 834000ull, 835000ull, 858000ull, 859000ull,
420 440000ull, 441000ull, 442000ull, 443000ull,
421 444000ull, 445000ull, 446000ull, 447000ull,
422 448000ull, 449000ull, 484000ull, 485000ull,
423 844000ull, 845000ull, 488000ull, 489000ull,
424 450000ull, 451000ull, 452000ull, 453000ull,
425 454000ull, 455000ull, 456000ull, 457000ull,
426 458000ull, 459000ull, 494000ull, 495000ull,
427 854000ull, 855000ull, 498000ull, 499000ull,
428 460000ull, 461000ull, 462000ull, 463000ull,
429 464000ull, 465000ull, 466000ull, 467000ull,
430 468000ull, 469000ull, 486000ull, 487000ull,
431 864000ull, 865000ull, 888000ull, 889000ull,
432 470000ull, 471000ull, 472000ull, 473000ull,
433 474000ull, 475000ull, 476000ull, 477000ull,
434 478000ull, 479000ull, 496000ull, 497000ull,
435 874000ull, 875000ull, 898000ull, 899000ull,
436 500000ull, 501000ull, 502000ull, 503000ull,
437 504000ull, 505000ull, 506000ull, 507000ull,
438 508000ull, 509000ull, 580000ull, 581000ull,
439 904000ull, 905000ull, 984000ull, 985000ull,
440 510000ull, 511000ull, 512000ull, 513000ull,
441 514000ull, 515000ull, 516000ull, 517000ull,
442 518000ull, 519000ull, 590000ull, 591000ull,
443 914000ull, 915000ull, 994000ull, 995000ull,
444 520000ull, 521000ull, 522000ull, 523000ull,
445 524000ull, 525000ull, 526000ull, 527000ull,
446 528000ull, 529000ull, 582000ull, 583000ull,
447 924000ull, 925000ull, 948000ull, 949000ull,
448 530000ull, 531000ull, 532000ull, 533000ull,
449 534000ull, 535000ull, 536000ull, 537000ull,
450 538000ull, 539000ull, 592000ull, 593000ull,
451 934000ull, 935000ull, 958000ull, 959000ull,
452 540000ull, 541000ull, 542000ull, 543000ull,
453 544000ull, 545000ull, 546000ull, 547000ull,
454 548000ull, 549000ull, 584000ull, 585000ull,
455 944000ull, 945000ull, 588000ull, 589000ull,
456 550000ull, 551000ull, 552000ull, 553000ull,
457 554000ull, 555000ull, 556000ull, 557000ull,
458 558000ull, 559000ull, 594000ull, 595000ull,
459 954000ull, 955000ull, 598000ull, 599000ull,
460 560000ull, 561000ull, 562000ull, 563000ull,
461 564000ull, 565000ull, 566000ull, 567000ull,
462 568000ull, 569000ull, 586000ull, 587000ull,
463 964000ull, 965000ull, 988000ull, 989000ull,
464 570000ull, 571000ull, 572000ull, 573000ull,
465 574000ull, 575000ull, 576000ull, 577000ull,
466 578000ull, 579000ull, 596000ull, 597000ull,
467 974000ull, 975000ull, 998000ull, 999000ull,
468 600000ull, 601000ull, 602000ull, 603000ull,
469 604000ull, 605000ull, 606000ull, 607000ull,
470 608000ull, 609000ull, 680000ull, 681000ull,
471 806000ull, 807000ull, 886000ull, 887000ull,
472 610000ull, 611000ull, 612000ull, 613000ull,
473 614000ull, 615000ull, 616000ull, 617000ull,
474 618000ull, 619000ull, 690000ull, 691000ull,
475 816000ull, 817000ull, 896000ull, 897000ull,
476 620000ull, 621000ull, 622000ull, 623000ull,
477 624000ull, 625000ull, 626000ull, 627000ull,
478 628000ull, 629000ull, 682000ull, 683000ull,
479 826000ull, 827000ull, 868000ull, 869000ull,
480 630000ull, 631000ull, 632000ull, 633000ull,
481 634000ull, 635000ull, 636000ull, 637000ull,
482 638000ull, 639000ull, 692000ull, 693000ull,
483 836000ull, 837000ull, 878000ull, 879000ull,
484 640000ull, 641000ull, 642000ull, 643000ull,
485 644000ull, 645000ull, 646000ull, 647000ull,
486 648000ull, 649000ull, 684000ull, 685000ull,
487 846000ull, 847000ull, 688000ull, 689000ull,
488 650000ull, 651000ull, 652000ull, 653000ull,
489 654000ull, 655000ull, 656000ull, 657000ull,
490 658000ull, 659000ull, 694000ull, 695000ull,
491 856000ull, 857000ull, 698000ull, 699000ull,
492 660000ull, 661000ull, 662000ull, 663000ull,
493 664000ull, 665000ull, 666000ull, 667000ull,
494 668000ull, 669000ull, 686000ull, 687000ull,
495 866000ull, 867000ull, 888000ull, 889000ull,
496 670000ull, 671000ull, 672000ull, 673000ull,
497 674000ull, 675000ull, 676000ull, 677000ull,
498 678000ull, 679000ull, 696000ull, 697000ull,
499 876000ull, 877000ull, 898000ull, 899000ull,
500 700000ull, 701000ull, 702000ull, 703000ull,
501 704000ull, 705000ull, 706000ull, 707000ull,
502 708000ull, 709000ull, 780000ull, 781000ull,
503 906000ull, 907000ull, 986000ull, 987000ull,
504 710000ull, 711000ull, 712000ull, 713000ull,
505 714000ull, 715000ull, 716000ull, 717000ull,
506 718000ull, 719000ull, 790000ull, 791000ull,
507 916000ull, 917000ull, 996000ull, 997000ull,
508 720000ull, 721000ull, 722000ull, 723000ull,
509 724000ull, 725000ull, 726000ull, 727000ull,
510 728000ull, 729000ull, 782000ull, 783000ull,
511 926000ull, 927000ull, 968000ull, 969000ull,
512 730000ull, 731000ull, 732000ull, 733000ull,
513 734000ull, 735000ull, 736000ull, 737000ull,
514 738000ull, 739000ull, 792000ull, 793000ull,
515 936000ull, 937000ull, 978000ull, 979000ull,
516 740000ull, 741000ull, 742000ull, 743000ull,
517 744000ull, 745000ull, 746000ull, 747000ull,
518 748000ull, 749000ull, 784000ull, 785000ull,
519 946000ull, 947000ull, 788000ull, 789000ull,
520 750000ull, 751000ull, 752000ull, 753000ull,
521 754000ull, 755000ull, 756000ull, 757000ull,
522 758000ull, 759000ull, 794000ull, 795000ull,
523 956000ull, 957000ull, 798000ull, 799000ull,
524 760000ull, 761000ull, 762000ull, 763000ull,
525 764000ull, 765000ull, 766000ull, 767000ull,
526 768000ull, 769000ull, 786000ull, 787000ull,
527 966000ull, 967000ull, 988000ull, 989000ull,
528 770000ull, 771000ull, 772000ull, 773000ull,
529 774000ull, 775000ull, 776000ull, 777000ull,
530 778000ull, 779000ull, 796000ull, 797000ull,
531 976000ull, 977000ull, 998000ull, 999000ull
534 static const UINT64 d2b3[] = {
1623 static const UINT64 d2b4[] = {
2713 static const UINT64 d2b5[] = {
3803 static const UINT64 d2b6[] = {
3804 0000000000000000ull,
3805 1000000000000000ull,
3806 2000000000000000ull,
3807 3000000000000000ull,
3808 4000000000000000ull,
3809 5000000000000000ull,
3810 6000000000000000ull,
3811 7000000000000000ull,
3812 8000000000000000ull,
3813 9000000000000000ull,
3814 80000000000000000ull,
3815 81000000000000000ull,
3816 800000000000000000ull,
3817 801000000000000000ull,
3818 880000000000000000ull,
3819 881000000000000000ull,
3821 10000000000000000ull,
3822 11000000000000000ull,
3823 12000000000000000ull,
3824 13000000000000000ull,
3825 14000000000000000ull,
3826 15000000000000000ull,
3827 16000000000000000ull,
3828 17000000000000000ull,
3829 18000000000000000ull,
3830 19000000000000000ull,
3831 90000000000000000ull,
3832 91000000000000000ull,
3833 810000000000000000ull,
3834 811000000000000000ull,
3835 890000000000000000ull,
3836 891000000000000000ull,
3838 20000000000000000ull,
3839 21000000000000000ull,
3840 22000000000000000ull,
3841 23000000000000000ull,
3842 24000000000000000ull,
3843 25000000000000000ull,
3844 26000000000000000ull,
3845 27000000000000000ull,
3846 28000000000000000ull,
3847 29000000000000000ull,
3848 82000000000000000ull,
3849 83000000000000000ull,
3850 820000000000000000ull,
3851 821000000000000000ull,
3852 808000000000000000ull,
3853 809000000000000000ull,
3855 30000000000000000ull,
3856 31000000000000000ull,
3857 32000000000000000ull,
3858 33000000000000000ull,
3859 34000000000000000ull,
3860 35000000000000000ull,
3861 36000000000000000ull,
3862 37000000000000000ull,
3863 38000000000000000ull,
3864 39000000000000000ull,
3865 92000000000000000ull,
3866 93000000000000000ull,
3867 830000000000000000ull,
3868 831000000000000000ull,
3869 818000000000000000ull,
3870 819000000000000000ull,
3872 40000000000000000ull,
3873 41000000000000000ull,
3874 42000000000000000ull,
3875 43000000000000000ull,
3876 44000000000000000ull,
3877 45000000000000000ull,
3878 46000000000000000ull,
3879 47000000000000000ull,
3880 48000000000000000ull,
3881 49000000000000000ull,
3882 84000000000000000ull,
3883 85000000000000000ull,
3884 840000000000000000ull,
3885 841000000000000000ull,
3886 88000000000000000ull,
3887 89000000000000000ull,
3889 50000000000000000ull,
3890 51000000000000000ull,
3891 52000000000000000ull,
3892 53000000000000000ull,
3893 54000000000000000ull,
3894 55000000000000000ull,
3895 56000000000000000ull,
3896 57000000000000000ull,
3897 58000000000000000ull,
3898 59000000000000000ull,
3899 94000000000000000ull,
3900 95000000000000000ull,
3901 850000000000000000ull,
3902 851000000000000000ull,
3903 98000000000000000ull,
3904 99000000000000000ull,
3906 60000000000000000ull,
3907 61000000000000000ull,
3908 62000000000000000ull,
3909 63000000000000000ull,
3910 64000000000000000ull,
3911 65000000000000000ull,
3912 66000000000000000ull,
3913 67000000000000000ull,
3914 68000000000000000ull,
3915 69000000000000000ull,
3916 86000000000000000ull,
3917 87000000000000000ull,
3918 860000000000000000ull,
3919 861000000000000000ull,
3920 888000000000000000ull,
3921 889000000000000000ull,
3923 70000000000000000ull,
3924 71000000000000000ull,
3925 72000000000000000ull,
3926 73000000000000000ull,
3927 74000000000000000ull,
3928 75000000000000000ull,
3929 76000000000000000ull,
3930 77000000000000000ull,
3931 78000000000000000ull,
3932 79000000000000000ull,
3933 96000000000000000ull,
3934 97000000000000000ull,
3935 870000000000000000ull,
3936 871000000000000000ull,
3937 898000000000000000ull,
3938 899000000000000000ull,
3940 100000000000000000ull,
3941 101000000000000000ull,
3942 102000000000000000ull,
3943 103000000000000000ull,
3944 104000000000000000ull,
3945 105000000000000000ull,
3946 106000000000000000ull,
3947 107000000000000000ull,
3948 108000000000000000ull,
3949 109000000000000000ull,
3950 180000000000000000ull,
3951 181000000000000000ull,
3952 900000000000000000ull,
3953 901000000000000000ull,
3954 980000000000000000ull,
3955 981000000000000000ull,
3957 110000000000000000ull,
3958 111000000000000000ull,
3959 112000000000000000ull,
3960 113000000000000000ull,
3961 114000000000000000ull,
3962 115000000000000000ull,
3963 116000000000000000ull,
3964 117000000000000000ull,
3965 118000000000000000ull,
3966 119000000000000000ull,
3967 190000000000000000ull,
3968 191000000000000000ull,
3969 910000000000000000ull,
3970 911000000000000000ull,
3971 990000000000000000ull,
3972 991000000000000000ull,
3974 120000000000000000ull,
3975 121000000000000000ull,
3976 122000000000000000ull,
3977 123000000000000000ull,
3978 124000000000000000ull,
3979 125000000000000000ull,
3980 126000000000000000ull,
3981 127000000000000000ull,
3982 128000000000000000ull,
3983 129000000000000000ull,
3984 182000000000000000ull,
3985 183000000000000000ull,
3986 920000000000000000ull,
3987 921000000000000000ull,
3988 908000000000000000ull,
3989 909000000000000000ull,
3991 130000000000000000ull,
3992 131000000000000000ull,
3993 132000000000000000ull,
3994 133000000000000000ull,
3995 134000000000000000ull,
3996 135000000000000000ull,
3997 136000000000000000ull,
3998 137000000000000000ull,
3999 138000000000000000ull,
4000 139000000000000000ull,
4001 192000000000000000ull,
4002 193000000000000000ull,
4003 930000000000000000ull,
4004 931000000000000000ull,
4005 918000000000000000ull,
4006 919000000000000000ull,
4008 140000000000000000ull,
4009 141000000000000000ull,
4010 142000000000000000ull,
4011 143000000000000000ull,
4012 144000000000000000ull,
4013 145000000000000000ull,
4014 146000000000000000ull,
4015 147000000000000000ull,
4016 148000000000000000ull,
4017 149000000000000000ull,
4018 184000000000000000ull,
4019 185000000000000000ull,
4020 940000000000000000ull,
4021 941000000000000000ull,
4022 188000000000000000ull,
4023 189000000000000000ull,
4025 150000000000000000ull,
4026 151000000000000000ull,
4027 152000000000000000ull,
4028 153000000000000000ull,
4029 154000000000000000ull,
4030 155000000000000000ull,
4031 156000000000000000ull,
4032 157000000000000000ull,
4033 158000000000000000ull,
4034 159000000000000000ull,
4035 194000000000000000ull,
4036 195000000000000000ull,
4037 950000000000000000ull,
4038 951000000000000000ull,
4039 198000000000000000ull,
4040 199000000000000000ull,
4042 160000000000000000ull,
4043 161000000000000000ull,
4044 162000000000000000ull,
4045 163000000000000000ull,
4046 164000000000000000ull,
4047 165000000000000000ull,
4048 166000000000000000ull,
4049 167000000000000000ull,
4050 168000000000000000ull,
4051 169000000000000000ull,
4052 186000000000000000ull,
4053 187000000000000000ull,
4054 960000000000000000ull,
4055 961000000000000000ull,
4056 988000000000000000ull,
4057 989000000000000000ull,
4059 170000000000000000ull,
4060 171000000000000000ull,
4061 172000000000000000ull,
4062 173000000000000000ull,
4063 174000000000000000ull,
4064 175000000000000000ull,
4065 176000000000000000ull,
4066 177000000000000000ull,
4067 178000000000000000ull,
4068 179000000000000000ull,
4069 196000000000000000ull,
4070 197000000000000000ull,
4071 970000000000000000ull,
4072 971000000000000000ull,
4073 998000000000000000ull,
4074 999000000000000000ull,
4076 200000000000000000ull,
4077 201000000000000000ull,
4078 202000000000000000ull,
4079 203000000000000000ull,
4080 204000000000000000ull,
4081 205000000000000000ull,
4082 206000000000000000ull,
4083 207000000000000000ull,
4084 208000000000000000ull,
4085 209000000000000000ull,
4086 280000000000000000ull,
4087 281000000000000000ull,
4088 802000000000000000ull,
4089 803000000000000000ull,
4090 882000000000000000ull,
4091 883000000000000000ull,
4093 210000000000000000ull,
4094 211000000000000000ull,
4095 212000000000000000ull,
4096 213000000000000000ull,
4097 214000000000000000ull,
4098 215000000000000000ull,
4099 216000000000000000ull,
4100 217000000000000000ull,
4101 218000000000000000ull,
4102 219000000000000000ull,
4103 290000000000000000ull,
4104 291000000000000000ull,
4105 812000000000000000ull,
4106 813000000000000000ull,
4107 892000000000000000ull,
4108 893000000000000000ull,
4110 220000000000000000ull,
4111 221000000000000000ull,
4112 222000000000000000ull,
4113 223000000000000000ull,
4114 224000000000000000ull,
4115 225000000000000000ull,
4116 226000000000000000ull,
4117 227000000000000000ull,
4118 228000000000000000ull,
4119 229000000000000000ull,
4120 282000000000000000ull,
4121 283000000000000000ull,
4122 822000000000000000ull,
4123 823000000000000000ull,
4124 828000000000000000ull,
4125 829000000000000000ull,
4127 230000000000000000ull,
4128 231000000000000000ull,
4129 232000000000000000ull,
4130 233000000000000000ull,
4131 234000000000000000ull,
4132 235000000000000000ull,
4133 236000000000000000ull,
4134 237000000000000000ull,
4135 238000000000000000ull,
4136 239000000000000000ull,
4137 292000000000000000ull,
4138 293000000000000000ull,
4139 832000000000000000ull,
4140 833000000000000000ull,
4141 838000000000000000ull,
4142 839000000000000000ull,
4144 240000000000000000ull,
4145 241000000000000000ull,
4146 242000000000000000ull,
4147 243000000000000000ull,
4148 244000000000000000ull,
4149 245000000000000000ull,
4150 246000000000000000ull,
4151 247000000000000000ull,
4152 248000000000000000ull,
4153 249000000000000000ull,
4154 284000000000000000ull,
4155 285000000000000000ull,
4156 842000000000000000ull,
4157 843000000000000000ull,
4158 288000000000000000ull,
4159 289000000000000000ull,
4161 250000000000000000ull,
4162 251000000000000000ull,
4163 252000000000000000ull,
4164 253000000000000000ull,
4165 254000000000000000ull,
4166 255000000000000000ull,
4167 256000000000000000ull,
4168 257000000000000000ull,
4169 258000000000000000ull,
4170 259000000000000000ull,
4171 294000000000000000ull,
4172 295000000000000000ull,
4173 852000000000000000ull,
4174 853000000000000000ull,
4175 298000000000000000ull,
4176 299000000000000000ull,
4178 260000000000000000ull,
4179 261000000000000000ull,
4180 262000000000000000ull,
4181 263000000000000000ull,
4182 264000000000000000ull,
4183 265000000000000000ull,
4184 266000000000000000ull,
4185 267000000000000000ull,
4186 268000000000000000ull,
4187 269000000000000000ull,
4188 286000000000000000ull,
4189 287000000000000000ull,
4190 862000000000000000ull,
4191 863000000000000000ull,
4192 888000000000000000ull,
4193 889000000000000000ull,
4195 270000000000000000ull,
4196 271000000000000000ull,
4197 272000000000000000ull,
4198 273000000000000000ull,
4199 274000000000000000ull,
4200 275000000000000000ull,
4201 276000000000000000ull,
4202 277000000000000000ull,
4203 278000000000000000ull,
4204 279000000000000000ull,
4205 296000000000000000ull,
4206 297000000000000000ull,
4207 872000000000000000ull,
4208 873000000000000000ull,
4209 898000000000000000ull,
4210 899000000000000000ull,
4212 300000000000000000ull,
4213 301000000000000000ull,
4214 302000000000000000ull,
4215 303000000000000000ull,
4216 304000000000000000ull,
4217 305000000000000000ull,
4218 306000000000000000ull,
4219 307000000000000000ull,
4220 308000000000000000ull,
4221 309000000000000000ull,
4222 380000000000000000ull,
4223 381000000000000000ull,
4224 902000000000000000ull,
4225 903000000000000000ull,
4226 982000000000000000ull,
4227 983000000000000000ull,
4229 310000000000000000ull,
4230 311000000000000000ull,
4231 312000000000000000ull,
4232 313000000000000000ull,
4233 314000000000000000ull,
4234 315000000000000000ull,
4235 316000000000000000ull,
4236 317000000000000000ull,
4237 318000000000000000ull,
4238 319000000000000000ull,
4239 390000000000000000ull,
4240 391000000000000000ull,
4241 912000000000000000ull,
4242 913000000000000000ull,
4243 992000000000000000ull,
4244 993000000000000000ull,
4246 320000000000000000ull,
4247 321000000000000000ull,
4248 322000000000000000ull,
4249 323000000000000000ull,
4250 324000000000000000ull,
4251 325000000000000000ull,
4252 326000000000000000ull,
4253 327000000000000000ull,
4254 328000000000000000ull,
4255 329000000000000000ull,
4256 382000000000000000ull,
4257 383000000000000000ull,
4258 922000000000000000ull,
4259 923000000000000000ull,
4260 928000000000000000ull,
4261 929000000000000000ull,
4263 330000000000000000ull,
4264 331000000000000000ull,
4265 332000000000000000ull,
4266 333000000000000000ull,
4267 334000000000000000ull,
4268 335000000000000000ull,
4269 336000000000000000ull,
4270 337000000000000000ull,
4271 338000000000000000ull,
4272 339000000000000000ull,
4273 392000000000000000ull,
4274 393000000000000000ull,
4275 932000000000000000ull,
4276 933000000000000000ull,
4277 938000000000000000ull,
4278 939000000000000000ull,
4280 340000000000000000ull,
4281 341000000000000000ull,
4282 342000000000000000ull,
4283 343000000000000000ull,
4284 344000000000000000ull,
4285 345000000000000000ull,
4286 346000000000000000ull,
4287 347000000000000000ull,
4288 348000000000000000ull,
4289 349000000000000000ull,
4290 384000000000000000ull,
4291 385000000000000000ull,
4292 942000000000000000ull,
4293 943000000000000000ull,
4294 388000000000000000ull,
4295 389000000000000000ull,
4297 350000000000000000ull,
4298 351000000000000000ull,
4299 352000000000000000ull,
4300 353000000000000000ull,
4301 354000000000000000ull,
4302 355000000000000000ull,
4303 356000000000000000ull,
4304 357000000000000000ull,
4305 358000000000000000ull,
4306 359000000000000000ull,
4307 394000000000000000ull,
4308 395000000000000000ull,
4309 952000000000000000ull,
4310 953000000000000000ull,
4311 398000000000000000ull,
4312 399000000000000000ull,
4314 360000000000000000ull,
4315 361000000000000000ull,
4316 362000000000000000ull,
4317 363000000000000000ull,
4318 364000000000000000ull,