48 inline static void accumulate(ContainerOverSubrelations& accumulators,
49 const AllEntities& in,
51 const FF& scaling_factor)
54 using CoefficientAccumulator =
typename Accumulator::CoefficientAccumulator;
56 auto w_1 = CoefficientAccumulator(in.w_l);
57 auto w_2 = CoefficientAccumulator(in.w_r);
58 auto w_3 = CoefficientAccumulator(in.w_o);
59 auto w_4 = CoefficientAccumulator(in.w_4);
60 auto w_1_shift = CoefficientAccumulator(in.w_l_shift);
61 auto q_delta_range_m = CoefficientAccumulator(in.q_delta_range);
63 auto q_delta_range_scaled_m = q_delta_range_m * scaling_factor;
64 Accumulator q_delta_range_scaled(q_delta_range_scaled_m);
67 auto delta_1 = Accumulator(w_2 - w_1);
68 auto delta_2 = Accumulator(w_3 - w_2);
69 auto delta_3 = Accumulator(w_4 - w_3);
70 auto delta_4 = Accumulator(w_1_shift - w_4);
73 auto tmp_1 = (delta_1 -
FF(3)) * delta_1;
74 tmp_1 *= (tmp_1 +
FF(2));
75 tmp_1 *= q_delta_range_scaled;
79 auto tmp_2 = (delta_2 -
FF(3)) * delta_2;
80 tmp_2 *= (tmp_2 +
FF(2));
81 tmp_2 *= q_delta_range_scaled;
85 auto tmp_3 = (delta_3 -
FF(3)) * delta_3;
86 tmp_3 *= (tmp_3 +
FF(2));
87 tmp_3 *= q_delta_range_scaled;
91 auto tmp_4 = (delta_4 -
FF(3)) * delta_4;
92 tmp_4 *= (tmp_4 +
FF(2));
93 tmp_4 *= q_delta_range_scaled;