Browse Source

bug in underlying library handling multiplication by scalar 0

tristangurtler 3 years ago
parent
commit
e2624e7fe9
1 changed files with 17 additions and 9 deletions
  1. 17 9
      bgn2/src/Quadripoint.cpp

+ 17 - 9
bgn2/src/Quadripoint.cpp

@@ -2,10 +2,10 @@
 
 Quadripoint::Quadripoint()
 {
-	fp12e_setzero(point[0]);
-	fp12e_setzero(point[1]);
-	fp12e_setzero(point[2]);
-	fp12e_setzero(point[3]);	
+	fp12e_setone(point[0]);
+	fp12e_setone(point[1]);
+	fp12e_setone(point[2]);
+	fp12e_setone(point[3]);	
 }
 
 Quadripoint::Quadripoint(const fp12e_t& p1, const fp12e_t& p2, const fp12e_t& p3, const fp12e_t& p4)
@@ -56,11 +56,19 @@ Quadripoint Quadripoint::operator+(const Quadripoint& b) const
 Quadripoint Quadripoint::operator*(const Scalar& exp) const
 {
 	Quadripoint retval;
-	
-	exp.mult(retval[0], point[0]);
-	exp.mult(retval[1], point[1]);
-	exp.mult(retval[2], point[2]);
-	exp.mult(retval[3], point[3]);
+
+	if (exp == Scalar(0))
+	{
+		fp12e_setone(retval[0]);
+		fp12e_setone(retval[1]);
+		fp12e_setone(retval[2]);
+		fp12e_setone(retval[3]);
+	} else {
+		exp.mult(retval[0], point[0]);
+		exp.mult(retval[1], point[1]);
+		exp.mult(retval[2], point[2]);
+		exp.mult(retval[3], point[3]);
+	}
 
 	return retval;	
 }