diff --git a/src/gadgets/arithmetic_extension.rs b/src/gadgets/arithmetic_extension.rs index 7dcd88cd..77e0a2c0 100644 --- a/src/gadgets/arithmetic_extension.rs +++ b/src/gadgets/arithmetic_extension.rs @@ -230,8 +230,7 @@ impl, const D: usize> CircuitBuilder { product } - /// Like `mul_add`, but for `ExtensionTarget`s. Note that, unlike `mul_add`, this has no - /// performance benefit over separate muls and adds. + /// Like `mul_add`, but for `ExtensionTarget`s. pub fn mul_add_extension( &mut self, a: ExtensionTarget, @@ -385,12 +384,7 @@ impl, const D: usize> SimpleGenerator for QuotientGeneratorE let dem = witness.get_extension_target(self.denominator); let quotient = num / dem; let mut pw = PartialWitness::new(); - for i in 0..D { - pw.set_target( - self.quotient.to_target_array()[i], - quotient.to_basefield_array()[i], - ); - } + pw.set_extension_target(self.quotient, quotient); pw } diff --git a/src/gates/arithmetic.rs b/src/gates/arithmetic.rs index 31ae5caa..5be18085 100644 --- a/src/gates/arithmetic.rs +++ b/src/gates/arithmetic.rs @@ -61,7 +61,7 @@ impl, const D: usize> Gate for ArithmeticExtensionGate let computed_output_0 = fixed_multiplicand * multiplicand_0 * const_0.into() + addend_0 * const_1.into(); let computed_output_1 = - fixed_multiplicand * multiplicand_1 * const_1.into() + addend_1 * const_1.into(); + fixed_multiplicand * multiplicand_1 * const_0.into() + addend_1 * const_1.into(); let mut constraints = (output_0 - computed_output_0).to_basefield_array().to_vec(); constraints.extend((output_1 - computed_output_1).to_basefield_array()); @@ -115,7 +115,7 @@ impl, const D: usize> Gate for ArithmeticExtensionGate } fn num_wires(&self) -> usize { - 28 + 7 * D } fn num_constants(&self) -> usize {