openzeppelin_crypto/poseidon2/instance/
babybear.rs

1//! This module contains the poseidon sponge hash function parameters for
2//! [`FpBabyBear`] field instance.
3
4use crate::{
5    field::instance::FpBabyBear, fp_from_hex, poseidon2::params::PoseidonParams,
6};
7
8/// Poseidon sponge hash function parameters for [`FpBabyBear`] field instance.
9pub struct BabyBear24Params;
10
11#[rustfmt::skip]
12impl PoseidonParams<FpBabyBear> for BabyBear24Params {
13    const T: usize = 24;
14    const D: u8 = 7;
15    // Capacity 4 will give `4*64 = 256` bits security.
16    const CAPACITY: usize = 4;
17    const ROUNDS_F: usize = 8;
18    const ROUNDS_P: usize = 21;
19    const MAT_INTERNAL_DIAG_M_1: &'static [FpBabyBear] = &[
20        fp_from_hex!("409133f0"),
21        fp_from_hex!("1667a8a1"),
22        fp_from_hex!("06a6c7b6"),
23        fp_from_hex!("6f53160e"),
24        fp_from_hex!("273b11d1"),
25        fp_from_hex!("03176c5d"),
26        fp_from_hex!("72f9bbf9"),
27        fp_from_hex!("73ceba91"),
28        fp_from_hex!("5cdef81d"),
29        fp_from_hex!("01393285"),
30        fp_from_hex!("46daee06"),
31        fp_from_hex!("065d7ba6"),
32        fp_from_hex!("52d72d6f"),
33        fp_from_hex!("05dd05e0"),
34        fp_from_hex!("3bab4b63"),
35        fp_from_hex!("6ada3842"),
36        fp_from_hex!("2fc5fbec"),
37        fp_from_hex!("770d61b0"),
38        fp_from_hex!("5715aae9"),
39        fp_from_hex!("03ef0e90"),
40        fp_from_hex!("75b6c770"),
41        fp_from_hex!("242adf5f"),
42        fp_from_hex!("00d0ca4c"),
43        fp_from_hex!("36c0e388"),
44    ];
45    const ROUND_CONSTANTS: &'static [&'static [FpBabyBear]] = &[
46        &[
47            fp_from_hex!("0fa20c37"),
48            fp_from_hex!("0795bb97"),
49            fp_from_hex!("12c60b9c"),
50            fp_from_hex!("0eabd88e"),
51            fp_from_hex!("096485ca"),
52            fp_from_hex!("07093527"),
53            fp_from_hex!("1b1d4e50"),
54            fp_from_hex!("30a01ace"),
55            fp_from_hex!("3bd86f5a"),
56            fp_from_hex!("69af7c28"),
57            fp_from_hex!("3f94775f"),
58            fp_from_hex!("731560e8"),
59            fp_from_hex!("465a0ecd"),
60            fp_from_hex!("574ef807"),
61            fp_from_hex!("62fd4870"),
62            fp_from_hex!("52ccfe44"),
63            fp_from_hex!("14772b14"),
64            fp_from_hex!("4dedf371"),
65            fp_from_hex!("260acd7c"),
66            fp_from_hex!("1f51dc58"),
67            fp_from_hex!("75125532"),
68            fp_from_hex!("686a4d7b"),
69            fp_from_hex!("54bac179"),
70            fp_from_hex!("31947706"),
71        ],
72        &[
73            fp_from_hex!("29799d3b"),
74            fp_from_hex!("6e01ae90"),
75            fp_from_hex!("203a7a64"),
76            fp_from_hex!("4f7e25be"),
77            fp_from_hex!("72503f77"),
78            fp_from_hex!("45bd3b69"),
79            fp_from_hex!("769bd6b4"),
80            fp_from_hex!("5a867f08"),
81            fp_from_hex!("4fdba082"),
82            fp_from_hex!("251c4318"),
83            fp_from_hex!("28f06201"),
84            fp_from_hex!("6788c43a"),
85            fp_from_hex!("4c6d6a99"),
86            fp_from_hex!("357784a8"),
87            fp_from_hex!("2abaf051"),
88            fp_from_hex!("770f7de6"),
89            fp_from_hex!("1794b784"),
90            fp_from_hex!("4796c57a"),
91            fp_from_hex!("724b7a10"),
92            fp_from_hex!("449989a7"),
93            fp_from_hex!("64935cf1"),
94            fp_from_hex!("59e14aac"),
95            fp_from_hex!("0e620bb8"),
96            fp_from_hex!("3af5a33b"),
97        ],
98        &[
99            fp_from_hex!("4465cc0e"),
100            fp_from_hex!("019df68f"),
101            fp_from_hex!("4af8d068"),
102            fp_from_hex!("08784f82"),
103            fp_from_hex!("0cefdeae"),
104            fp_from_hex!("6337a467"),
105            fp_from_hex!("32fa7a16"),
106            fp_from_hex!("486f62d6"),
107            fp_from_hex!("386a7480"),
108            fp_from_hex!("20f17c4a"),
109            fp_from_hex!("54e50da8"),
110            fp_from_hex!("2012cf03"),
111            fp_from_hex!("5fe52950"),
112            fp_from_hex!("09afb6cd"),
113            fp_from_hex!("2523044e"),
114            fp_from_hex!("5c54d0ef"),
115            fp_from_hex!("71c01f3c"),
116            fp_from_hex!("60b2c4fb"),
117            fp_from_hex!("4050b379"),
118            fp_from_hex!("5e6a70a5"),
119            fp_from_hex!("418543f5"),
120            fp_from_hex!("71debe56"),
121            fp_from_hex!("1aad2994"),
122            fp_from_hex!("3368a483"),
123        ],
124        &[
125            fp_from_hex!("07a86f3a"),
126            fp_from_hex!("5ea43ff1"),
127            fp_from_hex!("2443780e"),
128            fp_from_hex!("4ce444f7"),
129            fp_from_hex!("146f9882"),
130            fp_from_hex!("3132b089"),
131            fp_from_hex!("197ea856"),
132            fp_from_hex!("667030c3"),
133            fp_from_hex!("2317d5dc"),
134            fp_from_hex!("0c2c48a7"),
135            fp_from_hex!("56b2df66"),
136            fp_from_hex!("67bd81e9"),
137            fp_from_hex!("4fcdfb19"),
138            fp_from_hex!("4baaef32"),
139            fp_from_hex!("0328d30a"),
140            fp_from_hex!("6235760d"),
141            fp_from_hex!("12432912"),
142            fp_from_hex!("0a49e258"),
143            fp_from_hex!("030e1b70"),
144            fp_from_hex!("48caeb03"),
145            fp_from_hex!("49e4d9e9"),
146            fp_from_hex!("1051b5c6"),
147            fp_from_hex!("6a36dbbe"),
148            fp_from_hex!("4cff27a5"),
149        ],
150        &[
151            fp_from_hex!("1da78ec2"),
152            fp_from_hex!("00000000"),
153            fp_from_hex!("00000000"),
154            fp_from_hex!("00000000"),
155            fp_from_hex!("00000000"),
156            fp_from_hex!("00000000"),
157            fp_from_hex!("00000000"),
158            fp_from_hex!("00000000"),
159            fp_from_hex!("00000000"),
160            fp_from_hex!("00000000"),
161            fp_from_hex!("00000000"),
162            fp_from_hex!("00000000"),
163            fp_from_hex!("00000000"),
164            fp_from_hex!("00000000"),
165            fp_from_hex!("00000000"),
166            fp_from_hex!("00000000"),
167            fp_from_hex!("00000000"),
168            fp_from_hex!("00000000"),
169            fp_from_hex!("00000000"),
170            fp_from_hex!("00000000"),
171            fp_from_hex!("00000000"),
172            fp_from_hex!("00000000"),
173            fp_from_hex!("00000000"),
174            fp_from_hex!("00000000"),
175        ],
176        &[
177            fp_from_hex!("730b0924"),
178            fp_from_hex!("00000000"),
179            fp_from_hex!("00000000"),
180            fp_from_hex!("00000000"),
181            fp_from_hex!("00000000"),
182            fp_from_hex!("00000000"),
183            fp_from_hex!("00000000"),
184            fp_from_hex!("00000000"),
185            fp_from_hex!("00000000"),
186            fp_from_hex!("00000000"),
187            fp_from_hex!("00000000"),
188            fp_from_hex!("00000000"),
189            fp_from_hex!("00000000"),
190            fp_from_hex!("00000000"),
191            fp_from_hex!("00000000"),
192            fp_from_hex!("00000000"),
193            fp_from_hex!("00000000"),
194            fp_from_hex!("00000000"),
195            fp_from_hex!("00000000"),
196            fp_from_hex!("00000000"),
197            fp_from_hex!("00000000"),
198            fp_from_hex!("00000000"),
199            fp_from_hex!("00000000"),
200            fp_from_hex!("00000000"),
201        ],
202        &[
203            fp_from_hex!("3eb56cf3"),
204            fp_from_hex!("00000000"),
205            fp_from_hex!("00000000"),
206            fp_from_hex!("00000000"),
207            fp_from_hex!("00000000"),
208            fp_from_hex!("00000000"),
209            fp_from_hex!("00000000"),
210            fp_from_hex!("00000000"),
211            fp_from_hex!("00000000"),
212            fp_from_hex!("00000000"),
213            fp_from_hex!("00000000"),
214            fp_from_hex!("00000000"),
215            fp_from_hex!("00000000"),
216            fp_from_hex!("00000000"),
217            fp_from_hex!("00000000"),
218            fp_from_hex!("00000000"),
219            fp_from_hex!("00000000"),
220            fp_from_hex!("00000000"),
221            fp_from_hex!("00000000"),
222            fp_from_hex!("00000000"),
223            fp_from_hex!("00000000"),
224            fp_from_hex!("00000000"),
225            fp_from_hex!("00000000"),
226            fp_from_hex!("00000000"),
227        ],
228        &[
229            fp_from_hex!("5bd93073"),
230            fp_from_hex!("00000000"),
231            fp_from_hex!("00000000"),
232            fp_from_hex!("00000000"),
233            fp_from_hex!("00000000"),
234            fp_from_hex!("00000000"),
235            fp_from_hex!("00000000"),
236            fp_from_hex!("00000000"),
237            fp_from_hex!("00000000"),
238            fp_from_hex!("00000000"),
239            fp_from_hex!("00000000"),
240            fp_from_hex!("00000000"),
241            fp_from_hex!("00000000"),
242            fp_from_hex!("00000000"),
243            fp_from_hex!("00000000"),
244            fp_from_hex!("00000000"),
245            fp_from_hex!("00000000"),
246            fp_from_hex!("00000000"),
247            fp_from_hex!("00000000"),
248            fp_from_hex!("00000000"),
249            fp_from_hex!("00000000"),
250            fp_from_hex!("00000000"),
251            fp_from_hex!("00000000"),
252            fp_from_hex!("00000000"),
253        ],
254        &[
255            fp_from_hex!("37204c97"),
256            fp_from_hex!("00000000"),
257            fp_from_hex!("00000000"),
258            fp_from_hex!("00000000"),
259            fp_from_hex!("00000000"),
260            fp_from_hex!("00000000"),
261            fp_from_hex!("00000000"),
262            fp_from_hex!("00000000"),
263            fp_from_hex!("00000000"),
264            fp_from_hex!("00000000"),
265            fp_from_hex!("00000000"),
266            fp_from_hex!("00000000"),
267            fp_from_hex!("00000000"),
268            fp_from_hex!("00000000"),
269            fp_from_hex!("00000000"),
270            fp_from_hex!("00000000"),
271            fp_from_hex!("00000000"),
272            fp_from_hex!("00000000"),
273            fp_from_hex!("00000000"),
274            fp_from_hex!("00000000"),
275            fp_from_hex!("00000000"),
276            fp_from_hex!("00000000"),
277            fp_from_hex!("00000000"),
278            fp_from_hex!("00000000"),
279        ],
280        &[
281            fp_from_hex!("51642d89"),
282            fp_from_hex!("00000000"),
283            fp_from_hex!("00000000"),
284            fp_from_hex!("00000000"),
285            fp_from_hex!("00000000"),
286            fp_from_hex!("00000000"),
287            fp_from_hex!("00000000"),
288            fp_from_hex!("00000000"),
289            fp_from_hex!("00000000"),
290            fp_from_hex!("00000000"),
291            fp_from_hex!("00000000"),
292            fp_from_hex!("00000000"),
293            fp_from_hex!("00000000"),
294            fp_from_hex!("00000000"),
295            fp_from_hex!("00000000"),
296            fp_from_hex!("00000000"),
297            fp_from_hex!("00000000"),
298            fp_from_hex!("00000000"),
299            fp_from_hex!("00000000"),
300            fp_from_hex!("00000000"),
301            fp_from_hex!("00000000"),
302            fp_from_hex!("00000000"),
303            fp_from_hex!("00000000"),
304            fp_from_hex!("00000000"),
305        ],
306        &[
307            fp_from_hex!("66e943e8"),
308            fp_from_hex!("00000000"),
309            fp_from_hex!("00000000"),
310            fp_from_hex!("00000000"),
311            fp_from_hex!("00000000"),
312            fp_from_hex!("00000000"),
313            fp_from_hex!("00000000"),
314            fp_from_hex!("00000000"),
315            fp_from_hex!("00000000"),
316            fp_from_hex!("00000000"),
317            fp_from_hex!("00000000"),
318            fp_from_hex!("00000000"),
319            fp_from_hex!("00000000"),
320            fp_from_hex!("00000000"),
321            fp_from_hex!("00000000"),
322            fp_from_hex!("00000000"),
323            fp_from_hex!("00000000"),
324            fp_from_hex!("00000000"),
325            fp_from_hex!("00000000"),
326            fp_from_hex!("00000000"),
327            fp_from_hex!("00000000"),
328            fp_from_hex!("00000000"),
329            fp_from_hex!("00000000"),
330            fp_from_hex!("00000000"),
331        ],
332        &[
333            fp_from_hex!("1a3e72de"),
334            fp_from_hex!("00000000"),
335            fp_from_hex!("00000000"),
336            fp_from_hex!("00000000"),
337            fp_from_hex!("00000000"),
338            fp_from_hex!("00000000"),
339            fp_from_hex!("00000000"),
340            fp_from_hex!("00000000"),
341            fp_from_hex!("00000000"),
342            fp_from_hex!("00000000"),
343            fp_from_hex!("00000000"),
344            fp_from_hex!("00000000"),
345            fp_from_hex!("00000000"),
346            fp_from_hex!("00000000"),
347            fp_from_hex!("00000000"),
348            fp_from_hex!("00000000"),
349            fp_from_hex!("00000000"),
350            fp_from_hex!("00000000"),
351            fp_from_hex!("00000000"),
352            fp_from_hex!("00000000"),
353            fp_from_hex!("00000000"),
354            fp_from_hex!("00000000"),
355            fp_from_hex!("00000000"),
356            fp_from_hex!("00000000"),
357        ],
358        &[
359            fp_from_hex!("70beb1e9"),
360            fp_from_hex!("00000000"),
361            fp_from_hex!("00000000"),
362            fp_from_hex!("00000000"),
363            fp_from_hex!("00000000"),
364            fp_from_hex!("00000000"),
365            fp_from_hex!("00000000"),
366            fp_from_hex!("00000000"),
367            fp_from_hex!("00000000"),
368            fp_from_hex!("00000000"),
369            fp_from_hex!("00000000"),
370            fp_from_hex!("00000000"),
371            fp_from_hex!("00000000"),
372            fp_from_hex!("00000000"),
373            fp_from_hex!("00000000"),
374            fp_from_hex!("00000000"),
375            fp_from_hex!("00000000"),
376            fp_from_hex!("00000000"),
377            fp_from_hex!("00000000"),
378            fp_from_hex!("00000000"),
379            fp_from_hex!("00000000"),
380            fp_from_hex!("00000000"),
381            fp_from_hex!("00000000"),
382            fp_from_hex!("00000000"),
383        ],
384        &[
385            fp_from_hex!("30ff3b3f"),
386            fp_from_hex!("00000000"),
387            fp_from_hex!("00000000"),
388            fp_from_hex!("00000000"),
389            fp_from_hex!("00000000"),
390            fp_from_hex!("00000000"),
391            fp_from_hex!("00000000"),
392            fp_from_hex!("00000000"),
393            fp_from_hex!("00000000"),
394            fp_from_hex!("00000000"),
395            fp_from_hex!("00000000"),
396            fp_from_hex!("00000000"),
397            fp_from_hex!("00000000"),
398            fp_from_hex!("00000000"),
399            fp_from_hex!("00000000"),
400            fp_from_hex!("00000000"),
401            fp_from_hex!("00000000"),
402            fp_from_hex!("00000000"),
403            fp_from_hex!("00000000"),
404            fp_from_hex!("00000000"),
405            fp_from_hex!("00000000"),
406            fp_from_hex!("00000000"),
407            fp_from_hex!("00000000"),
408            fp_from_hex!("00000000"),
409        ],
410        &[
411            fp_from_hex!("4240d1c4"),
412            fp_from_hex!("00000000"),
413            fp_from_hex!("00000000"),
414            fp_from_hex!("00000000"),
415            fp_from_hex!("00000000"),
416            fp_from_hex!("00000000"),
417            fp_from_hex!("00000000"),
418            fp_from_hex!("00000000"),
419            fp_from_hex!("00000000"),
420            fp_from_hex!("00000000"),
421            fp_from_hex!("00000000"),
422            fp_from_hex!("00000000"),
423            fp_from_hex!("00000000"),
424            fp_from_hex!("00000000"),
425            fp_from_hex!("00000000"),
426            fp_from_hex!("00000000"),
427            fp_from_hex!("00000000"),
428            fp_from_hex!("00000000"),
429            fp_from_hex!("00000000"),
430            fp_from_hex!("00000000"),
431            fp_from_hex!("00000000"),
432            fp_from_hex!("00000000"),
433            fp_from_hex!("00000000"),
434            fp_from_hex!("00000000"),
435        ],
436        &[
437            fp_from_hex!("12647b8d"),
438            fp_from_hex!("00000000"),
439            fp_from_hex!("00000000"),
440            fp_from_hex!("00000000"),
441            fp_from_hex!("00000000"),
442            fp_from_hex!("00000000"),
443            fp_from_hex!("00000000"),
444            fp_from_hex!("00000000"),
445            fp_from_hex!("00000000"),
446            fp_from_hex!("00000000"),
447            fp_from_hex!("00000000"),
448            fp_from_hex!("00000000"),
449            fp_from_hex!("00000000"),
450            fp_from_hex!("00000000"),
451            fp_from_hex!("00000000"),
452            fp_from_hex!("00000000"),
453            fp_from_hex!("00000000"),
454            fp_from_hex!("00000000"),
455            fp_from_hex!("00000000"),
456            fp_from_hex!("00000000"),
457            fp_from_hex!("00000000"),
458            fp_from_hex!("00000000"),
459            fp_from_hex!("00000000"),
460            fp_from_hex!("00000000"),
461        ],
462        &[
463            fp_from_hex!("65d86965"),
464            fp_from_hex!("00000000"),
465            fp_from_hex!("00000000"),
466            fp_from_hex!("00000000"),
467            fp_from_hex!("00000000"),
468            fp_from_hex!("00000000"),
469            fp_from_hex!("00000000"),
470            fp_from_hex!("00000000"),
471            fp_from_hex!("00000000"),
472            fp_from_hex!("00000000"),
473            fp_from_hex!("00000000"),
474            fp_from_hex!("00000000"),
475            fp_from_hex!("00000000"),
476            fp_from_hex!("00000000"),
477            fp_from_hex!("00000000"),
478            fp_from_hex!("00000000"),
479            fp_from_hex!("00000000"),
480            fp_from_hex!("00000000"),
481            fp_from_hex!("00000000"),
482            fp_from_hex!("00000000"),
483            fp_from_hex!("00000000"),
484            fp_from_hex!("00000000"),
485            fp_from_hex!("00000000"),
486            fp_from_hex!("00000000"),
487        ],
488        &[
489            fp_from_hex!("49ef4d7c"),
490            fp_from_hex!("00000000"),
491            fp_from_hex!("00000000"),
492            fp_from_hex!("00000000"),
493            fp_from_hex!("00000000"),
494            fp_from_hex!("00000000"),
495            fp_from_hex!("00000000"),
496            fp_from_hex!("00000000"),
497            fp_from_hex!("00000000"),
498            fp_from_hex!("00000000"),
499            fp_from_hex!("00000000"),
500            fp_from_hex!("00000000"),
501            fp_from_hex!("00000000"),
502            fp_from_hex!("00000000"),
503            fp_from_hex!("00000000"),
504            fp_from_hex!("00000000"),
505            fp_from_hex!("00000000"),
506            fp_from_hex!("00000000"),
507            fp_from_hex!("00000000"),
508            fp_from_hex!("00000000"),
509            fp_from_hex!("00000000"),
510            fp_from_hex!("00000000"),
511            fp_from_hex!("00000000"),
512            fp_from_hex!("00000000"),
513        ],
514        &[
515            fp_from_hex!("47785697"),
516            fp_from_hex!("00000000"),
517            fp_from_hex!("00000000"),
518            fp_from_hex!("00000000"),
519            fp_from_hex!("00000000"),
520            fp_from_hex!("00000000"),
521            fp_from_hex!("00000000"),
522            fp_from_hex!("00000000"),
523            fp_from_hex!("00000000"),
524            fp_from_hex!("00000000"),
525            fp_from_hex!("00000000"),
526            fp_from_hex!("00000000"),
527            fp_from_hex!("00000000"),
528            fp_from_hex!("00000000"),
529            fp_from_hex!("00000000"),
530            fp_from_hex!("00000000"),
531            fp_from_hex!("00000000"),
532            fp_from_hex!("00000000"),
533            fp_from_hex!("00000000"),
534            fp_from_hex!("00000000"),
535            fp_from_hex!("00000000"),
536            fp_from_hex!("00000000"),
537            fp_from_hex!("00000000"),
538            fp_from_hex!("00000000"),
539        ],
540        &[
541            fp_from_hex!("46b3969f"),
542            fp_from_hex!("00000000"),
543            fp_from_hex!("00000000"),
544            fp_from_hex!("00000000"),
545            fp_from_hex!("00000000"),
546            fp_from_hex!("00000000"),
547            fp_from_hex!("00000000"),
548            fp_from_hex!("00000000"),
549            fp_from_hex!("00000000"),
550            fp_from_hex!("00000000"),
551            fp_from_hex!("00000000"),
552            fp_from_hex!("00000000"),
553            fp_from_hex!("00000000"),
554            fp_from_hex!("00000000"),
555            fp_from_hex!("00000000"),
556            fp_from_hex!("00000000"),
557            fp_from_hex!("00000000"),
558            fp_from_hex!("00000000"),
559            fp_from_hex!("00000000"),
560            fp_from_hex!("00000000"),
561            fp_from_hex!("00000000"),
562            fp_from_hex!("00000000"),
563            fp_from_hex!("00000000"),
564            fp_from_hex!("00000000"),
565        ],
566        &[
567            fp_from_hex!("5c7b7a0e"),
568            fp_from_hex!("00000000"),
569            fp_from_hex!("00000000"),
570            fp_from_hex!("00000000"),
571            fp_from_hex!("00000000"),
572            fp_from_hex!("00000000"),
573            fp_from_hex!("00000000"),
574            fp_from_hex!("00000000"),
575            fp_from_hex!("00000000"),
576            fp_from_hex!("00000000"),
577            fp_from_hex!("00000000"),
578            fp_from_hex!("00000000"),
579            fp_from_hex!("00000000"),
580            fp_from_hex!("00000000"),
581            fp_from_hex!("00000000"),
582            fp_from_hex!("00000000"),
583            fp_from_hex!("00000000"),
584            fp_from_hex!("00000000"),
585            fp_from_hex!("00000000"),
586            fp_from_hex!("00000000"),
587            fp_from_hex!("00000000"),
588            fp_from_hex!("00000000"),
589            fp_from_hex!("00000000"),
590            fp_from_hex!("00000000"),
591        ],
592        &[
593            fp_from_hex!("7078fc60"),
594            fp_from_hex!("00000000"),
595            fp_from_hex!("00000000"),
596            fp_from_hex!("00000000"),
597            fp_from_hex!("00000000"),
598            fp_from_hex!("00000000"),
599            fp_from_hex!("00000000"),
600            fp_from_hex!("00000000"),
601            fp_from_hex!("00000000"),
602            fp_from_hex!("00000000"),
603            fp_from_hex!("00000000"),
604            fp_from_hex!("00000000"),
605            fp_from_hex!("00000000"),
606            fp_from_hex!("00000000"),
607            fp_from_hex!("00000000"),
608            fp_from_hex!("00000000"),
609            fp_from_hex!("00000000"),
610            fp_from_hex!("00000000"),
611            fp_from_hex!("00000000"),
612            fp_from_hex!("00000000"),
613            fp_from_hex!("00000000"),
614            fp_from_hex!("00000000"),
615            fp_from_hex!("00000000"),
616            fp_from_hex!("00000000"),
617        ],
618        &[
619            fp_from_hex!("4f22d482"),
620            fp_from_hex!("00000000"),
621            fp_from_hex!("00000000"),
622            fp_from_hex!("00000000"),
623            fp_from_hex!("00000000"),
624            fp_from_hex!("00000000"),
625            fp_from_hex!("00000000"),
626            fp_from_hex!("00000000"),
627            fp_from_hex!("00000000"),
628            fp_from_hex!("00000000"),
629            fp_from_hex!("00000000"),
630            fp_from_hex!("00000000"),
631            fp_from_hex!("00000000"),
632            fp_from_hex!("00000000"),
633            fp_from_hex!("00000000"),
634            fp_from_hex!("00000000"),
635            fp_from_hex!("00000000"),
636            fp_from_hex!("00000000"),
637            fp_from_hex!("00000000"),
638            fp_from_hex!("00000000"),
639            fp_from_hex!("00000000"),
640            fp_from_hex!("00000000"),
641            fp_from_hex!("00000000"),
642            fp_from_hex!("00000000"),
643        ],
644        &[
645            fp_from_hex!("482a9aee"),
646            fp_from_hex!("00000000"),
647            fp_from_hex!("00000000"),
648            fp_from_hex!("00000000"),
649            fp_from_hex!("00000000"),
650            fp_from_hex!("00000000"),
651            fp_from_hex!("00000000"),
652            fp_from_hex!("00000000"),
653            fp_from_hex!("00000000"),
654            fp_from_hex!("00000000"),
655            fp_from_hex!("00000000"),
656            fp_from_hex!("00000000"),
657            fp_from_hex!("00000000"),
658            fp_from_hex!("00000000"),
659            fp_from_hex!("00000000"),
660            fp_from_hex!("00000000"),
661            fp_from_hex!("00000000"),
662            fp_from_hex!("00000000"),
663            fp_from_hex!("00000000"),
664            fp_from_hex!("00000000"),
665            fp_from_hex!("00000000"),
666            fp_from_hex!("00000000"),
667            fp_from_hex!("00000000"),
668            fp_from_hex!("00000000"),
669        ],
670        &[
671            fp_from_hex!("6beb839d"),
672            fp_from_hex!("00000000"),
673            fp_from_hex!("00000000"),
674            fp_from_hex!("00000000"),
675            fp_from_hex!("00000000"),
676            fp_from_hex!("00000000"),
677            fp_from_hex!("00000000"),
678            fp_from_hex!("00000000"),
679            fp_from_hex!("00000000"),
680            fp_from_hex!("00000000"),
681            fp_from_hex!("00000000"),
682            fp_from_hex!("00000000"),
683            fp_from_hex!("00000000"),
684            fp_from_hex!("00000000"),
685            fp_from_hex!("00000000"),
686            fp_from_hex!("00000000"),
687            fp_from_hex!("00000000"),
688            fp_from_hex!("00000000"),
689            fp_from_hex!("00000000"),
690            fp_from_hex!("00000000"),
691            fp_from_hex!("00000000"),
692            fp_from_hex!("00000000"),
693            fp_from_hex!("00000000"),
694            fp_from_hex!("00000000"),
695        ],
696        &[
697            fp_from_hex!("032959ad"),
698            fp_from_hex!("2b18af6a"),
699            fp_from_hex!("55d3dc8c"),
700            fp_from_hex!("43bd26c8"),
701            fp_from_hex!("0c41595f"),
702            fp_from_hex!("7048d2e2"),
703            fp_from_hex!("00db8983"),
704            fp_from_hex!("2af563d7"),
705            fp_from_hex!("6e84758f"),
706            fp_from_hex!("611d64e1"),
707            fp_from_hex!("1f9977e2"),
708            fp_from_hex!("64163a0a"),
709            fp_from_hex!("5c5fc27b"),
710            fp_from_hex!("02e22561"),
711            fp_from_hex!("3a2d75db"),
712            fp_from_hex!("1ba7b71a"),
713            fp_from_hex!("34343f64"),
714            fp_from_hex!("7406b35d"),
715            fp_from_hex!("19df8299"),
716            fp_from_hex!("6ff4480a"),
717            fp_from_hex!("514a81c8"),
718            fp_from_hex!("57ab52ce"),
719            fp_from_hex!("6ad69f52"),
720            fp_from_hex!("3e0c0e0d"),
721        ],
722        &[
723            fp_from_hex!("48126114"),
724            fp_from_hex!("2a9d62cc"),
725            fp_from_hex!("17441f23"),
726            fp_from_hex!("485762bb"),
727            fp_from_hex!("2f218674"),
728            fp_from_hex!("06fdc64a"),
729            fp_from_hex!("0861b7f2"),
730            fp_from_hex!("3b36eee6"),
731            fp_from_hex!("70a11040"),
732            fp_from_hex!("04b31737"),
733            fp_from_hex!("3722a872"),
734            fp_from_hex!("2a351c63"),
735            fp_from_hex!("623560dc"),
736            fp_from_hex!("62584ab2"),
737            fp_from_hex!("382c7c04"),
738            fp_from_hex!("3bf9edc7"),
739            fp_from_hex!("0e38fe51"),
740            fp_from_hex!("376f3b10"),
741            fp_from_hex!("5381e178"),
742            fp_from_hex!("3afc61c7"),
743            fp_from_hex!("5c1bcb4d"),
744            fp_from_hex!("6643ce1f"),
745            fp_from_hex!("2d0af1c1"),
746            fp_from_hex!("08f583cc"),
747        ],
748        &[
749            fp_from_hex!("5d6ff60f"),
750            fp_from_hex!("6324c1e5"),
751            fp_from_hex!("74412fb7"),
752            fp_from_hex!("70c0192e"),
753            fp_from_hex!("0b72f141"),
754            fp_from_hex!("4067a111"),
755            fp_from_hex!("57388c4f"),
756            fp_from_hex!("351009ec"),
757            fp_from_hex!("0974c159"),
758            fp_from_hex!("539a58b3"),
759            fp_from_hex!("038c0cff"),
760            fp_from_hex!("476c0392"),
761            fp_from_hex!("3f7bc15f"),
762            fp_from_hex!("4491dd2c"),
763            fp_from_hex!("4d1fef55"),
764            fp_from_hex!("04936ae3"),
765            fp_from_hex!("58214dd4"),
766            fp_from_hex!("683c6aad"),
767            fp_from_hex!("1b42f16b"),
768            fp_from_hex!("6dc79135"),
769            fp_from_hex!("2d4e71ec"),
770            fp_from_hex!("3e2946ea"),
771            fp_from_hex!("59dce8db"),
772            fp_from_hex!("6cee892a"),
773        ],
774        &[
775            fp_from_hex!("47f07350"),
776            fp_from_hex!("7106ce93"),
777            fp_from_hex!("3bd4a7a9"),
778            fp_from_hex!("2bfe636a"),
779            fp_from_hex!("430011e9"),
780            fp_from_hex!("001cd66a"),
781            fp_from_hex!("307faf5b"),
782            fp_from_hex!("0d9ef3fe"),
783            fp_from_hex!("6d40043a"),
784            fp_from_hex!("2e8f470c"),
785            fp_from_hex!("1b6865e8"),
786            fp_from_hex!("0c0e6c01"),
787            fp_from_hex!("4d41981f"),
788            fp_from_hex!("423b9d3d"),
789            fp_from_hex!("410408cc"),
790            fp_from_hex!("263f0884"),
791            fp_from_hex!("5311bbd0"),
792            fp_from_hex!("4dae58d8"),
793            fp_from_hex!("30401cea"),
794            fp_from_hex!("09afa575"),
795            fp_from_hex!("4b3d5b42"),
796            fp_from_hex!("63ac0b37"),
797            fp_from_hex!("5fe5bb14"),
798            fp_from_hex!("5244e9d4"),
799        ],
800    ];
801}
802
803#[allow(unused_imports)]
804#[cfg(test)]
805mod tests {
806    use crate::{
807        field::instance::FpBabyBear,
808        fp_from_hex,
809        poseidon2::{instance::babybear::BabyBear24Params, *},
810    };
811
812    type Scalar = FpBabyBear;
813
814    #[test]
815    fn smoke() {
816        let mut poseidon2 = Poseidon2::<BabyBear24Params, _>::new();
817        for i in 1..BabyBear24Params::T {
818            poseidon2.absorb(&Scalar::from(i as u64));
819        }
820        let mut perm = poseidon2
821            .squeeze_batch(BabyBear24Params::T - BabyBear24Params::CAPACITY)
822            .into_iter();
823
824        assert_eq!(perm.next().unwrap(), fp_from_hex!("5F5A91BB"));
825        assert_eq!(perm.next().unwrap(), fp_from_hex!("1AB970BC"));
826        assert_eq!(perm.next().unwrap(), fp_from_hex!("641C2977"));
827        assert_eq!(perm.next().unwrap(), fp_from_hex!("70EE1E1F"));
828        assert_eq!(perm.next().unwrap(), fp_from_hex!("5002978A"));
829        assert_eq!(perm.next().unwrap(), fp_from_hex!("309B742F"));
830        assert_eq!(perm.next().unwrap(), fp_from_hex!("09C59B3E"));
831        assert_eq!(perm.next().unwrap(), fp_from_hex!("6B554AC2"));
832        assert_eq!(perm.next().unwrap(), fp_from_hex!("450C070E"));
833        assert_eq!(perm.next().unwrap(), fp_from_hex!("07EAEA75"));
834        assert_eq!(perm.next().unwrap(), fp_from_hex!("358E2514"));
835        assert_eq!(perm.next().unwrap(), fp_from_hex!("387D082C"));
836        assert_eq!(perm.next().unwrap(), fp_from_hex!("4869C4E2"));
837        assert_eq!(perm.next().unwrap(), fp_from_hex!("66E56CAE"));
838        assert_eq!(perm.next().unwrap(), fp_from_hex!("349EAB1A"));
839        assert_eq!(perm.next().unwrap(), fp_from_hex!("58A416EC"));
840        assert_eq!(perm.next().unwrap(), fp_from_hex!("5EB14F6A"));
841        assert_eq!(perm.next().unwrap(), fp_from_hex!("28BD8371"));
842        assert_eq!(perm.next().unwrap(), fp_from_hex!("56B19FBE"));
843        assert_eq!(perm.next().unwrap(), fp_from_hex!("01DD53EF"));
844        assert!(perm.next().is_none());
845    }
846}