From aed279191e981b270a84d243f5364c8ba5b0b5cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Garillot?= Date: Thu, 8 Feb 2024 14:00:51 -0500 Subject: [PATCH] fix: one forgotten instance of the poly_X refactor --- src/spartan/ppsnark.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/spartan/ppsnark.rs b/src/spartan/ppsnark.rs index 109a7b2c0..56edc70e6 100644 --- a/src/spartan/ppsnark.rs +++ b/src/spartan/ppsnark.rs @@ -927,13 +927,15 @@ impl> RelaxedR1CSSNARKTrait for Relax let eval_X = { // constant term - let mut poly_X = vec![(0, U.u)]; - //remaining inputs - poly_X.extend( - (0..U.X.len()) - .map(|i| (i + 1, U.X[i])) - .collect::>(), - ); + let poly_X = std::iter::once((0, U.u)) + .chain( + //remaining inputs + (0..U.X.len()) + // filter_map uses the sparsity of the polynomial, if irrelevant + // we should replace by UniPoly + .filter_map(|i| (!U.X[i].is_zero_vartime()).then_some((i + 1, U.X[i]))), + ) + .collect(); SparsePolynomial::new(vk.num_vars.log_2(), poly_X).evaluate(&rand_sc_unpad[1..]) };