From 695e5bc98c34e6db5bd1d70ad0091bc1c88d2758 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Tue, 27 Jul 2021 11:04:16 -0700 Subject: [PATCH] fix? --- src/gates/exponentiation.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gates/exponentiation.rs b/src/gates/exponentiation.rs index da250bb2..5f56112a 100644 --- a/src/gates/exponentiation.rs +++ b/src/gates/exponentiation.rs @@ -71,14 +71,18 @@ impl, const D: usize> Gate for ExponentiationGate { let computed_power = reduce_with_powers(power_bits_reversed, F::Extension::TWO); constraints.push(power - computed_power); - let mut current_intermediate_value = F::Extension::ONE; for i in 0..self.num_power_bits { + let current_intermediate_value = if i == 0 { + F::Extension::ONE + } else { + intermediate_values[i - 1] * intermediate_values[i - 1] + }; + let cur_bit = power_bits[i]; let not_cur_bit = F::Extension::ONE - cur_bit; let computed_intermediate_value = current_intermediate_value * (cur_bit * base + not_cur_bit); constraints.push(computed_intermediate_value - intermediate_values[i]); - current_intermediate_value = computed_intermediate_value * computed_intermediate_value; } constraints.push(computed_output - intermediate_values[self.num_power_bits - 1]);