diff --git a/src/groups/curves/short_weierstrass/mod.rs b/src/groups/curves/short_weierstrass/mod.rs index 9c36b50..d7c29f1 100644 --- a/src/groups/curves/short_weierstrass/mod.rs +++ b/src/groups/curves/short_weierstrass/mod.rs @@ -170,8 +170,9 @@ where } else { let cs = self.cs(); let infinity = self.is_zero()?; - let zero_x = F::zero(); - let zero_y = F::one(); + let zero_affine = SWAffine::
::zero(); + let zero_x = F::new_constant(cs.clone(), &zero_affine.x)?; + let zero_y = F::new_constant(cs.clone(), &zero_affine.y)?; // Allocate a variable whose value is either `self.z.inverse()` if the inverse // exists, and is zero otherwise. let z_inv = F::new_witness(ark_relations::ns!(cs, "z_inverse"), || { @@ -210,6 +211,8 @@ where Ok(ge) => { let ge = ge.into_affine(); if ge.is_zero() { + // These values are convenient since the point satisfies + // curve equation. ( Ok(P::BaseField::zero()), Ok(P::BaseField::one()), @@ -334,10 +337,10 @@ where for bit in affine_bits.iter().skip(1) { if bit.is_constant() { if *bit == &Boolean::TRUE { - accumulator = accumulator.add_unchecked(&multiple_of_power_of_two)?; + accumulator = accumulator.add_unchecked(multiple_of_power_of_two)?; } } else { - let temp = accumulator.add_unchecked(&multiple_of_power_of_two)?; + let temp = accumulator.add_unchecked(multiple_of_power_of_two)?; accumulator = bit.select(&temp, &accumulator)?; } multiple_of_power_of_two.double_in_place()?;