serde_json/lexical/
large_powers64.rs

1// Adapted from https://github.com/Alexhuszagh/rust-lexical.
2
3//! Precalculated large powers for 64-bit limbs.
4
5/// Large powers (`&[u64]`) for base5 operations.
6const POW5_1: [u64; 1] = [5];
7const POW5_2: [u64; 1] = [25];
8const POW5_3: [u64; 1] = [625];
9const POW5_4: [u64; 1] = [390625];
10const POW5_5: [u64; 1] = [152587890625];
11const POW5_6: [u64; 2] = [3273344365508751233, 1262];
12const POW5_7: [u64; 3] = [7942358959831785217, 16807427164405733357, 1593091];
13const POW5_8: [u64; 5] = [
14    279109966635548161,
15    2554917779393558781,
16    14124656261812188652,
17    11976055582626787546,
18    2537941837315,
19];
20const POW5_9: [u64; 10] = [
21    13750482914757213185,
22    1302999927698857842,
23    14936872543252795590,
24    2788415840139466767,
25    2095640732773017264,
26    7205570348933370714,
27    7348167152523113408,
28    9285516396840364274,
29    6907659600622710236,
30    349175,
31];
32const POW5_10: [u64; 19] = [
33    8643096425819600897,
34    6743743997439985372,
35    14059704609098336919,
36    10729359125898331411,
37    4933048501514368705,
38    12258131603170554683,
39    2172371001088594721,
40    13569903330219142946,
41    13809142207969578845,
42    16716360519037769646,
43    9631256923806107285,
44    12866941232305103710,
45    1397931361048440292,
46    7619627737732970332,
47    12725409486282665900,
48    11703051443360963910,
49    9947078370803086083,
50    13966287901448440471,
51    121923442132,
52];
53const POW5_11: [u64; 38] = [
54    17679772531488845825,
55    2216509366347768155,
56    1568689219195129479,
57    5511594616325588277,
58    1067709417009240089,
59    9070650952098657518,
60    11515285870634858015,
61    2539561553659505564,
62    17604889300961091799,
63    14511540856854204724,
64    12099083339557485471,
65    7115240299237943815,
66    313979240050606788,
67    10004784664717172195,
68    15570268847930131473,
69    10359715202835930803,
70    17685054012115162812,
71    13183273382855797757,
72    7743260039872919062,
73    9284593436392572926,
74    11105921222066415013,
75    18198799323400703846,
76    16314988383739458320,
77    4387527177871570570,
78    8476708682254672590,
79    4925096874831034057,
80    14075687868072027455,
81    112866656203221926,
82    9852830467773230418,
83    25755239915196746,
84    2201493076310172510,
85    8342165458688466438,
86    13954006576066379050,
87    15193819059903295636,
88    12565616718911389531,
89    3815854855847885129,
90    15696762163583540628,
91    805,
92];
93const POW5_12: [u64; 75] = [
94    16359721904723189761,
95    5323973632697650495,
96    17187956456762001185,
97    3930387638628283780,
98    3374723710406992273,
99    16884225088663222131,
100    10967440051041439154,
101    9686916182456720060,
102    10554548046311730194,
103    7390739362393647554,
104    6316162333127736719,
105    18122464886584070891,
106    4044404959645932768,
107    3801320885861987401,
108    12080950653257274590,
109    16414324262488991299,
110    16395687498836410113,
111    12173633940896186260,
112    10843185433142632150,
113    11048169832730399808,
114    12674828934734683716,
115    17370808310130582550,
116    10500926985433408692,
117    10252725158410704555,
118    14170108270502067523,
119    3698946465517688080,
120    989984870770509463,
121    10965601426733943069,
122    11389898658438335655,
123    6901098232861256586,
124    1921335291173932590,
125    7662788640922083388,
126    9775023833308395430,
127    4640401278902814207,
128    14532050972198413359,
129    8378549018693130223,
130    11672322628395371653,
131    8930704142764178555,
132    6275193859483102017,
133    15782593304269205087,
134    8673060659034172558,
135    8018354414354334043,
136    1824896661540749038,
137    11345563346725559868,
138    14959216444480821949,
139    970189517688324683,
140    3338835207603007873,
141    17684964260791738489,
142    1436466329061721851,
143    4554134986752476101,
144    6398757850768963907,
145    4709779218751158342,
146    10033277748582410264,
147    17932125878679265063,
148    10004750887749091440,
149    256584531835386932,
150    14396282740722731628,
151    3086085133731396950,
152    17831272085689600064,
153    10573926491412564693,
154    14888061047859191737,
155    4570995450261499817,
156    10410165022312935266,
157    5691078631447480790,
158    8632710455805418155,
159    790672778942823293,
160    16505464105756800547,
161    2092171438149740401,
162    17505030673829275878,
163    1291290830058928444,
164    14856191690683232796,
165    8916773426496500052,
166    10152003807578858265,
167    13104441193763861714,
168    649395,
169];
170const POW5_13: [u64; 149] = [
171    15308384451594534913,
172    17913664074042735335,
173    6115977719198531863,
174    5794980608663993169,
175    16544350702855106930,
176    9253787637781258566,
177    4977988951675168190,
178    9087837664087448770,
179    2098480401110016986,
180    15474332540882100712,
181    14042133997396540944,
182    1090855284423485362,
183    12639956485351058381,
184    1454115676006639319,
185    3180465001342538023,
186    14649076551958697729,
187    9801292446545910916,
188    13552201410826594004,
189    6101141927469189381,
190    1881431857880609316,
191    4907847477899433595,
192    8714572486973123228,
193    3514969632331374520,
194    11667642286891470094,
195    2391499697425323350,
196    17486585679659076043,
197    18267223761882105642,
198    2886610765822313148,
199    9302834862968900288,
200    15246507846733637044,
201    15924227519624562840,
202    9743741243284697760,
203    3159780987244964246,
204    7304816812369628428,
205    17584602612559717809,
206    4146812420657846766,
207    14525415362681041515,
208    8477630142371600195,
209    4380695748062263745,
210    12119915994367943173,
211    16970630866565485122,
212    4332724980155264503,
213    8079943140620527639,
214    1687908087554405626,
215    17051081099834002166,
216    12638146269730763230,
217    11883749876933445771,
218    4662462156371383785,
219    4796962238316531176,
220    3325504751659868927,
221    6469595803187862550,
222    5852556621152583005,
223    9229334792448387881,
224    17979733373938620709,
225    13951623534175792756,
226    17075879371091039277,
227    14212246479457938037,
228    4008999959804158260,
229    2414266395366403722,
230    3252733766253918247,
231    6382678985007829216,
232    2245927470982310841,
233    13790724502051307301,
234    13116936866733148041,
235    9718402891306794538,
236    13516274400356104875,
237    17859223875778049403,
238    4396895129099725471,
239    3563053650368467915,
240    12176845952536972668,
241    3492050964335269015,
242    2740656767075170753,
243    4409704077614761919,
244    10237775279597492710,
245    3314206875098230827,
246    16437361028114095448,
247    12361736225407656572,
248    16792510651790145480,
249    11449053143229929935,
250    18336641737580333136,
251    6558939822118891088,
252    4606255756908155300,
253    2360792578991605004,
254    160428430149144538,
255    11644861220729221511,
256    10785178451159739786,
257    14923560618031934681,
258    1902620814992781610,
259    14064076995338910412,
260    11547019064112212657,
261    16847481479966225734,
262    8331994491163145469,
263    11739712981738851885,
264    8008309968651120619,
265    10266969595459035264,
266    15175153381217702033,
267    12208659352573720245,
268    7714061140750342961,
269    2892831567213510541,
270    15453714249045017319,
271    71020323573871677,
272    15431137995750602633,
273    5659146884637671933,
274    5998809010488554503,
275    16552192379299157850,
276    1192197967194298797,
277    16157555793424861524,
278    10929371590994640255,
279    3194469143425738352,
280    6651586784672005225,
281    11062427140788057791,
282    6834443579468668318,
283    16421563197797455922,
284    6251046422506172884,
285    13952303462156793860,
286    16632486601871393224,
287    11313454360291325172,
288    5587835232504462834,
289    3105197524618514637,
290    18268568531031972989,
291    2397205535804309313,
292    59413027864729597,
293    11869878125348715710,
294    12592801707270523266,
295    8070632061321113656,
296    18403647807860650811,
297    267109013517069093,
298    6537214311028855260,
299    5220826919973709902,
300    3448740582779163661,
301    16822239213112884941,
302    5975299384311048185,
303    10294433804430712138,
304    4739856055412448774,
305    12057273038326387897,
306    13119002941950056609,
307    3354445304051737058,
308    13592813067499314594,
309    3890182464434078629,
310    17820384357466425060,
311    9785228118969879380,
312    1778431746734556271,
313    10075313876350055029,
314    13994048489400919028,
315    17948287074199726448,
316    2815088342305858722,
317    2676626035777198370,
318    1174257960026283968,
319    421714788677,
320];
321const POW5_14: [u64; 298] = [
322    11471884475673051137,
323    8902860357476377573,
324    13350296775839230505,
325    10609191786344608888,
326    7261211985859587338,
327    11439672689354862964,
328    16789708072300570627,
329    4607056528866348430,
330    3202978990421512997,
331    2024899620433984146,
332    17666950207239811774,
333    4233228489390288200,
334    9137580478688460738,
335    4060411066587388546,
336    11119949806060600124,
337    867715462473090103,
338    14382394941384869610,
339    4856042377419278489,
340    8265605599571137921,
341    538981667666252469,
342    4270263388700786523,
343    3281140600308898503,
344    4121392524544394174,
345    2077884106245940229,
346    9773041957329767574,
347    7550623316597646685,
348    8611033926449791714,
349    18137922955420802793,
350    2796546741236224013,
351    15477096484628446761,
352    9517540128113714010,
353    9471917970500821378,
354    15938570248662483124,
355    5228016831978462619,
356    15720991252586974501,
357    7662829825220776698,
358    17328310068068434348,
359    3371736428170309730,
360    3803724952191098855,
361    13115926536504376719,
362    16752571196153442257,
363    16540185467776259880,
364    3432518182450051120,
365    5880364967211798870,
366    12355748840305392783,
367    14196090758536469575,
368    7370123524686686319,
369    6819740424617592686,
370    13037938013537368753,
371    15029273671291927100,
372    3671312928327205696,
373    7473228676544792780,
374    17234079691312938123,
375    14164740848093544419,
376    13169904779481875902,
377    7179036968465894054,
378    8244653688947194445,
379    17179797746073799490,
380    5591970751047577674,
381    17530550506268329742,
382    5965746721852312330,
383    1604149463243472865,
384    7734199791463116918,
385    11305790396015856714,
386    4441196105025505137,
387    13046431581185664762,
388    124776524294606713,
389    1134521334706523966,
390    11671728093344476434,
391    14103440020972933148,
392    3966727403013869059,
393    9828094508409132821,
394    4355682486381147287,
395    10261407143988481234,
396    3800455155249557199,
397    12700901937937547500,
398    18184475466894579360,
399    13267691151779895412,
400    4714157123477697445,
401    10770360171308585263,
402    9083344917597998040,
403    12078649873810212155,
404    18218989082046199377,
405    4454285072780637351,
406    5287307245618354742,
407    16042289702059031730,
408    4131926574212754010,
409    217692071448455473,
410    3624845916216282093,
411    2901203491797614218,
412    6679177724033967080,
413    44561358851332790,
414    9094639944041587162,
415    13690915012276084311,
416    1408896670826320686,
417    5359130319612337580,
418    6148412925099835601,
419    5211368532286409612,
420    11386360825549027374,
421    16895182466965795071,
422    3392940493846427241,
423    438089879085393580,
424    4783928372776399972,
425    6278117363595909959,
426    12569481049412674733,
427    15648622492570893902,
428    1966316336235305115,
429    1603775390515993547,
430    13576113010204316709,
431    10821754650102840474,
432    18198222517222903152,
433    6966163076615302988,
434    1373932372410129684,
435    3285839581819684990,
436    30177575069719475,
437    16447047871247307061,
438    11618654126674833808,
439    990072222556306872,
440    1260682336135768017,
441    13862055046689532489,
442    15668483092844698432,
443    1879572630092764264,
444    13912027797058626108,
445    6231679788219816920,
446    13857858054844167403,
447    18101470072534728857,
448    4144579812461609229,
449    7048589655616599284,
450    9946956499532694630,
451    9771303850109874038,
452    6477823708780339765,
453    17526247621747041971,
454    13525995675852669549,
455    3928768291901239810,
456    8094153383078124544,
457    11214278667728965552,
458    11251547162596832610,
459    5964946855123292381,
460    3622548288590237903,
461    13469765967150053587,
462    17798986288523466082,
463    14684592818807932259,
464    16724077276802963921,
465    7119877993753121290,
466    1864571304902781632,
467    12871984921385213812,
468    9065447042604670298,
469    3987130777300360550,
470    6890545752116901685,
471    17275341711601865750,
472    6296474927799264658,
473    1257436973037243463,
474    13854281781965301421,
475    1657132483318662716,
476    17309399540017292849,
477    12808111630089217242,
478    1098489625264462071,
479    14010458905686364135,
480    16134414519481621220,
481    14288255900328821475,
482    3469093466388187882,
483    15982710881468295872,
484    4056765540058056052,
485    15945176389096104089,
486    8625339365793505375,
487    12316179968863788913,
488    15334123773538054321,
489    9536238824220581765,
490    16080825720106203271,
491    6235695225418121745,
492    12035192956458019349,
493    3235835166714703698,
494    5348960676912581218,
495    15315062772709464647,
496    17335089708021308662,
497    16855855317958414409,
498    2369751139431140406,
499    3693542588628609043,
500    7350405893393987577,
501    17402072586341663801,
502    7007897690013647122,
503    15671767872059304758,
504    9259490518292347915,
505    14836045474406130394,
506    4654005815464502513,
507    6487825998330548401,
508    7013356660323385022,
509    7136200343936679946,
510    15341236858676437716,
511    3657357368867197449,
512    12621075530054608378,
513    5603868621997066972,
514    7683447656788439942,
515    450883379216880060,
516    14291494350184945047,
517    5466258454997635048,
518    14206933098432772126,
519    4775870327277641692,
520    1864430798867181939,
521    13748978265070608793,
522    12250822864261576589,
523    12561896977498605296,
524    16060949594257359328,
525    17775189113543311529,
526    11835965177892927035,
527    4218664174878121437,
528    3499000902478111683,
529    15169853304359126294,
530    7076121963053575143,
531    832652347668916805,
532    1292148207755194737,
533    7556838978364207852,
534    5904021986723518500,
535    4610244652288570024,
536    4526508363195533871,
537    746120481022614726,
538    737965197247830486,
539    4006266184415762653,
540    9272188239892688050,
541    15346235246415709678,
542    11850675997347533184,
543    11181059668610842701,
544    6687857983250662774,
545    2908718488661492818,
546    4828337780126983225,
547    18071738646453002184,
548    12790187227727197880,
549    17602483480871623153,
550    12523532189621855977,
551    10598805712727696716,
552    2179787555896149376,
553    2242193929457337594,
554    14908923241136742532,
555    8369182018012550027,
556    13385381554043022324,
557    3332327430110633913,
558    16138090784046208492,
559    16172324607469047339,
560    8279089815915615244,
561    12872906602736235247,
562    10894545290539475621,
563    15428756545851905023,
564    4155747980686992922,
565    4074479178894544043,
566    66083965608603584,
567    13873786284662268377,
568    8861183628277687555,
569    12119497911296021430,
570    2154012318305274287,
571    15490706314503067312,
572    13643145488710608367,
573    672340241093017103,
574    6039493278284091973,
575    9679797700977436461,
576    18070795828318171174,
577    2188146431134935377,
578    5247392385741514952,
579    1852539214842869734,
580    12235621681634112739,
581    8812930319623534062,
582    5585597406294108629,
583    11312989214475901864,
584    1547377291787797995,
585    8641748937186208205,
586    12518148659168623694,
587    6611379197521520985,
588    18096591571068008576,
589    15087021227100112139,
590    13058454842015958418,
591    1473584652966833794,
592    4387660670140018168,
593    8452836916843525402,
594    14376083294443363955,
595    13998026203969090659,
596    611968444648172645,
597    990232438801273845,
598    18001186324715561929,
599    13470591857250177501,
600    14881554140239420091,
601    16696367836720124495,
602    6328076032778459673,
603    17027497695968504616,
604    10192245646262428833,
605    8282482589527318647,
606    4319014353374321425,
607    14134087271041670980,
608    5060230880114618599,
609    13179509240430058600,
610    3903514232614801894,
611    17774749744702165255,
612    15448635507030969726,
613    15983775238358480209,
614    14542832143965487887,
615    9385618098039514666,
616    14431419612662304843,
617    730863073501675978,
618    16750118380379734815,
619    9640,
620];
621
622pub(crate) const POW5: [&[u64]; 14] = [
623    &POW5_1, &POW5_2, &POW5_3, &POW5_4, &POW5_5, &POW5_6, &POW5_7, &POW5_8, &POW5_9, &POW5_10,
624    &POW5_11, &POW5_12, &POW5_13, &POW5_14,
625];