From 7c1c082a3911234661d16725c12d9a62e261ec3b Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Wed, 21 Jul 2021 19:53:32 +0200 Subject: [PATCH] Comments --- src/fri/recursive_verifier.rs | 4 ++++ src/fri/verifier.rs | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/fri/recursive_verifier.rs b/src/fri/recursive_verifier.rs index 1baf598f..74c781a7 100644 --- a/src/fri/recursive_verifier.rs +++ b/src/fri/recursive_verifier.rs @@ -35,6 +35,10 @@ impl, const D: usize> CircuitBuilder { reverse_index_bits_in_place(&mut evals); let mut old_x_index_bits = self.split_le(old_x_index, arity_bits); old_x_index_bits.reverse(); + // Want `g^(arity - rev_old_x_index)` as in the out-of-circuit version. + // Compute it as `g^(arity-1-rev_old_x_index) * g`, where the first term is gotten using two's complement. + // TODO: Once the exponentiation gate lands, we won't need the bits and will be able to compute + // `g^(arity-rev_old_x_index)` directly. let start = self.exp_from_complement_bits(gt, &old_x_index_bits); let start = self.mul(start, x); let start = self.mul(start, gt); diff --git a/src/fri/verifier.rs b/src/fri/verifier.rs index 89e35eb4..89b60d40 100644 --- a/src/fri/verifier.rs +++ b/src/fri/verifier.rs @@ -30,8 +30,8 @@ fn compute_evaluation, const D: usize>( // The evaluation vector needs to be reordered first. let mut evals = last_evals.to_vec(); reverse_index_bits_in_place(&mut evals); - let rev_x_index = reverse_bits(old_x_index, arity_bits); - let start = x * g.exp((arity - rev_x_index) as u64); + let rev_old_x_index = reverse_bits(old_x_index, arity_bits); + let start = x * g.exp((arity - rev_old_x_index) as u64); // The answer is gotten by interpolating {(x*g^i, P(x*g^i))} and evaluating at beta. let points = g .powers()