poseidon377/params/
rate_1.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-1 instance of Poseidon.
8pub const fn rate_1() -> PoseidonParameters<2, 1, 4, 1, 39, 2, 78, 31> {
9    PoseidonParameters {
10        M: 128,
11        arc: ArcMatrix::<39, 2, 78>::new_from_known([
12            Fq::from_montgomery_limbs([
13                6258896775460530561,
14                1267570262938364784,
15                10583705394133388288,
16                4331270346116315,
17            ]),
18            Fq::from_montgomery_limbs([
19                15454694353288852986,
20                2205227775135851582,
21                9104115866970654747,
22                48952601862872692,
23            ]),
24            Fq::from_montgomery_limbs([
25                17632203450119298224,
26                13599315412875479343,
27                7140007131719627884,
28                569020719923681609,
29            ]),
30            Fq::from_montgomery_limbs([
31                6608939517720255573,
32                15066841911042588370,
33                8648475674864948310,
34                578035154261448463,
35            ]),
36            Fq::from_montgomery_limbs([
37                1055805092356900670,
38                5486646384412869322,
39                9705528431443784365,
40                307684188417815151,
41            ]),
42            Fq::from_montgomery_limbs([
43                11248650571348093756,
44                1514639161444600232,
45                968234586550369174,
46                1313541476846290422,
47            ]),
48            Fq::from_montgomery_limbs([
49                5189078861895589451,
50                9996051726892023924,
51                14955307722807799098,
52                1320126769029056157,
53            ]),
54            Fq::from_montgomery_limbs([
55                14397975440942704641,
56                14269464930912859892,
57                9230505175050478925,
58                1093012507774165575,
59            ]),
60            Fq::from_montgomery_limbs([
61                6847445113090943697,
62                17673603016395516883,
63                15250705377106188486,
64                539035154593930175,
65            ]),
66            Fq::from_montgomery_limbs([
67                6947720323756162913,
68                3313209312340777357,
69                18395293995391548637,
70                209157278787801614,
71            ]),
72            Fq::from_montgomery_limbs([
73                3458319354278701363,
74                11429938079178703613,
75                7005241729732086579,
76                150425083810087548,
77            ]),
78            Fq::from_montgomery_limbs([
79                2543869222269883848,
80                6129645233495109995,
81                1076912762679804840,
82                1127382646597654684,
83            ]),
84            Fq::from_montgomery_limbs([
85                3802085031173312140,
86                1153736051705836195,
87                34368926314299214,
88                870379362515076367,
89            ]),
90            Fq::from_montgomery_limbs([
91                5488449230911278270,
92                2470593653263895214,
93                2746242821352744093,
94                1170504430408456781,
95            ]),
96            Fq::from_montgomery_limbs([
97                3039943962034370722,
98                16476527388322339887,
99                5748836754427063321,
100                874163389084517420,
101            ]),
102            Fq::from_montgomery_limbs([
103                11160556015001057055,
104                18242508582059343688,
105                1914918650959602739,
106                1060251542697903110,
107            ]),
108            Fq::from_montgomery_limbs([
109                1250158851421170863,
110                3598229175113435790,
111                11440021114985999339,
112                539355236403595924,
113            ]),
114            Fq::from_montgomery_limbs([
115                17381864786167270102,
116                5920159615239164628,
117                7621039653090189177,
118                80820461513544845,
119            ]),
120            Fq::from_montgomery_limbs([
121                9427313983461117140,
122                12722081891364237901,
123                2526344363227396036,
124                169367802375106360,
125            ]),
126            Fq::from_montgomery_limbs([
127                18279043286872423918,
128                11282585104763746254,
129                6663752460065940976,
130                1313306297247703395,
131            ]),
132            Fq::from_montgomery_limbs([
133                11348011840530639501,
134                13585724393536580138,
135                16173408530293170097,
136                237306649524404549,
137            ]),
138            Fq::from_montgomery_limbs([
139                9105438583131143101,
140                484614180087189633,
141                11007155874658626631,
142                1105934356159118197,
143            ]),
144            Fq::from_montgomery_limbs([
145                17692463671930692407,
146                8848595903938472796,
147                11444065729641962767,
148                856337008348787181,
149            ]),
150            Fq::from_montgomery_limbs([
151                11475710285348090819,
152                12082432292625800602,
153                4973698077631026180,
154                250886293876957218,
155            ]),
156            Fq::from_montgomery_limbs([
157                3831119291993789483,
158                11955292354948817093,
159                10578474534116863906,
160                292270082742245378,
161            ]),
162            Fq::from_montgomery_limbs([
163                11074518745033881448,
164                14103711443902779277,
165                9703092681767716480,
166                1027943651677607178,
167            ]),
168            Fq::from_montgomery_limbs([
169                14255504761835093988,
170                12836619582277229653,
171                16470467141944117103,
172                216605519265731395,
173            ]),
174            Fq::from_montgomery_limbs([
175                17412479146814766387,
176                7550994961529157056,
177                16948400072627593287,
178                686398674032066558,
179            ]),
180            Fq::from_montgomery_limbs([
181                14019001188641598557,
182                17711295492607709098,
183                17317648113970387478,
184                1005852188387049762,
185            ]),
186            Fq::from_montgomery_limbs([
187                2757938402041260135,
188                10858479133892891281,
189                6226991255650955925,
190                113236437448370768,
191            ]),
192            Fq::from_montgomery_limbs([
193                2864831845918016166,
194                11222314241298259255,
195                6809710896423414618,
196                391420167412878448,
197            ]),
198            Fq::from_montgomery_limbs([
199                15295022328131697798,
200                14180180046854426704,
201                5969598612677890929,
202                422063763314834782,
203            ]),
204            Fq::from_montgomery_limbs([
205                9004302479558436050,
206                9395856654729450347,
207                1876513748778519470,
208                1078019802682326971,
209            ]),
210            Fq::from_montgomery_limbs([
211                17483474807509017611,
212                1860495490123329066,
213                10427704098322365889,
214                168618466562963955,
215            ]),
216            Fq::from_montgomery_limbs([
217                3325616628101926400,
218                6318651352098105269,
219                10561353542035867513,
220                347869863814864598,
221            ]),
222            Fq::from_montgomery_limbs([
223                10608180854761738188,
224                7227409243651228657,
225                10245865730256963695,
226                33366710867335616,
227            ]),
228            Fq::from_montgomery_limbs([
229                6377899455837337983,
230                6460750903815498030,
231                14658523922399852198,
232                850391300192126368,
233            ]),
234            Fq::from_montgomery_limbs([
235                9949314602248501685,
236                9592125889973713334,
237                12540141676151911968,
238                902630930644097978,
239            ]),
240            Fq::from_montgomery_limbs([
241                9874569741817026646,
242                8597014183735249181,
243                14218226934847278615,
244                990148636388408942,
245            ]),
246            Fq::from_montgomery_limbs([
247                9660554731559651732,
248                4712943300030820950,
249                8606150340609690108,
250                160577077343575019,
251            ]),
252            Fq::from_montgomery_limbs([
253                1527563399863479849,
254                15731827835699836031,
255                7229971325383988685,
256                826813386663462338,
257            ]),
258            Fq::from_montgomery_limbs([
259                18280004775370667641,
260                10717313307037013407,
261                3515684275541234253,
262                1288829721588576759,
263            ]),
264            Fq::from_montgomery_limbs([
265                9831584723932855792,
266                1077247411674292976,
267                4470807593665567057,
268                629496612576050491,
269            ]),
270            Fq::from_montgomery_limbs([
271                18018152400203412106,
272                16658517283861939563,
273                15927825308647499591,
274                1046841820836193453,
275            ]),
276            Fq::from_montgomery_limbs([
277                424287065221489244,
278                17051291629546655826,
279                4983999217110075951,
280                1278494067020803559,
281            ]),
282            Fq::from_montgomery_limbs([
283                13081137544640017921,
284                1196650010435295235,
285                15746798075854654528,
286                1203678627802318991,
287            ]),
288            Fq::from_montgomery_limbs([
289                939677723946433505,
290                11567589096003441629,
291                12722931402128711345,
292                720362007908860959,
293            ]),
294            Fq::from_montgomery_limbs([
295                14103532265560668917,
296                10923867233350724517,
297                18049017711808115649,
298                375405789021031150,
299            ]),
300            Fq::from_montgomery_limbs([
301                497571197013480246,
302                10623440047065153586,
303                4886324577963912147,
304                1126015905264708236,
305            ]),
306            Fq::from_montgomery_limbs([
307                8235696195804714347,
308                8423059580415141744,
309                17356311622946336763,
310                215719902708291122,
311            ]),
312            Fq::from_montgomery_limbs([
313                13167547990249432274,
314                13822834764858661811,
315                1681839468362828968,
316                1102696208723885390,
317            ]),
318            Fq::from_montgomery_limbs([
319                14358625551422878077,
320                17488520719897236232,
321                10532471740075617546,
322                780155994080253829,
323            ]),
324            Fq::from_montgomery_limbs([
325                17574454647216920383,
326                13786111586753929723,
327                11740472500664499721,
328                34830030445253818,
329            ]),
330            Fq::from_montgomery_limbs([
331                9209614961980615136,
332                9937652035573086410,
333                1218815569248823646,
334                236722195254239968,
335            ]),
336            Fq::from_montgomery_limbs([
337                3620849600049355235,
338                2774041983584442196,
339                6713450660153581499,
340                1022079506649410443,
341            ]),
342            Fq::from_montgomery_limbs([
343                15478035690602744699,
344                17214923924946245378,
345                13206453575278417593,
346                842388521454715001,
347            ]),
348            Fq::from_montgomery_limbs([
349                7853082889027573297,
350                5688955180632238595,
351                4814575662942306312,
352                837428779080817192,
353            ]),
354            Fq::from_montgomery_limbs([
355                6927274665365457380,
356                4891595237470578015,
357                9799180733026983523,
358                417480065074766363,
359            ]),
360            Fq::from_montgomery_limbs([
361                9633744074825535160,
362                13348096458316776884,
363                10200632920038276183,
364                1241967248070647028,
365            ]),
366            Fq::from_montgomery_limbs([
367                7315634111998276785,
368                14989100225520468879,
369                2450102833924358633,
370                264607654026641770,
371            ]),
372            Fq::from_montgomery_limbs([
373                7717087918080228437,
374                10060974775377729782,
375                15332244215838611263,
376                711171330417334270,
377            ]),
378            Fq::from_montgomery_limbs([
379                2324103748366230971,
380                10995578112328024729,
381                15408740786099239677,
382                1268694519894110373,
383            ]),
384            Fq::from_montgomery_limbs([
385                11893493435520502207,
386                3766971087184646941,
387                15414311780153824548,
388                275458309578547698,
389            ]),
390            Fq::from_montgomery_limbs([
391                3031245967343841039,
392                4502052608729245908,
393                4341196184555983012,
394                1220348581034324635,
395            ]),
396            Fq::from_montgomery_limbs([
397                14560505796665136876,
398                9750262619582169702,
399                11805062379512156262,
400                947525094566692079,
401            ]),
402            Fq::from_montgomery_limbs([
403                7374167934946983346,
404                10320986442790179232,
405                1316321051690183387,
406                672142052910646114,
407            ]),
408            Fq::from_montgomery_limbs([
409                6678718452413104008,
410                3653041364903437992,
411                3698421704565957570,
412                448468818117066870,
413            ]),
414            Fq::from_montgomery_limbs([
415                12909750526124334775,
416                6274889465513641781,
417                11804747737295382226,
418                507133470520718817,
419            ]),
420            Fq::from_montgomery_limbs([
421                9667929895833397580,
422                11082007517281041627,
423                10049496943206931153,
424                128401977346054829,
425            ]),
426            Fq::from_montgomery_limbs([
427                12310961684508931943,
428                17018879353361910672,
429                9780939516032057631,
430                874860903480789609,
431            ]),
432            Fq::from_montgomery_limbs([
433                1042224041096057459,
434                15183806776241160696,
435                2334295613683866263,
436                49327571912713520,
437            ]),
438            Fq::from_montgomery_limbs([
439                17515802687784336662,
440                10591106814883990536,
441                4193417463306063615,
442                23930315094714182,
443            ]),
444            Fq::from_montgomery_limbs([
445                15007113684212052093,
446                95900555196155559,
447                9807646841884583683,
448                251554444378507936,
449            ]),
450            Fq::from_montgomery_limbs([
451                8094314597037982537,
452                326195237272228919,
453                9972406889128755860,
454                563568079596439234,
455            ]),
456            Fq::from_montgomery_limbs([
457                12074057828954296990,
458                17459062068677478655,
459                2059156604363327430,
460                860353551420485928,
461            ]),
462            Fq::from_montgomery_limbs([
463                13609943108532429528,
464                16610915446730445558,
465                9788093117338911219,
466                1175759231734449357,
467            ]),
468            Fq::from_montgomery_limbs([
469                7485446014387007697,
470                13102110362887743132,
471                11648775823210990955,
472                43349719308454144,
473            ]),
474            Fq::from_montgomery_limbs([
475                11902878575783530648,
476                16441587368398080183,
477                9321126611136841229,
478                579191052426365547,
479            ]),
480        ]),
481        mds: MdsMatrix::new_from_known([
482            Fq::from_montgomery_limbs([
483                14093733558879256570,
484                16573587507929677817,
485                13530556323685588983,
486                1151689812725735417,
487            ]),
488            Fq::from_montgomery_limbs([
489                15302903146332116305,
490                8895355854553175376,
491                548696419140371791,
492                319366418254432479,
493            ]),
494            Fq::from_montgomery_limbs([
495                15302903146332116305,
496                8895355854553175376,
497                548696419140371791,
498                319366418254432479,
499            ]),
500            Fq::from_montgomery_limbs([
501                16270238816294404093,
502                17510165790819614716,
503                15988650198697570299,
504                575844906362867708,
505            ]),
506        ]),
507        alpha: Alpha::Exponent(17),
508        rounds: RoundNumbers { r_P: 31, r_F: 8 },
509        optimized_mds: OptimizedMdsMatrices {
510            M_hat: SquareMatrix::<1, 1>::new_from_known([Fq::from_montgomery_limbs([
511                16270238816294404093,
512                17510165790819614716,
513                15988650198697570299,
514                575844906362867708,
515            ])]),
516            v: Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
517                15302903146332116305,
518                8895355854553175376,
519                548696419140371791,
520                319366418254432479,
521            ])]),
522            w: Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
523                15302903146332116305,
524                8895355854553175376,
525                548696419140371791,
526                319366418254432479,
527            ])]),
528            M_prime: SquareMatrix::<2, 4>::new_from_known([
529                Fq::from_montgomery_limbs([
530                    9015221291577245683,
531                    8239323489949974514,
532                    1646089257421115374,
533                    958099254763297437,
534                ]),
535                Fq::from_montgomery_limbs([0, 0, 0, 0]),
536                Fq::from_montgomery_limbs([0, 0, 0, 0]),
537                Fq::from_montgomery_limbs([
538                    16270238816294404093,
539                    17510165790819614716,
540                    15988650198697570299,
541                    575844906362867708,
542                ]),
543            ]),
544            M_doubleprime: SquareMatrix::<2, 4>::new_from_known([
545                Fq::from_montgomery_limbs([
546                    14093733558879256570,
547                    16573587507929677817,
548                    13530556323685588983,
549                    1151689812725735417,
550                ]),
551                Fq::from_montgomery_limbs([
552                    15302903146332116305,
553                    8895355854553175376,
554                    548696419140371791,
555                    319366418254432479,
556                ]),
557                Fq::from_montgomery_limbs([
558                    5871380364199810372,
559                    17134679344503149891,
560                    2194785676561487165,
561                    1277465673017729916,
562                ]),
563                Fq::from_montgomery_limbs([
564                    9015221291577245683,
565                    8239323489949974514,
566                    1646089257421115374,
567                    958099254763297437,
568                ]),
569            ]),
570            M_inverse: SquareMatrix::<2, 4>::new_from_known([
571                Fq::from_montgomery_limbs([
572                    5994009629053419274,
573                    15434301171572932352,
574                    1350487059822599859,
575                    1102422137481273087,
576                ]),
577                Fq::from_montgomery_limbs([
578                    18054649431151608138,
579                    10789890749345300822,
580                    12135909219384222141,
581                    1220664558067982680,
582                ]),
583                Fq::from_montgomery_limbs([
584                    18054649431151608138,
585                    10789890749345300822,
586                    12135909219384222141,
587                    1220664558067982680,
588                ]),
589                Fq::from_montgomery_limbs([
590                    11262517505635122707,
591                    5960750817236483583,
592                    14179438877114240358,
593                    859563904274372775,
594                ]),
595            ]),
596            M_hat_inverse: SquareMatrix::<1, 1>::new_from_known([Fq::from_montgomery_limbs([
597                16163137587655999434,
598                1588334981690687431,
599                11094542470912991159,
600                1141836277676842951,
601            ])]),
602            M_00: Fq::from_montgomery_limbs([
603                14093733558879256570,
604                16573587507929677817,
605                13530556323685588983,
606                1151689812725735417,
607            ]),
608            M_i: Matrix::<2, 2, 4>::new_from_known([
609                Fq::from_montgomery_limbs([
610                    9015221291577245683,
611                    8239323489949974514,
612                    1646089257421115374,
613                    958099254763297437,
614                ]),
615                Fq::from_montgomery_limbs([0, 0, 0, 0]),
616                Fq::from_montgomery_limbs([0, 0, 0, 0]),
617                Fq::from_montgomery_limbs([0, 0, 0, 4]),
618            ]),
619            v_collection: [
620                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
621                    15302903146332116305,
622                    8895355854553175376,
623                    548696419140371791,
624                    319366418254432479,
625                ])]),
626                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
627                    18204910156218979669,
628                    16293041589642941780,
629                    9975069610392864084,
630                    1088801882579738168,
631                ])]),
632                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
633                    483667834981143894,
634                    4307404968133219670,
635                    16943348926633375062,
636                    1281160748661064590,
637                ])]),
638                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
639                    483667834981143894,
640                    4307404968133219670,
641                    16943348926633375062,
642                    992930372509352846,
643                ])]),
644                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
645                    483667834981143894,
646                    4307404968133219670,
647                    16943348926633375062,
648                    920872778471424910,
649                ])]),
650                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
651                    483667834981143894,
652                    4307404968133219670,
653                    16943348926633375062,
654                    902858379961942926,
655                ])]),
656                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
657                    483667834981143894,
658                    4307404968133219670,
659                    16943348926633375062,
660                    898354780334572430,
661                ])]),
662                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
663                    483667834981143894,
664                    4307404968133219670,
665                    16943348926633375062,
666                    897228880427729806,
667                ])]),
668                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
669                    483667834981143894,
670                    4307404968133219670,
671                    16943348926633375062,
672                    896947405451019150,
673                ])]),
674                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
675                    483667834981143894,
676                    4307404968133219670,
677                    16943348926633375062,
678                    896877036706841486,
679                ])]),
680                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
681                    483667834981143894,
682                    4307404968133219670,
683                    16943348926633375062,
684                    896859444520797070,
685                ])]),
686                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
687                    483667834981143894,
688                    4307404968133219670,
689                    16943348926633375062,
690                    896855046474285966,
691                ])]),
692                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
693                    483667834981143894,
694                    4307404968133219670,
695                    16943348926633375062,
696                    896853946962658190,
697                ])]),
698                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
699                    483667834981143894,
700                    4307404968133219670,
701                    16943348926633375062,
702                    896853672084751246,
703                ])]),
704                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
705                    483667834981143894,
706                    4307404968133219670,
707                    16943348926633375062,
708                    896853603365274510,
709                ])]),
710                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
711                    483667834981143894,
712                    4307404968133219670,
713                    16943348926633375062,
714                    896853586185405326,
715                ])]),
716                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
717                    483667834981143894,
718                    4307404968133219670,
719                    16943348926633375062,
720                    896853581890438030,
721                ])]),
722                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
723                    483667834981143894,
724                    4307404968133219670,
725                    16943348926633375062,
726                    896853580816696206,
727                ])]),
728                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
729                    483667834981143894,
730                    4307404968133219670,
731                    16943348926633375062,
732                    896853580548260750,
733                ])]),
734                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
735                    483667834981143894,
736                    4307404968133219670,
737                    16943348926633375062,
738                    896853580481151886,
739                ])]),
740                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
741                    483667834981143894,
742                    4307404968133219670,
743                    16943348926633375062,
744                    896853580464374670,
745                ])]),
746                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
747                    483667834981143894,
748                    4307404968133219670,
749                    16943348926633375062,
750                    896853580460180366,
751                ])]),
752                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
753                    483667834981143894,
754                    4307404968133219670,
755                    16943348926633375062,
756                    896853580459131790,
757                ])]),
758                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
759                    483667834981143894,
760                    4307404968133219670,
761                    16943348926633375062,
762                    896853580458869646,
763                ])]),
764                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
765                    483667834981143894,
766                    4307404968133219670,
767                    16943348926633375062,
768                    896853580458804110,
769                ])]),
770                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
771                    483667834981143894,
772                    4307404968133219670,
773                    16943348926633375062,
774                    896853580458787726,
775                ])]),
776                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
777                    483667834981143894,
778                    4307404968133219670,
779                    16943348926633375062,
780                    896853580458783630,
781                ])]),
782                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
783                    483667834981143894,
784                    4307404968133219670,
785                    16943348926633375062,
786                    896853580458782606,
787                ])]),
788                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
789                    483667834981143894,
790                    4307404968133219670,
791                    16943348926633375062,
792                    896853580458782350,
793                ])]),
794                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
795                    483667834981143894,
796                    4307404968133219670,
797                    16943348926633375062,
798                    896853580458782286,
799                ])]),
800                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
801                    483667834981143894,
802                    4307404968133219670,
803                    16943348926633375062,
804                    896853580458782270,
805                ])]),
806            ],
807            w_hat_collection: [
808                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
809                    5871380364199810372,
810                    17134679344503149891,
811                    2194785676561487165,
812                    1277465673017729916,
813                ])]),
814                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
815                    2862272125674542349,
816                    12261906873994007818,
817                    6321048831233967347,
818                    1074021580006399469,
819                ])]),
820                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
821                    9272583245283021873,
822                    11217561065666991141,
823                    4379357376214336458,
824                    260245207961077682,
825                ])]),
826                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
827                    196844833712984260,
828                    7976756115248861334,
829                    17517429504857345834,
830                    1040980831844310728,
831                ])]),
832                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
833                    17057618151146341133,
834                    12523702104395956820,
835                    12271391923288747173,
836                    128082215312722720,
837                ])]),
838                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
839                    12890240383456709684,
840                    13201320270164724051,
841                    12192079545735885462,
842                    512328861250890882,
843                ])]),
844                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
845                    13941971633936019663,
846                    9450685481039963469,
847                    4906550719283927641,
848                    704035074315390132,
849                ])]),
850                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
851                    17423394883381543738,
852                    6433782946050643252,
853                    5689644244654688611,
854                    125579555885213732,
855                ])]),
856                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
857                    14353347312397520104,
858                    7288387710493021395,
859                    4311832904909202829,
860                    502318223540854929,
861                ])]),
862                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
863                    1347655275989709727,
864                    4245699316062704462,
865                    10279052303396300340,
866                    663992523475246318,
867                ])]),
868                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
869                    4665119351487123067,
870                    10521689812050988343,
871                    15701185823635138767,
872                    1310689723212811875,
873                ])]),
874                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
875                    16483972148533344745,
876                    4256692817894913241,
877                    5006417198399918906,
878                    1206917780786727308,
879                ])]),
880                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
881                    8419151115589576609,
882                    16090192988689716068,
883                    17567574918587694308,
884                    791830011082389037,
885                ])]),
886                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
887                    13778856883705323138,
888                    14545068902940102031,
889                    993508820741100432,
890                    476759302953209355,
891                ])]),
892                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
893                    17496437634930473479,
894                    14825680012141475389,
895                    15452500040433442369,
896                    561756841124664021,
897                ])]),
898                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
899                    13920016566121523227,
900                    15948124448946968822,
901                    17948232698074155269,
902                    901746993810482688,
903                ])]),
904                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
905                    17335574612123557994,
906                    13976794743969113048,
907                    2516139938686944276,
908                    916427233865583959,
909                ])]),
910                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
911                    12551062722422145446,
912                    6091475924057689953,
913                    14574745195976306768,
914                    975148194085989039,
915                ])]),
916                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
917                    11859759237326046870,
918                    11443688791831100804,
919                    7468934004005101886,
920                    1210032034967609362,
921                ])]),
922                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
923                    8369043544469936725,
924                    7944688737015363087,
925                    8970898067298874614,
926                    804287027805917254,
927                ])]),
928                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
929                    13578426599226763602,
930                    409795969952241723,
931                    3500289563004924887,
932                    526587369847322221,
933                ])]),
934                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
935                    16694716497016235335,
936                    13624820501318689005,
937                    7032878935779188570,
938                    761069108701115486,
939                ])]),
940                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
941                    9987630261992854810,
942                    4683578953455993781,
943                    14194957110635732328,
944                    353715693428115148,
945                ])]),
946                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
947                    2331531148080600167,
948                    12273208361624145621,
949                    12918060978883315103,
950                    69582403024287196,
951                ])]),
952                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
953                    9326124592322400668,
954                    12199345299077479252,
955                    14778755768114157182,
956                    278329612097148786,
957                ])]),
958                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
959                    411010221870499440,
960                    11903893048890813778,
961                    3774790851327973882,
962                    1113318448388595147,
963                ])]),
964                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
965                    17914279703776401853,
966                    9785505765254214980,
967                    12641069530299914214,
968                    417432681489860393,
969                ])]),
970                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
971                    15591384841505236723,
972                    14234171535107478802,
973                    6702510657540042648,
974                    324450355271268176,
975                ])]),
976                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
977                    7025307144892292044,
978                    1596453919301260363,
979                    8363298556450618979,
980                    1297801421085072705,
981                ])]),
982                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
983                    7477979248444469037,
984                    5449237394315104554,
985                    12548356277080942984,
986                    1155364572275770626,
987                ])]),
988                Matrix::<1, 1, 1>::new_from_known([Fq::from_montgomery_limbs([
989                    9288667662653177009,
990                    2413627220660929702,
991                    10841843085892687389,
992                    585617177038562311,
993                ])]),
994            ],
995        },
996        optimized_arc: OptimizedArcMatrix::<39, 2, 78>::new_from_known([
997            Fq::from_montgomery_limbs([
998                6258896775460530561,
999                1267570262938364784,
1000                10583705394133388288,
1001                4331270346116315,
1002            ]),
1003            Fq::from_montgomery_limbs([
1004                15454694353288852986,
1005                2205227775135851582,
1006                9104115866970654747,
1007                48952601862872692,
1008            ]),
1009            Fq::from_montgomery_limbs([
1010                17632203450119298224,
1011                13599315412875479343,
1012                7140007131719627884,
1013                569020719923681609,
1014            ]),
1015            Fq::from_montgomery_limbs([
1016                6608939517720255573,
1017                15066841911042588370,
1018                8648475674864948310,
1019                578035154261448463,
1020            ]),
1021            Fq::from_montgomery_limbs([
1022                1055805092356900670,
1023                5486646384412869322,
1024                9705528431443784365,
1025                307684188417815151,
1026            ]),
1027            Fq::from_montgomery_limbs([
1028                11248650571348093756,
1029                1514639161444600232,
1030                968234586550369174,
1031                1313541476846290422,
1032            ]),
1033            Fq::from_montgomery_limbs([
1034                5189078861895589451,
1035                9996051726892023924,
1036                14955307722807799098,
1037                1320126769029056157,
1038            ]),
1039            Fq::from_montgomery_limbs([
1040                14397975440942704641,
1041                14269464930912859892,
1042                9230505175050478925,
1043                1093012507774165575,
1044            ]),
1045            Fq::from_montgomery_limbs([
1046                6847445113090943697,
1047                17673603016395516883,
1048                15250705377106188486,
1049                539035154593930175,
1050            ]),
1051            Fq::from_montgomery_limbs([
1052                3611307702635802055,
1053                2044680977517755214,
1054                1507155857745404241,
1055                416523989909284581,
1056            ]),
1057            Fq::from_montgomery_limbs([
1058                15773496315521971064,
1059                3417307918093239503,
1060                5319102997109207920,
1061                1059459273997968718,
1062            ]),
1063            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1064            Fq::from_montgomery_limbs([
1065                10991357984979900529,
1066                11786708072563616304,
1067                15195751910119459835,
1068                1325497062894455603,
1069            ]),
1070            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1071            Fq::from_montgomery_limbs([
1072                16027823656497991124,
1073                9570249298141187698,
1074                9384192828271733406,
1075                598167880091560796,
1076            ]),
1077            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1078            Fq::from_montgomery_limbs([
1079                4121766814818268604,
1080                5642500678209337527,
1081                11249605790034284655,
1082                169274140565479991,
1083            ]),
1084            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1085            Fq::from_montgomery_limbs([
1086                18428671666826012339,
1087                3103504747064554186,
1088                2824060703077903905,
1089                650804942285219865,
1090            ]),
1091            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1092            Fq::from_montgomery_limbs([
1093                6536595406830723568,
1094                12507627360655164307,
1095                5816557923264156407,
1096                1171438146865855396,
1097            ]),
1098            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1099            Fq::from_montgomery_limbs([
1100                7014452833430165540,
1101                2192734170292167642,
1102                18020153564698148489,
1103                943832042172430504,
1104            ]),
1105            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1106            Fq::from_montgomery_limbs([
1107                15061407369851519692,
1108                5313653764899529765,
1109                18112450540856929121,
1110                723535739146239880,
1111            ]),
1112            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1113            Fq::from_montgomery_limbs([
1114                11839250336475774987,
1115                15868350915088614311,
1116                11144158850926607283,
1117                20878601091348541,
1118            ]),
1119            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1120            Fq::from_montgomery_limbs([
1121                4149527232578341040,
1122                5854266614316639968,
1123                16351407150591024716,
1124                455766835829125567,
1125            ]),
1126            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1127            Fq::from_montgomery_limbs([
1128                12471037099388658934,
1129                2086101075023281280,
1130                1788538226576314996,
1131                1339656767645635692,
1132            ]),
1133            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1134            Fq::from_montgomery_limbs([
1135                11602956738027931852,
1136                9207937453523162767,
1137                13647296147603057333,
1138                111521899082870644,
1139            ]),
1140            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1141            Fq::from_montgomery_limbs([
1142                4471865953303794141,
1143                10665791129581261198,
1144                12917311030821790127,
1145                421715564603751799,
1146            ]),
1147            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1148            Fq::from_montgomery_limbs([
1149                7266742212555730010,
1150                4344990323783613969,
1151                6675828359235980546,
1152                1075010774212196894,
1153            ]),
1154            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1155            Fq::from_montgomery_limbs([
1156                17274747138948537703,
1157                8997958909963391104,
1158                7585281533244210281,
1159                1289863406379487668,
1160            ]),
1161            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1162            Fq::from_montgomery_limbs([
1163                16682415876718386807,
1164                6754707099034381256,
1165                17068117384213468958,
1166                1039851084794055603,
1167            ]),
1168            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1169            Fq::from_montgomery_limbs([
1170                17452413239970755288,
1171                15172605790896474036,
1172                12289534575869712530,
1173                1247895409152971025,
1174            ]),
1175            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1176            Fq::from_montgomery_limbs([
1177                9189529962407134994,
1178                11058665231577655834,
1179                16040250280290103955,
1180                583188588452985106,
1181            ]),
1182            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1183            Fq::from_montgomery_limbs([
1184                12330122353729758122,
1185                7872244451651384396,
1186                1718216203500654841,
1187                947488898510695688,
1188            ]),
1189            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1190            Fq::from_montgomery_limbs([
1191                2532148827221633905,
1192                11277707113691069015,
1193                13146274701375091754,
1194                1122111291456835663,
1195            ]),
1196            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1197            Fq::from_montgomery_limbs([
1198                13318309830858313604,
1199                15574521868164640680,
1200                16956455155077117710,
1201                135767028023417208,
1202            ]),
1203            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1204            Fq::from_montgomery_limbs([
1205                750420733483410590,
1206                2418854296448104823,
1207                15284086408483984263,
1208                341138452402312061,
1209            ]),
1210            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1211            Fq::from_montgomery_limbs([
1212                16457963474965655942,
1213                5443472470949495638,
1214                2064775438293218219,
1215                400327702117075871,
1216            ]),
1217            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1218            Fq::from_montgomery_limbs([
1219                10542835534533651006,
1220                6753561243806226378,
1221                12003236697439509817,
1222                241774398989798606,
1223            ]),
1224            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1225            Fq::from_montgomery_limbs([
1226                1079740531825589218,
1227                855297542685037903,
1228                469984130808287107,
1229                1004975734823384044,
1230            ]),
1231            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1232            Fq::from_montgomery_limbs([
1233                11494156914009901023,
1234                10804976036978117356,
1235                8604768447320145756,
1236                183564350030538687,
1237            ]),
1238            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1239            Fq::from_montgomery_limbs([
1240                16681620867545906411,
1241                2060231339788432100,
1242                17049513972176383365,
1243                112003830623007503,
1244            ]),
1245            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1246            Fq::from_montgomery_limbs([
1247                668347479965076886,
1248                10549614204057010371,
1249                13122395911704198577,
1250                892397509190749082,
1251            ]),
1252            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1253            Fq::from_montgomery_limbs([
1254                832717394377902022,
1255                17441619158292034189,
1256                10775807051709353596,
1257                73942828503744396,
1258            ]),
1259            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1260            Fq::from_montgomery_limbs([
1261                17843890747357672894,
1262                10605743677137367533,
1263                6810818872903428049,
1264                148499098324463880,
1265            ]),
1266            Fq::from_montgomery_limbs([0, 0, 0, 0]),
1267            Fq::from_montgomery_limbs([
1268                1042224041096057459,
1269                15183806776241160696,
1270                2334295613683866263,
1271                49327571912713520,
1272            ]),
1273            Fq::from_montgomery_limbs([
1274                17515802687784336662,
1275                10591106814883990536,
1276                4193417463306063615,
1277                23930315094714182,
1278            ]),
1279            Fq::from_montgomery_limbs([
1280                15007113684212052093,
1281                95900555196155559,
1282                9807646841884583683,
1283                251554444378507936,
1284            ]),
1285            Fq::from_montgomery_limbs([
1286                8094314597037982537,
1287                326195237272228919,
1288                9972406889128755860,
1289                563568079596439234,
1290            ]),
1291            Fq::from_montgomery_limbs([
1292                12074057828954296990,
1293                17459062068677478655,
1294                2059156604363327430,
1295                860353551420485928,
1296            ]),
1297            Fq::from_montgomery_limbs([
1298                13609943108532429528,
1299                16610915446730445558,
1300                9788093117338911219,
1301                1175759231734449357,
1302            ]),
1303            Fq::from_montgomery_limbs([
1304                7485446014387007697,
1305                13102110362887743132,
1306                11648775823210990955,
1307                43349719308454144,
1308            ]),
1309            Fq::from_montgomery_limbs([
1310                11902878575783530648,
1311                16441587368398080183,
1312                9321126611136841229,
1313                579191052426365547,
1314            ]),
1315        ]),
1316    }
1317}