From 56336e396d40f0d6fe221334a6ef761a2bb0394b Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Wed, 16 Feb 2022 14:17:14 +0100 Subject: [PATCH] Fix --- plonky2/src/fri/reduction_strategies.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plonky2/src/fri/reduction_strategies.rs b/plonky2/src/fri/reduction_strategies.rs index 84505ec2..d81ac2ae 100644 --- a/plonky2/src/fri/reduction_strategies.rs +++ b/plonky2/src/fri/reduction_strategies.rs @@ -10,7 +10,7 @@ pub enum FriReductionStrategy { /// `ConstantArityBits(arity_bits, final_poly_bits, cap_height)` applies reductions of arity `2^arity_bits` /// until the polynomial degree is less than or equal to `2^final_poly_bits` or until any further - /// `arity_bits`-reduction makes the polynomial degree smaller than `2^cap_height` (which would make FRI fail). + /// `arity_bits`-reduction makes the last FRI tree have height less than `cap_height`. /// This tends to work well in the recursive setting, as it avoids needing multiple configurations /// of gates used in FRI verification, such as `InterpolationGate`. ConstantArityBits(usize, usize, usize), @@ -34,7 +34,9 @@ impl FriReductionStrategy { &FriReductionStrategy::ConstantArityBits(arity_bits, final_poly_bits, cap_height) => { let mut result = Vec::new(); - while degree_bits > final_poly_bits && degree_bits - arity_bits >= cap_height { + while degree_bits > final_poly_bits + && degree_bits + rate_bits - arity_bits >= cap_height + { result.push(arity_bits); assert!(degree_bits >= arity_bits); degree_bits -= arity_bits;