sp1_hypercube/operations/poseidon2/
mod.rs1use permutation::Poseidon2Degree3Cols;
4use sp1_derive::AlignedBorrow;
5
6pub mod air;
7pub mod permutation;
8pub mod trace;
9
10pub const WIDTH: usize = 16;
12
13pub const RATE: usize = WIDTH / 2;
15
16pub const NUM_EXTERNAL_ROUNDS: usize = 8;
18
19pub const NUM_INTERNAL_ROUNDS: usize = 20;
21
22pub const NUM_ROUNDS: usize = NUM_EXTERNAL_ROUNDS + NUM_INTERNAL_ROUNDS;
24
25pub const NUM_POSEIDON2_OPERATION_COLUMNS: usize = std::mem::size_of::<Poseidon2Operation<u8>>();
27
28#[derive(AlignedBorrow, Clone, Copy)]
30#[repr(C)]
31pub struct Poseidon2Operation<T: Copy> {
32 pub permutation: Poseidon2Degree3Cols<T>,
34}