Skip to content

Commit 400deb6

Browse files
authored
feat: implement Neg for AffinePoint (#546)
1 parent 6ebaa9b commit 400deb6

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

starknet-curve/src/ec_point.rs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,18 @@ impl ops::AddAssign<&AffinePoint> for AffinePoint {
104104
}
105105
}
106106

107+
impl ops::Neg for &AffinePoint {
108+
type Output = AffinePoint;
109+
110+
fn neg(self) -> AffinePoint {
111+
AffinePoint {
112+
x: self.x,
113+
y: -self.y,
114+
infinity: self.infinity,
115+
}
116+
}
117+
}
118+
107119
impl ops::Sub<&AffinePoint> for &AffinePoint {
108120
type Output = AffinePoint;
109121

@@ -116,11 +128,7 @@ impl ops::Sub<&AffinePoint> for &AffinePoint {
116128

117129
impl ops::SubAssign<&AffinePoint> for AffinePoint {
118130
fn sub_assign(&mut self, rhs: &AffinePoint) {
119-
*self += &AffinePoint {
120-
x: rhs.x,
121-
y: -rhs.y,
122-
infinity: rhs.infinity,
123-
};
131+
*self += &-rhs;
124132
}
125133
}
126134

@@ -195,10 +203,7 @@ impl ops::AddAssign<&AffinePoint> for ProjectivePoint {
195203
return;
196204
}
197205
if self.infinity {
198-
self.x = rhs.x;
199-
self.y = rhs.y;
200-
self.z = FieldElement::ONE;
201-
self.infinity = rhs.infinity;
206+
*self = Self::from_affine_point(rhs);
202207
return;
203208
}
204209
let u0 = self.x;
@@ -208,11 +213,10 @@ impl ops::AddAssign<&AffinePoint> for ProjectivePoint {
208213
if u0 == u1 {
209214
if t0 != t1 {
210215
self.infinity = true;
211-
return;
212216
} else {
213217
self.double_assign();
214-
return;
215218
}
219+
return;
216220
}
217221

218222
let t = t0 - t1;

0 commit comments

Comments
 (0)