#include "Quadripoint.hpp" Quadripoint::Quadripoint() { 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) { fp12e_set(point[0], p1); fp12e_set(point[1], p2); fp12e_set(point[2], p3); fp12e_set(point[3], p4); } fp12e_t& Quadripoint::operator[](int n) { return point[n]; } const fp12e_t& Quadripoint::operator[](int n) const { return point[n]; } Quadripoint Quadripoint::operator+(const Quadripoint& b) const { Quadripoint retval; fp12e_mul(retval[0], point[0], b.point[0]); fp12e_mul(retval[1], point[1], b.point[1]); fp12e_mul(retval[2], point[2], b.point[2]); fp12e_mul(retval[3], point[3], b.point[3]); return retval; } Quadripoint Quadripoint::operator*(const Scalar& exp) const { Quadripoint retval; retval[0] = exp * point[0]; retval[1] = exp * point[1]; retval[2] = exp * point[2]; retval[3] = exp * point[3]; return retval; } bool Quadripoint::operator==(const Quadripoint& b) const { bool retval = fp12e_iseq(point[0], b[0]); retval &&= fp12e_iseq(point[1], b[1]); retval &&= fp12e_iseq(point[2], b[2]); retval &&= fp12e_iseq(point[3], b[3]); return retval; } bool Quadripoint::operator!=(const Quadripoint& b) const { return !(*this == b); } Quadripoint Quadripoint::square() const { Quadripoint retval; fp12e_square(retval[0], point[0]); fp12e_square(retval[1], point[1]); fp12e_square(retval[2], point[2]); fp12e_square(retval[3], point[3]); return retval; }