44 approximate_square_root = y;
73 if ((a1 == 0) && (out < approximate_square_root)) {
78 }
else if ((a1 > 0) && (++i == 2)) {
115 basis_vectors result;
117 result.endo_g1_mid =
g1.lo.data[1];
118 result.endo_g1_hi =
g1.lo.data[2];
119 result.endo_g1_hihi =
g1.lo.data[3];
120 result.endo_g2_lo =
g2.lo.data[0];
121 result.endo_g2_mid =
g2.lo.data[1];
122 result.endo_g2_hi =
g2.lo.data[2];
123 result.endo_g2_hihi =
g2.lo.data[3];
124 result.endo_minus_b1_lo = minus_b1.lo.data[0];
125 result.endo_minus_b1_mid = minus_b1.lo.data[1];
126 result.endo_b2_lo = b2.lo.data[0];
127 result.endo_b2_mid = b2.lo.data[1];
128 result.endo_a1_lo = a1.
lo.
data[0];
129 result.endo_a1_mid = a1.
lo.
data[1];
130 result.endo_a1_hi = a1.
lo.
data[2];
131 result.endo_a2_lo = a2.
lo.
data[0];
132 result.endo_a2_mid = a2.
lo.
data[1];
133 result.endo_a2_hi = a2.
lo.
data[2];
159 if (P * lambda == endoP) {
160 return { beta, lambda };
163 if ((P * lambda) == endoP) {
164 return { beta * beta, lambda };
static constexpr element one
group_elements::element< Fq, Fr, Params > element
constexpr uint64_t get_msb() const
uintx< uint256_t > uint512_t
group< fq, fr, G1Params > g1
group< fq2, fr, Bn254G2Params > g2
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
General class for prime fields see Prime field documentation["field documentation"] for general imple...
static constexpr field cube_root_of_unity()
static constexpr uint256_t modulus
uint64_t endo_minus_b1_mid
uint64_t endo_minus_b1_lo