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