From ab7e2381a2e4a2ff392c394542aaddb192aaeed9 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Wed, 16 Jun 2021 08:15:44 +0200 Subject: [PATCH] Remove `rev` in computation of the reversed sum in `BaseSplitGenerator`. --- src/gadgets/split_base.rs | 11 +++++++---- src/gates/base_sum.rs | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/gadgets/split_base.rs b/src/gadgets/split_base.rs index 10189841..1d5e1fcd 100644 --- a/src/gadgets/split_base.rs +++ b/src/gadgets/split_base.rs @@ -82,10 +82,13 @@ mod tests { let two = builder.two(); let three = builder.constant(F::from_canonical_u64(3)); let five = builder.constant(F::from_canonical_u64(5)); - builder.assert_equal(limbs[0], two); - builder.assert_equal(limbs[1], three); - builder.assert_equal(limbs[2], five); - builder.assert_equal(limbs[3], one); + builder.route(limbs[0], two); + builder.route(limbs[1], three); + builder.route(limbs[2], five); + builder.route(limbs[3], one); + let rev = builder.constant(F::from_canonical_u64(11)); + let revt = builder.reverse_bits::<2>(xt, 9); + builder.route(revt, rev); builder.assert_trailing_zeros::<6>(xt, 4); builder.assert_trailing_zeros::<4>(xt, 5); diff --git a/src/gates/base_sum.rs b/src/gates/base_sum.rs index 0792ea7a..09f448e2 100644 --- a/src/gates/base_sum.rs +++ b/src/gates/base_sum.rs @@ -145,19 +145,22 @@ impl SimpleGenerator for BaseSplitGenerator { .scan(sum_value, |acc, _| { let tmp = *acc % B; *acc /= B; - Some(tmp) + Some(F::from_canonical_usize(tmp)) }) .collect::>(); - let reversed_sum = limbs_value.iter().rev().fold(0, |acc, &x| acc * B + x); + let b_field = F::from_canonical_usize(B); + let reversed_sum = limbs_value + .iter() + .fold(F::ZERO, |acc, &x| acc * b_field + x); let mut result = PartialWitness::new(); result.set_target( Target::wire(self.gate_index, BaseSumGate::::WIRE_REVERSED_SUM), - F::from_canonical_usize(reversed_sum), + reversed_sum, ); for (b, b_value) in limbs.zip(limbs_value) { - result.set_target(b, F::from_canonical_usize(b_value)); + result.set_target(b, b_value); } result