poseidon377/params/
rate_2.rs

1use decaf377::Fq;
2use poseidon_parameters::v1::{
3    Alpha, ArcMatrix, Matrix, MdsMatrix, OptimizedArcMatrix, OptimizedMdsMatrices,
4    PoseidonParameters, RoundNumbers, SquareMatrix,
5};
6
7/// Parameters for the rate-2 instance of Poseidon.
8pub const fn rate_2() -> PoseidonParameters<3, 2, 9, 4, 39, 3, 117, 31> {
9    PoseidonParameters {
10        M: 128,
11        arc: ArcMatrix::<39, 3, 117>::new_from_known([
12            Fq::from_montgomery_limbs([
13                13532052565085671856,
14                13175575834742130482,
15                14571043277169067394,
16                1128324334676141805,
17            ]),
18            Fq::from_montgomery_limbs([
19                10586567975029405298,
20                5987505274649066590,
21                9663655893165983133,
22                381788629769180835,
23            ]),
24            Fq::from_montgomery_limbs([
25                7404335995308317606,
26                10342209374602516054,
27                14679697400509748167,
28                1259991645283011647,
29            ]),
30            Fq::from_montgomery_limbs([
31                12711294721892819516,
32                8412935995118692797,
33                7069737649526067295,
34                549549236990677487,
35            ]),
36            Fq::from_montgomery_limbs([
37                128694122049037398,
38                15825223235256271389,
39                74647683628497806,
40                403759781237802093,
41            ]),
42            Fq::from_montgomery_limbs([
43                3501552524290051296,
44                10688664658423588201,
45                8345653809557910120,
46                766292783896459938,
47            ]),
48            Fq::from_montgomery_limbs([
49                13998055823902745235,
50                15535161481341849823,
51                9848874496394823215,
52                579121379437172744,
53            ]),
54            Fq::from_montgomery_limbs([
55                16363263235454987811,
56                9117252686821547535,
57                4794867261658414781,
58                418411818796950741,
59            ]),
60            Fq::from_montgomery_limbs([
61                3710344964675021293,
62                13957371261080223237,
63                15195218532629186765,
64                760708816844813378,
65            ]),
66            Fq::from_montgomery_limbs([
67                16135673103471103205,
68                13943139040297964408,
69                12037506718934223099,
70                1187380734246932890,
71            ]),
72            Fq::from_montgomery_limbs([
73                11326210002632211732,
74                2893415499386035614,
75                2949171194607212014,
76                568849018592141776,
77            ]),
78            Fq::from_montgomery_limbs([
79                13925494990768706056,
80                13969996543019858204,
81                13457764640058086886,
82                114396439087701688,
83            ]),
84            Fq::from_montgomery_limbs([
85                16351586607272228519,
86                6269966282891300082,
87                12490381894697744781,
88                834648274293416263,
89            ]),
90            Fq::from_montgomery_limbs([
91                1437979443977545600,
92                14767193465362841311,
93                11074881595123675812,
94                1204201379421269428,
95            ]),
96            Fq::from_montgomery_limbs([
97                5230240271406271908,
98                16847766581152362930,
99                1712847198165617791,
100                311937423231086981,
101            ]),
102            Fq::from_montgomery_limbs([
103                3645836740283016323,
104                15685198898945208452,
105                1980971647688859029,
106                176967089015698342,
107            ]),
108            Fq::from_montgomery_limbs([
109                7550143813701248311,
110                18291556615524985846,
111                8534400014086995148,
112                500430429779017952,
113            ]),
114            Fq::from_montgomery_limbs([
115                596957473479108084,
116                6324092840533510915,
117                4811101589352947098,
118                76518932650696039,
119            ]),
120            Fq::from_montgomery_limbs([
121                336812235439984799,
122                13522610888312181094,
123                10501405696980879642,
124                449669351326561391,
125            ]),
126            Fq::from_montgomery_limbs([
127                12592523411743912820,
128                3924222765120111350,
129                5699458771760954386,
130                892267873608702453,
131            ]),
132            Fq::from_montgomery_limbs([
133                12993017322389395630,
134                5952902593915102432,
135                5247111021983199097,
136                470467609253978097,
137            ]),
138            Fq::from_montgomery_limbs([
139                7244663031809848522,
140                3071554415549245091,
141                2773295222867337766,
142                1090905641165090834,
143            ]),
144            Fq::from_montgomery_limbs([
145                9981097535495148290,
146                12930981823992014491,
147                9629464214154256600,
148                308026108875661910,
149            ]),
150            Fq::from_montgomery_limbs([
151                12850815434424207307,
152                8847171669624931211,
153                16288364336002865240,
154                954936779594025677,
155            ]),
156            Fq::from_montgomery_limbs([
157                11236881576270168641,
158                15414742267201110956,
159                7825767860878753872,
160                721136380245447153,
161            ]),
162            Fq::from_montgomery_limbs([
163                2832704701681877466,
164                7235621408572302496,
165                11812570847329545593,
166                792455748001887640,
167            ]),
168            Fq::from_montgomery_limbs([
169                3432713492718273410,
170                6465506654245539380,
171                8827139003294513485,
172                992550877185604089,
173            ]),
174            Fq::from_montgomery_limbs([
175                9728786934890323565,
176                10584002864733096791,
177                2293345482796697755,
178                180937419315601034,
179            ]),
180            Fq::from_montgomery_limbs([
181                13822678097673121251,
182                4948809415032161320,
183                15691917123613077102,
184                683890210553461269,
185            ]),
186            Fq::from_montgomery_limbs([
187                9002390647260096239,
188                10448673368926307125,
189                17815937281103619895,
190                1097505426950771788,
191            ]),
192            Fq::from_montgomery_limbs([
193                13908365267431289868,
194                3370079770970658040,
195                15308027316557057295,
196                1308145822882463267,
197            ]),
198            Fq::from_montgomery_limbs([
199                7831189882886479452,
200                4689238810753296883,
201                13159502922430301346,
202                27611585919074368,
203            ]),
204            Fq::from_montgomery_limbs([
205                14912709676120752020,
206                10115204646384083757,
207                10138309295115926582,
208                223210301540489796,
209            ]),
210            Fq::from_montgomery_limbs([
211                12627294687244820632,
212                2059848305109767326,
213                1888484742856066068,
214                1272834063475208138,
215            ]),
216            Fq::from_montgomery_limbs([
217                6115210324513801758,
218                10929870666119062300,
219                11707806468269326656,
220                949025326858793021,
221            ]),
222            Fq::from_montgomery_limbs([
223                7061826933729287205,
224                1126603583829494325,
225                5469143638052028670,
226                1033665004945948695,
227            ]),
228            Fq::from_montgomery_limbs([
229                11008930476894918520,
230                11381807375074895164,
231                2844592577512486485,
232                1128817316316311928,
233            ]),
234            Fq::from_montgomery_limbs([
235                5300558244079945539,
236                8283037415518590201,
237                11038807277807240648,
238                1178232107582202545,
239            ]),
240            Fq::from_montgomery_limbs([
241                11862022433031293870,
242                8913994378642882666,
243                9450763413034135432,
244                77958396662445698,
245            ]),
246            Fq::from_montgomery_limbs([
247                17688402066322086519,
248                524036851070457942,
249                14909117109897886121,
250                557290224371677333,
251            ]),
252            Fq::from_montgomery_limbs([
253                1875815915909501089,
254                10678692213853973640,
255                15989623299920327105,
256                428879321377057641,
257            ]),
258            Fq::from_montgomery_limbs([
259                1082841901890716129,
260                12068516826131602351,
261                7102481379375591007,
262                906616535867466859,
263            ]),
264            Fq::from_montgomery_limbs([
265                17613918888580330287,
266                6204465427334198417,
267                9436344365449852604,
268                655489186886697,
269            ]),
270            Fq::from_montgomery_limbs([
271                17585284967658841164,
272                80944379680805043,
273                2698615756683481750,
274                351188921018806563,
275            ]),
276            Fq::from_montgomery_limbs([
277                15687615037958784071,
278                2186404284346347770,
279                5652967689160162635,
280                1056583988063876017,
281            ]),
282            Fq::from_montgomery_limbs([
283                13107987562409563672,
284                3871322351409280978,
285                8803804680465229381,
286                1030040159656924298,
287            ]),
288            Fq::from_montgomery_limbs([
289                16684869482081657339,
290                10281204171444660632,
291                1624958597982547757,
292                386745834466917047,
293            ]),
294            Fq::from_montgomery_limbs([
295                6970896123209894127,
296                7830160530923913939,
297                17422861911349199859,
298                623374110284783712,
299            ]),
300            Fq::from_montgomery_limbs([
301                4331844870617545742,
302                520046082233107649,
303                5594606953430693091,
304                249698853373994073,
305            ]),
306            Fq::from_montgomery_limbs([
307                6680837442175120485,
308                6814766854525276712,
309                6556825746309967179,
310                570042050188335199,
311            ]),
312            Fq::from_montgomery_limbs([
313                15436728868072851979,
314                10638387680273826288,
315                16379320772832534606,
316                822954407147775124,
317            ]),
318            Fq::from_montgomery_limbs([
319                11837214986206518455,
320                596921394620411645,
321                13159256680099246054,
322                1277661308547494330,
323            ]),
324            Fq::from_montgomery_limbs([
325                13679203667889812546,
326                11676386286470050129,
327                8357354920215222534,
328                456950010799870038,
329            ]),
330            Fq::from_montgomery_limbs([
331                2229876009761017392,
332                13089694557765213339,
333                16529665410348556997,
334                1200161010593736391,
335            ]),
336            Fq::from_montgomery_limbs([
337                16005321486742773520,
338                8650710416750881700,
339                12927174790925866955,
340                1318630719916273524,
341            ]),
342            Fq::from_montgomery_limbs([
343                11180409359961118236,
344                7275623093671008389,
345                11439214005189014436,
346                975533040864102009,
347            ]),
348            Fq::from_montgomery_limbs([
349                1493684412606064445,
350                1600586062110688441,
351                6392169949497859284,
352                320645276436957806,
353            ]),
354            Fq::from_montgomery_limbs([
355                18076284763174743111,
356                15528272241931714086,
357                1987806618344857317,
358                81963683463344143,
359            ]),
360            Fq::from_montgomery_limbs([
361                2380106604330211947,
362                13999809284604519871,
363                17117752833631344354,
364                928049684624129249,
365            ]),
366            Fq::from_montgomery_limbs([
367                16709180677553116618,
368                15078892089982505559,
369                12839669848886637777,
370                1151522444646802538,
371            ]),
372            Fq::from_montgomery_limbs([
373                1024922389916170464,
374                4633605473275241115,
375                8890730306179887903,
376                1145679956560153579,
377            ]),
378            Fq::from_montgomery_limbs([
379                2689026397641652069,
380                13435392347048733438,
381                4613843849026450873,
382                644769297929746792,
383            ]),
384            Fq::from_montgomery_limbs([
385                1477469845453362358,
386                8875949790662885201,
387                7478581831156986579,
388                67083263015332207,
389            ]),
390            Fq::from_montgomery_limbs([
391                1506147123099314810,
392                6546355754774050650,
393                13235191534515389566,
394                573446483563428911,
395            ]),
396            Fq::from_montgomery_limbs([
397                11592075759296992527,
398                11495396924055153811,
399                17020953547937729115,
400                326913902434578022,
401            ]),
402            Fq::from_montgomery_limbs([
403                10523148363065643749,
404                13492540919508068783,
405                17386067260199896807,
406                528704601527288393,
407            ]),
408            Fq::from_montgomery_limbs([
409                9127950768740932108,
410                15914409702651500773,
411                11784570023787002367,
412                340904789729663175,
413            ]),
414            Fq::from_montgomery_limbs([
415                6245027322171754000,
416                15663478768566472378,
417                11402185558701422250,
418                36675236290199327,
419            ]),
420            Fq::from_montgomery_limbs([
421                6063749964881818939,
422                10257461935793181106,
423                942936442940111744,
424                540037121922249544,
425            ]),
426            Fq::from_montgomery_limbs([
427                12968659316148036261,
428                14899520595018177284,
429                3836336888070673001,
430                941781069635905693,
431            ]),
432            Fq::from_montgomery_limbs([
433                126228530830236165,
434                5499407626081829044,
435                14133761497400979158,
436                1184006332035149871,
437            ]),
438            Fq::from_montgomery_limbs([
439                5031808939874245057,
440                12620452215680194384,
441                1600289362926216464,
442                1200752349590914751,
443            ]),
444            Fq::from_montgomery_limbs([
445                13105110393340809165,
446                7101636223400183860,
447                1455202496382111435,
448                1040366751489349639,
449            ]),
450            Fq::from_montgomery_limbs([
451                2247493102747455874,
452                3444719793324110884,
453                17343476723736941016,
454                460423680466113922,
455            ]),
456            Fq::from_montgomery_limbs([
457                18230610362649795022,
458                4850929477447852354,
459                2999970116929109994,
460                374491266534684371,
461            ]),
462            Fq::from_montgomery_limbs([
463                205446930692894616,
464                10625340386042781881,
465                2267554848789579110,
466                805571592523062224,
467            ]),
468            Fq::from_montgomery_limbs([
469                9554436490539537540,
470                3781982688039156286,
471                12732806211783679988,
472                207650560800307204,
473            ]),
474            Fq::from_montgomery_limbs([
475                14608069410708161069,
476                15150367565152858757,
477                7976963546254869682,
478                1302080053778539832,
479            ]),
480            Fq::from_montgomery_limbs([
481                5668581368285301758,
482                1481024316238442280,
483                14073619068562930813,
484                157011518856032932,
485            ]),
486            Fq::from_montgomery_limbs([
487                10782685697581511660,
488                656395425526716484,
489                12429361742269361127,
490                1218629948585201369,
491            ]),
492            Fq::from_montgomery_limbs([
493                9945724486634605933,
494                5559580130460001707,
495                4958363795583827901,
496                1086630389709013647,
497            ]),
498            Fq::from_montgomery_limbs([
499                6214153618072836629,
500                6297284130475637236,
501                3341157682715609955,
502                687805559853576127,
503            ]),
504            Fq::from_montgomery_limbs([
505                17561648631049166744,
506                4193461398377217711,
507                17499970945040917083,
508                352506169960283993,
509            ]),
510            Fq::from_montgomery_limbs([
511                1122765646603573063,
512                1498611916106521677,
513                10924305234288949443,
514                728326887801130515,
515            ]),
516            Fq::from_montgomery_limbs([
517                5800850628186966207,
518                4398317517906769115,
519                9597227115480831972,
520                526197039749009419,
521            ]),
522            Fq::from_montgomery_limbs([
523                5159263173914965708,
524                8792786795115987428,
525                3124972989790777106,
526                1052873249848825660,
527            ]),
528            Fq::from_montgomery_limbs([
529                1668691385020369393,
530                4311283499155522888,
531                13095876963782085960,
532                334904475460146335,
533            ]),
534            Fq::from_montgomery_limbs([
535                14551884987824763154,
536                5459630410931408158,
537                838248742615457530,
538                355270342663742218,
539            ]),
540            Fq::from_montgomery_limbs([
541                13811707083670026157,
542                17980420357872171335,
543                15680078942835361627,
544                508494405154027190,
545            ]),
546            Fq::from_montgomery_limbs([
547                259245969673242010,
548                12143818002017916372,
549                9104957694955299615,
550                588078921942677607,
551            ]),
552            Fq::from_montgomery_limbs([
553                1402823264425646775,
554                17394328405754534008,
555                8594536777296298084,
556                589743092826427286,
557            ]),
558            Fq::from_montgomery_limbs([
559                17525191514318164285,
560                3032947818017798651,
561                8010733640330629183,
562                18263345896298111,
563            ]),
564            Fq::from_montgomery_limbs([
565                2324591806430845335,
566                3802314283763375525,
567                5802980770825972296,
568                1172121386066784655,
569            ]),
570            Fq::from_montgomery_limbs([
571                3481957081013606129,
572                7174433466077666272,
573                18298661318322644558,
574                779600890592950522,
575            ]),
576            Fq::from_montgomery_limbs([
577                12191117132876429501,
578                13984916474435046850,
579                15993612081836470001,
580                982264150805006675,
581            ]),
582            Fq::from_montgomery_limbs([
583                5832216401942411966,
584                14563514500329138886,
585                4063839581877579762,
586                988127094162723498,
587            ]),
588            Fq::from_montgomery_limbs([
589                9980296771901734820,
590                8406919274419375318,
591                7382848308758481422,
592                288106649508594049,
593            ]),
594            Fq::from_montgomery_limbs([
595                15311094169366877824,
596                8845543297515843004,
597                5111676196784685495,
598                854309633222289538,
599            ]),
600            Fq::from_montgomery_limbs([
601                11805299538225612753,
602                2464747910811709980,
603                7821113581135412494,
604                698716086285897944,
605            ]),
606            Fq::from_montgomery_limbs([
607                14453145658534747007,
608                17272254080461340124,
609                10230451546974640772,
610                626243697059407772,
611            ]),
612            Fq::from_montgomery_limbs([
613                11287978532447653494,
614                18279346120194159177,
615                2333031913403775389,
616                200338723139384832,
617            ]),
618            Fq::from_montgomery_limbs([
619                12366653650419860061,
620                16274230817774725784,
621                4516721510516055669,
622                75055982532212210,
623            ]),
624            Fq::from_montgomery_limbs([
625                388555674032981681,
626                6567318722554709379,
627                2086741448191262667,
628                908777123569794972,
629            ]),
630            Fq::from_montgomery_limbs([
631                9649589442582163437,
632                13541178269507352071,
633                14258536536571968121,
634                575215969686158075,
635            ]),
636            Fq::from_montgomery_limbs([
637                597836451158842199,
638                1858657668022201800,
639                504852646431126025,
640                351889211223645499,
641            ]),
642            Fq::from_montgomery_limbs([
643                8710335429210318089,
644                15939765460477572548,
645                13493874982974354172,
646                1195299757590572308,
647            ]),
648            Fq::from_montgomery_limbs([
649                16720044796621311460,
650                6297107607479107816,
651                15666086360782481298,
652                946070823657072210,
653            ]),
654            Fq::from_montgomery_limbs([
655                5216764590966106189,
656                18330556132248987975,
657                14778046174865524185,
658                601592383999400705,
659            ]),
660            Fq::from_montgomery_limbs([
661                12284358746189003172,
662                15796822047553990474,
663                10249807758448272935,
664                1260540691182942177,
665            ]),
666            Fq::from_montgomery_limbs([
667                14671741496053748797,
668                15956144823383552989,
669                8978105115308257315,
670                1129739098292337641,
671            ]),
672            Fq::from_montgomery_limbs([
673                16528885559305010985,
674                14885472285663731653,
675                8692450371018254777,
676                875854298006252122,
677            ]),
678            Fq::from_montgomery_limbs([
679                11216935928075429441,
680                7088545516130524118,
681                3510979311098449529,
682                980345967679074250,
683            ]),
684            Fq::from_montgomery_limbs([
685                8480849792218315917,
686                11146529356407982510,
687                4204845623809735650,
688                554809226012522197,
689            ]),
690            Fq::from_montgomery_limbs([
691                9465397404983425896,
692                1339596460298740670,
693                2695000812316794677,
694                164270174202044235,
695            ]),
696            Fq::from_montgomery_limbs([
697                12807958353199166386,
698                2607509355362673632,
699                9510828759520576266,
700                306232379852697998,
701            ]),
702            Fq::from_montgomery_limbs([
703                14216260065142834520,
704                8830790711865643815,
705                7264415235010871052,
706                905551093713836953,
707            ]),
708            Fq::from_montgomery_limbs([
709                1392129315389772974,
710                3163495863255052347,
711                5961497987857813198,
712                47707649459794917,
713            ]),
714        ]),
715        mds: MdsMatrix::<3, 2, 9, 4>::new_from_known([
716            Fq::from_montgomery_limbs([
717                15302903146332116305,
718                8895355854553175376,
719                548696419140371791,
720                319366418254432479,
721            ]),
722            Fq::from_montgomery_limbs([
723                16270238816294404093,
724                17510165790819614716,
725                15988650198697570299,
726                575844906362867708,
727            ]),
728            Fq::from_montgomery_limbs([
729                2093244959304135473,
730                7921656493611837028,
731                14184576022206158435,
732                729731999227928846,
733            ]),
734            Fq::from_montgomery_limbs([
735                16270238816294404093,
736                17510165790819614716,
737                15988650198697570299,
738                575844906362867708,
739            ]),
740            Fq::from_montgomery_limbs([
741                2093244959304135473,
742                7921656493611837028,
743                14184576022206158435,
744                729731999227928846,
745            ]),
746            Fq::from_montgomery_limbs([
747                17237574486256691881,
748                7678231653376502440,
749                12981859904545217192,
750                832323394471302938,
751            ]),
752            Fq::from_montgomery_limbs([
753                2093244959304135473,
754                7921656493611837028,
755                14184576022206158435,
756                729731999227928846,
757            ]),
758            Fq::from_montgomery_limbs([
759                17237574486256691881,
760                7678231653376502440,
761                12981859904545217192,
762                832323394471302938,
763            ]),
764            Fq::from_montgomery_limbs([
765                14878706952858838161,
766                15410104227655356999,
767                17393275270132988194,
768                905602962502284432,
769            ]),
770        ]),
771        alpha: Alpha::Exponent(17),
772        rounds: RoundNumbers { r_P: 31, r_F: 8 },
773        optimized_mds: OptimizedMdsMatrices {
774            M_hat: SquareMatrix::<2, 4>::new_from_known([
775                Fq::from_montgomery_limbs([
776                    2093244959304135473,
777                    7921656493611837028,
778                    14184576022206158435,
779                    729731999227928846,
780                ]),
781                Fq::from_montgomery_limbs([
782                    17237574486256691881,
783                    7678231653376502440,
784                    12981859904545217192,
785                    832323394471302938,
786                ]),
787                Fq::from_montgomery_limbs([
788                    17237574486256691881,
789                    7678231653376502440,
790                    12981859904545217192,
791                    832323394471302938,
792                ]),
793                Fq::from_montgomery_limbs([
794                    14878706952858838161,
795                    15410104227655356999,
796                    17393275270132988194,
797                    905602962502284432,
798                ]),
799            ]),
800            v: Matrix::<1, 2, 2>::new_from_known([
801                Fq::from_montgomery_limbs([
802                    16270238816294404093,
803                    17510165790819614716,
804                    15988650198697570299,
805                    575844906362867708,
806                ]),
807                Fq::from_montgomery_limbs([
808                    2093244959304135473,
809                    7921656493611837028,
810                    14184576022206158435,
811                    729731999227928846,
812                ]),
813            ]),
814            w: Matrix::<2, 1, 2>::new_from_known([
815                Fq::from_montgomery_limbs([
816                    16270238816294404093,
817                    17510165790819614716,
818                    15988650198697570299,
819                    575844906362867708,
820                ]),
821                Fq::from_montgomery_limbs([
822                    2093244959304135473,
823                    7921656493611837028,
824                    14184576022206158435,
825                    729731999227928846,
826                ]),
827            ]),
828            M_prime: SquareMatrix::<3, 9>::new_from_known([
829                Fq::from_montgomery_limbs([
830                    9015221291577245683,
831                    8239323489949974514,
832                    1646089257421115374,
833                    958099254763297437,
834                ]),
835                Fq::from_montgomery_limbs([0, 0, 0, 0]),
836                Fq::from_montgomery_limbs([0, 0, 0, 0]),
837                Fq::from_montgomery_limbs([0, 0, 0, 0]),
838                Fq::from_montgomery_limbs([
839                    2093244959304135473,
840                    7921656493611837028,
841                    14184576022206158435,
842                    729731999227928846,
843                ]),
844                Fq::from_montgomery_limbs([
845                    17237574486256691881,
846                    7678231653376502440,
847                    12981859904545217192,
848                    832323394471302938,
849                ]),
850                Fq::from_montgomery_limbs([0, 0, 0, 0]),
851                Fq::from_montgomery_limbs([
852                    17237574486256691881,
853                    7678231653376502440,
854                    12981859904545217192,
855                    832323394471302938,
856                ]),
857                Fq::from_montgomery_limbs([
858                    14878706952858838161,
859                    15410104227655356999,
860                    17393275270132988194,
861                    905602962502284432,
862                ]),
863            ]),
864            M_doubleprime: SquareMatrix::<3, 9>::new_from_known([
865                Fq::from_montgomery_limbs([
866                    15302903146332116305,
867                    8895355854553175376,
868                    548696419140371791,
869                    319366418254432479,
870                ]),
871                Fq::from_montgomery_limbs([
872                    16270238816294404093,
873                    17510165790819614716,
874                    15988650198697570299,
875                    575844906362867708,
876                ]),
877                Fq::from_montgomery_limbs([
878                    2093244959304135473,
879                    7921656493611837028,
880                    14184576022206158435,
881                    729731999227928846,
882                ]),
883                Fq::from_montgomery_limbs([
884                    7147916296078753751,
885                    11795755565450264533,
886                    9448453213491875784,
887                    183737022913545514,
888                ]),
889                Fq::from_montgomery_limbs([
890                    9015221291577245683,
891                    8239323489949974514,
892                    1646089257421115374,
893                    958099254763297437,
894                ]),
895                Fq::from_montgomery_limbs([0, 0, 0, 0]),
896                Fq::from_montgomery_limbs([
897                    10406805428937057924,
898                    14160037477503257835,
899                    7036231764655967476,
900                    1082136417579874198,
901                ]),
902                Fq::from_montgomery_limbs([0, 0, 0, 0]),
903                Fq::from_montgomery_limbs([
904                    9015221291577245683,
905                    8239323489949974514,
906                    1646089257421115374,
907                    958099254763297437,
908                ]),
909            ]),
910            M_inverse: SquareMatrix::<3, 9>::new_from_known([
911                Fq::from_montgomery_limbs([
912                    4383832024780107759,
913                    7223259317565124429,
914                    5707462847421561422,
915                    885057472408297272,
916                ]),
917                Fq::from_montgomery_limbs([
918                    6746251504312660021,
919                    9699181025413837338,
920                    15260914163925889303,
921                    35388324151454979,
922                ]),
923                Fq::from_montgomery_limbs([
924                    5008847210566114882,
925                    8801394942975925486,
926                    18175922902442652272,
927                    916924432575702892,
928                ]),
929                Fq::from_montgomery_limbs([
930                    6746251504312660021,
931                    9699181025413837338,
932                    15260914163925889303,
933                    35388324151454979,
934                ]),
935                Fq::from_montgomery_limbs([
936                    15450583684112934333,
937                    18216376800760520619,
938                    4209613945072000948,
939                    155813436852978744,
940                ]),
941                Fq::from_montgomery_limbs([
942                    9834172736316928124,
943                    189466111752828136,
944                    13335900722961176546,
945                    530999546582786085,
946                ]),
947                Fq::from_montgomery_limbs([
948                    5008847210566114882,
949                    8801394942975925486,
950                    18175922902442652272,
951                    916924432575702892,
952                ]),
953                Fq::from_montgomery_limbs([
954                    9834172736316928124,
955                    189466111752828136,
956                    13335900722961176546,
957                    530999546582786085,
958                ]),
959                Fq::from_montgomery_limbs([
960                    11796616273943571364,
961                    15542379905239984210,
962                    1578039792447016471,
963                    947030710751083834,
964                ]),
965            ]),
966            M_hat_inverse: SquareMatrix::<2, 4>::new_from_known([
967                Fq::from_montgomery_limbs([
968                    17242594123341362780,
969                    10420431729582929402,
970                    13098868289430565627,
971                    261978409307343683,
972                ]),
973                Fq::from_montgomery_limbs([
974                    4962966789362289472,
975                    13671436036280945585,
976                    17033622650389008176,
977                    591212102933547967,
978                ]),
979                Fq::from_montgomery_limbs([
980                    4962966789362289472,
981                    13671436036280945585,
982                    17033622650389008176,
983                    591212102933547967,
984                ]),
985                Fq::from_montgomery_limbs([
986                    2148639234720789121,
987                    15880825911856067065,
988                    16042722653708983750,
989                    635825847167915836,
990                ]),
991            ]),
992            M_00: Fq::from_montgomery_limbs([
993                15302903146332116305,
994                8895355854553175376,
995                548696419140371791,
996                319366418254432479,
997            ]),
998            M_i: Matrix::<3, 3, 9>::new_from_known([
999                Fq::from_montgomery_limbs([
1000                    9015221291577245683,
1001                    8239323489949974514,
1002                    1646089257421115374,
1003                    958099254763297437,
1004                ]),
1005                Fq::from_montgomery_limbs([0, 0, 0, 0]),
1006                Fq::from_montgomery_limbs([0, 0, 0, 0]),
1007                Fq::from_montgomery_limbs([0, 0, 0, 0]),
1008                Fq::from_montgomery_limbs([
1009                    16360065460916622652,
1010                    6825609680461496913,
1011                    5558627326231064465,
1012                    128471165991923814,
1013                ]),
1014                Fq::from_montgomery_limbs([
1015                    7428548079683657885,
1016                    9054293525864294989,
1017                    16239738740266557642,
1018                    509891970840567989,
1019                ]),
1020                Fq::from_montgomery_limbs([0, 0, 0, 0]),
1021                Fq::from_montgomery_limbs([
1022                    7428548079683657885,
1023                    9054293525864294989,
1024                    16239738740266557642,
1025                    509891970840567989,
1026                ]),
1027                Fq::from_montgomery_limbs([
1028                    1051461353787812132,
1029                    3723993058108873740,
1030                    15567687070894540562,
1031                    722382702096971016,
1032                ]),
1033            ]),
1034            v_collection: [
1035                Matrix::<1, 2, 2>::new_from_known([
1036                    Fq::from_montgomery_limbs([
1037                        16270238816294404093,
1038                        17510165790819614716,
1039                        15988650198697570299,
1040                        575844906362867708,
1041                    ]),
1042                    Fq::from_montgomery_limbs([
1043                        2093244959304135473,
1044                        7921656493611837028,
1045                        14184576022206158435,
1046                        729731999227928846,
1047                    ]),
1048                ]),
1049                Matrix::<1, 2, 2>::new_from_known([
1050                    Fq::from_montgomery_limbs([
1051                        18204910156218979669,
1052                        16293041589642941780,
1053                        9975069610392864084,
1054                        1088801882579738168,
1055                    ]),
1056                    Fq::from_montgomery_limbs([
1057                        3072474957567996411,
1058                        7632850653899625657,
1059                        6867324839353272651,
1060                        1129105644996777990,
1061                    ]),
1062                ]),
1063                Matrix::<1, 2, 2>::new_from_known([
1064                    Fq::from_montgomery_limbs([
1065                        11749409346063797401,
1066                        13847779958722295463,
1067                        5230051856842938218,
1068                        809528761888529318,
1069                    ]),
1070                    Fq::from_montgomery_limbs([
1071                        16538317435082867476,
1072                        140673227072662684,
1073                        4917458456429054520,
1074                        951347002169384040,
1075                    ]),
1076                ]),
1077                Matrix::<1, 2, 2>::new_from_known([
1078                    Fq::from_montgomery_limbs([
1079                        8049501819868988169,
1080                        4640840621228515661,
1081                        5281323386686467274,
1082                        1217317166531385469,
1083                    ]),
1084                    Fq::from_montgomery_limbs([
1085                        15861181624207003323,
1086                        10871450011713172103,
1087                        4492382029642778046,
1088                        495041570025076744,
1089                    ]),
1090                ]),
1091                Matrix::<1, 2, 2>::new_from_known([
1092                    Fq::from_montgomery_limbs([
1093                        491531644685882947,
1094                        16236469504155238438,
1095                        13405996466460073108,
1096                        191442324574972544,
1097                    ]),
1098                    Fq::from_montgomery_limbs([
1099                        14234832595612208455,
1100                        16711171142020806901,
1101                        9818085755212544560,
1102                        433758843793119660,
1103                    ]),
1104                ]),
1105                Matrix::<1, 2, 2>::new_from_known([
1106                    Fq::from_montgomery_limbs([
1107                        8692243294689566788,
1108                        17131754811489911037,
1109                        16082421295010554115,
1110                        245109642615998458,
1111                    ]),
1112                    Fq::from_montgomery_limbs([
1113                        12752747264486126419,
1114                        12936758402746978248,
1115                        7901753820298393242,
1116                        1086817638717069074,
1117                    ]),
1118                ]),
1119                Matrix::<1, 2, 2>::new_from_known([
1120                    Fq::from_montgomery_limbs([
1121                        716899015486837574,
1122                        12929955716143301332,
1123                        6296181173922398814,
1124                        95630164573893864,
1125                    ]),
1126                    Fq::from_montgomery_limbs([
1127                        10771615223994036552,
1128                        12477611863199363886,
1129                        5019464732542008653,
1130                        260172239809303582,
1131                    ]),
1132                ]),
1133                Matrix::<1, 2, 2>::new_from_known([
1134                    Fq::from_montgomery_limbs([
1135                        2083749357590716775,
1136                        7802489018239475310,
1137                        4719252491703553508,
1138                        331544147020630716,
1139                    ]),
1140                    Fq::from_montgomery_limbs([
1141                        11839081110669849836,
1142                        16458332811546812068,
1143                        4108523134706353886,
1144                        1014020374083768583,
1145                    ]),
1146                ]),
1147                Matrix::<1, 2, 2>::new_from_known([
1148                    Fq::from_montgomery_limbs([
1149                        11143510974855252250,
1150                        1906425947937085984,
1151                        2407368748249553491,
1152                        504368299222388920,
1153                    ]),
1154                    Fq::from_montgomery_limbs([
1155                        8041950831366606113,
1156                        14611771049638947187,
1157                        11221299042990583579,
1158                        744635656555856530,
1159                    ]),
1160                ]),
1161                Matrix::<1, 2, 2>::new_from_known([
1162                    Fq::from_montgomery_limbs([
1163                        15987773674750471853,
1164                        7582780421302456968,
1165                        3513070142855093124,
1166                        449192997718482772,
1167                    ]),
1168                    Fq::from_montgomery_limbs([
1169                        1698389311466971615,
1170                        4208825745762883192,
1171                        17737380562723619127,
1172                        1023230515994865951,
1173                    ]),
1174                ]),
1175                Matrix::<1, 2, 2>::new_from_known([
1176                    Fq::from_montgomery_limbs([
1177                        15719775543772287808,
1178                        4711976878746234330,
1179                        9616083067266331949,
1180                        1291758636403773818,
1181                    ]),
1182                    Fq::from_montgomery_limbs([
1183                        11511319411419341690,
1184                        4611804125723845050,
1185                        17905923766281011346,
1186                        701498562864789906,
1187                    ]),
1188                ]),
1189                Matrix::<1, 2, 2>::new_from_known([
1190                    Fq::from_montgomery_limbs([
1191                        6775959117219461845,
1192                        7248217303083744152,
1193                        8323273847079805491,
1194                        1272121734883668680,
1195                    ]),
1196                    Fq::from_montgomery_limbs([
1197                        15960231410259949054,
1198                        831075562495169556,
1199                        666337526106305827,
1200                        827994946738712632,
1201                    ]),
1202                ]),
1203                Matrix::<1, 2, 2>::new_from_known([
1204                    Fq::from_montgomery_limbs([
1205                        3075648154561933440,
1206                        4787490504369527279,
1207                        2103456873768609578,
1208                        930535653041788534,
1209                    ]),
1210                    Fq::from_montgomery_limbs([
1211                        13632064958207562507,
1212                        2403612539570381736,
1213                        9671114344743639907,
1214                        554518676653218341,
1215                    ]),
1216                ]),
1217                Matrix::<1, 2, 2>::new_from_known([
1218                    Fq::from_montgomery_limbs([
1219                        16017511834618514656,
1220                        10675130055946071909,
1221                        4737919029540133580,
1222                        682111021257012783,
1223                    ]),
1224                    Fq::from_montgomery_limbs([
1225                        4054052073615595653,
1226                        15900491953977945207,
1227                        9657244812600116702,
1228                        746793989576728670,
1229                    ]),
1230                ]),
1231                Matrix::<1, 2, 2>::new_from_known([
1232                    Fq::from_montgomery_limbs([
1233                        11427159084253523216,
1234                        8137374149736453962,
1235                        493707633722255071,
1236                        574786622341431128,
1237                    ]),
1238                    Fq::from_montgomery_limbs([
1239                        3016813624761290833,
1240                        9410383431703917657,
1241                        207322790806709582,
1242                        604735846059941483,
1243                    ]),
1244                ]),
1245                Matrix::<1, 2, 2>::new_from_known([
1246                    Fq::from_montgomery_limbs([
1247                        13182715603850996122,
1248                        1385581621557644096,
1249                        15928797776098706943,
1250                        1247128249672542744,
1251                    ]),
1252                    Fq::from_montgomery_limbs([
1253                        12343557143080639521,
1254                        10608577464123341465,
1255                        8700628699767163855,
1256                        822798305869360351,
1257                    ]),
1258                ]),
1259                Matrix::<1, 2, 2>::new_from_known([
1260                    Fq::from_montgomery_limbs([
1261                        15640932130097417474,
1262                        2198144264546084253,
1263                        15157422365823566225,
1264                        162345305798039707,
1265                    ]),
1266                    Fq::from_montgomery_limbs([
1267                        15379897571473551238,
1268                        13605062526804796454,
1269                        1262497433072300524,
1270                        325397323402951460,
1271                    ]),
1272                ]),
1273                Matrix::<1, 2, 2>::new_from_known([
1274                    Fq::from_montgomery_limbs([
1275                        11985517729662602408,
1276                        11378058393967136140,
1277                        10784471266494716066,
1278                        355758022531067864,
1279                    ]),
1280                    Fq::from_montgomery_limbs([
1281                        15749607349459966392,
1282                        10347221607350790242,
1283                        16868641356169832097,
1284                        9481912848277140,
1285                    ]),
1286                ]),
1287                Matrix::<1, 2, 2>::new_from_known([
1288                    Fq::from_montgomery_limbs([
1289                        5070404887673962603,
1290                        7505346455783472838,
1291                        11581801124979799833,
1292                        162417281360137989,
1293                    ]),
1294                    Fq::from_montgomery_limbs([
1295                        14359230556911256253,
1296                        4739001612305070282,
1297                        615167045189603842,
1298                        893440173159515387,
1299                    ]),
1300                ]),
1301                Matrix::<1, 2, 2>::new_from_known([
1302                    Fq::from_montgomery_limbs([
1303                        6892861075705566142,
1304                        16405352091222855583,
1305                        9442037024015442096,
1306                        943715695188578421,
1307                    ]),
1308                    Fq::from_montgomery_limbs([
1309                        2681738006276381668,
1310                        13590338127726729778,
1311                        9006319668283998389,
1312                        571100162557721724,
1313                    ]),
1314                ]),
1315                Matrix::<1, 2, 2>::new_from_known([
1316                    Fq::from_montgomery_limbs([
1317                        7926076457258912989,
1318                        15568541251154450028,
1319                        15222738110907421829,
1320                        194241141418124411,
1321                    ]),
1322                    Fq::from_montgomery_limbs([
1323                        3900695082401480226,
1324                        13241392216815987825,
1325                        6715445016875356020,
1326                        559176536870193173,
1327                    ]),
1328                ]),
1329                Matrix::<1, 2, 2>::new_from_known([
1330                    Fq::from_montgomery_limbs([
1331                        4273472679882108688,
1332                        7043568940286842511,
1333                        9096453621609771899,
1334                        490785749945503317,
1335                    ]),
1336                    Fq::from_montgomery_limbs([
1337                        2078179201499171590,
1338                        16327227019578678368,
1339                        17980150213785344661,
1340                        1297383831585962991,
1341                    ]),
1342                ]),
1343                Matrix::<1, 2, 2>::new_from_known([
1344                    Fq::from_montgomery_limbs([
1345                        14728670056946621521,
1346                        17042639142917167694,
1347                        2971308019248556661,
1348                        314387788586761162,
1349                    ]),
1350                    Fq::from_montgomery_limbs([
1351                        14126190491907727041,
1352                        8208403354023925517,
1353                        4660262216078686939,
1354                        971808842720812284,
1355                    ]),
1356                ]),
1357                Matrix::<1, 2, 2>::new_from_known([
1358                    Fq::from_montgomery_limbs([
1359                        12606246547610594540,
1360                        9049616062023318605,
1361                        11742190485797839027,
1362                        90317661102003606,
1363                    ]),
1364                    Fq::from_montgomery_limbs([
1365                        7135240500841828540,
1366                        8166637984141883895,
1367                        4762161495768731224,
1368                        1056050894881259133,
1369                    ]),
1370                ]),
1371                Matrix::<1, 2, 2>::new_from_known([
1372                    Fq::from_montgomery_limbs([
1373                        11752411941768010421,
1374                        2371987101660996229,
1375                        7910923918069285785,
1376                        283757372746488803,
1377                    ]),
1378                    Fq::from_montgomery_limbs([
1379                        14169661373594066352,
1380                        10756814747639910216,
1381                        4179402566370914468,
1382                        294039297137006515,
1383                    ]),
1384                ]),
1385                Matrix::<1, 2, 2>::new_from_known([
1386                    Fq::from_montgomery_limbs([
1387                        12380990947758453459,
1388                        15919689303377847053,
1389                        4451172135381562238,
1390                        643870172347401539,
1391                    ]),
1392                    Fq::from_montgomery_limbs([
1393                        16919934541410985772,
1394                        12894445305080351094,
1395                        3222976969400102992,
1396                        1274426454940711344,
1397                    ]),
1398                ]),
1399                Matrix::<1, 2, 2>::new_from_known([
1400                    Fq::from_montgomery_limbs([
1401                        17739117012754232566,
1402                        7855016506876230601,
1403                        10199750748041585788,
1404                        610234517763900211,
1405                    ]),
1406                    Fq::from_montgomery_limbs([
1407                        14969807057009266193,
1408                        9743543989422659962,
1409                        265344874800963549,
1410                        193281162476465682,
1411                    ]),
1412                ]),
1413                Matrix::<1, 2, 2>::new_from_known([
1414                    Fq::from_montgomery_limbs([
1415                        9334899116745497567,
1416                        1443910720530394642,
1417                        15242704534506362012,
1418                        557844541838643008,
1419                    ]),
1420                    Fq::from_montgomery_limbs([
1421                        12596150337841453197,
1422                        17941854592742713998,
1423                        9536226961205720981,
1424                        193378317632915294,
1425                    ]),
1426                ]),
1427                Matrix::<1, 2, 2>::new_from_known([
1428                    Fq::from_montgomery_limbs([
1429                        2145847197367443746,
1430                        3494461491303192245,
1431                        8559536859052153255,
1432                        188641306996153597,
1433                    ]),
1434                    Fq::from_montgomery_limbs([
1435                        6619736277081498517,
1436                        16354589870583930111,
1437                        5727794428272011445,
1438                        472934899434235719,
1439                    ]),
1440                ]),
1441                Matrix::<1, 2, 2>::new_from_known([
1442                    Fq::from_montgomery_limbs([
1443                        15229354881950810050,
1444                        13117262548706587,
1445                        18434975406822541359,
1446                        430449497798843798,
1447                    ]),
1448                    Fq::from_montgomery_limbs([
1449                        4585061371183060684,
1450                        14866599352008180181,
1451                        17851236730068556506,
1452                        483368166519918339,
1453                    ]),
1454                ]),
1455                Matrix::<1, 2, 2>::new_from_known([
1456                    Fq::from_montgomery_limbs([
1457                        16121753970412208543,
1458                        9309799407998260359,
1459                        13316268079574695590,
1460                        1332560915242838761,
1461                    ]),
1462                    Fq::from_montgomery_limbs([
1463                        5320180137128926885,
1464                        4585099896596608821,
1465                        4959026927695406777,
1466                        12672238118064834,
1467                    ]),
1468                ]),
1469            ],
1470            w_hat_collection: [
1471                Matrix::<2, 1, 2>::new_from_known([
1472                    Fq::from_montgomery_limbs([
1473                        7147916296078753751,
1474                        11795755565450264533,
1475                        9448453213491875784,
1476                        183737022913545514,
1477                    ]),
1478                    Fq::from_montgomery_limbs([
1479                        10406805428937057924,
1480                        14160037477503257835,
1481                        7036231764655967476,
1482                        1082136417579874198,
1483                    ]),
1484                ]),
1485                Matrix::<2, 1, 2>::new_from_known([
1486                    Fq::from_montgomery_limbs([
1487                        18050286569012579189,
1488                        12701735779500542307,
1489                        16028299840828156173,
1490                        889670182449753716,
1491                    ]),
1492                    Fq::from_montgomery_limbs([
1493                        17537805078915517156,
1494                        3881567050914191905,
1495                        15320666583506005360,
1496                        34817918541568626,
1497                    ]),
1498                ]),
1499                Matrix::<2, 1, 2>::new_from_known([
1500                    Fq::from_montgomery_limbs([
1501                        639651884569206475,
1502                        3208454571154516477,
1503                        5589814573911893755,
1504                        812188059462663385,
1505                    ]),
1506                    Fq::from_montgomery_limbs([
1507                        6035414598134387451,
1508                        221157594769622514,
1509                        1246867853953039854,
1510                        865666459554075403,
1511                    ]),
1512                ]),
1513                Matrix::<2, 1, 2>::new_from_known([
1514                    Fq::from_montgomery_limbs([
1515                        10986953500964328689,
1516                        4552354314624673085,
1517                        10130711827018722177,
1518                        726464205504256466,
1519                    ]),
1520                    Fq::from_montgomery_limbs([
1521                        14592704253024955499,
1522                        4367720503141755092,
1523                        3264507028823567377,
1524                        503642346381621716,
1525                    ]),
1526                ]),
1527                Matrix::<2, 1, 2>::new_from_known([
1528                    Fq::from_montgomery_limbs([
1529                        6929349916420721052,
1530                        7263465717590274222,
1531                        16428445137775857828,
1532                        783617578238482410,
1533                    ]),
1534                    Fq::from_montgomery_limbs([
1535                        1105466080997706678,
1536                        15638892732603802885,
1537                        15163494631828844812,
1538                        1265995546038282468,
1539                    ]),
1540                ]),
1541                Matrix::<2, 1, 2>::new_from_known([
1542                    Fq::from_montgomery_limbs([
1543                        12695614650926966465,
1544                        7645153902251269333,
1545                        15007858904354383754,
1546                        303173888887641556,
1547                    ]),
1548                    Fq::from_montgomery_limbs([
1549                        13532111267254117566,
1550                        453207663850979705,
1551                        1118439931840184625,
1552                        1109223913114108441,
1553                    ]),
1554                ]),
1555                Matrix::<2, 1, 2>::new_from_known([
1556                    Fq::from_montgomery_limbs([
1557                        1127605964966272093,
1558                        459071588792078574,
1559                        17569200668490318799,
1560                        556567547339769587,
1561                    ]),
1562                    Fq::from_montgomery_limbs([
1563                        743383751775379478,
1564                        2152757563916176356,
1565                        18215266305796881375,
1566                        613050128242856475,
1567                    ]),
1568                ]),
1569                Matrix::<2, 1, 2>::new_from_known([
1570                    Fq::from_montgomery_limbs([
1571                        7479292154348380014,
1572                        12505834466797528681,
1573                        7061175132070981799,
1574                        1037799745298480638,
1575                    ]),
1576                    Fq::from_montgomery_limbs([
1577                        4733881782580367683,
1578                        13385554219210821909,
1579                        11595152338390400937,
1580                        1286877367267536722,
1581                    ]),
1582                ]),
1583                Matrix::<2, 1, 2>::new_from_known([
1584                    Fq::from_montgomery_limbs([
1585                        10482398298648703137,
1586                        13154284141257785070,
1587                        12900892582326783232,
1588                        1312370380898727254,
1589                    ]),
1590                    Fq::from_montgomery_limbs([
1591                        7694076120856540521,
1592                        15146007605344947747,
1593                        3193830018416013595,
1594                        78000754372621570,
1595                    ]),
1596                ]),
1597                Matrix::<2, 1, 2>::new_from_known([
1598                    Fq::from_montgomery_limbs([
1599                        5244970134326960239,
1600                        15516929113764341255,
1601                        17564742414096943825,
1602                        565809721348112173,
1603                    ]),
1604                    Fq::from_montgomery_limbs([
1605                        5301582977685139465,
1606                        1069505112975002608,
1607                        16894882112854195663,
1608                        1006960914609031286,
1609                    ]),
1610                ]),
1611                Matrix::<2, 1, 2>::new_from_known([
1612                    Fq::from_montgomery_limbs([
1613                        933807009911564028,
1614                        17655717523721777752,
1615                        659854032695183391,
1616                        696948171193839726,
1617                    ]),
1618                    Fq::from_montgomery_limbs([
1619                        14431054331145497962,
1620                        17304755953697263142,
1621                        1213662370814867240,
1622                        406071929554987935,
1623                    ]),
1624                ]),
1625                Matrix::<2, 1, 2>::new_from_known([
1626                    Fq::from_montgomery_limbs([
1627                        12663120994246797343,
1628                        2294330459533986298,
1629                        12312665243517552316,
1630                        1162434858386655769,
1631                    ]),
1632                    Fq::from_montgomery_limbs([
1633                        14926635415117511105,
1634                        17764138882091983380,
1635                        9845162467394310721,
1636                        365262529860339315,
1637                    ]),
1638                ]),
1639                Matrix::<2, 1, 2>::new_from_known([
1640                    Fq::from_montgomery_limbs([
1641                        14453117806705169688,
1642                        15371763008771329739,
1643                        859830826361086373,
1644                        695666911485789237,
1645                    ]),
1646                    Fq::from_montgomery_limbs([
1647                        4372294882149658880,
1648                        8953368466178039118,
1649                        7175551968845157174,
1650                        1296799522059563299,
1651                    ]),
1652                ]),
1653                Matrix::<2, 1, 2>::new_from_known([
1654                    Fq::from_montgomery_limbs([
1655                        10743785724983518030,
1656                        11011793084410944909,
1657                        4710170432674399868,
1658                        872985210632843618,
1659                    ]),
1660                    Fq::from_montgomery_limbs([
1661                        17034928244178709962,
1662                        7064630411064620365,
1663                        11395663509669588708,
1664                        435858474778976283,
1665                    ]),
1666                ]),
1667                Matrix::<2, 1, 2>::new_from_known([
1668                    Fq::from_montgomery_limbs([
1669                        376125808430990068,
1670                        3949770427712474479,
1671                        1831829189608085506,
1672                        1033600417294508604,
1673                    ]),
1674                    Fq::from_montgomery_limbs([
1675                        10474175416970714387,
1676                        7638666470072040137,
1677                        15323998975775188709,
1678                        499861799254400548,
1679                    ]),
1680                ]),
1681                Matrix::<2, 1, 2>::new_from_known([
1682                    Fq::from_montgomery_limbs([
1683                        1311503503152331198,
1684                        10444356300795820152,
1685                        14006643509954394380,
1686                        360275028297029580,
1687                    ]),
1688                    Fq::from_montgomery_limbs([
1689                        8848990081142010576,
1690                        3767709270230096287,
1691                        3203373808160299103,
1692                        388150987057922534,
1693                    ]),
1694                ]),
1695                Matrix::<2, 1, 2>::new_from_known([
1696                    Fq::from_montgomery_limbs([
1697                        10527714796170242821,
1698                        10614707629823438759,
1699                        2166835449751899854,
1700                        826442630247846539,
1701                    ]),
1702                    Fq::from_montgomery_limbs([
1703                        6013609006746740436,
1704                        17829255150171580013,
1705                        4865370498689675602,
1706                        631806865209492278,
1707                    ]),
1708                ]),
1709                Matrix::<2, 1, 2>::new_from_known([
1710                    Fq::from_montgomery_limbs([
1711                        15407698184224138641,
1712                        13892993523782417432,
1713                        11074522626536989473,
1714                        1282147673049091223,
1715                    ]),
1716                    Fq::from_montgomery_limbs([
1717                        13566156582579433121,
1718                        10666124267110644787,
1719                        17585510383615080517,
1720                        460461758314188289,
1721                    ]),
1722                ]),
1723                Matrix::<2, 1, 2>::new_from_known([
1724                    Fq::from_montgomery_limbs([
1725                        242069913640544639,
1726                        8584725967717195423,
1727                        8673969491922319906,
1728                        906855204727712918,
1729                    ]),
1730                    Fq::from_montgomery_limbs([
1731                        7507622872789915132,
1732                        8838834878197495556,
1733                        4143887577251148647,
1734                        147314013318059527,
1735                    ]),
1736                ]),
1737                Matrix::<2, 1, 2>::new_from_known([
1738                    Fq::from_montgomery_limbs([
1739                        739343839918695474,
1740                        15137511284934501835,
1741                        8206744331706291412,
1742                        460517726754831566,
1743                    ]),
1744                    Fq::from_montgomery_limbs([
1745                        5332098194526476884,
1746                        17462053065946204764,
1747                        17109918215020530224,
1748                        45500621783055396,
1749                    ]),
1750                ]),
1751                Matrix::<2, 1, 2>::new_from_known([
1752                    Fq::from_montgomery_limbs([
1753                        7181843829067274762,
1754                        93170180385149654,
1755                        16601265500332534068,
1756                        692920224266685092,
1757                    ]),
1758                    Fq::from_montgomery_limbs([
1759                        17373541931105532396,
1760                        11757401236546761356,
1761                        8986928677878657520,
1762                        855377794858428568,
1763                    ]),
1764                ]),
1765                Matrix::<2, 1, 2>::new_from_known([
1766                    Fq::from_montgomery_limbs([
1767                        16770152912401058713,
1768                        7784323106136704842,
1769                        3166414142982631778,
1770                        252798645948426673,
1771                    ]),
1772                    Fq::from_montgomery_limbs([
1773                        9867428128375842792,
1774                        6330871821464522409,
1775                        2509737650104409073,
1776                        87377932535113034,
1777                    ]),
1778                ]),
1779                Matrix::<2, 1, 2>::new_from_known([
1780                    Fq::from_montgomery_limbs([
1781                        9620378538351684400,
1782                        16259903847898782084,
1783                        14224517332394904862,
1784                        248783024579596034,
1785                    ]),
1786                    Fq::from_montgomery_limbs([
1787                        15289486933546124534,
1788                        5057961130890228616,
1789                        5618412873763815158,
1790                        1218252246195044797,
1791                    ]),
1792                ]),
1793                Matrix::<2, 1, 2>::new_from_known([
1794                    Fq::from_montgomery_limbs([
1795                        18285461524892798097,
1796                        1312649631515945874,
1797                        2702563113361998981,
1798                        156990921411102370,
1799                    ]),
1800                    Fq::from_montgomery_limbs([
1801                        16897672275046167563,
1802                        14631253948673542966,
1803                        7825433188494427672,
1804                        497140819371349325,
1805                    ]),
1806                ]),
1807                Matrix::<2, 1, 2>::new_from_known([
1808                    Fq::from_montgomery_limbs([
1809                        5586425496410891559,
1810                        3860435103896432777,
1811                        15075562942840298887,
1812                        539774915240951994,
1813                    ]),
1814                    Fq::from_montgomery_limbs([
1815                        18444236515588467614,
1816                        2138469830557977395,
1817                        8290712504743660259,
1818                        832327778452741186,
1819                    ]),
1820                ]),
1821                Matrix::<2, 1, 2>::new_from_known([
1822                    Fq::from_montgomery_limbs([
1823                        15144610075012749322,
1824                        11801332079357554718,
1825                        11652842602527962385,
1826                        396912768209767018,
1827                    ]),
1828                    Fq::from_montgomery_limbs([
1829                        10639969620247737667,
1830                        7334159324553590340,
1831                        15063492084884778567,
1832                        878961650630548788,
1833                    ]),
1834                ]),
1835                Matrix::<2, 1, 2>::new_from_known([
1836                    Fq::from_montgomery_limbs([
1837                        18348264072788817511,
1838                        8009061068808737218,
1839                        6097418426121505352,
1840                        1211183153837556564,
1841                    ]),
1842                    Fq::from_montgomery_limbs([
1843                        17198860156343170394,
1844                        2167538157704278478,
1845                        10949270097435223366,
1846                        928056824653534234,
1847                    ]),
1848                ]),
1849                Matrix::<2, 1, 2>::new_from_known([
1850                    Fq::from_montgomery_limbs([
1851                        10634763804674129031,
1852                        9612181115928191305,
1853                        7893421171473086290,
1854                        251268211819044542,
1855                    ]),
1856                    Fq::from_montgomery_limbs([
1857                        12969986235926373418,
1858                        712178654575523278,
1859                        3830673788986900912,
1860                        1046343437814522982,
1861                    ]),
1862                ]),
1863                Matrix::<2, 1, 2>::new_from_known([
1864                    Fq::from_montgomery_limbs([
1865                        4298621992800380154,
1866                        4055578536241120435,
1867                        9617612244989535309,
1868                        382604375840733162,
1869                    ]),
1870                    Fq::from_montgomery_limbs([
1871                        18067399474523304446,
1872                        12223555489918789755,
1873                        9993950631657703109,
1874                        1048484019905387459,
1875                    ]),
1876                ]),
1877                Matrix::<2, 1, 2>::new_from_known([
1878                    Fq::from_montgomery_limbs([
1879                        13058818877006642653,
1880                        18414014235319212231,
1881                        14027764563566307518,
1882                        703825358964196766,
1883                    ]),
1884                    Fq::from_montgomery_limbs([
1885                        9830948603405623404,
1886                        3341559968925646454,
1887                        12259602563968066179,
1888                        912923676012093495,
1889                    ]),
1890                ]),
1891                Matrix::<2, 1, 2>::new_from_known([
1892                    Fq::from_montgomery_limbs([
1893                        8043127764066461437,
1894                        14803670394754936674,
1895                        15225608398783219441,
1896                        893330814736280447,
1897                    ]),
1898                    Fq::from_montgomery_limbs([
1899                        4386126239109851849,
1900                        12096965878015338652,
1901                        13672154659709754401,
1902                        191338360587662586,
1903                    ]),
1904                ]),
1905            ],
1906        },
1907        optimized_arc: OptimizedArcMatrix::<39, 3, 117>::new_from_known([
1908            Fq::from_montgomery_limbs([
1909                13532052565085671856,
1910                13175575834742130482,
1911                14571043277169067394,
1912                1128324334676141805,
1913            ]),
1914            Fq::from_montgomery_limbs([
1915                10586567975029405298,
1916                5987505274649066590,
1917                9663655893165983133,
1918                381788629769180835,
1919            ]),
1920            Fq::from_montgomery_limbs([
1921                7404335995308317606,
1922                10342209374602516054,
1923                14679697400509748167,
1924                1259991645283011647,
1925            ]),
1926            Fq::from_montgomery_limbs([
1927                12711294721892819516,
1928                8412935995118692797,
1929                7069737649526067295,
1930                549549236990677487,
1931            ]),
1932            Fq::from_montgomery_limbs([
1933                128694122049037398,
1934                15825223235256271389,
1935                74647683628497806,
1936                403759781237802093,
1937            ]),
1938            Fq::from_montgomery_limbs([
1939                3501552524290051296,
1940                10688664658423588201,
1941                8345653809557910120,
1942                766292783896459938,
1943            ]),
1944            Fq::from_montgomery_limbs([
1945                13998055823902745235,
1946                15535161481341849823,
1947                9848874496394823215,
1948                579121379437172744,
1949            ]),
1950            Fq::from_montgomery_limbs([
1951                16363263235454987811,
1952                9117252686821547535,
1953                4794867261658414781,
1954                418411818796950741,
1955            ]),
1956            Fq::from_montgomery_limbs([
1957                3710344964675021293,
1958                13957371261080223237,
1959                15195218532629186765,
1960                760708816844813378,
1961            ]),
1962            Fq::from_montgomery_limbs([
1963                16135673103471103205,
1964                13943139040297964408,
1965                12037506718934223099,
1966                1187380734246932890,
1967            ]),
1968            Fq::from_montgomery_limbs([
1969                11326210002632211732,
1970                2893415499386035614,
1971                2949171194607212014,
1972                568849018592141776,
1973            ]),
1974            Fq::from_montgomery_limbs([
1975                13925494990768706056,
1976                13969996543019858204,
1977                13457764640058086886,
1978                114396439087701688,
1979            ]),
1980            Fq::from_montgomery_limbs([
1981                16351586607272228519,
1982                6269966282891300082,
1983                12490381894697744781,
1984                834648274293416263,
1985            ]),
1986            Fq::from_montgomery_limbs([
1987                8699206025130866823,
1988                13848489523222436720,
1989                17766508449394109403,
1990                431734376631208559,
1991            ]),
1992            Fq::from_montgomery_limbs([
1993                14700415236695759193,
1994                989025675687828871,
1995                13240672964496825486,
1996                748003865243962980,
1997            ]),
1998            Fq::from_montgomery_limbs([
1999                9214232780783070449,
2000                14602960282866682732,
2001                11429301634278273897,
2002                1184931746603958427,
2003            ]),
2004            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2005            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2006            Fq::from_montgomery_limbs([
2007                16918226576727530642,
2008                1752255981222787988,
2009                8817230776216477202,
2010                44114642545061535,
2011            ]),
2012            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2013            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2014            Fq::from_montgomery_limbs([
2015                17686129245176609251,
2016                9674361899119805900,
2017                9621008306276981352,
2018                1255623840056121919,
2019            ]),
2020            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2021            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2022            Fq::from_montgomery_limbs([
2023                10364230610752960663,
2024                23910044943574860,
2025                13406278639865106346,
2026                1187183151912921258,
2027            ]),
2028            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2029            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2030            Fq::from_montgomery_limbs([
2031                248381449107176191,
2032                10056558558812610353,
2033                2935304612801451247,
2034                120643143760647643,
2035            ]),
2036            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2037            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2038            Fq::from_montgomery_limbs([
2039                3742705574147487793,
2040                4686024809709633429,
2041                16670792739934718940,
2042                963767567248511600,
2043            ]),
2044            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2045            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2046            Fq::from_montgomery_limbs([
2047                13818431717487898976,
2048                12602204397986520132,
2049                12877538805399868553,
2050                707732823673573212,
2051            ]),
2052            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2053            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2054            Fq::from_montgomery_limbs([
2055                1195524900235019800,
2056                10255957893776983045,
2057                17449323294835632168,
2058                1338958398006622846,
2059            ]),
2060            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2061            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2062            Fq::from_montgomery_limbs([
2063                561235443935255932,
2064                15462505627668153377,
2065                15246107413854263254,
2066                504727735813765489,
2067            ]),
2068            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2069            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2070            Fq::from_montgomery_limbs([
2071                5653045592293015958,
2072                3671862246408432263,
2073                7122935779684396291,
2074                7330594669677847,
2075            ]),
2076            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2077            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2078            Fq::from_montgomery_limbs([
2079                16480412187204912644,
2080                2983094841853066492,
2081                7734631524643537613,
2082                311160218197782574,
2083            ]),
2084            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2085            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2086            Fq::from_montgomery_limbs([
2087                6090779872384130856,
2088                3292296244344624559,
2089                14896131539665449347,
2090                1294066060635586937,
2091            ]),
2092            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2093            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2094            Fq::from_montgomery_limbs([
2095                4370576169448893808,
2096                12445091387328652898,
2097                4928931422125126888,
2098                1290627573012356056,
2099            ]),
2100            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2101            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2102            Fq::from_montgomery_limbs([
2103                12051840169477196739,
2104                3885157525438683377,
2105                15460563848822265709,
2106                371728860504033938,
2107            ]),
2108            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2109            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2110            Fq::from_montgomery_limbs([
2111                12236751112463919400,
2112                10461860001193096708,
2113                18252891305864475627,
2114                422909291039524709,
2115            ]),
2116            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2117            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2118            Fq::from_montgomery_limbs([
2119                18089753698150707757,
2120                11984889148538027693,
2121                14464882633247838012,
2122                989393623597663020,
2123            ]),
2124            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2125            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2126            Fq::from_montgomery_limbs([
2127                5947035363582041005,
2128                10165882087299872929,
2129                17463545041843069654,
2130                661760845006520055,
2131            ]),
2132            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2133            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2134            Fq::from_montgomery_limbs([
2135                12977803574308926045,
2136                11603755933737030579,
2137                13169368374394024728,
2138                264871768182436351,
2139            ]),
2140            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2141            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2142            Fq::from_montgomery_limbs([
2143                14419631251839461179,
2144                11301211733526246620,
2145                15903366283781829327,
2146                773728645355215118,
2147            ]),
2148            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2149            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2150            Fq::from_montgomery_limbs([
2151                8308101026985166387,
2152                7726119298360373485,
2153                10162441497855384077,
2154                189302244249177174,
2155            ]),
2156            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2157            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2158            Fq::from_montgomery_limbs([
2159                12797668472951431300,
2160                13827763415857474023,
2161                14698122219544096234,
2162                1231082431746263546,
2163            ]),
2164            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2165            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2166            Fq::from_montgomery_limbs([
2167                9036419769160652203,
2168                14179415714825094519,
2169                1197988233308979514,
2170                1215761277179828327,
2171            ]),
2172            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2173            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2174            Fq::from_montgomery_limbs([
2175                4698260184489833131,
2176                10279668321438795791,
2177                12410250074379293741,
2178                1217500461705392747,
2179            ]),
2180            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2181            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2182            Fq::from_montgomery_limbs([
2183                12177225652612451477,
2184                6323252679960824348,
2185                2982537087474808916,
2186                1265097794155080401,
2187            ]),
2188            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2189            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2190            Fq::from_montgomery_limbs([
2191                10936589967746372713,
2192                1315336780394893005,
2193                11802358065708482185,
2194                926000082171380579,
2195            ]),
2196            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2197            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2198            Fq::from_montgomery_limbs([
2199                9602562037821535541,
2200                6086973874915377682,
2201                14393911822211896593,
2202                197271477318300291,
2203            ]),
2204            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2205            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2206            Fq::from_montgomery_limbs([
2207                702050427916060493,
2208                13537318979711565901,
2209                15026546140525067500,
2210                581472194808990332,
2211            ]),
2212            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2213            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2214            Fq::from_montgomery_limbs([
2215                16536035763574678680,
2216                10430337823398608412,
2217                14603639842087973366,
2218                184743670576012836,
2219            ]),
2220            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2221            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2222            Fq::from_montgomery_limbs([
2223                703457789642747182,
2224                14826807143913517966,
2225                278957441362419559,
2226                572670923489064055,
2227            ]),
2228            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2229            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2230            Fq::from_montgomery_limbs([
2231                11986568387549799012,
2232                17060314952512548206,
2233                5848465513240015059,
2234                844014096680008996,
2235            ]),
2236            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2237            Fq::from_montgomery_limbs([0, 0, 0, 0]),
2238            Fq::from_montgomery_limbs([
2239                8710335429210318089,
2240                15939765460477572548,
2241                13493874982974354172,
2242                1195299757590572308,
2243            ]),
2244            Fq::from_montgomery_limbs([
2245                16720044796621311460,
2246                6297107607479107816,
2247                15666086360782481298,
2248                946070823657072210,
2249            ]),
2250            Fq::from_montgomery_limbs([
2251                5216764590966106189,
2252                18330556132248987975,
2253                14778046174865524185,
2254                601592383999400705,
2255            ]),
2256            Fq::from_montgomery_limbs([
2257                12284358746189003172,
2258                15796822047553990474,
2259                10249807758448272935,
2260                1260540691182942177,
2261            ]),
2262            Fq::from_montgomery_limbs([
2263                14671741496053748797,
2264                15956144823383552989,
2265                8978105115308257315,
2266                1129739098292337641,
2267            ]),
2268            Fq::from_montgomery_limbs([
2269                16528885559305010985,
2270                14885472285663731653,
2271                8692450371018254777,
2272                875854298006252122,
2273            ]),
2274            Fq::from_montgomery_limbs([
2275                11216935928075429441,
2276                7088545516130524118,
2277                3510979311098449529,
2278                980345967679074250,
2279            ]),
2280            Fq::from_montgomery_limbs([
2281                8480849792218315917,
2282                11146529356407982510,
2283                4204845623809735650,
2284                554809226012522197,
2285            ]),
2286            Fq::from_montgomery_limbs([
2287                9465397404983425896,
2288                1339596460298740670,
2289                2695000812316794677,
2290                164270174202044235,
2291            ]),
2292            Fq::from_montgomery_limbs([
2293                12807958353199166386,
2294                2607509355362673632,
2295                9510828759520576266,
2296                306232379852697998,
2297            ]),
2298            Fq::from_montgomery_limbs([
2299                14216260065142834520,
2300                8830790711865643815,
2301                7264415235010871052,
2302                905551093713836953,
2303            ]),
2304            Fq::from_montgomery_limbs([
2305                1392129315389772974,
2306                3163495863255052347,
2307                5961497987857813198,
2308                47707649459794917,
2309            ]),
2310        ]),
2311    }
2312}