diff --git a/src/field/extension_field/target.rs b/src/field/extension_field/target.rs index c5e9f9ab..712c6103 100644 --- a/src/field/extension_field/target.rs +++ b/src/field/extension_field/target.rs @@ -171,25 +171,6 @@ impl, const D: usize> CircuitBuilder { self.mul_extension_with_const(F::ONE, multiplicand_0, multiplicand_1) } - pub fn mul_extension_naive( - &mut self, - a: ExtensionTarget, - b: ExtensionTarget, - ) -> ExtensionTarget { - let mut res = [self.zero(); D]; - for i in 0..D { - for j in 0..D { - res[(i + j) % D] = if i + j < D { - self.mul_add(a.0[i], b.0[j], res[(i + j) % D]) - } else { - // W * a[i] * b[i] + res[(i + j) % D] - self.arithmetic(F::Extension::W, a.0[i], b.0[i], F::ONE, res[(i + j) % D]) - } - } - } - ExtensionTarget(res) - } - pub fn mul_ext_algebra( &mut self, a: ExtensionAlgebraTarget, @@ -199,7 +180,7 @@ impl, const D: usize> CircuitBuilder { let w = self.constant(F::Extension::W); for i in 0..D { for j in 0..D { - let ai_bi = self.mul_extension_naive(a.0[i], b.0[j]); + let ai_bi = self.mul_extension(a.0[i], b.0[j]); res[(i + j) % D] = if i + j < D { self.add_extension(ai_bi, res[(i + j) % D]) } else { @@ -247,7 +228,7 @@ impl, const D: usize> CircuitBuilder { mut b: ExtensionAlgebraTarget, ) -> ExtensionAlgebraTarget { for i in 0..D { - b.0[i] = self.mul_extension_naive(a, b.0[i]); + b.0[i] = self.mul_extension(a, b.0[i]); } b } diff --git a/src/fri/recursive_verifier.rs b/src/fri/recursive_verifier.rs index d990977d..3dbba68e 100644 --- a/src/fri/recursive_verifier.rs +++ b/src/fri/recursive_verifier.rs @@ -194,7 +194,7 @@ impl, const D: usize> CircuitBuilder { } let g = self.constant_extension(F::Extension::primitive_root_of_unity(degree_log)); - let zeta_right = self.mul_extension_naive(g, zeta); + let zeta_right = self.mul_extension(g, zeta); let mut ev_zeta = self.zero_extension(); for &t in &os.plonk_zs { let a = alpha_powers.next(self); @@ -210,7 +210,7 @@ impl, const D: usize> CircuitBuilder { let numerator = self.sub_extension(ev, interpol_val); let vanish = self.sub_extension(subgroup_x, zeta); let vanish_right = self.sub_extension(subgroup_x, zeta_right); - let denominator = self.mul_extension_naive(vanish, vanish_right); + let denominator = self.mul_extension(vanish, vanish_right); let quotient = self.div_unsafe_extension(numerator, denominator); let sum = self.add_extension(sum, quotient); @@ -244,7 +244,7 @@ impl, const D: usize> CircuitBuilder { let interpol_val = wires_interpol.eval(self, subgroup_x); let numerator = self.sub_extension(ev, interpol_val); let vanish_frob = self.sub_extension(subgroup_x, zeta_frob); - let denominator = self.mul_extension_naive(vanish, vanish_frob); + let denominator = self.mul_extension(vanish, vanish_frob); let quotient = self.div_unsafe_extension(numerator, denominator); let sum = self.add_extension(sum, quotient); diff --git a/src/gadgets/arithmetic.rs b/src/gadgets/arithmetic.rs index 6767c70d..2ea7c882 100644 --- a/src/gadgets/arithmetic.rs +++ b/src/gadgets/arithmetic.rs @@ -335,7 +335,7 @@ impl PowersTarget { builder: &mut CircuitBuilder, ) -> ExtensionTarget { let result = self.current; - self.current = builder.mul_extension_naive(self.base, self.current); + self.current = builder.mul_extension(self.base, self.current); result } } diff --git a/src/gadgets/polynomial.rs b/src/gadgets/polynomial.rs index 9ccfc6a8..543be834 100644 --- a/src/gadgets/polynomial.rs +++ b/src/gadgets/polynomial.rs @@ -26,7 +26,7 @@ impl PolynomialCoeffsExtTarget { ) -> ExtensionTarget { let mut acc = builder.zero_extension(); for &c in self.0.iter().rev() { - let tmp = builder.mul_extension_naive(point, acc); + let tmp = builder.mul_extension(point, acc); acc = builder.add_extension(tmp, c); } acc diff --git a/src/gates/arithmetic.rs b/src/gates/arithmetic.rs index 8208f0f8..0d0fdd7c 100644 --- a/src/gates/arithmetic.rs +++ b/src/gates/arithmetic.rs @@ -57,7 +57,7 @@ impl, const D: usize> Gate for ArithmeticGate { let output = vars.local_wires[Self::WIRE_OUTPUT]; let product_term = builder.mul_many_extension(&[const_0, multiplicand_0, multiplicand_1]); - let addend_term = builder.mul_extension_naive(const_1, addend); + let addend_term = builder.mul_extension(const_1, addend); let computed_output = builder.add_many_extension(&[product_term, addend_term]); vec![builder.sub_extension(computed_output, output)] } diff --git a/src/gates/base_sum.rs b/src/gates/base_sum.rs index fe9068e0..ef69b802 100644 --- a/src/gates/base_sum.rs +++ b/src/gates/base_sum.rs @@ -79,7 +79,7 @@ impl, const D: usize, const B: usize> Gate for BaseSumGat (0..B).for_each(|i| { let it = builder.constant_extension(F::from_canonical_usize(i).into()); let diff = builder.sub_extension(limb, it); - acc = builder.mul_extension_naive(acc, diff); + acc = builder.mul_extension(acc, diff); }); acc }); diff --git a/src/gates/gmimc.rs b/src/gates/gmimc.rs index 7c75951d..19042d57 100644 --- a/src/gates/gmimc.rs +++ b/src/gates/gmimc.rs @@ -131,7 +131,7 @@ impl, const D: usize, const R: usize> Gate for GMiMCGate< let swap = vars.local_wires[Self::WIRE_SWAP]; let one_ext = builder.one_extension(); let not_swap = builder.sub_extension(swap, one_ext); - constraints.push(builder.mul_extension_naive(swap, not_swap)); + constraints.push(builder.mul_extension(swap, not_swap)); let old_index_acc = vars.local_wires[Self::WIRE_INDEX_ACCUMULATOR_OLD]; let new_index_acc = vars.local_wires[Self::WIRE_INDEX_ACCUMULATOR_NEW]; @@ -168,8 +168,8 @@ impl, const D: usize, const R: usize> Gate for GMiMCGate< let constant = builder.constant_extension(self.constants[r].into()); let cubing_input = builder.add_many_extension(&[state[active], addition_buffer, constant]); - let square = builder.mul_extension_naive(cubing_input, cubing_input); - let f = builder.mul_extension_naive(square, cubing_input); + let square = builder.mul_extension(cubing_input, cubing_input); + let f = builder.mul_extension(square, cubing_input); addition_buffer = builder.add_extension(addition_buffer, f); state[active] = builder.sub_extension(state[active], f); }