From f787c5385f1591cd23c59ebd450b243270052ed3 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Mon, 15 Nov 2021 11:50:27 +0100 Subject: [PATCH] Simplify --- src/util/reducing.rs | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/util/reducing.rs b/src/util/reducing.rs index f2cd3d55..f10f412d 100644 --- a/src/util/reducing.rs +++ b/src/util/reducing.rs @@ -105,10 +105,16 @@ impl ReducingFactorTarget { F: RichField + Extendable, { let l = terms.len(); + // For small reductions, use an arithmetic gate. if l - 1 <= ArithmeticExtensionGate::::new_from_config(&builder.config).num_ops { - return self.reduce_base_arithmetic(terms, builder); + let terms_ext = terms + .iter() + .map(|&t| builder.convert_to_ext(t)) + .collect::>(); + return self.reduce_arithmetic(&terms_ext, builder); } + let max_coeffs_len = ReducingGate::::max_coeffs_len( builder.config.num_wires, builder.config.num_routed_wires, @@ -144,25 +150,6 @@ impl ReducingFactorTarget { acc } - /// Reduces a vector of `Target`s using `ArithmeticGate`s. - fn reduce_base_arithmetic( - &mut self, - terms: &[Target], - builder: &mut CircuitBuilder, - ) -> ExtensionTarget - where - F: RichField + Extendable, - { - self.count += terms.len() as u64; - terms - .iter() - .rev() - .fold(builder.zero_extension(), |acc, &t| { - let et = builder.convert_to_ext(t); - builder.mul_add_extension(self.base, acc, et) - }) - } - /// Reduces a vector of `ExtensionTarget`s using `ReducingExtensionGate`s. pub fn reduce( &mut self, @@ -173,10 +160,12 @@ impl ReducingFactorTarget { F: RichField + Extendable, { let l = terms.len(); + // For small reductions, use an arithmetic gate. if l - 1 <= ArithmeticExtensionGate::::new_from_config(&builder.config).num_ops { return self.reduce_arithmetic(terms, builder); } + let max_coeffs_len = ReducingExtensionGate::::max_coeffs_len( builder.config.num_wires, builder.config.num_routed_wires,