diff --git a/plonky2/src/gates/base_sum.rs b/plonky2/src/gates/base_sum.rs index 43ae2fd2..93ac7e8d 100644 --- a/plonky2/src/gates/base_sum.rs +++ b/plonky2/src/gates/base_sum.rs @@ -34,7 +34,7 @@ impl BaseSumGate { pub fn new_from_config(config: &CircuitConfig) -> Self { let num_limbs = - log_floor(F::ORDER as usize, B).min(config.num_routed_wires - Self::START_LIMBS); + log_floor(F::ORDER as usize - 1, B).min(config.num_routed_wires - Self::START_LIMBS); Self::new(num_limbs) } diff --git a/util/src/lib.rs b/util/src/lib.rs index 33fe7ab4..3136a4b2 100644 --- a/util/src/lib.rs +++ b/util/src/lib.rs @@ -38,7 +38,7 @@ pub fn log2_strict(n: usize) -> usize { res as usize } -/// Returns the largest `i` such that `base**i < n`. +/// Returns the largest integer `i` such that `base**i <= n`. pub const fn log_floor(n: usize, base: usize) -> usize { assert!(n > 0); assert!(base > 1); @@ -46,7 +46,7 @@ pub const fn log_floor(n: usize, base: usize) -> usize { let mut cur: usize = 1; loop { let (mul, overflow) = cur.overflowing_mul(base); - if overflow || mul >= n { + if overflow || mul > n { return i; } else { i += 1;