42 approximate_square_root = y;
71 if ((a1 == 0) && (out < approximate_square_root)) {
76 }
else if ((a1 > 0) && (++i == 2)) {
113 basis_vectors result;
115 result.endo_g1_mid =
g1.lo.data[1];
116 result.endo_g1_hi =
g1.lo.data[2];
117 result.endo_g2_lo =
g2.lo.data[0];
118 result.endo_g2_mid =
g2.lo.data[1];
119 result.endo_g2_hi =
g2.lo.data[2];
120 result.endo_minus_b1_lo = minus_b1.lo.data[0];
121 result.endo_minus_b1_mid = minus_b1.lo.data[1];
122 result.endo_b2_lo = b2.lo.data[0];
123 result.endo_b2_mid = b2.lo.data[1];
124 result.endo_a1_lo = a1.
lo.
data[0];
125 result.endo_a1_mid = a1.
lo.
data[1];
126 result.endo_a1_hi = a1.
lo.
data[2];
127 result.endo_a2_lo = a2.
lo.
data[0];
128 result.endo_a2_mid = a2.
lo.
data[1];
129 result.endo_a2_hi = a2.
lo.
data[2];
155 if (P * lambda == endoP) {
156 return { beta, lambda };
159 if ((P * lambda) == endoP) {
160 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
static constexpr field cube_root_of_unity()
static constexpr uint256_t modulus
uint64_t endo_minus_b1_mid
uint64_t endo_minus_b1_lo