diff --git a/src/field/extension_field/mod.rs b/src/field/extension_field/mod.rs index 6a927b04..7d706237 100644 --- a/src/field/extension_field/mod.rs +++ b/src/field/extension_field/mod.rs @@ -35,7 +35,7 @@ pub trait Frobenius: OEF { } let arr = self.to_basefield_array(); let k = (Self::BaseField::order() - 1u32) / (D as u64); - let z0 = Self::W.exp_biguint(k * count as u64); + let z0 = Self::W.exp_biguint(&(k * count as u64)); let mut res = [Self::BaseField::ZERO; D]; for (i, z) in z0.powers().take(D).enumerate() { res[i] = arr[i] * z; diff --git a/src/field/extension_field/quadratic.rs b/src/field/extension_field/quadratic.rs index 156a71b3..5324ad2a 100644 --- a/src/field/extension_field/quadratic.rs +++ b/src/field/extension_field/quadratic.rs @@ -261,7 +261,7 @@ mod tests { type F = QuadraticCrandallField; let x = F::rand(); assert_eq!( - x.exp_biguint(>::BaseField::order()), + x.exp_biguint(&>::BaseField::order()), x.frobenius() ); } diff --git a/src/field/extension_field/quartic.rs b/src/field/extension_field/quartic.rs index 7de88817..3c463026 100644 --- a/src/field/extension_field/quartic.rs +++ b/src/field/extension_field/quartic.rs @@ -342,7 +342,7 @@ mod tests { const D: usize = 4; let x = F::rand(); assert_eq!( - x.exp_biguint(>::BaseField::order()), + x.exp_biguint(&>::BaseField::order()), x.frobenius() ); for count in 2..D { diff --git a/src/field/extension_field/target.rs b/src/field/extension_field/target.rs index 502ea896..6083e2c4 100644 --- a/src/field/extension_field/target.rs +++ b/src/field/extension_field/target.rs @@ -32,7 +32,7 @@ impl ExtensionTarget { } let arr = self.to_target_array(); let k = (F::order() - 1u32) / (D as u64); - let z0 = F::Extension::W.exp_biguint(k * count as u64); + let z0 = F::Extension::W.exp_biguint(&(k * count as u64)); let zs = z0 .powers() .take(D) diff --git a/src/field/field.rs b/src/field/field.rs index 4075d6d7..da9f94f0 100644 --- a/src/field/field.rs +++ b/src/field/field.rs @@ -220,7 +220,7 @@ pub trait Field: self.exp(power as u64) } - fn exp_biguint(&self, power: BigUint) -> Self { + fn exp_biguint(&self, power: &BigUint) -> Self { let digits = power.to_u32_digits(); let radix = 1u64 << 32; @@ -262,7 +262,7 @@ pub trait Field: let numerator = p.clone() + &p_minus_1 * n; if numerator.clone() % k == BigUint::zero() { let power = (numerator / k) % p_minus_1; - return self.exp_biguint(power); + return self.exp_biguint(&power); } } panic!( diff --git a/src/field/field_testing.rs b/src/field/field_testing.rs index 18e844e8..bbab0bc9 100644 --- a/src/field/field_testing.rs +++ b/src/field/field_testing.rs @@ -242,8 +242,8 @@ macro_rules! test_field_arithmetic { let big_pow = &pow + &mul_group_order * cycles; let big_pow_wrong = &pow + &mul_group_order * cycles + 1u32; - assert_eq!(base.exp_biguint(pow.clone()), base.exp_biguint(big_pow)); - assert_ne!(base.exp_biguint(pow), base.exp_biguint(big_pow_wrong)); + assert_eq!(base.exp_biguint(&pow), base.exp_biguint(&big_pow)); + assert_ne!(base.exp_biguint(&pow), base.exp_biguint(&big_pow_wrong)); } #[test]