From bb316fb146b7c8e896dc2479382df0138b539d68 Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Fri, 30 Jul 2021 09:02:56 -0700 Subject: [PATCH] Use batch inversion to compute the quoients for Z (#136) Shaves about a second off the recursive proof time! Down to 2.45s on my laptop. --- src/plonk/vanishing_poly.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plonk/vanishing_poly.rs b/src/plonk/vanishing_poly.rs index c9990d1b..0beceb3c 100644 --- a/src/plonk/vanishing_poly.rs +++ b/src/plonk/vanishing_poly.rs @@ -148,8 +148,9 @@ pub(crate) fn eval_vanishing_poly_base, const D: usize>( wire_value + betas[i] * s_sigma + gammas[i] }) .collect::>(); + let denominator_inverses = F::batch_multiplicative_inverse(&denominator_values); let quotient_values = (0..common_data.config.num_routed_wires) - .map(|j| numerator_values[j] / denominator_values[j]) + .map(|j| numerator_values[j] * denominator_inverses[j]) .collect::>(); // The partial products considered for this iteration of `i`.