Applies the Poseidon2 permutation function from https://eprint.iacr.org/2023/323 ....
std::array< FF, t > RoundConstants
static constexpr size_t d
std::array< RoundConstants, NUM_ROUNDS > RoundConstantsContainer
static constexpr size_t rounds_f
std::array< FF, t > NativeState
static constexpr size_t sbox_size
static constexpr size_t NUM_ROUNDS
std::array< field_t< Builder >, t > State
static State permutation(Builder *builder, const State &input)
Circuit form of Poseidon2 permutation from https://eprint.iacr.org/2023/323.
static constexpr size_t rounds_p
static void matrix_multiplication_external(Builder *builder, State &state)
Separate function to do just the first linear layer (equivalent to external matrix mul).
static constexpr RoundConstantsContainer round_constants
static constexpr size_t t
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static constexpr size_t t
static constexpr size_t sbox_size
static constexpr size_t rounds_f
static constexpr size_t d
static constexpr size_t rounds_p
static constexpr std::array< std::array< FF, t >, rounds_f+rounds_p > round_constants