40 const AllEntities& in,
42 const FF& scaling_factor)
45 using CoeffAcc =
typename Accumulator::CoefficientAccumulator;
47 const auto x_0 = CoeffAcc(in.w_l);
48 const auto x_1 = CoeffAcc(in.w_r);
49 const auto x_2 = CoeffAcc(in.w_o);
50 const auto x_3 = CoeffAcc(in.w_4);
51 const auto y_0 = CoeffAcc(in.w_l_shift);
52 const auto y_1 = CoeffAcc(in.w_r_shift);
53 const auto y_2 = CoeffAcc(in.w_o_shift);
54 const auto y_3 = CoeffAcc(in.w_4_shift);
56 const auto q_sel = CoeffAcc(in.q_poseidon2_external_initial);
57 const auto q_by_scaling = Accumulator(q_sel * scaling_factor);
66 auto t2 = x_1 + x_1 + t1;
67 auto t3 = x_3 + x_3 + t0;
69 auto y3_calc = t1 + t1;
70 y3_calc = y3_calc + y3_calc + t3;
71 auto y1_calc = t0 + t0;
72 y1_calc = y1_calc + y1_calc + t2;
73 auto y0_calc = t3 + y1_calc;
74 auto y2_calc = t2 + y3_calc;
77 std::get<0>(evals) += q_by_scaling * Accumulator(y0_calc - y_0);
78 std::get<1>(evals) += q_by_scaling * Accumulator(y1_calc - y_1);
79 std::get<2>(evals) += q_by_scaling * Accumulator(y2_calc - y_2);
80 std::get<3>(evals) += q_by_scaling * Accumulator(y3_calc - y_3);