91 const FF& scaling_factor)
94 using CoeffAcc =
typename Accumulator::CoefficientAccumulator;
104 const auto w_l_shift =
134 auto u_0 = pow5(w_l + q_l);
135 auto u_1 = pow5(w_r + q_r);
136 auto u_2 = pow5(w_o + q_o);
137 auto u_3 = pow5(w_4 + q_4);
143 auto u_0_next = pow5(w_l_shift + q_m);
144 auto u_1_next = pow5(w_r_shift + q_c);
145 auto u_2_next = pow5(w_o_shift + q_5);
146 auto u_0_next_D1 = u_0_next *
D1;
165 auto wp0_full = w_r * cf0[0] + w_o * cf0[1] + w_4 * cf0[2] - w_l_shift;
166 auto wp1_full = w_r * l0[0] + w_o * l0[1] + w_4 * l0[2] - w_r_shift;
167 auto wp2_full = w_r * l1[0] + w_o * l1[1] + w_4 * l1[2] - w_o_shift + w_r_shift + w_r_shift;
168 auto wp3_full = w_r * l2[0] + w_o * l2[1] + w_4 * l2[2] - w_4_shift + w_o_shift + w_r_shift *
SIGMA_PLUS_2;
170 const auto q_times_scaling_m = q_sel * scaling_factor;
171 const auto q_times_scaling =
Accumulator(q_times_scaling_m);
174 auto a0_body = u_0 * cf0[3] + u_1 * cf0[4] + u_2 * cf0[5] + u_3 * cf0[6] +
Accumulator(wp0_full);
178 auto a1_body = u_0 * l0[3] + u_1 * l0[4] + u_2 * l0[5] + u_3 * l0[6] + u_0_next_D1 +
Accumulator(wp1_full);
182 auto a2_body = u_0 * l1[3] + u_1 * l1[4] + u_2 * l1[5] + u_3 * l1[6] - (u_0_next_D1 + u_0_next_D1) +
183 (u_0_next + u_0_next + u_0_next) + u_1_next *
D1 +
Accumulator(wp2_full);
187 auto a3_body = u_0 * l2[3] + u_1 * l2[4] + u_2 * l2[5] + u_3 * l2[6] - u_0_next *
B3_U0_COEF -