poseidon_mds_matrix.hpp
Go to the documentation of this file.
constexpr matrix< T, M, M > inverse(const matrix< T, M, M > &m)
computes the matrix inverse
Definition: algebra/include/nil/crypto3/algebra/matrix/math.hpp:312
constexpr matrix< T, M, P > matmul(const matrix< T, M, N > &a, const matrix< T, N, P > &b)
computes the matrix product
Definition: algebra/include/nil/crypto3/algebra/matrix/math.hpp:118
constexpr matrix< T, N, N > get_identity()
Definition: matrix/utility.hpp:116
constexpr vector< T, M > matvectmul(const matrix< T, M, N > &m, const vector< T, N > &v)
computes the product of matrix and vector
Definition: algebra/include/nil/crypto3/algebra/matrix/math.hpp:140
constexpr vector< T, N > vectmatmul(const vector< T, M > &v, const matrix< T, M, N > &m)
computes the product of vector and matrix
Definition: algebra/include/nil/crypto3/algebra/matrix/math.hpp:129
constexpr T dot(const vector< T, N > &a, const vector< T, N > &b)
computes the dot product
Definition: algebra/include/nil/crypto3/algebra/vector/math.hpp:110
constexpr vector< T, M > slice(vector< T, N > v, std::size_t start=0)
slices a vector into a subvector
Definition: vector/utility.hpp:170
Definition: pair.hpp:31
constexpr vector< T, N > column(std::size_t i) const
access specified column
Definition: matrix.hpp:82
constexpr vector< T, M > row(std::size_t i) const
access specified row
Definition: matrix.hpp:70
Definition: poseidon_mds_matrix.hpp:91
mds_matrix_type M_i
Definition: poseidon_mds_matrix.hpp:119
equivalent_mds_matrix_type(const mds_matrix_type &mds_matrix)
Definition: poseidon_mds_matrix.hpp:97
std::array< substate_vector_type, part_rounds > subvectors_array
Definition: poseidon_mds_matrix.hpp:92
subvectors_array w_hat_list
Definition: poseidon_mds_matrix.hpp:120
subvectors_array v_list
Definition: poseidon_mds_matrix.hpp:121
element_type M_0_0
Definition: poseidon_mds_matrix.hpp:122
Definition: poseidon_mds_matrix.hpp:29
algebra::vector< element_type, state_words - 1 > substate_vector_type
Definition: poseidon_mds_matrix.hpp:39
void product_with_mds_matrix(state_vector_type &A_vector) const
Definition: poseidon_mds_matrix.hpp:42
void product_with_equivalent_mds_matrix_init(state_vector_type &A_vector, std::size_t round_number) const
Definition: poseidon_mds_matrix.hpp:51
const mds_matrix_type & get_M_i() const
Definition: poseidon_mds_matrix.hpp:134
algebra::matrix< element_type, state_words - 1, state_words - 1 > mds_submatrix_type
Definition: poseidon_mds_matrix.hpp:40
equivalent_mds_matrix_type equivalent_mds_matrix
Definition: poseidon_mds_matrix.hpp:148
algebra::matrix< element_type, state_words, state_words > mds_matrix_type
Definition: poseidon_mds_matrix.hpp:37
mds_matrix_type mds_matrix_inverse
Definition: poseidon_mds_matrix.hpp:147
mds_matrix_type mds_matrix
Definition: poseidon_mds_matrix.hpp:146
poseidon_policy< FieldType, Arity, PartRounds > policy_type
Definition: poseidon_mds_matrix.hpp:30
mds_matrix_type generate_mds_matrix()
Definition: poseidon_mds_matrix.hpp:81
constexpr static const std::size_t half_full_rounds
Definition: poseidon_mds_matrix.hpp:34
poseidon_mds_matrix()
Definition: poseidon_mds_matrix.hpp:141
const substate_vector_type & get_v(std::size_t v_number) const
Definition: poseidon_mds_matrix.hpp:128
constexpr void product_with_inverse_mds_matrix_noalias(const state_vector_type &A_vector_in, state_vector_type &A_vector_out) const
Definition: poseidon_mds_matrix.hpp:46
constexpr static const std::size_t part_rounds
Definition: poseidon_mds_matrix.hpp:35
algebra::vector< element_type, state_words > state_vector_type
Definition: poseidon_mds_matrix.hpp:38
void product_with_equivalent_mds_matrix(state_vector_type &A_vector, std::size_t round_number) const
Definition: poseidon_mds_matrix.hpp:58
const substate_vector_type & get_w_hat(std::size_t w_hat_number) const
Definition: poseidon_mds_matrix.hpp:125
constexpr static const std::size_t state_words
Definition: poseidon_mds_matrix.hpp:33
FieldType::value_type element_type
Definition: poseidon_mds_matrix.hpp:31
const element_type & get_M_0_0() const
Definition: poseidon_mds_matrix.hpp:131
Definition: poseidon_policy.hpp:65