diff --git a/plonky2/src/fri/oracle.rs b/plonky2/src/fri/oracle.rs index 27d3e129..88b0298b 100644 --- a/plonky2/src/fri/oracle.rs +++ b/plonky2/src/fri/oracle.rs @@ -155,6 +155,8 @@ impl, C: GenericConfig, const D: usize> final_poly += quotient; } final_poly.trim(); + // Multiply the final polynomial by `X`, so that `final_poly` has the maximum degree for + // which the LDT will pass. See github.com/mir-protocol/plonky2/pull/434 for details. final_poly.coeffs.insert(0, F::Extension::ZERO); let lde_final_poly = final_poly.lde(fri_params.config.rate_bits); diff --git a/plonky2/src/fri/recursive_verifier.rs b/plonky2/src/fri/recursive_verifier.rs index 526456b6..2a59d457 100644 --- a/plonky2/src/fri/recursive_verifier.rs +++ b/plonky2/src/fri/recursive_verifier.rs @@ -281,7 +281,7 @@ impl, const D: usize> CircuitBuilder { sum = self.div_add_extension(numerator, denominator, sum); } - sum + self.mul_extension(sum, subgroup_x) } fn fri_verifier_query_round>(