From 3787f3be22c759a7f5ef2f23fef444912118390e Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Fri, 11 Feb 2022 12:35:36 -0800 Subject: [PATCH] conditional add --- plonky2/src/gadgets/curve_windowed_mul.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plonky2/src/gadgets/curve_windowed_mul.rs b/plonky2/src/gadgets/curve_windowed_mul.rs index f9915043..57d8c558 100644 --- a/plonky2/src/gadgets/curve_windowed_mul.rs +++ b/plonky2/src/gadgets/curve_windowed_mul.rs @@ -77,6 +77,7 @@ impl, const D: usize> CircuitBuilder { let mut result = self.constant_affine_point(C::GENERATOR_AFFINE); let precomputation = self.precompute_window(p); + let zero = self.zero(); let windows = self.split_nonnative_to_4_bit_limbs(n); let m = C::ScalarField::BITS / WINDOW_SIZE; @@ -85,7 +86,9 @@ impl, const D: usize> CircuitBuilder { let window = windows[i]; let to_add = self.random_access_curve_points(window, precomputation.clone()); - result = self.curve_add(&result, &to_add); + let is_zero = self.is_equal(window, zero); + let should_add = self.not(is_zero); + result = self.curve_conditional_add(&result, &to_add, should_add); } result