18 const AllEntities& in,
20 const FF& scaling_factor)
27 static const auto offset_generator_coords = [&]() {
34 const auto msm_transition = View(in.transcript_msm_transition);
35 const auto transcript_msm_infinity = View(in.transcript_msm_infinity);
37 const auto offset = offset_generator_coords();
39 const auto y1 = -
offset[1];
40 const auto x2 = View(in.transcript_msm_x);
41 const auto y2 = View(in.transcript_msm_y);
42 const auto x3 = View(in.transcript_msm_intermediate_x);
43 const auto y3 = View(in.transcript_msm_intermediate_y);
44 const auto x2_minus_x1 = x2 - x1;
45 const auto y2_minus_y1 = y2 - y1;
46 const auto x3_plus_x2_plus_x1 = (x3 + x2) + x1;
49 const auto x_term_acc6 = Acc6(x3_plus_x2_plus_x1) * Acc6(x2_minus_x1.sqr()) - Acc6(y2_minus_y1.sqr());
50 const auto y_term_acc6 = Acc6((-x3 + x1) * y2_minus_y1) - Acc6(x2_minus_x1 * (y3 + y1));
51 const auto not_msm_inf_short = -transcript_msm_infinity +
FF(1);
52 const auto subtract_x_acc6 = x_term_acc6 * Acc6(not_msm_inf_short) + Acc6(transcript_msm_infinity * x3);
53 const auto subtract_y_acc6 = y_term_acc6 * Acc6(not_msm_inf_short) + Acc6(transcript_msm_infinity * y3);
58 const auto x_diff = x2 - x1;
59 const auto y_sum = y2 + y1;
61 Acc4((msm_transition * transcript_msm_infinity) * scaling_factor) * Acc4(x_diff);
63 Acc4((msm_transition * transcript_msm_infinity) * scaling_factor) * Acc4(y_sum);
66 const auto transcript_msm_x_inverse = View(in.transcript_msm_x_inverse);
67 const auto inverse_inner = Acc5(x_diff * transcript_msm_x_inverse) - Acc5(
FF(1));
69 Acc5(msm_transition * scaling_factor) * Acc5(not_msm_inf_short) * inverse_inner;