_small_power.c revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* Copyright (c) 1988 by Sun Microsystems, Inc.
*/
#include "base_conversion.h"
unsigned short _max_tiny_powers_ten = 4;
unsigned short _tiny_powers_ten[] = {1, /* begin powers of 10 in
* base 65536 */
/* 10**1 = */ 10, /* * 65536**0 */
/* 10**2 = */ 100, /* * 65536**1 */
/* 10**3 = */ 1000, /* * 65536**1 */
0 } ;
unsigned short _start_tiny_powers_ten[] = {
0, 1, 2, 3, 4,
0}; /* end _start_tiny_powers_ten */
unsigned short _leading_zeros_tiny_powers_ten[] = {
0, 0, 0, 0,
0}; /* end _leading_zeros_tiny_powers_ten */
unsigned short _max_tiny_powers_two = 16;
unsigned short _tiny_powers_two[] = {1, /* begin powers of 2 in
* base 10000 */
/* 2**1 = */ 2, /* * 10000**0 */
/* 2**2 = */ 4, /* * 10000**0 */
/* 2**3 = */ 8, /* * 10000**0 */
/* 2**4 = */ 16, /* * 10000**0 */
/* 2**5 = */ 32, /* * 10000**0 */
/* 2**6 = */ 64, /* * 10000**0 */
/* 2**7 = */ 128, /* * 10000**0 */
/* 2**8 = */ 256, /* * 10000**0 */
/* 2**9 = */ 512, /* * 10000**0 */
/* 2**10 = */ 1024, /* * 10000**0 */
/* 2**11 = */ 2048, /* * 10000**0 */
/* 2**12 = */ 4096, /* * 10000**0 */
/* 2**13 = */ 8192, /* * 10000**0 */
/* 2**14 = */ 6384, 1, /* * 10000**1 */
/* 2**15 = */ 2768, 3, /* * 10000**1 */
0};
unsigned short _start_tiny_powers_two[] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18,
0}; /* end _start_tiny_powers_two */
unsigned short _max_small_powers_ten = 90;
unsigned short _small_powers_ten[] = {1, /* begin powers of 10000 in
* base 65536 */
/* 10000**1 = */ 10000, /* * 65536**0 */
/* 10000**2 = */ 57600, 1525, /* * 65536**1 */
/* 10000**3 = */ 4096, 54437, 232, /* * 65536**2 */
/* 10000**4 = 65536**1 * */ 28609, 34546, 35, /* * 65536**3 */
/* 10000**5 = 65536**1 * */ 25360, 24109, 27591, 5, /* * 65536**4 */
/* 10000**6 = 65536**1 * */ 41216, 52461, 7118, 54210, /* * 65536**4 */
/* 10000**7 = 65536**1 * */ 4096, 609, 15909, 52830, 8271, /* * 65536**5 */
/* 10000**8 = 65536**2 * */ 61313, 34220, 16731, 11629, 1262, /* * 65536**6 */
/* 10000**9 = 65536**2 * */ 40720, 45899, 1813, 31689, 38862, 192, /* * 65536**7 */
/* 10000**10 = 65536**2 * */ 24832, 47605, 49067, 23716, 61891, 25385, 29, /* * 65536**8 */
/* 10000**11 = 65536**2 * */ 4096, 285, 9232, 58239, 57170, 38515, 31729, 4,
/* * 65536**9 */
/* 10000**12 = 65536**3 * */ 32577, 45355, 38512, 38358, 3651, 36101, 44841, /* * 65536**9 */
/* 10000**13 = 65536**3 * */ 56080, 45850, 37384, 3668, 12301, 38269, 18196, 6842,
/* * 65536**10 */
/* 10000**14 = 65536**3 * */ 8448, 18701, 29652, 51080, 65023, 27172, 37903, 3192,
1044, /* * 65536**11 */
/* 10000**15 = 65536**3 * */ 4096, 37081, 37989, 16940, 55138, 17665, 39458, 9751,
20263, 159, /* * 65536**12 */
/* 10000**16 = 65536**4 * */ 7937, 49002, 60772, 28216, 38893, 55975, 63988, 59711,
20227, 24, /* * 65536**13 */
/* 10000**17 = 65536**4 * */ 5904, 8539, 12149, 36793, 43681, 12958, 60573, 21267,
35015, 46478, 3, /* * 65536**14 */
/* 10000**18 = 65536**4 * */ 57600, 63028, 53094, 12749, 18174, 21993, 48265, 14922,
59933, 4030, 37092, /* * 65536**14 */
/* 10000**19 = 65536**4 * */ 4096, 29077, 42481, 30581, 10617, 59493, 46251, 1892,
5557, 4505, 52391, 5659,/* * 65536**15 */
/* 10000**20 = 65536**5 * */ 52929, 10084, 25506, 6346, 61348, 31525, 52689, 61296,
27615, 15903, 40426, 863, /* * 65536**16 */
/* 10000**21 = 65536**5 * */ 21264, 53708, 60962, 25043, 64008, 31200, 50906, 9831,
56185, 43877, 36378, 50952, 131, /* * 65536**17 */
/* 10000**22 = 65536**5 * */ 41216, 15724, 12323, 26246, 59245, 58406, 46648, 13767,
11372, 15053, 61895, 48686, 7054, 20, /* * 65536**18 */
/* 10000**23 = 65536**5 * */ 4096, 25425, 24719, 55736, 8564, 12208, 3664, 51518,
17140, 61079, 30312, 2500, 30693, 4468, 3, /* * 65536**19 */
/* 10000**24 = 65536**6 * */ 36481, 57623, 45627, 58488, 53274, 7238, 2063, 31221,
62631, 25319, 35409, 25293, 54667, 30681, /* * 65536**19 */
/* 10000**25 = 65536**6 * */ 36624, 43054, 17160, 43698, 6780, 36385, 52800, 62346,
52747, 33988, 2855, 31979, 38083, 44325, 4681, /* * 65536**20 */
/* 10000**26 = 65536**6 * */ 24832, 39604, 33321, 54106, 42443, 60698, 47535, 24088,
45785, 18352, 47026, 40291, 5183, 35843, 24059, 714,
/* * 65536**21 */
/* 10000**27 = 65536**6 * */ 4096, 9741, 31019, 65404, 27119, 57580, 26653, 42453,
19179, 26186, 42000, 1847, 62708, 14406, 12813, 247,
109, /* * 65536**22 */
/* 10000**28 = 65536**7 * */ 24129, 9598, 60989, 12011, 4842, 3874, 57395, 38141,
46606, 49307, 60792, 31833, 21440, 9318, 47123, 41461,
16, /* * 65536**23 */
/* 10000**29 = 65536**7 * */ 51984, 38977, 13448, 57354, 56264, 8962, 51839, 64773,
39323, 49783, 15587, 30924, 36601, 56615, 27581, 36454,
35254, 2, /* * 65536**24 */
/* 10000**30 = 65536**7 * */ 8448, 35340, 6075, 36516, 22191, 40873, 1607, 45622,
23883, 24544, 32988, 43530, 61694, 55616, 43150, 32976,
27418, 25379, /* * 65536**24 */
/* 10000**31 = 65536**7 * */ 4096, 31177, 3520, 59871, 10675, 50890, 19916, 24149,
23777, 11324, 41057, 14921, 56274, 30917, 19462, 54968,
47943, 38791, 3872, /* * 65536**25 */
/* 10000**32 = 65536**8 * */ 15873, 11925, 39177, 991, 14589, 3861, 58415, 9076,
62956, 54223, 56328, 50180, 45274, 48333, 32537, 42547,
9731, 59679, 590, /* * 65536**26 */
/* 10000**33 = 65536**8 * */ 1808, 42438, 63147, 20041, 7015, 11522, 28221, 1553,
22569, 60278, 6353, 64979, 24968, 8908, 56671, 15252,
61068, 20668, 10866, 90,/* * 65536**27 */
/* 10000**34 = 65536**8 * */ 57600, 34675, 37115, 10547, 29538, 8782, 13742, 2274,
49789, 48851, 34813, 1529, 63291, 20385, 21567, 26375,
17879, 54310, 4465, 49690, 13, /* * 65536**28 */
/* 10000**35 = 65536**8 * */ 4096, 7813, 24923, 28239, 10857, 6267, 57884, 1104,
13355, 12253, 10222, 25424, 29081, 42697, 59670, 36426,
11816, 5896, 28271, 6729, 6510, 2, /* * 65536**29 */
/* 10000**36 = 65536**9 * */ 11713, 63320, 64714, 46692, 19240, 27004, 38784, 53336,
45253, 51245, 27415, 30647, 7397, 1235, 20017, 4150,
44939, 54131, 54377, 23778, 20993, /* * 65536**29 */
/* 10000**37 = 65536**9 * */ 17168, 58491, 47197, 51410, 58964, 34615, 2072, 33950,
12058, 30921, 20731, 27847, 50068, 30360, 23244, 18766,
10281, 55033, 26067, 23689, 21820, 3203, /* * 65536**30 */
/* 10000**38 = 65536**9 * */ 41216, 3819, 54189, 42817, 20452, 63381, 15905, 23836,
64476, 12991, 24350, 10699, 54745, 44887, 53976, 33978,
52415, 25776, 41725, 46873, 34270, 51761, 488, /* * 65536**31 */
/* 10000**39 = 65536**9 * */ 4096, 54337, 38934, 31580, 54213, 14464, 3799, 7995,
20469, 27486, 35742, 38963, 29424, 22289, 12353, 49612,
63792, 14909, 51757, 22894, 19408, 11901, 38234, 74,
/* * 65536**32 */
/* 10000**40 = 65536**10 * */ 11649, 64451, 53492, 21026, 10320, 46863, 62195, 22291,
5139, 56386, 23933, 54841, 6553, 63577, 14364, 146,
5334, 34483, 30649, 31397, 65121, 4791, 24938, 11,
/* * 65536**33 */
/* 10000**41 = 65536**10 * */ 32528, 30753, 25002, 28674, 49544, 49174, 20510, 31554,
13177, 54576, 1131, 8404, 2368, 6264, 60325, 20399,
59254, 45917, 48925, 57236, 49094, 13120, 16251, 48269,
1, /* * 65536**34 */
/* 10000**42 = 65536**10 * */ 24832, 40051, 4852, 23815, 57751, 30951, 45359, 52825,
47454, 43738, 46135, 23020, 22786, 53481, 57611, 51172,
32136, 33825, 30766, 41577, 18557, 4419, 48258, 19839,
17365, /* * 65536**34 */
/* 10000**43 = 65536**10 * */ 4096, 23293, 29471, 58452, 10401, 57820, 20066, 36761,
1884, 65513, 48769, 44607, 60376, 39716, 56720, 23702,
44800, 23607, 39177, 14310, 43928, 21567, 39106, 19891,
48163, 2649, /* * 65536**35 */
/* 10000**44 = 65536**11 * */ 15681, 63698, 8912, 13287, 42995, 63126, 21637, 36777,
32431, 46620, 39425, 49174, 21052, 57516, 50478, 65056,
16163, 64930, 40889, 59911, 63262, 9978, 14207, 8971,
20805, 404, /* * 65536**36 */
/* 10000**45 = 65536**11 * */ 47888, 38008, 759, 29888, 35867, 23808, 45296, 50805,
43483, 47380, 58073, 29407, 25871, 19276, 30504, 57366,
28150, 37314, 20803, 51663, 10133, 43861, 55010, 58919,
40104, 45478, 61, /* * 65536**37 */
/* 10000**46 = 65536**11 * */ 8448, 44043, 59159, 35955, 61568, 58720, 44336, 21839,
6392, 46891, 22733, 18829, 43895, 22571, 38397, 28046,
31633, 47847, 24429, 12886, 19227, 44634, 63044, 29753,
34206, 31815, 27115, 9, /* * 65536**38 */
/* 10000**47 = 65536**11 * */ 4096, 29369, 3248, 28531, 40302, 6834, 17920, 30813,
25732, 895, 58307, 8540, 58281, 10713, 63556, 37314,
57543, 62026, 44628, 19951, 54878, 42773, 56026, 6179,
32156, 43475, 32422, 28601, 1, /* * 65536**39 */
/* 10000**48 = 65536**12 * */ 23809, 44161, 32287, 43489, 57637, 25618, 47998, 30365,
41030, 61880, 15488, 65191, 53068, 59042, 53249, 29613,
36076, 54840, 25225, 50116, 50437, 64798, 63636, 41326,
54618, 20041, 15843, 14364, /* * 65536**39 */
/* 10000**49 = 65536**12 * */ 63248, 32064, 46402, 63566, 53051, 8570, 63781, 29035,
49273, 15348, 27874, 25771, 44955, 14273, 19009, 46477,
54374, 256, 10304, 10057, 12591, 33264, 15327, 65230,
9281, 9246, 32546, 53041, 2191, /* * 65536**40 */
/* 10000**50 = 65536**12 * */ 57600, 47538, 30012, 33416, 5779, 52543, 14955, 35252,
34782, 2206, 17734, 26701, 42508, 64987, 37777, 57124,
60435, 12392, 17447, 39348, 16878, 46721, 51907, 22530,
20977, 55656, 9634, 32118, 29069, 334, /* * 65536**41 */
/* 10000**51 = 65536**12 * */ 4096, 56181, 37909, 62051, 57882, 28769, 4865, 4138,
25827, 45211, 65456, 19041, 17578, 21510, 30412, 33988,
51260, 645, 15059, 4518, 30804, 6431, 32009, 60688,
58237, 31488, 10572, 55070, 42740, 2099, 51, /* * 65536**42 */
/* 10000**52 = 65536**13 * */ 36033, 38348, 20936, 15516, 61328, 26677, 27526, 58791,
46612, 58866, 37907, 15353, 13530, 36242, 14944, 48130,
35293, 53906, 27993, 21489, 23884, 13157, 21524, 26364,
53942, 15236, 2605, 48147, 25001, 51568, 7, /* * 65536**43 */
/* 10000**53 = 65536**13 * */ 13072, 34362, 43867, 39482, 62015, 47837, 12870, 56280,
36938, 22760, 18758, 50472, 36038, 7984, 23450, 5896,
25984, 31785, 33969, 1727, 30095, 42892, 21783, 57492,
62742, 62566, 34532, 42941, 63042, 46566, 12332, 1,
/* * 65536**44 */
/* 10000**54 = 65536**13 * */ 41216, 16746, 42795, 37829, 54392, 32198, 60131, 44331,
27691, 64644, 19440, 30126, 5237, 22651, 13410, 46714,
56195, 4364, 21762, 39215, 8951, 57008, 60416, 41531,
52644, 62917, 20362, 23397, 35768, 36339, 53889, 11881,
/* * 65536**44 */
/* 10000**55 = 65536**13 * */ 4096, 21809, 2475, 22738, 42508, 9931, 22113, 33671,
27164, 62657, 30087, 59510, 11332, 18383, 16800, 1438,
51464, 1598, 41146, 51432, 59343, 49237, 57850, 17586,
61185, 32432, 9248, 9587, 53618, 63873, 58552, 1454,
1813, /* * 65536**45 */
/* 10000**56 = 65536**14 * */ 52353, 46255, 35993, 16973, 29446, 13051, 54942, 63953,
49984, 3784, 37711, 17336, 3249, 34037, 30179, 51547,
62604, 25235, 65286, 9367, 7087, 21241, 35739, 8587,
57208, 13652, 57779, 31446, 24325, 31122, 65478, 42285,
276, /* * 65536**46 */
/* 10000**57 = 65536**14 * */ 28432, 4900, 13346, 62788, 9341, 32317, 33703, 38095,
6686, 33355, 16433, 23034, 52325, 42047, 1913, 33965,
47993, 45952, 59754, 29017, 27013, 8905, 25433, 23293,
17566, 17241, 26707, 27088, 50702, 58783, 14572, 21719,
13940, 42, /* * 65536**47 */
/* 10000**58 = 65536**14 * */ 24832, 48946, 29451, 47156, 30780, 13409, 48819, 59910,
19092, 38316, 36337, 49003, 14090, 64544, 65439, 42739,
15054, 54427, 55299, 51245, 60571, 56233, 51678, 18936,
27074, 53000, 13430, 23787, 37637, 45352, 42441, 5919,
8242, 28911, 6, /* * 65536**48 */
/* 10000**59 = 65536**14 * */ 4096, 40941, 64220, 32973, 50139, 8040, 14382, 42873,
22773, 39457, 44262, 22872, 5077, 43622, 22888, 39729,
10329, 61353, 5536, 32454, 34107, 40362, 37220, 34381,
13673, 14499, 24823, 41905, 381, 16623, 5784, 17468,
42151, 31961, 64411, /* * 65536**48 */
/* 10000**60 = 65536**15 * */ 7233, 18983, 28183, 44631, 60514, 35242, 61218, 64477,
46754, 61412, 6113, 48626, 13158, 34944, 14260, 11326,
49080, 56977, 6572, 25608, 54516, 27214, 13823, 27150,
26454, 47380, 16603, 15306, 30762, 39784, 27442, 50649,
62895, 27068, 9828, /* * 65536**49 */
/* 10000**61 = 65536**15 * */ 43792, 38847, 28096, 14140, 52922, 42161, 13601, 36173,
16014, 54814, 59818, 49348, 56667, 4055, 64532, 15967,
2624, 7505, 61622, 31850, 35459, 42846, 18728, 51997,
40846, 44292, 34541, 35973, 61887, 41173, 26838, 31979,
8736, 25917, 45666, 1499, /* * 65536**50 */
/* 10000**62 = 65536**15 * */ 8448, 44810, 13095, 43135, 18957, 24987, 29233, 38891,
41071, 64875, 41291, 3047, 53274, 57398, 53162, 34150,
28036, 11680, 51673, 4442, 45100, 56578, 50185, 10233,
47582, 33944, 42038, 8166, 19041, 42291, 16362, 43951,
5391, 41989, 9106, 54760, 228, /* * 65536**51 */
/* 10000**63 = 65536**15 * */ 4096, 31657, 15909, 59582, 46469, 49660, 43252, 23836,
1822, 15403, 43099, 2060, 63857, 23840, 726, 16,
2203, 19126, 45958, 60012, 47461, 14593, 49481, 35961,
30201, 36316, 37275, 8558, 29166, 9097, 48597, 28080,
46114, 1670, 36903, 48109, 60131, 34, /* * 65536**52 */
/* 10000**64 = 65536**16 * */ 31745, 38958, 34651, 48851, 40818, 55513, 12167, 4629,
20678, 27614, 28272, 53066, 55311, 54677, 29038, 9906,
26288, 44486, 13860, 7445, 54106, 15426, 21518, 25599,
29632, 52309, 61207, 26105, 10482, 21948, 51191, 32988,
60892, 62574, 61390, 24540, 21495, 5, /* * 65536**53 */
/* 10000**65 = 65536**16 * */ 59152, 38859, 27112, 9943, 29246, 46308, 43654, 23440,
14626, 39987, 1909, 19322, 59793, 11591, 63863, 39534,
16615, 5643, 63684, 3218, 61456, 62047, 27665, 9667,
35650, 51705, 37277, 29451, 31919, 1535, 11653, 45123,
30057, 11563, 33836, 42583, 61200, 53279, /* * 65536**53 */
/* 10000**66 = 65536**16 * */ 57600, 36081, 3497, 16025, 39885, 7086, 11770, 49925,
52760, 37095, 25125, 20163, 48020, 51475, 48984, 36592,
22272, 6039, 27549, 11541, 29419, 50065, 32011, 8621,
51171, 41935, 9121, 62440, 34173, 19446, 7226, 16418,
28789, 29082, 64932, 47770, 31329, 57194, 8129, /* * 65536**54 */
/* 10000**67 = 65536**16 * */ 4096, 43109, 44817, 15013, 349, 21670, 63961, 64083,
42817, 24290, 56172, 45097, 20804, 37583, 31790, 39986,
34255, 34742, 43113, 5307, 657, 24985, 39815, 35044,
6227, 58480, 55822, 39919, 34823, 19902, 42295, 13422,
58393, 41160, 59285, 18003, 35209, 12108, 34087, 1240,
/* * 65536**55 */
/* 10000**68 = 65536**17 * */ 60353, 41409, 59398, 18882, 38037, 47482, 28751, 33090,
30117, 14650, 25355, 35617, 49750, 56134, 29714, 64965,
18890, 39493, 57954, 17209, 26868, 22612, 25083, 16147,
23222, 58811, 18741, 43323, 58017, 49228, 8725, 6288,
42830, 17624, 11654, 33355, 40380, 19111, 18897, 189,
/* * 65536**56 */
/* 10000**69 = 65536**17 * */ 8976, 42761, 33550, 19847, 1937, 17484, 10813, 13123,
37129, 31635, 58987, 51244, 21658, 31751, 8341, 61702,
35160, 12946, 11178, 1307, 50562, 24899, 27178, 58659,
28415, 59015, 51549, 39899, 51938, 47956, 29095, 32307,
23199, 20231, 19681, 39074, 37793, 13185, 32628, 57875,
28, /* * 65536**57 */
/* 10000**70 = 65536**17 * */ 41216, 54505, 27740, 32111, 39908, 55783, 63803, 28577,
30562, 13393, 50827, 23016, 56875, 56920, 53052, 65368,
8774, 31765, 43095, 30041, 9959, 26451, 6007, 46947,
60390, 2655, 58365, 14697, 13288, 41013, 43013, 47495,
63025, 3907, 8479, 17371, 55386, 62870, 43803, 6562,
26687, 4, /* * 65536**58 */
/* 10000**71 = 65536**17 * */ 4096, 58913, 59964, 53368, 36195, 59193, 45551, 42775,
29992, 44615, 40363, 5323, 32104, 28518, 14765, 32031,
62806, 63882, 55646, 65087, 45399, 8223, 43060, 36548,
58459, 17134, 52325, 47193, 40770, 7739, 23490, 17171,
63071, 20160, 52548, 40893, 17914, 21603, 62505, 25147,
8409, 44072, /* * 65536**58 */
/* 10000**72 = 65536**18 * */ 27521, 60125, 29501, 2815, 14371, 43832, 3478, 33791,
51024, 583, 20927, 45484, 37762, 1743, 37821, 33399,
50191, 3571, 40475, 32059, 54783, 29734, 57834, 14456,
37816, 13190, 13248, 7745, 63741, 20156, 9264, 59692,
20887, 15428, 58914, 36351, 26077, 36464, 17905, 11149,
57219, 6724, /* * 65536**59 */
/* 10000**73 = 65536**18 * */ 24336, 26935, 41638, 39557, 55517, 17424, 52608, 6914,
47396, 5081, 13641, 23353, 8508, 3186, 2010, 24315,
40408, 538, 209, 59600, 19467, 11527, 54873, 61944,
19485, 47338, 33756, 54005, 8045, 46526, 40707, 19525,
15876, 11443, 39250, 56333, 7802, 1675, 11212, 15996,
62421, 8794, 1026, /* * 65536**60 */
/* 10000**74 = 65536**18 * */ 24832, 753, 33902, 1057, 20580, 53783, 25186, 7547,
4703, 26832, 30359, 27313, 17835, 10802, 46470, 11746,
54270, 12213, 58466, 15647, 37174, 60682, 64366, 2100,
20924, 16445, 56823, 38510, 45568, 21163, 33003, 24467,
34787, 6566, 6642, 54069, 40755, 39510, 53695, 53870,
47576, 212, 37726, 156, /* * 65536**61 */
/* 10000**75 = 65536**18 * */ 4096, 62685, 2386, 23877, 17121, 44724, 13358, 41907,
41839, 16333, 31342, 46120, 30711, 19393, 51408, 26578,
63712, 44712, 15207, 44489, 22195, 27848, 40203, 38301,
49408, 23368, 35389, 19134, 14068, 21209, 59469, 29147,
8645, 63772, 33033, 19013, 55402, 55210, 19580, 2273,
42396, 30107, 34816, 58428, 23, /* * 65536**62 */
/* 10000**76 = 65536**19 * */ 64321, 14460, 22716, 33611, 24948, 24456, 34854, 14570,
20672, 29340, 27950, 15341, 13662, 18575, 39364, 48599,
43129, 33302, 33952, 51892, 20922, 36425, 23750, 9940,
51699, 64701, 45815, 42663, 17650, 19572, 40482, 12463,
56039, 38290, 15104, 47093, 33189, 52392, 57531, 7962,
4085, 37362, 31872, 42307, 3, /* * 65536**63 */
/* 10000**77 = 65536**19 * */ 39696, 37398, 14430, 44858, 55112, 48990, 23283, 18790,
21679, 64018, 58972, 60024, 45316, 23060, 33618, 46566,
4999, 38165, 48601, 11132, 37006, 4104, 3094, 51048,
43548, 46496, 63232, 63166, 18061, 32197, 7114, 52241,
59101, 47238, 50898, 56144, 22881, 30280, 42986, 2538,
22287, 65423, 24132, 39983, 36455, /* * 65536**63 */
/* 10000**78 = 65536**19 * */ 8448, 37641, 60970, 53817, 34620, 26809, 53603, 11840,
65315, 27659, 36840, 4774, 53255, 51266, 49374, 31849,
58673, 34634, 847, 47288, 45442, 20110, 7634, 20568,
1069, 54261, 35766, 33680, 2422, 59924, 38352, 23629,
14323, 5530, 34632, 854, 32391, 27171, 13996, 24127,
47987, 53048, 26430, 64082, 44868, 5562, /* * 65536**64 */
/* 10000**79 = 65536**19 * */ 4096, 38041, 24335, 63207, 47059, 53042, 15146, 50163,
20030, 38046, 26364, 35413, 5192, 45534, 65134, 58109,
56587, 56728, 21140, 37889, 591, 42486, 59164, 29196,
10770, 37619, 38327, 15953, 42355, 44721, 12471, 38572,
37445, 55337, 28619, 25604, 31218, 2686, 44786, 34119,
19089, 38938, 1406, 13025, 30322, 52318, 848, /* * 65536**65 */
/* 10000**80 = 65536**20 * */ 39681, 20636, 44529, 51164, 44332, 14397, 19767, 29638,
26576, 60013, 43014, 20891, 62200, 50179, 57762, 41042,
9018, 55056, 29609, 17541, 55738, 53010, 6147, 28807,
15003, 21212, 21224, 58802, 64334, 1815, 42543, 48717,
55265, 2731, 60751, 35938, 60539, 52921, 16417, 54374,
33536, 41237, 30182, 52451, 10738, 33839, 129, /* * 65536**66 */
/* 10000**81 = 65536**20 * */ 55056, 58726, 41564, 7242, 42303, 59708, 15620, 29224,
16042, 20903, 36389, 53331, 1011, 55875, 58888, 42381,
8726, 58976, 6752, 40182, 64532, 53336, 5320, 40218,
22491, 47793, 37668, 34246, 47596, 6344, 36101, 47403,
57881, 55456, 57232, 55381, 39451, 16037, 10395, 55849,
20584, 22605, 33012, 29997, 40035, 29270, 49979, 19,
/* * 65536**67 */
/* 10000**82 = 65536**20 * */ 57600, 304, 19649, 9062, 61761, 53494, 36822, 17359,
57867, 38143, 37317, 49120, 25593, 55754, 47565, 63209,
38050, 2867, 26919, 19814, 58675, 37878, 58442, 51915,
62120, 44919, 51900, 40147, 42793, 8414, 38680, 13620,
3281, 3200, 2574, 39533, 57266, 9427, 12351, 59330,
65481, 19476, 18617, 16765, 60689, 22332, 16930, 1018,
3, /* * 65536**68 */
/* 10000**83 = 65536**20 * */ 4096, 34133, 13118, 52246, 118, 44592, 46914, 56290,
55304, 19309, 13836, 13374, 19415, 29153, 63755, 2537,
7629, 36574, 34085, 28779, 9215, 56409, 41267, 48261,
57713, 15734, 27270, 4383, 51582, 63841, 7811, 22094,
44078, 18932, 50376, 17240, 12464, 37970, 41614, 4476,
48877, 62535, 50731, 11752, 29198, 48108, 23919, 24503,
30155, /* * 65536**68 */
/* 10000**84 = 65536**21 * */ 19137, 47672, 9009, 8324, 13074, 40116, 18454, 55821,
29382, 16450, 48671, 34408, 28834, 20240, 17296, 6483,
50284, 2844, 26625, 10775, 23054, 63951, 9192, 27348,
62406, 7104, 56113, 52348, 31694, 829, 19336, 53771,
58757, 53192, 48006, 58694, 51853, 57729, 5261, 3195,
12946, 5366, 21693, 18913, 50215, 56476, 60081, 22602,
4601, /* * 65536**69 */
/* 10000**85 = 65536**21 * */ 4880, 14056, 50810, 10654, 62486, 16138, 62281, 42703,
30629, 9123, 42174, 23426, 52386, 29231, 13584, 17535,
48797, 5048, 43202, 12878, 51532, 13229, 48286, 65210,
30380, 8498, 11852, 52530, 15891, 37300, 28926, 55606,
47964, 38789, 16916, 6909, 18124, 56824, 58936, 34770,
26887, 53527, 6658, 61950, 16053, 43950, 50105, 61039,
7176, 702, /* * 65536**70 */
/* 10000**86 = 65536**21 * */ 41216, 51560, 1536, 51753, 41401, 39902, 23854, 6927,
46788, 8561, 17232, 40771, 34326, 27433, 53868, 43272,
57155, 24725, 7458, 8352, 12397, 46215, 58306, 24167,
50590, 49979, 32208, 30768, 58751, 37048, 55323, 56989,
56036, 55270, 17502, 17637, 34014, 45645, 3422, 40513,
46633, 41590, 3591, 54744, 41788, 18033, 33986, 60877,
7393, 8743, 107, /* * 65536**71 */
/* 10000**87 = 65536**21 * */ 4096, 34577, 32443, 57978, 26984, 43149, 60584, 2087,
19553, 27123, 27162, 13173, 54189, 1541, 43802, 59547,
17146, 56929, 3804, 28274, 42698, 57555, 58795, 47664,
31303, 20183, 43722, 58930, 49990, 13956, 46277, 62921,
35895, 43462, 47313, 15294, 10851, 62486, 17172, 52506,
47541, 15659, 2618, 18340, 30817, 46840, 58591, 11281,
14681, 6104, 22758, 16, /* * 65536**72 */
/* 10000**88 = 65536**22 * */ 2689, 32076, 53494, 37134, 5093, 31800, 38796, 36430,
45015, 42954, 6784, 40362, 17308, 43147, 16587, 26910,
46920, 37806, 18276, 17274, 19363, 35326, 5643, 37337,
49432, 32423, 6959, 384, 41484, 22433, 5925, 18929,
56261, 32247, 51731, 50253, 41431, 25214, 53724, 19867,
31750, 33525, 30671, 22526, 18910, 25307, 31484, 11081,
28224, 39939, 32400, 2, /* * 65536**73 */
/* 10000**89 = 65536**22 * */ 20240, 27226, 40062, 21186, 14194, 20105, 57268, 56831,
54310, 23924, 16794, 50347, 5582, 49153, 4967, 11715,
31882, 55511, 51400, 55428, 39291, 23914, 8894, 12269,
53185, 30950, 61251, 39973, 62714, 6601, 8879, 22936,
51864, 41464, 39272, 7845, 64612, 29329, 45255, 38581,
46647, 38204, 6635, 17448, 32077, 38389, 8917, 58964,
43674, 17922, 61646, 24943, /* * 65536**73 */
0}; /* end powers of 10000 in base 65536 */
unsigned short _start_small_powers_ten[] = {
0, 1, 2, 4, 7, 10, 14, 18,
23, 28, 34, 41, 49, 56, 64, 73,
83, 93, 104, 115, 127, 139, 152, 166,
181, 195, 210, 226, 243, 260, 278, 296,
315, 334, 354, 375, 397, 418, 440, 463,
487, 511, 536, 561, 587, 613, 640, 668,
697, 725, 754, 784, 815, 846, 878, 910,
943, 976, 1010, 1045, 1080, 1115, 1151, 1188,
1226, 1264, 1302, 1341, 1381, 1421, 1462, 1504,
1546, 1588, 1631, 1675, 1720, 1765, 1810, 1856,
1903, 1950, 1998, 2047, 2096, 2145, 2195, 2246,
2298, 2350, 2402,
0}; /* end _start_small_powers_ten */
unsigned short _leading_zeros_small_powers_ten[] = {
0, 0, 0, 0, 1, 1, 1, 1,
2, 2, 2, 2, 3, 3, 3, 3,
4, 4, 4, 4, 5, 5, 5, 5,
6, 6, 6, 6, 7, 7, 7, 7,
8, 8, 8, 8, 9, 9, 9, 9,
10, 10, 10, 10, 11, 11, 11, 11,
12, 12, 12, 12, 13, 13, 13, 13,
14, 14, 14, 14, 15, 15, 15, 15,
16, 16, 16, 16, 17, 17, 17, 17,
18, 18, 18, 18, 19, 19, 19, 19,
20, 20, 20, 20, 21, 21, 21, 21,
22, 22,
0}; /* end _leading_zeros_small_powers_ten */
unsigned short _max_small_powers_two = 70;
unsigned short _small_powers_two[] = {1, /* begin powers of 65536 in
* base 10000 */
/* 65536**1 = */ 5536, 6, /* * 10000**1 */
/* 65536**2 = */ 7296, 9496, 42, /* * 10000**2 */
/* 65536**3 = */ 656, 7671, 4749, 281, /* * 10000**3 */
/* 65536**4 = */ 1616, 955, 737, 6744, 1844, /* * 10000**4 */
/* 65536**5 = */ 6176, 7470, 6291, 9614, 2581, 2089, 1, /* * 10000**6 */
/* 65536**6 = */ 336, 4395, 5935, 4337, 1426, 1625, 9228, 7,
/* * 10000**7 */
/* 65536**7 = */ 96, 2922, 4963, 8530, 2762, 5348, 6858, 9229,
51, /* * 10000**8 */
/* 65536**8 = */ 1456, 6821, 4317, 4607, 6337, 4634, 938, 6692,
2823, 340, /* * 10000**9 */
/* 65536**9 = */ 416, 598, 3615, 2648, 1827, 5357, 3141, 3062,
1985, 745, 2230, /* * 10000**10 */
/* 65536**10 = */ 2976, 3254, 6559, 3019, 1628, 8327, 3684, 1820,
9029, 7330, 163, 4615, 1, /* * 10000**12 */
/* 65536**11 = */ 5136, 3647, 1951, 6171, 2397, 8943, 9196, 9668,
6473, 8053, 411, 9713, 5780, 9, /* * 10000**13 */
/* 65536**12 = */ 2896, 3451, 4640, 5444, 235, 4161, 7666, 2320,
7894, 3835, 8076, 3866, 1735, 7710, 62, /* * 10000**14 */
/* 65536**13 = */ 2256, 3715, 9658, 8394, 6640, 6839, 6245, 3762,
6393, 2295, 3874, 5105, 301, 3933, 3761, 411,
/* * 10000**15 */
/* 65536**14 = */ 9216, 1024, 1036, 2481, 4057, 4225, 7144, 7363,
6306, 7019, 1508, 6670, 9794, 5063, 6671, 9946,
2695, /* * 10000**16 */
/* 65536**15 = */ 9776, 9261, 2012, 1606, 5812, 6189, 6875, 8389,
8274, 8515, 4291, 5007, 3297, 2958, 3843, 4778,
4706, 7668, 1, /* * 10000**18 */
/* 65536**16 = */ 9936, 2963, 9131, 4007, 5758, 394, 564, 6564,
9846, 3269, 785, 6879, 5008, 7098, 4235, 6195,
3731, 892, 5792, 11, /* * 10000**19 */
/* 65536**17 = */ 5696, 8284, 8640, 2594, 2554, 8922, 4889, 2000,
474, 1715, 7190, 7290, 9370, 7352, 1480, 3279,
5418, 2567, 360, 8855, 75, /* * 10000**20 */
/* 65536**18 = */ 3056, 7553, 5333, 7012, 5949, 8931, 3976, 4046,
7174, 7347, 5079, 4561, 100, 2084, 1468, 2248,
5538, 6421, 9786, 3640, 3232, 497, /* * 10000**21 */
/* 65536**19 = */ 8016, 3435, 2989, 3387, 9621, 1007, 9670, 4718,
1782, 10, 5498, 2986, 3494, 7682, 505, 4550,
3101, 2951, 7380, 5177, 6213, 2575, 3259, /* * 10000**22 */
/* 65536**20 = */ 6576, 8693, 9620, 22, 4055, 7806, 9725, 2221,
6078, 7041, 6994, 6527, 2356, 452, 6027, 2114,
6955, 7061, 5021, 8239, 9100, 5920, 8703, 1359,
2, /* * 10000**24 */
/* 65536**21 = */ 4736, 7544, 3294, 4843, 8630, 590, 8760, 9194,
2369, 8810, 4931, 9312, 5595, 7716, 8435, 2602,
6738, 5277, 2535, 4014, 1598, 2763, 8611, 463,
9984, 13, /* * 10000**25 */
/* 65536**22 = */ 8496, 4621, 5027, 2440, 7421, 2800, 9232, 5393,
5043, 7691, 5754, 3553, 4950, 2449, 6731, 9956,
8625, 7631, 8347, 8120, 2835, 6443, 8604, 9602,
4463, 7399, 91, /* * 10000**26 */
/* 65536**23 = */ 3856, 7535, 9761, 787, 8650, 9435, 6706, 6152,
3397, 429, 4551, 7122, 6488, 106, 8869, 529,
3252, 1747, 9008, 7027, 7780, 7032, 3970, 3063,
101, 119, 2269, 601, /* * 10000**27 */
/* 65536**24 = */ 6816, 9030, 6279, 806, 1564, 8849, 6254, 1426,
6114, 7210, 7149, 7217, 4245, 9340, 9482, 6667,
6544, 2704, 9739, 507, 6138, 143, 4010, 2790,
9212, 9447, 1963, 2006, 3940, /* * 10000**28 */
/* 65536**25 = */ 3376, 4749, 9727, 3171, 3590, 8314, 137, 5328,
6453, 4629, 4119, 168, 7622, 4064, 3565, 659,
1283, 2235, 2829, 579, 3297, 1874, 301, 1720,
5919, 8965, 9085, 8086, 4987, 5822, 2, /* * 10000**30 */
/* 65536**26 = */ 9536, 2588, 9797, 8405, 5027, 9833, 2920, 6711,
8725, 8437, 3124, 7045, 6495, 8255, 2478, 1590,
7009, 1368, 5992, 3885, 5988, 6071, 8619, 3893,
8856, 9031, 3316, 3641, 1030, 3280, 9230, 16,
/* * 10000**31 */
/* 65536**27 = */ 1296, 9663, 3158, 4287, 4561, 8438, 9564, 1238,
5583, 4416, 9762, 1598, 2492, 2250, 2312, 8485,
2245, 9183, 681, 6630, 5032, 8301, 4574, 8137,
2334, 3657, 6567, 8313, 5943, 4832, 8776, 9067,
110, /* * 10000**32 */
/* 65536**28 = */ 4656, 2861, 6016, 3534, 7793, 2661, 1606, 6252,
5607, 3565, 1376, 507, 6191, 2332, 3979, 8113,
3928, 1806, 199, 8149, 602, 7318, 6068, 6413,
4353, 453, 8880, 3807, 4932, 8905, 5606, 2429,
8387, 726, /* * 10000**33 */
/* 65536**29 = */ 5616, 9009, 3328, 3652, 5212, 2370, 8260, 1598,
1326, 2590, 903, 5772, 6699, 525, 3031, 9646,
8579, 3763, 3502, 4169, 6077, 6398, 407, 2140,
240, 6340, 2651, 3748, 8507, 404, 3179, 3689,
6354, 4102, 4763, /* * 10000**34 */
/* 65536**30 = */ 176, 629, 2853, 9288, 7567, 4479, 2895, 662,
1214, 6931, 5982, 9711, 3491, 306, 3061, 120,
6562, 8197, 1738, 2537, 9596, 9156, 5085, 9711,
2664, 9814, 7485, 6305, 9316, 2297, 1597, 3138,
9922, 315, 4855, 1217, 3, /* * 10000**36 */
/* 65536**31 = */ 4336, 3297, 8330, 7065, 1783, 5341, 6078, 3807,
5044, 7972, 1775, 9304, 9821, 6900, 7703, 4380,
8020, 1596, 5292, 6227, 83, 506, 571, 3427,
1549, 7769, 1278, 3540, 4701, 7249, 6051, 2435,
8758, 8866, 9350, 9129, 4586, 20, /* * 10000**37 */
/* 65536**32 = */ 4096, 608, 6490, 6433, 6994, 9465, 2811, 5388,
8537, 6050, 8648, 8581, 31, 2769, 9034, 8166,
7429, 8018, 6976, 7354, 300, 1764, 4372, 5614,
7723, 9337, 5923, 5820, 7936, 1274, 5846, 9820,
249, 9574, 9709, 9425, 7929, 780, 134, /* * 10000**38 */
/* 65536**33 = */ 5456, 2731, 2627, 5621, 947, 4080, 3730, 6396,
6144, 8751, 4982, 1095, 7858, 9392, 370, 6183,
466, 6340, 1687, 7467, 8999, 7474, 4952, 7757,
1322, 249, 924, 8343, 1841, 4877, 1810, 1833,
2824, 3302, 1768, 435, 6718, 49, 6941, 878,
/* * 10000**39 */
/* 65536**34 = */ 4416, 4572, 973, 5074, 9431, 3089, 6019, 2703,
5103, 5805, 7706, 4575, 9067, 5610, 9876, 1518,
297, 1298, 782, 8372, 7400, 5044, 3259, 5210,
9431, 7132, 6896, 2903, 6453, 1142, 2123, 9353,
5677, 8380, 9289, 9748, 3699, 5291, 5701, 6096,
5758, /* * 10000**40 */
/* 65536**35 = */ 6976, 9532, 6493, 6043, 3269, 2514, 1434, 3256,
7926, 9924, 8462, 7705, 4899, 6384, 307, 8375,
4146, 7675, 7658, 2517, 1267, 2086, 4885, 3921,
4162, 4562, 3002, 6206, 2837, 4404, 416, 2122,
9169, 8890, 8826, 5809, 1554, 5224, 5413, 4821,
6242, 7739, 3, /* * 10000**42 */
/* 65536**36 = */ 9136, 4869, 7721, 6606, 6791, 8931, 5101, 4615,
9675, 1209, 675, 343, 1365, 3935, 1393, 6016,
7142, 5976, 4989, 4304, 612, 6401, 7031, 8671,
6531, 2510, 8972, 6092, 6305, 9140, 1839, 121,
3491, 5131, 9003, 6471, 1019, 252, 605, 4534,
7310, 4014, 7330, 24, /* * 10000**43 */
/* 65536**37 = */ 6896, 4657, 5371, 1419, 8274, 6525, 7670, 2075,
1048, 6433, 4729, 3272, 8888, 3105, 7437, 3707,
7539, 9945, 8272, 9643, 6241, 9949, 5565, 8738,
2446, 8167, 5445, 4112, 4410, 364, 608, 1914,
6970, 8094, 4236, 2461, 3598, 1754, 932, 4189,
7874, 9413, 5190, 904, 162, /* * 10000**44 */
/* 65536**38 = */ 6256, 6345, 4380, 786, 4167, 6625, 3887, 7470,
5331, 9957, 1903, 4788, 5414, 7530, 1586, 693,
203, 4930, 8972, 7865, 3377, 8571, 3045, 45,
8325, 8547, 7044, 9721, 711, 4008, 8276, 9888,
8463, 4063, 3545, 1862, 4659, 3725, 1049, 6413,
7917, 1973, 3534, 8563, 2759, 1062, /* * 10000**45 */
/* 65536**39 = */ 3216, 6919, 9266, 4, 3666, 3309, 1852, 9398,
1373, 6894, 265, 8846, 3283, 1564, 9448, 6846,
8350, 3810, 1301, 9442, 6621, 1192, 3293, 9081,
7496, 750, 1603, 1625, 9808, 2953, 2203, 4208,
5975, 8237, 1752, 1267, 4429, 2134, 1679, 9245,
540, 4417, 7159, 7929, 9944, 7318, 6961, /* * 10000**46 */
/* 65536**40 = */ 3776, 4660, 1922, 2874, 5008, 2649, 4360, 9467,
2519, 4188, 2221, 3197, 2661, 9825, 4379, 1375,
472, 6887, 7310, 9440, 5735, 2309, 7864, 3997,
7371, 1131, 9128, 6505, 7738, 2086, 5167, 9927,
5178, 9192, 3057, 5599, 7248, 2850, 8932, 1324,
29, 6057, 1171, 1864, 1952, 7622, 4061, 5624,
4, /* * 10000**48 */
/* 65536**41 = */ 3936, 2506, 734, 3063, 3124, 7686, 4323, 7887,
7229, 1282, 2904, 3150, 2249, 8641, 6534, 704,
2006, 9526, 3294, 7751, 830, 215, 240, 8931,
2055, 9525, 24, 1502, 205, 8812, 8187, 9735,
468, 853, 3796, 6104, 1623, 5104, 6234, 8202,
9226, 1742, 2351, 6782, 8488, 8185, 1648, 1083,
9004, 29, /* * 10000**49 */
/* 65536**42 = */ 9696, 9010, 9849, 1579, 4538, 171, 2501, 768,
1435, 4533, 4950, 7432, 1109, 1317, 8855, 170,
9834, 9082, 8014, 1129, 5679, 5684, 49, 3589,
5010, 3873, 5288, 5235, 4723, 4576, 982, 6620,
4652, 5281, 246, 6622, 4933, 6384, 4874, 7130,
8892, 4180, 6558, 560, 4016, 7791, 6974, 6293,
3242, 9553, 195, /* * 10000**50 */
/* 65536**43 = */ 7056, 2903, 3118, 5896, 2722, 6397, 6659, 8038,
9194, 4092, 2908, 5995, 8133, 8184, 9911, 9152,
2143, 2400, 5030, 2670, 6348, 3842, 8518, 9028,
8880, 3763, 9753, 5617, 839, 3692, 6344, 4758,
6857, 6107, 6468, 1007, 2486, 4157, 4305, 3626,
2842, 8759, 2487, 3141, 6250, 7295, 9125, 3757,
8958, 6658, 2128, 1284, /* * 10000**51 */
/* 65536**44 = */ 2016, 7250, 277, 692, 7634, 1634, 6149, 2012,
666, 3571, 5511, 7380, 3578, 9928, 935, 430,
3633, 450, 1810, 4086, 29, 916, 831, 4834,
8851, 169, 7275, 9631, 1521, 4414, 4580, 1866,
1538, 3293, 6875, 7144, 9099, 9444, 9724, 1751,
7078, 8451, 5436, 4880, 586, 6082, 3812, 8558,
6115, 7397, 4247, 2174, 8416, /* * 10000**52 */
/* 65536**45 = */ 576, 9212, 986, 2732, 6359, 5854, 1577, 8731,
165, 3422, 2299, 1799, 6177, 4861, 1226, 6614,
5106, 5009, 3111, 1958, 7323, 1168, 6419, 6470,
816, 3593, 5513, 4893, 3378, 5878, 3808, 194,
6600, 128, 1582, 4242, 8887, 1619, 3962, 7269,
5289, 1123, 9085, 1310, 6081, 3795, 3091, 2074,
8728, 9872, 9872, 3101, 5226, 5156, 5, /* * 10000**54 */
/* 65536**46 = */ 8736, 1406, 8868, 819, 1329, 9420, 8640, 5154,
660, 5279, 9690, 4332, 7663, 978, 8997, 3141,
162, 3291, 5326, 9879, 2961, 4041, 3243, 9988,
9781, 6199, 3515, 3780, 2678, 2749, 9612, 8943,
8873, 1861, 8795, 4079, 6233, 1028, 4248, 7150,
7544, 1594, 1923, 1700, 3007, 8973, 6650, 1923,
1802, 8593, 6094, 1839, 1465, 7867, 1473, 36,
/* * 10000**55 */
/* 65536**47 = */ 2496, 868, 2468, 2102, 2717, 7830, 2775, 9173,
7542, 8872, 8436, 5459, 764, 4431, 3806, 7539,
7422, 39, 6304, 5050, 6842, 387, 9733, 4823,
3075, 1771, 9672, 9119, 182, 6017, 49, 1443,
9543, 651, 1322, 8984, 2625, 1859, 3669, 240,
445, 3829, 6179, 3803, 7894, 4235, 3207, 9315,
8478, 2658, 2700, 647, 2296, 1314, 6086, 8954,
236, /* * 10000**56 */
/* 65536**48 = */ 7856, 1605, 8538, 2846, 5089, 4687, 3716, 9919,
2629, 4825, 9844, 6315, 5285, 5026, 9055, 849,
7602, 4549, 9204, 8113, 411, 7275, 4428, 3914,
4814, 4411, 5800, 6171, 7320, 1310, 697, 8773,
9504, 6477, 2864, 4088, 878, 8633, 3768, 2686,
5095, 260, 2038, 3905, 6111, 6696, 1711, 8860,
5256, 255, 4625, 9488, 4897, 9351, 708, 9230,
5180, 1552, /* * 10000**57 */
/* 65536**49 = */ 816, 6765, 6891, 1411, 1361, 585, 2496, 5940,
9151, 8435, 8006, 4356, 9152, 8575, 1421, 9410,
241, 3085, 3161, 3890, 8471, 7098, 1085, 6928,
5957, 847, 7711, 669, 3966, 136, 7182, 1896,
1639, 8963, 7557, 9941, 7400, 8044, 6225, 4395,
3525, 2752, 4075, 1436, 6089, 9107, 5982, 177,
5282, 6131, 5674, 5878, 1975, 9235, 773, 1926,
6970, 5825, 174, 1, /* * 10000**59 */
/* 65536**50 = */ 7376, 6387, 2911, 6461, 3747, 7480, 1690, 198,
8866, 6135, 6501, 7289, 4024, 1181, 2859, 3078,
5846, 145, 9514, 5757, 951, 46, 3083, 523,
3356, 8036, 3650, 4119, 165, 8888, 445, 3324,
5934, 9910, 4292, 2907, 1554, 87, 4322, 1521,
3207, 8176, 7237, 6403, 8117, 6257, 6039, 9081,
2315, 5832, 1447, 7797, 2125, 7907, 9851, 7407,
8542, 2879, 1443, 6680, 6, /* * 10000**60 */
/* 65536**51 = */ 3536, 6771, 7158, 7177, 5736, 3840, 4863, 7208,
3474, 1464, 9748, 4512, 4637, 4392, 5166, 8545,
3629, 1034, 458, 3103, 2471, 892, 7790, 5532,
2245, 9290, 9066, 6709, 436, 5052, 1768, 4586,
2408, 651, 5462, 1286, 1998, 1818, 7163, 8580,
3922, 3354, 7616, 4441, 7679, 1951, 2915, 1997,
5357, 1129, 8814, 3678, 5099, 7083, 6956, 9716,
7060, 4129, 7321, 9938, 6994, 43, /* * 10000**61 */
/* 65536**52 = */ 5296, 7429, 1064, 8787, 1535, 5836, 6737, 5360,
9305, 7475, 4524, 2317, 8, 4504, 7762, 8978,
6147, 8012, 2266, 1210, 9792, 4307, 1287, 6205,
4579, 4156, 260, 445, 7670, 733, 757, 9686,
743, 9720, 1899, 5092, 9359, 7542, 6283, 5824,
8426, 3452, 4159, 5290, 53, 1064, 231, 4497,
9441, 5252, 1706, 9172, 2173, 4907, 4838, 3367,
7839, 4418, 6120, 4749, 3918, 3890, 286, /* * 10000**62 */
/* 65536**53 = */ 8656, 1651, 8994, 1809, 5347, 8161, 4279, 7115,
7611, 2584, 3858, 6565, 9475, 4197, 9949, 3079,
8635, 4722, 7087, 3415, 6443, 7725, 3064, 9317,
9, 7629, 6599, 5226, 4036, 8154, 5560, 6657,
6726, 4795, 6565, 1763, 4796, 3850, 2121, 2845,
4508, 5496, 6852, 2698, 8079, 654, 5789, 6906,
4847, 6947, 8841, 7375, 9838, 9398, 5327, 1421,
8773, 9423, 9278, 574, 1175, 720, 8792, 1876,
/* * 10000**63 */
/* 65536**54 = */ 9616, 6663, 1609, 3568, 2853, 4339, 2031, 6688,
1127, 4908, 4827, 9125, 6626, 6691, 5175, 548,
3545, 7584, 4583, 1888, 833, 7827, 2934, 8997,
885, 4209, 2061, 4388, 7549, 6997, 3600, 9595,
8766, 9203, 5268, 2995, 2214, 5032, 7090, 3822,
4934, 5401, 8693, 1036, 3030, 3492, 2195, 9555,
8254, 361, 9307, 5944, 1506, 1807, 1869, 1573,
6644, 3223, 4768, 8474, 8567, 3620, 7231, 3155,
2300, 1, /* * 10000**65 */
/* 65536**55 = */ 4176, 9387, 1096, 2997, 7592, 9403, 2053, 8081,
2903, 8078, 4437, 7637, 1340, 4806, 2654, 7647,
8714, 8256, 1192, 2008, 3864, 5732, 3919, 6625,
8324, 6829, 7280, 5477, 22, 4868, 5460, 1517,
1460, 5263, 3966, 4850, 6335, 1663, 3219, 5060,
9676, 2273, 9847, 2269, 875, 1570, 4407, 867,
6765, 2595, 5923, 6978, 6176, 3425, 8627, 377,
1494, 6071, 6774, 3313, 2450, 6470, 4545, 3471,
3481, 611, 8, /* * 10000**66 */
/* 65536**56 = */ 8336, 3799, 8977, 8580, 8953, 4764, 7036, 9876,
3968, 8838, 6173, 7515, 8292, 4802, 4041, 1188,
821, 2329, 3024, 4105, 4264, 7676, 3151, 1687,
5084, 9900, 6839, 8386, 7690, 9395, 8462, 3897,
2505, 5537, 268, 5595, 2347, 7888, 1286, 3257,
9499, 6743, 7894, 5718, 8876, 7255, 7441, 8594,
6724, 255, 6739, 9026, 6070, 1279, 1522, 3612,
3260, 8847, 651, 5166, 4916, 3978, 3523, 5246,
3566, 5311, 8294, 52, /* * 10000**67 */
/* 65536**57 = */ 8096, 5894, 1574, 7714, 43, 2184, 2523, 9650,
1575, 3179, 1651, 3501, 3766, 8219, 2451, 3254,
2844, 8725, 6127, 5099, 2408, 2283, 4244, 9887,
6081, 9719, 5587, 9722, 6802, 1122, 7208, 9254,
3224, 9251, 9936, 5679, 9659, 3352, 992, 9185,
7809, 1502, 5381, 6586, 5014, 1853, 928, 5154,
390, 5752, 8779, 2100, 2677, 330, 4178, 6007,
1032, 8359, 1917, 3248, 8832, 4428, 9401, 4946,
5758, 5069, 392, 2231, 346, /* * 10000**68 */
/* 65536**58 = */ 9456, 2241, 2296, 5023, 8603, 910, 1641, 8936,
2443, 9272, 770, 2358, 1521, 5067, 2602, 212,
5711, 240, 6254, 8223, 4108, 4472, 9747, 2246,
9214, 4242, 3330, 7613, 9589, 5975, 845, 7383,
8715, 4670, 6325, 4066, 9448, 9976, 3685, 4663,
819, 6255, 9064, 5361, 669, 1072, 9555, 8626,
2817, 5631, 8240, 3137, 3640, 4425, 1572, 2133,
2522, 2191, 7294, 3496, 5239, 1291, 2961, 2669,
8708, 9722, 3335, 3388, 77, 2269, /* * 10000**69 */
/* 65536**59 = */ 8416, 8146, 5348, 2376, 9128, 4143, 545, 451,
3012, 5808, 3486, 8940, 5709, 881, 7880, 687,
7487, 6067, 3720, 3514, 5782, 3919, 8702, 7736,
3429, 4098, 2686, 7394, 4598, 447, 7084, 7829,
4625, 239, 5811, 830, 779, 9057, 5544, 8524,
4545, 3050, 9297, 7901, 8723, 8979, 3505, 6156,
1449, 1683, 3545, 437, 1604, 657, 1594, 8593,
5771, 5905, 3944, 1659, 6020, 1312, 560, 4990,
4981, 8062, 6279, 7830, 8477, 1690, 4870, 1,
/* * 10000**71 */
/* 65536**60 = */ 976, 1411, 9919, 8589, 8182, 5470, 4277, 310,
7388, 2827, 6561, 4689, 3615, 4636, 9457, 4874,
2539, 5979, 3685, 7887, 2183, 3479, 9959, 3527,
3648, 9005, 6554, 789, 2987, 4730, 9956, 7769,
5312, 3419, 1265, 2963, 7987, 4657, 940, 5203,
6986, 4591, 8183, 866, 2314, 4916, 2530, 2592,
2010, 6588, 6150, 2465, 2610, 7664, 8690, 1294,
4572, 7906, 2686, 75, 7595, 2685, 8762, 8310,
7518, 3878, 3382, 8035, 9990, 1399, 1401, 7453,
9, /* * 10000**72 */
/* 65536**61 = */ 3136, 7692, 831, 3710, 1847, 5547, 3325, 4193,
2002, 8690, 227, 1304, 3374, 8590, 4336, 4444,
7852, 6386, 9345, 6585, 6778, 4055, 5825, 741,
8449, 5589, 1961, 862, 1207, 4856, 7416, 4434,
8153, 2401, 5450, 1460, 5451, 3497, 4365, 9971,
8594, 1562, 1180, 7807, 5984, 141, 8299, 5895,
4348, 4342, 9576, 6548, 5118, 5010, 8068, 539,
9078, 7579, 1511, 2808, 6413, 3934, 4033, 1584,
4114, 7883, 8171, 3926, 7300, 339, 5111, 8990,
8668, 63, /* * 10000**73 */
/* 65536**62 = */ 896, 3464, 828, 4011, 9306, 298, 3554, 4242,
553, 963, 3624, 437, 7010, 6352, 393, 406,
7799, 4357, 5776, 5807, 6169, 2904, 3779, 353,
8524, 6075, 2729, 4887, 7602, 726, 6801, 5228,
4071, 5370, 6940, 8278, 6307, 5116, 7561, 8064,
1732, 3560, 2722, 7286, 8588, 9797, 4191, 9108,
9166, 5810, 1194, 2488, 6167, 8905, 7284, 6781,
9345, 6837, 4571, 4995, 771, 654, 2474, 5457,
5487, 7250, 6320, 7890, 8534, 4547, 6722, 2135,
4968, 5580, 418, /* * 10000**74 */
/* 65536**63 = */ 256, 2576, 6510, 324, 4303, 718, 6903, 7003,
9210, 4794, 8775, 2982, 226, 613, 7281, 195,
7925, 1463, 4495, 5408, 9644, 6976, 9579, 8975,
1179, 7063, 7562, 2320, 6701, 8959, 5098, 6779,
1322, 5003, 5035, 2493, 9807, 3514, 1228, 1859,
1205, 9516, 2323, 3137, 919, 2479, 5587, 9360,
2668, 4236, 8066, 1396, 6818, 8497, 2587, 7358,
8364, 879, 9869, 2280, 994, 5600, 350, 6166,
1796, 1963, 5037, 463, 5936, 8125, 2796, 3416,
6844, 3439, 620, 2743, /* * 10000**75 */
/* 65536**64 = */ 7216, 2413, 6242, 6329, 3535, 3048, 9716, 3847,
2459, 9947, 9823, 5862, 684, 5051, 1633, 7237,
4082, 1105, 3913, 8147, 4628, 2342, 5068, 8381,
5768, 8500, 9520, 3082, 1945, 941, 1246, 1960,
3022, 5276, 6548, 4248, 7893, 7776, 1243, 9474,
3063, 8474, 2492, 1662, 8144, 9768, 5878, 3576,
1393, 7987, 1138, 1120, 3602, 4075, 7322, 847,
1327, 963, 550, 6758, 7732, 8115, 4300, 7273,
3065, 8942, 7697, 6179, 4733, 8902, 1907, 9305,
772, 3159, 4862, 9313, 7976, 1, /* * 10000**77 */
/* 65536**65 = */ 7776, 5658, 1530, 8253, 1241, 6899, 7753, 668,
8242, 2709, 5318, 6414, 5047, 6822, 3390, 4737,
5381, 4036, 9612, 7436, 4002, 5647, 1799, 431,
6577, 3806, 8429, 4347, 7724, 2124, 4024, 8726,
2637, 7742, 4306, 9844, 3491, 9666, 2213, 6215,
8857, 2143, 1249, 7169, 6077, 9021, 4628, 5264,
5087, 5163, 2312, 7783, 8012, 2806, 1300, 6980,
1827, 9865, 1111, 5893, 8641, 5316, 7987, 1513,
5507, 3003, 9196, 7392, 2387, 2494, 5495, 4983,
4774, 3289, 6735, 8633, 6172, 7813, 11, /* * 10000**78 */
/* 65536**66 = */ 7936, 3648, 7165, 8638, 4263, 1002, 5822, 8862,
2094, 1039, 8207, 2757, 2230, 9672, 1751, 6253,
262, 8564, 8485, 8691, 3810, 8024, 6274, 7809,
3097, 3119, 7891, 234, 8558, 9086, 788, 3509,
5621, 6999, 8755, 4608, 692, 3861, 4517, 749,
3084, 1697, 8514, 5770, 9255, 86, 9732, 1839,
6133, 5709, 3071, 1843, 5440, 6528, 5194, 9801,
16, 4618, 5148, 935, 5197, 6009, 876, 8315,
6672, 699, 8740, 2380, 2882, 2432, 6666, 1901,
1524, 9194, 6517, 6428, 4773, 3222, 2103, 77,
/* * 10000**79 */
/* 65536**67 = */ 3696, 7337, 9352, 6926, 6582, 5015, 7161, 8187,
465, 5633, 762, 6538, 3353, 8808, 6923, 8089,
1412, 2025, 9085, 8988, 9122, 5838, 5452, 1746,
6173, 7085, 5018, 7140, 8626, 6181, 1919, 994,
853, 3304, 3552, 7269, 1116, 9034, 1415, 6069,
7935, 4803, 4627, 8518, 3499, 6753, 6921, 4483,
4346, 5218, 8474, 2977, 7920, 4660, 6769, 2379,
2811, 5359, 9592, 9900, 6722, 9883, 8919, 7584,
685, 3395, 9225, 2958, 355, 2441, 8916, 7623,
9326, 7972, 8366, 8123, 5458, 8276, 3326, 56,
506, /* * 10000**80 */
/* 65536**68 = */ 1056, 1854, 758, 3630, 3348, 6180, 6166, 165,
7899, 7340, 5348, 9365, 5055, 3066, 3454, 6080,
9848, 9658, 7831, 7108, 8301, 8955, 537, 1590,
5174, 3016, 6084, 9930, 331, 4552, 4097, 5364,
8723, 6534, 5525, 4464, 5816, 9542, 2645, 7263,
7934, 1414, 6554, 5974, 6290, 7544, 8914, 3249,
8840, 5332, 6263, 6210, 4635, 9666, 3728, 4508,
7291, 5847, 6434, 9265, 7878, 6347, 357, 3482,
1868, 9214, 1849, 5947, 4671, 5704, 4973, 9361,
8699, 4115, 6427, 3760, 8728, 1710, 6977, 1818,
1585, 3316, /* * 10000**81 */
/* 65536**69 = */ 6016, 664, 8439, 648, 8318, 4423, 5479, 3853,
9949, 6006, 4636, 9693, 5857, 6510, 1440, 1518,
8376, 1231, 5717, 1215, 924, 9286, 1524, 5765,
3684, 485, 793, 2354, 7497, 2047, 824, 1957,
5684, 9394, 9226, 8916, 6634, 2630, 5258, 5308,
224, 9905, 2215, 5017, 595, 4810, 7348, 4887,
9538, 5887, 6917, 9608, 61, 1356, 1558, 726,
2522, 6777, 6947, 3209, 3331, 8627, 7952, 8695,
4067, 948, 6450, 4715, 7631, 7959, 7912, 5090,
9015, 7655, 6845, 7482, 2853, 3762, 5884, 173,
6479, 7764, 1732, 2, /* * 10000**83 */
0}; /* end powers of 65536 in base 10000 */
unsigned short _start_small_powers_two[] = {
0, 1, 3, 6, 10, 15, 22, 30,
39, 49, 60, 73, 87, 102, 118, 135,
154, 174, 195, 217, 240, 265, 291, 318,
346, 375, 406, 438, 471, 505, 540, 577,
615, 654, 694, 735, 778, 822, 867, 913,
960, 1009, 1059, 1110, 1162, 1215, 1270, 1326,
1383, 1441, 1501, 1562, 1624, 1687, 1751, 1817,
1884, 1952, 2021, 2091, 2163, 2236, 2310, 2385,
2461, 2539, 2618, 2698, 2779, 2861, 2945,
0}; /* end _start_small_powers_two */