From 71c392e935b065b5309f5f1c02e2dcde852cbf5f Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Fri, 13 Aug 2021 10:46:51 +0200 Subject: [PATCH] More optim --- src/fri/recursive_verifier.rs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/fri/recursive_verifier.rs b/src/fri/recursive_verifier.rs index cf07dfad..d8f6b0ef 100644 --- a/src/fri/recursive_verifier.rs +++ b/src/fri/recursive_verifier.rs @@ -210,8 +210,8 @@ impl, const D: usize> CircuitBuilder { &mut self, proof: &FriInitialTreeProofTarget, alpha: ExtensionTarget, - zeta: ExtensionTarget, subgroup_x: Target, + vanish_zeta: ExtensionTarget, precomputed_reduced_evals: PrecomputedReducedEvalsTarget, common_data: &CommonCircuitData, ) -> ExtensionTarget { @@ -225,7 +225,6 @@ impl, const D: usize> CircuitBuilder { - config.rate_bits ); let subgroup_x = self.convert_to_ext(subgroup_x); - let vanish_zeta = self.sub_extension(subgroup_x, zeta); let mut alpha = ReducingFactorTarget::new(alpha); let mut sum = self.zero_extension(); @@ -317,12 +316,25 @@ impl, const D: usize> CircuitBuilder { ); // `subgroup_x` is `subgroup[x_index]`, i.e., the actual field element in the domain. - let mut subgroup_x = with_context!(self, "compute x from its index", { + let (mut subgroup_x, vanish_zeta) = with_context!(self, "compute x from its index", { let g = self.constant(F::coset_shift()); let phi = self.constant(F::primitive_root_of_unity(n_log)); let phi = self.exp_from_bits(phi, x_index_bits.iter().rev()); - self.mul(g, phi) + let g_ext = self.convert_to_ext(g); + let phi_ext = self.convert_to_ext(phi); + let zero = self.zero_extension(); + let tmp = self.double_arithmetic_extension( + F::ONE, + F::NEG_ONE, + g_ext, + phi_ext, + zero, + g_ext, + phi_ext, + zeta, + ); + (tmp.0 .0[0], tmp.1) }); // old_eval is the last derived evaluation; it will be checked for consistency with its @@ -333,8 +345,8 @@ impl, const D: usize> CircuitBuilder { self.fri_combine_initial( &round_proof.initial_trees_proof, alpha, - zeta, subgroup_x, + vanish_zeta, precomputed_reduced_evals, common_data, )