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);
75 auto tmp_1 = (delta_1 -
FF(3)) * delta_1;
76 tmp_1 *= (tmp_1 +
FF(2));
77 tmp_1 *= q_delta_range_scaled;
81 auto tmp_2 = (delta_2 -
FF(3)) * delta_2;
82 tmp_2 *= (tmp_2 +
FF(2));
83 tmp_2 *= q_delta_range_scaled;
87 auto tmp_3 = (delta_3 -
FF(3)) * delta_3;
88 tmp_3 *= (tmp_3 +
FF(2));
89 tmp_3 *= q_delta_range_scaled;
93 auto tmp_4 = (delta_4 -
FF(3)) * delta_4;
94 tmp_4 *= (tmp_4 +
FF(2));
95 tmp_4 *= q_delta_range_scaled;