1use crate::{
5 field::instance::FpBabyBear, fp_from_hex, poseidon2::params::PoseidonParams,
6};
7
8pub struct BabyBear24Params;
10
11#[rustfmt::skip]
12impl PoseidonParams<FpBabyBear> for BabyBear24Params {
13 const T: usize = 24;
14 const D: u8 = 7;
15 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}