From 244543578bf70aab1cb2fdd3f81d81b810f16f4f Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Mon, 1 Nov 2021 09:44:20 -0700 Subject: [PATCH] fixes to subtraction tests, and documentation --- src/gates/subtraction_u32.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/gates/subtraction_u32.rs b/src/gates/subtraction_u32.rs index fc2009be..c11c6f0f 100644 --- a/src/gates/subtraction_u32.rs +++ b/src/gates/subtraction_u32.rs @@ -1,7 +1,5 @@ use std::marker::PhantomData; -use itertools::unfold; - use crate::field::extension_field::target::ExtensionTarget; use crate::field::extension_field::Extendable; use crate::field::field_types::{Field, RichField}; @@ -16,7 +14,8 @@ use crate::plonk::vars::{EvaluationTargets, EvaluationVars, EvaluationVarsBase}; /// Maximum number of subtractions operations performed by a single gate. pub const NUM_U32_SUBTRACTION_OPS: usize = 3; -/// A gate to perform a subtraction . +/// A gate to perform a subtraction on 32-bit limbs: given `x`, `y`, and `borrow`, it returns +/// the result `x - y - borrow` and, if this underflows, a new `borrow`. #[derive(Clone, Debug)] pub struct U32SubtractionGate, const D: usize> { _phantom: PhantomData, @@ -395,14 +394,14 @@ mod tests { } let mut rng = rand::thread_rng(); - let inputs_x: Vec<_> = (0..NUM_U32_SUBTRACTION_OPS) + let inputs_x = (0..NUM_U32_SUBTRACTION_OPS) .map(|_| rng.gen::() as u64) .collect(); - let inputs_y: Vec<_> = (0..NUM_U32_SUBTRACTION_OPS) + let inputs_y = (0..NUM_U32_SUBTRACTION_OPS) .map(|_| rng.gen::() as u64) .collect(); - let borrows: Vec<_> = (0..NUM_U32_SUBTRACTION_OPS) - .map(|_| rng.gen::() as u64) + let borrows = (0..NUM_U32_SUBTRACTION_OPS) + .map(|_| (rng.gen::() % 2) as u64) .collect(); let gate = U32SubtractionGate:: {