81 std::vector<FF> scalars(Flavor::NUM_CLAIMS);
83 for (
size_t idx = 1; idx < Flavor::NUM_CLAIMS; ++idx) {
84 scalars[idx] = scalars[idx - 1] * claim_merge_challenge;
89 FF new_non_shifted_evaluation(0);
90 FF new_shifted_evaluation(0);
92 size_t largest_non_shifted_idx = 0;
93 size_t largest_shifted_idx = 0;
94 for (
size_t idx = 0; idx < Flavor::NUM_CLAIMS; ++idx) {
95 if (
key.polynomials.non_shifted(idx).end_index() >
96 key.polynomials.non_shifted(largest_non_shifted_idx).end_index()) {
97 largest_non_shifted_idx = idx;
99 if (
key.preshifted_polynomials[idx].end_index() >
key.preshifted_polynomials[largest_shifted_idx].end_index()) {
100 largest_shifted_idx = idx;
103 new_non_shifted_evaluation += scalars[idx] * sumcheck_output.claimed_evaluations.non_shifted(idx);
104 new_shifted_evaluation += scalars[idx] * sumcheck_output.claimed_evaluations.shifted(idx);
107 new_non_shifted_polynomial =
std::move(
key.polynomials.non_shifted(largest_non_shifted_idx));
108 new_non_shifted_polynomial *= scalars[largest_non_shifted_idx];
109 for (
size_t idx = 0; idx < Flavor::NUM_CLAIMS; ++idx) {
110 if (idx != largest_non_shifted_idx) {
111 new_non_shifted_polynomial.
add_scaled(
key.polynomials.non_shifted(idx), scalars[idx]);
115 new_shifted_polynomial =
std::move(
key.preshifted_polynomials[largest_shifted_idx]);
116 new_shifted_polynomial *= scalars[largest_shifted_idx];
117 for (
size_t idx = 0; idx < Flavor::NUM_CLAIMS; ++idx) {
118 if (idx != largest_shifted_idx) {
119 new_shifted_polynomial.
add_scaled(
key.preshifted_polynomials[idx], scalars[idx]);
123 auto new_non_shifted_commitment = Commitment::batch_mul(
key.non_shifted_commitments, scalars);
124 auto new_shifted_commitment = Commitment::batch_mul(
key.shifted_commitments, scalars);
127 .non_shifted_evaluation = new_non_shifted_evaluation,
128 .shifted_evaluation = new_shifted_evaluation,
129 .non_shifted_polynomial =
std::move(new_non_shifted_polynomial),
130 .shifted_polynomial =
std::move(new_shifted_polynomial),
131 .non_shifted_commitment = new_non_shifted_commitment,
132 .shifted_commitment = new_shifted_commitment,
133 .dyadic_size =
key.circuit_size };