2#include "barretenberg/crypto/poseidon2/poseidon2_params.hpp"
3#include "relation_types.hpp"
5namespace proof_system {
11 static constexpr std::array<size_t, 4> SUBRELATION_PARTIAL_LENGTHS{
37 template <
typename ContainerOverSubrelations,
typename AllEntities,
typename Parameters>
39 const AllEntities& in,
41 const FF& scaling_factor)
43 using Accumulator = std::tuple_element_t<0, ContainerOverSubrelations>;
44 using View =
typename Accumulator::View;
45 auto w_l = View(in.w_l);
46 auto w_r = View(in.w_r);
47 auto w_o = View(in.w_o);
48 auto w_4 = View(in.w_4);
49 auto w_l_shift = View(in.w_l_shift);
50 auto w_r_shift = View(in.w_r_shift);
51 auto w_o_shift = View(in.w_o_shift);
52 auto w_4_shift = View(in.w_4_shift);
53 auto q_l = View(in.q_l);
54 auto q_poseidon2_internal = View(in.q_poseidon2_internal);
68 auto sum = u1 + u2 + u3 + u4;
70 auto v1 = u1 * crypto::Poseidon2Bn254ScalarFieldParams::internal_matrix_diagonal[0];
72 auto tmp = q_poseidon2_internal * (v1 - w_l_shift);
73 tmp *= scaling_factor;
74 std::get<0>(evals) += tmp;
76 auto v2 = u2 * crypto::Poseidon2Bn254ScalarFieldParams::internal_matrix_diagonal[1];
78 tmp = q_poseidon2_internal * (v2 - w_r_shift);
79 tmp *= scaling_factor;
80 std::get<1>(evals) += tmp;
82 auto v3 = u3 * crypto::Poseidon2Bn254ScalarFieldParams::internal_matrix_diagonal[2];
84 tmp = q_poseidon2_internal * (v3 - w_o_shift);
85 tmp *= scaling_factor;
86 std::get<2>(evals) += tmp;
88 auto v4 = u4 * crypto::Poseidon2Bn254ScalarFieldParams::internal_matrix_diagonal[3];
90 tmp = q_poseidon2_internal * (v4 - w_4_shift);
91 tmp *= scaling_factor;
92 std::get<3>(evals) += tmp;
96template <
typename FF>
using Poseidon2InternalRelation = Relation<Poseidon2InternalRelationImpl<FF>>;
Definition: poseidon2_internal_relation.hpp:7
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const Parameters &, const FF &scaling_factor)
Expression for the poseidon2 internal round relation, based on I_i in Section 6 of https://eprint....
Definition: poseidon2_internal_relation.hpp:38