105 const FF& scaling_factor)
110 using CoefficientAccumulator =
typename Accumulator::CoefficientAccumulator;
123 const auto q_poseidon2_internal_m = CoefficientAccumulator(in[AllEntities::EntityId::q_poseidon2_internal]);
137 const auto q_pos_by_scaling_m = (q_poseidon2_internal_m * scaling_factor);
138 const auto q_pos_by_scaling =
Accumulator(q_pos_by_scaling_m);
140 const auto partial_sum = w_2 + w_3 + w_4;
141 const auto scaled_u1 = u1 * q_pos_by_scaling;
144 barycentric_term = scaled_u1 *
D1;
145 auto monomial_term = partial_sum - w_1_shift;
146 barycentric_term +=
Accumulator(monomial_term * q_pos_by_scaling_m);
150 auto v2_m = w_2 *
D2_minus_1 + partial_sum - w_2_shift;
151 barycentric_term =
Accumulator(v2_m * q_pos_by_scaling_m);
152 barycentric_term += scaled_u1;
156 auto v3_m = w_3 *
D3_minus_1 + partial_sum - w_3_shift;
157 barycentric_term =
Accumulator(v3_m * q_pos_by_scaling_m);
158 barycentric_term += scaled_u1;
162 auto v4_m = w_4 *
D4_minus_1 + partial_sum - w_4_shift;
163 barycentric_term =
Accumulator(v4_m * q_pos_by_scaling_m);
164 barycentric_term += scaled_u1;