Browse Source

fixing operator==()

tristangurtler 3 years ago
parent
commit
1d54ce781a
1 changed files with 19 additions and 33 deletions
  1. 19 33
      bgn2/src/Bipoint.cpp

+ 19 - 33
bgn2/src/Bipoint.cpp

@@ -86,48 +86,34 @@ TwistBipoint TwistBipoint::operator*(const Scalar& exp) const
 
 bool CurveBipoint::operator==(const CurveBipoint& b) const
 {
-	curvepoint_fp_t affine_point0, affine_point1, affine_b0, affine_b1;
-
-	curvepoint_fp_set(affine_point0, point[0]);
-	curvepoint_fp_set(affine_point1, point[1]);
-	curvepoint_fp_set(affine_b0, b[0]);
-	curvepoint_fp_set(affine_b1, b[1]);
-
-	curvepoint_fp_makeaffine(affine_point0);
-	curvepoint_fp_makeaffine(affine_point1);
-	curvepoint_fp_makeaffine(affine_b0);
-	curvepoint_fp_makeaffine(affine_b1);
+	CurveBipoint affine_this = *this;
+	CurveBipoint affine_b = b;
+	affine_this.make_affine();
+	affine_b.make_affine();
 
 	bool retval;
 
-	retval =           fpe_iseq(affine_point0->m_x, affine_b0->m_x);
-	retval = retval && fpe_iseq(affine_point0->m_y, affine_b0->m_y); 
-	retval = retval && fpe_iseq(affine_point1->m_x, affine_b1->m_x);
-	retval = retval && fpe_iseq(affine_point1->m_y, affine_b1->m_y);
+	retval =           fpe_iseq(affine_this[0]->m_x, affine_b[0]->m_x);
+	retval = retval && fpe_iseq(affine_this[0]->m_y, affine_b[0]->m_y); 
+	retval = retval && fpe_iseq(affine_this[1]->m_x, affine_b[1]->m_x);
+	retval = retval && fpe_iseq(affine_this[1]->m_y, affine_b[1]->m_y);
 
 	return retval;
 }
 
 bool TwistBipoint::operator==(const TwistBipoint& b) const
 {
-	twistpoint_fp2_t affine_point0, affine_point1, affine_b0, affine_b1;
-
-	twistpoint_fp2_set(affine_point0, point[0]);
-	twistpoint_fp2_set(affine_point1, point[1]);
-	twistpoint_fp2_set(affine_b0, b[0]);
-	twistpoint_fp2_set(affine_b1, b[1]);
-
-	twistpoint_fp2_makeaffine(affine_point0);
-	twistpoint_fp2_makeaffine(affine_point1);
-	twistpoint_fp2_makeaffine(affine_b0);
-	twistpoint_fp2_makeaffine(affine_b1);
+	TwistBipoint affine_this = *this;
+	TwistBipoint affine_b = b;
+	affine_this.make_affine();
+	affine_b.make_affine();
 
 	bool retval;
 
-	retval =           fp2e_iseq(affine_point0->m_x, affine_b0->m_x);
-	retval = retval && fp2e_iseq(affine_point0->m_y, affine_b0->m_y); 
-	retval = retval && fp2e_iseq(affine_point1->m_x, affine_b1->m_x);
-	retval = retval && fp2e_iseq(affine_point1->m_y, affine_b1->m_y);
+	retval =           fp2e_iseq(affine_this[0]->m_x, affine_b[0]->m_x);
+	retval = retval && fp2e_iseq(affine_this[0]->m_y, affine_b[0]->m_y); 
+	retval = retval && fp2e_iseq(affine_this[1]->m_x, affine_b[1]->m_x);
+	retval = retval && fp2e_iseq(affine_this[1]->m_y, affine_b[1]->m_y);
 
 	return retval;
 }
@@ -164,15 +150,15 @@ TwistBipoint TwistBipoint::mult_by_2() const
 
 void CurveBipoint::make_affine()
 {
-	if (!(fpe_isone(point[0]->m_z)))
+	if (!(fpe_isone(point[0]->m_z) || fpe_iszero(point[0]->m_z)))
 		curvepoint_fp_makeaffine(point[0]);
-	if (!(fpe_isone(point[1]->m_z)))
+	if (!(fpe_isone(point[1]->m_z) || fpe_iszero(point[0]->m_z)))
 		curvepoint_fp_makeaffine(point[1]);
 }
 
 void TwistBipoint::make_affine()
 {
-	if (!(fp2e_isone(point[0]->m_z)))
+	if (!(fp2e_isone(point[0]->m_z) || ))
 		twistpoint_fp2_makeaffine(point[0]);
 	if (!(fp2e_isone(point[1]->m_z)))
 		twistpoint_fp2_makeaffine(point[1]);