lexical_parse_float/
table_bellerophon_radix.rs

1//! Cached exponents for basen values with 80-bit extended floats.
2//!
3//! Exact versions of base**n as an extended-precision float, with both
4//! large and small powers. Use the large powers to minimize the amount
5//! of compounded error. This is used in the Bellerophon algorithm.
6//!
7//! These values were calculated using Python, using the arbitrary-precision
8//! integer to calculate exact extended-representation of each value.
9//! These values are all normalized.
10//!
11//! These files takes ~30 KB of storage.
12//!
13//! Total array storage:
14//!  With radix: ~20 KB:
15//!     2534 u64
16//!
17//! DO NOT MODIFY: Generated by `etc/bellerophon_table.py`
18
19#![cfg(feature = "radix")]
20#![doc(hidden)]
21
22use crate::bellerophon::BellerophonPowers;
23#[cfg(feature = "compact")]
24use crate::table_bellerophon_decimal::BASE10_POWERS;
25
26/// Get Bellerophon powers from radix.
27#[inline(always)]
28pub const fn bellerophon_powers(radix: u32) -> &'static BellerophonPowers {
29    match radix {
30        3 => &BASE3_POWERS,
31        5 => &BASE5_POWERS,
32        6 => &BASE6_POWERS,
33        7 => &BASE7_POWERS,
34        9 => &BASE9_POWERS,
35        #[cfg(feature = "compact")]
36        10 => &BASE10_POWERS,
37        11 => &BASE11_POWERS,
38        12 => &BASE12_POWERS,
39        13 => &BASE13_POWERS,
40        14 => &BASE14_POWERS,
41        15 => &BASE15_POWERS,
42        17 => &BASE17_POWERS,
43        18 => &BASE18_POWERS,
44        19 => &BASE19_POWERS,
45        20 => &BASE20_POWERS,
46        21 => &BASE21_POWERS,
47        22 => &BASE22_POWERS,
48        23 => &BASE23_POWERS,
49        24 => &BASE24_POWERS,
50        25 => &BASE25_POWERS,
51        26 => &BASE26_POWERS,
52        27 => &BASE27_POWERS,
53        28 => &BASE28_POWERS,
54        29 => &BASE29_POWERS,
55        30 => &BASE30_POWERS,
56        31 => &BASE31_POWERS,
57        33 => &BASE33_POWERS,
58        34 => &BASE34_POWERS,
59        35 => &BASE35_POWERS,
60        36 => &BASE36_POWERS,
61        // Fallback if we have an invalid radix.
62        _ => &INVALID_POWERS,
63    }
64}
65
66// HIGH LEVEL
67// ----------
68
69pub const INVALID_POWERS: BellerophonPowers = BellerophonPowers {
70    small: &[],
71    large: &[],
72    small_int: &[],
73    step: 0,
74    bias: 0,
75    log2: 0,
76    log2_shift: 0,
77};
78
79pub const BASE3_POWERS: BellerophonPowers = BellerophonPowers {
80    small: &BASE3_SMALL_MANTISSA,
81    large: &BASE3_LARGE_MANTISSA,
82    small_int: &BASE3_SMALL_INT_POWERS,
83    step: BASE3_STEP,
84    bias: BASE3_BIAS,
85    log2: BASE3_LOG2_MULT,
86    log2_shift: BASE3_LOG2_SHIFT,
87};
88
89pub const BASE5_POWERS: BellerophonPowers = BellerophonPowers {
90    small: &BASE5_SMALL_MANTISSA,
91    large: &BASE5_LARGE_MANTISSA,
92    small_int: &BASE5_SMALL_INT_POWERS,
93    step: BASE5_STEP,
94    bias: BASE5_BIAS,
95    log2: BASE5_LOG2_MULT,
96    log2_shift: BASE5_LOG2_SHIFT,
97};
98
99pub const BASE6_POWERS: BellerophonPowers = BellerophonPowers {
100    small: &BASE6_SMALL_MANTISSA,
101    large: &BASE6_LARGE_MANTISSA,
102    small_int: &BASE6_SMALL_INT_POWERS,
103    step: BASE6_STEP,
104    bias: BASE6_BIAS,
105    log2: BASE6_LOG2_MULT,
106    log2_shift: BASE6_LOG2_SHIFT,
107};
108
109pub const BASE7_POWERS: BellerophonPowers = BellerophonPowers {
110    small: &BASE7_SMALL_MANTISSA,
111    large: &BASE7_LARGE_MANTISSA,
112    small_int: &BASE7_SMALL_INT_POWERS,
113    step: BASE7_STEP,
114    bias: BASE7_BIAS,
115    log2: BASE7_LOG2_MULT,
116    log2_shift: BASE7_LOG2_SHIFT,
117};
118
119pub const BASE9_POWERS: BellerophonPowers = BellerophonPowers {
120    small: &BASE9_SMALL_MANTISSA,
121    large: &BASE9_LARGE_MANTISSA,
122    small_int: &BASE9_SMALL_INT_POWERS,
123    step: BASE9_STEP,
124    bias: BASE9_BIAS,
125    log2: BASE9_LOG2_MULT,
126    log2_shift: BASE9_LOG2_SHIFT,
127};
128
129pub const BASE11_POWERS: BellerophonPowers = BellerophonPowers {
130    small: &BASE11_SMALL_MANTISSA,
131    large: &BASE11_LARGE_MANTISSA,
132    small_int: &BASE11_SMALL_INT_POWERS,
133    step: BASE11_STEP,
134    bias: BASE11_BIAS,
135    log2: BASE11_LOG2_MULT,
136    log2_shift: BASE11_LOG2_SHIFT,
137};
138
139pub const BASE12_POWERS: BellerophonPowers = BellerophonPowers {
140    small: &BASE12_SMALL_MANTISSA,
141    large: &BASE12_LARGE_MANTISSA,
142    small_int: &BASE12_SMALL_INT_POWERS,
143    step: BASE12_STEP,
144    bias: BASE12_BIAS,
145    log2: BASE12_LOG2_MULT,
146    log2_shift: BASE12_LOG2_SHIFT,
147};
148
149pub const BASE13_POWERS: BellerophonPowers = BellerophonPowers {
150    small: &BASE13_SMALL_MANTISSA,
151    large: &BASE13_LARGE_MANTISSA,
152    small_int: &BASE13_SMALL_INT_POWERS,
153    step: BASE13_STEP,
154    bias: BASE13_BIAS,
155    log2: BASE13_LOG2_MULT,
156    log2_shift: BASE13_LOG2_SHIFT,
157};
158
159pub const BASE14_POWERS: BellerophonPowers = BellerophonPowers {
160    small: &BASE14_SMALL_MANTISSA,
161    large: &BASE14_LARGE_MANTISSA,
162    small_int: &BASE14_SMALL_INT_POWERS,
163    step: BASE14_STEP,
164    bias: BASE14_BIAS,
165    log2: BASE14_LOG2_MULT,
166    log2_shift: BASE14_LOG2_SHIFT,
167};
168
169pub const BASE15_POWERS: BellerophonPowers = BellerophonPowers {
170    small: &BASE15_SMALL_MANTISSA,
171    large: &BASE15_LARGE_MANTISSA,
172    small_int: &BASE15_SMALL_INT_POWERS,
173    step: BASE15_STEP,
174    bias: BASE15_BIAS,
175    log2: BASE15_LOG2_MULT,
176    log2_shift: BASE15_LOG2_SHIFT,
177};
178
179pub const BASE17_POWERS: BellerophonPowers = BellerophonPowers {
180    small: &BASE17_SMALL_MANTISSA,
181    large: &BASE17_LARGE_MANTISSA,
182    small_int: &BASE17_SMALL_INT_POWERS,
183    step: BASE17_STEP,
184    bias: BASE17_BIAS,
185    log2: BASE17_LOG2_MULT,
186    log2_shift: BASE17_LOG2_SHIFT,
187};
188
189pub const BASE18_POWERS: BellerophonPowers = BellerophonPowers {
190    small: &BASE18_SMALL_MANTISSA,
191    large: &BASE18_LARGE_MANTISSA,
192    small_int: &BASE18_SMALL_INT_POWERS,
193    step: BASE18_STEP,
194    bias: BASE18_BIAS,
195    log2: BASE18_LOG2_MULT,
196    log2_shift: BASE18_LOG2_SHIFT,
197};
198
199pub const BASE19_POWERS: BellerophonPowers = BellerophonPowers {
200    small: &BASE19_SMALL_MANTISSA,
201    large: &BASE19_LARGE_MANTISSA,
202    small_int: &BASE19_SMALL_INT_POWERS,
203    step: BASE19_STEP,
204    bias: BASE19_BIAS,
205    log2: BASE19_LOG2_MULT,
206    log2_shift: BASE19_LOG2_SHIFT,
207};
208
209pub const BASE20_POWERS: BellerophonPowers = BellerophonPowers {
210    small: &BASE20_SMALL_MANTISSA,
211    large: &BASE20_LARGE_MANTISSA,
212    small_int: &BASE20_SMALL_INT_POWERS,
213    step: BASE20_STEP,
214    bias: BASE20_BIAS,
215    log2: BASE20_LOG2_MULT,
216    log2_shift: BASE20_LOG2_SHIFT,
217};
218
219pub const BASE21_POWERS: BellerophonPowers = BellerophonPowers {
220    small: &BASE21_SMALL_MANTISSA,
221    large: &BASE21_LARGE_MANTISSA,
222    small_int: &BASE21_SMALL_INT_POWERS,
223    step: BASE21_STEP,
224    bias: BASE21_BIAS,
225    log2: BASE21_LOG2_MULT,
226    log2_shift: BASE21_LOG2_SHIFT,
227};
228
229pub const BASE22_POWERS: BellerophonPowers = BellerophonPowers {
230    small: &BASE22_SMALL_MANTISSA,
231    large: &BASE22_LARGE_MANTISSA,
232    small_int: &BASE22_SMALL_INT_POWERS,
233    step: BASE22_STEP,
234    bias: BASE22_BIAS,
235    log2: BASE22_LOG2_MULT,
236    log2_shift: BASE22_LOG2_SHIFT,
237};
238
239pub const BASE23_POWERS: BellerophonPowers = BellerophonPowers {
240    small: &BASE23_SMALL_MANTISSA,
241    large: &BASE23_LARGE_MANTISSA,
242    small_int: &BASE23_SMALL_INT_POWERS,
243    step: BASE23_STEP,
244    bias: BASE23_BIAS,
245    log2: BASE23_LOG2_MULT,
246    log2_shift: BASE23_LOG2_SHIFT,
247};
248
249pub const BASE24_POWERS: BellerophonPowers = BellerophonPowers {
250    small: &BASE24_SMALL_MANTISSA,
251    large: &BASE24_LARGE_MANTISSA,
252    small_int: &BASE24_SMALL_INT_POWERS,
253    step: BASE24_STEP,
254    bias: BASE24_BIAS,
255    log2: BASE24_LOG2_MULT,
256    log2_shift: BASE24_LOG2_SHIFT,
257};
258
259pub const BASE25_POWERS: BellerophonPowers = BellerophonPowers {
260    small: &BASE25_SMALL_MANTISSA,
261    large: &BASE25_LARGE_MANTISSA,
262    small_int: &BASE25_SMALL_INT_POWERS,
263    step: BASE25_STEP,
264    bias: BASE25_BIAS,
265    log2: BASE25_LOG2_MULT,
266    log2_shift: BASE25_LOG2_SHIFT,
267};
268
269pub const BASE26_POWERS: BellerophonPowers = BellerophonPowers {
270    small: &BASE26_SMALL_MANTISSA,
271    large: &BASE26_LARGE_MANTISSA,
272    small_int: &BASE26_SMALL_INT_POWERS,
273    step: BASE26_STEP,
274    bias: BASE26_BIAS,
275    log2: BASE26_LOG2_MULT,
276    log2_shift: BASE26_LOG2_SHIFT,
277};
278
279pub const BASE27_POWERS: BellerophonPowers = BellerophonPowers {
280    small: &BASE27_SMALL_MANTISSA,
281    large: &BASE27_LARGE_MANTISSA,
282    small_int: &BASE27_SMALL_INT_POWERS,
283    step: BASE27_STEP,
284    bias: BASE27_BIAS,
285    log2: BASE27_LOG2_MULT,
286    log2_shift: BASE27_LOG2_SHIFT,
287};
288
289pub const BASE28_POWERS: BellerophonPowers = BellerophonPowers {
290    small: &BASE28_SMALL_MANTISSA,
291    large: &BASE28_LARGE_MANTISSA,
292    small_int: &BASE28_SMALL_INT_POWERS,
293    step: BASE28_STEP,
294    bias: BASE28_BIAS,
295    log2: BASE28_LOG2_MULT,
296    log2_shift: BASE28_LOG2_SHIFT,
297};
298
299pub const BASE29_POWERS: BellerophonPowers = BellerophonPowers {
300    small: &BASE29_SMALL_MANTISSA,
301    large: &BASE29_LARGE_MANTISSA,
302    small_int: &BASE29_SMALL_INT_POWERS,
303    step: BASE29_STEP,
304    bias: BASE29_BIAS,
305    log2: BASE29_LOG2_MULT,
306    log2_shift: BASE29_LOG2_SHIFT,
307};
308
309pub const BASE30_POWERS: BellerophonPowers = BellerophonPowers {
310    small: &BASE30_SMALL_MANTISSA,
311    large: &BASE30_LARGE_MANTISSA,
312    small_int: &BASE30_SMALL_INT_POWERS,
313    step: BASE30_STEP,
314    bias: BASE30_BIAS,
315    log2: BASE30_LOG2_MULT,
316    log2_shift: BASE30_LOG2_SHIFT,
317};
318
319pub const BASE31_POWERS: BellerophonPowers = BellerophonPowers {
320    small: &BASE31_SMALL_MANTISSA,
321    large: &BASE31_LARGE_MANTISSA,
322    small_int: &BASE31_SMALL_INT_POWERS,
323    step: BASE31_STEP,
324    bias: BASE31_BIAS,
325    log2: BASE31_LOG2_MULT,
326    log2_shift: BASE31_LOG2_SHIFT,
327};
328
329pub const BASE33_POWERS: BellerophonPowers = BellerophonPowers {
330    small: &BASE33_SMALL_MANTISSA,
331    large: &BASE33_LARGE_MANTISSA,
332    small_int: &BASE33_SMALL_INT_POWERS,
333    step: BASE33_STEP,
334    bias: BASE33_BIAS,
335    log2: BASE33_LOG2_MULT,
336    log2_shift: BASE33_LOG2_SHIFT,
337};
338
339pub const BASE34_POWERS: BellerophonPowers = BellerophonPowers {
340    small: &BASE34_SMALL_MANTISSA,
341    large: &BASE34_LARGE_MANTISSA,
342    small_int: &BASE34_SMALL_INT_POWERS,
343    step: BASE34_STEP,
344    bias: BASE34_BIAS,
345    log2: BASE34_LOG2_MULT,
346    log2_shift: BASE34_LOG2_SHIFT,
347};
348
349pub const BASE35_POWERS: BellerophonPowers = BellerophonPowers {
350    small: &BASE35_SMALL_MANTISSA,
351    large: &BASE35_LARGE_MANTISSA,
352    small_int: &BASE35_SMALL_INT_POWERS,
353    step: BASE35_STEP,
354    bias: BASE35_BIAS,
355    log2: BASE35_LOG2_MULT,
356    log2_shift: BASE35_LOG2_SHIFT,
357};
358
359pub const BASE36_POWERS: BellerophonPowers = BellerophonPowers {
360    small: &BASE36_SMALL_MANTISSA,
361    large: &BASE36_LARGE_MANTISSA,
362    small_int: &BASE36_SMALL_INT_POWERS,
363    step: BASE36_STEP,
364    bias: BASE36_BIAS,
365    log2: BASE36_LOG2_MULT,
366    log2_shift: BASE36_LOG2_SHIFT,
367};
368
369// LOW-LEVEL
370// ---------
371
372// BASE3
373
374const BASE3_SMALL_MANTISSA: [u64; 20] = [
375    9223372036854775808,  // 3^0
376    13835058055282163712, // 3^1
377    10376293541461622784, // 3^2
378    15564440312192434176, // 3^3
379    11673330234144325632, // 3^4
380    17509995351216488448, // 3^5
381    13132496513412366336, // 3^6
382    9849372385059274752,  // 3^7
383    14774058577588912128, // 3^8
384    11080543933191684096, // 3^9
385    16620815899787526144, // 3^10
386    12465611924840644608, // 3^11
387    9349208943630483456,  // 3^12
388    14023813415445725184, // 3^13
389    10517860061584293888, // 3^14
390    15776790092376440832, // 3^15
391    11832592569282330624, // 3^16
392    17748888853923495936, // 3^17
393    13311666640442621952, // 3^18
394    9983749980331966464,  // 3^19
395];
396const BASE3_LARGE_MANTISSA: [u64; 69] = [
397    16362187946641408838, // 3^-720
398    13283319235448605538, // 3^-700
399    10783800460320302292, // 3^-680
400    17509230984627012859, // 3^-660
401    14214523479040558273, // 3^-640
402    11539780240125690827, // 3^-620
403    9368342750761260524,  // 3^-600
404    15211008194170796346, // 3^-580
405    12348756681875770872, // 3^-560
406    10025094302862174179, // 3^-540
407    16277349755993950451, // 3^-520
408    13214445025385558299, // 3^-500
409    10727886292707736997, // 3^-480
410    17418445358572088840, // 3^-460
411    14140820960965941427, // 3^-440
412    11479946305982273645, // 3^-420
413    9319767752666157840,  // 3^-400
414    15132138887857638912, // 3^-380
415    12284728192712064755, // 3^-360
416    9973114038089604413,  // 3^-340
417    16192951452641260116, // 3^-320
418    13145927929137795237, // 3^-300
419    10672262040895386089, // 3^-280
420    17328130457353990660, // 3^-260
421    14067500591556283265, // 3^-240
422    11420422611687500217, // 3^-220
423    9271444616666914905,  // 3^-200
424    15053678520084183432, // 3^-180
425    12221031692227883264, // 3^-160
426    9921403291771844100,  // 3^-140
427    16108990755761097026, // 3^-120
428    13077766095064811873, // 3^-100
429    10616926201665464118, // 3^-80
430    17238283840257358043, // 3^-60
431    13994560389365007134, // 3^-40
432    11361207548643088241, // 3^-20
433    9223372036854775808,  // 3^0
434    14975624970497949696, // 3^20
435    12157665459056928801, // 3^40
436    9869960666451650558,  // 3^60
437    16025465396357318008, // 3^80
438    13009957681126887596, // 3^100
439    10561877279594392463, // 3^120
440    17148903079221976570, // 3^140
441    13921998383219366688, // 3^160
442    11302299516591361707, // 3^180
443    18351097428184282358, // 3^200
444    14897976129740516999, // 3^220
445    12094627780758213915, // 3^240
446    9818784771917617934,  // 3^260
447    15942373117198559022, // 3^280
448    12942500854835305460, // 3^300
449    10507113787012386253, // 3^320
450    17059985758777160561, // 3^340
451    13849812612167175924, // 3^360
452    11243696923572004730, // 3^380
453    18255946711954919292, // 3^400
454    14820729899390519784, // 3^420
455    12031916953769783440, // 3^440
456    9767874225166607426,  // 3^460
457    15859711672757234610, // 3^480
458    12875393793202830082, // 3^500
459    10452634243963250834, // 3^520
460    16971529475976476179, // 3^540
461    13778001125423815423, // 3^560
462    11185398185879039609, // 3^580
463    18161289353620602647, // 3^600
464    14743884191906938838, // 3^620
465    11969531283362676572, // 3^640
466];
467const BASE3_SMALL_INT_POWERS: [u64; 20] = [
468    1, 3, 9, 27, 81, 243, 729, 2187, 6561, 19683, 59049, 177147, 531441, 1594323, 4782969,
469    14348907, 43046721, 129140163, 387420489, 1162261467,
470];
471const BASE3_STEP: i32 = 20;
472const BASE3_BIAS: i32 = 720;
473const BASE3_LOG2_MULT: i64 = 6807362106;
474const BASE3_LOG2_SHIFT: i32 = 32;
475
476// BASE5
477
478const BASE5_SMALL_MANTISSA: [u64; 14] = [
479    9223372036854775808,  // 5^0
480    11529215046068469760, // 5^1
481    14411518807585587200, // 5^2
482    18014398509481984000, // 5^3
483    11258999068426240000, // 5^4
484    14073748835532800000, // 5^5
485    17592186044416000000, // 5^6
486    10995116277760000000, // 5^7
487    13743895347200000000, // 5^8
488    17179869184000000000, // 5^9
489    10737418240000000000, // 5^10
490    13421772800000000000, // 5^11
491    16777216000000000000, // 5^12
492    10485760000000000000, // 5^13
493];
494const BASE5_LARGE_MANTISSA: [u64; 68] = [
495    15492890949478498119, // 5^-504
496    11008361120075348168, // 5^-490
497    15643822052986917253, // 5^-476
498    11115604119273511155, // 5^-462
499    15796223521069679172, // 5^-448
500    11223891875338892399, // 5^-434
501    15950109677957715915, // 5^-420
502    11333234566249726012, // 5^-406
503    16105494987428025427, // 5^-392
504    11443642469137689536, // 5^-378
505    16262394054163123565, // 5^-364
506    11555125961253852697, // 5^-350
507    16420821625123739831, // 5^-336
508    11667695520944036383, // 5^-322
509    16580792590934885855, // 5^-308
510    11781361728633673532, // 5^-294
511    16742321987285426889, // 5^-280
512    11896135267822264502, // 5^-266
513    16905424996341287883, // 5^-252
514    12012026926087520367, // 5^-238
515    17070116948172426941, // 5^-224
516    12129047596099288555, // 5^-210
517    17236413322193710308, // 5^-196
518    12247208276643356092, // 5^-182
519    17404329748619824289, // 5^-168
520    12366520073655226703, // 5^-154
521    17573882009934360870, // 5^-140
522    12486994201263968925, // 5^-126
523    17745086042373215101, // 5^-112
524    12608641982846233347, // 5^-98
525    17917957937422433684, // 5^-84
526    12731474852090538039, // 5^-70
527    18092513943330655534, // 5^-56
528    12855504354071922204, // 5^-42
529    18268770466636286477, // 5^-28
530    12980742146337069071, // 5^-14
531    9223372036854775808,  // 5^0
532    13107200000000000000, // 5^14
533    9313225746154785156,  // 5^28
534    13234889800848442797, // 5^42
535    9403954806578300063,  // 5^56
536    13363823550460978230, // 5^70
537    9495567745759798747,  // 5^84
538    13494013367335069727, // 5^98
539    9588073174409622174,  // 5^112
540    13625471488026082303, // 5^126
541    9681479787123295682,  // 5^140
542    13758210268297397763, // 5^154
543    9775796363198734982,  // 5^168
544    13892242184281734271, // 5^182
545    9871031767461413346,  // 5^196
546    14027579833653779454, // 5^210
547    9967194951097567535,  // 5^224
548    14164235936814247246, // 5^238
549    10064294952495520794, // 5^252
550    14302223338085469768, // 5^266
551    10162340898095201970, // 5^280
552    14441555006918636608, // 5^294
553    10261342003245940623, // 5^308
554    14582244039112794984, // 5^322
555    10361307573072618726, // 5^336
556    14724303658045725350, // 5^350
557    10462247003350260393, // 5^364
558    14867747215916808149, // 5^378
559    10564169781387141817, // 5^392
560    15012588195001998509, // 5^406
561    10667085486916504429, // 5^420
562    15158840208921026870, // 5^434
563];
564const BASE5_SMALL_INT_POWERS: [u64; 14] = [
565    1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625,
566    1220703125,
567];
568const BASE5_STEP: i32 = 14;
569const BASE5_BIAS: i32 = 504;
570const BASE5_LOG2_MULT: i64 = 152170;
571const BASE5_LOG2_SHIFT: i32 = 16;
572
573// BASE6
574
575const BASE6_SMALL_MANTISSA: [u64; 12] = [
576    9223372036854775808,  // 6^0
577    13835058055282163712, // 6^1
578    10376293541461622784, // 6^2
579    15564440312192434176, // 6^3
580    11673330234144325632, // 6^4
581    17509995351216488448, // 6^5
582    13132496513412366336, // 6^6
583    9849372385059274752,  // 6^7
584    14774058577588912128, // 6^8
585    11080543933191684096, // 6^9
586    16620815899787526144, // 6^10
587    12465611924840644608, // 6^11
588];
589const BASE6_LARGE_MANTISSA: [u64; 71] = [
590    11172994339528645078, // 6^-444
591    11325430459582219446, // 6^-432
592    11479946305982273645, // 6^-420
593    11636570252986002899, // 6^-408
594    11795331061968106016, // 6^-396
595    11956257886702331980, // 6^-384
596    12119380278715084095, // 6^-372
597    12284728192712064755, // 6^-360
598    12452331992078957377, // 6^-348
599    12622222454457155586, // 6^-336
600    12794430777395563548, // 6^-324
601    12968988584079505325, // 6^-312
602    13145927929137795237, // 6^-300
603    13325281304529035642, // 6^-288
604    13507081645508223020, // 6^-276
605    13691362336674758052, // 6^-264
606    13878157218102970303, // 6^-252
607    14067500591556283265, // 6^-240
608    14259427226786160917, // 6^-228
609    14453972367916992462, // 6^-216
610    14651171739918087751, // 6^-204
611    14851061555163971849, // 6^-192
612    15053678520084183432, // 6^-180
613    15259059841903798156, // 6^-168
614    15467243235475914756, // 6^-156
615    15678266930207358578, // 6^-144
616    15892169677078874302, // 6^-132
617    16108990755761097026, // 6^-120
618    16328769981827608423, // 6^-108
619    16551547714066402526, // 6^-96
620    16777364861891103792, // 6^-84
621    17006262892853298360, // 6^-72
622    17238283840257358043, // 6^-60
623    17473470310879155380, // 6^-48
624    17711865492790087155, // 6^-36
625    17953513163287843146, // 6^-24
626    18198457696935376453, // 6^-12
627    9223372036854775808,  // 6^0
628    9349208943630483456,  // 6^12
629    9476762676643233792,  // 6^24
630    9606056659007943744,  // 6^36
631    9737114633407288801,  // 6^48
632    9869960666451650558,  // 6^60
633    10004619153098548172, // 6^72
634    10141114821132365302, // 6^84
635    10279472735705195138, // 6^96
636    10419718303939637392, // 6^108
637    10561877279594392463, // 6^120
638    10705975767793509530, // 6^132
639    10852040229820157048, // 6^144
640    11000097487975795902, // 6^156
641    11150174730505647564, // 6^168
642    11302299516591361707, // 6^180
643    11456499781411800112, // 6^192
644    11612803841272866179, // 6^204
645    11771240398807322073, // 6^216
646    11931838548245548344, // 6^228
647    12094627780758213915, // 6^240
648    12259637989871837542, // 6^252
649    12426899476958235198, // 6^264
650    12596442956798861450, // 6^276
651    12768299563225066619, // 6^288
652    12942500854835305460, // 6^300
653    13119078820790347231, // 6^312
654    13298065886687551351, // 6^324
655    13479494920515287357, // 6^336
656    13663399238688592583, // 6^348
657    13849812612167175924, // 6^360
658    14038769272656891137, // 6^372
659    14230303918895818486, // 6^384
660    14424451723026109070, // 6^396
661];
662const BASE6_SMALL_INT_POWERS: [u64; 12] =
663    [1, 6, 36, 216, 1296, 7776, 46656, 279936, 1679616, 10077696, 60466176, 362797056];
664const BASE6_STEP: i32 = 12;
665const BASE6_BIAS: i32 = 444;
666const BASE6_LOG2_MULT: i64 = 11102329402;
667const BASE6_LOG2_SHIFT: i32 = 32;
668
669// BASE7
670
671const BASE7_SMALL_MANTISSA: [u64; 11] = [
672    9223372036854775808,  // 7^0
673    16140901064495857664, // 7^1
674    14123288431433875456, // 7^2
675    12357877377504641024, // 7^3
676    10813142705316560896, // 7^4
677    9461499867151990784,  // 7^5
678    16557624767515983872, // 7^6
679    14487921671576485888, // 7^7
680    12676931462629425152, // 7^8
681    11092315029800747008, // 7^9
682    9705775651075653632,  // 7^10
683];
684const BASE7_LARGE_MANTISSA: [u64; 71] = [
685    12225664820028455743, // 7^-407
686    11256958357801915874, // 7^-396
687    10365007820408367996, // 7^-385
688    9543731415037814164,  // 7^-374
689    17575058485347314089, // 7^-363
690    16182490230010039076, // 7^-352
691    14900262793588950961, // 7^-341
692    13719633267955538670, // 7^-330
693    12632551493533408059, // 7^-319
694    11631605169031861852, // 7^-308
695    10709969310436274791, // 7^-297
696    9861359714639799269,  // 7^-286
697    18159980220813419398, // 7^-275
698    16721065408999761282, // 7^-264
699    15396163707909854531, // 7^-253
700    14176241233598532153, // 7^-242
701    13052979906282242272, // 7^-231
702    12018720733250263776, // 7^-220
703    11066411585781870352, // 7^-209
704    10189559113984709052, // 7^-198
705    9382184471684205580,  // 7^-187
706    17277565098945522629, // 7^-176
707    15908568875896010079, // 7^-165
708    14648045730389016129, // 7^-154
709    13487400745686688174, // 7^-143
710    12418720027433908743, // 7^-132
711    11434716742520575143, // 7^-121
712    10528681433580712628, // 7^-110
713    9694436270346269630,  // 7^-99
714    17852585851834022264, // 7^-88
715    16438027581449061548, // 7^-77
716    15135552519453149331, // 7^-66
717    13936279698645574929, // 7^-55
718    12832031839555071753, // 7^-44
719    11815279593402393441, // 7^-33
720    10879090202998704701, // 7^-22
721    10017080231522506848, // 7^-11
722    9223372036854775808,  // 7^0
723    16985107389382393856, // 7^11
724    15639284194331952196, // 7^22
725    14400097950748064600, // 7^33
726    13259099228230139701, // 7^44
727    12208508091080056405, // 7^55
728    11241161050565762112, // 7^66
729    10350462220447909415, // 7^77
730    9530338342721952463,  // 7^88
731    17550394753834620135, // 7^99
732    16159780741186857313, // 7^110
733    14879352702091044991, // 7^121
734    13700379997665963732, // 7^132
735    12614823765422770599, // 7^143
736    11615282106028126090, // 7^154
737    10694939613220642893, // 7^165
738    9847520902748803399,  // 7^176
739    18134495646931893353, // 7^187
740    16697600117649658875, // 7^198
741    15374557700263623520, // 7^209
742    14156347188413069088, // 7^220
743    13034662175384360011, // 7^231
744    12001854416615353596, // 7^242
745    11050881679899153397, // 7^253
746    10175259727702178785, // 7^264
747    9369018104186475301,  // 7^275
748    17253318850937371954, // 7^286
749    15886243791070066478, // 7^297
750    14627489584451796037, // 7^308
751    13468473375910191470, // 7^319
752    12401292376951646786, // 7^330
753    11418669980349265042, // 7^341
754    10513906144367477972, // 7^352
755    9680831708316613461,  // 7^363
756];
757const BASE7_SMALL_INT_POWERS: [u64; 11] =
758    [1, 7, 49, 343, 2401, 16807, 117649, 823543, 5764801, 40353607, 282475249];
759const BASE7_STEP: i32 = 11;
760const BASE7_BIAS: i32 = 407;
761const BASE7_LOG2_MULT: i64 = 183983;
762const BASE7_LOG2_SHIFT: i32 = 16;
763
764// BASE9
765
766const BASE9_SMALL_MANTISSA: [u64; 10] = [
767    9223372036854775808,  // 9^0
768    10376293541461622784, // 9^1
769    11673330234144325632, // 9^2
770    13132496513412366336, // 9^3
771    14774058577588912128, // 9^4
772    16620815899787526144, // 9^5
773    9349208943630483456,  // 9^6
774    10517860061584293888, // 9^7
775    11832592569282330624, // 9^8
776    13311666640442621952, // 9^9
777];
778const BASE9_LARGE_MANTISSA: [u64; 69] = [
779    16362187946641408838, // 9^-360
780    13283319235448605538, // 9^-350
781    10783800460320302292, // 9^-340
782    17509230984627012859, // 9^-330
783    14214523479040558273, // 9^-320
784    11539780240125690827, // 9^-310
785    9368342750761260524,  // 9^-300
786    15211008194170796346, // 9^-290
787    12348756681875770872, // 9^-280
788    10025094302862174179, // 9^-270
789    16277349755993950451, // 9^-260
790    13214445025385558299, // 9^-250
791    10727886292707736997, // 9^-240
792    17418445358572088840, // 9^-230
793    14140820960965941427, // 9^-220
794    11479946305982273645, // 9^-210
795    9319767752666157840,  // 9^-200
796    15132138887857638912, // 9^-190
797    12284728192712064755, // 9^-180
798    9973114038089604413,  // 9^-170
799    16192951452641260116, // 9^-160
800    13145927929137795237, // 9^-150
801    10672262040895386089, // 9^-140
802    17328130457353990660, // 9^-130
803    14067500591556283265, // 9^-120
804    11420422611687500217, // 9^-110
805    9271444616666914905,  // 9^-100
806    15053678520084183432, // 9^-90
807    12221031692227883264, // 9^-80
808    9921403291771844100,  // 9^-70
809    16108990755761097026, // 9^-60
810    13077766095064811873, // 9^-50
811    10616926201665464118, // 9^-40
812    17238283840257358043, // 9^-30
813    13994560389365007134, // 9^-20
814    11361207548643088241, // 9^-10
815    9223372036854775808,  // 9^0
816    14975624970497949696, // 9^10
817    12157665459056928801, // 9^20
818    9869960666451650558,  // 9^30
819    16025465396357318008, // 9^40
820    13009957681126887596, // 9^50
821    10561877279594392463, // 9^60
822    17148903079221976570, // 9^70
823    13921998383219366688, // 9^80
824    11302299516591361707, // 9^90
825    18351097428184282358, // 9^100
826    14897976129740516999, // 9^110
827    12094627780758213915, // 9^120
828    9818784771917617934,  // 9^130
829    15942373117198559022, // 9^140
830    12942500854835305460, // 9^150
831    10507113787012386253, // 9^160
832    17059985758777160561, // 9^170
833    13849812612167175924, // 9^180
834    11243696923572004730, // 9^190
835    18255946711954919292, // 9^200
836    14820729899390519784, // 9^210
837    12031916953769783440, // 9^220
838    9767874225166607426,  // 9^230
839    15859711672757234610, // 9^240
840    12875393793202830082, // 9^250
841    10452634243963250834, // 9^260
842    16971529475976476179, // 9^270
843    13778001125423815423, // 9^280
844    11185398185879039609, // 9^290
845    18161289353620602647, // 9^300
846    14743884191906938838, // 9^310
847    11969531283362676572, // 9^320
848];
849const BASE9_SMALL_INT_POWERS: [u64; 10] =
850    [1, 9, 81, 729, 6561, 59049, 531441, 4782969, 43046721, 387420489];
851const BASE9_STEP: i32 = 10;
852const BASE9_BIAS: i32 = 360;
853const BASE9_LOG2_MULT: i64 = 13614724212;
854const BASE9_LOG2_SHIFT: i32 = 32;
855
856// BASE11
857
858const BASE11_SMALL_MANTISSA: [u64; 9] = [
859    9223372036854775808,  // 11^0
860    12682136550675316736, // 11^1
861    17437937757178560512, // 11^2
862    11988582208060260352, // 11^3
863    16484300536082857984, // 11^4
864    11332956618556964864, // 11^5
865    15582815350515826688, // 11^6
866    10713185553479630848, // 11^7
867    14730630136034492416, // 11^8
868];
869const BASE11_LARGE_MANTISSA: [u64; 70] = [
870    9282833781626869722,  // 11^-333
871    10192597509046958613, // 11^-324
872    11191522591630754840, // 11^-315
873    12288347284174558846, // 11^-306
874    13492666233761944748, // 11^-297
875    14815014410453217040, // 11^-288
876    16266959263598494876, // 11^-279
877    17861201909926315464, // 11^-270
878    9805844119283264859,  // 11^-261
879    10766865452458105492, // 11^-252
880    11822071640254585128, // 11^-243
881    12980693265318349774, // 11^-234
882    14252865553152120313, // 11^-225
883    15649717031600177225, // 11^-216
884    17183466879401827195, // 11^-207
885    9433765907692842627,  // 11^-198
886    10358321731667433590, // 11^-189
887    11373488609595385666, // 11^-180
888    12488146873940825498, // 11^-171
889    13712047173770907127, // 11^-162
890    15055895770097238115, // 11^-153
891    16531448190583591098, // 11^-144
892    18151612062879235750, // 11^-135
893    9965280013064351107,  // 11^-126
894    10941926854184612877, // 11^-117
895    12014289927163860584, // 11^-108
896    13191749897208336388, // 11^-99
897    14484606781216284322, // 11^-90
898    15904170048801172427, // 11^-81
899    17462857553661839031, // 11^-72
900    9587152080358667750,  // 11^-63
901    10526740509619734750, // 11^-54
902    11558413262671798860, // 11^-45
903    12691195059726361470, // 11^-36
904    13934995088312952370, // 11^-27
905    15300693685460773821, // 11^-18
906    16800237515163846269, // 11^-9
907    9223372036854775808,  // 11^0
908    10127308218523713536, // 11^9
909    11119834626984462962, // 11^18
910    12209633543621683835, // 11^27
911    13406238156435497652, // 11^36
912    14720115953107913248, // 11^45
913    16162760287003157808, // 11^54
914    17746790917089950882, // 11^63
915    9743032200637278641,  // 11^72
916    10697897654413860244, // 11^81
917    11746344656115154606, // 11^90
918    12897544661339799796, // 11^99
919    14161567973799797658, // 11^108
920    15549471836891389165, // 11^117
921    17073397158676562691, // 11^126
922    9373337358196117359,  // 11^135
923    10291970884763903381, // 11^144
924    11300635050781198339, // 11^153
925    12408153305213523269, // 11^162
926    13624213838764580644, // 11^171
927    14959454332853289890, // 11^180
928    16425555014410689631, // 11^189
929    18035340830508227153, // 11^198
930    9901446818303059920,  // 11^207
931    10871837689903097542, // 11^216
932    11937331677337075986, // 11^225
933    13107249357401447067, // 11^234
934    14391824769622635037, // 11^243
935    15802294940132787091, // 11^252
936    17350998179329134782, // 11^261
937    9525741006595626773,  // 11^270
938    10459310846201225147, // 11^279
939    11484375157976259923, // 11^288
940];
941const BASE11_SMALL_INT_POWERS: [u64; 9] =
942    [1, 11, 121, 1331, 14641, 161051, 1771561, 19487171, 214358881];
943const BASE11_STEP: i32 = 9;
944const BASE11_BIAS: i32 = 333;
945const BASE11_LOG2_MULT: i64 = 226718;
946const BASE11_LOG2_SHIFT: i32 = 16;
947
948// BASE12
949
950const BASE12_SMALL_MANTISSA: [u64; 9] = [
951    9223372036854775808,  // 12^0
952    13835058055282163712, // 12^1
953    10376293541461622784, // 12^2
954    15564440312192434176, // 12^3
955    11673330234144325632, // 12^4
956    17509995351216488448, // 12^5
957    13132496513412366336, // 12^6
958    9849372385059274752,  // 12^7
959    14774058577588912128, // 12^8
960];
961const BASE12_LARGE_MANTISSA: [u64; 68] = [
962    12794430777395563548, // 12^-324
963    15370653136686821126, // 12^-315
964    9232805349408163458,  // 12^-306
965    11091876690210014731, // 12^-297
966    13325281304529035642, // 12^-288
967    16008393061343079134, // 12^-279
968    9615881366772943927,  // 12^-270
969    11552086971569327107, // 12^-261
970    13878157218102970303, // 12^-252
971    16672593293696335722, // 12^-243
972    10014851495355986817, // 12^-234
973    12031391722600823274, // 12^-225
974    14453972367916992462, // 12^-216
975    17364351691754770668, // 12^-207
976    10430375193750279268, // 12^-198
977    12530583187169601247, // 12^-189
978    15053678520084183432, // 12^-180
979    18084811664478575592, // 12^-171
980    10863139281980340679, // 12^-162
981    13050486479932803075, // 12^-153
982    15678266930207358578, // 12^-144
983    9417582030861555141,  // 12^-135
984    11313859076748534537, // 12^-126
985    13591960950173425616, // 12^-117
986    16328769981827608423, // 12^-108
987    9808324571298608904,  // 12^-99
988    11783279573783601017, // 12^-90
989    14155901602220618825, // 12^-81
990    17006262892853298360, // 12^-72
991    10215279312745101062, // 12^-63
992    12272176679245716810, // 12^-54
993    14743240574804287352, // 12^-45
994    17711865492790087155, // 12^-36
995    10639118911577981124, // 12^-27
996    12781358492223474271, // 12^-18
997    15354948681789223882, // 12^-9
998    9223372036854775808,  // 12^0
999    11080543933191684096, // 12^9
1000    13311666640442621952, // 12^18
1001    15992037016835457024, // 12^27
1002    9606056659007943744,  // 12^36
1003    11540284009964194135, // 12^45
1004    13863977671394362375, // 12^54
1005    16655558624637160317, // 12^63
1006    10004619153098548172, // 12^72
1007    12019099047267988506, // 12^81
1008    14439204501182606065, // 12^90
1009    17346610241502516795, // 12^99
1010    10419718303939637392, // 12^108
1011    12517780479519279956, // 12^117
1012    15038297923484984581, // 12^126
1013    18066334108151547333, // 12^135
1014    10852040229820157048, // 12^144
1015    13037152578341684032, // 12^153
1016    15662248181121787524, // 12^162
1017    9407959928864140132,  // 12^171
1018    11302299516591361707, // 12^180
1019    13578073815006577911, // 12^189
1020    16312086602830473207, // 12^198
1021    9798303241073980839,  // 12^207
1022    11771240398807322073, // 12^216
1023    14141438279402131370, // 12^225
1024    16988887307951181138, // 12^234
1025    10204842190014742991, // 12^243
1026    12259637989871837542, // 12^252
1027    14728177157876426901, // 12^261
1028    17693768981840924725, // 12^270
1029    10628248744799039348, // 12^279
1030];
1031const BASE12_SMALL_INT_POWERS: [u64; 9] =
1032    [1, 12, 144, 1728, 20736, 248832, 2985984, 35831808, 429981696];
1033const BASE12_STEP: i32 = 9;
1034const BASE12_BIAS: i32 = 324;
1035const BASE12_LOG2_MULT: i64 = 15397296698;
1036const BASE12_LOG2_SHIFT: i32 = 32;
1037
1038// BASE13
1039
1040const BASE13_SMALL_MANTISSA: [u64; 8] = [
1041    9223372036854775808,  // 13^0
1042    14987979559889010688, // 13^1
1043    12177733392409821184, // 13^2
1044    9894408381332979712,  // 13^3
1045    16078413619666092032, // 13^4
1046    13063711065978699776, // 13^5
1047    10614265241107693568, // 13^6
1048    17248181016800002048, // 13^7
1049];
1050const BASE13_LARGE_MANTISSA: [u64; 74] = [
1051    12711851154623003921, // 13^-312
1052    9657300550123029827,  // 13^-304
1053    14673465379822171777, // 13^-296
1054    11147555423761605318, // 13^-288
1055    16937783776246970219, // 13^-280
1056    12867777209673117558, // 13^-272
1057    9775758889423702247,  // 13^-264
1058    14853452979012869128, // 13^-256
1059    11284293521111612769, // 13^-248
1060    17145545948207386966, // 13^-240
1061    13025615884242430727, // 13^-232
1062    9895670261906581517,  // 13^-224
1063    15035648341334079534, // 13^-216
1064    11422708874734959378, // 13^-208
1065    17355856571645749915, // 13^-200
1066    13185390638896427802, // 13^-192
1067    10017052490761162429, // 13^-184
1068    15220078547640608376, // 13^-176
1069    11562822058185475244, // 13^-168
1070    17568746906366835671, // 13^-160
1071    13347125221972482607, // 13^-152
1072    10139923617799671626, // 13^-144
1073    15406771010966328102, // 13^-136
1074    11704653897376229735, // 13^-128
1075    17784248595614306423, // 13^-120
1076    13510843673109724761, // 13^-112
1077    10264301906138736839, // 13^-104
1078    15595753480598751694, // 13^-96
1079    11848225473675019323, // 13^-88
1080    18002393670774046392, // 13^-80
1081    13676570326822204041, // 13^-72
1082    10390205842913949994, // 13^-64
1083    15787054046203585657, // 13^-56
1084    11993558127037825287, // 13^-48
1085    18223214556135190308, // 13^-40
1086    13844329816115883890, // 13^-32
1087    10517654142027727687, // 13^-24
1088    15980701141999875583, // 13^-16
1089    12140673459180707010, // 13^-8
1090    9223372036854775808,  // 13^0
1091    14014147076150001664, // 13^8
1092    10646665746930877456, // 13^16
1093    16176723550986364864, // 13^24
1094    12289593336790602348, // 13^32
1095    9336507724055083356,  // 13^40
1096    14186047347943339851, // 13^48
1097    10777259833438283283, // 13^56
1098    16375150409219694755, // 13^64
1099    12440339894775512302, // 13^72
1100    9451031155744840189,  // 13^80
1101    14360056182125959135, // 13^88
1102    10909455812579128852, // 13^96
1103    16576011210145081669, // 13^104
1104    12592935539554553092, // 13^112
1105    9566959354269653198,  // 13^120
1106    14536199442736950948, // 13^128
1107    11043273333482082198, // 13^136
1108    16779335808980115413, // 13^144
1109    12747402952388364654, // 13^152
1110    9684309550774553205,  // 13^160
1111    14714503311068774005, // 13^168
1112    11178732286295870598, // 13^176
1113    16985154427152329948, // 13^184
1114    12903765092750370582, // 13^192
1115    9803099187765169579,  // 13^200
1116    14894994289558746218, // 13^208
1117    11315852805145679810, // 13^216
1118    17193497656791206265, // 13^224
1119    13062045201739390598, // 13^232
1120    9923345921700320715,  // 13^240
1121    15077699205728270417, // 13^248
1122    11454655271125817073, // 13^256
1123    17404396465275275042, // 13^264
1124    13222266805534112801, // 13^272
1125];
1126const BASE13_SMALL_INT_POWERS: [u64; 8] = [1, 13, 169, 2197, 28561, 371293, 4826809, 62748517];
1127const BASE13_STEP: i32 = 8;
1128const BASE13_BIAS: i32 = 312;
1129const BASE13_LOG2_MULT: i64 = 15893267571;
1130const BASE13_LOG2_SHIFT: i32 = 32;
1131
1132// BASE14
1133
1134const BASE14_SMALL_MANTISSA: [u64; 8] = [
1135    9223372036854775808,  // 14^0
1136    16140901064495857664, // 14^1
1137    14123288431433875456, // 14^2
1138    12357877377504641024, // 14^3
1139    10813142705316560896, // 14^4
1140    9461499867151990784,  // 14^5
1141    16557624767515983872, // 14^6
1142    14487921671576485888, // 14^7
1143];
1144const BASE14_LARGE_MANTISSA: [u64; 72] = [
1145    13636466802170654447, // 14^-304
1146    9371223146631740442,  // 14^-296
1147    12880143300754023535, // 14^-288
1148    17702928299982570560, // 14^-280
1149    12165767999490239948, // 14^-272
1150    16721065408999761282, // 14^-264
1151    11491014312609104256, // 14^-256
1152    15793659877858943182, // 14^-248
1153    10853684694473876180, // 14^-240
1154    14917691321465419740, // 14^-232
1155    10251703482589146278, // 14^-224
1156    14090306875260685218, // 14^-216
1157    9683110137559136558,  // 14^-208
1158    13308811903980028150, // 14^-200
1159    18292105715960495534, // 14^-192
1160    12570661225733134820, // 14^-184
1161    17277565098945522629, // 14^-176
1162    11873450822826176619, // 14^-168
1163    16319294256419936609, // 14^-160
1164    11214910012329090474, // 14^-152
1165    15414172280784786485, // 14^-144
1166    10592894050889065017, // 14^-136
1167    14559251360287507272, // 14^-128
1168    10005377149705503250, // 14^-120
1169    13751747178554400168, // 14^-112
1170    9450445876917551117,  // 14^-104
1171    12989029846596759700, // 14^-96
1172    17852585851834022264, // 14^-88
1173    12268615337757900164, // 14^-80
1174    16862422458582420498, // 14^-72
1175    11588157397706317457, // 14^-64
1176    15927176798452085633, // 14^-56
1177    10945439903127358164, // 14^-48
1178    15043802952525257461, // 14^-40
1179    10338369644227094261, // 14^-32
1180    14209423938610553080, // 14^-24
1181    9764969507542378307,  // 14^-16
1182    13421322341453983785, // 14^-8
1183    9223372036854775808,  // 14^0
1184    12676931462629425152, // 14^8
1185    17423626702474969088, // 14^16
1186    11973826961285400900, // 14^24
1187    16457254800854930971, // 14^32
1188    11309718958523667683, // 14^40
1189    15544481077627229210, // 14^48
1190    10682444579695049354, // 14^56
1191    14682332800738954595, // 14^64
1192    10089960910324183248, // 14^72
1193    13868002115678253630, // 14^80
1194    9530338342721952463,  // 14^88
1195    13098836900821174211, // 14^96
1196    18003508583233548621, // 14^104
1197    12372332129971187630, // 14^112
1198    17004974516675479989, // 14^120
1199    11686121713960805382, // 14^128
1200    16061822448435536582, // 14^136
1201    11037970794744924274, // 14^144
1202    15170980709914287138, // 14^152
1203    10425768466889213611, // 14^160
1204    14329547997401095751, // 14^168
1205    9847520902748803399,  // 14^176
1206    13534783923074532648, // 14^184
1207    9301344858947275744,  // 14^192
1208    12784100090075520076, // 14^200
1209    17570923086015569737, // 14^208
1210    12075051662586407952, // 14^216
1211    16596381640322157656, // 14^224
1212    11405329403461315009, // 14^232
1213    15675891482926176126, // 14^240
1214    10772752153475797540, // 14^248
1215    14806454750802381310, // 14^256
1216    10175259727702178785, // 14^264
1217];
1218const BASE14_SMALL_INT_POWERS: [u64; 8] = [1, 14, 196, 2744, 38416, 537824, 7529536, 105413504];
1219const BASE14_STEP: i32 = 8;
1220const BASE14_BIAS: i32 = 304;
1221const BASE14_LOG2_MULT: i64 = 249519;
1222const BASE14_LOG2_SHIFT: i32 = 16;
1223
1224// BASE15
1225
1226const BASE15_SMALL_MANTISSA: [u64; 8] = [
1227    9223372036854775808,  // 15^0
1228    17293822569102704640, // 15^1
1229    16212958658533785600, // 15^2
1230    15199648742375424000, // 15^3
1231    14249670695976960000, // 15^4
1232    13359066277478400000, // 15^5
1233    12524124635136000000, // 15^6
1234    11741366845440000000, // 15^7
1235];
1236const BASE15_LARGE_MANTISSA: [u64; 70] = [
1237    13601350414362439244, // 15^-296
1238    16232381325359158633, // 15^-288
1239    9686178043528474499,  // 15^-280
1240    11559862131178364723, // 15^-272
1241    13795989697002596758, // 15^-264
1242    16464671426007778306, // 15^-256
1243    9824790070164184132,  // 15^-248
1244    11725287122380398084, // 15^-240
1245    13993414324420480958, // 15^-232
1246    16700285665596816319, // 15^-224
1247    9965385675239368708,  // 15^-216
1248    11893079393347852255, // 15^-208
1249    14193664155710441018, // 15^-200
1250    16939271613521887687, // 15^-192
1251    10107993244338750184, // 15^-184
1252    12063272820543086702, // 15^-176
1253    14396779620362065880, // 15^-168
1254    17181677519910502131, // 15^-160
1255    10252641569253028545, // 15^-152
1256    12235901765210495847, // 15^-144
1257    14602801726422706134, // 15^-136
1258    17427552325363535592, // 15^-128
1259    10399359853791807565, // 15^-120
1260    12411001080313881072, // 15^-112
1261    14811772068776803956, // 15^-104
1262    17676945670836105047, // 15^-96
1263    10548177719679705225, // 15^-88
1264    12588606117573098524, // 15^-80
1265    15023732837543702665, // 15^-72
1266    17929907907659841510, // 15^-64
1267    10699125212536839185, // 15^-56
1268    12768752734601403407, // 15^-48
1269    15238726826595631383, // 15^-40
1270    18186490107708584674, // 15^-32
1271    10852232807944894743, // 15^-24
1272    12951477302144931748, // 15^-16
1273    15456797442197584532, // 15^-8
1274    9223372036854775808,  // 15^0
1275    11007531417600000000, // 15^8
1276    13136816711425781250, // 15^16
1277    15677988711770840524, // 15^24
1278    9355361174851030653,  // 15^32
1279    11165052395553650442, // 15^40
1280    13324808381590173768, // 15^48
1281    15902345292781888946, // 15^56
1282    9489239115822963265,  // 15^64
1283    11324827544542942993, // 15^72
1284    13515490267263203164, // 15^80
1285    16129912481758560891, // 15^88
1286    9625032889090827484,  // 15^96
1287    11486889122411397534, // 15^104
1288    13708900866211693796, // 15^112
1289    16360736223435182728, // 15^120
1290    9762769910772315950,  // 15^128
1291    11651269848621662268, // 15^136
1292    13905079227116716745, // 15^144
1293    16594863120028599690, // 15^152
1294    9902477989317744010,  // 15^160
1295    11818002910861417777, // 15^168
1296    14104064957457333009, // 15^176
1297    16832340440646942057, // 15^184
1298    10044185331124443731, // 15^192
1299    11987121971743813505, // 15^200
1300    14305898231507155361, // 15^208
1301    17073216130833033517, // 15^216
1302    10187920546231501512, // 15^224
1303    12158661175603789420, // 15^232
1304    14510619798445343328, // 15^240
1305    17317538822244368489, // 15^248
1306    10333712654095989060, // 15^256
1307];
1308const BASE15_SMALL_INT_POWERS: [u64; 8] = [1, 15, 225, 3375, 50625, 759375, 11390625, 170859375];
1309const BASE15_STEP: i32 = 8;
1310const BASE15_BIAS: i32 = 296;
1311const BASE15_LOG2_MULT: i64 = 256042;
1312const BASE15_LOG2_SHIFT: i32 = 16;
1313
1314// BASE17
1315
1316const BASE17_SMALL_MANTISSA: [u64; 8] = [
1317    9223372036854775808,  // 17^0
1318    9799832789158199296,  // 17^1
1319    10412322338480586752, // 17^2
1320    11063092484635623424, // 17^3
1321    11754535764925349888, // 17^4
1322    12489194250233184256, // 17^5
1323    13269768890872758272, // 17^6
1324    14099129446552305664, // 17^7
1325];
1326const BASE17_LARGE_MANTISSA: [u64; 67] = [
1327    13138227451101932889, // 17^-280
1328    10669358063439695630, // 17^-272
1329    17328852299072967575, // 17^-264
1330    14072501842077846052, // 17^-256
1331    11428068326595325663, // 17^-248
1332    9280563409615280245,  // 17^-240
1333    15073213554289220394, // 17^-232
1334    12240731344920942400, // 17^-224
1335    9940514895438007254,  // 17^-216
1336    16145087021687770276, // 17^-208
1337    13111183760586542995, // 17^-200
1338    10647396286743453217, // 17^-192
1339    17293182638130712658, // 17^-184
1340    14043535043777936273, // 17^-176
1341    11404544822822581011, // 17^-168
1342    9261460323937079649,  // 17^-160
1343    15042186893809203473, // 17^-152
1344    12215535057871861844, // 17^-144
1345    9920053367473418578,  // 17^-136
1346    16111854019870470980, // 17^-128
1347    13084195736727816960, // 17^-120
1348    10625479716106730764, // 17^-112
1349    17257586399518441101, // 17^-104
1350    14014627870654357169, // 17^-96
1351    11381069739763987898, // 17^-88
1352    9242396559996829853,  // 17^-80
1353    15011224098520048145, // 17^-72
1354    12190390634789334486, // 17^-64
1355    9899633957460570790,  // 17^-56
1356    16078689424770850259, // 17^-48
1357    13057263264941664926, // 17^-40
1358    10603608258477502216, // 17^-32
1359    17222063432103834911, // 17^-24
1360    13985780199974813110, // 17^-16
1361    11357642977750484199, // 17^-8
1362    9223372036854775808,  // 17^0
1363    14980325036961824768, // 17^8
1364    12165297968916717120, // 17^16
1365    9879256578703990224,  // 17^24
1366    16045593095580712414, // 17^32
1367    13030386230879856604, // 17^40
1368    10581781820995279550, // 17^48
1369    17186613585065666435, // 17^56
1370    13956991909259640275, // 17^64
1371    11334264437318166304, // 17^72
1372    18408773347475537258, // 17^80
1373    14949489577945200446, // 17^88
1374    12140256953717114113, // 17^96
1375    9858921144686656932,  // 17^104
1376    16012564891781700940, // 17^112
1377    13003564520429535778, // 17^120
1378    10560000310990718510, // 17^128
1379    17151236707893158013, // 17^136
1380    13928262876281286641, // 17^144
1381    11310934019207866827, // 17^152
1382    18370880780077845311, // 17^160
1383    14918717590550882042, // 17^168
1384    12115267482872925081, // 17^176
1385    9838627569069637357,  // 17^184
1386    15979604673144701925, // 17^192
1387    12976798019712735820, // 17^200
1388    10538263635985225157, // 17^208
1389    17115932650385342947, // 17^216
1390    13899592979063793037, // 17^224
1391    11287651624364733171, // 17^232
1392    18333066210634546428, // 17^240
1393    14888008944129060322, // 17^248
1394];
1395const BASE17_SMALL_INT_POWERS: [u64; 8] = [1, 17, 289, 4913, 83521, 1419857, 24137569, 410338673];
1396const BASE17_STEP: i32 = 8;
1397const BASE17_BIAS: i32 = 280;
1398const BASE17_LOG2_MULT: i64 = 267876;
1399const BASE17_LOG2_SHIFT: i32 = 16;
1400
1401// BASE18
1402
1403const BASE18_SMALL_MANTISSA: [u64; 7] = [
1404    9223372036854775808,  // 18^0
1405    10376293541461622784, // 18^1
1406    11673330234144325632, // 18^2
1407    13132496513412366336, // 18^3
1408    14774058577588912128, // 18^4
1409    16620815899787526144, // 18^5
1410    9349208943630483456,  // 18^6
1411];
1412const BASE18_LARGE_MANTISSA: [u64; 75] = [
1413    14081888293732326968, // 18^-273
1414    16058262627216485544, // 18^-266
1415    18312018475493194258, // 18^-259
1416    10441042983020688038, // 18^-252
1417    11906429509033078491, // 18^-245
1418    13577481089208229636, // 18^-238
1419    15483062540952967857, // 18^-231
1420    17656089820489710741, // 18^-224
1421    10067049297406417285, // 18^-217
1422    11479946305982273645, // 18^-210
1423    13091141534609253262, // 18^-203
1424    14928465875303384176, // 18^-196
1425    17023656248839843776, // 18^-189
1426    9706451905352742522,  // 18^-182
1427    11068739548514628780, // 18^-175
1428    12622222454457155586, // 18^-168
1429    14393734624570008992, // 18^-161
1430    16413876176725623927, // 18^-154
1431    9358770957364699929,  // 18^-147
1432    10672262040895386089, // 18^-140
1433    12170099854822007158, // 18^-133
1434    13878157218102970303, // 18^-126
1435    15825938165500818674, // 18^-119
1436    18047087583901234911, // 18^-112
1437    10289986187706530766, // 18^-105
1438    11734172092969064177, // 18^-98
1439    13381047573408163051, // 18^-91
1440    15259059841903798156, // 18^-84
1441    17400648639910404101, // 18^-77
1442    9921403291771844100,  // 18^-70
1443    11313859076748534537, // 18^-63
1444    12901744183172431346, // 18^-56
1445    14712486856947913357, // 18^-49
1446    16777364861891103792, // 18^-42
1447    9566022877229980327,  // 18^-35
1448    10908601492662859386, // 18^-28
1449    12439609234991117453, // 18^-21
1450    14185491882103974832, // 18^-14
1451    16176406841720334625, // 18^-7
1452    9223372036854775808,  // 18^0
1453    10517860061584293888, // 18^7
1454    11994027762626592768, // 18^14
1455    13677373641439044901, // 18^21
1456    15596974880318657672, // 18^28
1457    17785989605508530085, // 18^35
1458    10141114821132365302, // 18^42
1459    11564406827668344530, // 18^49
1460    13187455978423603575, // 18^56
1461    15038297923484984581, // 18^63
1462    17148903079221976570, // 18^70
1463    9777864433756263024,  // 18^77
1464    11150174730505647564, // 18^84
1465    12715086956165281921, // 18^91
1466    14499632535849309517, // 18^98
1467    16534636719312342666, // 18^105
1468    9427625519601420913,  // 18^112
1469    10750780249562856814, // 18^119
1470    12259637989871837542, // 18^126
1471    13980261911578014597, // 18^133
1472    15942373117198559022, // 18^140
1473    18179864026545065558, // 18^147
1474    10365691907784965713, // 18^154
1475    11820503010388934534, // 18^161
1476    13479494920515287357, // 18^168
1477    15371324143524666656, // 18^175
1478    17528669087274082029, // 18^182
1479    9994397265397337538,  // 18^189
1480    11397097657699641734, // 18^196
1481    12996665188491343910, // 18^203
1482    14820729899390519784, // 18^210
1483    16900799671687597041, // 18^217
1484    9636402237998480121,  // 18^224
1485    10988858503312433354, // 18^231
1486    12531130210573617469, // 18^238
1487    14289857705148955482, // 18^245
1488];
1489const BASE18_SMALL_INT_POWERS: [u64; 7] = [1, 18, 324, 5832, 104976, 1889568, 34012224];
1490const BASE18_STEP: i32 = 7;
1491const BASE18_BIAS: i32 = 273;
1492const BASE18_LOG2_MULT: i64 = 17909691508;
1493const BASE18_LOG2_SHIFT: i32 = 32;
1494
1495// BASE19
1496
1497const BASE19_SMALL_MANTISSA: [u64; 7] = [
1498    9223372036854775808,  // 19^0
1499    10952754293765046272, // 19^1
1500    13006395723845992448, // 19^2
1501    15445094922067116032, // 19^3
1502    18341050219954700288, // 19^4
1503    10889998568098103296, // 19^5
1504    12931873299616497664, // 19^6
1505];
1506const BASE19_LARGE_MANTISSA: [u64; 74] = [
1507    11480257701232751935, // 19^-273
1508    9557118560717499270,  // 19^-266
1509    15912276110980153383, // 19^-259
1510    13246698229359450470, // 19^-252
1511    11027650146079950824, // 19^-245
1512    18360660994723606251, // 19^-238
1513    15284936849533635885, // 19^-231
1514    12724449003299523561, // 19^-224
1515    10592886580523254223, // 19^-217
1516    17636794501472422448, // 19^-210
1517    14682330350779734844, // 19^-203
1518    12222789379976654044, // 19^-196
1519    10175263507767080823, // 19^-189
1520    16941466343535111364, // 19^-182
1521    14103481529006456400, // 19^-175
1522    11740907617180962231, // 19^-168
1523    9774105166278679843,  // 19^-161
1524    16273551401031031665, // 19^-154
1525    13547453741119703900, // 19^-147
1526    11278023975525727060, // 19^-140
1527    9388762436329270793,  // 19^-133
1528    15631968911773566269, // 19^-126
1529    13013347271048440836, // 19^-119
1530    10833389456740556437, // 19^-112
1531    18037223579289291900, // 19^-105
1532    15015680722474235794, // 19^-98
1533    12500297873901968386, // 19^-91
1534    10406284591707172986, // 19^-84
1535    17326108560931302042, // 19^-77
1536    14423689608892845377, // 19^-70
1537    12007475377523598784, // 19^-63
1538    9996018276276719532,  // 19^-56
1539    16643029152771930644, // 19^-49
1540    13855037662215477149, // 19^-42
1541    11534082339177879647, // 19^-35
1542    9601926652984804576,  // 19^-28
1543    15986880054797934009, // 19^-21
1544    13308804739049304804, // 19^-14
1545    11079352755197736707, // 19^-7
1546    9223372036854775808,  // 19^0
1547    15356599543294590976, // 19^7
1548    12784106972526145936, // 19^14
1549    10642550821503597582, // 19^21
1550    17719483767102098773, // 19^28
1551    14751167752856224795, // 19^35
1552    12280095342105548712, // 19^42
1553    10222969742988875833, // 19^49
1554    17020895596425699999, // 19^56
1555    14169605026128220038, // 19^63
1556    11795954299763191941, // 19^70
1557    9819930589845265884,  // 19^77
1558    16349849166729084322, // 19^84
1559    13610970328610229813, // 19^91
1560    11330900450341615431, // 19^98
1561    9432781198977253334,  // 19^105
1562    15705258648723927251, // 19^112
1563    13074359725955544955, // 19^119
1564    10884181283927938347, // 19^126
1565    18121790237456409263, // 19^133
1566    15086081021789818522, // 19^140
1567    12558904921302722743, // 19^147
1568    10455073958207408827, // 19^154
1569    17407341190420966318, // 19^161
1570    14491314386248513408, // 19^168
1571    12063771850272711708, // 19^175
1572    10042884128822494706, // 19^182
1573    16721059197198717605, // 19^189
1574    13919996342176535757, // 19^196
1575    11588159331358018389, // 19^203
1576    9646944825844903597,  // 19^210
1577    16061833775630288054, // 19^217
1578    13371202432132867541, // 19^224
1579    11131297769520092558, // 19^231
1580    9266615374542536521,  // 19^238
1581];
1582const BASE19_SMALL_INT_POWERS: [u64; 7] = [1, 19, 361, 6859, 130321, 2476099, 47045881];
1583const BASE19_STEP: i32 = 7;
1584const BASE19_BIAS: i32 = 273;
1585const BASE19_LOG2_MULT: i64 = 18244709747;
1586const BASE19_LOG2_SHIFT: i32 = 32;
1587
1588// BASE20
1589
1590const BASE20_SMALL_MANTISSA: [u64; 7] = [
1591    9223372036854775808,  // 20^0
1592    11529215046068469760, // 20^1
1593    14411518807585587200, // 20^2
1594    18014398509481984000, // 20^3
1595    11258999068426240000, // 20^4
1596    14073748835532800000, // 20^5
1597    17592186044416000000, // 20^6
1598];
1599const BASE20_LARGE_MANTISSA: [u64; 72] = [
1600    11896135267822264502, // 20^-266
1601    14181298336770849826, // 20^-259
1602    16905424996341287883, // 20^-252
1603    10076418516839318205, // 20^-245
1604    12012026926087520367, // 20^-238
1605    14319451959237480602, // 20^-231
1606    17070116948172426941, // 20^-224
1607    10174582569701926077, // 20^-217
1608    12129047596099288555, // 20^-210
1609    14458951468586073584, // 20^-203
1610    17236413322193710308, // 20^-196
1611    10273702932711667006, // 20^-189
1612    12247208276643356092, // 20^-182
1613    14599809976391024699, // 20^-175
1614    17404329748619824289, // 20^-168
1615    10373788922202482396, // 20^-161
1616    12366520073655226703, // 20^-154
1617    14742040721959145907, // 20^-147
1618    17573882009934360870, // 20^-140
1619    10474849945267653984, // 20^-133
1620    12486994201263968925, // 20^-126
1621    14885657073574029118, // 20^-119
1622    17745086042373215101, // 20^-112
1623    10576895500643977583, // 20^-105
1624    12608641982846233347, // 20^-98
1625    15030672529752532658, // 20^-91
1626    17917957937422433684, // 20^-84
1627    10679935179604550411, // 20^-77
1628    12731474852090538039, // 20^-70
1629    15177100720513508366, // 20^-63
1630    18092513943330655534, // 20^-56
1631    10783978666860255917, // 20^-49
1632    12855504354071922204, // 20^-42
1633    15324955408658888583, // 20^-35
1634    18268770466636286477, // 20^-28
1635    10889035741470030830, // 20^-21
1636    12980742146337069071, // 20^-14
1637    15474250491067253436, // 20^-7
1638    9223372036854775808,  // 20^0
1639    10995116277760000000, // 20^7
1640    13107200000000000000, // 20^14
1641    15625000000000000000, // 20^21
1642    9313225746154785156,  // 20^28
1643    11102230246251565404, // 20^35
1644    13234889800848442797, // 20^42
1645    15777218104420236108, // 20^49
1646    9403954806578300063,  // 20^56
1647    11210387714598536567, // 20^63
1648    13363823550460978230, // 20^70
1649    15930919111324522770, // 20^77
1650    9495567745759798747,  // 20^84
1651    11319598848533390459, // 20^91
1652    13494013367335069727, // 20^98
1653    16086117467087590369, // 20^105
1654    9588073174409622174,  // 20^112
1655    11429873912822749822, // 20^119
1656    13625471488026082303, // 20^126
1657    16242827758820155028, // 20^133
1658    9681479787123295682,  // 20^140
1659    11541223272232169725, // 20^147
1660    13758210268297397763, // 20^154
1661    16401064715739962772, // 20^161
1662    9775796363198734982,  // 20^168
1663    11653657392500323036, // 20^175
1664    13892242184281734271, // 20^182
1665    16560843210556190337, // 20^189
1666    9871031767461413346,  // 20^196
1667    11767186841322676356, // 20^203
1668    14027579833653779454, // 20^210
1669    16722178260867332761, // 20^217
1670    9967194951097567535,  // 20^224
1671    11881822289344748896, // 20^231
1672];
1673const BASE20_SMALL_INT_POWERS: [u64; 7] = [1, 20, 400, 8000, 160000, 3200000, 64000000];
1674const BASE20_STEP: i32 = 7;
1675const BASE20_BIAS: i32 = 266;
1676const BASE20_LOG2_MULT: i64 = 283242;
1677const BASE20_LOG2_SHIFT: i32 = 16;
1678
1679// BASE21
1680
1681const BASE21_SMALL_MANTISSA: [u64; 7] = [
1682    9223372036854775808,  // 21^0
1683    12105675798371893248, // 21^1
1684    15888699485363109888, // 21^2
1685    10426959037269540864, // 21^3
1686    13685383736416272384, // 21^4
1687    17962066154046357504, // 21^5
1688    11787605913592922112, // 21^6
1689];
1690const BASE21_LARGE_MANTISSA: [u64; 72] = [
1691    14408615719666154271, // 21^-266
1692    12084465783258517647, // 21^-259
1693    10135207719324857823, // 21^-252
1694    17000740844691866712, // 21^-245
1695    14258473889848767691, // 21^-238
1696    11958542249702993646, // 21^-231
1697    10029596003240171126, // 21^-224
1698    16823588341749525709, // 21^-217
1699    14109896580142091329, // 21^-210
1700    11833930874797054029, // 21^-203
1701    9925084790952075138,  // 21^-196
1702    16648281817731599335, // 21^-189
1703    13962867487806377083, // 21^-182
1704    11710617985478380225, // 21^-175
1705    9821662614901370847,  // 21^-168
1706    16474802037018309233, // 21^-161
1707    13817370479981011975, // 21^-154
1708    11588590051161810088, // 21^-147
1709    9719318127024052612,  // 21^-140
1710    16303129964430447286, // 21^-133
1711    13673389591914329770, // 21^-126
1712    11467833682254685835, // 21^-119
1713    9618040097506134632,  // 21^-112
1714    16133246763140728476, // 21^-105
1715    13530909025211868449, // 21^-98
1716    11348335628687672485, // 21^-91
1717    9517817413551452467,  // 21^-84
1718    15965133792606908039, // 21^-77
1719    13389913146102881332, // 21^-70
1720    11230082778460885572, // 21^-63
1721    9418639078162304415,  // 21^-56
1722    15798772606526436117, // 21^-49
1723    13250386483724911652, // 21^-42
1724    11113062156205168633, // 21^-35
1725    9320494208932798947,  // 21^-28
1726    15634144950812425486, // 21^-21
1727    13112313728426242332, // 21^-14
1728    10997260921758362571, // 21^-7
1729    9223372036854775808,  // 21^0
1730    15471232761590710272, // 21^7
1731    12975679730086034724, // 21^14
1732    10882666368756410705, // 21^21
1733    18254523810272339491, // 21^28
1734    15310018163217775871, // 21^35
1735    12840469496451971963, // 21^42
1736    10769265923239144897, // 21^49
1737    18064306536063374465, // 21^56
1738    15150483466319342608, // 21^63
1739    12706668191495224563, // 21^70
1740    10657047142270599779, // 21^77
1741    17876071379371335714, // 21^84
1742    14992611165849387896, // 21^91
1743    12574261133782557711, // 21^98
1744    10545997712573703694, // 21^105
1745    17689797685974006860, // 21^112
1746    14836383939169393936, // 21^119
1747    12443233794865401683, // 21^126
1748    10436105449179196548, // 21^133
1749    17505465016871978304, // 21^140
1750    14681784644147610193, // 21^147
1751    12313571797685708585, // 21^154
1752    10327358294088626305, // 21^161
1753    17323053146045965028, // 21^168
1754    14528796317278122096, // 21^175
1755    12185260914998420522, // 21^182
1756    10219744314951277448, // 21^189
1757    17142542058237493769, // 21^196
1758    14377402171819519570, // 21^203
1759    12058287067810376090, // 21^210
1760    10113251703754886210, // 21^217
1761    16963911946752716066, // 21^224
1762    14227585595952961160, // 21^231
1763];
1764const BASE21_SMALL_INT_POWERS: [u64; 7] = [1, 21, 441, 9261, 194481, 4084101, 85766121];
1765const BASE21_STEP: i32 = 7;
1766const BASE21_BIAS: i32 = 266;
1767const BASE21_LOG2_MULT: i64 = 287855;
1768const BASE21_LOG2_SHIFT: i32 = 16;
1769
1770// BASE22
1771
1772const BASE22_SMALL_MANTISSA: [u64; 7] = [
1773    9223372036854775808,  // 22^0
1774    12682136550675316736, // 22^1
1775    17437937757178560512, // 22^2
1776    11988582208060260352, // 22^3
1777    16484300536082857984, // 22^4
1778    11332956618556964864, // 22^5
1779    15582815350515826688, // 22^6
1780];
1781const BASE22_LARGE_MANTISSA: [u64; 70] = [
1782    9269587019009961312,  // 22^-259
1783    10766865452458105492, // 22^-252
1784    12505993140104023937, // 22^-245
1785    14526035001637582317, // 22^-238
1786    16872365953260472216, // 22^-231
1787    9798845067792082715,  // 22^-224
1788    11381612386618310709, // 22^-217
1789    13220037629231758864, // 22^-210
1790    15355416173176400877, // 22^-203
1791    17835713669231780592, // 22^-196
1792    10358321731667433590, // 22^-189
1793    12031459025026523680, // 22^-182
1794    13974851334106036811, // 22^-175
1795    16232151844936756579, // 22^-168
1796    9427032431967498649,  // 22^-161
1797    10949742378252536811, // 22^-154
1798    12718409426865212084, // 22^-147
1799    14772762021382712235, // 22^-140
1800    17158945778190527545, // 22^-133
1801    9965280013064351107,  // 22^-126
1802    11574930887071326019, // 22^-119
1803    13444582075449265201, // 22^-112
1804    15616230364311619568, // 22^-105
1805    18138656108661462534, // 22^-98
1806    10534259477248206780, // 22^-91
1807    12235815274209166465, // 22^-84
1808    14212216411407346527, // 22^-77
1809    16507857531195957209, // 22^-70
1810    9587152080358667750,  // 22^-63
1811    11135725497779554116, // 22^-56
1812    12934433638113158426, // 22^-49
1813    15023679738882972932, // 22^-42
1814    17450393207123747022, // 22^-35
1815    10134541882409419905, // 22^-28
1816    11771532933066741091, // 22^-21
1817    13672940444874950532, // 22^-14
1818    15881474526053323426, // 22^-7
1819    9223372036854775808,  // 22^0
1820    10713185553479630848, // 22^7
1821    12443642546855641088, // 22^14
1822    14453613172379218947, // 22^21
1823    16788246122479815273, // 22^28
1824    9749991386498543747,  // 22^35
1825    11324867570234788254, // 22^42
1826    13154127055020322136, // 22^49
1827    15278859333807672616, // 22^56
1828    17746790917089950882, // 22^63
1829    10306678691583236909, // 22^70
1830    11971474296148943805, // 22^77
1831    13905177517602390611, // 22^84
1832    16151223902158337584, // 22^91
1833    9380032480974399852,  // 22^98
1834    10895150717634104284, // 22^105
1835    12654999798852712250, // 22^112
1836    14699110095811391320, // 22^119
1837    17073397158676562691, // 22^126
1838    9915596544207462992,  // 22^133
1839    11517222250937216925, // 22^140
1840    13377551999629643946, // 22^147
1841    15538373194824147716, // 22^154
1842    18048222989401488392, // 22^161
1843    10481739271897017716, // 22^168
1844    12174811695150892652, // 22^175
1845    14141359174025375600, // 22^182
1846    16425555014410689631, // 22^189
1847    9539353827706830891,  // 22^196
1848    11080206589104387250, // 22^203
1849    12869946987462278079, // 22^210
1850    14948776823616759120, // 22^217
1851    17363391530672110525, // 22^224
1852];
1853const BASE22_SMALL_INT_POWERS: [u64; 7] = [1, 22, 484, 10648, 234256, 5153632, 113379904];
1854const BASE22_STEP: i32 = 7;
1855const BASE22_BIAS: i32 = 259;
1856const BASE22_LOG2_MULT: i64 = 292254;
1857const BASE22_LOG2_SHIFT: i32 = 16;
1858
1859// BASE23
1860
1861const BASE23_SMALL_MANTISSA: [u64; 7] = [
1862    9223372036854775808,  // 23^0
1863    13258597302978740224, // 23^1
1864    9529616811515969536,  // 23^2
1865    13698824166554206208, // 23^3
1866    9846029869710835712,  // 23^4
1867    14153667937709326336, // 23^5
1868    10172948830228578304, // 23^6
1869];
1870const BASE23_LARGE_MANTISSA: [u64; 69] = [
1871    9630971713765025029,  // 23^-252
1872    15269861356524917016, // 23^-245
1873    12105147475110827234, // 23^-238
1874    9596327823341159083,  // 23^-231
1875    15214933627595239789, // 23^-224
1876    12061603644316153100, // 23^-217
1877    9561808551614073801,  // 23^-210
1878    15160203481036150549, // 23^-203
1879    12018216446491393101, // 23^-196
1880    9527413450313687580,  // 23^-189
1881    15105670206117496642, // 23^-182
1882    11974985318206853149, // 23^-175
1883    9493142072782406120,  // 23^-168
1884    15051333094665716613, // 23^-161
1885    11931909698059570948, // 23^-154
1886    9458993973969322090,  // 23^-147
1887    14997191441054643808, // 23^-140
1888    11888989026666025574, // 23^-133
1889    9424968710424435661,  // 23^-126
1890    14943244542196343052, // 23^-119
1891    11846222746654873270, // 23^-112
1892    9391065840292895827,  // 23^-105
1893    14889491697531980297, // 23^-98
1894    11803610302659709381, // 23^-91
1895    9357284923309262442,  // 23^-84
1896    14835932209022725101, // 23^-77
1897    11761151141311856318, // 23^-70
1898    9323625520791788901,  // 23^-63
1899    14782565381140685845, // 23^-56
1900    11718844711233177467, // 23^-49
1901    9290087195636725377,  // 23^-42
1902    14729390520859877547, // 23^-35
1903    11676690463028916948, // 23^-28
1904    9256669512312642559,  // 23^-21
1905    14676406937647222172, // 23^-14
1906    11634687849280565129, // 23^-7
1907    9223372036854775808,  // 23^0
1908    14623613943453581312, // 23^7
1909    11592836324538749809, // 23^14
1910    18380388673718779295, // 23^21
1911    14571010852704821123, // 23^28
1912    11551135345316152959, // 23^35
1913    18314271962956325083, // 23^42
1914    14518596982292909406, // 23^49
1915    11509584370080452960, // 23^56
1916    18248393082825183718, // 23^63
1917    14466371651567044709, // 23^70
1918    11468182859247292218, // 23^77
1919    18182751177816837937, // 23^84
1920    14414334182324817337, // 23^91
1921    11426930275173270071, // 23^98
1922    18117345395500148774, // 23^105
1923    14362483898803402166, // 23^112
1924    11385826082148960918, // 23^119
1925    18052174886510285819, // 23^126
1926    14310820127670783127, // 23^133
1927    11344869746391957446, // 23^140
1928    17987238804537697299, // 23^147
1929    14259342198017009262, // 23^154
1930    11304060736039938888, // 23^161
1931    17922536306317119829, // 23^168
1932    14208049441345482237, // 23^175
1933    11263398521143764220, // 23^182
1934    17858066551616627705, // 23^189
1935    14156941191564275184, // 23^196
1936    11222882573660590193, // 23^203
1937    17793828703226721580, // 23^210
1938    14106016784977482782, // 23^217
1939    11182512367447014130, // 23^224
1940];
1941const BASE23_SMALL_INT_POWERS: [u64; 7] = [1, 23, 529, 12167, 279841, 6436343, 148035889];
1942const BASE23_STEP: i32 = 7;
1943const BASE23_BIAS: i32 = 252;
1944const BASE23_LOG2_MULT: i64 = 296457;
1945const BASE23_LOG2_SHIFT: i32 = 16;
1946
1947// BASE24
1948
1949const BASE24_SMALL_MANTISSA: [u64; 7] = [
1950    9223372036854775808,  // 24^0
1951    13835058055282163712, // 24^1
1952    10376293541461622784, // 24^2
1953    15564440312192434176, // 24^3
1954    11673330234144325632, // 24^4
1955    17509995351216488448, // 24^5
1956    13132496513412366336, // 24^6
1957];
1958const BASE24_LARGE_MANTISSA: [u64; 68] = [
1959    13878157218102970303, // 24^-252
1960    14820082927730076197, // 24^-245
1961    15825938165500818674, // 24^-238
1962    16900061898413227754, // 24^-231
1963    18047087583901234911, // 24^-224
1964    9635981578611328308,  // 24^-217
1965    10289986187706530766, // 24^-210
1966    10988378804938565813, // 24^-203
1967    11734172092969064177, // 24^-196
1968    12530583187169601247, // 24^-189
1969    13381047573408163051, // 24^-182
1970    14289233907736158492, // 24^-175
1971    15259059841903798156, // 24^-168
1972    16294708922970511019, // 24^-161
1973    17400648639910404101, // 24^-154
1974    9290824847530286564,  // 24^-147
1975    9921403291771844100,  // 24^-140
1976    10594779784719249534, // 24^-133
1977    11313859076748534537, // 24^-126
1978    12081743066820822770, // 24^-119
1979    12901744183172431346, // 24^-112
1980    13777399672167044607, // 24^-105
1981    14712486856947913357, // 24^-98
1982    15711039431711468023, // 24^-91
1983    16777364861891103792, // 24^-84
1984    17916062965310470700, // 24^-77
1985    9566022877229980327,  // 24^-70
1986    10215279312745101062, // 24^-63
1987    10908601492662859386, // 24^-56
1988    11648980207252770253, // 24^-49
1989    12439609234991117453, // 24^-42
1990    13283899119592565366, // 24^-35
1991    14185491882103974832, // 24^-28
1992    15148276731524117655, // 24^-21
1993    16176406841720334625, // 24^-14
1994    17274317267012876867, // 24^-7
1995    9223372036854775808,  // 24^0
1996    9849372385059274752,  // 24^7
1997    10517860061584293888, // 24^14
1998    11231718727873462272, // 24^21
1999    11994027762626592768, // 24^28
2000    12808075545343924992, // 24^35
2001    13677373641439044901, // 24^42
2002    14605671950110933202, // 24^49
2003    15596974880318657672, // 24^56
2004    16655558624637160317, // 24^63
2005    17785989605508530085, // 24^70
2006    9496572086730262523,  // 24^77
2007    10141114821132365302, // 24^84
2008    10829403375886954548, // 24^91
2009    11564406827668344530, // 24^98
2010    12349295767632162835, // 24^105
2011    13187455978423603575, // 24^112
2012    14082503039459189950, // 24^119
2013    15038297923484984581, // 24^126
2014    16058963651690264296, // 24^133
2015    17148903079221976570, // 24^140
2016    18312817887821515019, // 24^147
2017    9777864433756263024,  // 24^154
2018    10441498787414525016, // 24^161
2019    11150174730505647564, // 24^168
2020    11906949284968677354, // 24^175
2021    12715086956165281921, // 24^182
2022    13578073815006577911, // 24^189
2023    14499632535849309517, // 24^196
2024    15483738455030488239, // 24^203
2025    16534636719312342666, // 24^210
2026    17656860598210983110, // 24^217
2027];
2028const BASE24_SMALL_INT_POWERS: [u64; 7] = [1, 24, 576, 13824, 331776, 7962624, 191102976];
2029const BASE24_STEP: i32 = 7;
2030const BASE24_BIAS: i32 = 252;
2031const BASE24_LOG2_MULT: i64 = 300481;
2032const BASE24_LOG2_SHIFT: i32 = 16;
2033
2034// BASE25
2035
2036const BASE25_SMALL_MANTISSA: [u64; 7] = [
2037    9223372036854775808,  // 25^0
2038    14411518807585587200, // 25^1
2039    11258999068426240000, // 25^2
2040    17592186044416000000, // 25^3
2041    13743895347200000000, // 25^4
2042    10737418240000000000, // 25^5
2043    16777216000000000000, // 25^6
2044];
2045const BASE25_LARGE_MANTISSA: [u64; 68] = [
2046    15492890949478498119, // 25^-252
2047    11008361120075348168, // 25^-245
2048    15643822052986917253, // 25^-238
2049    11115604119273511155, // 25^-231
2050    15796223521069679172, // 25^-224
2051    11223891875338892399, // 25^-217
2052    15950109677957715915, // 25^-210
2053    11333234566249726012, // 25^-203
2054    16105494987428025427, // 25^-196
2055    11443642469137689536, // 25^-189
2056    16262394054163123565, // 25^-182
2057    11555125961253852697, // 25^-175
2058    16420821625123739831, // 25^-168
2059    11667695520944036383, // 25^-161
2060    16580792590934885855, // 25^-154
2061    11781361728633673532, // 25^-147
2062    16742321987285426889, // 25^-140
2063    11896135267822264502, // 25^-133
2064    16905424996341287883, // 25^-126
2065    12012026926087520367, // 25^-119
2066    17070116948172426941, // 25^-112
2067    12129047596099288555, // 25^-105
2068    17236413322193710308, // 25^-98
2069    12247208276643356092, // 25^-91
2070    17404329748619824289, // 25^-84
2071    12366520073655226703, // 25^-77
2072    17573882009934360870, // 25^-70
2073    12486994201263968925, // 25^-63
2074    17745086042373215101, // 25^-56
2075    12608641982846233347, // 25^-49
2076    17917957937422433684, // 25^-42
2077    12731474852090538039, // 25^-35
2078    18092513943330655534, // 25^-28
2079    12855504354071922204, // 25^-21
2080    18268770466636286477, // 25^-14
2081    12980742146337069071, // 25^-7
2082    9223372036854775808,  // 25^0
2083    13107200000000000000, // 25^7
2084    9313225746154785156,  // 25^14
2085    13234889800848442797, // 25^21
2086    9403954806578300063,  // 25^28
2087    13363823550460978230, // 25^35
2088    9495567745759798747,  // 25^42
2089    13494013367335069727, // 25^49
2090    9588073174409622174,  // 25^56
2091    13625471488026082303, // 25^63
2092    9681479787123295682,  // 25^70
2093    13758210268297397763, // 25^77
2094    9775796363198734982,  // 25^84
2095    13892242184281734271, // 25^91
2096    9871031767461413346,  // 25^98
2097    14027579833653779454, // 25^105
2098    9967194951097567535,  // 25^112
2099    14164235936814247246, // 25^119
2100    10064294952495520794, // 25^126
2101    14302223338085469768, // 25^133
2102    10162340898095201970, // 25^140
2103    14441555006918636608, // 25^147
2104    10261342003245940623, // 25^154
2105    14582244039112794984, // 25^161
2106    10361307573072618726, // 25^168
2107    14724303658045725350, // 25^175
2108    10462247003350260393, // 25^182
2109    14867747215916808149, // 25^189
2110    10564169781387141817, // 25^196
2111    15012588195001998509, // 25^203
2112    10667085486916504429, // 25^210
2113    15158840208921026870, // 25^217
2114];
2115const BASE25_SMALL_INT_POWERS: [u64; 7] = [1, 25, 625, 15625, 390625, 9765625, 244140625];
2116const BASE25_STEP: i32 = 7;
2117const BASE25_BIAS: i32 = 252;
2118const BASE25_LOG2_MULT: i64 = 304340;
2119const BASE25_LOG2_SHIFT: i32 = 16;
2120
2121// BASE26
2122
2123const BASE26_SMALL_MANTISSA: [u64; 7] = [
2124    9223372036854775808,  // 26^0
2125    14987979559889010688, // 26^1
2126    12177733392409821184, // 26^2
2127    9894408381332979712,  // 26^3
2128    16078413619666092032, // 26^4
2129    13063711065978699776, // 26^5
2130    10614265241107693568, // 26^6
2131];
2132const BASE26_LARGE_MANTISSA: [u64; 67] = [
2133    12105269954044049440, // 26^-245
2134    11318739317371282802, // 26^-238
2135    10583312905946974966, // 26^-231
2136    9895670261906581517,  // 26^-224
2137    9252706671590202790,  // 26^-217
2138    17303038295456506514, // 26^-210
2139    16178786644847745028, // 26^-203
2140    15127582383507515360, // 26^-196
2141    14144679313308326113, // 26^-189
2142    13225639616708097270, // 26^-182
2143    12366313819957994305, // 26^-175
2144    11562822058185475244, // 26^-168
2145    10811536557764206566, // 26^-161
2146    10109065256878566708, // 26^-154
2147    9452236490329416245,  // 26^-147
2148    17676169338865748372, // 26^-140
2149    16527673784713390059, // 26^-133
2150    15453800848879553322, // 26^-126
2151    14449701983936623969, // 26^-119
2152    13510843673109724761, // 26^-112
2153    12632986961401522264, // 26^-105
2154    11812168316666510159, // 26^-98
2155    11044681734222321153, // 26^-91
2156    10327062004200202236, // 26^-84
2157    9656069066086567364,  // 26^-77
2158    18057346759632441273, // 26^-70
2159    16884084494735168740, // 26^-63
2160    15787054046203585657, // 26^-56
2161    14761302310200400353, // 26^-49
2162    13802198007013635263, // 26^-42
2163    12905410770780760221, // 26^-35
2164    12066891597841972649, // 26^-28
2165    11282854565446737172, // 26^-21
2166    10549759738273355365, // 26^-14
2167    9864297185584324446,  // 26^-7
2168    9223372036854775808,  // 26^0
2169    17248181016800002048, // 26^7
2170    16127493675824287744, // 26^14
2171    15079622135830712445, // 26^21
2172    14099835245963182583, // 26^28
2173    13183709258266090507, // 26^35
2174    12327107854416477244, // 26^42
2175    11526163470203963629, // 26^49
2176    10777259833438283283, // 26^56
2177    10077015636442889080, // 26^63
2178    9422269269415772631,  // 26^70
2179    17620129091456925542, // 26^77
2180    16475274709425560342, // 26^84
2181    15404806363345084091, // 26^91
2182    14403890877545881062, // 26^98
2183    13468009108242878856, // 26^105
2184    12592935539554553092, // 26^112
2185    11774719205254957782, // 26^119
2186    11009665850120294209, // 26^126
2187    10294321250328313309, // 26^133
2188    9625455617601982106,  // 26^140
2189    18000098033363922638, // 26^147
2190    16830555460575262708, // 26^154
2191    15737003020008648959, // 26^161
2192    14714503311068774005, // 26^168
2193    13758439736979533044, // 26^175
2194    12864495660801764695, // 26^182
2195    12028634915772762381, // 26^189
2196    11247083581971537298, // 26^196
2197    10516312947031287874, // 26^203
2198    9833023573966516058,  // 26^210
2199    18388260808361729691, // 26^217
2200];
2201const BASE26_SMALL_INT_POWERS: [u64; 7] = [1, 26, 676, 17576, 456976, 11881376, 308915776];
2202const BASE26_STEP: i32 = 7;
2203const BASE26_BIAS: i32 = 245;
2204const BASE26_LOG2_MULT: i64 = 20188234867;
2205const BASE26_LOG2_SHIFT: i32 = 32;
2206
2207// BASE27
2208
2209const BASE27_SMALL_MANTISSA: [u64; 6] = [
2210    9223372036854775808,  // 27^0
2211    15564440312192434176, // 27^1
2212    13132496513412366336, // 27^2
2213    11080543933191684096, // 27^3
2214    9349208943630483456,  // 27^4
2215    15776790092376440832, // 27^5
2216];
2217const BASE27_LARGE_MANTISSA: [u64; 76] = [
2218    16362187946641408838, // 27^-240
2219    11807394875954316034, // 27^-234
2220    17041067394086403622, // 27^-228
2221    12297292543386873229, // 27^-222
2222    17748114058878258402, // 27^-216
2223    12807516432401518638, // 27^-210
2224    9242248309993244326,  // 27^-204
2225    13338909893173747895, // 27^-198
2226    9625716122873707062,  // 27^-192
2227    13892351267110242231, // 27^-186
2228    10025094302862174179, // 27^-180
2229    14468755338661289290, // 27^-174
2230    10441042983020688038, // 27^-168
2231    15069074847369989965, // 27^-162
2232    10874249685827050127, // 27^-156
2233    15694302062657520659, // 27^-150
2234    11325430459582219446, // 27^-144
2235    16345470423947416967, // 27^-138
2236    11795331061968106016, // 27^-132
2237    17023656248839843776, // 27^-126
2238    12284728192712064755, // 27^-120
2239    17729980512159296735, // 27^-114
2240    12794430777395563548, // 27^-108
2241    9232805349408163458,  // 27^-102
2242    13325281304529035642, // 27^-96
2243    9615881366772943927,  // 27^-90
2244    13878157218102970303, // 27^-84
2245    10014851495355986817, // 27^-78
2246    14453972367916992462, // 27^-72
2247    10430375193750279268, // 27^-66
2248    15053678520084183432, // 27^-60
2249    10863139281980340679, // 27^-54
2250    15678266930207358578, // 27^-48
2251    11313859076748534537, // 27^-42
2252    16328769981827608423, // 27^-36
2253    11783279573783601017, // 27^-30
2254    17006262892853298360, // 27^-24
2255    12272176679245716810, // 27^-18
2256    17711865492790087155, // 27^-12
2257    12781358492223474271, // 27^-6
2258    9223372036854775808,  // 27^0
2259    13311666640442621952, // 27^6
2260    9606056659007943744,  // 27^12
2261    13863977671394362375, // 27^18
2262    10004619153098548172, // 27^24
2263    14439204501182606065, // 27^30
2264    10419718303939637392, // 27^36
2265    15038297923484984581, // 27^42
2266    10852040229820157048, // 27^48
2267    15662248181121787524, // 27^54
2268    11302299516591361707, // 27^60
2269    16312086602830473207, // 27^66
2270    11771240398807322073, // 27^72
2271    16988887307951181138, // 27^78
2272    12259637989871837542, // 27^84
2273    17693768981840924725, // 27^90
2274    12768299563225066619, // 27^96
2275    18427896724951050158, // 27^102
2276    13298065886687551351, // 27^108
2277    9596241989312152815,  // 27^114
2278    13849812612167175924, // 27^120
2279    9994397265397337538,  // 27^126
2280    14424451723026109070, // 27^132
2281    10409072302452601000, // 27^138
2282    15022933041500086259, // 27^144
2283    10840952517748290136, // 27^150
2284    15646245798661648271, // 27^156
2285    11290751767031273467, // 27^162
2286    16295420269522331823, // 27^168
2287    11759213524458657188, // 27^174
2288    16971529475976476179, // 27^180
2289    12247112111487835932, // 27^186
2290    17675690960401445308, // 27^192
2291    12755253976754113245, // 27^198
2292    18409068632845853217, // 27^204
2293    13284479029051404288, // 27^210
2294];
2295const BASE27_SMALL_INT_POWERS: [u64; 6] = [1, 27, 729, 19683, 531441, 14348907];
2296const BASE27_STEP: i32 = 6;
2297const BASE27_BIAS: i32 = 240;
2298const BASE27_LOG2_MULT: i64 = 311617;
2299const BASE27_LOG2_SHIFT: i32 = 16;
2300
2301// BASE28
2302
2303const BASE28_SMALL_MANTISSA: [u64; 6] = [
2304    9223372036854775808,  // 28^0
2305    16140901064495857664, // 28^1
2306    14123288431433875456, // 28^2
2307    12357877377504641024, // 28^3
2308    10813142705316560896, // 28^4
2309    9461499867151990784,  // 28^5
2310];
2311const BASE28_LARGE_MANTISSA: [u64; 76] = [
2312    10853684694473876180, // 28^-240
2313    9742165760957008810,  // 28^-234
2314    17488953546307848045, // 28^-228
2315    15697920957714630238, // 28^-222
2316    14090306875260685218, // 28^-216
2317    12647327526607851831, // 28^-210
2318    11352122773573968201, // 28^-204
2319    10189559113984709052, // 28^-198
2320    18292105715960495534, // 28^-192
2321    16418822825447359765, // 28^-186
2322    14737381642082644874, // 28^-180
2323    13228135778880165762, // 28^-174
2324    11873450822826176619, // 28^-168
2325    10657498289906897377, // 28^-162
2326    9566070681070377880,  // 28^-156
2327    17172830956378919788, // 28^-150
2328    15414172280784786485, // 28^-144
2329    13835616719528574716, // 28^-138
2330    12418720027433908743, // 28^-132
2331    11146926822720122755, // 28^-126
2332    10005377149705503250, // 28^-120
2333    17961465702601665525, // 28^-114
2334    16122043445170466212, // 28^-108
2335    14470995249030000148, // 28^-102
2336    12989029846596759700, // 28^-96
2337    11658831576707932907, // 28^-90
2338    10464858064026730335, // 28^-84
2339    9393158617970892313,  // 28^-78
2340    16862422458582420498, // 28^-72
2341    15135552519453149331, // 28^-66
2342    13585530230416439557, // 28^-60
2343    12194244736314878063, // 28^-54
2344    10945439903127358164, // 28^-48
2345    9824524377159351811,  // 28^-42
2346    17636802191900948811, // 28^-36
2347    15830628517722738088, // 28^-30
2348    14209423938610553080, // 28^-24
2349    12754245887402290033, // 28^-18
2350    11448091693168579255, // 28^-12
2351    10275699917675706335, // 28^-6
2352    9223372036854775808,  // 28^0
2353    16557624767515983872, // 28^6
2354    14861968965709594624, // 28^12
2355    13339964194082398208, // 28^18
2356    11973826961285400900, // 28^24
2357    10747594971986893695, // 28^30
2358    9646940619348801089,  // 28^36
2359    17318007155239366140, // 28^42
2360    15544481077627229210, // 28^48
2361    13952580675520064463, // 28^54
2362    12523705779222565186, // 28^60
2363    11241161050565762112, // 28^66
2364    10089960910324183248, // 28^72
2365    18113308885783841476, // 28^78
2366    16258336464718499495, // 28^84
2367    14593330587292989709, // 28^90
2368    13098836900821174211, // 28^96
2369    11757393360479052160, // 28^102
2370    10553326198326110898, // 28^108
2371    9472566787009190529,  // 28^114
2372    17004974516675479989, // 28^120
2373    15263505912112072336, // 28^126
2374    13700379997665963732, // 28^132
2375    12297332812083457696, // 28^138
2376    11037970794744924274, // 28^144
2377    9907579239127697723,  // 28^150
2378    17785900724855568076, // 28^156
2379    15964457964924108341, // 28^162
2380    14329547997401095751, // 28^168
2381    12862068117875988113, // 28^174
2382    11544871917724549298, // 28^180
2383    10362568941103939059, // 28^186
2384    9301344858947275744,  // 28^192
2385    16697600117649658875, // 28^198
2386    14987609529429357277, // 28^204
2387    13452737987730670580, // 28^210
2388];
2389const BASE28_SMALL_INT_POWERS: [u64; 6] = [1, 28, 784, 21952, 614656, 17210368];
2390const BASE28_STEP: i32 = 6;
2391const BASE28_BIAS: i32 = 240;
2392const BASE28_LOG2_MULT: i64 = 315055;
2393const BASE28_LOG2_SHIFT: i32 = 16;
2394
2395// BASE29
2396
2397const BASE29_SMALL_MANTISSA: [u64; 6] = [
2398    9223372036854775808,  // 29^0
2399    16717361816799281152, // 29^1
2400    15150109146474348544, // 29^2
2401    13729786413992378368, // 29^3
2402    12442618937680592896, // 29^4
2403    11276123412273037312, // 29^5
2404];
2405const BASE29_LARGE_MANTISSA: [u64; 76] = [
2406    9780142334064946636,  // 29^-240
2407    10835857583212112985, // 29^-234
2408    12005531775819627369, // 29^-228
2409    13301466184228767173, // 29^-222
2410    14737289938837575007, // 29^-216
2411    16328103363438049788, // 29^-210
2412    18090636782853846909, // 29^-204
2413    10021713236516230810, // 29^-198
2414    11103504802015131117, // 29^-192
2415    12302070113036945059, // 29^-186
2416    13630014285094069421, // 29^-180
2417    15101303090037955289, // 29^-174
2418    16731409831799452344, // 29^-168
2419    9268739038298839376,  // 29^-162
2420    10269250974512215384, // 29^-156
2421    11377762945074294339, // 29^-150
2422    12605932989231929836, // 29^-144
2423    13966677570638048918, // 29^-138
2424    15474307417689145256, // 29^-132
2425    17144678027117236568, // 29^-126
2426    9497678206828984163,  // 29^-120
2427    10522902929736936910, // 29^-114
2428    11658795303156142066, // 29^-108
2429    12917301321555931503, // 29^-102
2430    14311656487072982013, // 29^-96
2431    15856525005124406387, // 29^-90
2432    17568154005459773215, // 29^-84
2433    9732272205284828726,  // 29^-78
2434    10782820124222926001, // 29^-72
2435    11946769200332301461, // 29^-66
2436    13236360495839591806, // 29^-60
2437    14665156431661011058, // 29^-54
2438    16248183421166822582, // 29^-48
2439    18002089900515211938, // 29^-42
2440    9972660708767378680,  // 29^-36
2441    11049157310268331325, // 29^-30
2442    12241856093602695018, // 29^-24
2443    13563300476969856592, // 29^-18
2444    15027387875005778139, // 29^-12
2445    16649515855621676607, // 29^-6
2446    9223372036854775808,  // 29^0
2447    10218986842372440064, // 29^6
2448    11322073062575009312, // 29^12
2449    12544231674979455490, // 29^18
2450    13898315921993315819, // 29^24
2451    15398566486364679514, // 29^30
2452    17060761258115507449, // 29^36
2453    9451190634016324153,  // 29^42
2454    10471397266405980105, // 29^48
2455    11601729872662437745, // 29^54
2456    12854075976092328003, // 29^60
2457    14241606296013212103, // 29^66
2458    15778913262056350490, // 29^72
2459    17482164480364512070, // 29^78
2460    9684636382831873707,  // 29^84
2461    10730042263704319491, // 29^90
2462    11888294245613666403, // 29^96
2463    13171573475377840424, // 29^102
2464    14593375990949121808, // 29^108
2465    16168654657039833397, // 29^114
2466    17913976421956996862, // 29^120
2467    9923848274745194421,  // 29^126
2468    10995075829111145761, // 29^132
2469    12181936799210906401, // 29^138
2470    13496913207916061440, // 29^144
2471    14953834447230017102, // 29^150
2472    16568022719743769659, // 29^156
2473    18356454179736676324, // 29^162
2474    10168968734308426004, // 29^168
2475    11266655761164621625, // 29^174
2476    12482832365519782645, // 29^180
2477    13830288877980342143, // 29^186
2478    15323196278493163895, // 29^192
2479    16977255230225892037, // 29^198
2480    9404930600437880197,  // 29^204
2481    10420143703980341466, // 29^210
2482];
2483const BASE29_SMALL_INT_POWERS: [u64; 6] = [1, 29, 841, 24389, 707281, 20511149];
2484const BASE29_STEP: i32 = 6;
2485const BASE29_BIAS: i32 = 240;
2486const BASE29_LOG2_MULT: i64 = 318373;
2487const BASE29_LOG2_SHIFT: i32 = 16;
2488
2489// BASE30
2490
2491const BASE30_SMALL_MANTISSA: [u64; 6] = [
2492    9223372036854775808,  // 30^0
2493    17293822569102704640, // 30^1
2494    16212958658533785600, // 30^2
2495    15199648742375424000, // 30^3
2496    14249670695976960000, // 30^4
2497    13359066277478400000, // 30^5
2498];
2499const BASE30_LARGE_MANTISSA: [u64; 74] = [
2500    15921395853562858335, // 30^-234
2501    10809579470425214363, // 30^-228
2502    14677985448278451843, // 30^-222
2503    9965385675239368708,  // 30^-216
2504    13531681443098000788, // 30^-210
2505    18374241463874359754, // 30^-204
2506    12474900136854879801, // 30^-198
2507    16939271613521887687, // 30^-192
2508    11500650091336533543, // 30^-186
2509    15616368347004676150, // 30^-180
2510    10602485877430447296, // 30^-174
2511    14396779620362065880, // 30^-168
2512    9774465433549085656,  // 30^-162
2513    13272436896445757604, // 30^-156
2514    18022221508452589239, // 30^-150
2515    12235901765210495847, // 30^-144
2516    16614743297618723424, // 30^-138
2517    11280316732790367097, // 30^-132
2518    15317184660964044954, // 30^-126
2519    10399359853791807565, // 30^-120
2520    14120961229157126909, // 30^-114
2521    9587202906660312336,  // 30^-108
2522    13018159044823362852, // 30^-102
2523    17676945670836105047, // 30^-96
2524    12001482205502242389, // 30^-90
2525    16296432405358431306, // 30^-84
2526    11064204595523231124, // 30^-78
2527    15023732837543702665, // 30^-72
2528    10200125387468709836, // 30^-66
2529    13850427060322257636, // 30^-60
2530    9403528018831206315,  // 30^-54
2531    12768752734601403407, // 30^-48
2532    17338284744926585040, // 30^-42
2533    11771553735296689434, // 30^-36
2534    15984219821228248249, // 30^-30
2535    10852232807944894743, // 30^-24
2536    14735903063773789011, // 30^-18
2537    10004707922685045925, // 30^-12
2538    13585075876931470780, // 30^-6
2539    9223372036854775808,  // 30^0
2540    12524124635136000000, // 30^6
2541    17006112000000000000, // 30^12
2542    11546030312776565551, // 30^18
2543    15677988711770840524, // 30^24
2544    10644322047830505987, // 30^30
2545    14453587630518598230, // 30^36
2546    9813034332029575584,  // 30^42
2547    13324808381590173768, // 30^48
2548    18093335088676282534, // 30^54
2549    12284183203843431517, // 30^60
2550    16680303133282552614, // 30^66
2551    11324827544542942993, // 30^72
2552    15377624481863911156, // 30^78
2553    10440394512637323916, // 30^84
2554    14176680892170610158, // 30^90
2555    9625032889090827484,  // 30^96
2556    13069527179276967861, // 30^102
2557    17746696832949127203, // 30^108
2558    12048838651943871501, // 30^114
2559    16360736223435182728, // 30^120
2560    11107862654034279481, // 30^126
2561    15083014731837417449, // 30^132
2562    10240373890390132852, // 30^138
2563    13905079227116716745, // 30^144
2564    9440633241616270046,  // 30^150
2565    12819136740897336720, // 30^156
2566    17406699590597596894, // 30^162
2567    11818002910861417777, // 30^168
2568    16047291684929232224, // 30^174
2569    10895054450550498712, // 30^180
2570    14794049215412351417, // 30^186
2571    10044185331124443731, // 30^192
2572    13638680998961850032, // 30^198
2573    9259766385185707988,  // 30^204
2574];
2575const BASE30_SMALL_INT_POWERS: [u64; 6] = [1, 30, 900, 27000, 810000, 24300000];
2576const BASE30_STEP: i32 = 6;
2577const BASE30_BIAS: i32 = 234;
2578const BASE30_LOG2_MULT: i64 = 321578;
2579const BASE30_LOG2_SHIFT: i32 = 16;
2580
2581// BASE31
2582
2583const BASE31_SMALL_MANTISSA: [u64; 6] = [
2584    9223372036854775808,  // 31^0
2585    17870283321406128128, // 31^1
2586    17311836967612186624, // 31^2
2587    16770842062374305792, // 31^3
2588    16246753247925108736, // 31^4
2589    15739042208927449088, // 31^5
2590];
2591const BASE31_LARGE_MANTISSA: [u64; 74] = [
2592    15172192345302428421, // 31^-234
2593    12540609161645107233, // 31^-228
2594    10365468257053156090, // 31^-222
2595    17135201456813756829, // 31^-216
2596    14163138687236953263, // 31^-210
2597    11706573627364173290, // 31^-204
2598    9676094340331131706,  // 31^-198
2599    15995594383677739926, // 31^-192
2600    13221193938792609146, // 31^-186
2601    10928007110853986174, // 31^-180
2602    18065136926019727780, // 31^-174
2603    14931778907414090897, // 31^-168
2604    12341894902482781431, // 31^-162
2605    10201220546354171409, // 31^-156
2606    16863682839241173595, // 31^-150
2607    13938714372965575021, // 31^-144
2608    11521075213714088050, // 31^-138
2609    9522770215989197442,  // 31^-132
2610    15742133595063495983, // 31^-126
2611    13011695363011784957, // 31^-120
2612    10754845599386459585, // 31^-114
2613    17778882864941161542, // 31^-108
2614    14695174979700806287, // 31^-102
2615    12146329402386737855, // 31^-96
2616    10039575449430160254, // 31^-90
2617    16596466614020050649, // 31^-84
2618    13717846210614220387, // 31^-78
2619    11338516145303865769, // 31^-72
2620    9371875613960541536,  // 31^-66
2621    15492689060539222513, // 31^-60
2622    12805516430937677459, // 31^-54
2623    10584427946771654325, // 31^-48
2624    17497164689077279120, // 31^-42
2625    14462320197950402007, // 31^-36
2626    11953862767183809017, // 31^-30
2627    9880491726141866768,  // 31^-24
2628    16333484606893641287, // 31^-18
2629    13500477850600094178, // 31^-12
2630    11158849846261135900, // 31^-6
2631    9223372036854775808,  // 31^0
2632    15247197139898466304, // 31^6
2633    12602604540616796176, // 31^12
2634    10416710674748495795, // 31^18
2635    17219910524322248562, // 31^24
2636    14233155154461633068, // 31^30
2637    11764445893307051548, // 31^36
2638    9723928789827359386,  // 31^42
2639    16074669723871456105, // 31^48
2640    13286553836236866995, // 31^54
2641    10982030478739077827, // 31^60
2642    18154443194596327488, // 31^66
2643    15005595201356001156, // 31^72
2644    12402907923608447627, // 31^78
2645    10251650993997756459, // 31^84
2646    16947049635463054782, // 31^90
2647    14007621382887632827, // 31^96
2648    11578030455268066882, // 31^102
2649    9569846696947249770,  // 31^108
2650    15819955934111728582, // 31^114
2651    13076019589586139267, // 31^120
2652    10808012931221917147, // 31^126
2653    17866774016535005152, // 31^132
2654    14767821605568725557, // 31^138
2655    12206375631777172937, // 31^144
2656    10089206793225315915, // 31^150
2657    16678512408132988469, // 31^156
2658    13785661343319529298, // 31^162
2659    11394568893327831301, // 31^168
2660    9418206136893990095,  // 31^174
2661    15569278253075119325, // 31^180
2662    12868821397533098208, // 31^186
2663    10636752807015729117, // 31^192
2664    17583663147154342787, // 31^198
2665    14533815689909759814, // 31^204
2666];
2667const BASE31_SMALL_INT_POWERS: [u64; 6] = [1, 31, 961, 29791, 923521, 28629151];
2668const BASE31_STEP: i32 = 6;
2669const BASE31_BIAS: i32 = 234;
2670const BASE31_LOG2_MULT: i64 = 21278111132;
2671const BASE31_LOG2_SHIFT: i32 = 32;
2672
2673// BASE33
2674
2675const BASE33_SMALL_MANTISSA: [u64; 6] = [
2676    9223372036854775808,  // 33^0
2677    9511602413006487552,  // 33^1
2678    9808839988412940288,  // 33^2
2679    10115366238050844672, // 33^3
2680    10431471432989933568, // 33^4
2681    10757454915270868992, // 33^5
2682];
2683const BASE33_LARGE_MANTISSA: [u64; 72] = [
2684    16952605037124200569, // 33^-228
2685    10195070131008495069, // 33^-222
2686    12262357879342609130, // 33^-216
2687    14748836332546310936, // 33^-210
2688    17739506162243888511, // 33^-204
2689    10668301952265249182, // 33^-198
2690    12831548466319904021, // 33^-192
2691    15433443558330863109, // 33^-186
2692    9281466718275888268,  // 33^-180
2693    11163500111543439891, // 33^-174
2694    13427159577595330562, // 33^-168
2695    16149828684624228128, // 33^-162
2696    9712291160146516482,  // 33^-156
2697    11681684235978010467, // 33^-150
2698    14050417593436164695, // 33^-144
2699    16899466768835551431, // 33^-138
2700    10163113486548439647, // 33^-132
2701    12223921281461810852, // 33^-126
2702    14702605819874780450, // 33^-120
2703    17683901337162836029, // 33^-114
2704    10634861953510936381, // 33^-108
2705    12791327729538214791, // 33^-102
2706    15385067131072375518, // 33^-96
2707    9252373781378705800,  // 33^-90
2708    11128507904583594948, // 33^-84
2709    13385071886268464065, // 33^-78
2710    16099206734335173177, // 33^-72
2711    9681847795705762071,  // 33^-66
2712    11645067770860388376, // 33^-60
2713    14006376287807173243, // 33^-54
2714    16846495063476347823, // 33^-48
2715    10131257010808365886, // 33^-42
2716    12185605163840289543, // 33^-36
2717    14656520217639143557, // 33^-30
2718    17628470806481188820, // 33^-24
2719    10601526773079323099, // 33^-18
2720    12751233065433685927, // 33^-12
2721    15336842340660548274, // 33^-6
2722    9223372036854775808,  // 33^0
2723    11093625381373083648, // 33^6
2724    13343116119623879688, // 33^12
2725    16048743459528137878, // 33^18
2726    9651499856579507665,  // 33^24
2727    11608566080760702539, // 33^30
2728    13962473030502269494, // 33^36
2729    16793689398951866695, // 33^42
2730    10099500389807484117, // 33^48
2731    12147409148830342864, // 33^54
2732    14610579071614836924, // 33^60
2733    17573214023869781748, // 33^66
2734    10568296082415350040, // 33^72
2735    12711264078829073096, // 33^78
2736    15288768711786753433, // 33^84
2737    18388922397719682024, // 33^90
2738    11058852198106072831, // 33^96
2739    13301291864141109889, // 33^102
2740    15998438362831755651, // 33^108
2741    9621247043655259795,  // 33^114
2742    11572178805914439916, // 33^120
2743    13918707388806312258, // 33^126
2744    16741049254803901004, // 33^132
2745    10067843310549183526, // 33^138
2746    12109332859968012500, // 33^144
2747    14564781929001072895, // 33^150
2748    17518130444711929011, // 33^156
2749    10535169553993820096, // 33^162
2750    12671420375785822681, // 33^168
2751    15240845770632227134, // 33^174
2752    18331281964891256972, // 33^180
2753    11024188012054395372, // 33^186
2754    13259598707595875029, // 33^192
2755    15948290948433680084, // 33^198
2756];
2757const BASE33_SMALL_INT_POWERS: [u64; 6] = [1, 33, 1089, 35937, 1185921, 39135393];
2758const BASE33_STEP: i32 = 6;
2759const BASE33_BIAS: i32 = 228;
2760const BASE33_LOG2_MULT: i64 = 330590;
2761const BASE33_LOG2_SHIFT: i32 = 16;
2762
2763// BASE34
2764
2765const BASE34_SMALL_MANTISSA: [u64; 6] = [
2766    9223372036854775808,  // 34^0
2767    9799832789158199296,  // 34^1
2768    10412322338480586752, // 34^2
2769    11063092484635623424, // 34^3
2770    11754535764925349888, // 34^4
2771    12489194250233184256, // 34^5
2772];
2773const BASE34_LARGE_MANTISSA: [u64; 72] = [
2774    9604872659818954289,  // 34^-228
2775    13818638119852157632, // 34^-222
2776    9940514895438007254,  // 34^-216
2777    14301530372152488549, // 34^-210
2778    10287886147601198282, // 34^-204
2779    14801297292224652053, // 34^-198
2780    10647396286743453217, // 34^-192
2781    15318528565264575918, // 34^-186
2782    11019469506220361724, // 34^-180
2783    15853834483014935870, // 34^-174
2784    11404544822822581011, // 34^-168
2785    16407846663860846991, // 34^-162
2786    11803076594780713339, // 34^-156
2787    16981218798089296108, // 34^-150
2788    12215535057871861844, // 34^-144
2789    17574627419191661979, // 34^-138
2790    12642406880260427750, // 34^-132
2791    18188772702119398880, // 34^-126
2792    13084195736727816960, // 34^-120
2793    9412189644717380884,  // 34^-114
2794    13541422902968601381, // 34^-108
2795    9741098573165682574,  // 34^-102
2796    14014627870654357169, // 34^-96
2797    10081501222766715924, // 34^-90
2798    14504368983990906269, // 34^-84
2799    10433799241558921201, // 34^-78
2800    15011224098520048145, // 34^-72
2801    10798408313169791102, // 34^-66
2802    15535791262943115320, // 34^-60
2803    11175758647289472494, // 34^-54
2804    16078689424770850259, // 34^-48
2805    11566295487283966163, // 34^-42
2806    16640559160632214299, // 34^-36
2807    11970479635546867736, // 34^-30
2808    17222063432103834911, // 34^-24
2809    12388787997209523031, // 34^-18
2810    17823888367951909878, // 34^-12
2811    12821714142851132552, // 34^-6
2812    9223372036854775808,  // 34^0
2813    13269768890872758272, // 34^6
2814    9545682734772404224,  // 34^12
2815    13733480910222387686, // 34^18
2816    9879256578703990224,  // 34^24
2817    14213397344182222761, // 34^30
2818    10224487159240697338, // 34^36
2819    14710084455954213119, // 34^42
2820    10581781820995279550, // 34^48
2821    15224128296805573036, // 34^54
2822    10951562143236309252, // 34^60
2823    15756135397562640779, // 34^66
2824    11334264437318166304, // 34^72
2825    16306733484268988021, // 34^78
2826    11730340261493716029, // 34^84
2827    16876572218852198941, // 34^90
2828    12140256953717114113, // 34^96
2829    17466323965673246884, // 34^102
2830    12564498183065403345, // 34^108
2831    18076684584862935827, // 34^114
2832    13003564520429535778, // 34^120
2833    9354187126690740272,  // 34^126
2834    13457974029148190318, // 34^132
2835    9681069157385005207,  // 34^138
2836    13928262876281286641, // 34^144
2837    10019374079298318020, // 34^150
2838    14414985965244449544, // 34^156
2839    10369501065317377529, // 34^162
2840    14918717590550882042, // 34^168
2841    10731863237423767546, // 34^174
2842    15440052115433190547, // 34^180
2843    11106888154145020298, // 34^186
2844    15979604673144701925, // 34^192
2845    11495018315039655259, // 34^198
2846];
2847const BASE34_SMALL_INT_POWERS: [u64; 6] = [1, 34, 1156, 39304, 1336336, 45435424];
2848const BASE34_STEP: i32 = 6;
2849const BASE34_BIAS: i32 = 228;
2850const BASE34_LOG2_MULT: i64 = 333412;
2851const BASE34_LOG2_SHIFT: i32 = 16;
2852
2853// BASE35
2854
2855const BASE35_SMALL_MANTISSA: [u64; 6] = [
2856    9223372036854775808,  // 35^0
2857    10088063165309911040, // 35^1
2858    11033819087057715200, // 35^2
2859    12068239626469376000, // 35^3
2860    13199637091450880000, // 35^4
2861    14437103068774400000, // 35^5
2862];
2863const BASE35_LARGE_MANTISSA: [u64; 71] = [
2864    11348773864264802781, // 35^-222
2865    9714654125541636184,  // 35^-216
2866    16631665395337738380, // 35^-210
2867    14236857547774631404, // 35^-204
2868    12186880148060573338, // 35^-198
2869    10432080762542161338, // 35^-192
2870    17859912908640730010, // 35^-186
2871    15288248642090717076, // 35^-180
2872    13086880531724678972, // 35^-174
2873    11202489314578100722, // 35^-168
2874    9589433214356533221,  // 35^-162
2875    16417284907013989533, // 35^-156
2876    14053345890899718904, // 35^-150
2877    12029792492965214691, // 35^-144
2878    10297612294415481616, // 35^-138
2879    17629700433836653197, // 35^-132
2880    15091184660126225295, // 35^-126
2881    12918191962520288360, // 35^-120
2882    11058090357972464737, // 35^-114
2883    9465826388078148767,  // 35^-108
2884    16205667761547463659, // 35^-102
2885    13872199680760223069, // 35^-96
2886    11874729681889289960, // 35^-90
2887    10164877111271147984, // 35^-84
2888    17402455374597619654, // 35^-78
2889    14896660812999728329, // 35^-72
2890    12751677771947325078, // 35^-66
2891    10915552689343391453, // 35^-60
2892    9343812841314943660,  // 35^-54
2893    15996778339727633381, // 35^-48
2894    13693388426986467236, // 35^-42
2895    11721665614797754707, // 35^-36
2896    10033852871240677221, // 35^-30
2897    17178139481236495112, // 35^-24
2898    14704644358629538426, // 35^-18
2899    12587309932484688516, // 35^-12
2900    10774852316876721446, // 35^-6
2901    9223372036854775808,  // 35^0
2902    15790581481472000000, // 35^6
2903    13516882032226562500, // 35^12
2904    11570574528082381959, // 35^18
2905    9904517520440015906,  // 35^24
2906    16956714997100751955, // 35^30
2907    14515102976976096155, // 35^36
2908    12425060777883196253, // 35^42
2909    10635965558010358334, // 35^48
2910    18208967404416189641, // 35^54
2911    15587042479907979542, // 35^60
2912    13342650787080448100, // 35^66
2913    11421430990225254489, // 35^72
2914    9776849289257450184,  // 35^78
2915    16738144652217302890, // 35^84
2916    14328004764601889967, // 35^90
2917    12264902998508825496, // 35^96
2918    10498869035448040891, // 35^102
2919    17974255652391389054, // 35^108
2920    15386127075531072702, // 35^114
2921    13170665365099231511, // 35^120
2922    11274209897518154234, // 35^126
2923    9650826688689364000,  // 35^132
2924    16522391657019252092, // 35^138
2925    14143318229301497845, // 35^144
2926    12106809636745979660, // 35^150
2927    10363539673224497244, // 35^156
2928    17742569311160898016, // 35^162
2929    15187801450438335382, // 35^168
2930    13000896817848986534, // 35^174
2931    11128886469837128365, // 35^180
2932    9526428506723229038,  // 35^186
2933    16309419696153507876, // 35^192
2934    13961012284800847178, // 35^198
2935];
2936const BASE35_SMALL_INT_POWERS: [u64; 6] = [1, 35, 1225, 42875, 1500625, 52521875];
2937const BASE35_STEP: i32 = 6;
2938const BASE35_BIAS: i32 = 222;
2939const BASE35_LOG2_MULT: i64 = 336153;
2940const BASE35_LOG2_SHIFT: i32 = 16;
2941
2942// BASE36
2943
2944const BASE36_SMALL_MANTISSA: [u64; 6] = [
2945    9223372036854775808,  // 36^0
2946    10376293541461622784, // 36^1
2947    11673330234144325632, // 36^2
2948    13132496513412366336, // 36^3
2949    14774058577588912128, // 36^4
2950    16620815899787526144, // 36^5
2951];
2952const BASE36_LARGE_MANTISSA: [u64; 71] = [
2953    11172994339528645078, // 36^-222
2954    11325430459582219446, // 36^-216
2955    11479946305982273645, // 36^-210
2956    11636570252986002899, // 36^-204
2957    11795331061968106016, // 36^-198
2958    11956257886702331980, // 36^-192
2959    12119380278715084095, // 36^-186
2960    12284728192712064755, // 36^-180
2961    12452331992078957377, // 36^-174
2962    12622222454457155586, // 36^-168
2963    12794430777395563548, // 36^-162
2964    12968988584079505325, // 36^-156
2965    13145927929137795237, // 36^-150
2966    13325281304529035642, // 36^-144
2967    13507081645508223020, // 36^-138
2968    13691362336674758052, // 36^-132
2969    13878157218102970303, // 36^-126
2970    14067500591556283265, // 36^-120
2971    14259427226786160917, // 36^-114
2972    14453972367916992462, // 36^-108
2973    14651171739918087751, // 36^-102
2974    14851061555163971849, // 36^-96
2975    15053678520084183432, // 36^-90
2976    15259059841903798156, // 36^-84
2977    15467243235475914756, // 36^-78
2978    15678266930207358578, // 36^-72
2979    15892169677078874302, // 36^-66
2980    16108990755761097026, // 36^-60
2981    16328769981827608423, // 36^-54
2982    16551547714066402526, // 36^-48
2983    16777364861891103792, // 36^-42
2984    17006262892853298360, // 36^-36
2985    17238283840257358043, // 36^-30
2986    17473470310879155380, // 36^-24
2987    17711865492790087155, // 36^-18
2988    17953513163287843146, // 36^-12
2989    18198457696935376453, // 36^-6
2990    9223372036854775808,  // 36^0
2991    9349208943630483456,  // 36^6
2992    9476762676643233792,  // 36^12
2993    9606056659007943744,  // 36^18
2994    9737114633407288801,  // 36^24
2995    9869960666451650558,  // 36^30
2996    10004619153098548172, // 36^36
2997    10141114821132365302, // 36^42
2998    10279472735705195138, // 36^48
2999    10419718303939637392, // 36^54
3000    10561877279594392463, // 36^60
3001    10705975767793509530, // 36^66
3002    10852040229820157048, // 36^72
3003    11000097487975795902, // 36^78
3004    11150174730505647564, // 36^84
3005    11302299516591361707, // 36^90
3006    11456499781411800112, // 36^96
3007    11612803841272866179, // 36^102
3008    11771240398807322073, // 36^108
3009    11931838548245548344, // 36^114
3010    12094627780758213915, // 36^120
3011    12259637989871837542, // 36^126
3012    12426899476958235198, // 36^132
3013    12596442956798861450, // 36^138
3014    12768299563225066619, // 36^144
3015    12942500854835305460, // 36^150
3016    13119078820790347231, // 36^156
3017    13298065886687551351, // 36^162
3018    13479494920515287357, // 36^168
3019    13663399238688592583, // 36^174
3020    13849812612167175924, // 36^180
3021    14038769272656891137, // 36^186
3022    14230303918895818486, // 36^192
3023    14424451723026109070, // 36^198
3024];
3025const BASE36_SMALL_INT_POWERS: [u64; 6] = [1, 36, 1296, 46656, 1679616, 60466176];
3026const BASE36_STEP: i32 = 6;
3027const BASE36_BIAS: i32 = 222;
3028const BASE36_LOG2_MULT: i64 = 22204658804;
3029const BASE36_LOG2_SHIFT: i32 = 32;