diff --git a/src/domain.rs b/src/domain.rs index a1e4a4c..6e8a6a7 100644 --- a/src/domain.rs +++ b/src/domain.rs @@ -63,7 +63,7 @@ impl> EvaluationDomain { // Compute omega, the 2^exp primitive root of unity let mut omega = E::Fr::root_of_unity(); for _ in exp..E::Fr::S { - omega.square(); + omega = omega.square(); } // Extend the coeffs vector with zeroes if necessary diff --git a/src/gadgets/num.rs b/src/gadgets/num.rs index 08a175b..65bee25 100644 --- a/src/gadgets/num.rs +++ b/src/gadgets/num.rs @@ -254,8 +254,7 @@ impl AllocatedNum { let var = cs.alloc( || "squared num", || { - let mut tmp = *self.value.get()?; - tmp.square(); + let tmp = self.value.get()?.square(); value = Some(tmp); diff --git a/src/groth16/tests/dummy_engine.rs b/src/groth16/tests/dummy_engine.rs index 9a87756..c71df0d 100644 --- a/src/groth16/tests/dummy_engine.rs +++ b/src/groth16/tests/dummy_engine.rs @@ -140,8 +140,8 @@ impl Field for Fr { (self.0).0 == 0 } - fn square(&mut self) { - self.0 = (self.0 * self.0) % MODULUS_R; + fn square(&self) -> Self { + Fr((self.0 * self.0) % MODULUS_R) } fn double(&self) -> Self { @@ -191,22 +191,21 @@ impl SqrtField for Fr { while t != ::one() { let mut i = 1; { - let mut t2i = t; - t2i.square(); + let mut t2i = t.square(); loop { if t2i == ::one() { break; } - t2i.square(); + t2i = t2i.square(); i += 1; } } for _ in 0..(m - i - 1) { - c.square(); + c = c.square(); } MulAssign::mul_assign(&mut r, &c); - c.square(); + c = c.square(); MulAssign::mul_assign(&mut t, &c); m = i; } diff --git a/tests/mimc.rs b/tests/mimc.rs index 0792af5..a1de0f1 100644 --- a/tests/mimc.rs +++ b/tests/mimc.rs @@ -41,8 +41,7 @@ fn mimc(mut xl: E::Fr, mut xr: E::Fr, constants: &[E::Fr]) -> E::Fr { for i in 0..MIMC_ROUNDS { let mut tmp1 = xl; tmp1.add_assign(&constants[i]); - let mut tmp2 = tmp1; - tmp2.square(); + let mut tmp2 = tmp1.square(); tmp2.mul_assign(&tmp1); tmp2.add_assign(&xr); xr = xl; @@ -88,8 +87,7 @@ impl<'a, E: Engine> Circuit for MiMCDemo<'a, E> { // tmp = (xL + Ci)^2 let tmp_value = xl_value.map(|mut e| { e.add_assign(&self.constants[i]); - e.square(); - e + e.square() }); let tmp = cs.alloc( || "tmp",