56 inline static void accumulate(ContainerOverSubrelations& accumulators,
57 const AllEntities& in,
59 const FF& scaling_factor)
62 using CoefficientAccumulator =
typename Accumulator::CoefficientAccumulator;
64 auto w_1 = CoefficientAccumulator(in.w_l);
65 auto w_2 = CoefficientAccumulator(in.w_r);
66 auto w_3 = CoefficientAccumulator(in.w_o);
67 auto w_4 = CoefficientAccumulator(in.w_4);
68 auto w_1_shift = CoefficientAccumulator(in.w_l_shift);
69 auto q_delta_range_m = CoefficientAccumulator(in.q_delta_range);
71 auto q_delta_range_scaled_m = q_delta_range_m * scaling_factor;
72 Accumulator q_delta_range_scaled(q_delta_range_scaled_m);
75 auto delta_1 = Accumulator(w_2 - w_1);
76 auto delta_2 = Accumulator(w_3 - w_2);
77 auto delta_3 = Accumulator(w_4 - w_3);
78 auto delta_4 = Accumulator(w_1_shift - w_4);
83 auto tmp_1 = (delta_1 -
FF(3)) * delta_1;
84 tmp_1 *= (tmp_1 +
FF(2));
85 tmp_1 *= q_delta_range_scaled;
89 auto tmp_2 = (delta_2 -
FF(3)) * delta_2;
90 tmp_2 *= (tmp_2 +
FF(2));
91 tmp_2 *= q_delta_range_scaled;
95 auto tmp_3 = (delta_3 -
FF(3)) * delta_3;
96 tmp_3 *= (tmp_3 +
FF(2));
97 tmp_3 *= q_delta_range_scaled;
101 auto tmp_4 = (delta_4 -
FF(3)) * delta_4;
102 tmp_4 *= (tmp_4 +
FF(2));
103 tmp_4 *= q_delta_range_scaled;