1 //! Cached exponents for basen values with 160-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.
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 //! This files takes ~ 44KB of storage.
12 //!
13 //! This file is mostly automatically generated, do not change values
14 //! manually, unless you know what you are doing. The script to generate
15 //! the values is as follows:
16 //!
17 //! ```text
18 //! import math
19 //! from collections import deque
20 //!
21 //! STEP_STR = "const BASE{0}_STEP: i32 = {1};"
22 //! SMALL_MANTISSA_STR = "const BASE{0}_SMALL_MANTISSA: [u128; {1}] = ["
23 //! SMALL_EXPONENT_STR = "const BASE{0}_SMALL_EXPONENT: [i32; {1}] = ["
24 //! LARGE_MANTISSA_STR = "const BASE{0}_LARGE_MANTISSA: [u128; {1}] = ["
25 //! LARGE_EXPONENT_STR = "const BASE{0}_LARGE_EXPONENT: [i32; {1}] = ["
26 //! SMALL_INT_STR = "const BASE{0}_SMALL_INT_POWERS: [u128; {1}] = {2};"
27 //! BIAS_STR = "const BASE{0}_BIAS: i32 = {1};"
28 //! EXP_STR = "// {}^{}"
29 //! POWER_STR = """pub(crate) const BASE{0}_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {{
30 //! small: ExtendedFloatArray {{ mant: &BASE{0}_SMALL_MANTISSA, exp: &BASE{0}_SMALL_EXPONENT }},
31 //! large: ExtendedFloatArray {{ mant: &BASE{0}_LARGE_MANTISSA, exp: &BASE{0}_LARGE_EXPONENT }},
32 //! small_int: &BASE{0}_SMALL_INT_POWERS,
33 //! step: BASE{0}_STEP,
34 //! bias: BASE{0}_BIAS,
35 //! }};\n"""
36 //!
37 //! def calculate_bitshift(base, exponent):
38 //! '''
39 //! Calculate the bitshift required for a given base. The exponent
40 //! is the absolute value of the max exponent (log distance from 1.)
41 //! '''
42 //!
43 //! return 127 + math.ceil(math.log2(base**exponent))
44 //!
45 //!
46 //! def next_fp(fp, base, step = 1):
47 //! '''Generate the next extended-floating point value.'''
48 //!
49 //! return (fp[0] * (base**step), fp[1])
50 //!
51 //!
52 //! def prev_fp(fp, base, step = 1):
53 //! '''Generate the previous extended-floating point value.'''
54 //!
55 //! return (fp[0] // (base**step), fp[1])
56 //!
57 //!
58 //! def normalize_fp(fp):
59 //! '''Normalize a extended-float so the MSB is the 128th bit'''
60 //!
61 //! while fp[0] >> 128 != 0:
62 //! fp = (fp[0] >> 1, fp[1] + 1)
63 //! return fp
64 //!
65 //!
66 //! def generate_small(base, count):
67 //! '''Generate the small powers for a given base'''
68 //!
69 //! bitshift = calculate_bitshift(base, count)
70 //! fps = []
71 //! fp = (1 << bitshift, -bitshift)
72 //! for exp in range(count):
73 //! fps.append((normalize_fp(fp), exp))
74 //! fp = next_fp(fp, base)
75 //!
76 //! # Print the small powers as integers.
77 //! ints = [base**i for _, i in fps]
78 //!
79 //! return fps, ints
80 //!
81 //!
82 //! def generate_large(base, step):
83 //! '''Generate the large powers for a given base.'''
84 //!
85 //! # Get our starting parameters
86 //! min_exp = math.floor(math.log(5e-324, base) - math.log(0xFFFFFFFFFFFFFFFF, base))
87 //! max_exp = math.ceil(math.log(1.7976931348623157e+308, base))
88 //! bitshift = calculate_bitshift(base, abs(min_exp - step))
89 //! fps = deque()
90 //!
91 //! # Add negative exponents
92 //! # We need to go below the minimum exponent, since we need
93 //! # all resulting exponents to be positive.
94 //! fp = (1 << bitshift, -bitshift)
95 //! for exp in range(-step, min_exp-step, -step):
96 //! fp = prev_fp(fp, base, step)
97 //! fps.appendleft((normalize_fp(fp), exp))
98 //!
99 //! # Add positive exponents
100 //! fp = (1 << bitshift, -bitshift)
101 //! fps.append((normalize_fp(fp), 0))
102 //! for exp in range(step, max_exp, step):
103 //! fp = next_fp(fp, base, step)
104 //! fps.append((normalize_fp(fp), exp))
105 //!
106 //! # Return the smallest exp, AKA, the bias
107 //! return fps, -fps[0][1]
108 //!
109 //!
110 //! def print_array(base, string, fps, index):
111 //! '''Print an entire array'''
112 //!
113 //! print(string.format(base, len(fps)))
114 //! for fp, exp in fps:
115 //! value = " {},".format(fp[index])
116 //! exp = EXP_STR.format(base, exp)
117 //! print(value.ljust(56, " ") + exp)
118 //! print("];")
119 //!
120 //!
121 //! def generate_base(base):
122 //! '''Generate all powers and variables.'''
123 //!
124 //! step = math.floor(math.log(1e10, base))
125 //! small, ints = generate_small(base, step)
126 //! large, bias = generate_large(base, step)
127 //!
128 //! print_array(base, SMALL_MANTISSA_STR, small, 0)
129 //! print_array(base, SMALL_EXPONENT_STR, small, 1)
130 //! print_array(base, LARGE_MANTISSA_STR, large, 0)
131 //! print_array(base, LARGE_EXPONENT_STR, large, 1)
132 //! print(SMALL_INT_STR.format(base, len(ints), ints))
133 //! print(STEP_STR.format(base, step))
134 //! print(BIAS_STR.format(base, bias))
135 //!
136 //!
137 //! def generate():
138 //! '''Generate all bases.'''
139 //!
140 //! bases = [
141 //! 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21,
142 //! 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36
143 //! ]
144 //!
145 //! for base in bases:
146 //! print("// BASE{}\n".format(base))
147 //! generate_base(base)
148 //! print("")
149 //!
150 //! print("// HIGH LEVEL\n// ----------\n")
151 //!
152 //! for base in bases:
153 //! print(POWER_STR.format(base))
154 //!
155 //!
156 //! if __name__ == '__main__':
157 //! generate()
158 //! ```
159
160 use util::*;
161 use super::cached::{ExtendedFloatArray, ModeratePathPowers};
162
163 // LOW-LEVEL
164 // ---------
165
166 // BASE10
167
168 const BASE10_SMALL_MANTISSA: [u128; 10] = [
169 170141183460469231731687303715884105728, // 10^0
170 212676479325586539664609129644855132160, // 10^1
171 265845599156983174580761412056068915200, // 10^2
172 332306998946228968225951765070086144000, // 10^3
173 207691874341393105141219853168803840000, // 10^4
174 259614842926741381426524816461004800000, // 10^5
175 324518553658426726783156020576256000000, // 10^6
176 202824096036516704239472512860160000000, // 10^7
177 253530120045645880299340641075200000000, // 10^8
178 316912650057057350374175801344000000000, // 10^9
179 ];
180 const BASE10_SMALL_EXPONENT: [i32; 10] = [
181 -127, // 10^0
182 -124, // 10^1
183 -121, // 10^2
184 -118, // 10^3
185 -114, // 10^4
186 -111, // 10^5
187 -108, // 10^6
188 -104, // 10^7
189 -101, // 10^8
190 -98, // 10^9
191 ];
192 const BASE10_LARGE_MANTISSA: [u128; 66] = [
193 213154451346726893197828921904416471830, // 10^-350
194 248144440523729302452212341484167231049, // 10^-340
195 288878149031346317441449898160257412877, // 10^-330
196 336298426882534191759128470626028036788, // 10^-320
197 195751447977110622310503659901458325789, // 10^-310
198 227884678143438210606695688214919443462, // 10^-300
199 265292681454958173686982700851419292695, // 10^-290
200 308841328899094571460716776609676066664, // 10^-280
201 179769313486231590772930519078902473361, // 10^-270
202 209279024841067836122739267394531603625, // 10^-260
203 243632850284999977008834559696879707771, // 10^-250
204 283625966735416996535885333662014114404, // 10^-240
205 330184081959790778970212365572822879074, // 10^-230
206 192192430817400325887261637005036975649, // 10^-220
207 223741436863085634409521749481834675708, // 10^-210
208 260469313784369307581244210575049132700, // 10^-200
209 303226189902482213896285056340332530323, // 10^-190
210 176500872419263593559319302637789241459, // 10^-180
211 205474058654233340126601167300005025998, // 10^-170
212 239203286653190548679094257880939433814, // 10^-160
213 278469275977917188637766821636980671685, // 10^-150
214 324180903818827574883781864350871964922, // 10^-140
215 188698121241077067612077729049413444545, // 10^-130
216 219673525124179510879420825570604582952, // 10^-120
217 255733641241886083594780445064656183766, // 10^-110
218 297713141471480582369003031710926657271, // 10^-100
219 173291855882550928723650886508942731464, // 10^-90
220 201738271725539733566868685312735302682, // 10^-80
221 234854258277383322788948059678933702737, // 10^-70
222 273406340597876490546562778389702670669, // 10^-60
223 318286871302263450979444638813965337664, // 10^-50
224 185267342779705912677713576013900652565, // 10^-40
225 215679573337205118357336120696157045389, // 10^-30
226 251084069415467230553431576928306656644, // 10^-20
227 292300327466180583640736966543256603931, // 10^-10
228 170141183460469231731687303715884105728, // 10^0
229 198070406285660843983859875840000000000, // 10^10
230 230584300921369395200000000000000000000, // 10^20
231 268435456000000000000000000000000000000, // 10^30
232 312500000000000000000000000000000000000, // 10^40
233 181898940354585647583007812500000000000, // 10^50
234 211758236813575084767080625169910490512, // 10^60
235 246519032881566189191165176650870696772, // 10^70
236 286985925493722536125179818657774823686, // 10^80
237 334095588761524455767567058393935234851, // 10^90
238 194469227433160678348252001680628882518, // 10^100
239 226391976970667809187727982272194794517, // 10^110
240 263554948580763080608714351281750475192, // 10^120
241 306818341581107909568485747186642227685, // 10^130
242 178591779887855465971216179422709524914, // 10^140
243 207908195312897984370608091613638127355, // 10^150
244 242036994678082392051126914580396990473, // 10^160
245 281768146294730706199918541335962934504, // 10^170
246 328021294314799255458543241647960309061, // 10^180
247 190933522718725292628248712075851106236, // 10^190
248 222275874948507748344271341427056009691, // 10^200
249 258763175164940474024358370140027266101, // 10^210
250 301239983137860514717593754339063617053, // 10^220
251 175344747920672243180215448571289666610, // 10^230
252 204128152598478183127259193653345185577, // 10^240
253 237636445786894977939384050729387888658, // 10^250
254 276645233140903266541874095249674153349, // 10^260
255 322057438479856665411351825168442625260, // 10^270
256 187462101736953869352205554703508169192, // 10^280
257 218234609040610805796698614376955862613, // 10^290
258 254058522452380049271391022923583936195, // 10^300
259 ];
260 const BASE10_LARGE_EXPONENT: [i32; 66] = [
261 -1290, // 10^-350
262 -1257, // 10^-340
263 -1224, // 10^-330
264 -1191, // 10^-320
265 -1157, // 10^-310
266 -1124, // 10^-300
267 -1091, // 10^-290
268 -1058, // 10^-280
269 -1024, // 10^-270
270 -991, // 10^-260
271 -958, // 10^-250
272 -925, // 10^-240
273 -892, // 10^-230
274 -858, // 10^-220
275 -825, // 10^-210
276 -792, // 10^-200
277 -759, // 10^-190
278 -725, // 10^-180
279 -692, // 10^-170
280 -659, // 10^-160
281 -626, // 10^-150
282 -593, // 10^-140
283 -559, // 10^-130
284 -526, // 10^-120
285 -493, // 10^-110
286 -460, // 10^-100
287 -426, // 10^-90
288 -393, // 10^-80
289 -360, // 10^-70
290 -327, // 10^-60
291 -294, // 10^-50
292 -260, // 10^-40
293 -227, // 10^-30
294 -194, // 10^-20
295 -161, // 10^-10
296 -127, // 10^0
297 -94, // 10^10
298 -61, // 10^20
299 -28, // 10^30
300 5, // 10^40
301 39, // 10^50
302 72, // 10^60
303 105, // 10^70
304 138, // 10^80
305 171, // 10^90
306 205, // 10^100
307 238, // 10^110
308 271, // 10^120
309 304, // 10^130
310 338, // 10^140
311 371, // 10^150
312 404, // 10^160
313 437, // 10^170
314 470, // 10^180
315 504, // 10^190
316 537, // 10^200
317 570, // 10^210
318 603, // 10^220
319 637, // 10^230
320 670, // 10^240
321 703, // 10^250
322 736, // 10^260
323 769, // 10^270
324 803, // 10^280
325 836, // 10^290
326 869, // 10^300
327 ];
328 const BASE10_SMALL_INT_POWERS: [u128; 10] = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];
329 const BASE10_STEP: i32 = 10;
330 const BASE10_BIAS: i32 = 350;
331
332 cfg_if! {
333 if #[cfg(feature = "radix")] {
334 // BASE3
335
336 const BASE3_SMALL_MANTISSA: [u128; 20] = [
337 170141183460469231731687303715884105728, // 3^0
338 255211775190703847597530955573826158592, // 3^1
339 191408831393027885698148216680369618944, // 3^2
340 287113247089541828547222325020554428416, // 3^3
341 215334935317156371410416743765415821312, // 3^4
342 323002402975734557115625115648123731968, // 3^5
343 242251802231800917836718836736092798976, // 3^6
344 181688851673850688377539127552069599232, // 3^7
345 272533277510776032566308691328104398848, // 3^8
346 204399958133082024424731518496078299136, // 3^9
347 306599937199623036637097277744117448704, // 3^10
348 229949952899717277477822958308088086528, // 3^11
349 172462464674787958108367218731066064896, // 3^12
350 258693697012181937162550828096599097344, // 3^13
351 194020272759136452871913121072449323008, // 3^14
352 291030409138704679307869681608673984512, // 3^15
353 218272806854028509480902261206505488384, // 3^16
354 327409210281042764221353391809758232576, // 3^17
355 245556907710782073166015043857318674432, // 3^18
356 184167680783086554874511282892989005824, // 3^19
357 ];
358 const BASE3_SMALL_EXPONENT: [i32; 20] = [
359 -127, // 3^0
360 -126, // 3^1
361 -124, // 3^2
362 -123, // 3^3
363 -121, // 3^4
364 -120, // 3^5
365 -118, // 3^6
366 -116, // 3^7
367 -115, // 3^8
368 -113, // 3^9
369 -112, // 3^10
370 -110, // 3^11
371 -108, // 3^12
372 -107, // 3^13
373 -105, // 3^14
374 -104, // 3^15
375 -102, // 3^16
376 -101, // 3^17
377 -99, // 3^18
378 -97, // 3^19
379 ];
380 const BASE3_LARGE_MANTISSA: [u128; 69] = [
381 301829093537629265639465570217176944359, // 3^-720
382 245033990385703656345786023933864839340, // 3^-700
383 198926007233479871031630637668169238011, // 3^-680
384 322988302900880006728964617948539328448, // 3^-660
385 262211676747596696167096696967233799204, // 3^-640
386 212871372756449173771443137071089544143, // 3^-620
387 172815421118085121562612771428651141606, // 3^-600
388 280593575260967566098415738074481154338, // 3^-580
389 227794354139073103116567345878808448350, // 3^-560
390 184930348919702200346046943747485274024, // 3^-540
391 300264105147079021545114594266031000970, // 3^-520
392 243763485459391712918376663011554847091, // 3^-500
393 197894572893436379626501802082900685163, // 3^-480
394 321313603691473325606249593990411338331, // 3^-460
395 260852105259086286749566195634740776863, // 3^-440
396 211767631486382365261996259087726574961, // 3^-420
397 171919370559843833352674924374427532806, // 3^-400
398 279138693352137745884317186629683060895, // 3^-380
399 226613236986043931067161987739751269180, // 3^-360
400 183971482278558945643179980616811190964, // 3^-340
401 298707231244876640116631457791747347925, // 3^-320
402 242499568120235502703106353919523432682, // 3^-300
403 196868486555962367745019627988939060464, // 3^-280
404 319647587822660709450189016904055940251, // 3^-260
405 259499583169196479959998361450291137700, // 3^-240
406 210669613131404954481085620515615417585, // 3^-220
407 171027966037226738058674240289082148799, // 3^-200
408 277691355027891684120101092281051616669, // 3^-180
409 225438243943221318560556485110109738278, // 3^-160
410 183017587375374702561553597022155160742, // 3^-140
411 297158429757277967604640789526650060843, // 3^-120
412 241242204211496523037749538228345943134, // 3^-100
413 195847720491584060106836777189641681162, // 3^-80
414 317990210271190550439415903835536554761, // 3^-60
415 258154073926689380540223575440483383976, // 3^-40
416 209577288018116110386327960504760073299, // 3^-20
417 170141183460469231731687303715884105728, // 3^0
418 276251521174629832311766924339483508736, // 3^20
419 224269343257001716702690972139746492416, // 3^40
420 182068638431613361423174859113151594496, // 3^60
421 295617658828691846632166420412766595202, // 3^80
422 239991359753539474232337032335634004651, // 3^100
423 194832247114605420104007752175098574688, // 3^120
424 316341426247257477645159711999449660471, // 3^140
425 256815541169845811576524073480007610450, // 3^160
426 208490626626972031635281014538153149532, // 3^180
427 338517997729425004575949331160209430911, // 3^200
428 274819152881557244028610584245948464515, // 3^220
429 223106503338424488684979682521025988628, // 3^240
430 181124609802400910077427551154104473922, // 3^260
431 294084876820548989626661915132664622178, // 3^280
432 238747000942913976797497733353022683918, // 3^300
433 193822038982362660063056049982127016523, // 3^320
434 314701191193291934781116205950433765545, // 3^340
435 255483948725482657093998355855298189652, // 3^360
436 207409599591488195571905341445445255582, // 3^380
437 336762776818711782198286065086981891498, // 3^400
438 273394211439632029990640781047045990695, // 3^420
439 221949692762318233808346663450192754968, // 3^440
440 180185475975832393914650652957737664335, // 3^460
441 292560042310176717160312096633717510967, // 3^480
442 237509094151441049982785534773499431992, // 3^500
443 192817068794482616882547252154136283242, // 3^520
444 313069460782756034010893203297842312622, // 3^540
445 254159260607975299744356396919078736707, // 3^560
446 206334177697445743564032291193028958152, // 3^580
447 335016656754825225194410391893304442626, // 3^600
448 271976658340519265432186039827268288213, // 3^620
449 220798880266451537830039115389735391778, // 3^640
450 ];
451 const BASE3_LARGE_EXPONENT: [i32; 69] = [
452 -1269, // 3^-720
453 -1237, // 3^-700
454 -1205, // 3^-680
455 -1174, // 3^-660
456 -1142, // 3^-640
457 -1110, // 3^-620
458 -1078, // 3^-600
459 -1047, // 3^-580
460 -1015, // 3^-560
461 -983, // 3^-540
462 -952, // 3^-520
463 -920, // 3^-500
464 -888, // 3^-480
465 -857, // 3^-460
466 -825, // 3^-440
467 -793, // 3^-420
468 -761, // 3^-400
469 -730, // 3^-380
470 -698, // 3^-360
471 -666, // 3^-340
472 -635, // 3^-320
473 -603, // 3^-300
474 -571, // 3^-280
475 -540, // 3^-260
476 -508, // 3^-240
477 -476, // 3^-220
478 -444, // 3^-200
479 -413, // 3^-180
480 -381, // 3^-160
481 -349, // 3^-140
482 -318, // 3^-120
483 -286, // 3^-100
484 -254, // 3^-80
485 -223, // 3^-60
486 -191, // 3^-40
487 -159, // 3^-20
488 -127, // 3^0
489 -96, // 3^20
490 -64, // 3^40
491 -32, // 3^60
492 -1, // 3^80
493 31, // 3^100
494 63, // 3^120
495 94, // 3^140
496 126, // 3^160
497 158, // 3^180
498 189, // 3^200
499 221, // 3^220
500 253, // 3^240
501 285, // 3^260
502 316, // 3^280
503 348, // 3^300
504 380, // 3^320
505 411, // 3^340
506 443, // 3^360
507 475, // 3^380
508 506, // 3^400
509 538, // 3^420
510 570, // 3^440
511 602, // 3^460
512 633, // 3^480
513 665, // 3^500
514 697, // 3^520
515 728, // 3^540
516 760, // 3^560
517 792, // 3^580
518 823, // 3^600
519 855, // 3^620
520 887, // 3^640
521 ];
522 const BASE3_SMALL_INT_POWERS: [u128; 20] = [1, 3, 9, 27, 81, 243, 729, 2187, 6561, 19683, 59049, 177147, 531441, 1594323, 4782969, 14348907, 43046721, 129140163, 387420489, 1162261467];
523 const BASE3_STEP: i32 = 20;
524 const BASE3_BIAS: i32 = 720;
525
526 // BASE5
527
528 const BASE5_SMALL_MANTISSA: [u128; 14] = [
529 170141183460469231731687303715884105728, // 5^0
530 212676479325586539664609129644855132160, // 5^1
531 265845599156983174580761412056068915200, // 5^2
532 332306998946228968225951765070086144000, // 5^3
533 207691874341393105141219853168803840000, // 5^4
534 259614842926741381426524816461004800000, // 5^5
535 324518553658426726783156020576256000000, // 5^6
536 202824096036516704239472512860160000000, // 5^7
537 253530120045645880299340641075200000000, // 5^8
538 316912650057057350374175801344000000000, // 5^9
539 198070406285660843983859875840000000000, // 5^10
540 247588007857076054979824844800000000000, // 5^11
541 309485009821345068724781056000000000000, // 5^12
542 193428131138340667952988160000000000000, // 5^13
543 ];
544 const BASE5_SMALL_EXPONENT: [i32; 14] = [
545 -127, // 5^0
546 -125, // 5^1
547 -123, // 5^2
548 -121, // 5^3
549 -118, // 5^4
550 -116, // 5^5
551 -114, // 5^6
552 -111, // 5^7
553 -109, // 5^8
554 -107, // 5^9
555 -104, // 5^10
556 -102, // 5^11
557 -100, // 5^12
558 -97, // 5^13
559 ];
560 const BASE5_LARGE_MANTISSA: [u128; 68] = [
561 285793394306920833441610418092098634655, // 5^-504
562 203068420253004570555511362849258201390, // 5^-490
563 288577581746103207017755725657449092679, // 5^-476
564 205046704412910121830119952091883627559, // 5^-462
565 291388892624283530821742192659774598780, // 5^-448
566 207044260935364498850036477975162511299, // 5^-434
567 294227591176883860910658765384315687611, // 5^-420
568 209061277570927374050781655074839937648, // 5^-406
569 297093944213496817569054052050375869453, // 5^-392
570 211097943899216614887176072592734406508, // 5^-378
571 299988221142963048588365030287739055137, // 5^-364
572 213154451346726893197828921904416471830, // 5^-350
573 302910693998692996157485768413290076965, // 5^-336
574 215230993204821882725842221200657943544, // 5^-322
575 305861637464235347360161968596028634045, // 5^-308
576 217327764647901735884376228537482684576, // 5^-294
577 308841328899094571460716776609676066664, // 5^-280
578 219444962751747547330237450047488370802, // 5^-266
579 311850048364799970571308236412006025948, // 5^-252
580 221582786512044528543660416923448526878, // 5^-238
581 314888078651228693933689466069052580904, // 5^-224
582 223741436863085634409521749481834675708, // 5^-210
583 317955705303185189918510999237120523316, // 5^-196
584 225921116696657399755928707376370229068, // 5^-182
585 321053216647239593947814323906257853121, // 5^-168
586 228122030881109760932058580285014566244, // 5^-154
587 324180903818827574883781864350871964922, // 5^-140
588 230344386280611654799899571593522271174, // 5^-126
589 327339060789614187001318969682759915221, // 5^-112
590 232588391774594204975783618524161450993, // 5^-98
591 330527984395124299475957654016385519914, // 5^-84
592 234854258277383322788948059678933702737, // 5^-70
593 333747974362642200374222141588992517906, // 5^-56
594 237142198758023568227473377297792835283, // 5^-42
595 336999333339382997433337688587745383420, // 5^-28
596 239452428260295134118491722992235809940, // 5^-14
597 170141183460469231731687303715884105728, // 5^0
598 241785163922925834941235200000000000000, // 5^14
599 171798691840000000000000000000000000000, // 5^28
600 244140625000000000000000000000000000000, // 5^42
601 173472347597680709441192448139190673828, // 5^56
602 246519032881566189191165176650870696772, // 5^70
603 175162308040602133865466197911239516410, // 5^84
604 248920611114445668285762562151204969623, // 5^98
605 176868732008334225927912486150152183216, // 5^112
606 251345585423243599518503524095297312920, // 5^126
607 178591779887855465971216179422709524914, // 5^140
608 253794183731564922327402455583054354682, // 5^154
609 180331613628627651967947866455016278082, // 5^168
610 256266636183436918326986907537468991453, // 5^182
611 182088396757817547443627082897044283139, // 5^196
612 258763175164940474024358370140027266101, // 5^210
613 183862294395666818064937594201088633455, // 5^224
614 261284035326052074402891767876281837538, // 5^238
615 185653473271011701515143789632334288014, // 5^252
616 263829453602698580304979415177988198613, // 5^266
617 187462101736953869352205554703508169192, // 5^280
618 266399669239026862544798113253119949479, // 5^294
619 189288349786683953755640255602884245064, // 5^308
620 268994923809890385876486015494726082500, // 5^322
621 191132389069459226417170338759437756337, // 5^336
622 271615461243554856334256923502490730495, // 5^350
623 192994392906736931318972184714148973580, // 5^364
624 274261527844625066050770363850331497104, // 5^378
625 194874536308464787773268059716493991903, // 5^392
626 276933372317195090450451374005771742621, // 5^406
627 196772995989530194869453349330805553038, // 5^420
628 279631245788224013707368483964622716141, // 5^434
629 ];
630 const BASE5_LARGE_EXPONENT: [i32; 68] = [
631 -1298, // 5^-504
632 -1265, // 5^-490
633 -1233, // 5^-476
634 -1200, // 5^-462
635 -1168, // 5^-448
636 -1135, // 5^-434
637 -1103, // 5^-420
638 -1070, // 5^-406
639 -1038, // 5^-392
640 -1005, // 5^-378
641 -973, // 5^-364
642 -940, // 5^-350
643 -908, // 5^-336
644 -875, // 5^-322
645 -843, // 5^-308
646 -810, // 5^-294
647 -778, // 5^-280
648 -745, // 5^-266
649 -713, // 5^-252
650 -680, // 5^-238
651 -648, // 5^-224
652 -615, // 5^-210
653 -583, // 5^-196
654 -550, // 5^-182
655 -518, // 5^-168
656 -485, // 5^-154
657 -453, // 5^-140
658 -420, // 5^-126
659 -388, // 5^-112
660 -355, // 5^-98
661 -323, // 5^-84
662 -290, // 5^-70
663 -258, // 5^-56
664 -225, // 5^-42
665 -193, // 5^-28
666 -160, // 5^-14
667 -127, // 5^0
668 -95, // 5^14
669 -62, // 5^28
670 -30, // 5^42
671 3, // 5^56
672 35, // 5^70
673 68, // 5^84
674 100, // 5^98
675 133, // 5^112
676 165, // 5^126
677 198, // 5^140
678 230, // 5^154
679 263, // 5^168
680 295, // 5^182
681 328, // 5^196
682 360, // 5^210
683 393, // 5^224
684 425, // 5^238
685 458, // 5^252
686 490, // 5^266
687 523, // 5^280
688 555, // 5^294
689 588, // 5^308
690 620, // 5^322
691 653, // 5^336
692 685, // 5^350
693 718, // 5^364
694 750, // 5^378
695 783, // 5^392
696 815, // 5^406
697 848, // 5^420
698 880, // 5^434
699 ];
700 const BASE5_SMALL_INT_POWERS: [u128; 14] = [1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125];
701 const BASE5_STEP: i32 = 14;
702 const BASE5_BIAS: i32 = 504;
703
704 // BASE6
705
706 const BASE6_SMALL_MANTISSA: [u128; 12] = [
707 170141183460469231731687303715884105728, // 6^0
708 255211775190703847597530955573826158592, // 6^1
709 191408831393027885698148216680369618944, // 6^2
710 287113247089541828547222325020554428416, // 6^3
711 215334935317156371410416743765415821312, // 6^4
712 323002402975734557115625115648123731968, // 6^5
713 242251802231800917836718836736092798976, // 6^6
714 181688851673850688377539127552069599232, // 6^7
715 272533277510776032566308691328104398848, // 6^8
716 204399958133082024424731518496078299136, // 6^9
717 306599937199623036637097277744117448704, // 6^10
718 229949952899717277477822958308088086528, // 6^11
719 ];
720 const BASE6_SMALL_EXPONENT: [i32; 12] = [
721 -127, // 6^0
722 -125, // 6^1
723 -122, // 6^2
724 -120, // 6^3
725 -117, // 6^4
726 -115, // 6^5
727 -112, // 6^6
728 -109, // 6^7
729 -107, // 6^8
730 -104, // 6^9
731 -102, // 6^10
732 -99, // 6^11
733 ];
734 const BASE6_LARGE_MANTISSA: [u128; 71] = [
735 206105367118290399407064648402758144682, // 6^-444
736 208917317212507950117664039252872831665, // 6^-432
737 211767631486382365261996259087726574961, // 6^-420
738 214656833352574406771088703014069554755, // 6^-408
739 217585453364802351586979201161384846208, // 6^-396
740 220554029315269330081435801781477974040, // 6^-384
741 223563106333419891448609016293621894840, // 6^-372
742 226613236986043931067161987739751269180, // 6^-360
743 229704981378746362247969882824709232796, // 6^-348
744 232838907258801165579649662968151663564, // 6^-336
745 236015590119408703302029793810763336632, // 6^-324
746 239235613305375443823879271798297650114, // 6^-312
747 242499568120235502703106353919523432682, // 6^-300
748 245808053934833671173174941698733239342, // 6^-288
749 249161678297389871677290466673500998400, // 6^-276
750 252561057045065251911260457800735557729, // 6^-264
751 256006814417050404626793229969178591795, // 6^-252
752 259499583169196479959998361450291137700, // 6^-240
753 263040004690210240376322725691803307553, // 6^-228
754 266628729119434395515123988465075762881, // 6^-216
755 270266415466234845327287688358055741312, // 6^-204
756 273953731731016754981191818978678705632, // 6^-192
757 277691355027891684120101092281051616669, // 6^-180
758 281479971709018296242657937208050445965, // 6^-168
759 285320277490639481303204301467482637509, // 6^-156
760 289212977580839036146652597763405686112, // 6^-144
761 293158786809041363160730749526943361727, // 6^-132
762 297158429757277967604640789526650060843, // 6^-120
763 301212640893244858516269504216828222245, // 6^-108
764 305322164705175286969651759320250334279, // 6^-96
765 309487755838552588810803796052767101096, // 6^-84
766 313710179234688236904530296665341569850, // 6^-72
767 317990210271190550439415903835536554761, // 6^-60
768 322328634904349856025836233807108654402, // 6^-48
769 326726249813466247246220462666861782844, // 6^-36
770 331183862547146446042592332649497399781, // 6^-24
771 335702291671596630919115661345637412333, // 6^-12
772 170141183460469231731687303715884105728, // 6^0
773 172462464674787958108367218731066064896, // 6^12
774 174815415743320440759790006808579407872, // 6^24
775 177200468746272961345336076752392290304, // 6^36
776 179618061658836457920697688990341398528, // 6^48
777 182068638431613361423174859113151594496, // 6^60
778 184552649072141716781794491390137475072, // 6^72
779 187070549727531559196917812917453861026, // 6^84
780 189622802768228720381105803326920695033, // 6^96
781 192209876872921446586714266254161951235, // 6^108
782 194832247114605420104007752175098574688, // 6^120
783 197490395047822988635051696441052554380, // 6^132
784 200184808797092622572327630249651738267, // 6^144
785 202915983146544838776512848181734408257, // 6^156
786 205684419630781050995309380627725821797, // 6^168
787 208490626626972031635281014538153149532, // 6^180
788 211335119448212897232599978727666183358, // 6^192
789 214218420438151760708217936124820030498, // 6^204
790 217141059066909427380630585083218539864, // 6^216
791 220103572028307748788051030668660629356, // 6^228
792 223106503338424488684979682521025988628, // 6^240
793 226150404435492799169987273137391228527, // 6^252
794 229235834281163651816744244429413474808, // 6^264
795 232363359463149818964276081092475750857, // 6^276
796 235533554299270254021060647605641184828, // 6^288
797 238747000942913976797497733353022683918, // 6^300
798 242004289489942830549695955106475311593, // 6^312
799 245306018087052741642305313258629505287, // 6^324
800 248652793041613380567795520750960012282, // 6^336
801 252045228933006394543323172270604972624, // 6^348
802 255483948725482657093998355855298189652, // 6^360
803 258969583882559258973487053363982248701, // 6^372
804 262502774482977247520692697766891651596, // 6^384
805 266084169338241408156670471179837543899, // 6^396
806 ];
807 const BASE6_LARGE_EXPONENT: [i32; 71] = [
808 -1275, // 6^-444
809 -1244, // 6^-432
810 -1213, // 6^-420
811 -1182, // 6^-408
812 -1151, // 6^-396
813 -1120, // 6^-384
814 -1089, // 6^-372
815 -1058, // 6^-360
816 -1027, // 6^-348
817 -996, // 6^-336
818 -965, // 6^-324
819 -934, // 6^-312
820 -903, // 6^-300
821 -872, // 6^-288
822 -841, // 6^-276
823 -810, // 6^-264
824 -779, // 6^-252
825 -748, // 6^-240
826 -717, // 6^-228
827 -686, // 6^-216
828 -655, // 6^-204
829 -624, // 6^-192
830 -593, // 6^-180
831 -562, // 6^-168
832 -531, // 6^-156
833 -500, // 6^-144
834 -469, // 6^-132
835 -438, // 6^-120
836 -407, // 6^-108
837 -376, // 6^-96
838 -345, // 6^-84
839 -314, // 6^-72
840 -283, // 6^-60
841 -252, // 6^-48
842 -221, // 6^-36
843 -190, // 6^-24
844 -159, // 6^-12
845 -127, // 6^0
846 -96, // 6^12
847 -65, // 6^24
848 -34, // 6^36
849 -3, // 6^48
850 28, // 6^60
851 59, // 6^72
852 90, // 6^84
853 121, // 6^96
854 152, // 6^108
855 183, // 6^120
856 214, // 6^132
857 245, // 6^144
858 276, // 6^156
859 307, // 6^168
860 338, // 6^180
861 369, // 6^192
862 400, // 6^204
863 431, // 6^216
864 462, // 6^228
865 493, // 6^240
866 524, // 6^252
867 555, // 6^264
868 586, // 6^276
869 617, // 6^288
870 648, // 6^300
871 679, // 6^312
872 710, // 6^324
873 741, // 6^336
874 772, // 6^348
875 803, // 6^360
876 834, // 6^372
877 865, // 6^384
878 896, // 6^396
879 ];
880 const BASE6_SMALL_INT_POWERS: [u128; 12] = [1, 6, 36, 216, 1296, 7776, 46656, 279936, 1679616, 10077696, 60466176, 362797056];
881 const BASE6_STEP: i32 = 12;
882 const BASE6_BIAS: i32 = 444;
883
884 // BASE7
885
886 const BASE7_SMALL_MANTISSA: [u128; 11] = [
887 170141183460469231731687303715884105728, // 7^0
888 297747071055821155530452781502797185024, // 7^1
889 260528687173843511089146183814947536896, // 7^2
890 227962601277113072203002910838079094784, // 7^3
891 199467276117473938177627546983319207936, // 7^4
892 174533866602789695905424103610404306944, // 7^5
893 305434266554881967834492181318207537152, // 7^6
894 267254983235521721855180658653431595008, // 7^7
895 233848110331081506623283076321752645632, // 7^8
896 204617096539696318295372691781533564928, // 7^9
897 179039959472234278508451105308841869312, // 7^10
898 ];
899 const BASE7_SMALL_EXPONENT: [i32; 11] = [
900 -127, // 7^0
901 -125, // 7^1
902 -122, // 7^2
903 -119, // 7^3
904 -116, // 7^4
905 -113, // 7^5
906 -111, // 7^6
907 -108, // 7^7
908 -105, // 7^8
909 -102, // 7^9
910 -99, // 7^10
911 ];
912 const BASE7_LARGE_MANTISSA: [u128; 71] = [
913 225523710066019267908218449093892378358, // 7^-407
914 207654229874777697952558290622819921790, // 7^-396
915 191200646585071218824745087565327043379, // 7^-385
916 176050770921424471559828841966017113260, // 7^-374
917 324202605959679334675793064499391555083, // 7^-363
918 298514255748300407155832676761118149894, // 7^-352
919 274861334384351909098688755274300249465, // 7^-341
920 253082563679127241756740166823033329043, // 7^-330
921 233029444399168140266755890269514708731, // 7^-319
922 214565243719567885018434177936373702812, // 7^-308
923 197564062906901525077828647577582055243, // 7^-297
924 181909978874749832229630901118123515094, // 7^-286
925 334992507516972618831705765612473924060, // 7^-275
926 308449214239576126269380201889590576494, // 7^-264
927 284009091636748185128341566413187692045, // 7^-253
928 261505493963360706349361998265286260917, // 7^-242
929 240784979730461811097321743219099069136, // 7^-231
930 221706265459654420066135217688280855198, // 7^-220
931 204139262337252438224351496710052887294, // 7^-209
932 187964189199610581269006081054389519147, // 7^-198
933 173070755801490399767170008783447571912, // 7^-187
934 318714821597104302344272129046782646031, // 7^-176
935 293461298632634947256039303556899737616, // 7^-165
936 270208750768480083796084384984407980627, // 7^-154
937 248798629775241702400557051000361115726, // 7^-143
938 229084950069124576377435007616984162844, // 7^-132
939 210933293304638808346189699277966975327, // 7^-121
940 194219891838880796776419735762035423417, // 7^-110
941 178830784817964977889863278397948540205, // 7^-99
942 329322082262710237520775170056072850605, // 7^-88
943 303228087871569629902816732340606701122, // 7^-77
944 279201663740542055384000770694089408486, // 7^-66
945 257078984940548995242906668328695771951, // 7^-55
946 236709207289964795762477040448859922676, // 7^-44
947 217953438818817001855782665313698094789, // 7^-33
948 200683792729517998822275406364627986706, // 7^-22
949 184782515396710906443711214287193178833, // 7^-11
950 170141183460469231731687303715884105728, // 7^0
951 313319929076409987389789434290473271296, // 7^11
952 288493873028852398739253829029106548736, // 7^22
953 265634921533798919351224824788236107776, // 7^33
954 244587210111081219100242972308429222416, // 7^44
955 225207224277966141315155116349116687572, // 7^55
956 207362820991138609531788808643065835705, // 7^66
957 190932327625202079604864455739987836428, // 7^77
958 175803712344053086257499345217280929659, // 7^88
959 323747640416561983962207324433251030705, // 7^99
960 298095339619934405668456872884344580325, // 7^110
961 274475611277932187651307585787198545738, // 7^121
962 252727403529513497084111370284014563793, // 7^132
963 232702425535702904483240997815950541938, // 7^143
964 214264136353838934720254978302625752306, // 7^154
965 197286813928859418414994791325492154413, // 7^165
966 181654697853512422889189735564216996803, // 7^176
967 334522400104752565046325502667785120787, // 7^187
968 308016356015425756696586706818979868623, // 7^198
969 283610531143243549972387138852602501496, // 7^209
970 261138513603233655506120063924465915820, // 7^220
971 240447077236577495145565086308268824286, // 7^231
972 221395136833224081873557773886454798418, // 7^242
973 203852786137945162132478938839041683065, // 7^253
974 187700412080445632409314398956810353518, // 7^264
975 172827879189879361689316520165778889316, // 7^275
976 318267557265350256871483486812089934265, // 7^286
977 293049473506426909088112326597996634777, // 7^297
978 269829556805234360375792834335085449819, // 7^308
979 248449481428986202531286841797890645972, // 7^319
980 228763466660872229208763580066607974130, // 7^330
981 210637282789652967136592584117374228567, // 7^341
982 193947335860149215724544902551342320202, // 7^352
983 178579824943969003959847035500732297209, // 7^363
984 ];
985 const BASE7_LARGE_EXPONENT: [i32; 71] = [
986 -1270, // 7^-407
987 -1239, // 7^-396
988 -1208, // 7^-385
989 -1177, // 7^-374
990 -1147, // 7^-363
991 -1116, // 7^-352
992 -1085, // 7^-341
993 -1054, // 7^-330
994 -1023, // 7^-319
995 -992, // 7^-308
996 -961, // 7^-297
997 -930, // 7^-286
998 -900, // 7^-275
999 -869, // 7^-264
1000 -838, // 7^-253
1001 -807, // 7^-242
1002 -776, // 7^-231
1003 -745, // 7^-220
1004 -714, // 7^-209
1005 -683, // 7^-198
1006 -652, // 7^-187
1007 -622, // 7^-176
1008 -591, // 7^-165
1009 -560, // 7^-154
1010 -529, // 7^-143
1011 -498, // 7^-132
1012 -467, // 7^-121
1013 -436, // 7^-110
1014 -405, // 7^-99
1015 -375, // 7^-88
1016 -344, // 7^-77
1017 -313, // 7^-66
1018 -282, // 7^-55
1019 -251, // 7^-44
1020 -220, // 7^-33
1021 -189, // 7^-22
1022 -158, // 7^-11
1023 -127, // 7^0
1024 -97, // 7^11
1025 -66, // 7^22
1026 -35, // 7^33
1027 -4, // 7^44
1028 27, // 7^55
1029 58, // 7^66
1030 89, // 7^77
1031 120, // 7^88
1032 150, // 7^99
1033 181, // 7^110
1034 212, // 7^121
1035 243, // 7^132
1036 274, // 7^143
1037 305, // 7^154
1038 336, // 7^165
1039 367, // 7^176
1040 397, // 7^187
1041 428, // 7^198
1042 459, // 7^209
1043 490, // 7^220
1044 521, // 7^231
1045 552, // 7^242
1046 583, // 7^253
1047 614, // 7^264
1048 645, // 7^275
1049 675, // 7^286
1050 706, // 7^297
1051 737, // 7^308
1052 768, // 7^319
1053 799, // 7^330
1054 830, // 7^341
1055 861, // 7^352
1056 892, // 7^363
1057 ];
1058 const BASE7_SMALL_INT_POWERS: [u128; 11] = [1, 7, 49, 343, 2401, 16807, 117649, 823543, 5764801, 40353607, 282475249];
1059 const BASE7_STEP: i32 = 11;
1060 const BASE7_BIAS: i32 = 407;
1061
1062 // BASE9
1063
1064 const BASE9_SMALL_MANTISSA: [u128; 10] = [
1065 170141183460469231731687303715884105728, // 9^0
1066 191408831393027885698148216680369618944, // 9^1
1067 215334935317156371410416743765415821312, // 9^2
1068 242251802231800917836718836736092798976, // 9^3
1069 272533277510776032566308691328104398848, // 9^4
1070 306599937199623036637097277744117448704, // 9^5
1071 172462464674787958108367218731066064896, // 9^6
1072 194020272759136452871913121072449323008, // 9^7
1073 218272806854028509480902261206505488384, // 9^8
1074 245556907710782073166015043857318674432, // 9^9
1075 ];
1076 const BASE9_SMALL_EXPONENT: [i32; 10] = [
1077 -127, // 9^0
1078 -124, // 9^1
1079 -121, // 9^2
1080 -118, // 9^3
1081 -115, // 9^4
1082 -112, // 9^5
1083 -108, // 9^6
1084 -105, // 9^7
1085 -102, // 9^8
1086 -99, // 9^9
1087 ];
1088 const BASE9_LARGE_MANTISSA: [u128; 69] = [
1089 301829093537629265639465570217176944359, // 9^-360
1090 245033990385703656345786023933864839340, // 9^-350
1091 198926007233479871031630637668169238011, // 9^-340
1092 322988302900880006728964617948539328448, // 9^-330
1093 262211676747596696167096696967233799204, // 9^-320
1094 212871372756449173771443137071089544143, // 9^-310
1095 172815421118085121562612771428651141606, // 9^-300
1096 280593575260967566098415738074481154338, // 9^-290
1097 227794354139073103116567345878808448350, // 9^-280
1098 184930348919702200346046943747485274024, // 9^-270
1099 300264105147079021545114594266031000970, // 9^-260
1100 243763485459391712918376663011554847091, // 9^-250
1101 197894572893436379626501802082900685163, // 9^-240
1102 321313603691473325606249593990411338331, // 9^-230
1103 260852105259086286749566195634740776863, // 9^-220
1104 211767631486382365261996259087726574961, // 9^-210
1105 171919370559843833352674924374427532806, // 9^-200
1106 279138693352137745884317186629683060895, // 9^-190
1107 226613236986043931067161987739751269180, // 9^-180
1108 183971482278558945643179980616811190964, // 9^-170
1109 298707231244876640116631457791747347925, // 9^-160
1110 242499568120235502703106353919523432682, // 9^-150
1111 196868486555962367745019627988939060464, // 9^-140
1112 319647587822660709450189016904055940251, // 9^-130
1113 259499583169196479959998361450291137700, // 9^-120
1114 210669613131404954481085620515615417585, // 9^-110
1115 171027966037226738058674240289082148799, // 9^-100
1116 277691355027891684120101092281051616669, // 9^-90
1117 225438243943221318560556485110109738278, // 9^-80
1118 183017587375374702561553597022155160742, // 9^-70
1119 297158429757277967604640789526650060843, // 9^-60
1120 241242204211496523037749538228345943134, // 9^-50
1121 195847720491584060106836777189641681162, // 9^-40
1122 317990210271190550439415903835536554761, // 9^-30
1123 258154073926689380540223575440483383976, // 9^-20
1124 209577288018116110386327960504760073299, // 9^-10
1125 170141183460469231731687303715884105728, // 9^0
1126 276251521174629832311766924339483508736, // 9^10
1127 224269343257001716702690972139746492416, // 9^20
1128 182068638431613361423174859113151594496, // 9^30
1129 295617658828691846632166420412766595202, // 9^40
1130 239991359753539474232337032335634004651, // 9^50
1131 194832247114605420104007752175098574688, // 9^60
1132 316341426247257477645159711999449660471, // 9^70
1133 256815541169845811576524073480007610450, // 9^80
1134 208490626626972031635281014538153149532, // 9^90
1135 338517997729425004575949331160209430911, // 9^100
1136 274819152881557244028610584245948464515, // 9^110
1137 223106503338424488684979682521025988628, // 9^120
1138 181124609802400910077427551154104473922, // 9^130
1139 294084876820548989626661915132664622178, // 9^140
1140 238747000942913976797497733353022683918, // 9^150
1141 193822038982362660063056049982127016523, // 9^160
1142 314701191193291934781116205950433765545, // 9^170
1143 255483948725482657093998355855298189652, // 9^180
1144 207409599591488195571905341445445255582, // 9^190
1145 336762776818711782198286065086981891498, // 9^200
1146 273394211439632029990640781047045990695, // 9^210
1147 221949692762318233808346663450192754968, // 9^220
1148 180185475975832393914650652957737664335, // 9^230
1149 292560042310176717160312096633717510967, // 9^240
1150 237509094151441049982785534773499431992, // 9^250
1151 192817068794482616882547252154136283242, // 9^260
1152 313069460782756034010893203297842312622, // 9^270
1153 254159260607975299744356396919078736707, // 9^280
1154 206334177697445743564032291193028958152, // 9^290
1155 335016656754825225194410391893304442626, // 9^300
1156 271976658340519265432186039827268288213, // 9^310
1157 220798880266451537830039115389735391778, // 9^320
1158 ];
1159 const BASE9_LARGE_EXPONENT: [i32; 69] = [
1160 -1269, // 9^-360
1161 -1237, // 9^-350
1162 -1205, // 9^-340
1163 -1174, // 9^-330
1164 -1142, // 9^-320
1165 -1110, // 9^-310
1166 -1078, // 9^-300
1167 -1047, // 9^-290
1168 -1015, // 9^-280
1169 -983, // 9^-270
1170 -952, // 9^-260
1171 -920, // 9^-250
1172 -888, // 9^-240
1173 -857, // 9^-230
1174 -825, // 9^-220
1175 -793, // 9^-210
1176 -761, // 9^-200
1177 -730, // 9^-190
1178 -698, // 9^-180
1179 -666, // 9^-170
1180 -635, // 9^-160
1181 -603, // 9^-150
1182 -571, // 9^-140
1183 -540, // 9^-130
1184 -508, // 9^-120
1185 -476, // 9^-110
1186 -444, // 9^-100
1187 -413, // 9^-90
1188 -381, // 9^-80
1189 -349, // 9^-70
1190 -318, // 9^-60
1191 -286, // 9^-50
1192 -254, // 9^-40
1193 -223, // 9^-30
1194 -191, // 9^-20
1195 -159, // 9^-10
1196 -127, // 9^0
1197 -96, // 9^10
1198 -64, // 9^20
1199 -32, // 9^30
1200 -1, // 9^40
1201 31, // 9^50
1202 63, // 9^60
1203 94, // 9^70
1204 126, // 9^80
1205 158, // 9^90
1206 189, // 9^100
1207 221, // 9^110
1208 253, // 9^120
1209 285, // 9^130
1210 316, // 9^140
1211 348, // 9^150
1212 380, // 9^160
1213 411, // 9^170
1214 443, // 9^180
1215 475, // 9^190
1216 506, // 9^200
1217 538, // 9^210
1218 570, // 9^220
1219 602, // 9^230
1220 633, // 9^240
1221 665, // 9^250
1222 697, // 9^260
1223 728, // 9^270
1224 760, // 9^280
1225 792, // 9^290
1226 823, // 9^300
1227 855, // 9^310
1228 887, // 9^320
1229 ];
1230 const BASE9_SMALL_INT_POWERS: [u128; 10] = [1, 9, 81, 729, 6561, 59049, 531441, 4782969, 43046721, 387420489];
1231 const BASE9_STEP: i32 = 10;
1232 const BASE9_BIAS: i32 = 360;
1233
1234 // BASE11
1235
1236 const BASE11_SMALL_MANTISSA: [u128; 9] = [
1237 170141183460469231731687303715884105728, // 11^0
1238 233944127258145193631070042609340645376, // 11^1
1239 321673174979949641242721308587843387392, // 11^2
1240 221150307798715378354370899654142328832, // 11^3
1241 304081673223233645237259987024445702144, // 11^4
1242 209056150340973131100616241079306420224, // 11^5
1243 287452206718838055263347331484046327808, // 11^6
1244 197623392119201162993551290395281850368, // 11^7
1245 271732164163901599116133024293512544256, // 11^8
1246 ];
1247 const BASE11_SMALL_EXPONENT: [i32; 9] = [
1248 -127, // 11^0
1249 -124, // 11^1
1250 -121, // 11^2
1251 -117, // 11^3
1252 -114, // 11^4
1253 -110, // 11^5
1254 -107, // 11^6
1255 -103, // 11^7
1256 -100, // 11^8
1257 ];
1258 const BASE11_LARGE_MANTISSA: [u128; 70] = [
1259 171238059048456285069153007806767780751, // 11^-333
1260 188020237695718721716314139814895141308, // 11^-324
1261 206447153042951189194086232691622882083, // 11^-315
1262 226679997440031906769564274339983654138, // 11^-306
1263 248895760886189129917706060109685643694, // 11^-297
1264 273288779277949488106534827711219187027, // 11^-288
1265 300072434393060227248554937081761703289, // 11^-279
1266 329481020481262984343182946079685486146, // 11^-270
1267 180885896895108223589085363619768036079, // 11^-261
1268 198613611477559667549559644399735817047, // 11^-252
1269 218078729968836026458633966547967004969, // 11^-243
1270 239451526564652757041971603611460905574, // 11^-234
1271 262918963175987885652063848834117643272, // 11^-225
1272 288686324907902004950333378158035100892, // 11^-216
1273 316979015823390018300576675081611005238, // 11^-207
1274 174022265350496153683469750680295263035, // 11^-198
1275 191077310017213090920037889613280023761, // 11^-189
1276 209803833606456768694276179860414245615, // 11^-180
1277 230365649338482385703357683130616542302, // 11^-171
1278 252942624941184287338239913752743474826, // 11^-162
1279 277732256071429933018369293137137136134, // 11^-153
1280 304951393939484349279174830456271141999, // 11^-144
1281 334838142249192351062534286575243350001, // 11^-135
1282 183826970023851061892407973678416422311, // 11^-126
1283 201842924352393404728314593418040675821, // 11^-117
1284 221624531513738305774870271734740961947, // 11^-108
1285 243344834238186465986122993315325591576, // 11^-99
1286 267193834301414676708834595107417746247, // 11^-90
1287 293380154594991977782504639045547494542, // 11^-81
1288 322132864088045607402818330486415493575, // 11^-72
1289 176851740822108453297561032060281913714, // 11^-63
1290 194184088111306107232610402385759498575, // 11^-54
1291 213215091354676888577329040601887973466, // 11^-45
1292 234111227256299197427917870802090967668, // 11^-36
1293 257055288062508663991611489278928709768, // 11^-27
1294 282247980565918687696808555402942563478, // 11^-18
1295 309909681819761564465444461107912469729, // 11^-9
1296 170141183460469231731687303715884105728, // 11^0
1297 186815862862682349392341454201789874176, // 11^9
1298 205124743505955904636591107127579246592, // 11^18
1299 225227985212968648451224991661780107264, // 11^27
1300 247301444262965381085386823495099626888, // 11^36
1301 271538211722310826714720080747313199115, // 11^45
1302 298150302539063592923933328180322755271, // 11^54
1303 327370510177191550022527822209865447333, // 11^63
1304 179727221507067050840782578187764330990, // 11^72
1305 197341380157710189331417385894277071911, // 11^81
1306 216681813672942089280666997109850212851, // 11^90
1307 237917705546974217796728292841033536358, // 11^99
1308 261234820095126400184969690376374338338, // 11^108
1309 286837127456489808703442688252756740915, // 11^117
1310 314948587854906379895896832699151980516, // 11^126
1311 172907555363184572545974225978641470455, // 11^135
1312 189853352925309785288573204303090400331, // 11^144
1313 208459922652152508348644224820166488004, // 11^153
1314 228890028448627145607277691781146666326, // 11^162
1315 251322385889182188596856419989450117198, // 11^171
1316 275953225560490099471194727985491113834, // 11^180
1317 302998009619470597652934458975103615488, // 11^189
1318 332693316582509542060143699364121908613, // 11^198
1319 182649455416682266091504883729813020363, // 11^207
1320 200550007476552106538373760555841065584, // 11^216
1321 220204902374823007850602460837751774656, // 11^225
1322 241786074406278472344858080843135119733, // 11^234
1323 265482308278902675848717553283442644763, // 11^243
1324 291500890537904924029114199837605959154, // 11^252
1325 320069422837484936971208194402230692262, // 11^261
1326 175718906461109937023963056381563419957, // 11^270
1327 192940230367248485471498733602562118815, // 11^279
1328 211849329385655768374338506351963365331, // 11^288
1329 ];
1330 const BASE11_LARGE_EXPONENT: [i32; 70] = [
1331 -1279, // 11^-333
1332 -1248, // 11^-324
1333 -1217, // 11^-315
1334 -1186, // 11^-306
1335 -1155, // 11^-297
1336 -1124, // 11^-288
1337 -1093, // 11^-279
1338 -1062, // 11^-270
1339 -1030, // 11^-261
1340 -999, // 11^-252
1341 -968, // 11^-243
1342 -937, // 11^-234
1343 -906, // 11^-225
1344 -875, // 11^-216
1345 -844, // 11^-207
1346 -812, // 11^-198
1347 -781, // 11^-189
1348 -750, // 11^-180
1349 -719, // 11^-171
1350 -688, // 11^-162
1351 -657, // 11^-153
1352 -626, // 11^-144
1353 -595, // 11^-135
1354 -563, // 11^-126
1355 -532, // 11^-117
1356 -501, // 11^-108
1357 -470, // 11^-99
1358 -439, // 11^-90
1359 -408, // 11^-81
1360 -377, // 11^-72
1361 -345, // 11^-63
1362 -314, // 11^-54
1363 -283, // 11^-45
1364 -252, // 11^-36
1365 -221, // 11^-27
1366 -190, // 11^-18
1367 -159, // 11^-9
1368 -127, // 11^0
1369 -96, // 11^9
1370 -65, // 11^18
1371 -34, // 11^27
1372 -3, // 11^36
1373 28, // 11^45
1374 59, // 11^54
1375 90, // 11^63
1376 122, // 11^72
1377 153, // 11^81
1378 184, // 11^90
1379 215, // 11^99
1380 246, // 11^108
1381 277, // 11^117
1382 308, // 11^126
1383 340, // 11^135
1384 371, // 11^144
1385 402, // 11^153
1386 433, // 11^162
1387 464, // 11^171
1388 495, // 11^180
1389 526, // 11^189
1390 557, // 11^198
1391 589, // 11^207
1392 620, // 11^216
1393 651, // 11^225
1394 682, // 11^234
1395 713, // 11^243
1396 744, // 11^252
1397 775, // 11^261
1398 807, // 11^270
1399 838, // 11^279
1400 869, // 11^288
1401 ];
1402 const BASE11_SMALL_INT_POWERS: [u128; 9] = [1, 11, 121, 1331, 14641, 161051, 1771561, 19487171, 214358881];
1403 const BASE11_STEP: i32 = 9;
1404 const BASE11_BIAS: i32 = 333;
1405
1406 // BASE12
1407
1408 const BASE12_SMALL_MANTISSA: [u128; 9] = [
1409 170141183460469231731687303715884105728, // 12^0
1410 255211775190703847597530955573826158592, // 12^1
1411 191408831393027885698148216680369618944, // 12^2
1412 287113247089541828547222325020554428416, // 12^3
1413 215334935317156371410416743765415821312, // 12^4
1414 323002402975734557115625115648123731968, // 12^5
1415 242251802231800917836718836736092798976, // 12^6
1416 181688851673850688377539127552069599232, // 12^7
1417 272533277510776032566308691328104398848, // 12^8
1418 ];
1419 const BASE12_SMALL_EXPONENT: [i32; 9] = [
1420 -127, // 12^0
1421 -124, // 12^1
1422 -120, // 12^2
1423 -117, // 12^3
1424 -113, // 12^4
1425 -110, // 12^5
1426 -106, // 12^6
1427 -102, // 12^7
1428 -99, // 12^8
1429 ];
1430 const BASE12_LARGE_MANTISSA: [u128; 68] = [
1431 236015590119408703302029793810763336632, // 12^-324
1432 283538504658222748235708766575760177913, // 12^-315
1433 170315197362908885300398426895467760677, // 12^-306
1434 204609010601448705405745986119597896326, // 12^-297
1435 245808053934833671173174941698733239342, // 12^-288
1436 295302729833943551617529441983408590696, // 12^-279
1437 177381702616012906692133545122052956869, // 12^-270
1438 213098391881773806300126011269370626834, // 12^-261
1439 256006814417050404626793229969178591795, // 12^-252
1440 307555061533862494767405465422567274311, // 12^-243
1441 184741402471039290909022270993420155647, // 12^-234
1442 221940003957364890317522299802459040748, // 12^-225
1443 266628729119434395515123988465075762881, // 12^-216
1444 320315751663685742610118741757695693407, // 12^-207
1445 192406461791880080316008520325217417399, // 12^-198
1446 231148461148045387015380597263260157877, // 12^-189
1447 277691355027891684120101092281051616669, // 12^-180
1448 333605892395873536287594592246578306329, // 12^-171
1449 200389550171752283164939097875653100692, // 12^-162
1450 240738984132727062349578629363188475398, // 12^-153
1451 289212977580839036146652597763405686112, // 12^-144
1452 173723725516468955947099703423373843986, // 12^-135
1453 208703862874796048578293668364396201854, // 12^-126
1454 250727425107703285166415666163110988836, // 12^-117
1455 301212640893244858516269504216828222245, // 12^-108
1456 180931653158622392278312153671259457350, // 12^-99
1457 217363142646555453321168098187951653993, // 12^-90
1458 261130293988778746809115702919522241550, // 12^-81
1459 313710179234688236904530296665341569850, // 12^-72
1460 188438643123668474334468683754392032451, // 12^-63
1461 226381702429392491474935736226666160567, // 12^-54
1462 271964785700545191021799322274747927151, // 12^-45
1463 326726249813466247246220462666861782844, // 12^-36
1464 196257103731642338395610271199702162833, // 12^-27
1465 235774449020380624184618955567855082461, // 12^-18
1466 283248808597909657338003839260381566656, // 12^-9
1467 170141183460469231731687303715884105728, // 12^0
1468 204399958133082024424731518496078299136, // 12^9
1469 245556907710782073166015043857318674432, // 12^18
1470 295001014066853243782145636489477750784, // 12^27
1471 177200468746272961345336076752392290304, // 12^36
1472 212880665669732098276382446210774990848, // 12^45
1473 255745247947835503562868389206950936576, // 12^54
1474 307240827353347547401607574753443315712, // 12^63
1475 184552649072141716781794491390137475072, // 12^72
1476 221713244121518884974124815309574946401, // 12^81
1477 266356310061270520809673995345359110719, // 12^90
1478 319988479671385965643116043114178672868, // 12^99
1479 192209876872921446586714266254161951235, // 12^108
1480 230912292876569386789935113689005718149, // 12^117
1481 277407633098725295421526662764935275289, // 12^126
1482 333265041643201293321649737744276185517, // 12^135
1483 200184808797092622572327630249651738267, // 12^144
1484 240493017062571660772163375622796335712, // 12^153
1485 288917483816076538023589582665008561757, // 12^162
1486 173546229063471511777292289904643662141, // 12^171
1487 208490626626972031635281014538153149532, // 12^180
1488 250471252679363433757155530343900661758, // 12^189
1489 300904886870600004067510516586852827477, // 12^198
1490 180746792244690548097558883605316900733, // 12^207
1491 217141059066909427380630585083218539864, // 12^216
1492 260863492774290665230282703014708894052, // 12^225
1493 313389656266867868879861721401276560157, // 12^234
1494 188246112191795662327951607127115677904, // 12^243
1495 226150404435492799169987273137391228527, // 12^252
1496 271686914703601365116141326731156710883, // 12^261
1497 326392428107359965184387801150473482685, // 12^270
1498 196056584547032659751107943421776414785, // 12^279
1499 ];
1500 const BASE12_LARGE_EXPONENT: [i32; 68] = [
1501 -1289, // 12^-324
1502 -1257, // 12^-315
1503 -1224, // 12^-306
1504 -1192, // 12^-297
1505 -1160, // 12^-288
1506 -1128, // 12^-279
1507 -1095, // 12^-270
1508 -1063, // 12^-261
1509 -1031, // 12^-252
1510 -999, // 12^-243
1511 -966, // 12^-234
1512 -934, // 12^-225
1513 -902, // 12^-216
1514 -870, // 12^-207
1515 -837, // 12^-198
1516 -805, // 12^-189
1517 -773, // 12^-180
1518 -741, // 12^-171
1519 -708, // 12^-162
1520 -676, // 12^-153
1521 -644, // 12^-144
1522 -611, // 12^-135
1523 -579, // 12^-126
1524 -547, // 12^-117
1525 -515, // 12^-108
1526 -482, // 12^-99
1527 -450, // 12^-90
1528 -418, // 12^-81
1529 -386, // 12^-72
1530 -353, // 12^-63
1531 -321, // 12^-54
1532 -289, // 12^-45
1533 -257, // 12^-36
1534 -224, // 12^-27
1535 -192, // 12^-18
1536 -160, // 12^-9
1537 -127, // 12^0
1538 -95, // 12^9
1539 -63, // 12^18
1540 -31, // 12^27
1541 2, // 12^36
1542 34, // 12^45
1543 66, // 12^54
1544 98, // 12^63
1545 131, // 12^72
1546 163, // 12^81
1547 195, // 12^90
1548 227, // 12^99
1549 260, // 12^108
1550 292, // 12^117
1551 324, // 12^126
1552 356, // 12^135
1553 389, // 12^144
1554 421, // 12^153
1555 453, // 12^162
1556 486, // 12^171
1557 518, // 12^180
1558 550, // 12^189
1559 582, // 12^198
1560 615, // 12^207
1561 647, // 12^216
1562 679, // 12^225
1563 711, // 12^234
1564 744, // 12^243
1565 776, // 12^252
1566 808, // 12^261
1567 840, // 12^270
1568 873, // 12^279
1569 ];
1570 const BASE12_SMALL_INT_POWERS: [u128; 9] = [1, 12, 144, 1728, 20736, 248832, 2985984, 35831808, 429981696];
1571 const BASE12_STEP: i32 = 9;
1572 const BASE12_BIAS: i32 = 324;
1573
1574 // BASE13
1575
1576 const BASE13_SMALL_MANTISSA: [u128; 8] = [
1577 170141183460469231731687303715884105728, // 13^0
1578 276479423123262501563991868538311671808, // 13^1
1579 224639531287650782520743393187378233344, // 13^2
1580 182519619171216260798104006964744814592, // 13^3
1581 296594381153226423796919011317710323712, // 13^4
1582 240982934686996469334996696695639638016, // 13^5
1583 195798634433184631334684816065207205888, // 13^6
1584 318172780953925025918862826105961709568, // 13^7
1585 ];
1586 const BASE13_SMALL_EXPONENT: [i32; 8] = [
1587 -127, // 13^0
1588 -124, // 13^1
1589 -120, // 13^2
1590 -116, // 13^3
1591 -113, // 13^4
1592 -109, // 13^5
1593 -105, // 13^6
1594 -102, // 13^7
1595 ];
1596 const BASE13_LARGE_MANTISSA: [u128; 74] = [
1597 234492264952419818661296823055466035238, // 13^-312
1598 178145751691013993109826848158654507171, // 13^-304
1599 270677660536016922109887166011364690074, // 13^-296
1600 205636101949623162244352604410701629545, // 13^-288
1601 312446962496257587924386799659895562352, // 13^-280
1602 237368592984352411701605597109952160960, // 13^-272
1603 180330922359490147340520816471555077038, // 13^-264
1604 273997845714729128559081401928980460360, // 13^-256
1605 208158474636564731932432542641850208607, // 13^-248
1606 316279498110609430339960234785638219567, // 13^-240
1607 240280202619066059925234911435300433349, // 13^-232
1608 182542896759209079117924981191278218615, // 13^-224
1609 277358756934885281135534847026826478882, // 13^-216
1610 210711787240726612911538723377341283448, // 13^-208
1611 320159044357159213189440578296814412270, // 13^-200
1612 243227526627608078053980201967728671175, // 13^-192
1613 184782003669985976085437039910686134984, // 13^-184
1614 280760893750083272032555777889582843511, // 13^-176
1615 213296419277190995686832685182416132955, // 13^-168
1616 324086177877525444638594829459150002632, // 13^-160
1617 246211003089480177174216643591955743445, // 13^-152
1618 187048575904513609075482455349961378053, // 13^-144
1619 284204761841543230201034707437221523825, // 13^-136
1620 215912754916246372204794564138901211197, // 13^-128
1621 328061482386525623150638173263346085618, // 13^-120
1622 249231075457753005677502945704601914895, // 13^-112
1623 189342950357830398121128390896356453239, // 13^-104
1624 287690873093270135400938070638952191684, // 13^-96
1625 218561183040489207765436578950529361150, // 13^-88
1626 332085548758937481126223466223271077691, // 13^-80
1627 252288192624979397908801362020362227394, // 13^-72
1628 191665468057395263450492571375008762286, // 13^-64
1629 291219745668138391592456499213129019442, // 13^-56
1630 221242097302626033221832363181059870585, // 13^-48
1631 336158975117324458944453423021025623710, // 13^-40
1632 255382808989916127627430380985009698372, // 13^-32
1633 194016474213776704407345321083633835842, // 13^-24
1634 294791904084909668600573533146696407742, // 13^-16
1635 223955896183984548959338021657683010637, // 13^-8
1636 170141183460469231731687303715884105728, // 13^0
1637 258515384525064083559076046211093889024, // 13^8
1638 196396318271963640537903969427202768896, // 13^16
1639 298407879296195459704416306334760173568, // 13^24
1640 226702983053742437531808354380178063872, // 13^32
1641 172228168527856562581024588413877561828, // 13^40
1642 261686384845036905964465455013477410965, // 13^48
1643 198805353963305641500281734389939339052, // 13^56
1644 302068208767375943221882620634577632307, // 13^64
1645 229483766228882688509711411881831930515, // 13^72
1646 174340752962680465097022527378326959423, // 13^80
1647 264896281275768246289732905498826672107, // 13^88
1648 201243939358090266003114541899396801267, // 13^96
1649 305773436556486878301580275426022079145, // 13^104
1650 232298659034884347081172590621418853088, // 13^112
1651 176479250771793883849064971202097683281, // 13^120
1652 268145550924567936613388404500729180677, // 13^128
1653 203712436918765324677453955129179600235, // 13^136
1654 309524113395086409019191949184662333574, // 13^144
1655 235148079867157707257686510259099274415, // 13^152
1656 178643979813719299400243488890704650366, // 13^160
1657 271434676751037481783657313824389119896, // 13^168
1658 206211213553813977645157972930830162165, // 13^176
1659 313320796770113796525378889251061848013, // 13^184
1660 238032452253233081187768481790039531230, // 13^192
1661 180835261845894060934288352757379708280, // 13^200
1662 274764147638855414866553566635921015415, // 13^208
1663 208740640672290674581982064710037218783, // 13^216
1664 317164051006752246428908041221997358677, // 13^224
1665 240952204915712388090624317255539471706, // 13^232
1666 183053422572495239382420468754129441919, // 13^240
1667 278134458468443185818361944895170594350, // 13^248
1668 211301094239026043298793364640604498188, // 13^256
1669 321054447352308147843744474962905446408, // 13^264
1670 243907771835992919704646129069158162971, // 13^272
1671 ];
1672 const BASE13_LARGE_EXPONENT: [i32; 74] = [
1673 -1282, // 13^-312
1674 -1252, // 13^-304
1675 -1223, // 13^-296
1676 -1193, // 13^-288
1677 -1164, // 13^-280
1678 -1134, // 13^-272
1679 -1104, // 13^-264
1680 -1075, // 13^-256
1681 -1045, // 13^-248
1682 -1016, // 13^-240
1683 -986, // 13^-232
1684 -956, // 13^-224
1685 -927, // 13^-216
1686 -897, // 13^-208
1687 -868, // 13^-200
1688 -838, // 13^-192
1689 -808, // 13^-184
1690 -779, // 13^-176
1691 -749, // 13^-168
1692 -720, // 13^-160
1693 -690, // 13^-152
1694 -660, // 13^-144
1695 -631, // 13^-136
1696 -601, // 13^-128
1697 -572, // 13^-120
1698 -542, // 13^-112
1699 -512, // 13^-104
1700 -483, // 13^-96
1701 -453, // 13^-88
1702 -424, // 13^-80
1703 -394, // 13^-72
1704 -364, // 13^-64
1705 -335, // 13^-56
1706 -305, // 13^-48
1707 -276, // 13^-40
1708 -246, // 13^-32
1709 -216, // 13^-24
1710 -187, // 13^-16
1711 -157, // 13^-8
1712 -127, // 13^0
1713 -98, // 13^8
1714 -68, // 13^16
1715 -39, // 13^24
1716 -9, // 13^32
1717 21, // 13^40
1718 50, // 13^48
1719 80, // 13^56
1720 109, // 13^64
1721 139, // 13^72
1722 169, // 13^80
1723 198, // 13^88
1724 228, // 13^96
1725 257, // 13^104
1726 287, // 13^112
1727 317, // 13^120
1728 346, // 13^128
1729 376, // 13^136
1730 405, // 13^144
1731 435, // 13^152
1732 465, // 13^160
1733 494, // 13^168
1734 524, // 13^176
1735 553, // 13^184
1736 583, // 13^192
1737 613, // 13^200
1738 642, // 13^208
1739 672, // 13^216
1740 701, // 13^224
1741 731, // 13^232
1742 761, // 13^240
1743 790, // 13^248
1744 820, // 13^256
1745 849, // 13^264
1746 879, // 13^272
1747 ];
1748 const BASE13_SMALL_INT_POWERS: [u128; 8] = [1, 13, 169, 2197, 28561, 371293, 4826809, 62748517];
1749 const BASE13_STEP: i32 = 8;
1750 const BASE13_BIAS: i32 = 312;
1751
1752 // BASE14
1753
1754 const BASE14_SMALL_MANTISSA: [u128; 8] = [
1755 170141183460469231731687303715884105728, // 14^0
1756 297747071055821155530452781502797185024, // 14^1
1757 260528687173843511089146183814947536896, // 14^2
1758 227962601277113072203002910838079094784, // 14^3
1759 199467276117473938177627546983319207936, // 14^4
1760 174533866602789695905424103610404306944, // 14^5
1761 305434266554881967834492181318207537152, // 14^6
1762 267254983235521721855180658653431595008, // 14^7
1763 ];
1764 const BASE14_SMALL_EXPONENT: [i32; 8] = [
1765 -127, // 14^0
1766 -124, // 14^1
1767 -120, // 14^2
1768 -116, // 14^3
1769 -112, // 14^4
1770 -108, // 14^5
1771 -105, // 14^6
1772 -101, // 14^7
1773 ];
1774 const BASE14_LARGE_MANTISSA: [u128; 72] = [
1775 251548413169278560512334209582633427955, // 14^-304
1776 172868555043538834443100066630384298338, // 14^-296
1777 237596707101714066585640360644079693184, // 14^-288
1778 326561387705008590881101164026582541311, // 14^-280
1779 224418808746721891131396635947419054595, // 14^-272
1780 308449214239576126269380201889590576494, // 14^-264
1781 211971800172033630882960469392933087940, // 14^-256
1782 291341601754078780972414349774563326428, // 14^-248
1783 200215143815698040798730279921859793515, // 14^-240
1784 275182833977670641254081992250398936156, // 14^-232
1785 189110550462878905579110756278883461660, // 14^-224
1786 259920284847963995399800125815215983072, // 14^-216
1787 178621854545095883446307559621296276382, // 14^-208
1788 245504247117858718392171207907774065824, // 14^-200
1789 337429792711562885676838629607664070711, // 14^-192
1790 231887770468403152813044191455947332680, // 14^-184
1791 318714821597104302344272129046782646031, // 14^-176
1792 219026508600450572879143037057044702127, // 14^-168
1793 301037844611736789461197056572315300910, // 14^-160
1794 206878574807117564156377107253687360168, // 14^-152
1795 284341291171704802743493772571841275116, // 14^-144
1796 195404405556671025581418948604574579552, // 14^-136
1797 268570783748031302676865943988466296381, // 14^-128
1798 184566631641558957302915986868221103411, // 14^-120
1799 253674960769150428442670675281025859157, // 14^-112
1800 174329956473941702727882427159635204541, // 14^-104
1801 239605309345945263344621501916001364416, // 14^-96
1802 329322082262710237520775170056072850605, // 14^-88
1803 226316007274407653805017736090948441653, // 14^-80
1804 311056791556242112413125050076207081650, // 14^-72
1805 213763773801352511153375590062662203372, // 14^-64
1806 293804554217770280277607620947080882230, // 14^-56
1807 201907728667158642949418150287074186439, // 14^-48
1808 277509182960549548157083678768414391770, // 14^-40
1809 190709258966464876623809832149485832940, // 14^-32
1810 262117606830390855604604612394616145902, // 14^-24
1811 180131893393211845729384454981934494079, // 14^-16
1812 247579698363561878555441197267606485702, // 14^-8
1813 170141183460469231731687303715884105728, // 14^0
1814 233848110331081506623283076321752645632, // 14^8
1815 321409182616407632938244080939940446208, // 14^16
1816 220878121537715117784741212850409701376, // 14^24
1817 303582767467198764972828371186555551744, // 14^32
1818 208627491173467029036775346642092064768, // 14^40
1819 286745064197610355009611023687762970225, // 14^48
1820 197056321243220373650760726805477101625, // 14^56
1821 270841235580262673674173137819514560921, // 14^64
1822 186126926626483659918254253754028720893, // 14^72
1823 255819485841579348845580110620374327715, // 14^80
1824 175803712344053086257499345217280929659, // 14^88
1825 241630891972710985114650364591580944199, // 14^96
1826 332106115263742508816700348007180790592, // 14^104
1827 228229244396512279339912293302076319311, // 14^112
1828 313686412889065357315780098042512623701, // 14^120
1829 215570896471654994597359469530054904893, // 14^128
1830 296288328063653274657691113306601058431, // 14^136
1831 203614622343740041422835873088956724196, // 14^144
1832 279855198502973302491761604313633635665, // 14^152
1833 192321482680456518790460799730877816261, // 14^160
1834 264333504599995236391965677440014878764, // 14^168
1835 181654697853512422889189735564216996803, // 14^176
1836 249672695121914450880056351845343996855, // 14^184
1837 171579528154314464133715598246382584383, // 14^192
1838 235825022574310344970824197408281461914, // 14^200
1839 324126321306564057111299587260117144567, // 14^208
1840 222745387696552489161405202381218740358, // 14^216
1841 306149204668634768979587047598946613225, // 14^224
1842 210391192582005308252369450519735221250, // 14^232
1843 289169158312782474283830561810879736710, // 14^240
1844 198722201944671478335130298919429936059, // 14^248
1845 273130881427012463325938578210122255044, // 14^256
1846 187700412080445632409314398956810353518, // 14^264
1847 ];
1848 const BASE14_LARGE_EXPONENT: [i32; 72] = [
1849 -1285, // 14^-304
1850 -1254, // 14^-296
1851 -1224, // 14^-288
1852 -1194, // 14^-280
1853 -1163, // 14^-272
1854 -1133, // 14^-264
1855 -1102, // 14^-256
1856 -1072, // 14^-248
1857 -1041, // 14^-240
1858 -1011, // 14^-232
1859 -980, // 14^-224
1860 -950, // 14^-216
1861 -919, // 14^-208
1862 -889, // 14^-200
1863 -859, // 14^-192
1864 -828, // 14^-184
1865 -798, // 14^-176
1866 -767, // 14^-168
1867 -737, // 14^-160
1868 -706, // 14^-152
1869 -676, // 14^-144
1870 -645, // 14^-136
1871 -615, // 14^-128
1872 -584, // 14^-120
1873 -554, // 14^-112
1874 -523, // 14^-104
1875 -493, // 14^-96
1876 -463, // 14^-88
1877 -432, // 14^-80
1878 -402, // 14^-72
1879 -371, // 14^-64
1880 -341, // 14^-56
1881 -310, // 14^-48
1882 -280, // 14^-40
1883 -249, // 14^-32
1884 -219, // 14^-24
1885 -188, // 14^-16
1886 -158, // 14^-8
1887 -127, // 14^0
1888 -97, // 14^8
1889 -67, // 14^16
1890 -36, // 14^24
1891 -6, // 14^32
1892 25, // 14^40
1893 55, // 14^48
1894 86, // 14^56
1895 116, // 14^64
1896 147, // 14^72
1897 177, // 14^80
1898 208, // 14^88
1899 238, // 14^96
1900 268, // 14^104
1901 299, // 14^112
1902 329, // 14^120
1903 360, // 14^128
1904 390, // 14^136
1905 421, // 14^144
1906 451, // 14^152
1907 482, // 14^160
1908 512, // 14^168
1909 543, // 14^176
1910 573, // 14^184
1911 604, // 14^192
1912 634, // 14^200
1913 664, // 14^208
1914 695, // 14^216
1915 725, // 14^224
1916 756, // 14^232
1917 786, // 14^240
1918 817, // 14^248
1919 847, // 14^256
1920 878, // 14^264
1921 ];
1922 const BASE14_SMALL_INT_POWERS: [u128; 8] = [1, 14, 196, 2744, 38416, 537824, 7529536, 105413504];
1923 const BASE14_STEP: i32 = 8;
1924 const BASE14_BIAS: i32 = 304;
1925
1926 // BASE15
1927
1928 const BASE15_SMALL_MANTISSA: [u128; 8] = [
1929 170141183460469231731687303715884105728, // 15^0
1930 319014718988379809496913694467282698240, // 15^1
1931 299076299051606071403356588563077529600, // 15^2
1932 280384030360880691940646801777885184000, // 15^3
1933 262860028463325648694356376666767360000, // 15^4
1934 246431276684367795650959103125094400000, // 15^5
1935 231029321891594808422774159179776000000, // 15^6
1936 216589989273370132896350774231040000000, // 15^7
1937 ];
1938 const BASE15_SMALL_EXPONENT: [i32; 8] = [
1939 -127, // 15^0
1940 -124, // 15^1
1941 -120, // 15^2
1942 -116, // 15^3
1943 -112, // 15^4
1944 -108, // 15^5
1945 -104, // 15^6
1946 -100, // 15^7
1947 ];
1948 const BASE15_LARGE_MANTISSA: [u128; 70] = [
1949 250900630150587280377850342682701393565, // 15^-296
1950 299434584015762656519487081521438784545, // 15^-288
1951 178678447421354466262014715708770369510, // 15^-280
1952 213241818261213966824485132704511196490, // 15^-272
1953 254491091184140684406056053498886823977, // 15^-264
1954 303719580053283976738045342609656736770, // 15^-256
1955 181235388002241613446887230826356048960, // 15^-248
1956 216293370737313530448778168911616746705, // 15^-240
1957 258132932759965856034693127408739651425, // 15^-232
1958 308065895631104646134849028190499821539, // 15^-224
1959 183828919146951883093674448351327494412, // 15^-216
1960 219388591817396682923135459647357436704, // 15^-208
1961 261826890148575264294539329193196343516, // 15^-200
1962 312474408249691315911417866816293319027, // 15^-192
1963 186459564477102023710796186076704586060, // 15^-184
1964 222528106411894691985532295229724475420, // 15^-176
1965 265573709142416387133758214804806317848, // 15^-168
1966 316946007966797681726272939583274683428, // 15^-160
1967 189127855107486501747742000280219617523, // 15^-152
1968 225712548373888955751123878842649157480, // 15^-144
1969 269374146206443663446975509775551676690, // 15^-136
1970 321481597577162915672598741300570427622, // 15^-128
1971 191834329753307055373436045708607941890, // 15^-120
1972 228942560627082928532238637834630336646, // 15^-112
1973 273228968630845173556739192069109710925, // 15^-104
1974 326082092794781635112624979076905003855, // 15^-96
1975 194579534838936734374686465136944546456, // 15^-88
1976 232218795295605362158733969001967701715, // 15^-80
1977 277138954685954882938577351637270128950, // 15^-72
1978 330748422437782207809506145002547658085, // 15^-64
1979 197364024608240385117657735223630441823, // 15^-56
1980 235541913835671069456466721167496749113, // 15^-48
1981 281104893779381725235703590002221275596, // 15^-40
1982 335481528615950719408183659471355674975, // 15^-32
1983 200188361236473853754168248068850933442, // 15^-24
1984 238912587169125791566529710613345919103, // 15^-16
1985 285127586615387248178740525206042107172, // 15^-8
1986 170141183460469231731687303715884105728, // 15^0
1987 203053114943784499590328850841600000000, // 15^8
1988 242331495818902131179520000000000000000, // 15^16
1989 289207845356544000000000000000000000000, // 15^24
1990 172575953309595678001642227172851562500, // 15^32
1991 205958864110335933831952325359648803271, // 15^40
1992 245799330046413899594233809090775284541, // 15^48
1993 293346493787707294402529081970820087350, // 15^56
1994 175045565423820113080636775231191731391, // 15^64
1995 208906195393080226844550976655564036201, // 15^72
1996 249316789990916616866725045444974174010, // 15^80
1997 297544367482333459204270734183314844936, // 15^88
1998 177550518406095745907734479894927853604, // 15^96
1999 211895703844201159681805788312089434384, // 15^104
2000 252884585810862301272632571838697691236, // 15^112
2001 301802313971178147521594347169174498450, // 15^120
2002 180091317994529147280371081412973024665, // 15^128
2003 214927993031252433012289596290523334542, // 15^136
2004 256503437827277086943219190518379691262, // 15^144
2005 306121192913408770879770801728425641044, // 15^152
2006 182668477164486370906358954938714362551, // 15^160
2007 218003675159015088778073023304915283497, // 15^168
2008 260174076669190616934963528529542450091, // 15^176
2009 310501876270165601037714752361776484586, // 15^184
2010 185282516232160242762660936045505469826, // 15^192
2011 221123371193098747019724833334214306438, // 15^200
2012 263897243421146573236258451562349376134, // 15^208
2013 314945248480606581688897076801472259251, // 15^216
2014 187933962959619728504626775329093970226, // 15^224
2015 224287710985311612370215929865332425589, // 15^232
2016 267673689772824125386430153566188172461, // 15^240
2017 319452206640471392649554807130291119305, // 15^248
2018 190623352661362587893902772482928415571, // 15^256
2019 ];
2020 const BASE15_LARGE_EXPONENT: [i32; 70] = [
2021 -1284, // 15^-296
2022 -1253, // 15^-288
2023 -1221, // 15^-280
2024 -1190, // 15^-272
2025 -1159, // 15^-264
2026 -1128, // 15^-256
2027 -1096, // 15^-248
2028 -1065, // 15^-240
2029 -1034, // 15^-232
2030 -1003, // 15^-224
2031 -971, // 15^-216
2032 -940, // 15^-208
2033 -909, // 15^-200
2034 -878, // 15^-192
2035 -846, // 15^-184
2036 -815, // 15^-176
2037 -784, // 15^-168
2038 -753, // 15^-160
2039 -721, // 15^-152
2040 -690, // 15^-144
2041 -659, // 15^-136
2042 -628, // 15^-128
2043 -596, // 15^-120
2044 -565, // 15^-112
2045 -534, // 15^-104
2046 -503, // 15^-96
2047 -471, // 15^-88
2048 -440, // 15^-80
2049 -409, // 15^-72
2050 -378, // 15^-64
2051 -346, // 15^-56
2052 -315, // 15^-48
2053 -284, // 15^-40
2054 -253, // 15^-32
2055 -221, // 15^-24
2056 -190, // 15^-16
2057 -159, // 15^-8
2058 -127, // 15^0
2059 -96, // 15^8
2060 -65, // 15^16
2061 -34, // 15^24
2062 -2, // 15^32
2063 29, // 15^40
2064 60, // 15^48
2065 91, // 15^56
2066 123, // 15^64
2067 154, // 15^72
2068 185, // 15^80
2069 216, // 15^88
2070 248, // 15^96
2071 279, // 15^104
2072 310, // 15^112
2073 341, // 15^120
2074 373, // 15^128
2075 404, // 15^136
2076 435, // 15^144
2077 466, // 15^152
2078 498, // 15^160
2079 529, // 15^168
2080 560, // 15^176
2081 591, // 15^184
2082 623, // 15^192
2083 654, // 15^200
2084 685, // 15^208
2085 716, // 15^216
2086 748, // 15^224
2087 779, // 15^232
2088 810, // 15^240
2089 841, // 15^248
2090 873, // 15^256
2091 ];
2092 const BASE15_SMALL_INT_POWERS: [u128; 8] = [1, 15, 225, 3375, 50625, 759375, 11390625, 170859375];
2093 const BASE15_STEP: i32 = 8;
2094 const BASE15_BIAS: i32 = 296;
2095
2096 // BASE17
2097
2098 const BASE17_SMALL_MANTISSA: [u128; 8] = [
2099 170141183460469231731687303715884105728, // 17^0
2100 180775007426748558714917760198126862336, // 17^1
2101 192073445390920343634600120210509791232, // 17^2
2102 204078035727852865111762627723666653184, // 17^3
2103 216832912960843669181247791956395819008, // 17^4
2104 230384970020896398505075778953670557696, // 17^5
2105 244784030647202423411643015138274967552, // 17^6
2106 260083032562652574874870703584417153024, // 17^7
2107 ];
2108 const BASE17_SMALL_EXPONENT: [i32; 8] = [
2109 -127, // 17^0
2110 -123, // 17^1
2111 -119, // 17^2
2112 -115, // 17^3
2113 -111, // 17^4
2114 -107, // 17^5
2115 -103, // 17^6
2116 -99, // 17^7
2117 ];
2118 const BASE17_LARGE_MANTISSA: [u128; 67] = [
2119 242357519372662728375060373498171096966, // 17^-280
2120 196814917627041423628769027913700117445, // 17^-272
2121 319660903452112403161269325795427500295, // 17^-264
2122 259591839957616255097162958982226744872, // 17^-256
2123 210810651677570156300974624360660789801, // 17^-248
2124 171196178077006380843936555487576333355, // 17^-240
2125 278051712804343163076920967240438328697, // 17^-232
2126 225801638394791143591435147984466155468, // 17^-224
2127 183370134237042583472660416437030762483, // 17^-216
2128 297824288336843871393537735572731133862, // 17^-208
2129 241858651334916724628852435647948831754, // 17^-200
2130 196409794352921881357331916371145369426, // 17^-192
2131 319002914345514633220184430371226516661, // 17^-184
2132 259057496842743054458415989246502258570, // 17^-176
2133 210376719623757394611528557965027181599, // 17^-168
2134 170843788344482468189688357828247614648, // 17^-160
2135 277479371939006412580670873073737346072, // 17^-152
2136 225336848935989032116058614991615739830, // 17^-144
2137 182992685667322765043701960137104341962, // 17^-136
2138 297211247657519026846228781764556419486, // 17^-128
2139 241360810165739638162969982622013142483, // 17^-120
2140 196005504983412884662857445298594989473, // 17^-112
2141 318346279641847361755138868550752397781, // 17^-104
2142 258524253618237975606418771469177669493, // 17^-96
2143 209943680774466452613153056292584472116, // 17^-88
2144 170492123969995067410761994182235561833, // 17^-80
2145 276908209178500704519431941303594138118, // 17^-72
2146 224873016198504574919954139464723650485, // 17^-64
2147 182616014036679619640392724861134514431, // 17^-56
2148 296599468859408121472112670217716316867, // 17^-48
2149 240863993751428088431121063565557553364, // 17^-40
2150 195602047802007523394399179976814437447, // 17^-32
2151 317690996553211397504541477525504659745, // 17^-24
2152 257992108020089771434235624403421929746, // 17^-16
2153 209511533291127649202286079418781645629, // 17^-8
2154 170141183460469231731687303715884105728, // 17^0
2155 276338222097818360804550122558443225088, // 17^8
2156 224410138213025296601555690180338253824, // 17^16
2157 182240117745863932172015090234506084352, // 17^24
2158 295988949345058405730513287165118905920, // 17^32
2159 240368199982629535993820184805831872348, // 17^40
2160 195199421095732140407812372336079928061, // 17^48
2161 317037062297446153078380490386689107619, // 17^56
2162 257461057788947429232455063849242347039, // 17^64
2163 209080275338955809947349984471742343690, // 17^72
2164 339581930651806711314806824645491109283, // 17^80
2165 275769408276943332346622203534744539377, // 17^88
2166 223948213014292349032159641795245781843, // 17^96
2167 181864995198918377644202761532864575404, // 17^104
2168 295379686522363719531147616048257012833, // 17^112
2169 239873426754333326759263874720553852658, // 17^120
2170 194797623155139058727680168785666503632, // 17^128
2171 316384474098117832632118586933880356805, // 17^136
2172 256931100670110578075784008065054807112, // 17^144
2173 208649905086942477070838417411852870460, // 17^152
2174 338882936158725697632383782036927673666, // 17^160
2175 275201765300840924300371814765015192837, // 17^168
2176 223487238641092167380922055560365365575, // 17^176
2177 181490644803170745141604509031893001355, // 17^184
2178 294771677804553486829405243638525556429, // 17^192
2179 239379671965861754658715697694088165244, // 17^200
2180 194396652274299323679629299288271234884, // 17^208
2181 315733229184507643855046849844924656388, // 17^216
2182 256402234413519915955050497805856036474, // 17^224
2183 208220420707848135466354215936729966175, // 17^232
2184 338185380473947645648707735110624890484, // 17^240
2185 274635290759447542459052551448368297186, // 17^248
2186 ];
2187 const BASE17_LARGE_EXPONENT: [i32; 67] = [
2188 -1272, // 17^-280
2189 -1239, // 17^-272
2190 -1207, // 17^-264
2191 -1174, // 17^-256
2192 -1141, // 17^-248
2193 -1108, // 17^-240
2194 -1076, // 17^-232
2195 -1043, // 17^-224
2196 -1010, // 17^-216
2197 -978, // 17^-208
2198 -945, // 17^-200
2199 -912, // 17^-192
2200 -880, // 17^-184
2201 -847, // 17^-176
2202 -814, // 17^-168
2203 -781, // 17^-160
2204 -749, // 17^-152
2205 -716, // 17^-144
2206 -683, // 17^-136
2207 -651, // 17^-128
2208 -618, // 17^-120
2209 -585, // 17^-112
2210 -553, // 17^-104
2211 -520, // 17^-96
2212 -487, // 17^-88
2213 -454, // 17^-80
2214 -422, // 17^-72
2215 -389, // 17^-64
2216 -356, // 17^-56
2217 -324, // 17^-48
2218 -291, // 17^-40
2219 -258, // 17^-32
2220 -226, // 17^-24
2221 -193, // 17^-16
2222 -160, // 17^-8
2223 -127, // 17^0
2224 -95, // 17^8
2225 -62, // 17^16
2226 -29, // 17^24
2227 3, // 17^32
2228 36, // 17^40
2229 69, // 17^48
2230 101, // 17^56
2231 134, // 17^64
2232 167, // 17^72
2233 199, // 17^80
2234 232, // 17^88
2235 265, // 17^96
2236 298, // 17^104
2237 330, // 17^112
2238 363, // 17^120
2239 396, // 17^128
2240 428, // 17^136
2241 461, // 17^144
2242 494, // 17^152
2243 526, // 17^160
2244 559, // 17^168
2245 592, // 17^176
2246 625, // 17^184
2247 657, // 17^192
2248 690, // 17^200
2249 723, // 17^208
2250 755, // 17^216
2251 788, // 17^224
2252 821, // 17^232
2253 853, // 17^240
2254 886, // 17^248
2255 ];
2256 const BASE17_SMALL_INT_POWERS: [u128; 8] = [1, 17, 289, 4913, 83521, 1419857, 24137569, 410338673];
2257 const BASE17_STEP: i32 = 8;
2258 const BASE17_BIAS: i32 = 280;
2259
2260 // BASE18
2261
2262 const BASE18_SMALL_MANTISSA: [u128; 7] = [
2263 170141183460469231731687303715884105728, // 18^0
2264 191408831393027885698148216680369618944, // 18^1
2265 215334935317156371410416743765415821312, // 18^2
2266 242251802231800917836718836736092798976, // 18^3
2267 272533277510776032566308691328104398848, // 18^4
2268 306599937199623036637097277744117448704, // 18^5
2269 172462464674787958108367218731066064896, // 18^6
2270 ];
2271 const BASE18_SMALL_EXPONENT: [i32; 7] = [
2272 -127, // 18^0
2273 -123, // 18^1
2274 -119, // 18^2
2275 -115, // 18^3
2276 -111, // 18^4
2277 -107, // 18^5
2278 -102, // 18^6
2279 ];
2280 const BASE18_LARGE_MANTISSA: [u128; 75] = [
2281 259764989429046712145887613713888779974, // 18^-273
2282 296222660952677279411722167462707735076, // 18^-266
2283 337797118290463899238253918549284876092, // 18^-259
2284 192603247770383575639211190527648274245, // 18^-252
2285 219634857984796466920734002291401705412, // 18^-245
2286 250460318818255417964791343261171179660, // 18^-238
2287 285612092170198511649999639102587856294, // 18^-231
2288 325697370261002112643262654266086944683, // 18^-224
2289 185704281966673733437923590446998072591, // 18^-217
2290 211767631486382365261996259087726574961, // 18^-210
2291 241488937521646207617474790890828249100, // 18^-203
2292 275381589414827976227270551469877695982, // 18^-196
2293 314031030021154964119856834958393443507, // 18^-189
2294 179052434161812488744424286609186187994, // 18^-182
2295 204182205669996766442639895844185984708, // 18^-175
2296 232838907258801165579649662968151663564, // 18^-168
2297 265517538884334791214783518037108753711, // 18^-161
2298 302782573089615796089597203369720463425, // 18^-154
2299 172638852694972345186098175788410725025, // 18^-147
2300 196868486555962367745019627988939060464, // 18^-140
2301 224498717373391335032231518045098273537, // 18^-133
2302 256006814417050404626793229969178591795, // 18^-126
2303 291937031065346039954998156631577529912, // 18^-119
2304 332910005936047335476283449703688561122, // 18^-112
2305 189816741726628588213403698819375225722, // 18^-105
2306 216457269515865090355509585365869594574, // 18^-98
2307 246836760024792608106756526472045881483, // 18^-91
2308 281479971709018296242657937208050445965, // 18^-84
2309 320985312176969416466104839150917967197, // 18^-77
2310 183017587375374702561553597022155160742, // 18^-70
2311 208703862874796048578293668364396201854, // 18^-63
2312 237995173051452727716558620615765508935, // 18^-56
2313 271397479737933588417468230506889186025, // 18^-49
2314 309487755838552588810803796052767101096, // 18^-42
2315 176461975819512133258798291874254633040, // 18^-35
2316 201228179937237770199942876645925476060, // 18^-28
2317 229470287934835004924643178169318563534, // 18^-21
2318 261676138308856451194147028266269550444, // 18^-14
2319 298402037041419227483658365640566588740, // 18^-7
2320 170141183460469231731687303715884105728, // 18^0
2321 194020272759136452871913121072449323008, // 18^7
2322 221250760550139932836609227367108313088, // 18^14
2323 252303011164126931290527343657214803968, // 18^21
2324 287713403941314941508226937857819803648, // 18^28
2325 328093598350474163167634651360244400128, // 18^35
2326 187070549727531559196917812917453861026, // 18^42
2327 213325653114257310428744028742785781912, // 18^49
2328 243265625417291205836310243227923719532, // 18^56
2329 277407633098725295421526662764935275289, // 18^63
2330 316341426247257477645159711999449660471, // 18^70
2331 180369762796928745579122531717097251784, // 18^77
2332 205684419630781050995309380627725821797, // 18^84
2333 234551954955343535589691141355422293223, // 18^91
2334 267471010551644448060009348077202513313, // 18^98
2335 305010211912915299914630616083972269987, // 18^105
2336 173908995182860443486855135343139262701, // 18^112
2337 198316891856377323275537495574245323224, // 18^119
2338 226150404435492799169987273137391228527, // 18^126
2339 257890313566309108293837274983090159159, // 18^133
2340 294084876820548989626661915132664622178, // 18^140
2341 335359298992515654651080492391625827617, // 18^147
2342 191213265769831372286179520084128641258, // 18^154
2343 218049793855157992570938056229892893589, // 18^161
2344 248652793041613380567795520750960012282, // 18^168
2345 283550882549632193861238568804430594202, // 18^175
2346 323346872605688987884591669129361771279, // 18^182
2347 184364088525767284952804747951506893851, // 18^189
2348 210239343674659878049714940191476577896, // 18^196
2349 239746156543789930881397013133212694240, // 18^203
2350 273394211439632029990640781047045990695, // 18^210
2351 311764726184655516350818907233192566650, // 18^217
2352 177760245875679923341865534533290364422, // 18^224
2353 202708660472811443153981984577454872377, // 18^231
2354 231158551948781603682221903513060749406, // 18^238
2355 263601347936609267755115798860540547258, // 18^245
2356 ];
2357 const BASE18_LARGE_EXPONENT: [i32; 75] = [
2358 -1266, // 18^-273
2359 -1237, // 18^-266
2360 -1208, // 18^-259
2361 -1178, // 18^-252
2362 -1149, // 18^-245
2363 -1120, // 18^-238
2364 -1091, // 18^-231
2365 -1062, // 18^-224
2366 -1032, // 18^-217
2367 -1003, // 18^-210
2368 -974, // 18^-203
2369 -945, // 18^-196
2370 -916, // 18^-189
2371 -886, // 18^-182
2372 -857, // 18^-175
2373 -828, // 18^-168
2374 -799, // 18^-161
2375 -770, // 18^-154
2376 -740, // 18^-147
2377 -711, // 18^-140
2378 -682, // 18^-133
2379 -653, // 18^-126
2380 -624, // 18^-119
2381 -595, // 18^-112
2382 -565, // 18^-105
2383 -536, // 18^-98
2384 -507, // 18^-91
2385 -478, // 18^-84
2386 -449, // 18^-77
2387 -419, // 18^-70
2388 -390, // 18^-63
2389 -361, // 18^-56
2390 -332, // 18^-49
2391 -303, // 18^-42
2392 -273, // 18^-35
2393 -244, // 18^-28
2394 -215, // 18^-21
2395 -186, // 18^-14
2396 -157, // 18^-7
2397 -127, // 18^0
2398 -98, // 18^7
2399 -69, // 18^14
2400 -40, // 18^21
2401 -11, // 18^28
2402 18, // 18^35
2403 48, // 18^42
2404 77, // 18^49
2405 106, // 18^56
2406 135, // 18^63
2407 164, // 18^70
2408 194, // 18^77
2409 223, // 18^84
2410 252, // 18^91
2411 281, // 18^98
2412 310, // 18^105
2413 340, // 18^112
2414 369, // 18^119
2415 398, // 18^126
2416 427, // 18^133
2417 456, // 18^140
2418 485, // 18^147
2419 515, // 18^154
2420 544, // 18^161
2421 573, // 18^168
2422 602, // 18^175
2423 631, // 18^182
2424 661, // 18^189
2425 690, // 18^196
2426 719, // 18^203
2427 748, // 18^210
2428 777, // 18^217
2429 807, // 18^224
2430 836, // 18^231
2431 865, // 18^238
2432 894, // 18^245
2433 ];
2434 const BASE18_SMALL_INT_POWERS: [u128; 7] = [1, 18, 324, 5832, 104976, 1889568, 34012224];
2435 const BASE18_STEP: i32 = 7;
2436 const BASE18_BIAS: i32 = 273;
2437
2438 // BASE19
2439
2440 const BASE19_SMALL_MANTISSA: [u128; 7] = [
2441 170141183460469231731687303715884105728, // 19^0
2442 202042655359307212681378673162612375552, // 19^1
2443 239925653239177315059137174380602195968, // 19^2
2444 284911713221523061632725394576965107712, // 19^3
2445 338332659450558635688861406060146065408, // 19^4
2446 200885016548769189940261459848211726336, // 19^5
2447 238550957151663413054060483569751425024, // 19^6
2448 ];
2449 const BASE19_SMALL_EXPONENT: [i32; 7] = [
2450 -127, // 19^0
2451 -123, // 19^1
2452 -119, // 19^2
2453 -115, // 19^3
2454 -111, // 19^4
2455 -106, // 19^5
2456 -102, // 19^6
2457 ];
2458 const BASE19_LARGE_MANTISSA: [u128; 74] = [
2459 211773375714873706954526795446522416463, // 19^-273
2460 176297720171655089222657736919708805072, // 19^-266
2461 293529685049453215881543661471874663538, // 19^-259
2462 244358452058655253685245151337508023797, // 19^-252
2463 203424239979142604035433607238695466107, // 19^-245
2464 338694414393807804581041366088196084612, // 19^-238
2465 281957318246159342222500231430112814088, // 19^-231
2466 234724654242834897063227749239967575385, // 19^-224
2467 195404267752744776874588226122954622761, // 19^-217
2468 325341434449269614607198466720898964379, // 19^-210
2469 270841190386491955899443752473167688523, // 19^-203
2470 225470667559284387835624717321131334248, // 19^-196
2471 187700481810335462307725392489901825033, // 19^-189
2472 312514893872556142260088491662230499613, // 19^-182
2473 260163314313871975296322899252180920269, // 19^-175
2474 216581518007204247993872678149555585108, // 19^-168
2475 180300416551865148993646942230063074210, // 19^-161
2476 300194037865176954165930472692882676095, // 19^-154
2477 249906412012854191998973084780461202007, // 19^-147
2478 208042821933683442841807340743863291908, // 19^-140
2479 173192097831823827445985218112992713522, // 19^-133
2480 288358929883670982310136287441393538062, // 19^-126
2481 240053886651337192078493312543483732688, // 19^-119
2482 199840762759316398351061941853830886312, // 19^-112
2483 332728047167428932050765437002481330484, // 19^-105
2484 276990419380016367557580152018464109110, // 19^-98
2485 230589795725005243268941857960660823918, // 19^-91
2486 191962068621409314298003076822671000161, // 19^-84
2487 319610290416807823632571053703933063036, // 19^-77
2488 266070110813870135824430347248350305665, // 19^-70
2489 221498825260546806854707890357129976717, // 19^-63
2490 184393990898599943457278294759382590034, // 19^-56
2491 307009699392470911375170613720126268120, // 19^-49
2492 255580333886495993526502175170654921405, // 19^-42
2493 212766265035907553834903279232863277537, // 19^-35
2494 177124283582141234157272719875613305569, // 19^-28
2495 294905884907949220984741236292709278206, // 19^-21
2496 245504114948215358970059027289947453449, // 19^-14
2497 204377984777481442195434041001194890061, // 19^-7
2498 170141183460469231731687303715884105728, // 19^0
2499 283279261617600303001696824239079817216, // 19^7
2500 235825149533115640143913831779140632576, // 19^14
2501 196320411295724208786653789764804673536, // 19^21
2502 326866782169983241283381922259938632192, // 19^28
2503 272111016325296008481488740678554545334, // 19^35
2504 226527775976573799542251126784141726274, // 19^42
2505 188580506522192103284103254483314456872, // 19^49
2506 313980104972594785419533005246072709649, // 19^56
2507 261383077542535819285819131850454151532, // 19^63
2508 217596950072905364683647533344696965413, // 19^70
2509 181145746412467300065049161663171614429, // 19^77
2510 301601483222404786925353682146130769038, // 19^84
2511 251078086246727305139312855014591629283, // 19^91
2512 209018220732132084019166621358085321302, // 19^98
2513 174004100680832526758226172220060851297, // 19^105
2514 289710886904423785696066284771374024143, // 19^112
2515 241179367792317286239104434314982328918, // 19^119
2516 200777706596478115292553836948931709029, // 19^126
2517 334288026667806625723834320874258952107, // 19^133
2518 278289075684203471850125042859239363909, // 19^140
2519 231670904929322723497179168675130067798, // 19^147
2520 192862073578757583112120353708241916963, // 19^154
2521 321108767943438131876044073228689471164, // 19^161
2522 267317567774791732969648063348207624890, // 19^168
2523 222537311885602256946640972609673172416, // 19^175
2524 185258513286308067365753274779077551187, // 19^182
2525 308449099652072036761706748552096805527, // 19^189
2526 256778610031103646805005837172547824357, // 19^196
2527 213763809470930565948441961387708938512, // 19^203
2528 177954722295557497937779873950595261616, // 19^210
2529 296288537013515928119667265056482304979, // 19^217
2530 246655149223317717362685108852956230915, // 19^224
2531 205336201162591117777390249036062770913, // 19^231
2532 170938882243688352586356584716130516258, // 19^238
2533 ];
2534 const BASE19_LARGE_EXPONENT: [i32; 74] = [
2535 -1287, // 19^-273
2536 -1257, // 19^-266
2537 -1228, // 19^-259
2538 -1198, // 19^-252
2539 -1168, // 19^-245
2540 -1139, // 19^-238
2541 -1109, // 19^-231
2542 -1079, // 19^-224
2543 -1049, // 19^-217
2544 -1020, // 19^-210
2545 -990, // 19^-203
2546 -960, // 19^-196
2547 -930, // 19^-189
2548 -901, // 19^-182
2549 -871, // 19^-175
2550 -841, // 19^-168
2551 -811, // 19^-161
2552 -782, // 19^-154
2553 -752, // 19^-147
2554 -722, // 19^-140
2555 -692, // 19^-133
2556 -663, // 19^-126
2557 -633, // 19^-119
2558 -603, // 19^-112
2559 -574, // 19^-105
2560 -544, // 19^-98
2561 -514, // 19^-91
2562 -484, // 19^-84
2563 -455, // 19^-77
2564 -425, // 19^-70
2565 -395, // 19^-63
2566 -365, // 19^-56
2567 -336, // 19^-49
2568 -306, // 19^-42
2569 -276, // 19^-35
2570 -246, // 19^-28
2571 -217, // 19^-21
2572 -187, // 19^-14
2573 -157, // 19^-7
2574 -127, // 19^0
2575 -98, // 19^7
2576 -68, // 19^14
2577 -38, // 19^21
2578 -9, // 19^28
2579 21, // 19^35
2580 51, // 19^42
2581 81, // 19^49
2582 110, // 19^56
2583 140, // 19^63
2584 170, // 19^70
2585 200, // 19^77
2586 229, // 19^84
2587 259, // 19^91
2588 289, // 19^98
2589 319, // 19^105
2590 348, // 19^112
2591 378, // 19^119
2592 408, // 19^126
2593 437, // 19^133
2594 467, // 19^140
2595 497, // 19^147
2596 527, // 19^154
2597 556, // 19^161
2598 586, // 19^168
2599 616, // 19^175
2600 646, // 19^182
2601 675, // 19^189
2602 705, // 19^196
2603 735, // 19^203
2604 765, // 19^210
2605 794, // 19^217
2606 824, // 19^224
2607 854, // 19^231
2608 884, // 19^238
2609 ];
2610 const BASE19_SMALL_INT_POWERS: [u128; 7] = [1, 19, 361, 6859, 130321, 2476099, 47045881];
2611 const BASE19_STEP: i32 = 7;
2612 const BASE19_BIAS: i32 = 273;
2613
2614 // BASE20
2615
2616 const BASE20_SMALL_MANTISSA: [u128; 7] = [
2617 170141183460469231731687303715884105728, // 20^0
2618 212676479325586539664609129644855132160, // 20^1
2619 265845599156983174580761412056068915200, // 20^2
2620 332306998946228968225951765070086144000, // 20^3
2621 207691874341393105141219853168803840000, // 20^4
2622 259614842926741381426524816461004800000, // 20^5
2623 324518553658426726783156020576256000000, // 20^6
2624 ];
2625 const BASE20_SMALL_EXPONENT: [i32; 7] = [
2626 -127, // 20^0
2627 -123, // 20^1
2628 -119, // 20^2
2629 -115, // 20^3
2630 -110, // 20^4
2631 -106, // 20^5
2632 -102, // 20^6
2633 ];
2634 const BASE20_LARGE_MANTISSA: [u128; 72] = [
2635 219444962751747547330237450047488370802, // 20^-266
2636 261598781051334795153424084243164504531, // 20^-259
2637 311850048364799970571308236412006025948, // 20^-252
2638 185877113559722882849757812268737570016, // 20^-245
2639 221582786512044528543660416923448526878, // 20^-238
2640 264147265567832623176169892458258303259, // 20^-231
2641 314888078651228693933689466069052580904, // 20^-224
2642 187687920720117505749278942387731421532, // 20^-217
2643 223741436863085634409521749481834675708, // 20^-210
2644 266720577315194170963194071628850311885, // 20^-203
2645 317955705303185189918510999237120523316, // 20^-196
2646 189516368689051383685178160212707831452, // 20^-189
2647 225921116696657399755928707376370229068, // 20^-182
2648 269318958159276723570738682003462587676, // 20^-175
2649 321053216647239593947814323906257853121, // 20^-168
2650 191362629322552438943275406304751547051, // 20^-161
2651 228122030881109760932058580285014566244, // 20^-154
2652 271942652322184754529069161754863937192, // 20^-147
2653 324180903818827574883781864350871964922, // 20^-140
2654 193226876150862917234767594546599367214, // 20^-133
2655 230344386280611654799899571593522271174, // 20^-126
2656 274591906405224388599276031963255728690, // 20^-119
2657 327339060789614187001318969682759915221, // 20^-112
2658 195109284394749514461349826862072894109, // 20^-105
2659 232588391774594204975783618524161450993, // 20^-98
2660 277266969412081485957841418414308370343, // 20^-91
2661 330527984395124299475957654016385519914, // 20^-84
2662 197010030981972396061395200500718069025, // 20^-77
2663 234854258277383322788948059678933702737, // 20^-70
2664 279968092772225526319680285071055534765, // 20^-63
2665 333747974362642200374222141588992517906, // 20^-56
2666 198929294563914656862152899258728336040, // 20^-49
2667 237142198758023568227473377297792835283, // 20^-42
2668 282695530364541492733327600118866962532, // 20^-35
2669 336999333339382997433337688587745383420, // 20^-28
2670 200867255532373784442745261542645325315, // 20^-21
2671 239452428260295134118491722992235809940, // 20^-14
2672 285449538541191976211657193889899027276, // 20^-7
2673 170141183460469231731687303715884105728, // 20^0
2674 202824096036516704239472512860160000000, // 20^7
2675 241785163922925834941235200000000000000, // 20^14
2676 288230376151711744000000000000000000000, // 20^21
2677 171798691840000000000000000000000000000, // 20^28
2678 204800000000000000000000000000000000000, // 20^35
2679 244140625000000000000000000000000000000, // 20^42
2680 291038304567337036132812500000000000000, // 20^49
2681 173472347597680709441192448139190673828, // 20^56
2682 206795153138256918717852173017490713391, // 20^63
2683 246519032881566189191165176650870696772, // 20^70
2684 293873587705571876992184134305561419454, // 20^77
2685 175162308040602133865466197911239516410, // 20^84
2686 208809742975952784854729411496209521782, // 20^91
2687 248920611114445668285762562151204969623, // 20^98
2688 296736492054993710858538820923811161069, // 20^105
2689 176868732008334225927912486150152183216, // 20^112
2690 210843958864610464486971481025400380154, // 20^119
2691 251345585423243599518503524095297312920, // 20^126
2692 299627286700300692937974362486955300474, // 20^133
2693 178591779887855465971216179422709524914, // 20^140
2694 212897992000407535995502685812365442412, // 20^147
2695 253794183731564922327402455583054354682, // 20^154
2696 302546243347602990063908643225496238091, // 20^161
2697 180331613628627651967947866455016278082, // 20^168
2698 214972035442146840057310898846407268146, // 20^175
2699 256266636183436918326986907537468991453, // 20^182
2700 305493636349960468205197939321361769978, // 20^189
2701 182088396757817547443627082897044283139, // 20^196
2702 217066284129402097992452481862359384464, // 20^203
2703 258763175164940474024358370140027266101, // 20^210
2704 308469742733169167070816004443201143863, // 20^217
2705 183862294395666818064937594201088633455, // 20^224
2706 219180934900840303975269310714112083263, // 20^231
2707 ];
2708 const BASE20_LARGE_EXPONENT: [i32; 72] = [
2709 -1277, // 20^-266
2710 -1247, // 20^-259
2711 -1217, // 20^-252
2712 -1186, // 20^-245
2713 -1156, // 20^-238
2714 -1126, // 20^-231
2715 -1096, // 20^-224
2716 -1065, // 20^-217
2717 -1035, // 20^-210
2718 -1005, // 20^-203
2719 -975, // 20^-196
2720 -944, // 20^-189
2721 -914, // 20^-182
2722 -884, // 20^-175
2723 -854, // 20^-168
2724 -823, // 20^-161
2725 -793, // 20^-154
2726 -763, // 20^-147
2727 -733, // 20^-140
2728 -702, // 20^-133
2729 -672, // 20^-126
2730 -642, // 20^-119
2731 -612, // 20^-112
2732 -581, // 20^-105
2733 -551, // 20^-98
2734 -521, // 20^-91
2735 -491, // 20^-84
2736 -460, // 20^-77
2737 -430, // 20^-70
2738 -400, // 20^-63
2739 -370, // 20^-56
2740 -339, // 20^-49
2741 -309, // 20^-42
2742 -279, // 20^-35
2743 -249, // 20^-28
2744 -218, // 20^-21
2745 -188, // 20^-14
2746 -158, // 20^-7
2747 -127, // 20^0
2748 -97, // 20^7
2749 -67, // 20^14
2750 -37, // 20^21
2751 -6, // 20^28
2752 24, // 20^35
2753 54, // 20^42
2754 84, // 20^49
2755 115, // 20^56
2756 145, // 20^63
2757 175, // 20^70
2758 205, // 20^77
2759 236, // 20^84
2760 266, // 20^91
2761 296, // 20^98
2762 326, // 20^105
2763 357, // 20^112
2764 387, // 20^119
2765 417, // 20^126
2766 447, // 20^133
2767 478, // 20^140
2768 508, // 20^147
2769 538, // 20^154
2770 568, // 20^161
2771 599, // 20^168
2772 629, // 20^175
2773 659, // 20^182
2774 689, // 20^189
2775 720, // 20^196
2776 750, // 20^203
2777 780, // 20^210
2778 810, // 20^217
2779 841, // 20^224
2780 871, // 20^231
2781 ];
2782 const BASE20_SMALL_INT_POWERS: [u128; 7] = [1, 20, 400, 8000, 160000, 3200000, 64000000];
2783 const BASE20_STEP: i32 = 7;
2784 const BASE20_BIAS: i32 = 266;
2785
2786 // BASE21
2787
2788 const BASE21_SMALL_MANTISSA: [u128; 7] = [
2789 170141183460469231731687303715884105728, // 21^0
2790 223310303291865866647839586127097888768, // 21^1
2791 293094773070573949975289456791815979008, // 21^2
2792 192343444827564154671283706019629236224, // 21^3
2793 252450771336177953006059864150763372544, // 21^4
2794 331341637378733563320453571697876926464, // 21^5
2795 217442949529793900929047656426731732992, // 21^6
2796 ];
2797 const BASE21_SMALL_EXPONENT: [i32; 7] = [
2798 -127, // 21^0
2799 -123, // 21^1
2800 -119, // 21^2
2801 -114, // 21^3
2802 -110, // 21^4
2803 -106, // 21^5
2804 -101, // 21^6
2805 ];
2806 const BASE21_LARGE_MANTISSA: [u128; 72] = [
2807 265792046637109917415346664544311644566, // 21^-266
2808 222919047571269915259553685343512655124, // 21^-259
2809 186961582932271121624867982904669033286, // 21^-252
2810 313608315425491608924946770674906010971, // 21^-245
2811 263022418727710133477288744271513099136, // 21^-238
2812 220596168374913987040298637494305910349, // 21^-231
2813 185013390634471631571140317809259206000, // 21^-224
2814 310340428541697166126551714455108139315, // 21^-217
2815 260281651120390792657949798157903984485, // 21^-210
2816 218297494233351046265168261721480533031, // 21^-203
2817 183085499048559996047315841365348324923, // 21^-196
2818 307106593958686861611740529249331599561, // 21^-189
2819 257569443082684061423017949935163592863, // 21^-182
2820 216022772923099798407562907443165238977, // 21^-175
2821 181177696635406520735133253192775193924, // 21^-168
2822 303906456841905544859103298218510174905, // 21^-161
2823 254885497015839035366704878377106222377, // 21^-154
2824 213771754848918589809660748287013123679, // 21^-147
2825 179289774060178761532557823153782969422, // 21^-140
2826 300739666054273966520895709937608788747, // 21^-133
2827 252229518422167527105381200194678741672, // 21^-126
2828 211544193016418411141172507362190098875, // 21^-119
2829 177421524169372127003871154186445625381, // 21^-112
2830 297605874117660039208334869188863219128, // 21^-105
2831 249601215872730120248972738434931034589, // 21^-98
2832 209339843004961281067680970866486691183, // 21^-91
2833 175572741968079828414917198043029764862, // 21^-84
2834 294504737174751578579986057113044461622, // 21^-77
2835 247000300975358943781849899984000214119, // 21^-70
2836 207158462940841036386486635842909509778, // 21^-63
2837 173743224597499683284324187350601048284, // 21^-56
2838 291435914951326341195521446658582144907, // 21^-49
2839 244426488343013658131803347774089798564, // 21^-42
2840 204999813470743585875109991683322467328, // 21^-35
2841 171932771312675304370424739613867083896, // 21^-28
2842 288399070718915219190771894363169343679, // 21^-21
2843 241879495562467180767563428674995339169, // 21^-14
2844 202863657735483715761934442388454879916, // 21^-7
2845 170141183460469231731687303715884105728, // 21^0
2846 285393871257854494969375049060085399552, // 21^7
2847 239359043163317715346200180609446313984, // 21^14
2848 200749761344015565073276401119215484928, // 21^21
2849 336736528915531181897146582027467512352, // 21^28
2850 282419986820723101796180638245767114566, // 21^35
2851 236864854587323684235605162154192799609, // 21^42
2852 198657892347713919139770232958888414539, // 21^49
2853 333227639539799771559276379603105082665, // 21^56
2854 279477091096160878422591085338554667498, // 21^63
2855 234396656158058199668034426556911280906, // 21^70
2856 196587821214923499260650393397155679946, // 21^77
2857 329755313778627116894330266634709348105, // 21^84
2858 276564861173063847678827937275753188756, // 21^91
2859 231954177050879743842271364358265802922, // 21^98
2860 194539320805773455930561882331086488568, // 21^105
2861 326319170628861950820780822968026849107, // 21^112
2862 273682977505152590337309001442167333935, // 21^119
2863 229537149263215762988196018745023784859, // 21^126
2864 192512166347254302133159603748230049238, // 21^133
2865 322918833057513041780316846850363342758, // 21^140
2866 270831123875909826489436864951365328546, // 21^147
2867 227145307585155914742230901032159391581, // 21^154
2868 190506135408554552002160365053046193282, // 21^161
2869 319553927960379009120613001977483142041, // 21^168
2870 268008987363883357189628558586004761583, // 21^175
2871 224778389570351742159039695242233732277, // 21^182
2872 188521007876654358646847770858984158583, // 21^189
2873 316224086121109227441755855330741121363, // 21^196
2874 265216258308350559209803685525363124313, // 21^203
2875 222436135507219581307712678266362793773, // 21^210
2876 186556565932173473138426942632517671964, // 21^217
2877 312928942170691327838033505846831903751, // 21^224
2878 262452630275340665419193194878653363790, // 21^231
2879 ];
2880 const BASE21_LARGE_EXPONENT: [i32; 72] = [
2881 -1296, // 21^-266
2882 -1265, // 21^-259
2883 -1234, // 21^-252
2884 -1204, // 21^-245
2885 -1173, // 21^-238
2886 -1142, // 21^-231
2887 -1111, // 21^-224
2888 -1081, // 21^-217
2889 -1050, // 21^-210
2890 -1019, // 21^-203
2891 -988, // 21^-196
2892 -958, // 21^-189
2893 -927, // 21^-182
2894 -896, // 21^-175
2895 -865, // 21^-168
2896 -835, // 21^-161
2897 -804, // 21^-154
2898 -773, // 21^-147
2899 -742, // 21^-140
2900 -712, // 21^-133
2901 -681, // 21^-126
2902 -650, // 21^-119
2903 -619, // 21^-112
2904 -589, // 21^-105
2905 -558, // 21^-98
2906 -527, // 21^-91
2907 -496, // 21^-84
2908 -466, // 21^-77
2909 -435, // 21^-70
2910 -404, // 21^-63
2911 -373, // 21^-56
2912 -343, // 21^-49
2913 -312, // 21^-42
2914 -281, // 21^-35
2915 -250, // 21^-28
2916 -220, // 21^-21
2917 -189, // 21^-14
2918 -158, // 21^-7
2919 -127, // 21^0
2920 -97, // 21^7
2921 -66, // 21^14
2922 -35, // 21^21
2923 -5, // 21^28
2924 26, // 21^35
2925 57, // 21^42
2926 88, // 21^49
2927 118, // 21^56
2928 149, // 21^63
2929 180, // 21^70
2930 211, // 21^77
2931 241, // 21^84
2932 272, // 21^91
2933 303, // 21^98
2934 334, // 21^105
2935 364, // 21^112
2936 395, // 21^119
2937 426, // 21^126
2938 457, // 21^133
2939 487, // 21^140
2940 518, // 21^147
2941 549, // 21^154
2942 580, // 21^161
2943 610, // 21^168
2944 641, // 21^175
2945 672, // 21^182
2946 703, // 21^189
2947 733, // 21^196
2948 764, // 21^203
2949 795, // 21^210
2950 826, // 21^217
2951 856, // 21^224
2952 887, // 21^231
2953 ];
2954 const BASE21_SMALL_INT_POWERS: [u128; 7] = [1, 21, 441, 9261, 194481, 4084101, 85766121];
2955 const BASE21_STEP: i32 = 7;
2956 const BASE21_BIAS: i32 = 266;
2957
2958 // BASE22
2959
2960 const BASE22_SMALL_MANTISSA: [u128; 7] = [
2961 170141183460469231731687303715884105728, // 22^0
2962 233944127258145193631070042609340645376, // 22^1
2963 321673174979949641242721308587843387392, // 22^2
2964 221150307798715378354370899654142328832, // 22^3
2965 304081673223233645237259987024445702144, // 22^4
2966 209056150340973131100616241079306420224, // 22^5
2967 287452206718838055263347331484046327808, // 22^6
2968 ];
2969 const BASE22_SMALL_EXPONENT: [i32; 7] = [
2970 -127, // 22^0
2971 -123, // 22^1
2972 -119, // 22^2
2973 -114, // 22^3
2974 -110, // 22^4
2975 -105, // 22^5
2976 -101, // 22^6
2977 ];
2978 const BASE22_LARGE_MANTISSA: [u128; 70] = [
2979 170993699408656992611557257796811971606, // 22^-259
2980 198613611477559667549559644399735817047, // 22^-252
2981 230694854843066209807480559654047740794, // 22^-245
2982 267958050080955588510051414081700394572, // 22^-238
2983 311240216657766425412953324616068813788, // 22^-231
2984 180756787183491671385793896073455879749, // 22^-224
2985 209953690842110549054787911387661891558, // 22^-217
2986 243866650791248218437107825156701479612, // 22^-210
2987 283257432291885574825362738029166670391, // 22^-203
2988 329010845428281790557809997379933231677, // 22^-196
2989 191077310017213090920037889613280023761, // 22^-189
2990 221941245467987325560887198530024987097, // 22^-182
2991 257790506028392555656294807759853932728, // 22^-175
2992 299430350849140679073407301022315056449, // 22^-168
2993 173898054647064197545039940705011138943, // 22^-161
2994 201987095324676314922450395008827008097, // 22^-154
2995 234613243722037545951821958217296505941, // 22^-147
2996 272509360270263083361596599896866808472, // 22^-140
2997 316526681344939644363801942778159729297, // 22^-133
2998 183826970023851061892407973678416422311, // 22^-126
2999 213519787744680626489456759979414929795, // 22^-119
3000 248008764723795396613310192753363562635, // 22^-112
3001 288068604926548520494484698905215058937, // 22^-105
3002 334599147077506390730919115808572688418, // 22^-98
3003 194322788582847037606425160078121997271, // 22^-91
3004 225710952896522753756036626884027523975, // 22^-84
3005 262169118861406100263284327408804984594, // 22^-77
3006 304516223083230613247976703037939646270, // 22^-70
3007 176851740822108453297561032060281913714, // 22^-63
3008 205417878332621336576645714920472857997, // 22^-56
3009 238598187060653380400994399373084663429, // 22^-49
3010 277137975188549744820727493204211809261, // 22^-42
3011 321902937477411396463387072352875080544, // 22^-35
3012 186949300409097210175717446748311788922, // 22^-28
3013 217146455371525722164937611369356262209, // 22^-21
3014 252221233121680633945860233133208134270, // 22^-14
3015 292961496095243353908740467141073506540, // 22^-7
3016 170141183460469231731687303715884105728, // 22^0
3017 197623392119201162993551290395281850368, // 22^7
3018 229544689406569328704727047276706398208, // 22^14
3019 266622103131276669014944105065242165248, // 22^21
3020 309688479667831891620434363534947647488, // 22^28
3021 179855595827611186243917689814617910464, // 22^35
3022 208906933736774069538597567757512183241, // 22^42
3023 242650815297018604365857953016443636978, // 22^49
3024 281845207868958552685905724295461354592, // 22^56
3025 327370510177191550022527822209865447333, // 22^63
3026 190124664073591590972067520727552350138, // 22^70
3027 220834722526051754798575401303998056567, // 22^77
3028 256505250966711193359488809204377717494, // 22^84
3029 297937493800295372760917121026044042670, // 22^91
3030 173031058579617612943075122066206208260, // 22^98
3031 200980056932689281584830175015332323410, // 22^105
3032 233443542542281837469979323535186565406, // 22^112
3033 271150722048713022289973166238934106646, // 22^119
3034 314948587854906379895896832699151980516, // 22^126
3035 182910471789153927982518189465009158829, // 22^133
3036 212455251303071888680280266327561854998, // 22^140
3037 246772278069909496307705991140052073087, // 22^147
3038 286632393646709698979385809127728921005, // 22^154
3039 332930950470730393610585733499849696474, // 22^161
3040 193353961796034982060992467369794830962, // 22^168
3041 224585635486054469192295827945894724481, // 22^175
3042 260862033537650797156363766298784568546, // 22^182
3043 302998009619470597652934458975103615488, // 22^189
3044 175970018688269509849993361647138860754, // 22^196
3045 204393735233038880379975139336743154541, // 22^203
3046 237408618319925875163860351801153447367, // 22^210
3047 275756260280259146490263920764281465178, // 22^217
3048 320298039817924375055421761218548035863, // 22^224
3049 ];
3050 const BASE22_LARGE_EXPONENT: [i32; 70] = [
3051 -1282, // 22^-259
3052 -1251, // 22^-252
3053 -1220, // 22^-245
3054 -1189, // 22^-238
3055 -1158, // 22^-231
3056 -1126, // 22^-224
3057 -1095, // 22^-217
3058 -1064, // 22^-210
3059 -1033, // 22^-203
3060 -1002, // 22^-196
3061 -970, // 22^-189
3062 -939, // 22^-182
3063 -908, // 22^-175
3064 -877, // 22^-168
3065 -845, // 22^-161
3066 -814, // 22^-154
3067 -783, // 22^-147
3068 -752, // 22^-140
3069 -721, // 22^-133
3070 -689, // 22^-126
3071 -658, // 22^-119
3072 -627, // 22^-112
3073 -596, // 22^-105
3074 -565, // 22^-98
3075 -533, // 22^-91
3076 -502, // 22^-84
3077 -471, // 22^-77
3078 -440, // 22^-70
3079 -408, // 22^-63
3080 -377, // 22^-56
3081 -346, // 22^-49
3082 -315, // 22^-42
3083 -284, // 22^-35
3084 -252, // 22^-28
3085 -221, // 22^-21
3086 -190, // 22^-14
3087 -159, // 22^-7
3088 -127, // 22^0
3089 -96, // 22^7
3090 -65, // 22^14
3091 -34, // 22^21
3092 -3, // 22^28
3093 29, // 22^35
3094 60, // 22^42
3095 91, // 22^49
3096 122, // 22^56
3097 153, // 22^63
3098 185, // 22^70
3099 216, // 22^77
3100 247, // 22^84
3101 278, // 22^91
3102 310, // 22^98
3103 341, // 22^105
3104 372, // 22^112
3105 403, // 22^119
3106 434, // 22^126
3107 466, // 22^133
3108 497, // 22^140
3109 528, // 22^147
3110 559, // 22^154
3111 590, // 22^161
3112 622, // 22^168
3113 653, // 22^175
3114 684, // 22^182
3115 715, // 22^189
3116 747, // 22^196
3117 778, // 22^203
3118 809, // 22^210
3119 840, // 22^217
3120 871, // 22^224
3121 ];
3122 const BASE22_SMALL_INT_POWERS: [u128; 7] = [1, 22, 484, 10648, 234256, 5153632, 113379904];
3123 const BASE22_STEP: i32 = 7;
3124 const BASE22_BIAS: i32 = 259;
3125
3126 // BASE23
3127
3128 const BASE23_SMALL_MANTISSA: [u128; 7] = [
3129 170141183460469231731687303715884105728, // 23^0
3130 244577951224424520614300499091583401984, // 23^1
3131 175790402442555124191528483722075570176, // 23^2
3132 252698703511172991025322195350483632128, // 23^3
3133 181627193148655587299450327908160110592, // 23^4
3134 261089090151192406742959846367980158976, // 23^5
3135 187657783546169542346502389576985739264, // 23^6
3136 ];
3137 const BASE23_SMALL_EXPONENT: [i32; 7] = [
3138 -127, // 23^0
3139 -123, // 23^1
3140 -118, // 23^2
3141 -114, // 23^3
3142 -109, // 23^4
3143 -105, // 23^5
3144 -100, // 23^6
3145 ];
3146 const BASE23_LARGE_MANTISSA: [u128; 69] = [
3147 177660070384959299518117426820409879479, // 23^-252
3148 281679224484842507661590842703493245235, // 23^-245
3149 223300557447880794264720046366338636067, // 23^-238
3150 177021003404592607294928857171705382014, // 23^-231
3151 280665986726726659567026238400885338462, // 23^-224
3152 222497315545222527698408099502330410230, // 23^-217
3153 176384235233432227183413281705333529169, // 23^-210
3154 279656393720034524921314175179274359595, // 23^-203
3155 221696963010873772243653930801015609536, // 23^-196
3156 175749757602354687973874432000535316950, // 23^-189
3157 278650432354108872233513992865613552171, // 23^-182
3158 220899489451391157505367921930602163472, // 23^-175
3159 175117562271981659025201047697761937562, // 23^-168
3160 277648089565453253577594524944387660343, // 23^-161
3161 220104884510717915806439152820624263438, // 23^-154
3162 174487641032572953025011241897191693675, // 23^-147
3163 276649352337562360960754521131809259049, // 23^-140
3164 219313137870049397588841701361789229875, // 23^-133
3165 173859985703919913633146478806481352851, // 23^-126
3166 275654207700752992922523689325318624601, // 23^-119
3167 218524239247699070573788964393354746146, // 23^-112
3168 173234588135239186624038395745277208596, // 23^-105
3169 274662642731995629169562809047557585825, // 23^-98
3170 217738178398965000940790150805824878955, // 23^-91
3171 172611440205066873148451849294509762826, // 23^-84
3172 273674644554746611058977369746265857416, // 23^-77
3173 216954945115996814791722634413562231827, // 23^-70
3174 171990533821153063740069798803230423676, // 23^-63
3175 272690200338780925750826785583705218666, // 23^-56
3176 216174529227663138172270874689475697712, // 23^-49
3177 171371860920356751697330024074687407971, // 23^-42
3178 271709297300025591858350535820526217684, // 23^-35
3179 215396920599419513929297198496715326537, // 23^-28
3180 170755413468541124475850272054650469150, // 23^-21
3181 270731922700393644432243678371210997948, // 23^-14
3182 214622109133176793688901966303396671549, // 23^-7
3183 170141183460469231731687303715884105728, // 23^0
3184 269758063847618717123097185016917000192, // 23^7
3185 213850084767170003246100602438595641344, // 23^14
3186 339058325839400057321133061640411938816, // 23^21
3187 268787708095090219373873551177395072962, // 23^28
3188 213080837475827679663192730864754774513, // 23^35
3189 337838687796969586566185112723027994705, // 23^42
3190 267820842841689106502015241773782572538, // 23^49
3191 212314357269641678380024305538561269739, // 23^56
3192 336623436955327832661614051077606366471, // 23^63
3193 266857455531624240538482847903341038248, // 23^70
3194 211550634195037448645447237257455979321, // 23^77
3195 335412557533128124785597638278283462337, // 23^84
3196 265897533654269339698691446779528819034, // 23^91
3197 210789658334244775585362676204225495858, // 23^98
3198 334206033805791401974785682123232789907, // 23^105
3199 264941064744000514367957679290425962065, // 23^112
3200 210031419805168987228793890184514974036, // 23^119
3201 333003850105302012456495057986285588216, // 23^126
3202 263988036380034387491686584861354377998, // 23^133
3203 209275908761262624819472661494385533289, // 23^140
3204 331805990820004247517955628678622148639, // 23^147
3205 263038436186266797268116360982380732098, // 23^154
3206 208523115391397574746439388866966551936, // 23^161
3207 330612440394399607270379273154482344971, // 23^168
3208 262092251831112080049001043331284413642, // 23^175
3209 207773029919737660433151703156509162570, // 23^182
3210 329423183328944795675128680336602321085, // 23^189
3211 261149471027342931361145730086041639640, // 23^196
3212 207025642605611692530569464171386341133, // 23^203
3213 328238204179850442208732821518504518810, // 23^210
3214 260210081531930842969216498623209392426, // 23^217
3215 206280943743386975765635578931435897048, // 23^224
3216 ];
3217 const BASE23_LARGE_EXPONENT: [i32; 69] = [
3218 -1267, // 23^-252
3219 -1236, // 23^-245
3220 -1204, // 23^-238
3221 -1172, // 23^-231
3222 -1141, // 23^-224
3223 -1109, // 23^-217
3224 -1077, // 23^-210
3225 -1046, // 23^-203
3226 -1014, // 23^-196
3227 -982, // 23^-189
3228 -951, // 23^-182
3229 -919, // 23^-175
3230 -887, // 23^-168
3231 -856, // 23^-161
3232 -824, // 23^-154
3233 -792, // 23^-147
3234 -761, // 23^-140
3235 -729, // 23^-133
3236 -697, // 23^-126
3237 -666, // 23^-119
3238 -634, // 23^-112
3239 -602, // 23^-105
3240 -571, // 23^-98
3241 -539, // 23^-91
3242 -507, // 23^-84
3243 -476, // 23^-77
3244 -444, // 23^-70
3245 -412, // 23^-63
3246 -381, // 23^-56
3247 -349, // 23^-49
3248 -317, // 23^-42
3249 -286, // 23^-35
3250 -254, // 23^-28
3251 -222, // 23^-21
3252 -191, // 23^-14
3253 -159, // 23^-7
3254 -127, // 23^0
3255 -96, // 23^7
3256 -64, // 23^14
3257 -33, // 23^21
3258 -1, // 23^28
3259 31, // 23^35
3260 62, // 23^42
3261 94, // 23^49
3262 126, // 23^56
3263 157, // 23^63
3264 189, // 23^70
3265 221, // 23^77
3266 252, // 23^84
3267 284, // 23^91
3268 316, // 23^98
3269 347, // 23^105
3270 379, // 23^112
3271 411, // 23^119
3272 442, // 23^126
3273 474, // 23^133
3274 506, // 23^140
3275 537, // 23^147
3276 569, // 23^154
3277 601, // 23^161
3278 632, // 23^168
3279 664, // 23^175
3280 696, // 23^182
3281 727, // 23^189
3282 759, // 23^196
3283 791, // 23^203
3284 822, // 23^210
3285 854, // 23^217
3286 886, // 23^224
3287 ];
3288 const BASE23_SMALL_INT_POWERS: [u128; 7] = [1, 23, 529, 12167, 279841, 6436343, 148035889];
3289 const BASE23_STEP: i32 = 7;
3290 const BASE23_BIAS: i32 = 252;
3291
3292 // BASE24
3293
3294 const BASE24_SMALL_MANTISSA: [u128; 7] = [
3295 170141183460469231731687303715884105728, // 24^0
3296 255211775190703847597530955573826158592, // 24^1
3297 191408831393027885698148216680369618944, // 24^2
3298 287113247089541828547222325020554428416, // 24^3
3299 215334935317156371410416743765415821312, // 24^4
3300 323002402975734557115625115648123731968, // 24^5
3301 242251802231800917836718836736092798976, // 24^6
3302 ];
3303 const BASE24_SMALL_EXPONENT: [i32; 7] = [
3304 -127, // 24^0
3305 -123, // 24^1
3306 -118, // 24^2
3307 -114, // 24^3
3308 -109, // 24^4
3309 -105, // 24^5
3310 -100, // 24^6
3311 ];
3312 const BASE24_LARGE_MANTISSA: [u128; 68] = [
3313 256006814417050404626793229969178591795, // 24^-252
3314 273382276918988884237693747042282021609, // 24^-245
3315 291937031065346039954998156631577529912, // 24^-238
3316 311751116669878803408975082301396512655, // 24^-231
3317 332910005936047335476283449703688561122, // 24^-224
3318 177752486079622930343415992310050508587, // 24^-217
3319 189816741726628588213403698819375225722, // 24^-210
3320 202699811599676133995465766268541805984, // 24^-203
3321 216457269515865090355509585365869594574, // 24^-196
3322 231148461148045387015380597263260157877, // 24^-189
3323 246836760024792608106756526472045881483, // 24^-182
3324 263589840905381559535877208688654464260, // 24^-175
3325 281479971709018296242657937208050445965, // 24^-168
3326 300584325257628424747408646813479651038, // 24^-161
3327 320985312176969416466104839150917967197, // 24^-154
3328 171385468196052762160979317193129295473, // 24^-147
3329 183017587375374702561553597022155160742, // 24^-140
3330 195439191206027575440487166351295574484, // 24^-133
3331 208703862874796048578293668364396201854, // 24^-126
3332 222868822317958475703480592144987545632, // 24^-119
3333 237995173051452727716558620615765508935, // 24^-112
3334 254148165753675349373102394182948812519, // 24^-105
3335 271397479737933588417468230506889186025, // 24^-98
3336 289817523528740604428224130917268871991, // 24^-91
3337 309487755838552588810803796052767101096, // 24^-84
3338 330493028329548101430287061507520336961, // 24^-77
3339 176461975819512133258798291874254633040, // 24^-70
3340 188438643123668474334468683754392032451, // 24^-63
3341 201228179937237770199942876645925476060, // 24^-56
3342 214885756602899904017224155871405769601, // 24^-49
3343 229470287934835004924643178169318563534, // 24^-42
3344 245044687360099685434665347000146337133, // 24^-35
3345 261676138308856451194147028266269550444, // 24^-28
3346 279436384024154813848437280673013431065, // 24^-21
3347 298402037041419227483658365640566588740, // 24^-14
3348 318654909672648364505254319167929262488, // 24^-7
3349 170141183460469231731687303715884105728, // 24^0
3350 181688851673850688377539127552069599232, // 24^7
3351 194020272759136452871913121072449323008, // 24^14
3352 207188640880972374233825193254612631552, // 24^21
3353 221250760550139932836609227367108313088, // 24^28
3354 236267291661697281793781435669856387072, // 24^35
3355 252303011164126931290527343657214803968, // 24^42
3356 269427092488254686881046533485512097792, // 24^49
3357 287713403941314941508226937857819803648, // 24^56
3358 307240827353347547401607574753443315712, // 24^63
3359 328093598350474163167634651360244400128, // 24^70
3360 175180834861447020226468989874232056416, // 24^77
3361 187070549727531559196917812917453861026, // 24^84
3362 199767232545952890607255496509019333039, // 24^91
3363 213325653114257310428744028742785781912, // 24^98
3364 227804298516055047806476167412340090352, // 24^105
3365 243265625417291205836310243227923719532, // 24^112
3366 259776329486140560138677002900131432918, // 24^119
3367 277407633098725295421526662764935275289, // 24^126
3368 296235592571734482952577544661578831571, // 24^133
3369 316341426247257477645159711999449660471, // 24^140
3370 337811864845093800590802876046287308325, // 24^147
3371 180369762796928745579122531717097251784, // 24^154
3372 192611655877384358682393055110005707838, // 24^161
3373 205684419630781050995309380627725821797, // 24^168
3374 219644446158456132093135554410564634898, // 24^175
3375 234551954955343535589691141355422293223, // 24^182
3376 250471252679363433757155530343900661758, // 24^189
3377 267471010551644448060009348077202513313, // 24^196
3378 285624560584202347610957248166426707331, // 24^203
3379 305010211912915299914630616083972269987, // 24^210
3380 325711588600364141070945877624827809796, // 24^217
3381 ];
3382 const BASE24_LARGE_EXPONENT: [i32; 68] = [
3383 -1283, // 24^-252
3384 -1251, // 24^-245
3385 -1219, // 24^-238
3386 -1187, // 24^-231
3387 -1155, // 24^-224
3388 -1122, // 24^-217
3389 -1090, // 24^-210
3390 -1058, // 24^-203
3391 -1026, // 24^-196
3392 -994, // 24^-189
3393 -962, // 24^-182
3394 -930, // 24^-175
3395 -898, // 24^-168
3396 -866, // 24^-161
3397 -834, // 24^-154
3398 -801, // 24^-147
3399 -769, // 24^-140
3400 -737, // 24^-133
3401 -705, // 24^-126
3402 -673, // 24^-119
3403 -641, // 24^-112
3404 -609, // 24^-105
3405 -577, // 24^-98
3406 -545, // 24^-91
3407 -513, // 24^-84
3408 -481, // 24^-77
3409 -448, // 24^-70
3410 -416, // 24^-63
3411 -384, // 24^-56
3412 -352, // 24^-49
3413 -320, // 24^-42
3414 -288, // 24^-35
3415 -256, // 24^-28
3416 -224, // 24^-21
3417 -192, // 24^-14
3418 -160, // 24^-7
3419 -127, // 24^0
3420 -95, // 24^7
3421 -63, // 24^14
3422 -31, // 24^21
3423 1, // 24^28
3424 33, // 24^35
3425 65, // 24^42
3426 97, // 24^49
3427 129, // 24^56
3428 161, // 24^63
3429 193, // 24^70
3430 226, // 24^77
3431 258, // 24^84
3432 290, // 24^91
3433 322, // 24^98
3434 354, // 24^105
3435 386, // 24^112
3436 418, // 24^119
3437 450, // 24^126
3438 482, // 24^133
3439 514, // 24^140
3440 546, // 24^147
3441 579, // 24^154
3442 611, // 24^161
3443 643, // 24^168
3444 675, // 24^175
3445 707, // 24^182
3446 739, // 24^189
3447 771, // 24^196
3448 803, // 24^203
3449 835, // 24^210
3450 867, // 24^217
3451 ];
3452 const BASE24_SMALL_INT_POWERS: [u128; 7] = [1, 24, 576, 13824, 331776, 7962624, 191102976];
3453 const BASE24_STEP: i32 = 7;
3454 const BASE24_BIAS: i32 = 252;
3455
3456 // BASE25
3457
3458 const BASE25_SMALL_MANTISSA: [u128; 7] = [
3459 170141183460469231731687303715884105728, // 25^0
3460 265845599156983174580761412056068915200, // 25^1
3461 207691874341393105141219853168803840000, // 25^2
3462 324518553658426726783156020576256000000, // 25^3
3463 253530120045645880299340641075200000000, // 25^4
3464 198070406285660843983859875840000000000, // 25^5
3465 309485009821345068724781056000000000000, // 25^6
3466 ];
3467 const BASE25_SMALL_EXPONENT: [i32; 7] = [
3468 -127, // 25^0
3469 -123, // 25^1
3470 -118, // 25^2
3471 -114, // 25^3
3472 -109, // 25^4
3473 -104, // 25^5
3474 -100, // 25^6
3475 ];
3476 const BASE25_LARGE_MANTISSA: [u128; 68] = [
3477 285793394306920833441610418092098634655, // 25^-252
3478 203068420253004570555511362849258201390, // 25^-245
3479 288577581746103207017755725657449092679, // 25^-238
3480 205046704412910121830119952091883627559, // 25^-231
3481 291388892624283530821742192659774598780, // 25^-224
3482 207044260935364498850036477975162511299, // 25^-217
3483 294227591176883860910658765384315687611, // 25^-210
3484 209061277570927374050781655074839937648, // 25^-203
3485 297093944213496817569054052050375869453, // 25^-196
3486 211097943899216614887176072592734406508, // 25^-189
3487 299988221142963048588365030287739055137, // 25^-182
3488 213154451346726893197828921904416471830, // 25^-175
3489 302910693998692996157485768413290076965, // 25^-168
3490 215230993204821882725842221200657943544, // 25^-161
3491 305861637464235347360161968596028634045, // 25^-154
3492 217327764647901735884376228537482684576, // 25^-147
3493 308841328899094571460716776609676066664, // 25^-140
3494 219444962751747547330237450047488370802, // 25^-133
3495 311850048364799970571308236412006025948, // 25^-126
3496 221582786512044528543660416923448526878, // 25^-119
3497 314888078651228693933689466069052580904, // 25^-112
3498 223741436863085634409521749481834675708, // 25^-105
3499 317955705303185189918510999237120523316, // 25^-98
3500 225921116696657399755928707376370229068, // 25^-91
3501 321053216647239593947814323906257853121, // 25^-84
3502 228122030881109760932058580285014566244, // 25^-77
3503 324180903818827574883781864350871964922, // 25^-70
3504 230344386280611654799899571593522271174, // 25^-63
3505 327339060789614187001318969682759915221, // 25^-56
3506 232588391774594204975783618524161450993, // 25^-49
3507 330527984395124299475957654016385519914, // 25^-42
3508 234854258277383322788948059678933702737, // 25^-35
3509 333747974362642200374222141588992517906, // 25^-28
3510 237142198758023568227473377297792835283, // 25^-21
3511 336999333339382997433337688587745383420, // 25^-14
3512 239452428260295134118491722992235809940, // 25^-7
3513 170141183460469231731687303715884105728, // 25^0
3514 241785163922925834941235200000000000000, // 25^7
3515 171798691840000000000000000000000000000, // 25^14
3516 244140625000000000000000000000000000000, // 25^21
3517 173472347597680709441192448139190673828, // 25^28
3518 246519032881566189191165176650870696772, // 25^35
3519 175162308040602133865466197911239516410, // 25^42
3520 248920611114445668285762562151204969623, // 25^49
3521 176868732008334225927912486150152183216, // 25^56
3522 251345585423243599518503524095297312920, // 25^63
3523 178591779887855465971216179422709524914, // 25^70
3524 253794183731564922327402455583054354682, // 25^77
3525 180331613628627651967947866455016278082, // 25^84
3526 256266636183436918326986907537468991453, // 25^91
3527 182088396757817547443627082897044283139, // 25^98
3528 258763175164940474024358370140027266101, // 25^105
3529 183862294395666818064937594201088633455, // 25^112
3530 261284035326052074402891767876281837538, // 25^119
3531 185653473271011701515143789632334288014, // 25^126
3532 263829453602698580304979415177988198613, // 25^133
3533 187462101736953869352205554703508169192, // 25^140
3534 266399669239026862544798113253119949479, // 25^147
3535 189288349786683953755640255602884245064, // 25^154
3536 268994923809890385876486015494726082500, // 25^161
3537 191132389069459226417170338759437756337, // 25^168
3538 271615461243554856334256923502490730495, // 25^175
3539 192994392906736931318972184714148973580, // 25^182
3540 274261527844625066050770363850331497104, // 25^189
3541 194874536308464787773268059716493991903, // 25^196
3542 276933372317195090450451374005771742621, // 25^203
3543 196772995989530194869453349330805553038, // 25^210
3544 279631245788224013707368483964622716141, // 25^217
3545 ];
3546 const BASE25_LARGE_EXPONENT: [i32; 68] = [
3547 -1298, // 25^-252
3548 -1265, // 25^-245
3549 -1233, // 25^-238
3550 -1200, // 25^-231
3551 -1168, // 25^-224
3552 -1135, // 25^-217
3553 -1103, // 25^-210
3554 -1070, // 25^-203
3555 -1038, // 25^-196
3556 -1005, // 25^-189
3557 -973, // 25^-182
3558 -940, // 25^-175
3559 -908, // 25^-168
3560 -875, // 25^-161
3561 -843, // 25^-154
3562 -810, // 25^-147
3563 -778, // 25^-140
3564 -745, // 25^-133
3565 -713, // 25^-126
3566 -680, // 25^-119
3567 -648, // 25^-112
3568 -615, // 25^-105
3569 -583, // 25^-98
3570 -550, // 25^-91
3571 -518, // 25^-84
3572 -485, // 25^-77
3573 -453, // 25^-70
3574 -420, // 25^-63
3575 -388, // 25^-56
3576 -355, // 25^-49
3577 -323, // 25^-42
3578 -290, // 25^-35
3579 -258, // 25^-28
3580 -225, // 25^-21
3581 -193, // 25^-14
3582 -160, // 25^-7
3583 -127, // 25^0
3584 -95, // 25^7
3585 -62, // 25^14
3586 -30, // 25^21
3587 3, // 25^28
3588 35, // 25^35
3589 68, // 25^42
3590 100, // 25^49
3591 133, // 25^56
3592 165, // 25^63
3593 198, // 25^70
3594 230, // 25^77
3595 263, // 25^84
3596 295, // 25^91
3597 328, // 25^98
3598 360, // 25^105
3599 393, // 25^112
3600 425, // 25^119
3601 458, // 25^126
3602 490, // 25^133
3603 523, // 25^140
3604 555, // 25^147
3605 588, // 25^154
3606 620, // 25^161
3607 653, // 25^168
3608 685, // 25^175
3609 718, // 25^182
3610 750, // 25^189
3611 783, // 25^196
3612 815, // 25^203
3613 848, // 25^210
3614 880, // 25^217
3615 ];
3616 const BASE25_SMALL_INT_POWERS: [u128; 7] = [1, 25, 625, 15625, 390625, 9765625, 244140625];
3617 const BASE25_STEP: i32 = 7;
3618 const BASE25_BIAS: i32 = 252;
3619
3620 // BASE26
3621
3622 const BASE26_SMALL_MANTISSA: [u128; 7] = [
3623 170141183460469231731687303715884105728, // 26^0
3624 276479423123262501563991868538311671808, // 26^1
3625 224639531287650782520743393187378233344, // 26^2
3626 182519619171216260798104006964744814592, // 26^3
3627 296594381153226423796919011317710323712, // 26^4
3628 240982934686996469334996696695639638016, // 26^5
3629 195798634433184631334684816065207205888, // 26^6
3630 ];
3631 const BASE26_SMALL_EXPONENT: [i32; 7] = [
3632 -127, // 26^0
3633 -123, // 26^1
3634 -118, // 26^2
3635 -113, // 26^3
3636 -109, // 26^4
3637 -104, // 26^5
3638 -99, // 26^6
3639 ];
3640 const BASE26_LARGE_MANTISSA: [u128; 67] = [
3641 223302816785416365261501121183664506010, // 26^-245
3642 208793887424582006747864373745206480886, // 26^-238
3643 195227664627991173689253365541181602096, // 26^-231
3644 182542896759209079117924981191278218615, // 26^-224
3645 170682311959929403775713752016508602388, // 26^-217
3646 319184719133881733167774634228398630548, // 26^-210
3647 298445936660656380797439373851559361096, // 26^-203
3648 279054640682520272457995982566385389064, // 26^-196
3649 260923279297292454826462160021044868443, // 26^-189
3650 243969989220528359050303591757077787596, // 26^-182
3651 228118226171942658526451569535286060353, // 26^-175
3652 213296419277190995686832685182416132955, // 26^-168
3653 199437647924631042854519895051784617004, // 26^-161
3654 186479339618067826498814972661362929947, // 26^-154
3655 174362987461285330626576271532417342855, // 26^-147
3656 326067771997608226855765039505019953527, // 26^-140
3657 304881768440366443726402955195105316329, // 26^-133
3658 285072309225356538301642822964643005408, // 26^-126
3659 266549954439052068809893515776468694564, // 26^-119
3660 249231075457753005677502945704601914895, // 26^-112
3661 233037477363483566918311865718592557833, // 26^-105
3662 217896045893127676516686822732460831572, // 26^-98
3663 203738417326773735777703283427712394918, // 26^-91
3664 190500669824811165252338688092226229364, // 26^-84
3665 178123034820162511238845936350714491622, // 26^-77
3666 333099254325168111301464298292509503356, // 26^-70
3667 311456385593267303107050428484389238716, // 26^-63
3668 291219745668138391592456499213129019442, // 26^-56
3669 272297965910924348580716754684381379181, // 26^-49
3670 254605614290044560620651113294031241626, // 26^-42
3671 238062809654687405271268739306918462570, // 26^-35
3672 222594861070586991002412082254420837256, // 26^-28
3673 208131930589681357218231284385128680344, // 26^-21
3674 194608717931053648412097371491373800423, // 26^-14
3675 181964165649487446029462142596867446143, // 26^-7
3676 170141183460469231731687303715884105728, // 26^0
3677 318172780953925025918862826105961709568, // 26^7
3678 297499748388299952530789444812804194304, // 26^14
3679 278169930267914565987548746187341299712, // 26^21
3680 260096052263752396381159488684908609536, // 26^28
3681 243196510629429753543644020787720315589, // 26^35
3682 227395003759435617782759026890197718352, // 26^42
3683 212620187686592486096128182198450396409, // 26^49
3684 198805353963305641500281734389939339052, // 26^56
3685 185888128472231349675004689621278542958, // 26^63
3686 173810189806491030350550655153103473999, // 26^70
3687 325034011895830307254166714675296871096, // 26^77
3688 303915176108832810280521264920190203131, // 26^84
3689 284168520489679119677023043643028417295, // 26^91
3690 265704888683728554332237168601547339173, // 26^98
3691 248440917202145588620033973783642939305, // 26^105
3692 232298659034884347081172590621418853088, // 26^112
3693 217205231719130933968079964556427917884, // 26^119
3694 203092488274228969742684708734280089507, // 26^126
3695 189896709517356115129460946793154219973, // 26^133
3696 177558316370753675479515454481338457101, // 26^140
3697 332043201723146894831623394706398020929, // 26^147
3698 310468949199606660363664220576467010752, // 26^154
3699 290296467197293861525395669447395056845, // 26^161
3700 271434676751037481783657313824389119896, // 26^168
3701 253798416681617203255579043607175584203, // 26^175
3702 237308059092157195001470401326248026898, // 26^182
3703 221889149847346996027560241559399617642, // 26^189
3704 207472072412249451654170398205728730819, // 26^196
3705 193991733532924439390933354984357040572, // 26^203
3706 181387269339713144970498252974494732833, // 26^210
3707 339203541092472346195720855153810480522, // 26^217
3708 ];
3709 const BASE26_LARGE_EXPONENT: [i32; 67] = [
3710 -1279, // 26^-245
3711 -1246, // 26^-238
3712 -1213, // 26^-231
3713 -1180, // 26^-224
3714 -1147, // 26^-217
3715 -1115, // 26^-210
3716 -1082, // 26^-203
3717 -1049, // 26^-196
3718 -1016, // 26^-189
3719 -983, // 26^-182
3720 -950, // 26^-175
3721 -917, // 26^-168
3722 -884, // 26^-161
3723 -851, // 26^-154
3724 -818, // 26^-147
3725 -786, // 26^-140
3726 -753, // 26^-133
3727 -720, // 26^-126
3728 -687, // 26^-119
3729 -654, // 26^-112
3730 -621, // 26^-105
3731 -588, // 26^-98
3732 -555, // 26^-91
3733 -522, // 26^-84
3734 -489, // 26^-77
3735 -457, // 26^-70
3736 -424, // 26^-63
3737 -391, // 26^-56
3738 -358, // 26^-49
3739 -325, // 26^-42
3740 -292, // 26^-35
3741 -259, // 26^-28
3742 -226, // 26^-21
3743 -193, // 26^-14
3744 -160, // 26^-7
3745 -127, // 26^0
3746 -95, // 26^7
3747 -62, // 26^14
3748 -29, // 26^21
3749 4, // 26^28
3750 37, // 26^35
3751 70, // 26^42
3752 103, // 26^49
3753 136, // 26^56
3754 169, // 26^63
3755 202, // 26^70
3756 234, // 26^77
3757 267, // 26^84
3758 300, // 26^91
3759 333, // 26^98
3760 366, // 26^105
3761 399, // 26^112
3762 432, // 26^119
3763 465, // 26^126
3764 498, // 26^133
3765 531, // 26^140
3766 563, // 26^147
3767 596, // 26^154
3768 629, // 26^161
3769 662, // 26^168
3770 695, // 26^175
3771 728, // 26^182
3772 761, // 26^189
3773 794, // 26^196
3774 827, // 26^203
3775 860, // 26^210
3776 892, // 26^217
3777 ];
3778 const BASE26_SMALL_INT_POWERS: [u128; 7] = [1, 26, 676, 17576, 456976, 11881376, 308915776];
3779 const BASE26_STEP: i32 = 7;
3780 const BASE26_BIAS: i32 = 245;
3781
3782 // BASE27
3783
3784 const BASE27_SMALL_MANTISSA: [u128; 6] = [
3785 170141183460469231731687303715884105728, // 27^0
3786 287113247089541828547222325020554428416, // 27^1
3787 242251802231800917836718836736092798976, // 27^2
3788 204399958133082024424731518496078299136, // 27^3
3789 172462464674787958108367218731066064896, // 27^4
3790 291030409138704679307869681608673984512, // 27^5
3791 ];
3792 const BASE27_SMALL_EXPONENT: [i32; 6] = [
3793 -127, // 27^0
3794 -123, // 27^1
3795 -118, // 27^2
3796 -113, // 27^3
3797 -108, // 27^4
3798 -104, // 27^5
3799 ];
3800 const BASE27_LARGE_MANTISSA: [u128; 76] = [
3801 301829093537629265639465570217176944359, // 27^-240
3802 217807991453958805640698687941213190524, // 27^-234
3803 314352208961548438173441007673156326734, // 27^-228
3804 226845008347394462887832488874694288292, // 27^-222
3805 327394917835133689224334116987590197085, // 27^-216
3806 236256977848340413085493360278597848651, // 27^-210
3807 170489389240119998671196096475026672256, // 27^-204
3808 246059457021648542224892012444309926233, // 27^-198
3809 177563121844831037921653709250257605479, // 27^-192
3810 256268648406457241006138264113659504394, // 27^-186
3811 184930348919702200346046943747485274024, // 27^-180
3812 266901426797403574706768528236472000862, // 27^-174
3813 192603247770383575639211190527648274245, // 27^-168
3814 277975367137008028446553971650055283412, // 27^-162
3815 200594500948068090486693848039128919647, // 27^-156
3816 289508773565335211238455692680966173052, // 27^-150
3817 208917317212507950117664039252872831665, // 27^-144
3818 301520709674946766164053267333891939739, // 27^-138
3819 217585453364802351586979201161384846208, // 27^-132
3820 314031030021154964119856834958393443507, // 27^-126
3821 226613236986043931067161987739751269180, // 27^-120
3822 327060412939660347810097743318775450603, // 27^-114
3823 236015590119408703302029793810763336632, // 27^-108
3824 170315197362908885300398426895467760677, // 27^-102
3825 245808053934833671173174941698733239342, // 27^-96
3826 177381702616012906692133545122052956869, // 27^-90
3827 256006814417050404626793229969178591795, // 27^-84
3828 184741402471039290909022270993420155647, // 27^-78
3829 266628729119434395515123988465075762881, // 27^-72
3830 192406461791880080316008520325217417399, // 27^-66
3831 277691355027891684120101092281051616669, // 27^-60
3832 200389550171752283164939097875653100692, // 27^-54
3833 289212977580839036146652597763405686112, // 27^-48
3834 208703862874796048578293668364396201854, // 27^-42
3835 301212640893244858516269504216828222245, // 27^-36
3836 217363142646555453321168098187951653993, // 27^-30
3837 313710179234688236904530296665341569850, // 27^-24
3838 226381702429392491474935736226666160567, // 27^-18
3839 326726249813466247246220462666861782844, // 27^-12
3840 235774449020380624184618955567855082461, // 27^-6
3841 170141183460469231731687303715884105728, // 27^0
3842 245556907710782073166015043857318674432, // 27^6
3843 177200468746272961345336076752392290304, // 27^12
3844 255745247947835503562868389206950936576, // 27^18
3845 184552649072141716781794491390137475072, // 27^24
3846 266356310061270520809673995345359110719, // 27^30
3847 192209876872921446586714266254161951235, // 27^36
3848 277407633098725295421526662764935275289, // 27^42
3849 200184808797092622572327630249651738267, // 27^48
3850 288917483816076538023589582665008561757, // 27^54
3851 208490626626972031635281014538153149532, // 27^60
3852 300904886870600004067510516586852827477, // 27^66
3853 217141059066909427380630585083218539864, // 27^72
3854 313389656266867868879861721401276560157, // 27^78
3855 226150404435492799169987273137391228527, // 27^84
3856 326392428107359965184387801150473482685, // 27^90
3857 235533554299270254021060647605641184828, // 27^96
3858 339934694701922439619874702371784251126, // 27^102
3859 245306018087052741642305313258629505287, // 27^108
3860 177019420046226713314377865847118993119, // 27^114
3861 255483948725482657093998355855298189652, // 27^120
3862 184364088525767284952804747951506893851, // 27^126
3863 266084169338241408156670471179837543899, // 27^132
3864 192013492808081754945415747456910215687, // 27^138
3865 277124201053027125645172361985060059244, // 27^144
3866 199980276610139913759598726349951659975, // 27^150
3867 288622291962264730584478255384696488209, // 27^156
3868 208277608246209791806511248482402407710, // 27^162
3869 300597447285417578884462942447710218615, // 27^168
3870 216919202393792943992865658673403318648, // 27^174
3871 313069460782756034010893203297842312622, // 27^180
3872 225919342762644710883872352816958877073, // 27^186
3873 326058947472506854027112756453181563499, // 27^192
3874 235292905704349129354647627776916151748, // 27^198
3875 339587377705461640362820917278613293254, // 27^204
3876 245055384801472810432512717678228228007, // 27^210
3877 ];
3878 const BASE27_LARGE_EXPONENT: [i32; 76] = [
3879 -1269, // 27^-240
3880 -1240, // 27^-234
3881 -1212, // 27^-228
3882 -1183, // 27^-222
3883 -1155, // 27^-216
3884 -1126, // 27^-210
3885 -1097, // 27^-204
3886 -1069, // 27^-198
3887 -1040, // 27^-192
3888 -1012, // 27^-186
3889 -983, // 27^-180
3890 -955, // 27^-174
3891 -926, // 27^-168
3892 -898, // 27^-162
3893 -869, // 27^-156
3894 -841, // 27^-150
3895 -812, // 27^-144
3896 -784, // 27^-138
3897 -755, // 27^-132
3898 -727, // 27^-126
3899 -698, // 27^-120
3900 -670, // 27^-114
3901 -641, // 27^-108
3902 -612, // 27^-102
3903 -584, // 27^-96
3904 -555, // 27^-90
3905 -527, // 27^-84
3906 -498, // 27^-78
3907 -470, // 27^-72
3908 -441, // 27^-66
3909 -413, // 27^-60
3910 -384, // 27^-54
3911 -356, // 27^-48
3912 -327, // 27^-42
3913 -299, // 27^-36
3914 -270, // 27^-30
3915 -242, // 27^-24
3916 -213, // 27^-18
3917 -185, // 27^-12
3918 -156, // 27^-6
3919 -127, // 27^0
3920 -99, // 27^6
3921 -70, // 27^12
3922 -42, // 27^18
3923 -13, // 27^24
3924 15, // 27^30
3925 44, // 27^36
3926 72, // 27^42
3927 101, // 27^48
3928 129, // 27^54
3929 158, // 27^60
3930 186, // 27^66
3931 215, // 27^72
3932 243, // 27^78
3933 272, // 27^84
3934 300, // 27^90
3935 329, // 27^96
3936 357, // 27^102
3937 386, // 27^108
3938 415, // 27^114
3939 443, // 27^120
3940 472, // 27^126
3941 500, // 27^132
3942 529, // 27^138
3943 557, // 27^144
3944 586, // 27^150
3945 614, // 27^156
3946 643, // 27^162
3947 671, // 27^168
3948 700, // 27^174
3949 728, // 27^180
3950 757, // 27^186
3951 785, // 27^192
3952 814, // 27^198
3953 842, // 27^204
3954 871, // 27^210
3955 ];
3956 const BASE27_SMALL_INT_POWERS: [u128; 6] = [1, 27, 729, 19683, 531441, 14348907];
3957 const BASE27_STEP: i32 = 6;
3958 const BASE27_BIAS: i32 = 240;
3959
3960 // BASE28
3961
3962 const BASE28_SMALL_MANTISSA: [u128; 6] = [
3963 170141183460469231731687303715884105728, // 28^0
3964 297747071055821155530452781502797185024, // 28^1
3965 260528687173843511089146183814947536896, // 28^2
3966 227962601277113072203002910838079094784, // 28^3
3967 199467276117473938177627546983319207936, // 28^4
3968 174533866602789695905424103610404306944, // 28^5
3969 ];
3970 const BASE28_SMALL_EXPONENT: [i32; 6] = [
3971 -127, // 28^0
3972 -123, // 28^1
3973 -118, // 28^2
3974 -113, // 28^3
3975 -108, // 28^4
3976 -103, // 28^5
3977 ];
3978 const BASE28_LARGE_MANTISSA: [u128; 76] = [
3979 200215143815698040798730279921859793515, // 28^-240
3980 179711238516029806533278035755362570551, // 28^-234
3981 322614250185735942212427179391214768413, // 28^-228
3982 289575530396283324168013345552040300667, // 28^-222
3983 259920284847963995399800125815215983072, // 28^-216
3984 233302014099717072256401710525774728336, // 28^-210
3985 209409703497448836012980688794302909957, // 28^-204
3986 187964189199610581269006081054389519147, // 28^-198
3987 337429792711562885676838629607664070711, // 28^-192
3988 302873822652608199592547515371033250847, // 28^-186
3989 271856707468083969679745656096547629768, // 28^-180
3990 244016035285282981482333348801442963368, // 28^-174
3991 219026508600450572879143037057044702127, // 28^-168
3992 196596143419909740056291955312532441411, // 28^-162
3993 176462857644721687377034700397980722042, // 28^-156
3994 316782817673398770114452445482208770257, // 28^-150
3995 284341291171704802743493772571841275116, // 28^-144
3996 255222080727080523208383932871281083497, // 28^-138
3997 229084950069124576377435007616984162844, // 28^-132
3998 205624506307086466111975488366169508167, // 28^-126
3999 184566631641558957302915986868221103411, // 28^-120
4000 331330561004604641231243330979299081348, // 28^-114
4001 297399209378286220063892720385616742108, // 28^-108
4002 266942745850723232302069966588191406954, // 28^-102
4003 239605309345945263344621501916001364416, // 28^-96
4004 215067482294014848993159294730496555497, // 28^-90
4005 193042558474796699288911421705232156812, // 28^-84
4006 173273193069468359944466704194632400641, // 28^-78
4007 311056791556242112413125050076207081650, // 28^-72
4008 279201663740542055384000770694089408486, // 28^-66
4009 250608799266136415663698628779517553855, // 28^-60
4010 224944111822980370837543334787608800457, // 28^-54
4011 201907728667158642949418150287074186439, // 28^-48
4012 181230486831379296755646484093658378299, // 28^-42
4013 325341576312636457580643512071759255196, // 28^-36
4014 292023552792399342330208805478900181690, // 28^-30
4015 262117606830390855604604612394616145902, // 28^-24
4016 235274309738072614830216430996812400431, // 28^-18
4017 211180017596241035935669959185363632952, // 28^-12
4018 189553206559602063269009666658011215615, // 28^-6
4019 170141183460469231731687303715884105728, // 28^0
4020 305434266554881967834492181318207537152, // 28^6
4021 274154937941858738966065755004164112384, // 28^12
4022 246078905440687093968343124469641904128, // 28^18
4023 220878121537715117784741212850409701376, // 28^24
4024 198258133856129805696540977101424033792, // 28^30
4025 177954644699400447924746318168681611264, // 28^36
4026 319460845859371388212562249545703474176, // 28^42
4027 286745064197610355009611023687762970225, // 28^48
4028 257379684889104161503034418684704785797, // 28^54
4029 231021595363755916570056887236303965333, // 28^60
4030 207362820991138609531788808643065835705, // 28^66
4031 186126926626483659918254253754028720893, // 28^72
4032 334131573344103639308512797544978713750, // 28^78
4033 299913371828921883094842698046640019943, // 28^84
4034 269199434526831288331795872363961423540, // 28^90
4035 241630891972710985114650364591580944199, // 28^96
4036 216885626294688985349681859923056842835, // 28^102
4037 194674507506895938395726937393857685110, // 28^108
4038 174738015241079713869620349559402181972, // 28^114
4039 313686412889065357315780098042512623701, // 28^120
4040 281561987228284074576142980610683957411, // 28^126
4041 252727403529513497084111370284014563793, // 28^132
4042 226845751173734538409794758625366435361, // 28^138
4043 203614622343740041422835873088956724196, // 28^144
4044 182762578614186646525232068123189313087, // 28^150
4045 328091958791815868790390435525895683218, // 28^156
4046 294492270354449044397893099587906656150, // 28^162
4047 264333504599995236391965677440014878764, // 28^168
4048 237263278829077450304247817879793628477, // 28^174
4049 212965297630021155936008083539885258459, // 28^180
4050 191155657202715751455043144381591497592, // 28^186
4051 171579528154314464133715598246382584383, // 28^192
4052 308016356015425756696586706818979868623, // 28^198
4053 276472597266073797985814891590470600613, // 28^204
4054 248159214750338106225838746496027188809, // 28^210
4055 ];
4056 const BASE28_LARGE_EXPONENT: [i32; 76] = [
4057 -1281, // 28^-240
4058 -1252, // 28^-234
4059 -1224, // 28^-228
4060 -1195, // 28^-222
4061 -1166, // 28^-216
4062 -1137, // 28^-210
4063 -1108, // 28^-204
4064 -1079, // 28^-198
4065 -1051, // 28^-192
4066 -1022, // 28^-186
4067 -993, // 28^-180
4068 -964, // 28^-174
4069 -935, // 28^-168
4070 -906, // 28^-162
4071 -877, // 28^-156
4072 -849, // 28^-150
4073 -820, // 28^-144
4074 -791, // 28^-138
4075 -762, // 28^-132
4076 -733, // 28^-126
4077 -704, // 28^-120
4078 -676, // 28^-114
4079 -647, // 28^-108
4080 -618, // 28^-102
4081 -589, // 28^-96
4082 -560, // 28^-90
4083 -531, // 28^-84
4084 -502, // 28^-78
4085 -474, // 28^-72
4086 -445, // 28^-66
4087 -416, // 28^-60
4088 -387, // 28^-54
4089 -358, // 28^-48
4090 -329, // 28^-42
4091 -301, // 28^-36
4092 -272, // 28^-30
4093 -243, // 28^-24
4094 -214, // 28^-18
4095 -185, // 28^-12
4096 -156, // 28^-6
4097 -127, // 28^0
4098 -99, // 28^6
4099 -70, // 28^12
4100 -41, // 28^18
4101 -12, // 28^24
4102 17, // 28^30
4103 46, // 28^36
4104 74, // 28^42
4105 103, // 28^48
4106 132, // 28^54
4107 161, // 28^60
4108 190, // 28^66
4109 219, // 28^72
4110 247, // 28^78
4111 276, // 28^84
4112 305, // 28^90
4113 334, // 28^96
4114 363, // 28^102
4115 392, // 28^108
4116 421, // 28^114
4117 449, // 28^120
4118 478, // 28^126
4119 507, // 28^132
4120 536, // 28^138
4121 565, // 28^144
4122 594, // 28^150
4123 622, // 28^156
4124 651, // 28^162
4125 680, // 28^168
4126 709, // 28^174
4127 738, // 28^180
4128 767, // 28^186
4129 796, // 28^192
4130 824, // 28^198
4131 853, // 28^204
4132 882, // 28^210
4133 ];
4134 const BASE28_SMALL_INT_POWERS: [u128; 6] = [1, 28, 784, 21952, 614656, 17210368];
4135 const BASE28_STEP: i32 = 6;
4136 const BASE28_BIAS: i32 = 240;
4137
4138 // BASE29
4139
4140 const BASE29_SMALL_MANTISSA: [u128; 6] = [
4141 170141183460469231731687303715884105728, // 29^0
4142 308380895022100482513683237985039941632, // 29^1
4143 279470186113778562278025434423942447104, // 29^2
4144 253269856165611822064460549946697842688, // 29^3
4145 229525807150085713745917373389194919936, // 29^4
4146 208007762729765178082237619633957896192, // 29^5
4147 ];
4148 const BASE29_SMALL_EXPONENT: [i32; 6] = [
4149 -127, // 29^0
4150 -123, // 29^1
4151 -118, // 29^2
4152 -113, // 29^3
4153 -108, // 29^4
4154 -103, // 29^5
4155 ];
4156 const BASE29_LARGE_MANTISSA: [u128; 76] = [
4157 180411782640948456163108621039484300353, // 29^-240
4158 199886291656678749778798199538954577713, // 29^-234
4159 221462972137332420374365077239613292335, // 29^-228
4160 245368742505570013761609603669658845854, // 29^-222
4161 271855015841791437163383377269432435982, // 29^-216
4162 301200343954417841961395964144914808415, // 29^-210
4163 333713346863741229059418106803065448261, // 29^-204
4164 184867979254122350694373980738345610830, // 29^-198
4165 204823511403978168182734748793342650457, // 29^-192
4166 226933138952023660037574950865203175761, // 29^-186
4167 251429385238135556008900174982942596722, // 29^-180
4168 278569873281449391084528542386060643447, // 29^-174
4169 308640035159552273337407148073177516540, // 29^-168
4170 170978056925499484035797671737173759761, // 29^-162
4171 189434244555519246827735852425496159000, // 29^-156
4172 209882681179121373738148351480252166035, // 29^-150
4173 232538419662693834656863635067192575556, // 29^-144
4174 257639726705579546348788818074016917383, // 29^-138
4175 285450588652016995453946272087193218261, // 29^-132
4176 316263487792383250937533050996202736450, // 29^-126
4177 175201239175822924661859658491633525197, // 29^-120
4178 194113297257345719179697640426306620561, // 29^-114
4179 215066813165088318898530949380694999931, // 29^-108
4180 238282151601732438626757341123945812037, // 29^-102
4181 264003464487880391063907148518553600721, // 29^-96
4182 292501258667905961095191488633763572010, // 29^-90
4183 324075240786231793266420435905585066661, // 29^-84
4184 179528734626566103050967344518404222838, // 29^-78
4185 198907923224385351394870557131224024014, // 29^-72
4186 220378993946205681004466278772642662300, // 29^-66
4187 244167754534112212293116837315364018708, // 29^-60
4188 270524387495766270724774864712621178351, // 29^-54
4189 299726081232954872012689080099923610541, // 29^-48
4190 332079945186715557451765374774991672241, // 29^-42
4191 183963119828570739334286542177638201257, // 29^-36
4192 203820977132676910337518249049241331980, // 29^-30
4193 225822386345870676314424417535913775896, // 29^-24
4194 250198732693485636863600410972168425001, // 29^-18
4195 277206378226597610088077970727216566225, // 29^-12
4196 307129357939822377568583266911848900855, // 29^-6
4197 170141183460469231731687303715884105728, // 29^0
4198 188507034973849692637027842793274343424, // 29^6
4199 208855384169162106382075974754544648192, // 29^12
4200 231400231309666912826787170353923751936, // 29^18
4201 256378676868573301455838684793773426688, // 29^24
4202 284053415075970164879962990673826094314, // 29^30
4203 314715496631115750914098978917481871688, // 29^36
4204 174343694817539847357322592625772163155, // 29^42
4205 193163185467532912371523116182520814756, // 29^48
4206 214014141773314894388674508400179209532, // 29^54
4207 237115849834993471687725998227739696222, // 29^60
4208 262711266541086358656385267533109039869, // 29^66
4209 291069574706415032602452081981147446763, // 29^72
4210 322489014023779685975823216414806216349, // 29^78
4211 178650008801035774670984867305268298071, // 29^84
4212 197934343538640677425270715935647505996, // 29^90
4213 219300321421789265371466533424126863110, // 29^96
4214 242972644948356100526463281459541324974, // 29^102
4215 269200272076455967884065094333741996545, // 29^108
4216 298259034474605889482552078350958780837, // 29^114
4217 330454538398307869859357548505383554011, // 29^120
4218 183062689350548673356118481539553806163, // 29^126
4219 202823349890643162760568057855283073783, // 29^132
4220 224717070457148091679782830215989826885, // 29^138
4221 248974103731497779640892318688061490897, // 29^144
4222 275849556968674066644388728598920812956, // 29^150
4223 305626074918518590345961283073160340970, // 29^156
4224 338616812354378462414859289927404969896, // 29^162
4225 187584363735341677353233362159059264795, // 29^168
4226 207833115392789061354400140358968381064, // 29^174
4227 230267613961761833964469003400183663813, // 29^180
4228 255123799397575000468261630468177681638, // 29^186
4229 282663080140582027146793786682106989268, // 29^192
4230 313175082306023963280707662359655742783, // 29^198
4231 173490347817277081445057491729890113081, // 29^204
4232 192217724118601260264099717636971309833, // 29^210
4233 ];
4234 const BASE29_LARGE_EXPONENT: [i32; 76] = [
4235 -1293, // 29^-240
4236 -1264, // 29^-234
4237 -1235, // 29^-228
4238 -1206, // 29^-222
4239 -1177, // 29^-216
4240 -1148, // 29^-210
4241 -1119, // 29^-204
4242 -1089, // 29^-198
4243 -1060, // 29^-192
4244 -1031, // 29^-186
4245 -1002, // 29^-180
4246 -973, // 29^-174
4247 -944, // 29^-168
4248 -914, // 29^-162
4249 -885, // 29^-156
4250 -856, // 29^-150
4251 -827, // 29^-144
4252 -798, // 29^-138
4253 -769, // 29^-132
4254 -740, // 29^-126
4255 -710, // 29^-120
4256 -681, // 29^-114
4257 -652, // 29^-108
4258 -623, // 29^-102
4259 -594, // 29^-96
4260 -565, // 29^-90
4261 -536, // 29^-84
4262 -506, // 29^-78
4263 -477, // 29^-72
4264 -448, // 29^-66
4265 -419, // 29^-60
4266 -390, // 29^-54
4267 -361, // 29^-48
4268 -332, // 29^-42
4269 -302, // 29^-36
4270 -273, // 29^-30
4271 -244, // 29^-24
4272 -215, // 29^-18
4273 -186, // 29^-12
4274 -157, // 29^-6
4275 -127, // 29^0
4276 -98, // 29^6
4277 -69, // 29^12
4278 -40, // 29^18
4279 -11, // 29^24
4280 18, // 29^30
4281 47, // 29^36
4282 77, // 29^42
4283 106, // 29^48
4284 135, // 29^54
4285 164, // 29^60
4286 193, // 29^66
4287 222, // 29^72
4288 251, // 29^78
4289 281, // 29^84
4290 310, // 29^90
4291 339, // 29^96
4292 368, // 29^102
4293 397, // 29^108
4294 426, // 29^114
4295 455, // 29^120
4296 485, // 29^126
4297 514, // 29^132
4298 543, // 29^138
4299 572, // 29^144
4300 601, // 29^150
4301 630, // 29^156
4302 659, // 29^162
4303 689, // 29^168
4304 718, // 29^174
4305 747, // 29^180
4306 776, // 29^186
4307 805, // 29^192
4308 834, // 29^198
4309 864, // 29^204
4310 893, // 29^210
4311 ];
4312 const BASE29_SMALL_INT_POWERS: [u128; 6] = [1, 29, 841, 24389, 707281, 20511149];
4313 const BASE29_STEP: i32 = 6;
4314 const BASE29_BIAS: i32 = 240;
4315
4316 // BASE30
4317
4318 const BASE30_SMALL_MANTISSA: [u128; 6] = [
4319 170141183460469231731687303715884105728, // 30^0
4320 319014718988379809496913694467282698240, // 30^1
4321 299076299051606071403356588563077529600, // 30^2
4322 280384030360880691940646801777885184000, // 30^3
4323 262860028463325648694356376666767360000, // 30^4
4324 246431276684367795650959103125094400000, // 30^5
4325 ];
4326 const BASE30_SMALL_EXPONENT: [i32; 6] = [
4327 -127, // 30^0
4328 -123, // 30^1
4329 -118, // 30^2
4330 -113, // 30^3
4331 -108, // 30^4
4332 -103, // 30^5
4333 ];
4334 const BASE30_LARGE_MANTISSA: [u128; 74] = [
4335 293697914606894485088361958296166003399, // 30^-234
4336 199401546035358756435491021348075025228, // 30^-228
4337 270761041082025567891957153683056483774, // 30^-222
4338 183828919146951883093674448351327494412, // 30^-216
4339 249615464467793559236989678532104461317, // 30^-210
4340 338944929832632662139396137837142035924, // 30^-204
4341 230121290169646228383872457298707723793, // 30^-198
4342 312474408249691315911417866816293319027, // 30^-192
4343 212149548916169413644283660602828329029, // 30^-186
4344 288071150257973936473359891361485890787, // 30^-180
4345 195581343526079319127909243854250027224, // 30^-174
4346 265573709142416387133758214804806317848, // 30^-168
4347 180307062310000458937613050074040708794, // 30^-162
4348 244833246663194772909432488501026624276, // 30^-156
4349 332451307806128616353452734867573546427, // 30^-150
4350 225712548373888955751123878842649157480, // 30^-144
4351 306487917461553679299669913344627685478, // 30^-138
4352 208085115840167395965624010961720331305, // 30^-132
4353 282552185370553343852869987471204477403, // 30^-126
4354 191834329753307055373436045708607941890, // 30^-120
4355 260485757869036576463347072380734960806, // 30^-114
4356 176852678401887104140389725347567150767, // 30^-108
4357 240142648210703765821352805529490956868, // 30^-102
4358 326082092794781635112624979076905003855, // 30^-96
4359 221388270750079128888532155889145795079, // 30^-90
4360 300616117896153936087600778123712697276, // 30^-84
4361 204098550552778150334824777443135675335, // 30^-78
4362 277138954685954882938577351637270128950, // 30^-72
4363 188159102542382767109407940268116001044, // 30^-66
4364 255495283293346012426090218975127795266, // 30^-60
4365 173464474753336275982316368848893943009, // 30^-54
4366 235541913835671069456466721167496749113, // 30^-48
4367 319834901366763207379289417958082873567, // 30^-42
4368 217146839104937741700096042539405091508, // 30^-36
4369 294856812260112936979848919457246198708, // 30^-30
4370 200188361236473853754168248068850933442, // 30^-24
4371 271829432512427567293473804075629134624, // 30^-18
4372 184554286581985369843377175900278276895, // 30^-12
4373 250600417923680198594596164731872945757, // 30^-6
4374 170141183460469231731687303715884105728, // 30^0
4375 231029321891594808422774159179776000000, // 30^6
4376 313707395752840890251476992000000000000, // 30^12
4377 212986666247081951232000000000000000000, // 30^18
4378 289207845356544000000000000000000000000, // 30^24
4379 196353084654473304748535156250000000000, // 30^30
4380 266621631967110632288608940143603831529, // 30^36
4381 181018532909474941844489348460628831000, // 30^42
4382 245799330046413899594233809090775284541, // 30^48
4383 333763121820680299409099755486799743829, // 30^54
4384 226603183715861233202026897808422346833, // 30^60
4385 307697282971558792524556831461079215336, // 30^66
4386 208906195393080226844550976655564036201, // 30^72
4387 283667103278554017412807162817392837984, // 30^78
4388 192591285603182277357146536646298485706, // 30^84
4389 261513604232519641878753574965804062932, // 30^90
4390 177550518406095745907734479894927853604, // 30^96
4391 241090223040513319460187919146199534233, // 30^102
4392 327368774631124380764508606973252185538, // 30^108
4393 222261842997828194477899721342605392688, // 30^114
4394 301802313971178147521594347169174498450, // 30^120
4395 204903899584886496461222208185427085841, // 30^126
4396 278232512618195742220116760148063945729, // 30^132
4397 188901556375124208702207652989717774500, // 30^138
4398 256503437827277086943219190518379691262, // 30^144
4399 174148945301850322989380722761059920238, // 30^150
4400 236471334705220322048773145103478211637, // 30^156
4401 321096932515698698858834100478208840422, // 30^162
4402 218003675159015088778073023304915283497, // 30^168
4403 296020282788056879712669614682501632104, // 30^174
4404 200978281118435287206001718625001320433, // 30^180
4405 272902039690575235287053981567967613406, // 30^186
4406 185282516232160242762660936045505469826, // 30^192
4407 251589257890814574386886921482483833102, // 30^198
4408 170812540689859376035668482781137073721, // 30^204
4409 ];
4410 const BASE30_LARGE_EXPONENT: [i32; 74] = [
4411 -1276, // 30^-234
4412 -1246, // 30^-228
4413 -1217, // 30^-222
4414 -1187, // 30^-216
4415 -1158, // 30^-210
4416 -1129, // 30^-204
4417 -1099, // 30^-198
4418 -1070, // 30^-192
4419 -1040, // 30^-186
4420 -1011, // 30^-180
4421 -981, // 30^-174
4422 -952, // 30^-168
4423 -922, // 30^-162
4424 -893, // 30^-156
4425 -864, // 30^-150
4426 -834, // 30^-144
4427 -805, // 30^-138
4428 -775, // 30^-132
4429 -746, // 30^-126
4430 -716, // 30^-120
4431 -687, // 30^-114
4432 -657, // 30^-108
4433 -628, // 30^-102
4434 -599, // 30^-96
4435 -569, // 30^-90
4436 -540, // 30^-84
4437 -510, // 30^-78
4438 -481, // 30^-72
4439 -451, // 30^-66
4440 -422, // 30^-60
4441 -392, // 30^-54
4442 -363, // 30^-48
4443 -334, // 30^-42
4444 -304, // 30^-36
4445 -275, // 30^-30
4446 -245, // 30^-24
4447 -216, // 30^-18
4448 -186, // 30^-12
4449 -157, // 30^-6
4450 -127, // 30^0
4451 -98, // 30^6
4452 -69, // 30^12
4453 -39, // 30^18
4454 -10, // 30^24
4455 20, // 30^30
4456 49, // 30^36
4457 79, // 30^42
4458 108, // 30^48
4459 137, // 30^54
4460 167, // 30^60
4461 196, // 30^66
4462 226, // 30^72
4463 255, // 30^78
4464 285, // 30^84
4465 314, // 30^90
4466 344, // 30^96
4467 373, // 30^102
4468 402, // 30^108
4469 432, // 30^114
4470 461, // 30^120
4471 491, // 30^126
4472 520, // 30^132
4473 550, // 30^138
4474 579, // 30^144
4475 609, // 30^150
4476 638, // 30^156
4477 667, // 30^162
4478 697, // 30^168
4479 726, // 30^174
4480 756, // 30^180
4481 785, // 30^186
4482 815, // 30^192
4483 844, // 30^198
4484 874, // 30^204
4485 ];
4486 const BASE30_SMALL_INT_POWERS: [u128; 6] = [1, 30, 900, 27000, 810000, 24300000];
4487 const BASE30_STEP: i32 = 6;
4488 const BASE30_BIAS: i32 = 234;
4489
4490 // BASE31
4491
4492 const BASE31_SMALL_MANTISSA: [u128; 6] = [
4493 170141183460469231731687303715884105728, // 31^0
4494 329648542954659136480144150949525454848, // 31^1
4495 319347025987326038465139646232352784384, // 31^2
4496 309367431425222099763104032287591759872, // 31^3
4497 299699699193183909145507031278604517376, // 31^4
4498 290334083593396911984709936551148126208, // 31^5
4499 ];
4500 const BASE31_SMALL_EXPONENT: [i32; 6] = [
4501 -127, // 31^0
4502 -123, // 31^1
4503 -118, // 31^2
4504 -113, // 31^3
4505 -108, // 31^4
4506 -103, // 31^5
4507 ];
4508 const BASE31_LARGE_MANTISSA: [u128; 74] = [
4509 279877549230888994466722529922465951128, // 31^-234
4510 231333407733284590292354000091386191754, // 31^-228
4511 191209140142019782313183919746595976478, // 31^-222
4512 316088675925298444140273004034743674741, // 31^-216
4513 261263794643914746305034655542823358647, // 31^-210
4514 215948167684024592485185159022754788335, // 31^-204
4515 178492435929157837038046463019461592108, // 31^-198
4516 295066635902569136770934561228011804883, // 31^-192
4517 243887980937787207068127465341221873783, // 31^-186
4518 201586150409601608540557644579125879351, // 31^-180
4519 333242957530806000015262416296943861408, // 31^-174
4520 275442704070282164877682412643443854572, // 31^-168
4521 227667776650720372831068985136241988697, // 31^-162
4522 188179304658062925738530341045324738580, // 31^-156
4523 311080041475689584245114254221154550706, // 31^-150
4524 257123896754632869764136622554477725012, // 31^-144
4525 212526325921342359594316086083656739425, // 31^-138
4526 175664105047096554749814041961690625344, // 31^-132
4527 290391109602281582919653498207198252857, // 31^-126
4528 240023414326551697067636257878891518439, // 31^-120
4529 198391884324143423870507706735824676989, // 31^-114
4530 327962502126029666246881442269148110223, // 31^-108
4531 271078131968920728852328597367236335349, // 31^-102
4532 224060229920801636254083864004341099802, // 31^-96
4533 185197478924335716894196793983277050828, // 31^-90
4534 306150772156692797734166574102932652557, // 31^-84
4535 253049598289706899575201136976026000492, // 31^-78
4536 209158705508044155113481306826330986049, // 31^-72
4537 172880590941369685133685946960988620150, // 31^-66
4538 285789670113326703641484035227164931190, // 31^-60
4539 236220084333189890382264913587684321799, // 31^-54
4540 195248233500715771863466694882341429463, // 31^-48
4541 322765719034956327944217102842371688313, // 31^-42
4542 266782719403631527651786656524762917448, // 31^-36
4543 220509847158485190531810693342620280466, // 31^-30
4544 182262902194543738831736462131829646508, // 31^-24
4545 301299610375241462753468658335350302125, // 31^-18
4546 249039859782804352657429715423616325073, // 31^-12
4547 205844447270932349829274233837837318735, // 31^-6
4548 170141183460469231731687303715884105728, // 31^0
4549 281261143481103258485187751033924747264, // 31^6
4550 232477020622927971041480650211423420416, // 31^12
4551 192154395906963839472434931204572053504, // 31^18
4552 317651282414350176352409831205456445952, // 31^24
4553 262555370495753687560337482407159416999, // 31^30
4554 217015722562838525119352550468059930336, // 31^36
4555 179374825776921533841673613411506136043, // 31^42
4556 296525318465664137401900073705767585881, // 31^48
4557 245093658238625334625948305994309525378, // 31^54
4558 202582705650977753904076181059390370572, // 31^60
4559 334890367411416504232175148268475073388, // 31^66
4560 276804374353098300220638069068074602530, // 31^72
4561 228793268236589371413606590094648720070, // 31^78
4562 189109582219266748069833984779993889354, // 31^84
4563 312617887429839722873414506299686714932, // 31^90
4564 258395006731549634868442333657079980382, // 31^96
4565 213576964685944914612871149421565862652, // 31^102
4566 176532512843220607081571440296564925357, // 31^108
4567 291826678373921783044839874892818001863, // 31^114
4568 241209986871908117885122799335937441435, // 31^120
4569 199372648487594099824157002892036768477, // 31^126
4570 329583807705824908665978895106558273752, // 31^132
4571 272418225684124763666228455375305707749, // 31^138
4572 225167887346958248891898253497228074938, // 31^144
4573 186113015621359245893427982047443315204, // 31^150
4574 307664249923018427479642383336104189758, // 31^156
4575 254300566687046383525258086411660098107, // 31^162
4576 210192696205470376085866529648531617961, // 31^168
4577 173735238240724141814430167095519087450, // 31^174
4578 287202491346848457988114640516635531033, // 31^180
4579 237387854850570349221700427782261535085, // 31^186
4580 196213456806330839063706448987155946803, // 31^192
4581 324361333953874416226256763524449662322, // 31^198
4582 268101578446229760174200876130811505774, // 31^204
4583 ];
4584 const BASE31_LARGE_EXPONENT: [i32; 74] = [
4585 -1287, // 31^-234
4586 -1257, // 31^-228
4587 -1227, // 31^-222
4588 -1198, // 31^-216
4589 -1168, // 31^-210
4590 -1138, // 31^-204
4591 -1108, // 31^-198
4592 -1079, // 31^-192
4593 -1049, // 31^-186
4594 -1019, // 31^-180
4595 -990, // 31^-174
4596 -960, // 31^-168
4597 -930, // 31^-162
4598 -900, // 31^-156
4599 -871, // 31^-150
4600 -841, // 31^-144
4601 -811, // 31^-138
4602 -781, // 31^-132
4603 -752, // 31^-126
4604 -722, // 31^-120
4605 -692, // 31^-114
4606 -663, // 31^-108
4607 -633, // 31^-102
4608 -603, // 31^-96
4609 -573, // 31^-90
4610 -544, // 31^-84
4611 -514, // 31^-78
4612 -484, // 31^-72
4613 -454, // 31^-66
4614 -425, // 31^-60
4615 -395, // 31^-54
4616 -365, // 31^-48
4617 -336, // 31^-42
4618 -306, // 31^-36
4619 -276, // 31^-30
4620 -246, // 31^-24
4621 -217, // 31^-18
4622 -187, // 31^-12
4623 -157, // 31^-6
4624 -127, // 31^0
4625 -98, // 31^6
4626 -68, // 31^12
4627 -38, // 31^18
4628 -9, // 31^24
4629 21, // 31^30
4630 51, // 31^36
4631 81, // 31^42
4632 110, // 31^48
4633 140, // 31^54
4634 170, // 31^60
4635 199, // 31^66
4636 229, // 31^72
4637 259, // 31^78
4638 289, // 31^84
4639 318, // 31^90
4640 348, // 31^96
4641 378, // 31^102
4642 408, // 31^108
4643 437, // 31^114
4644 467, // 31^120
4645 497, // 31^126
4646 526, // 31^132
4647 556, // 31^138
4648 586, // 31^144
4649 616, // 31^150
4650 645, // 31^156
4651 675, // 31^162
4652 705, // 31^168
4653 735, // 31^174
4654 764, // 31^180
4655 794, // 31^186
4656 824, // 31^192
4657 853, // 31^198
4658 883, // 31^204
4659 ];
4660 const BASE31_SMALL_INT_POWERS: [u128; 6] = [1, 31, 961, 29791, 923521, 28629151];
4661 const BASE31_STEP: i32 = 6;
4662 const BASE31_BIAS: i32 = 234;
4663
4664 // BASE33
4665
4666 const BASE33_SMALL_MANTISSA: [u128; 6] = [
4667 170141183460469231731687303715884105728, // 33^0
4668 175458095443608895223302531957005484032, // 33^1
4669 180941160926221673199030736080661905408, // 33^2
4670 186595572205166100486500446583182589952, // 33^3
4671 192426683836577541126703585538907045888, // 33^4
4672 198440017706470589286913072586997891072, // 33^5
4673 ];
4674 const BASE33_SMALL_EXPONENT: [i32; 6] = [
4675 -127, // 33^0
4676 -122, // 33^1
4677 -117, // 33^2
4678 -112, // 33^3
4679 -107, // 33^4
4680 -102, // 33^5
4681 ];
4682 const BASE33_LARGE_MANTISSA: [u128; 72] = [
4683 312720366502509540124188550868577470271, // 33^-228
4684 188065849520234218420139418711557486770, // 33^-222
4685 226200577540468899968415353242546081790, // 33^-216
4686 272068009211510778916881923005514361559, // 33^-210
4687 327236130168906522048072439540872358087, // 33^-204
4688 196795435814493025178219114364462772750, // 33^-198
4689 236700290627603575579431376108202583063, // 33^-192
4690 284696783496570703658001718555889571262, // 33^-186
4691 171212841180688182412693440011648609110, // 33^-180
4692 205930229524469868245369490973155168397, // 33^-174
4693 247687376364759110421449812279701734754, // 33^-168
4694 297911756579516503503766398038992340964, // 33^-162
4695 179160149400574418614614090847719005026, // 33^-156
4696 215489039450973655880961058312920063458, // 33^-150
4697 259184457474862991304220337185522020620, // 33^-144
4698 311740138466868713435648102307209093287, // 33^-138
4699 187476353478425047886734580102095167043, // 33^-132
4700 225491547456297727220699982909970598320, // 33^-126
4701 271215206775862669602998925081523543654, // 33^-120
4702 326210402191372960931717472229356291097, // 33^-114
4703 196178576715647050727159488732861667611, // 33^-108
4704 235958348989735718000162987087766864735, // 33^-102
4705 283804395923732956473182174007605293342, // 33^-96
4706 170676171219393275768862099029406252664, // 33^-90
4707 205284737238107330416766226733647440005, // 33^-84
4708 246910995494199118965634147066154669324, // 33^-78
4709 296977946418022259559609845940558313794, // 33^-72
4710 178598568447993152099773363289076713958, // 33^-66
4711 214813584890064968045989415466080479007, // 33^-60
4712 258372038781252962127704032685119793391, // 33^-54
4713 310762982974959535779710715380461212334, // 33^-48
4714 186888705223357570139042022172334279947, // 33^-42
4715 224784739840635370899218738060963824868, // 33^-36
4716 270365077465939099085308357449561310080, // 33^-30
4717 325187889378018709806160016110270251585, // 33^-24
4718 195563651173574149793648095659417101115, // 33^-18
4719 235218732982278125085778976978720276897, // 33^-12
4720 282914805556997697053159518336509943216, // 33^-6
4721 170141183460469231731687303715884105728, // 33^0
4722 204641268259797795202129106105341575168, // 33^6
4723 246137048204490191229033862368809975808, // 33^12
4724 296047063302535604636168085099824283648, // 33^18
4725 178038747781766620403928207609098977344, // 33^24
4726 214140247554538205717741625292909706188, // 33^30
4727 257562166629747183314707096744136073023, // 33^36
4728 309788890395834268833431845588643035745, // 33^42
4729 186302898963108514077454910111746951397, // 33^48
4730 224080147727111315915564635257325506176, // 33^54
4731 269517612902775795573733407057825442248, // 33^60
4732 324168581650849479410768181980047458277, // 33^66
4733 194950653127503229444535496044715069916, // 33^72
4734 234481435315497306894208542281087212757, // 33^78
4735 282028003628468309677795696968404883305, // 33^84
4736 339215745262040382698593524434347927396, // 33^90
4737 203999816247443047277506123370388146319, // 33^96
4738 245365526867526093228395853689144006062, // 33^102
4739 295119098058174229856749108333084701428, // 33^108
4740 177480681884243207276442522127875068624, // 33^114
4741 213469020807909470054649976638820369879, // 33^120
4742 256754833038160188521579955085771893751, // 33^126
4743 308817851128733566186038756059234075639, // 33^132
4744 185718928923909504089695656878457160369, // 33^138
4745 223377764171191270264346565880758640128, // 33^144
4746 268672804733672512805858396506074869210, // 33^150
4747 323152468963460648455199258995519212913, // 33^156
4748 194339576535660800930047023345366203227, // 33^162
4749 233746448722509584063702393615930970798, // 33^168
4750 281143981397731320107155010945727058593, // 33^174
4751 338152466949356579395454697640846384307, // 33^180
4752 203360374878824300807265157901557614739, // 33^186
4753 244596423879111037469845073222731160599, // 33^192
4754 294194041538814672349638971928150296782, // 33^198
4755 ];
4756 const BASE33_LARGE_EXPONENT: [i32; 72] = [
4757 -1278, // 33^-228
4758 -1247, // 33^-222
4759 -1217, // 33^-216
4760 -1187, // 33^-210
4761 -1157, // 33^-204
4762 -1126, // 33^-198
4763 -1096, // 33^-192
4764 -1066, // 33^-186
4765 -1035, // 33^-180
4766 -1005, // 33^-174
4767 -975, // 33^-168
4768 -945, // 33^-162
4769 -914, // 33^-156
4770 -884, // 33^-150
4771 -854, // 33^-144
4772 -824, // 33^-138
4773 -793, // 33^-132
4774 -763, // 33^-126
4775 -733, // 33^-120
4776 -703, // 33^-114
4777 -672, // 33^-108
4778 -642, // 33^-102
4779 -612, // 33^-96
4780 -581, // 33^-90
4781 -551, // 33^-84
4782 -521, // 33^-78
4783 -491, // 33^-72
4784 -460, // 33^-66
4785 -430, // 33^-60
4786 -400, // 33^-54
4787 -370, // 33^-48
4788 -339, // 33^-42
4789 -309, // 33^-36
4790 -279, // 33^-30
4791 -249, // 33^-24
4792 -218, // 33^-18
4793 -188, // 33^-12
4794 -158, // 33^-6
4795 -127, // 33^0
4796 -97, // 33^6
4797 -67, // 33^12
4798 -37, // 33^18
4799 -6, // 33^24
4800 24, // 33^30
4801 54, // 33^36
4802 84, // 33^42
4803 115, // 33^48
4804 145, // 33^54
4805 175, // 33^60
4806 205, // 33^66
4807 236, // 33^72
4808 266, // 33^78
4809 296, // 33^84
4810 326, // 33^90
4811 357, // 33^96
4812 387, // 33^102
4813 417, // 33^108
4814 448, // 33^114
4815 478, // 33^120
4816 508, // 33^126
4817 538, // 33^132
4818 569, // 33^138
4819 599, // 33^144
4820 629, // 33^150
4821 659, // 33^156
4822 690, // 33^162
4823 720, // 33^168
4824 750, // 33^174
4825 780, // 33^180
4826 811, // 33^186
4827 841, // 33^192
4828 871, // 33^198
4829 ];
4830 const BASE33_SMALL_INT_POWERS: [u128; 6] = [1, 33, 1089, 35937, 1185921, 39135393];
4831 const BASE33_STEP: i32 = 6;
4832 const BASE33_BIAS: i32 = 228;
4833
4834 // BASE34
4835
4836 const BASE34_SMALL_MANTISSA: [u128; 6] = [
4837 170141183460469231731687303715884105728, // 34^0
4838 180775007426748558714917760198126862336, // 34^1
4839 192073445390920343634600120210509791232, // 34^2
4840 204078035727852865111762627723666653184, // 34^3
4841 216832912960843669181247791956395819008, // 34^4
4842 230384970020896398505075778953670557696, // 34^5
4843 ];
4844 const BASE34_SMALL_EXPONENT: [i32; 6] = [
4845 -127, // 34^0
4846 -122, // 34^1
4847 -117, // 34^2
4848 -112, // 34^3
4849 -107, // 34^4
4850 -102, // 34^5
4851 ];
4852 const BASE34_LARGE_MANTISSA: [u128; 72] = [
4853 177178627816250193201809052313908765038, // 34^-228
4854 254908880844119689445018585029338745822, // 34^-222
4855 183370134237042583472660416437030762483, // 34^-216
4856 263816670637481076390123392064426194701, // 34^-210
4857 189778002824260993825223275854263893366, // 34^-204
4858 273035743108558333663040444930692235847, // 34^-198
4859 196409794352921881357331916371145369426, // 34^-192
4860 282576976029244796208883094031259474966, // 34^-186
4861 203273333809293576669182005378991774735, // 34^-180
4862 292451627295127901322196175360309190338, // 34^-174
4863 210376719623757394611528557965027181599, // 34^-168
4864 302671348208910116654395983418902348443, // 34^-162
4865 217728333226311038599715596529740433091, // 34^-156
4866 313248197228018957952397977805898800839, // 34^-150
4867 225336848935989032116058614991615739830, // 34^-144
4868 324194654192627182361160566056046446660, // 34^-138
4869 233211244195868906543198111154344051285, // 34^-132
4870 335523635050871088900625460663893770435, // 34^-126
4871 241360810165739638162969982622013142483, // 34^-120
4872 173624253549320755964330470575918052959, // 34^-114
4873 249795162684930840147804514904540284970, // 34^-108
4874 179691552375964624115693619162436412029, // 34^-102
4875 258524253618237975606418771469177669493, // 34^-96
4876 185970872935167515117533503151908736546, // 34^-90
4877 267558382598330880564928534158522761469, // 34^-84
4878 192469624325502244069180532494789364726, // 34^-78
4879 276908209178500704519431941303594138118, // 34^-72
4880 199195474556460799929094324231727524305, // 34^-66
4881 286584765410084542875511011996966308779, // 34^-60
4882 206156359596095351859662099550265135432, // 34^-54
4883 296599468859408121472112670217716316867, // 34^-48
4884 213360492734829033350750838314127106094, // 34^-42
4885 306964136079605489713373754120772284157, // 34^-36
4886 220816374276485055706958449270700673524, // 34^-30
4887 317690996553211397504541477525504659745, // 34^-24
4888 228532801567968794073232940648013889325, // 34^-18
4889 328792707121977505492535302517672775182, // 34^-12
4890 236518879379437072732268269343858967136, // 34^-6
4891 170141183460469231731687303715884105728, // 34^0
4892 244784030647202423411643015138274967552, // 34^6
4893 176086766417174433233313223161344425984, // 34^12
4894 253338007592048088741599978367647481856, // 34^18
4895 182240117745863932172015090234506084352, // 34^24
4896 262190903226072497809728032921351003168, // 34^30
4897 188608497911442742195268251474898499613, // 34^36
4898 271353163261640374618023568003458637143, // 34^42
4899 195199421095732140407812372336079928061, // 34^48
4900 280835598436492094076350884217966821974, // 34^54
4901 202020664063606263361049018383687293681, // 34^60
4902 290649397269553933781951224423558743337, // 34^66
4903 209080275338955809947349984471742343690, // 34^72
4904 300806139262500062617960370620227418603, // 34^78
4905 216386584701305758176605078134277823932, // 34^84
4906 311317808562643058781928971959145202656, // 34^90
4907 223948213014292349032159641795245781843, // 34^96
4908 322196808103274080809106622508050735664, // 34^102
4909 231774082397596158130210248504430880773, // 34^108
4910 333455974238137167751959613429477643393, // 34^114
4911 239873426754333326759263874720553852658, // 34^120
4912 172554295943652591814138834633669982456, // 34^126
4913 248255802666326436218178945574152405546, // 34^132
4914 178584205106164167247426311765412935775, // 34^138
4915 256931100670110578075784008065054807112, // 34^144
4916 184824829419575343010846487395966556532, // 34^150
4917 265909556926979410208640982981191461086, // 34^156
4918 191283532323968216046404126970062690800, // 34^162
4919 275201765300840924300371814765015192837, // 34^168
4920 197967934574808286676526111499839216564, // 34^174
4921 284818689858133833493377548255268489047, // 34^180
4922 204885923234829474007514465274285458561, // 34^186
4923 294771677804553486829405243638525556429, // 34^192
4924 212045660980140516237478265085420658486, // 34^198
4925 ];
4926 const BASE34_LARGE_EXPONENT: [i32; 72] = [
4927 -1287, // 34^-228
4928 -1257, // 34^-222
4929 -1226, // 34^-216
4930 -1196, // 34^-210
4931 -1165, // 34^-204
4932 -1135, // 34^-198
4933 -1104, // 34^-192
4934 -1074, // 34^-186
4935 -1043, // 34^-180
4936 -1013, // 34^-174
4937 -982, // 34^-168
4938 -952, // 34^-162
4939 -921, // 34^-156
4940 -891, // 34^-150
4941 -860, // 34^-144
4942 -830, // 34^-138
4943 -799, // 34^-132
4944 -769, // 34^-126
4945 -738, // 34^-120
4946 -707, // 34^-114
4947 -677, // 34^-108
4948 -646, // 34^-102
4949 -616, // 34^-96
4950 -585, // 34^-90
4951 -555, // 34^-84
4952 -524, // 34^-78
4953 -494, // 34^-72
4954 -463, // 34^-66
4955 -433, // 34^-60
4956 -402, // 34^-54
4957 -372, // 34^-48
4958 -341, // 34^-42
4959 -311, // 34^-36
4960 -280, // 34^-30
4961 -250, // 34^-24
4962 -219, // 34^-18
4963 -189, // 34^-12
4964 -158, // 34^-6
4965 -127, // 34^0
4966 -97, // 34^6
4967 -66, // 34^12
4968 -36, // 34^18
4969 -5, // 34^24
4970 25, // 34^30
4971 56, // 34^36
4972 86, // 34^42
4973 117, // 34^48
4974 147, // 34^54
4975 178, // 34^60
4976 208, // 34^66
4977 239, // 34^72
4978 269, // 34^78
4979 300, // 34^84
4980 330, // 34^90
4981 361, // 34^96
4982 391, // 34^102
4983 422, // 34^108
4984 452, // 34^114
4985 483, // 34^120
4986 514, // 34^126
4987 544, // 34^132
4988 575, // 34^138
4989 605, // 34^144
4990 636, // 34^150
4991 666, // 34^156
4992 697, // 34^162
4993 727, // 34^168
4994 758, // 34^174
4995 788, // 34^180
4996 819, // 34^186
4997 849, // 34^192
4998 880, // 34^198
4999 ];
5000 const BASE34_SMALL_INT_POWERS: [u128; 6] = [1, 34, 1156, 39304, 1336336, 45435424];
5001 const BASE34_STEP: i32 = 6;
5002 const BASE34_BIAS: i32 = 228;
5003
5004 // BASE35
5005
5006 const BASE35_SMALL_MANTISSA: [u128; 6] = [
5007 170141183460469231731687303715884105728, // 35^0
5008 186091919409888222206532988439248240640, // 35^1
5009 203538036854565243038395456105427763200, // 35^2
5010 222619727809680734573245030115311616000, // 35^3
5011 243490327291838303439486751688622080000, // 35^4
5012 266317545475448144386938634659430400000, // 35^5
5013 ];
5014 const BASE35_SMALL_EXPONENT: [i32; 6] = [
5015 -127, // 35^0
5016 -122, // 35^1
5017 -117, // 35^2
5018 -112, // 35^3
5019 -107, // 35^4
5020 -102, // 35^5
5021 ];
5022 const BASE35_LARGE_MANTISSA: [u128; 71] = [
5023 209347927024496598038547144935237941328, // 35^-222
5024 179203738418473223738234323205585013488, // 35^-216
5025 306800075067366652359189609572260396844, // 35^-210
5026 262623667597658781475957209306702595701, // 35^-204
5027 224808259148244964176155115402974869951, // 35^-198
5028 192437923982884034851744022831878031683, // 35^-192
5029 329457242604437106875016361913696434196, // 35^-186
5030 282018410035885035080273518999343445370, // 35^-180
5031 241410335891937127541744115564170038883, // 35^-174
5032 206649453374488156391879990784284316065, // 35^-168
5033 176893820317164915550880607303262990177, // 35^-162
5034 302845453064861578599747045789577351117, // 35^-156
5035 259238475028744868618971960605253012775, // 35^-150
5036 221910503377561727015952290044860359194, // 35^-144
5037 189957418565367403947310019950147953923, // 35^-138
5038 325210571999150993462493010696415973233, // 35^-132
5039 278383221194439940371876875109029372360, // 35^-126
5040 238298581027663491439386725539968731964, // 35^-120
5041 203985762777473298078638682440591083627, // 35^-114
5042 174613676827044081042213382537397413381, // 35^-108
5043 298941805740831610317914779329181594758, // 35^-102
5044 255896917250379178747915691007066092001, // 35^-96
5045 219050099386294168656703063834650082992, // 35^-90
5046 187508886612326915552639247886565481996, // 35^-84
5047 321018640549353575448221161417409055741, // 35^-78
5048 274794889570264049674062490664049677426, // 35^-72
5049 235226936369523138128743288428339150410, // 35^-66
5050 201356406883409564599485887013038683702, // 35^-60
5051 172362924156377643998457025163202983813, // 35^-54
5052 295088476036816041433113722500648405442, // 35^-48
5053 252598431814515573631538400793788490787, // 35^-42
5054 216226565713775509518577464877951003673, // 35^-36
5055 185091915989032531210622402180350455682, // 35^-30
5056 316880742672855387564028424008808371736, // 35^-24
5057 271252811178556028546302550648486766486, // 35^-18
5058 232194884901007304160476988045002650981, // 35^-12
5059 198760943121441293094365080225590768425, // 35^-6
5060 170141183460469231731687303715884105728, // 35^0
5061 291284815363771407923214131658752000000, // 35^6
5062 249342463523006462279286784000000000000, // 35^12
5063 213439427105318371328000000000000000000, // 35^18
5064 182706099873129286194801330566406250000, // 35^24
5065 312796181882350172840701732490664710439, // 35^30
5066 267756389819817671992755772413469185401, // 35^36
5067 229201916269897841937750664282591869365, // 35^42
5068 196198934625406481835921498002300001382, // 35^48
5069 335896161555784742544555459149306885413, // 35^54
5070 287530183492901554386658282699185698307, // 35^60
5071 246128464334152340394473578644658105769, // 35^66
5072 210688214432220328999897334535237907298, // 35^72
5073 180351036686161310983217274120661055754, // 35^78
5074 308764270668182755993104788402294107778, // 35^84
5075 264305036979502132888830858069861274896, // 35^90
5076 226247526702365186299998179464172492810, // 35^96
5077 193669950160303864708173829536684422103, // 35^102
5078 331566493935091266452974274160244175815, // 35^108
5079 283823948447894890028153679891537227671, // 35^114
5080 242955893270455896832007072848205740580, // 35^120
5081 207972464612800582882401068589523181243, // 35^126
5082 178026330025978501184229413909552478799, // 35^132
5083 304784330382628027085206214062708598478, // 35^138
5084 260898171728955674614898641290082042559, // 35^144
5085 223331218918173589647399860035052277272, // 35^150
5086 191173564049707817673529979461919468076, // 35^156
5087 327292635293038256953486831534470016773, // 35^162
5088 280165486398550695538293601153410149006, // 35^168
5089 239824216327565160313568077123618791086, // 35^174
5090 205291720534454460326603808102056989101, // 35^180
5091 175731588600014458664842906141703880790, // 35^186
5092 300855691125661557416025651977765954086, // 35^192
5093 257535220627636274500677259708261311842, // 35^198
5094 ];
5095 const BASE35_LARGE_EXPONENT: [i32; 71] = [
5096 -1266, // 35^-222
5097 -1235, // 35^-216
5098 -1205, // 35^-210
5099 -1174, // 35^-204
5100 -1143, // 35^-198
5101 -1112, // 35^-192
5102 -1082, // 35^-186
5103 -1051, // 35^-180
5104 -1020, // 35^-174
5105 -989, // 35^-168
5106 -958, // 35^-162
5107 -928, // 35^-156
5108 -897, // 35^-150
5109 -866, // 35^-144
5110 -835, // 35^-138
5111 -805, // 35^-132
5112 -774, // 35^-126
5113 -743, // 35^-120
5114 -712, // 35^-114
5115 -681, // 35^-108
5116 -651, // 35^-102
5117 -620, // 35^-96
5118 -589, // 35^-90
5119 -558, // 35^-84
5120 -528, // 35^-78
5121 -497, // 35^-72
5122 -466, // 35^-66
5123 -435, // 35^-60
5124 -404, // 35^-54
5125 -374, // 35^-48
5126 -343, // 35^-42
5127 -312, // 35^-36
5128 -281, // 35^-30
5129 -251, // 35^-24
5130 -220, // 35^-18
5131 -189, // 35^-12
5132 -158, // 35^-6
5133 -127, // 35^0
5134 -97, // 35^6
5135 -66, // 35^12
5136 -35, // 35^18
5137 -4, // 35^24
5138 26, // 35^30
5139 57, // 35^36
5140 88, // 35^42
5141 119, // 35^48
5142 149, // 35^54
5143 180, // 35^60
5144 211, // 35^66
5145 242, // 35^72
5146 273, // 35^78
5147 303, // 35^84
5148 334, // 35^90
5149 365, // 35^96
5150 396, // 35^102
5151 426, // 35^108
5152 457, // 35^114
5153 488, // 35^120
5154 519, // 35^126
5155 550, // 35^132
5156 580, // 35^138
5157 611, // 35^144
5158 642, // 35^150
5159 673, // 35^156
5160 703, // 35^162
5161 734, // 35^168
5162 765, // 35^174
5163 796, // 35^180
5164 827, // 35^186
5165 857, // 35^192
5166 888, // 35^198
5167 ];
5168 const BASE35_SMALL_INT_POWERS: [u128; 6] = [1, 35, 1225, 42875, 1500625, 52521875];
5169 const BASE35_STEP: i32 = 6;
5170 const BASE35_BIAS: i32 = 222;
5171
5172 // BASE36
5173
5174 const BASE36_SMALL_MANTISSA: [u128; 6] = [
5175 170141183460469231731687303715884105728, // 36^0
5176 191408831393027885698148216680369618944, // 36^1
5177 215334935317156371410416743765415821312, // 36^2
5178 242251802231800917836718836736092798976, // 36^3
5179 272533277510776032566308691328104398848, // 36^4
5180 306599937199623036637097277744117448704, // 36^5
5181 ];
5182 const BASE36_SMALL_EXPONENT: [i32; 6] = [
5183 -127, // 36^0
5184 -122, // 36^1
5185 -117, // 36^2
5186 -112, // 36^3
5187 -107, // 36^4
5188 -102, // 36^5
5189 ];
5190 const BASE36_LARGE_MANTISSA: [u128; 71] = [
5191 206105367118290399407064648402758144682, // 36^-222
5192 208917317212507950117664039252872831665, // 36^-216
5193 211767631486382365261996259087726574961, // 36^-210
5194 214656833352574406771088703014069554755, // 36^-204
5195 217585453364802351586979201161384846208, // 36^-198
5196 220554029315269330081435801781477974040, // 36^-192
5197 223563106333419891448609016293621894840, // 36^-186
5198 226613236986043931067161987739751269180, // 36^-180
5199 229704981378746362247969882824709232796, // 36^-174
5200 232838907258801165579649662968151663564, // 36^-168
5201 236015590119408703302029793810763336632, // 36^-162
5202 239235613305375443823879271798297650114, // 36^-156
5203 242499568120235502703106353919523432682, // 36^-150
5204 245808053934833671173174941698733239342, // 36^-144
5205 249161678297389871677290466673500998400, // 36^-138
5206 252561057045065251911260457800735557729, // 36^-132
5207 256006814417050404626793229969178591795, // 36^-126
5208 259499583169196479959998361450291137700, // 36^-120
5209 263040004690210240376322725691803307553, // 36^-114
5210 266628729119434395515123988465075762881, // 36^-108
5211 270266415466234845327287688358055741312, // 36^-102
5212 273953731731016754981191818978678705632, // 36^-96
5213 277691355027891684120101092281051616669, // 36^-90
5214 281479971709018296242657937208050445965, // 36^-84
5215 285320277490639481303204301467482637509, // 36^-78
5216 289212977580839036146652597763405686112, // 36^-72
5217 293158786809041363160730749526943361727, // 36^-66
5218 297158429757277967604640789526650060843, // 36^-60
5219 301212640893244858516269504216828222245, // 36^-54
5220 305322164705175286969651759320250334279, // 36^-48
5221 309487755838552588810803796052767101096, // 36^-42
5222 313710179234688236904530296665341569850, // 36^-36
5223 317990210271190550439415903835536554761, // 36^-30
5224 322328634904349856025836233807108654402, // 36^-24
5225 326726249813466247246220462666861782844, // 36^-18
5226 331183862547146446042592332649497399781, // 36^-12
5227 335702291671596630919115661345637412333, // 36^-6
5228 170141183460469231731687303715884105728, // 36^0
5229 172462464674787958108367218731066064896, // 36^6
5230 174815415743320440759790006808579407872, // 36^12
5231 177200468746272961345336076752392290304, // 36^18
5232 179618061658836457920697688990341398528, // 36^24
5233 182068638431613361423174859113151594496, // 36^30
5234 184552649072141716781794491390137475072, // 36^36
5235 187070549727531559196917812917453861026, // 36^42
5236 189622802768228720381105803326920695033, // 36^48
5237 192209876872921446586714266254161951235, // 36^54
5238 194832247114605420104007752175098574688, // 36^60
5239 197490395047822988635051696441052554380, // 36^66
5240 200184808797092622572327630249651738267, // 36^72
5241 202915983146544838776512848181734408257, // 36^78
5242 205684419630781050995309380627725821797, // 36^84
5243 208490626626972031635281014538153149532, // 36^90
5244 211335119448212897232599978727666183358, // 36^96
5245 214218420438151760708217936124820030498, // 36^102
5246 217141059066909427380630585083218539864, // 36^108
5247 220103572028307748788051030668660629356, // 36^114
5248 223106503338424488684979682521025988628, // 36^120
5249 226150404435492799169987273137391228527, // 36^126
5250 229235834281163651816744244429413474808, // 36^132
5251 232363359463149818964276081092475750857, // 36^138
5252 235533554299270254021060647605641184828, // 36^144
5253 238747000942913976797497733353022683918, // 36^150
5254 242004289489942830549695955106475311593, // 36^156
5255 245306018087052741642305313258629505287, // 36^162
5256 248652793041613380567795520750960012282, // 36^168
5257 252045228933006394543323172270604972624, // 36^174
5258 255483948725482657093998355855298189652, // 36^180
5259 258969583882559258973487053363982248701, // 36^186
5260 262502774482977247520692697766891651596, // 36^192
5261 266084169338241408156670471179837543899, // 36^198
5262 ];
5263 const BASE36_LARGE_EXPONENT: [i32; 71] = [
5264 -1275, // 36^-222
5265 -1244, // 36^-216
5266 -1213, // 36^-210
5267 -1182, // 36^-204
5268 -1151, // 36^-198
5269 -1120, // 36^-192
5270 -1089, // 36^-186
5271 -1058, // 36^-180
5272 -1027, // 36^-174
5273 -996, // 36^-168
5274 -965, // 36^-162
5275 -934, // 36^-156
5276 -903, // 36^-150
5277 -872, // 36^-144
5278 -841, // 36^-138
5279 -810, // 36^-132
5280 -779, // 36^-126
5281 -748, // 36^-120
5282 -717, // 36^-114
5283 -686, // 36^-108
5284 -655, // 36^-102
5285 -624, // 36^-96
5286 -593, // 36^-90
5287 -562, // 36^-84
5288 -531, // 36^-78
5289 -500, // 36^-72
5290 -469, // 36^-66
5291 -438, // 36^-60
5292 -407, // 36^-54
5293 -376, // 36^-48
5294 -345, // 36^-42
5295 -314, // 36^-36
5296 -283, // 36^-30
5297 -252, // 36^-24
5298 -221, // 36^-18
5299 -190, // 36^-12
5300 -159, // 36^-6
5301 -127, // 36^0
5302 -96, // 36^6
5303 -65, // 36^12
5304 -34, // 36^18
5305 -3, // 36^24
5306 28, // 36^30
5307 59, // 36^36
5308 90, // 36^42
5309 121, // 36^48
5310 152, // 36^54
5311 183, // 36^60
5312 214, // 36^66
5313 245, // 36^72
5314 276, // 36^78
5315 307, // 36^84
5316 338, // 36^90
5317 369, // 36^96
5318 400, // 36^102
5319 431, // 36^108
5320 462, // 36^114
5321 493, // 36^120
5322 524, // 36^126
5323 555, // 36^132
5324 586, // 36^138
5325 617, // 36^144
5326 648, // 36^150
5327 679, // 36^156
5328 710, // 36^162
5329 741, // 36^168
5330 772, // 36^174
5331 803, // 36^180
5332 834, // 36^186
5333 865, // 36^192
5334 896, // 36^198
5335 ];
5336 const BASE36_SMALL_INT_POWERS: [u128; 6] = [1, 36, 1296, 46656, 1679616, 60466176];
5337 const BASE36_STEP: i32 = 6;
5338 const BASE36_BIAS: i32 = 222;
5339
5340 }} // cfg_if
5341
5342 // HIGH LEVEL
5343 // ----------
5344
5345 pub(crate) const BASE10_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5346 small: ExtendedFloatArray { mant: &BASE10_SMALL_MANTISSA, exp: &BASE10_SMALL_EXPONENT },
5347 large: ExtendedFloatArray { mant: &BASE10_LARGE_MANTISSA, exp: &BASE10_LARGE_EXPONENT },
5348 small_int: &BASE10_SMALL_INT_POWERS,
5349 step: BASE10_STEP,
5350 bias: BASE10_BIAS,
5351 };
5352
5353 cfg_if! {
5354 if #[cfg(feature = "radix")] {
5355 pub(crate) const BASE3_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5356 small: ExtendedFloatArray { mant: &BASE3_SMALL_MANTISSA, exp: &BASE3_SMALL_EXPONENT },
5357 large: ExtendedFloatArray { mant: &BASE3_LARGE_MANTISSA, exp: &BASE3_LARGE_EXPONENT },
5358 small_int: &BASE3_SMALL_INT_POWERS,
5359 step: BASE3_STEP,
5360 bias: BASE3_BIAS,
5361 };
5362
5363 pub(crate) const BASE5_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5364 small: ExtendedFloatArray { mant: &BASE5_SMALL_MANTISSA, exp: &BASE5_SMALL_EXPONENT },
5365 large: ExtendedFloatArray { mant: &BASE5_LARGE_MANTISSA, exp: &BASE5_LARGE_EXPONENT },
5366 small_int: &BASE5_SMALL_INT_POWERS,
5367 step: BASE5_STEP,
5368 bias: BASE5_BIAS,
5369 };
5370
5371 pub(crate) const BASE6_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5372 small: ExtendedFloatArray { mant: &BASE6_SMALL_MANTISSA, exp: &BASE6_SMALL_EXPONENT },
5373 large: ExtendedFloatArray { mant: &BASE6_LARGE_MANTISSA, exp: &BASE6_LARGE_EXPONENT },
5374 small_int: &BASE6_SMALL_INT_POWERS,
5375 step: BASE6_STEP,
5376 bias: BASE6_BIAS,
5377 };
5378
5379 pub(crate) const BASE7_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5380 small: ExtendedFloatArray { mant: &BASE7_SMALL_MANTISSA, exp: &BASE7_SMALL_EXPONENT },
5381 large: ExtendedFloatArray { mant: &BASE7_LARGE_MANTISSA, exp: &BASE7_LARGE_EXPONENT },
5382 small_int: &BASE7_SMALL_INT_POWERS,
5383 step: BASE7_STEP,
5384 bias: BASE7_BIAS,
5385 };
5386
5387 pub(crate) const BASE9_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5388 small: ExtendedFloatArray { mant: &BASE9_SMALL_MANTISSA, exp: &BASE9_SMALL_EXPONENT },
5389 large: ExtendedFloatArray { mant: &BASE9_LARGE_MANTISSA, exp: &BASE9_LARGE_EXPONENT },
5390 small_int: &BASE9_SMALL_INT_POWERS,
5391 step: BASE9_STEP,
5392 bias: BASE9_BIAS,
5393 };
5394
5395 pub(crate) const BASE11_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5396 small: ExtendedFloatArray { mant: &BASE11_SMALL_MANTISSA, exp: &BASE11_SMALL_EXPONENT },
5397 large: ExtendedFloatArray { mant: &BASE11_LARGE_MANTISSA, exp: &BASE11_LARGE_EXPONENT },
5398 small_int: &BASE11_SMALL_INT_POWERS,
5399 step: BASE11_STEP,
5400 bias: BASE11_BIAS,
5401 };
5402
5403 pub(crate) const BASE12_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5404 small: ExtendedFloatArray { mant: &BASE12_SMALL_MANTISSA, exp: &BASE12_SMALL_EXPONENT },
5405 large: ExtendedFloatArray { mant: &BASE12_LARGE_MANTISSA, exp: &BASE12_LARGE_EXPONENT },
5406 small_int: &BASE12_SMALL_INT_POWERS,
5407 step: BASE12_STEP,
5408 bias: BASE12_BIAS,
5409 };
5410
5411 pub(crate) const BASE13_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5412 small: ExtendedFloatArray { mant: &BASE13_SMALL_MANTISSA, exp: &BASE13_SMALL_EXPONENT },
5413 large: ExtendedFloatArray { mant: &BASE13_LARGE_MANTISSA, exp: &BASE13_LARGE_EXPONENT },
5414 small_int: &BASE13_SMALL_INT_POWERS,
5415 step: BASE13_STEP,
5416 bias: BASE13_BIAS,
5417 };
5418
5419 pub(crate) const BASE14_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5420 small: ExtendedFloatArray { mant: &BASE14_SMALL_MANTISSA, exp: &BASE14_SMALL_EXPONENT },
5421 large: ExtendedFloatArray { mant: &BASE14_LARGE_MANTISSA, exp: &BASE14_LARGE_EXPONENT },
5422 small_int: &BASE14_SMALL_INT_POWERS,
5423 step: BASE14_STEP,
5424 bias: BASE14_BIAS,
5425 };
5426
5427 pub(crate) const BASE15_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5428 small: ExtendedFloatArray { mant: &BASE15_SMALL_MANTISSA, exp: &BASE15_SMALL_EXPONENT },
5429 large: ExtendedFloatArray { mant: &BASE15_LARGE_MANTISSA, exp: &BASE15_LARGE_EXPONENT },
5430 small_int: &BASE15_SMALL_INT_POWERS,
5431 step: BASE15_STEP,
5432 bias: BASE15_BIAS,
5433 };
5434
5435 pub(crate) const BASE17_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5436 small: ExtendedFloatArray { mant: &BASE17_SMALL_MANTISSA, exp: &BASE17_SMALL_EXPONENT },
5437 large: ExtendedFloatArray { mant: &BASE17_LARGE_MANTISSA, exp: &BASE17_LARGE_EXPONENT },
5438 small_int: &BASE17_SMALL_INT_POWERS,
5439 step: BASE17_STEP,
5440 bias: BASE17_BIAS,
5441 };
5442
5443 pub(crate) const BASE18_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5444 small: ExtendedFloatArray { mant: &BASE18_SMALL_MANTISSA, exp: &BASE18_SMALL_EXPONENT },
5445 large: ExtendedFloatArray { mant: &BASE18_LARGE_MANTISSA, exp: &BASE18_LARGE_EXPONENT },
5446 small_int: &BASE18_SMALL_INT_POWERS,
5447 step: BASE18_STEP,
5448 bias: BASE18_BIAS,
5449 };
5450
5451 pub(crate) const BASE19_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5452 small: ExtendedFloatArray { mant: &BASE19_SMALL_MANTISSA, exp: &BASE19_SMALL_EXPONENT },
5453 large: ExtendedFloatArray { mant: &BASE19_LARGE_MANTISSA, exp: &BASE19_LARGE_EXPONENT },
5454 small_int: &BASE19_SMALL_INT_POWERS,
5455 step: BASE19_STEP,
5456 bias: BASE19_BIAS,
5457 };
5458
5459 pub(crate) const BASE20_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5460 small: ExtendedFloatArray { mant: &BASE20_SMALL_MANTISSA, exp: &BASE20_SMALL_EXPONENT },
5461 large: ExtendedFloatArray { mant: &BASE20_LARGE_MANTISSA, exp: &BASE20_LARGE_EXPONENT },
5462 small_int: &BASE20_SMALL_INT_POWERS,
5463 step: BASE20_STEP,
5464 bias: BASE20_BIAS,
5465 };
5466
5467 pub(crate) const BASE21_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5468 small: ExtendedFloatArray { mant: &BASE21_SMALL_MANTISSA, exp: &BASE21_SMALL_EXPONENT },
5469 large: ExtendedFloatArray { mant: &BASE21_LARGE_MANTISSA, exp: &BASE21_LARGE_EXPONENT },
5470 small_int: &BASE21_SMALL_INT_POWERS,
5471 step: BASE21_STEP,
5472 bias: BASE21_BIAS,
5473 };
5474
5475 pub(crate) const BASE22_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5476 small: ExtendedFloatArray { mant: &BASE22_SMALL_MANTISSA, exp: &BASE22_SMALL_EXPONENT },
5477 large: ExtendedFloatArray { mant: &BASE22_LARGE_MANTISSA, exp: &BASE22_LARGE_EXPONENT },
5478 small_int: &BASE22_SMALL_INT_POWERS,
5479 step: BASE22_STEP,
5480 bias: BASE22_BIAS,
5481 };
5482
5483 pub(crate) const BASE23_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5484 small: ExtendedFloatArray { mant: &BASE23_SMALL_MANTISSA, exp: &BASE23_SMALL_EXPONENT },
5485 large: ExtendedFloatArray { mant: &BASE23_LARGE_MANTISSA, exp: &BASE23_LARGE_EXPONENT },
5486 small_int: &BASE23_SMALL_INT_POWERS,
5487 step: BASE23_STEP,
5488 bias: BASE23_BIAS,
5489 };
5490
5491 pub(crate) const BASE24_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5492 small: ExtendedFloatArray { mant: &BASE24_SMALL_MANTISSA, exp: &BASE24_SMALL_EXPONENT },
5493 large: ExtendedFloatArray { mant: &BASE24_LARGE_MANTISSA, exp: &BASE24_LARGE_EXPONENT },
5494 small_int: &BASE24_SMALL_INT_POWERS,
5495 step: BASE24_STEP,
5496 bias: BASE24_BIAS,
5497 };
5498
5499 pub(crate) const BASE25_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5500 small: ExtendedFloatArray { mant: &BASE25_SMALL_MANTISSA, exp: &BASE25_SMALL_EXPONENT },
5501 large: ExtendedFloatArray { mant: &BASE25_LARGE_MANTISSA, exp: &BASE25_LARGE_EXPONENT },
5502 small_int: &BASE25_SMALL_INT_POWERS,
5503 step: BASE25_STEP,
5504 bias: BASE25_BIAS,
5505 };
5506
5507 pub(crate) const BASE26_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5508 small: ExtendedFloatArray { mant: &BASE26_SMALL_MANTISSA, exp: &BASE26_SMALL_EXPONENT },
5509 large: ExtendedFloatArray { mant: &BASE26_LARGE_MANTISSA, exp: &BASE26_LARGE_EXPONENT },
5510 small_int: &BASE26_SMALL_INT_POWERS,
5511 step: BASE26_STEP,
5512 bias: BASE26_BIAS,
5513 };
5514
5515 pub(crate) const BASE27_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5516 small: ExtendedFloatArray { mant: &BASE27_SMALL_MANTISSA, exp: &BASE27_SMALL_EXPONENT },
5517 large: ExtendedFloatArray { mant: &BASE27_LARGE_MANTISSA, exp: &BASE27_LARGE_EXPONENT },
5518 small_int: &BASE27_SMALL_INT_POWERS,
5519 step: BASE27_STEP,
5520 bias: BASE27_BIAS,
5521 };
5522
5523 pub(crate) const BASE28_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5524 small: ExtendedFloatArray { mant: &BASE28_SMALL_MANTISSA, exp: &BASE28_SMALL_EXPONENT },
5525 large: ExtendedFloatArray { mant: &BASE28_LARGE_MANTISSA, exp: &BASE28_LARGE_EXPONENT },
5526 small_int: &BASE28_SMALL_INT_POWERS,
5527 step: BASE28_STEP,
5528 bias: BASE28_BIAS,
5529 };
5530
5531 pub(crate) const BASE29_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5532 small: ExtendedFloatArray { mant: &BASE29_SMALL_MANTISSA, exp: &BASE29_SMALL_EXPONENT },
5533 large: ExtendedFloatArray { mant: &BASE29_LARGE_MANTISSA, exp: &BASE29_LARGE_EXPONENT },
5534 small_int: &BASE29_SMALL_INT_POWERS,
5535 step: BASE29_STEP,
5536 bias: BASE29_BIAS,
5537 };
5538
5539 pub(crate) const BASE30_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5540 small: ExtendedFloatArray { mant: &BASE30_SMALL_MANTISSA, exp: &BASE30_SMALL_EXPONENT },
5541 large: ExtendedFloatArray { mant: &BASE30_LARGE_MANTISSA, exp: &BASE30_LARGE_EXPONENT },
5542 small_int: &BASE30_SMALL_INT_POWERS,
5543 step: BASE30_STEP,
5544 bias: BASE30_BIAS,
5545 };
5546
5547 pub(crate) const BASE31_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5548 small: ExtendedFloatArray { mant: &BASE31_SMALL_MANTISSA, exp: &BASE31_SMALL_EXPONENT },
5549 large: ExtendedFloatArray { mant: &BASE31_LARGE_MANTISSA, exp: &BASE31_LARGE_EXPONENT },
5550 small_int: &BASE31_SMALL_INT_POWERS,
5551 step: BASE31_STEP,
5552 bias: BASE31_BIAS,
5553 };
5554
5555 pub(crate) const BASE33_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5556 small: ExtendedFloatArray { mant: &BASE33_SMALL_MANTISSA, exp: &BASE33_SMALL_EXPONENT },
5557 large: ExtendedFloatArray { mant: &BASE33_LARGE_MANTISSA, exp: &BASE33_LARGE_EXPONENT },
5558 small_int: &BASE33_SMALL_INT_POWERS,
5559 step: BASE33_STEP,
5560 bias: BASE33_BIAS,
5561 };
5562
5563 pub(crate) const BASE34_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5564 small: ExtendedFloatArray { mant: &BASE34_SMALL_MANTISSA, exp: &BASE34_SMALL_EXPONENT },
5565 large: ExtendedFloatArray { mant: &BASE34_LARGE_MANTISSA, exp: &BASE34_LARGE_EXPONENT },
5566 small_int: &BASE34_SMALL_INT_POWERS,
5567 step: BASE34_STEP,
5568 bias: BASE34_BIAS,
5569 };
5570
5571 pub(crate) const BASE35_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5572 small: ExtendedFloatArray { mant: &BASE35_SMALL_MANTISSA, exp: &BASE35_SMALL_EXPONENT },
5573 large: ExtendedFloatArray { mant: &BASE35_LARGE_MANTISSA, exp: &BASE35_LARGE_EXPONENT },
5574 small_int: &BASE35_SMALL_INT_POWERS,
5575 step: BASE35_STEP,
5576 bias: BASE35_BIAS,
5577 };
5578
5579 pub(crate) const BASE36_POWERS: ModeratePathPowers<u128> = ModeratePathPowers {
5580 small: ExtendedFloatArray { mant: &BASE36_SMALL_MANTISSA, exp: &BASE36_SMALL_EXPONENT },
5581 large: ExtendedFloatArray { mant: &BASE36_LARGE_MANTISSA, exp: &BASE36_LARGE_EXPONENT },
5582 small_int: &BASE36_SMALL_INT_POWERS,
5583 step: BASE36_STEP,
5584 bias: BASE36_BIAS,
5585 };
5586
5587 }} // cfg_if
5588
5589 /// Get powers from radix.
get_powers(radix: u32) -> &'static ModeratePathPowers<u128>5590 pub(crate) fn get_powers(radix: u32)
5591 -> &'static ModeratePathPowers<u128>
5592 {
5593 debug_assert_radix!(radix);
5594
5595 #[cfg(not(feature = "radix"))] {
5596 &BASE10_POWERS
5597 }
5598
5599 #[cfg(feature = "radix")] {
5600 match radix {
5601 3 => &BASE3_POWERS,
5602 5 => &BASE5_POWERS,
5603 6 => &BASE6_POWERS,
5604 7 => &BASE7_POWERS,
5605 9 => &BASE9_POWERS,
5606 10 => &BASE10_POWERS,
5607 11 => &BASE11_POWERS,
5608 12 => &BASE12_POWERS,
5609 13 => &BASE13_POWERS,
5610 14 => &BASE14_POWERS,
5611 15 => &BASE15_POWERS,
5612 17 => &BASE17_POWERS,
5613 18 => &BASE18_POWERS,
5614 19 => &BASE19_POWERS,
5615 20 => &BASE20_POWERS,
5616 21 => &BASE21_POWERS,
5617 22 => &BASE22_POWERS,
5618 23 => &BASE23_POWERS,
5619 24 => &BASE24_POWERS,
5620 25 => &BASE25_POWERS,
5621 26 => &BASE26_POWERS,
5622 27 => &BASE27_POWERS,
5623 28 => &BASE28_POWERS,
5624 29 => &BASE29_POWERS,
5625 30 => &BASE30_POWERS,
5626 31 => &BASE31_POWERS,
5627 33 => &BASE33_POWERS,
5628 34 => &BASE34_POWERS,
5629 35 => &BASE35_POWERS,
5630 36 => &BASE36_POWERS,
5631 // Powers of 2, and others, should already be handled by now.
5632 _ => unreachable!(),
5633 }
5634 }
5635 }
5636
5637 // TESTS
5638 // -----
5639
5640 #[cfg(test)]
5641 mod tests {
5642 use util::test::*;
5643 use super::*;
5644
5645 #[test]
normalization_test()5646 fn normalization_test() {
5647 // Ensure each valid is normalized.
5648 for base in BASE_POWN.iter().cloned() {
5649 let powers = get_powers(base);
5650 for idx in 0..powers.small.len() {
5651 let fp = powers.get_small(idx);
5652 assert_eq!(fp.mant.leading_zeros(), 0);
5653 }
5654 for idx in 0..powers.large.len() {
5655 let fp = powers.get_large(idx);
5656 assert_eq!(fp.mant.leading_zeros(), 0);
5657 }
5658 }
5659 }
5660
5661 #[cfg(feature = "radix")]
5662 #[test]
5663 #[should_panic]
pow2_test()5664 fn pow2_test() {
5665 for base in BASE_POW2.iter().cloned() {
5666 let _ = get_powers(base);
5667 }
5668 }
5669 }
5670