Merge branch 'master' of git+ssh://metalzone.distorted.org.uk/~mdw/public-git/catacomb/
[u/mdw/catacomb] / ec-prime.c
index c146931..dc299fb 100644 (file)
@@ -68,10 +68,8 @@ static ec *ecfind(ec_curve *c, ec *d, mp *x)
 
 static ec *ecdbl(ec_curve *c, ec *d, const ec *a)
 {
-  if (EC_ATINF(a))
+  if (EC_ATINF(a) || F_ZEROP(c->f, a->y))
     EC_SETINF(d);
-  else if (F_ZEROP(c->f, a->y))
-    EC_COPY(d, a);
   else {
     field *f = c->f;
     mp *lambda;
@@ -102,10 +100,8 @@ static ec *ecdbl(ec_curve *c, ec *d, const ec *a)
 
 static ec *ecprojdbl(ec_curve *c, ec *d, const ec *a)
 {
-  if (EC_ATINF(a))
+  if (EC_ATINF(a) || F_ZEROP(c->f, a->y))
     EC_SETINF(d);
-  else if (F_ZEROP(c->f, a->y))
-    EC_COPY(d, a);
   else {
     field *f = c->f;
     mp *p, *q, *m, *s, *dx, *dy, *dz;
@@ -146,10 +142,8 @@ static ec *ecprojdbl(ec_curve *c, ec *d, const ec *a)
 
 static ec *ecprojxdbl(ec_curve *c, ec *d, const ec *a)
 {
-  if (EC_ATINF(a))
+  if (EC_ATINF(a) || F_ZEROP(c->f, a->y))
     EC_SETINF(d);
-  else if (F_ZEROP(c->f, a->y))
-    EC_COPY(d, a);
   else {
     field *f = c->f;
     mp *p, *q, *m, *s, *dx, *dy, *dz;