Bipoint.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #include "Bipoint.hpp"
  2. Bipoint<curvepoint_fp_t>::Bipoint()
  3. {
  4. curvepoint_fp_setneutral(point[0]);
  5. curvepoint_fp_setneutral(point[1]);
  6. }
  7. Bipoint<twistpoint_fp2_t>::Bipoint()
  8. {
  9. twistpoint_fp2_setneutral(point[0]);
  10. twistpoint_fp2_setneutral(point[1]);
  11. }
  12. Bipoint<curvepoint_fp_t>::Bipoint(curvepoint_fp_t p1, curvepoint_fp_t p2)
  13. {
  14. curvepoint_fp_set(point[0], p1);
  15. curvepoint_fp_set(point[1], p2);
  16. }
  17. Bipoint<twistpoint_fp2_t>::Bipoint(twistpoint_fp2_t p1, twistpoint_fp2_t p2)
  18. {
  19. twistpoint_fp2_set(point[0], p1);
  20. twistpoint_fp2_set(point[1], p2);
  21. }
  22. curvepoint_fp_t& Bipoint<curvepoint_fp_t>::operator[](int n)
  23. {
  24. return point[n];
  25. }
  26. twistpoint_fp2_t& Bipoint<twistpoint_fp2_t>::operator[](int n)
  27. {
  28. return point[n];
  29. }
  30. const curvepoint_fp_t& Bipoint<curvepoint_fp_t>::operator[](int n) const
  31. {
  32. return point[n];
  33. }
  34. const twistpoint_fp2_t& Bipoint<twistpoint_fp2_t>::operator[](int n) const
  35. {
  36. return point[n];
  37. }
  38. Bipoint<curvepoint_fp_t> Bipoint<curvepoint_fp_t>::operator+(const Bipoint<curvepoint_fp_t>& b) const
  39. {
  40. Bipoint<curvepoint_fp_t> retval;
  41. curvepoint_fp_add_vartime(retval[0], point[0], b.point[0]);
  42. curvepoint_fp_add_vartime(retval[1], point[1], b.point[1]);
  43. return retval;
  44. }
  45. Bipoint<twistpoint_fp2_t> Bipoint<twistpoint_fp2_t>::operator+(const Bipoint<twistpoint_fp2_t>& b) const
  46. {
  47. Bipoint<twistpoint_fp2_t> retval;
  48. twistpoint_fp2_add_vartime(retval[0], point[0], b.point[0]);
  49. twistpoint_fp2_add_vartime(retval[1], point[1], b.point[1]);
  50. return retval;
  51. }
  52. Bipoint<curvepoint_fp_t> Bipoint<curvepoint_fp_t>::operator*(const scalar_t& mult) const
  53. {
  54. Bipoint<curvepoint_fp_t> retval;
  55. curvepoint_fp_scalarmult_vartime(retval[0], point[0], mult);
  56. curvepoint_fp_scalarmult_vartime(retval[1], point[1], mult);
  57. return retval;
  58. }
  59. Bipoint<twistpoint_fp2_t> Bipoint<twistpoint_fp2_t>::operator*(const scalar_t& mult) const
  60. {
  61. Bipoint<twistpoint_fp2_t> retval;
  62. twistpoint_fp2_scalarmult_vartime(retval[0], point[0], mult);
  63. twistpoint_fp2_scalarmult_vartime(retval[1], point[1], mult);
  64. return retval;
  65. }
  66. bool Bipoint<curvepoint_fp_t>::operator==(const Bipoint<curvepoint_fp_t>& b) const
  67. {
  68. bool retval = fpe_iseq(point[0]->m_x, b[0]->m_x);
  69. retval &&= fpe_iseq(point[0]->m_y, b[0]->m_y);
  70. retval &&= fpe_iseq(point[0]->m_z, b[0]->m_z);
  71. retval &&= fpe_iseq(point[1]->m_x, b[1]->m_x);
  72. retval &&= fpe_iseq(point[1]->m_y, b[1]->m_y);
  73. retval &&= fpe_iseq(point[1]->m_z, b[1]->m_z);
  74. return retval;
  75. }
  76. bool Bipoint<twistpoint_fp2_t>::operator==(const Bipoint<twistpoint_fp2_t>& b) const
  77. {
  78. bool retval = fp2e_iseq(point[0]->m_x, b[0]->m_x);
  79. retval &&= fp2e_iseq(point[0]->m_y, b[0]->m_y);
  80. retval &&= fp2e_iseq(point[0]->m_z, b[0]->m_z);
  81. retval &&= fp2e_iseq(point[1]->m_x, b[1]->m_x);
  82. retval &&= fp2e_iseq(point[1]->m_y, b[1]->m_y);
  83. retval &&= fp2e_iseq(point[1]->m_z, b[1]->m_z);
  84. return retval;
  85. }
  86. Bipoint<curvepoint_fp_t> Bipoint<curvepoint_fp_t>::multBy2() const
  87. {
  88. Bipoint<curvepoint_fp_t> retval;
  89. curvepoint_fp_double(retval[0], point[0]);
  90. curvepoint_fp_double(retval[1], point[1]);
  91. return retval;
  92. }
  93. Bipoint<twistpoint_fp2_t> Bipoint<twistpoint_fp2_t>::multBy2() const
  94. {
  95. Bipoint<twistpoint_fp2_t> retval;
  96. twistpoint_fp2_double(retval[0], point[0]);
  97. twistpoint_fp2_double(retval[1], point[1]);
  98. return retval;
  99. }