blob: fd092be72fde0aa1d2f9539da05f3c647b94d5e7 [file] [log] [blame]
/* Copyright (C) 2007-2018 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.
You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
static const UINT128 reciprocals10_128[] = {
{ { 0ull, 0ull } }, /* 0 extra digits */
{ { 0x3333333333333334ull ,0x3333333333333333ull } }, /* 1 extra digit */
{ { 0x51eb851eb851eb86ull ,0x051eb851eb851eb8ull } }, /* 2 extra digits */
{ { 0x3b645a1cac083127ull, 0x0083126e978d4fdfull } }, /* 3 extra digits */
{ { 0x4af4f0d844d013aaULL, 0x00346dc5d6388659ULL } }, /* 10^(-4) * 2^131 */
{ { 0x08c3f3e0370cdc88ULL, 0x0029f16b11c6d1e1ULL } }, /* 10^(-5) * 2^134 */
{ { 0x6d698fe69270b06dULL, 0x00218def416bdb1aULL } }, /* 10^(-6) * 2^137 */
{ { 0xaf0f4ca41d811a47ULL, 0x0035afe535795e90ULL } }, /* 10^(-7) * 2^141 */
{ { 0xbf3f70834acdaea0ULL, 0x002af31dc4611873ULL } }, /* 10^(-8) * 2^144 */
{ { 0x65cc5a02a23e254dULL, 0x00225c17d04dad29ULL } }, /* 10^(-9) * 2^147 */
{ { 0x6fad5cd10396a214ULL, 0x0036f9bfb3af7b75ULL } }, /* 10^(-10) * 2^151 */
{ { 0xbfbde3da69454e76ULL, 0x002bfaffc2f2c92aULL } }, /* 10^(-11) * 2^154 */
{ { 0x32fe4fe1edd10b92ULL, 0x00232f33025bd422ULL } }, /* 10^(-12) * 2^157 */
{ { 0x84ca19697c81ac1cULL, 0x00384b84d092ed03ULL } }, /* 10^(-13) * 2^161 */
{ { 0x03d4e1213067bce4ULL, 0x002d09370d425736ULL } }, /* 10^(-14) * 2^164 */
{ { 0x3643e74dc052fd83ULL, 0x0024075f3dceac2bULL } }, /* 10^(-15) * 2^167 */
{ { 0x56d30baf9a1e626bULL, 0x0039a5652fb11378ULL } }, /* 10^(-16) * 2^171 */
{ { 0x12426fbfae7eb522ULL, 0x002e1dea8c8da92dULL } }, /* 10^(-17) * 2^174 */
{ { 0x41cebfcc8b9890e8ULL, 0x0024e4bba3a48757ULL } }, /* 10^(-18) * 2^177 */
{ { 0x694acc7a78f41b0dULL, 0x003b07929f6da558ULL } }, /* 10^(-19) * 2^181 */
{ { 0xbaa23d2ec729af3eULL, 0x002f394219248446ULL } }, /* 10^(-20) * 2^184 */
{ { 0xfbb4fdbf05baf298ULL, 0x0025c768141d369eULL } }, /* 10^(-21) * 2^187 */
{ { 0x2c54c931a2c4b759ULL, 0x003c7240202ebdcbULL } }, /* 10^(-22) * 2^191 */
{ { 0x89dd6dc14f03c5e1ULL, 0x00305b66802564a2ULL } }, /* 10^(-23) * 2^194 */
{ { 0xd4b1249aa59c9e4eULL, 0x0026af8533511d4eULL } }, /* 10^(-24) * 2^197 */
{ { 0x544ea0f76f60fd49ULL, 0x003de5a1ebb4fbb1ULL } }, /* 10^(-25) * 2^201 */
{ { 0x76a54d92bf80caa1ULL, 0x00318481895d9627ULL } }, /* 10^(-26) * 2^204 */
{ { 0x921dd7a89933d54eULL, 0x00279d346de4781fULL } }, /* 10^(-27) * 2^207 */
{ { 0x8362f2a75b862215ULL, 0x003f61ed7ca0c032ULL } }, /* 10^(-28) * 2^211 */
{ { 0xcf825bb91604e811ULL, 0x0032b4bdfd4d668eULL } }, /* 10^(-29) * 2^214 */
{ { 0x0c684960de6a5341ULL, 0x00289097fdd7853fULL } }, /* 10^(-30) * 2^217 */
{ { 0x3d203ab3e521dc34ULL, 0x002073accb12d0ffULL } }, /* 10^(-31) * 2^220 */
{ { 0x2e99f7863b696053ULL, 0x0033ec47ab514e65ULL } }, /* 10^(-32) * 2^224 */
{ { 0x587b2c6b62bab376ULL, 0x002989d2ef743eb7ULL } }, /* 10^(-33) * 2^227 */
{ { 0xad2f56bc4efbc2c5ULL, 0x00213b0f25f69892ULL } }, /* 10^(-34) * 2^230 */
{ { 0x0f2abc9d8c9689d1ull, 0x01a95a5b7f87a0efull } } /* 35 extra digits */
};
static const int recip_scale[] = {
129 - 128, /* 1 */
129 - 128, /* 1/10 */
129 - 128, /* 1/10^2 */
129 - 128, /* 1/10^3 */
3, /* 131 - 128 */
6, /* 134 - 128 */
9, /* 137 - 128 */
13, /* 141 - 128 */
16, /* 144 - 128 */
19, /* 147 - 128 */
23, /* 151 - 128 */
26, /* 154 - 128 */
29, /* 157 - 128 */
33, /* 161 - 128 */
36, /* 164 - 128 */
39, /* 167 - 128 */
43, /* 171 - 128 */
46, /* 174 - 128 */
49, /* 177 - 128 */
53, /* 181 - 128 */
56, /* 184 - 128 */
59, /* 187 - 128 */
63, /* 191 - 128 */
66, /* 194 - 128 */
69, /* 197 - 128 */
73, /* 201 - 128 */
76, /* 204 - 128 */
79, /* 207 - 128 */
83, /* 211 - 128 */
86, /* 214 - 128 */
89, /* 217 - 128 */
92, /* 220 - 128 */
96, /* 224 - 128 */
99, /* 227 - 128 */
102, /* 230 - 128 */
237 - 128, /* 1/10^35 */
};
static const int short_recip_scale[] = {
1,
65 - 64,
69 - 64,
71 - 64,
75 - 64,
78 - 64,
81 - 64,
85 - 64,
88 - 64,
91 - 64,
95 - 64,
98 - 64,
101 - 64,
105 - 64,
108 - 64,
111 - 64,
115 - 64, /* 114 - 64 */
118 - 64
};
static const unsigned long long reciprocals10_64[] = {
1ull, /* dummy value for 0 extra digits */
0x3333333333333334ull, /* 1 extra digit */
0x51eb851eb851eb86ull,
0x20c49ba5e353f7cfull,
0x346dc5d63886594bull,
0x29f16b11c6d1e109ull,
0x218def416bdb1a6eull,
0x35afe535795e90b0ull,
0x2af31dc4611873c0ull,
0x225c17d04dad2966ull,
0x36f9bfb3af7b7570ull,
0x2bfaffc2f2c92ac0ull,
0x232f33025bd42233ull,
0x384b84d092ed0385ull,
0x2d09370d42573604ull,
0x24075f3dceac2b37ull,
0x39a5652fb1137857ull,
0x2e1dea8c8da92d13ull
};
static const UINT64 d2b[] = {
0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 80, 81, 800, 801, 880, 881,
10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 90, 91, 810, 811, 890, 891,
20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 82, 83, 820, 821, 808, 809,
30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 92, 93, 830, 831, 818, 819,
40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 84, 85, 840, 841, 88, 89,
50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 94, 95, 850, 851, 98, 99,
60, 61, 62, 63, 64, 65, 66, 67,
68, 69, 86, 87, 860, 861, 888, 889,
70, 71, 72, 73, 74, 75, 76, 77,
78, 79, 96, 97, 870, 871, 898, 899,
100, 101, 102, 103, 104, 105, 106, 107,
108, 109, 180, 181, 900, 901, 980, 981,
110, 111, 112, 113, 114, 115, 116, 117,
118, 119, 190, 191, 910, 911, 990, 991,
120, 121, 122, 123, 124, 125, 126, 127,
128, 129, 182, 183, 920, 921, 908, 909,
130, 131, 132, 133, 134, 135, 136, 137,
138, 139, 192, 193, 930, 931, 918, 919,
140, 141, 142, 143, 144, 145, 146, 147,
148, 149, 184, 185, 940, 941, 188, 189,
150, 151, 152, 153, 154, 155, 156, 157,
158, 159, 194, 195, 950, 951, 198, 199,
160, 161, 162, 163, 164, 165, 166, 167,
168, 169, 186, 187, 960, 961, 988, 989,
170, 171, 172, 173, 174, 175, 176, 177,
178, 179, 196, 197, 970, 971, 998, 999,
200, 201, 202, 203, 204, 205, 206, 207,
208, 209, 280, 281, 802, 803, 882, 883,
210, 211, 212, 213, 214, 215, 216, 217,
218, 219, 290, 291, 812, 813, 892, 893,
220, 221, 222, 223, 224, 225, 226, 227,
228, 229, 282, 283, 822, 823, 828, 829,
230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 292, 293, 832, 833, 838, 839,
240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 284, 285, 842, 843, 288, 289,
250, 251, 252, 253, 254, 255, 256, 257,
258, 259, 294, 295, 852, 853, 298, 299,
260, 261, 262, 263, 264, 265, 266, 267,
268, 269, 286, 287, 862, 863, 888, 889,
270, 271, 272, 273, 274, 275, 276, 277,
278, 279, 296, 297, 872, 873, 898, 899,
300, 301, 302, 303, 304, 305, 306, 307,
308, 309, 380, 381, 902, 903, 982, 983,
310, 311, 312, 313, 314, 315, 316, 317,
318, 319, 390, 391, 912, 913, 992, 993,
320, 321, 322, 323, 324, 325, 326, 327,
328, 329, 382, 383, 922, 923, 928, 929,
330, 331, 332, 333, 334, 335, 336, 337,
338, 339, 392, 393, 932, 933, 938, 939,
340, 341, 342, 343, 344, 345, 346, 347,
348, 349, 384, 385, 942, 943, 388, 389,
350, 351, 352, 353, 354, 355, 356, 357,
358, 359, 394, 395, 952, 953, 398, 399,
360, 361, 362, 363, 364, 365, 366, 367,
368, 369, 386, 387, 962, 963, 988, 989,
370, 371, 372, 373, 374, 375, 376, 377,
378, 379, 396, 397, 972, 973, 998, 999,
400, 401, 402, 403, 404, 405, 406, 407,
408, 409, 480, 481, 804, 805, 884, 885,
410, 411, 412, 413, 414, 415, 416, 417,
418, 419, 490, 491, 814, 815, 894, 895,
420, 421, 422, 423, 424, 425, 426, 427,
428, 429, 482, 483, 824, 825, 848, 849,
430, 431, 432, 433, 434, 435, 436, 437,
438, 439, 492, 493, 834, 835, 858, 859,
440, 441, 442, 443, 444, 445, 446, 447,
448, 449, 484, 485, 844, 845, 488, 489,
450, 451, 452, 453, 454, 455, 456, 457,
458, 459, 494, 495, 854, 855, 498, 499,
460, 461, 462, 463, 464, 465, 466, 467,
468, 469, 486, 487, 864, 865, 888, 889,
470, 471, 472, 473, 474, 475, 476, 477,
478, 479, 496, 497, 874, 875, 898, 899,
500, 501, 502, 503, 504, 505, 506, 507,
508, 509, 580, 581, 904, 905, 984, 985,
510, 511, 512, 513, 514, 515, 516, 517,
518, 519, 590, 591, 914, 915, 994, 995,
520, 521, 522, 523, 524, 525, 526, 527,
528, 529, 582, 583, 924, 925, 948, 949,
530, 531, 532, 533, 534, 535, 536, 537,
538, 539, 592, 593, 934, 935, 958, 959,
540, 541, 542, 543, 544, 545, 546, 547,
548, 549, 584, 585, 944, 945, 588, 589,
550, 551, 552, 553, 554, 555, 556, 557,
558, 559, 594, 595, 954, 955, 598, 599,
560, 561, 562, 563, 564, 565, 566, 567,
568, 569, 586, 587, 964, 965, 988, 989,
570, 571, 572, 573, 574, 575, 576, 577,
578, 579, 596, 597, 974, 975, 998, 999,
600, 601, 602, 603, 604, 605, 606, 607,
608, 609, 680, 681, 806, 807, 886, 887,
610, 611, 612, 613, 614, 615, 616, 617,
618, 619, 690, 691, 816, 817, 896, 897,
620, 621, 622, 623, 624, 625, 626, 627,
628, 629, 682, 683, 826, 827, 868, 869,
630, 631, 632, 633, 634, 635, 636, 637,
638, 639, 692, 693, 836, 837, 878, 879,
640, 641, 642, 643, 644, 645, 646, 647,
648, 649, 684, 685, 846, 847, 688, 689,
650, 651, 652, 653, 654, 655, 656, 657,
658, 659, 694, 695, 856, 857, 698, 699,
660, 661, 662, 663, 664, 665, 666, 667,
668, 669, 686, 687, 866, 867, 888, 889,
670, 671, 672, 673, 674, 675, 676, 677,
678, 679, 696, 697, 876, 877, 898, 899,
700, 701, 702, 703, 704, 705, 706, 707,
708, 709, 780, 781, 906, 907, 986, 987,
710, 711, 712, 713, 714, 715, 716, 717,
718, 719, 790, 791, 916, 917, 996, 997,
720, 721, 722, 723, 724, 725, 726, 727,
728, 729, 782, 783, 926, 927, 968, 969,
730, 731, 732, 733, 734, 735, 736, 737,
738, 739, 792, 793, 936, 937, 978, 979,
740, 741, 742, 743, 744, 745, 746, 747,
748, 749, 784, 785, 946, 947, 788, 789,
750, 751, 752, 753, 754, 755, 756, 757,
758, 759, 794, 795, 956, 957, 798, 799,
760, 761, 762, 763, 764, 765, 766, 767,
768, 769, 786, 787, 966, 967, 988, 989,
770, 771, 772, 773, 774, 775, 776, 777,
778, 779, 796, 797, 976, 977, 998, 999 };
static const UINT64 d2b2[] = {
0000ull, 1000ull, 2000ull, 3000ull,
4000ull, 5000ull, 6000ull, 7000ull,
8000ull, 9000ull, 80000ull, 81000ull,
800000ull, 801000ull, 880000ull, 881000ull,
10000ull, 11000ull, 12000ull, 13000ull,
14000ull, 15000ull, 16000ull, 17000ull,
18000ull, 19000ull, 90000ull, 91000ull,
810000ull, 811000ull, 890000ull, 891000ull,
20000ull, 21000ull, 22000ull, 23000ull,
24000ull, 25000ull, 26000ull, 27000ull,
28000ull, 29000ull, 82000ull, 83000ull,
820000ull, 821000ull, 808000ull, 809000ull,
30000ull, 31000ull, 32000ull, 33000ull,
34000ull, 35000ull, 36000ull, 37000ull,
38000ull, 39000ull, 92000ull, 93000ull,
830000ull, 831000ull, 818000ull, 819000ull,
40000ull, 41000ull, 42000ull, 43000ull,
44000ull, 45000ull, 46000ull, 47000ull,
48000ull, 49000ull, 84000ull, 85000ull,
840000ull, 841000ull, 88000ull, 89000ull,
50000ull, 51000ull, 52000ull, 53000ull,
54000ull, 55000ull, 56000ull, 57000ull,
58000ull, 59000ull, 94000ull, 95000ull,
850000ull, 851000ull, 98000ull, 99000ull,
60000ull, 61000ull, 62000ull, 63000ull,
64000ull, 65000ull, 66000ull, 67000ull,
68000ull, 69000ull, 86000ull, 87000ull,
860000ull, 861000ull, 888000ull, 889000ull,
70000ull, 71000ull, 72000ull, 73000ull,
74000ull, 75000ull, 76000ull, 77000ull,
78000ull, 79000ull, 96000ull, 97000ull,
870000ull, 871000ull, 898000ull, 899000ull,
100000ull, 101000ull, 102000ull, 103000ull,
104000ull, 105000ull, 106000ull, 107000ull,
108000ull, 109000ull, 180000ull, 181000ull,
900000ull, 901000ull, 980000ull, 981000ull,
110000ull, 111000ull, 112000ull, 113000ull,
114000ull, 115000ull, 116000ull, 117000ull,
118000ull, 119000ull, 190000ull, 191000ull,
910000ull, 911000ull, 990000ull, 991000ull,
120000ull, 121000ull, 122000ull, 123000ull,
124000ull, 125000ull, 126000ull, 127000ull,
128000ull, 129000ull, 182000ull, 183000ull,
920000ull, 921000ull, 908000ull, 909000ull,
130000ull, 131000ull, 132000ull, 133000ull,
134000ull, 135000ull, 136000ull, 137000ull,
138000ull, 139000ull, 192000ull, 193000ull,
930000ull, 931000ull, 918000ull, 919000ull,
140000ull, 141000ull, 142000ull, 143000ull,
144000ull, 145000ull, 146000ull, 147000ull,
148000ull, 149000ull, 184000ull, 185000ull,
940000ull, 941000ull, 188000ull, 189000ull,
150000ull, 151000ull, 152000ull, 153000ull,
154000ull, 155000ull, 156000ull, 157000ull,
158000ull, 159000ull, 194000ull, 195000ull,
950000ull, 951000ull, 198000ull, 199000ull,
160000ull, 161000ull, 162000ull, 163000ull,
164000ull, 165000ull, 166000ull, 167000ull,
168000ull, 169000ull, 186000ull, 187000ull,
960000ull, 961000ull, 988000ull, 989000ull,
170000ull, 171000ull, 172000ull, 173000ull,
174000ull, 175000ull, 176000ull, 177000ull,
178000ull, 179000ull, 196000ull, 197000ull,
970000ull, 971000ull, 998000ull, 999000ull,
200000ull, 201000ull, 202000ull, 203000ull,
204000ull, 205000ull, 206000ull, 207000ull,
208000ull, 209000ull, 280000ull, 281000ull,
802000ull, 803000ull, 882000ull, 883000ull,
210000ull, 211000ull, 212000ull, 213000ull,
214000ull, 215000ull, 216000ull, 217000ull,
218000ull, 219000ull, 290000ull, 291000ull,
812000ull, 813000ull, 892000ull, 893000ull,
220000ull, 221000ull, 222000ull, 223000ull,
224000ull, 225000ull, 226000ull, 227000ull,
228000ull, 229000ull, 282000ull, 283000ull,
822000ull, 823000ull, 828000ull, 829000ull,
230000ull, 231000ull, 232000ull, 233000ull,
234000ull, 235000ull, 236000ull, 237000ull,
238000ull, 239000ull, 292000ull, 293000ull,
832000ull, 833000ull, 838000ull, 839000ull,
240000ull, 241000ull, 242000ull, 243000ull,
244000ull, 245000ull, 246000ull, 247000ull,
248000ull, 249000ull, 284000ull, 285000ull,
842000ull, 843000ull, 288000ull, 289000ull,
250000ull, 251000ull, 252000ull, 253000ull,
254000ull, 255000ull, 256000ull, 257000ull,
258000ull, 259000ull, 294000ull, 295000ull,
852000ull, 853000ull, 298000ull, 299000ull,
260000ull, 261000ull, 262000ull, 263000ull,
264000ull, 265000ull, 266000ull, 267000ull,
268000ull, 269000ull, 286000ull, 287000ull,
862000ull, 863000ull, 888000ull, 889000ull,
270000ull, 271000ull, 272000ull, 273000ull,
274000ull, 275000ull, 276000ull, 277000ull,
278000ull, 279000ull, 296000ull, 297000ull,
872000ull, 873000ull, 898000ull, 899000ull,
300000ull, 301000ull, 302000ull, 303000ull,
304000ull, 305000ull, 306000ull, 307000ull,
308000ull, 309000ull, 380000ull, 381000ull,
902000ull, 903000ull, 982000ull, 983000ull,
310000ull, 311000ull, 312000ull, 313000ull,
314000ull, 315000ull, 316000ull, 317000ull,
318000ull, 319000ull, 390000ull, 391000ull,
912000ull, 913000ull, 992000ull, 993000ull,
320000ull, 321000ull, 322000ull, 323000ull,
324000ull, 325000ull, 326000ull, 327000ull,
328000ull, 329000ull, 382000ull, 383000ull,
922000ull, 923000ull, 928000ull, 929000ull,
330000ull, 331000ull, 332000ull, 333000ull,
334000ull, 335000ull, 336000ull, 337000ull,
338000ull, 339000ull, 392000ull, 393000ull,
932000ull, 933000ull, 938000ull, 939000ull,
340000ull, 341000ull, 342000ull, 343000ull,
344000ull, 345000ull, 346000ull, 347000ull,
348000ull, 349000ull, 384000ull, 385000ull,
942000ull, 943000ull, 388000ull, 389000ull,
350000ull, 351000ull, 352000ull, 353000ull,
354000ull, 355000ull, 356000ull, 357000ull,
358000ull, 359000ull, 394000ull, 395000ull,
952000ull, 953000ull, 398000ull, 399000ull,
360000ull, 361000ull, 362000ull, 363000ull,
364000ull, 365000ull, 366000ull, 367000ull,
368000ull, 369000ull, 386000ull, 387000ull,
962000ull, 963000ull, 988000ull, 989000ull,
370000ull, 371000ull, 372000ull, 373000ull,
374000ull, 375000ull, 376000ull, 377000ull,
378000ull, 379000ull, 396000ull, 397000ull,
972000ull, 973000ull, 998000ull, 999000ull,
400000ull, 401000ull, 402000ull, 403000ull,
404000ull, 405000ull, 406000ull, 407000ull,
408000ull, 409000ull, 480000ull, 481000ull,
804000ull, 805000ull, 884000ull, 885000ull,
410000ull, 411000ull, 412000ull, 413000ull,
414000ull, 415000ull, 416000ull, 417000ull,
418000ull, 419000ull, 490000ull, 491000ull,
814000ull, 815000ull, 894000ull, 895000ull,
420000ull, 421000ull, 422000ull, 423000ull,
424000ull, 425000ull, 426000ull, 427000ull,
428000ull, 429000ull, 482000ull, 483000ull,
824000ull, 825000ull, 848000ull, 849000ull,
430000ull, 431000ull, 432000ull, 433000ull,
434000ull, 435000ull, 436000ull, 437000ull,
438000ull, 439000ull, 492000ull, 493000ull,
834000ull, 835000ull, 858000ull, 859000ull,
440000ull, 441000ull, 442000ull, 443000ull,
444000ull, 445000ull, 446000ull, 447000ull,
448000ull, 449000ull, 484000ull, 485000ull,
844000ull, 845000ull, 488000ull, 489000ull,
450000ull, 451000ull, 452000ull, 453000ull,
454000ull, 455000ull, 456000ull, 457000ull,
458000ull, 459000ull, 494000ull, 495000ull,
854000ull, 855000ull, 498000ull, 499000ull,
460000ull, 461000ull, 462000ull, 463000ull,
464000ull, 465000ull, 466000ull, 467000ull,
468000ull, 469000ull, 486000ull, 487000ull,
864000ull, 865000ull, 888000ull, 889000ull,
470000ull, 471000ull, 472000ull, 473000ull,
474000ull, 475000ull, 476000ull, 477000ull,
478000ull, 479000ull, 496000ull, 497000ull,
874000ull, 875000ull, 898000ull, 899000ull,
500000ull, 501000ull, 502000ull, 503000ull,
504000ull, 505000ull, 506000ull, 507000ull,
508000ull, 509000ull, 580000ull, 581000ull,
904000ull, 905000ull, 984000ull, 985000ull,
510000ull, 511000ull, 512000ull, 513000ull,
514000ull, 515000ull, 516000ull, 517000ull,
518000ull, 519000ull, 590000ull, 591000ull,
914000ull, 915000ull, 994000ull, 995000ull,
520000ull, 521000ull, 522000ull, 523000ull,
524000ull, 525000ull, 526000ull, 527000ull,
528000ull, 529000ull, 582000ull, 583000ull,
924000ull, 925000ull, 948000ull, 949000ull,
530000ull, 531000ull, 532000ull, 533000ull,
534000ull, 535000ull, 536000ull, 537000ull,
538000ull, 539000ull, 592000ull, 593000ull,
934000ull, 935000ull, 958000ull, 959000ull,
540000ull, 541000ull, 542000ull, 543000ull,
544000ull, 545000ull, 546000ull, 547000ull,
548000ull, 549000ull, 584000ull, 585000ull,
944000ull, 945000ull, 588000ull, 589000ull,
550000ull, 551000ull, 552000ull, 553000ull,
554000ull, 555000ull, 556000ull, 557000ull,
558000ull, 559000ull, 594000ull, 595000ull,
954000ull, 955000ull, 598000ull, 599000ull,
560000ull, 561000ull, 562000ull, 563000ull,
564000ull, 565000ull, 566000ull, 567000ull,
568000ull, 569000ull, 586000ull, 587000ull,
964000ull, 965000ull, 988000ull, 989000ull,
570000ull, 571000ull, 572000ull, 573000ull,
574000ull, 575000ull, 576000ull, 577000ull,
578000ull, 579000ull, 596000ull, 597000ull,
974000ull, 975000ull, 998000ull, 999000ull,
600000ull, 601000ull, 602000ull, 603000ull,
604000ull, 605000ull, 606000ull, 607000ull,
608000ull, 609000ull, 680000ull, 681000ull,
806000ull, 807000ull, 886000ull, 887000ull,
610000ull, 611000ull, 612000ull, 613000ull,
614000ull, 615000ull, 616000ull, 617000ull,
618000ull, 619000ull, 690000ull, 691000ull,
816000ull, 817000ull, 896000ull, 897000ull,
620000ull, 621000ull, 622000ull, 623000ull,
624000ull, 625000ull, 626000ull, 627000ull,
628000ull, 629000ull, 682000ull, 683000ull,
826000ull, 827000ull, 868000ull, 869000ull,
630000ull, 631000ull, 632000ull, 633000ull,
634000ull, 635000ull, 636000ull, 637000ull,
638000ull, 639000ull, 692000ull, 693000ull,
836000ull, 837000ull, 878000ull, 879000ull,
640000ull, 641000ull, 642000ull, 643000ull,
644000ull, 645000ull, 646000ull, 647000ull,
648000ull, 649000ull, 684000ull, 685000ull,
846000ull, 847000ull, 688000ull, 689000ull,
650000ull, 651000ull, 652000ull, 653000ull,
654000ull, 655000ull, 656000ull, 657000ull,
658000ull, 659000ull, 694000ull, 695000ull,
856000ull, 857000ull, 698000ull, 699000ull,
660000ull, 661000ull, 662000ull, 663000ull,
664000ull, 665000ull, 666000ull, 667000ull,
668000ull, 669000ull, 686000ull, 687000ull,
866000ull, 867000ull, 888000ull, 889000ull,
670000ull, 671000ull, 672000ull, 673000ull,
674000ull, 675000ull, 676000ull, 677000ull,
678000ull, 679000ull, 696000ull, 697000ull,
876000ull, 877000ull, 898000ull, 899000ull,
700000ull, 701000ull, 702000ull, 703000ull,
704000ull, 705000ull, 706000ull, 707000ull,
708000ull, 709000ull, 780000ull, 781000ull,
906000ull, 907000ull, 986000ull, 987000ull,
710000ull, 711000ull, 712000ull, 713000ull,
714000ull, 715000ull, 716000ull, 717000ull,
718000ull, 719000ull, 790000ull, 791000ull,
916000ull, 917000ull, 996000ull, 997000ull,
720000ull, 721000ull, 722000ull, 723000ull,
724000ull, 725000ull, 726000ull, 727000ull,
728000ull, 729000ull, 782000ull, 783000ull,
926000ull, 927000ull, 968000ull, 969000ull,
730000ull, 731000ull, 732000ull, 733000ull,
734000ull, 735000ull, 736000ull, 737000ull,
738000ull, 739000ull, 792000ull, 793000ull,
936000ull, 937000ull, 978000ull, 979000ull,
740000ull, 741000ull, 742000ull, 743000ull,
744000ull, 745000ull, 746000ull, 747000ull,
748000ull, 749000ull, 784000ull, 785000ull,
946000ull, 947000ull, 788000ull, 789000ull,
750000ull, 751000ull, 752000ull, 753000ull,
754000ull, 755000ull, 756000ull, 757000ull,
758000ull, 759000ull, 794000ull, 795000ull,
956000ull, 957000ull, 798000ull, 799000ull,
760000ull, 761000ull, 762000ull, 763000ull,
764000ull, 765000ull, 766000ull, 767000ull,
768000ull, 769000ull, 786000ull, 787000ull,
966000ull, 967000ull, 988000ull, 989000ull,
770000ull, 771000ull, 772000ull, 773000ull,
774000ull, 775000ull, 776000ull, 777000ull,
778000ull, 779000ull, 796000ull, 797000ull,
976000ull, 977000ull, 998000ull, 999000ull
};
static const UINT64 d2b3[] = {
0000000ull,
1000000ull,
2000000ull,
3000000ull,
4000000ull,
5000000ull,
6000000ull,
7000000ull,
8000000ull,
9000000ull,
80000000ull,
81000000ull,
800000000ull,
801000000ull,
880000000ull,
881000000ull,
10000000ull,
11000000ull,
12000000ull,
13000000ull,
14000000ull,
15000000ull,
16000000ull,
17000000ull,
18000000ull,
19000000ull,
90000000ull,
91000000ull,
810000000ull,
811000000ull,
890000000ull,
891000000ull,
20000000ull,
21000000ull,
22000000ull,
23000000ull,
24000000ull,
25000000ull,
26000000ull,
27000000ull,
28000000ull,
29000000ull,
82000000ull,
83000000ull,
820000000ull,
821000000ull,
808000000ull,
809000000ull,
30000000ull,
31000000ull,
32000000ull,
33000000ull,
34000000ull,
35000000ull,
36000000ull,
37000000ull,
38000000ull,
39000000ull,
92000000ull,
93000000ull,
830000000ull,
831000000ull,
818000000ull,
819000000ull,
40000000ull,
41000000ull,
42000000ull,
43000000ull,
44000000ull,
45000000ull,
46000000ull,
47000000ull,
48000000ull,
49000000ull,
84000000ull,
85000000ull,
840000000ull,
841000000ull,
88000000ull,
89000000ull,
50000000ull,
51000000ull,
52000000ull,
53000000ull,
54000000ull,
55000000ull,
56000000ull,
57000000ull,
58000000ull,
59000000ull,
94000000ull,
95000000ull,
850000000ull,
851000000ull,
98000000ull,
99000000ull,
60000000ull,
61000000ull,
62000000ull,
63000000ull,
64000000ull,
65000000ull,
66000000ull,
67000000ull,
68000000ull,
69000000ull,
86000000ull,
87000000ull,
860000000ull,
861000000ull,
888000000ull,
889000000ull,
70000000ull,
71000000ull,
72000000ull,
73000000ull,
74000000ull,
75000000ull,
76000000ull,
77000000ull,
78000000ull,
79000000ull,
96000000ull,
97000000ull,
870000000ull,
871000000ull,
898000000ull,
899000000ull,
100000000ull,
101000000ull,
102000000ull,
103000000ull,
104000000ull,
105000000ull,
106000000ull,
107000000ull,
108000000ull,
109000000ull,
180000000ull,
181000000ull,
900000000ull,
901000000ull,
980000000ull,
981000000ull,
110000000ull,
111000000ull,
112000000ull,
113000000ull,
114000000ull,
115000000ull,
116000000ull,
117000000ull,
118000000ull,
119000000ull,
190000000ull,
191000000ull,
910000000ull,
911000000ull,
990000000ull,
991000000ull,
120000000ull,
121000000ull,
122000000ull,
123000000ull,
124000000ull,
125000000ull,
126000000ull,
127000000ull,
128000000ull,
129000000ull,
182000000ull,
183000000ull,
920000000ull,
921000000ull,
908000000ull,
909000000ull,
130000000ull,
131000000ull,
132000000ull,
133000000ull,
134000000ull,
135000000ull,
136000000ull,
137000000ull,
138000000ull,
139000000ull,
192000000ull,
193000000ull,
930000000ull,
931000000ull,
918000000ull,
919000000ull,
140000000ull,
141000000ull,
142000000ull,
143000000ull,
144000000ull,
145000000ull,
146000000ull,
147000000ull,
148000000ull,
149000000ull,
184000000ull,
185000000ull,
940000000ull,
941000000ull,
188000000ull,
189000000ull,
150000000ull,
151000000ull,
152000000ull,
153000000ull,
154000000ull,
155000000ull,
156000000ull,
157000000ull,
158000000ull,
159000000ull,
194000000ull,
195000000ull,
950000000ull,
951000000ull,
198000000ull,
199000000ull,
160000000ull,
161000000ull,
162000000ull,
163000000ull,
164000000ull,
165000000ull,
166000000ull,
167000000ull,
168000000ull,
169000000ull,
186000000ull,
187000000ull,
960000000ull,
961000000ull,
988000000ull,
989000000ull,
170000000ull,
171000000ull,
172000000ull,
173000000ull,
174000000ull,
175000000ull,
176000000ull,
177000000ull,
178000000ull,
179000000ull,
196000000ull,
197000000ull,
970000000ull,
971000000ull,
998000000ull,
999000000ull,
200000000ull,
201000000ull,
202000000ull,
203000000ull,
204000000ull,
205000000ull,
206000000ull,
207000000ull,
208000000ull,
209000000ull,
280000000ull,
281000000ull,
802000000ull,
803000000ull,
882000000ull,
883000000ull,
210000000ull,
211000000ull,
212000000ull,
213000000ull,
214000000ull,
215000000ull,
216000000ull,
217000000ull,
218000000ull,
219000000ull,
290000000ull,
291000000ull,
812000000ull,
813000000ull,
892000000ull,
893000000ull,
220000000ull,
221000000ull,
222000000ull,
223000000ull,
224000000ull,
225000000ull,
226000000ull,
227000000ull,
228000000ull,
229000000ull,
282000000ull,
283000000ull,
822000000ull,
823000000ull,
828000000ull,
829000000ull,
230000000ull,
231000000ull,
232000000ull,
233000000ull,
234000000ull,
235000000ull,
236000000ull,
237000000ull,
238000000ull,
239000000ull,
292000000ull,
293000000ull,
832000000ull,
833000000ull,
838000000ull,
839000000ull,
240000000ull,
241000000ull,
242000000ull,
243000000ull,
244000000ull,
245000000ull,
246000000ull,
247000000ull,
248000000ull,
249000000ull,
284000000ull,
285000000ull,
842000000ull,
843000000ull,
288000000ull,
289000000ull,
250000000ull,
251000000ull,
252000000ull,
253000000ull,
254000000ull,
255000000ull,
256000000ull,
257000000ull,
258000000ull,
259000000ull,
294000000ull,
295000000ull,
852000000ull,
853000000ull,
298000000ull,
299000000ull,
260000000ull,
261000000ull,
262000000ull,
263000000ull,
264000000ull,
265000000ull,
266000000ull,
267000000ull,
268000000ull,
269000000ull,
286000000ull,
287000000ull,
862000000ull,
863000000ull,
888000000ull,
889000000ull,
270000000ull,
271000000ull,
272000000ull,
273000000ull,
274000000ull,
275000000ull,
276000000ull,
277000000ull,
278000000ull,
279000000ull,
296000000ull,
297000000ull,
872000000ull,
873000000ull,
898000000ull,
899000000ull,
300000000ull,
301000000ull,
302000000ull,
303000000ull,
304000000ull,
305000000ull,
306000000ull,
307000000ull,
308000000ull,
309000000ull,
380000000ull,
381000000ull,
902000000ull,
903000000ull,
982000000ull,
983000000ull,
310000000ull,
311000000ull,
312000000ull,
313000000ull,
314000000ull,
315000000ull,
316000000ull,
317000000ull,
318000000ull,
319000000ull,
390000000ull,
391000000ull,
912000000ull,
913000000ull,
992000000ull,
993000000ull,
320000000ull,
321000000ull,
322000000ull,
323000000ull,
324000000ull,
325000000ull,
326000000ull,
327000000ull,
328000000ull,
329000000ull,
382000000ull,
383000000ull,
922000000ull,
923000000ull,
928000000ull,
929000000ull,
330000000ull,
331000000ull,
332000000ull,
333000000ull,
334000000ull,
335000000ull,
336000000ull,
337000000ull,
338000000ull,
339000000ull,
392000000ull,
393000000ull,
932000000ull,
933000000ull,
938000000ull,
939000000ull,
340000000ull,
341000000ull,
342000000ull,
343000000ull,
344000000ull,
345000000ull,
346000000ull,
347000000ull,
348000000ull,
349000000ull,
384000000ull,
385000000ull,
942000000ull,
943000000ull,
388000000ull,
389000000ull,
350000000ull,
351000000ull,
352000000ull,
353000000ull,
354000000ull,
355000000ull,
356000000ull,
357000000ull,
358000000ull,
359000000ull,
394000000ull,
395000000ull,
952000000ull,
953000000ull,
398000000ull,
399000000ull,
360000000ull,
361000000ull,
362000000ull,
363000000ull,
364000000ull,
365000000ull,
366000000ull,
367000000ull,
368000000ull,
369000000ull,
386000000ull,
387000000ull,
962000000ull,
963000000ull,
988000000ull,
989000000ull,
370000000ull,
371000000ull,
372000000ull,
373000000ull,
374000000ull,
375000000ull,
376000000ull,
377000000ull,
378000000ull,
379000000ull,
396000000ull,
397000000ull,
972000000ull,
973000000ull,
998000000ull,
999000000ull,
400000000ull,
401000000ull,
402000000ull,
403000000ull,
404000000ull,
405000000ull,
406000000ull,
407000000ull,
408000000ull,
409000000ull,
480000000ull,
481000000ull,
804000000ull,
805000000ull,
884000000ull,
885000000ull,
410000000ull,
411000000ull,
412000000ull,
413000000ull,
414000000ull,
415000000ull,
416000000ull,
417000000ull,
418000000ull,
419000000ull,
490000000ull,
491000000ull,
814000000ull,
815000000ull,
894000000ull,
895000000ull,
420000000ull,
421000000ull,
422000000ull,
423000000ull,
424000000ull,
425000000ull,
426000000ull,
427000000ull,
428000000ull,
429000000ull,
482000000ull,
483000000ull,
824000000ull,
825000000ull,
848000000ull,
849000000ull,
430000000ull,
431000000ull,
432000000ull,
433000000ull,
434000000ull,
435000000ull,
436000000ull,
437000000ull,
438000000ull,
439000000ull,
492000000ull,
493000000ull,
834000000ull,
835000000ull,
858000000ull,
859000000ull,
440000000ull,
441000000ull,
442000000ull,
443000000ull,
444000000ull,
445000000ull,
446000000ull,
447000000ull,
448000000ull,
449000000ull,
484000000ull,
485000000ull,
844000000ull,
845000000ull,
488000000ull,
489000000ull,
450000000ull,
451000000ull,
452000000ull,
453000000ull,
454000000ull,
455000000ull,
456000000ull,
457000000ull,
458000000ull,
459000000ull,
494000000ull,
495000000ull,
854000000ull,
855000000ull,
498000000ull,
499000000ull,
460000000ull,
461000000ull,
462000000ull,
463000000ull,
464000000ull,
465000000ull,
466000000ull,
467000000ull,
468000000ull,
469000000ull,
486000000ull,
487000000ull,
864000000ull,
865000000ull,
888000000ull,
889000000ull,
470000000ull,
471000000ull,
472000000ull,
473000000ull,
474000000ull,
475000000ull,
476000000ull,
477000000ull,
478000000ull,
479000000ull,
496000000ull,
497000000ull,
874000000ull,
875000000ull,
898000000ull,
899000000ull,
500000000ull,
501000000ull,
502000000ull,
503000000ull,
504000000ull,
505000000ull,
506000000ull,
507000000ull,
508000000ull,
509000000ull,
580000000ull,
581000000ull,
904000000ull,
905000000ull,
984000000ull,
985000000ull,
510000000ull,
511000000ull,
512000000ull,
513000000ull,
514000000ull,
515000000ull,
516000000ull,
517000000ull,
518000000ull,
519000000ull,
590000000ull,
591000000ull,
914000000ull,
915000000ull,
994000000ull,
995000000ull,
520000000ull,
521000000ull,
522000000ull,
523000000ull,
524000000ull,
525000000ull,
526000000ull,
527000000ull,
528000000ull,
529000000ull,
582000000ull,
583000000ull,
924000000ull,
925000000ull,
948000000ull,
949000000ull,
530000000ull,
531000000ull,
532000000ull,
533000000ull,
534000000ull,
535000000ull,
536000000ull,
537000000ull,
538000000ull,
539000000ull,
592000000ull,
593000000ull,
934000000ull,
935000000ull,
958000000ull,
959000000ull,
540000000ull,
541000000ull,
542000000ull,
543000000ull,
544000000ull,
545000000ull,
546000000ull,
547000000ull,
548000000ull,
549000000ull,
584000000ull,
585000000ull,
944000000ull,
945000000ull,
588000000ull,
589000000ull,
550000000ull,
551000000ull,
552000000ull,
553000000ull,
554000000ull,
555000000ull,
556000000ull,
557000000ull,
558000000ull,
559000000ull,
594000000ull,
595000000ull,
954000000ull,
955000000ull,
598000000ull,
599000000ull,
560000000ull,
561000000ull,
562000000ull,
563000000ull,
564000000ull,
565000000ull,
566000000ull,
567000000ull,
568000000ull,
569000000ull,
586000000ull,
587000000ull,
964000000ull,
965000000ull,
988000000ull,
989000000ull,
570000000ull,
571000000ull,
572000000ull,
573000000ull,
574000000ull,
575000000ull,
576000000ull,
577000000ull,
578000000ull,
579000000ull,
596000000ull,
597000000ull,
974000000ull,
975000000ull,
998000000ull,
999000000ull,
600000000ull,
601000000ull,
602000000ull,
603000000ull,
604000000ull,
605000000ull,
606000000ull,
607000000ull,
608000000ull,
609000000ull,
680000000ull,
681000000ull,
806000000ull,
807000000ull,
886000000ull,
887000000ull,
610000000ull,
611000000ull,
612000000ull,
613000000ull,
614000000ull,
615000000ull,
616000000ull,
617000000ull,
618000000ull,
619000000ull,
690000000ull,
691000000ull,
816000000ull,
817000000ull,
896000000ull,
897000000ull,
620000000ull,
621000000ull,
622000000ull,
623000000ull,
624000000ull,
625000000ull,
626000000ull,
627000000ull,
628000000ull,
629000000ull,
682000000ull,
683000000ull,
826000000ull,
827000000ull,
868000000ull,
869000000ull,
630000000ull,
631000000ull,
632000000ull,
633000000ull,
634000000ull,
635000000ull,
636000000ull,
637000000ull,
638000000ull,
639000000ull,
692000000ull,
693000000ull,
836000000ull,
837000000ull,
878000000ull,
879000000ull,
640000000ull,
641000000ull,
642000000ull,
643000000ull,
644000000ull,
645000000ull,
646000000ull,
647000000ull,
648000000ull,
649000000ull,
684000000ull,
685000000ull,
846000000ull,
847000000ull,
688000000ull,
689000000ull,
650000000ull,
651000000ull,
652000000ull,
653000000ull,
654000000ull,
655000000ull,
656000000ull,
657000000ull,
658000000ull,
659000000ull,
694000000ull,
695000000ull,
856000000ull,
857000000ull,
698000000ull,
699000000ull,
660000000ull,
661000000ull,
662000000ull,
663000000ull,
664000000ull,
665000000ull,
666000000ull,
667000000ull,
668000000ull,
669000000ull,
686000000ull,
687000000ull,
866000000ull,
867000000ull,
888000000ull,
889000000ull,
670000000ull,
671000000ull,
672000000ull,
673000000ull,
674000000ull,
675000000ull,
676000000ull,
677000000ull,
678000000ull,
679000000ull,
696000000ull,
697000000ull,
876000000ull,
877000000ull,
898000000ull,
899000000ull,
700000000ull,
701000000ull,
702000000ull,
703000000ull,
704000000ull,
705000000ull,
706000000ull,
707000000ull,
708000000ull,
709000000ull,
780000000ull,
781000000ull,
906000000ull,
907000000ull,
986000000ull,
987000000ull,
710000000ull,
711000000ull,
712000000ull,
713000000ull,
714000000ull,
715000000ull,
716000000ull,
717000000ull,
718000000ull,
719000000ull,
790000000ull,
791000000ull,
916000000ull,
917000000ull,
996000000ull,
997000000ull,
720000000ull,
721000000ull,
722000000ull,
723000000ull,
724000000ull,
725000000ull,
726000000ull,
727000000ull,
728000000ull,
729000000ull,
782000000ull,
783000000ull,
926000000ull,
927000000ull,
968000000ull,
969000000ull,
730000000ull,
731000000ull,
732000000ull,
733000000ull,
734000000ull,
735000000ull,
736000000ull,
737000000ull,
738000000ull,
739000000ull,
792000000ull,
793000000ull,
936000000ull,
937000000ull,
978000000ull,
979000000ull,
740000000ull,
741000000ull,
742000000ull,
743000000ull,
744000000ull,
745000000ull,
746000000ull,
747000000ull,
748000000ull,
749000000ull,
784000000ull,
785000000ull,
946000000ull,
947000000ull,
788000000ull,
789000000ull,
750000000ull,
751000000ull,
752000000ull,
753000000ull,
754000000ull,
755000000ull,
756000000ull,
757000000ull,
758000000ull,
759000000ull,
794000000ull,
795000000ull,
956000000ull,
957000000ull,
798000000ull,
799000000ull,
760000000ull,
761000000ull,
762000000ull,
763000000ull,
764000000ull,
765000000ull,
766000000ull,
767000000ull,
768000000ull,
769000000ull,
786000000ull,
787000000ull,
966000000ull,
967000000ull,
988000000ull,
989000000ull,
770000000ull,
771000000ull,
772000000ull,
773000000ull,
774000000ull,
775000000ull,
776000000ull,
777000000ull,
778000000ull,
779000000ull,
796000000ull,
797000000ull,
976000000ull,
977000000ull,
998000000ull,
999000000ull };
static const UINT64 d2b4[] = {
0000000000ull,
1000000000ull,
2000000000ull,
3000000000ull,
4000000000ull,
5000000000ull,
6000000000ull,
7000000000ull,
8000000000ull,
9000000000ull,
80000000000ull,
81000000000ull,
800000000000ull,
801000000000ull,
880000000000ull,
881000000000ull,
10000000000ull,
11000000000ull,
12000000000ull,
13000000000ull,
14000000000ull,
15000000000ull,
16000000000ull,
17000000000ull,
18000000000ull,
19000000000ull,
90000000000ull,
91000000000ull,
810000000000ull,
811000000000ull,
890000000000ull,
891000000000ull,
20000000000ull,
21000000000ull,
22000000000ull,
23000000000ull,
24000000000ull,
25000000000ull,
26000000000ull,
27000000000ull,
28000000000ull,
29000000000ull,
82000000000ull,
83000000000ull,
820000000000ull,
821000000000ull,
808000000000ull,
809000000000ull,
30000000000ull,
31000000000ull,
32000000000ull,
33000000000ull,
34000000000ull,
35000000000ull,
36000000000ull,
37000000000ull,
38000000000ull,
39000000000ull,
92000000000ull,
93000000000ull,
830000000000ull,
831000000000ull,
818000000000ull,
819000000000ull,
40000000000ull,
41000000000ull,
42000000000ull,
43000000000ull,
44000000000ull,
45000000000ull,
46000000000ull,
47000000000ull,
48000000000ull,
49000000000ull,
84000000000ull,
85000000000ull,
840000000000ull,
841000000000ull,
88000000000ull,
89000000000ull,
50000000000ull,
51000000000ull,
52000000000ull,
53000000000ull,
54000000000ull,
55000000000ull,
56000000000ull,
57000000000ull,
58000000000ull,
59000000000ull,
94000000000ull,
95000000000ull,
850000000000ull,
851000000000ull,
98000000000ull,
99000000000ull,
60000000000ull,
61000000000ull,
62000000000ull,
63000000000ull,
64000000000ull,
65000000000ull,
66000000000ull,
67000000000ull,
68000000000ull,
69000000000ull,
86000000000ull,
87000000000ull,
860000000000ull,
861000000000ull,
888000000000ull,
889000000000ull,
70000000000ull,
71000000000ull,
72000000000ull,
73000000000ull,
74000000000ull,
75000000000ull,
76000000000ull,
77000000000ull,
78000000000ull,
79000000000ull,
96000000000ull,
97000000000ull,
870000000000ull,
871000000000ull,
898000000000ull,
899000000000ull,
100000000000ull,
101000000000ull,
102000000000ull,
103000000000ull,
104000000000ull,
105000000000ull,
106000000000ull,
107000000000ull,
108000000000ull,
109000000000ull,
180000000000ull,
181000000000ull,
900000000000ull,
901000000000ull,
980000000000ull,
981000000000ull,
110000000000ull,
111000000000ull,
112000000000ull,
113000000000ull,
114000000000ull,
115000000000ull,
116000000000ull,
117000000000ull,
118000000000ull,
119000000000ull,
190000000000ull,
191000000000ull,
910000000000ull,
911000000000ull,
990000000000ull,
991000000000ull,
120000000000ull,
121000000000ull,
122000000000ull,
123000000000ull,
124000000000ull,
125000000000ull,
126000000000ull,
127000000000ull,
128000000000ull,
129000000000ull,
182000000000ull,
183000000000ull,
920000000000ull,
921000000000ull,
908000000000ull,
909000000000ull,
130000000000ull,
131000000000ull,
132000000000ull,
133000000000ull,
134000000000ull,
135000000000ull,
136000000000ull,
137000000000ull,
138000000000ull,
139000000000ull,
192000000000ull,
193000000000ull,
930000000000ull,
931000000000ull,
918000000000ull,
919000000000ull,
140000000000ull,
141000000000ull,
142000000000ull,
143000000000ull,
144000000000ull,
145000000000ull,
146000000000ull,
147000000000ull,
148000000000ull,
149000000000ull,
184000000000ull,
185000000000ull,
940000000000ull,
941000000000ull,
188000000000ull,
189000000000ull,
150000000000ull,
151000000000ull,
152000000000ull,
153000000000ull,
154000000000ull,
155000000000ull,
156000000000ull,
157000000000ull,
158000000000ull,
159000000000ull,
194000000000ull,
195000000000ull,
950000000000ull,
951000000000ull,
198000000000ull,
199000000000ull,
160000000000ull,
161000000000ull,
162000000000ull,
163000000000ull,
164000000000ull,
165000000000ull,
166000000000ull,
167000000000ull,
168000000000ull,
169000000000ull,
186000000000ull,
187000000000ull,
960000000000ull,
961000000000ull,
988000000000ull,
989000000000ull,
170000000000ull,
171000000000ull,
172000000000ull,
173000000000ull,
174000000000ull,
175000000000ull,
176000000000ull,
177000000000ull,
178000000000ull,
179000000000ull,
196000000000ull,
197000000000ull,
970000000000ull,
971000000000ull,
998000000000ull,
999000000000ull,
200000000000ull,
201000000000ull,
202000000000ull,
203000000000ull,
204000000000ull,
205000000000ull,
206000000000ull,
207000000000ull,
208000000000ull,
209000000000ull,
280000000000ull,
281000000000ull,
802000000000ull,
803000000000ull,
882000000000ull,
883000000000ull,
210000000000ull,
211000000000ull,
212000000000ull,
213000000000ull,
214000000000ull,
215000000000ull,
216000000000ull,
217000000000ull,
218000000000ull,
219000000000ull,
290000000000ull,
291000000000ull,
812000000000ull,
813000000000ull,
892000000000ull,
893000000000ull,
220000000000ull,
221000000000ull,
222000000000ull,
223000000000ull,
224000000000ull,
225000000000ull,
226000000000ull,
227000000000ull,
228000000000ull,
229000000000ull,
282000000000ull,
283000000000ull,
822000000000ull,
823000000000ull,
828000000000ull,
829000000000ull,
230000000000ull,
231000000000ull,
232000000000ull,
233000000000ull,
234000000000ull,
235000000000ull,
236000000000ull,
237000000000ull,
238000000000ull,
239000000000ull,
292000000000ull,
293000000000ull,
832000000000ull,
833000000000ull,
838000000000ull,
839000000000ull,
240000000000ull,
241000000000ull,
242000000000ull,
243000000000ull,
244000000000ull,
245000000000ull,
246000000000ull,
247000000000ull,
248000000000ull,
249000000000ull,
284000000000ull,
285000000000ull,
842000000000ull,
843000000000ull,
288000000000ull,
289000000000ull,
250000000000ull,
251000000000ull,
252000000000ull,
253000000000ull,
254000000000ull,
255000000000ull,
256000000000ull,
257000000000ull,
258000000000ull,
259000000000ull,
294000000000ull,
295000000000ull,
852000000000ull,
853000000000ull,
298000000000ull,
299000000000ull,
260000000000ull,
261000000000ull,
262000000000ull,
263000000000ull,
264000000000ull,
265000000000ull,
266000000000ull,
267000000000ull,
268000000000ull,
269000000000ull,
286000000000ull,
287000000000ull,
862000000000ull,
863000000000ull,
888000000000ull,
889000000000ull,
270000000000ull,
271000000000ull,
272000000000ull,
273000000000ull,
274000000000ull,
275000000000ull,
276000000000ull,
277000000000ull,
278000000000ull,
279000000000ull,
296000000000ull,
297000000000ull,
872000000000ull,
873000000000ull,
898000000000ull,
899000000000ull,
300000000000ull,
301000000000ull,
302000000000ull,
303000000000ull,
304000000000ull,
305000000000ull,
306000000000ull,
307000000000ull,
308000000000ull,
309000000000ull,
380000000000ull,
381000000000ull,
902000000000ull,
903000000000ull,
982000000000ull,
983000000000ull,
310000000000ull,
311000000000ull,
312000000000ull,
313000000000ull,
314000000000ull,
315000000000ull,
316000000000ull,
317000000000ull,
318000000000ull,
319000000000ull,
390000000000ull,
391000000000ull,
912000000000ull,
913000000000ull,
992000000000ull,
993000000000ull,
320000000000ull,
321000000000ull,
322000000000ull,
323000000000ull,
324000000000ull,
325000000000ull,
326000000000ull,
327000000000ull,
328000000000ull,
329000000000ull,
382000000000ull,
383000000000ull,
922000000000ull,
923000000000ull,
928000000000ull,
929000000000ull,
330000000000ull,
331000000000ull,
332000000000ull,
333000000000ull,
334000000000ull,
335000000000ull,
336000000000ull,
337000000000ull,
338000000000ull,
339000000000ull,
392000000000ull,
393000000000ull,
932000000000ull,
933000000000ull,
938000000000ull,
939000000000ull,
340000000000ull,
341000000000ull,
342000000000ull,
343000000000ull,
344000000000ull,
345000000000ull,
346000000000ull,
347000000000ull,
348000000000ull,
349000000000ull,
384000000000ull,
385000000000ull,
942000000000ull,
943000000000ull,
388000000000ull,
389000000000ull,
350000000000ull,
351000000000ull,
352000000000ull,
353000000000ull,
354000000000ull,
355000000000ull,
356000000000ull,
357000000000ull,
358000000000ull,
359000000000ull,
394000000000ull,
395000000000ull,
952000000000ull,
953000000000ull,
398000000000ull,
399000000000ull,
360000000000ull,
361000000000ull,
362000000000ull,
363000000000ull,
364000000000ull,
365000000000ull,
366000000000ull,
367000000000ull,
368000000000ull,
369000000000ull,
386000000000ull,
387000000000ull,
962000000000ull,
963000000000ull,
988000000000ull,
989000000000ull,
370000000000ull,
371000000000ull,
372000000000ull,
373000000000ull,
374000000000ull,
375000000000ull,
376000000000ull,
377000000000ull,
378000000000ull,
379000000000ull,
396000000000ull,
397000000000ull,
972000000000ull,
973000000000ull,
998000000000ull,
999000000000ull,
400000000000ull,
401000000000ull,
402000000000ull,
403000000000ull,
404000000000ull,
405000000000ull,
406000000000ull,
407000000000ull,
408000000000ull,
409000000000ull,
480000000000ull,
481000000000ull,
804000000000ull,
805000000000ull,
884000000000ull,
885000000000ull,
410000000000ull,
411000000000ull,
412000000000ull,
413000000000ull,
414000000000ull,
415000000000ull,
416000000000ull,
417000000000ull,
418000000000ull,
419000000000ull,
490000000000ull,
491000000000ull,
814000000000ull,
815000000000ull,
894000000000ull,
895000000000ull,
420000000000ull,
421000000000ull,
422000000000ull,
423000000000ull,
424000000000ull,
425000000000ull,
426000000000ull,
427000000000ull,
428000000000ull,
429000000000ull,
482000000000ull,
483000000000ull,
824000000000ull,
825000000000ull,
848000000000ull,
849000000000ull,
430000000000ull,
431000000000ull,
432000000000ull,
433000000000ull,
434000000000ull,
435000000000ull,
436000000000ull,
437000000000ull,
438000000000ull,
439000000000ull,
492000000000ull,
493000000000ull,
834000000000ull,
835000000000ull,
858000000000ull,
859000000000ull,
440000000000ull,
441000000000ull,
442000000000ull,
443000000000ull,
444000000000ull,
445000000000ull,
446000000000ull,
447000000000ull,
448000000000ull,
449000000000ull,
484000000000ull,
485000000000ull,
844000000000ull,
845000000000ull,
488000000000ull,
489000000000ull,
450000000000ull,
451000000000ull,
452000000000ull,
453000000000ull,
454000000000ull,
455000000000ull,
456000000000ull,
457000000000ull,
458000000000ull,
459000000000ull,
494000000000ull,
495000000000ull,
854000000000ull,
855000000000ull,
498000000000ull,
499000000000ull,
460000000000ull,
461000000000ull,
462000000000ull,
463000000000ull,
464000000000ull,
465000000000ull,
466000000000ull,
467000000000ull,
468000000000ull,
469000000000ull,
486000000000ull,
487000000000ull,
864000000000ull,
865000000000ull,
888000000000ull,
889000000000ull,
470000000000ull,
471000000000ull,
472000000000ull,
473000000000ull,
474000000000ull,
475000000000ull,
476000000000ull,
477000000000ull,
478000000000ull,
479000000000ull,
496000000000ull,
497000000000ull,
874000000000ull,
875000000000ull,
898000000000ull,
899000000000ull,
500000000000ull,
501000000000ull,
502000000000ull,
503000000000ull,
504000000000ull,
505000000000ull,
506000000000ull,
507000000000ull,
508000000000ull,
509000000000ull,
580000000000ull,
581000000000ull,
904000000000ull,
905000000000ull,
984000000000ull,
985000000000ull,
510000000000ull,
511000000000ull,
512000000000ull,
513000000000ull,
514000000000ull,
515000000000ull,
516000000000ull,
517000000000ull,
518000000000ull,
519000000000ull,
590000000000ull,
591000000000ull,
914000000000ull,
915000000000ull,
994000000000ull,
995000000000ull,
520000000000ull,
521000000000ull,
522000000000ull,
523000000000ull,
524000000000ull,
525000000000ull,
526000000000ull,
527000000000ull,
528000000000ull,
529000000000ull,
582000000000ull,
583000000000ull,
924000000000ull,
925000000000ull,
948000000000ull,
949000000000ull,
530000000000ull,
531000000000ull,
532000000000ull,
533000000000ull,
534000000000ull,
535000000000ull,
536000000000ull,
537000000000ull,
538000000000ull,
539000000000ull,
592000000000ull,
593000000000ull,
934000000000ull,
935000000000ull,
958000000000ull,
959000000000ull,
540000000000ull,
541000000000ull,
542000000000ull,
543000000000ull,
544000000000ull,
545000000000ull,
546000000000ull,
547000000000ull,
548000000000ull,
549000000000ull,
584000000000ull,
585000000000ull,
944000000000ull,
945000000000ull,
588000000000ull,
589000000000ull,
550000000000ull,
551000000000ull,
552000000000ull,
553000000000ull,
554000000000ull,
555000000000ull,
556000000000ull,
557000000000ull,
558000000000ull,
559000000000ull,
594000000000ull,
595000000000ull,
954000000000ull,
955000000000ull,
598000000000ull,
599000000000ull,
560000000000ull,
561000000000ull,
562000000000ull,
563000000000ull,
564000000000ull,
565000000000ull,
566000000000ull,
567000000000ull,
568000000000ull,
569000000000ull,
586000000000ull,
587000000000ull,
964000000000ull,
965000000000ull,
988000000000ull,
989000000000ull,
570000000000ull,
571000000000ull,
572000000000ull,
573000000000ull,
574000000000ull,
575000000000ull,
576000000000ull,
577000000000ull,
578000000000ull,
579000000000ull,
596000000000ull,
597000000000ull,
974000000000ull,
975000000000ull,
998000000000ull,
999000000000ull,
600000000000ull,
601000000000ull,
602000000000ull,
603000000000ull,
604000000000ull,
605000000000ull,
606000000000ull,
607000000000ull,
608000000000ull,
609000000000ull,
680000000000ull,
681000000000ull,
806000000000ull,
807000000000ull,
886000000000ull,
887000000000ull,
610000000000ull,
611000000000ull,
612000000000ull,
613000000000ull,
614000000000ull,
615000000000ull,
616000000000ull,
617000000000ull,
618000000000ull,
619000000000ull,
690000000000ull,
691000000000ull,
816000000000ull,
817000000000ull,
896000000000ull,
897000000000ull,
620000000000ull,
621000000000ull,
622000000000ull,
623000000000ull,
624000000000ull,
625000000000ull,
626000000000ull,
627000000000ull,
628000000000ull,
629000000000ull,
682000000000ull,
683000000000ull,
826000000000ull,
827000000000ull,
868000000000ull,
869000000000ull,
630000000000ull,
631000000000ull,
632000000000ull,
633000000000ull,
634000000000ull,
635000000000ull,
636000000000ull,
637000000000ull,
638000000000ull,
639000000000ull,
692000000000ull,
693000000000ull,
836000000000ull,
837000000000ull,
878000000000ull,
879000000000ull,
640000000000ull,
641000000000ull,
642000000000ull,
643000000000ull,
644000000000ull,
645000000000ull,
646000000000ull,
647000000000ull,
648000000000ull,
649000000000ull,
684000000000ull,
685000000000ull,
846000000000ull,
847000000000ull,
688000000000ull,
689000000000ull,
650000000000ull,
651000000000ull,
652000000000ull,
653000000000ull,
654000000000ull,
655000000000ull,
656000000000ull,
657000000000ull,
658000000000ull,
659000000000ull,
694000000000ull,
695000000000ull,
856000000000ull,
857000000000ull,
698000000000ull,
699000000000ull,
660000000000ull,
661000000000ull,
662000000000ull,
663000000000ull,
664000000000ull,
665000000000ull,
666000000000ull,
667000000000ull,
668000000000ull,
669000000000ull,
686000000000ull,
687000000000ull,
866000000000ull,
867000000000ull,
888000000000ull,
889000000000ull,
670000000000ull,
671000000000ull,
672000000000ull,
673000000000ull,
674000000000ull,
675000000000ull,
676000000000ull,
677000000000ull,
678000000000ull,
679000000000ull,
696000000000ull,
697000000000ull,
876000000000ull,
877000000000ull,
898000000000ull,
899000000000ull,
700000000000ull,
701000000000ull,
702000000000ull,
703000000000ull,
704000000000ull,
705000000000ull,
706000000000ull,
707000000000ull,
708000000000ull,
709000000000ull,
780000000000ull,
781000000000ull,
906000000000ull,
907000000000ull,
986000000000ull,
987000000000ull,
710000000000ull,
711000000000ull,
712000000000ull,
713000000000ull,
714000000000ull,
715000000000ull,
716000000000ull,
717000000000ull,
718000000000ull,
719000000000ull,
790000000000ull,
791000000000ull,
916000000000ull,
917000000000ull,
996000000000ull,
997000000000ull,
720000000000ull,
721000000000ull,
722000000000ull,
723000000000ull,
724000000000ull,
725000000000ull,
726000000000ull,
727000000000ull,
728000000000ull,
729000000000ull,
782000000000ull,
783000000000ull,
926000000000ull,
927000000000ull,
968000000000ull,
969000000000ull,
730000000000ull,
731000000000ull,
732000000000ull,
733000000000ull,
734000000000ull,
735000000000ull,
736000000000ull,
737000000000ull,
738000000000ull,
739000000000ull,
792000000000ull,
793000000000ull,
936000000000ull,
937000000000ull,
978000000000ull,
979000000000ull,
740000000000ull,
741000000000ull,
742000000000ull,
743000000000ull,
744000000000ull,
745000000000ull,
746000000000ull,
747000000000ull,
748000000000ull,
749000000000ull,
784000000000ull,
785000000000ull,
946000000000ull,
947000000000ull,
788000000000ull,
789000000000ull,
750000000000ull,
751000000000ull,
752000000000ull,
753000000000ull,
754000000000ull,
755000000000ull,
756000000000ull,
757000000000ull,
758000000000ull,
759000000000ull,
794000000000ull,
795000000000ull,
956000000000ull,
957000000000ull,
798000000000ull,
799000000000ull,
760000000000ull,
761000000000ull,
762000000000ull,
763000000000ull,
764000000000ull,
765000000000ull,
766000000000ull,
767000000000ull,
768000000000ull,
769000000000ull,
786000000000ull,
787000000000ull,
966000000000ull,
967000000000ull,
988000000000ull,
989000000000ull,
770000000000ull,
771000000000ull,
772000000000ull,
773000000000ull,
774000000000ull,
775000000000ull,
776000000000ull,
777000000000ull,
778000000000ull,
779000000000ull,
796000000000ull,
797000000000ull,
976000000000ull,
977000000000ull,
998000000000ull,
999000000000ull
};
static const UINT64 d2b5[] = {
0000000000000ull,
1000000000000ull,
2000000000000ull,
3000000000000ull,
4000000000000ull,
5000000000000ull,
6000000000000ull,
7000000000000ull,
8000000000000ull,
9000000000000ull,
80000000000000ull,
81000000000000ull,
800000000000000ull,
801000000000000ull,
880000000000000ull,
881000000000000ull,
10000000000000ull,
11000000000000ull,
12000000000000ull,
13000000000000ull,
14000000000000ull,
15000000000000ull,
16000000000000ull,
17000000000000ull,
18000000000000ull,
19000000000000ull,
90000000000000ull,
91000000000000ull,
810000000000000ull,
811000000000000ull,
890000000000000ull,
891000000000000ull,
20000000000000ull,
21000000000000ull,
22000000000000ull,
23000000000000ull,
24000000000000ull,
25000000000000ull,
26000000000000ull,
27000000000000ull,
28000000000000ull,
29000000000000ull,
82000000000000ull,
83000000000000ull,
820000000000000ull,
821000000000000ull,
808000000000000ull,
809000000000000ull,
30000000000000ull,
31000000000000ull,
32000000000000ull,
33000000000000ull,
34000000000000ull,
35000000000000ull,
36000000000000ull,
37000000000000ull,
38000000000000ull,
39000000000000ull,
92000000000000ull,
93000000000000ull,
830000000000000ull,
831000000000000ull,
818000000000000ull,
819000000000000ull,
40000000000000ull,
41000000000000ull,
42000000000000ull,
43000000000000ull,
44000000000000ull,
45000000000000ull,
46000000000000ull,
47000000000000ull,
48000000000000ull,
49000000000000ull,
84000000000000ull,
85000000000000ull,
840000000000000ull,
841000000000000ull,
88000000000000ull,
89000000000000ull,
50000000000000ull,
51000000000000ull,
52000000000000ull,
53000000000000ull,
54000000000000ull,
55000000000000ull,
56000000000000ull,
57000000000000ull,
58000000000000ull,
59000000000000ull,
94000000000000ull,
95000000000000ull,
850000000000000ull,
851000000000000ull,
98000000000000ull,
99000000000000ull,
60000000000000ull,
61000000000000ull,
62000000000000ull,