9#include "../../fields/field.hpp"
10#include "../../groups/group.hpp"
11#include "../types.hpp"
21 static constexpr uint64_t
modulus_0 = 0xFFFFFFFEFFFFFC2FULL;
22 static constexpr uint64_t
modulus_1 = 0xFFFFFFFFFFFFFFFFULL;
23 static constexpr uint64_t
modulus_2 = 0xFFFFFFFFFFFFFFFFULL;
24 static constexpr uint64_t
modulus_3 = 0xFFFFFFFFFFFFFFFFULL;
34 0x300000b73ULL, 0x400000f44ULL, 0x500001315ULL, 0x6000016e6ULL,
35 0x700001ab7ULL, 0x800001e88ULL, 0x900002259ULL, 0xa0000262aULL,
38 0, 0, 0, 0, 0, 0, 0, 0,
41 0, 0, 0, 0, 0, 0, 0, 0,
44 0, 0, 0, 0, 0, 0, 0, 0,
51 static constexpr uint64_t
r_inv = 15580212934572586289ULL;
57 static constexpr uint64_t
r_inv_0 = 0xffffffff27c7f3a9UL;
58 static constexpr uint64_t
r_inv_1 = 0xffffffffffffffffUL;
59 static constexpr uint64_t
r_inv_2 = 0xffffffffffffffffUL;
60 static constexpr uint64_t
r_inv_3 = 0xd838091dd2253530UL;
77 static constexpr uint64_t
cube_root_0 = 0x58a4361c8e81894eULL;
78 static constexpr uint64_t
cube_root_1 = 0x03fde1631c4b80afULL;
79 static constexpr uint64_t
cube_root_2 = 0xf8e98978d02e3905ULL;
80 static constexpr uint64_t
cube_root_3 = 0x7a4a36aebcbb3d53ULL;
123 0x000000a0000262a0ULL, 0x000000c00002dcc0ULL,
124 0x000000e0000356e0ULL, 0x000001000003d100ULL,
125 0x0000012000044b20ULL, 0x000001400004c540ULL };
127 0x0000000000000000ULL, 0x0000000000000000ULL,
128 0x0000000000000000ULL, 0x0000000000000000ULL,
129 0x0000000000000000ULL, 0x0000000000000000ULL };
131 0x0000000000000000ULL, 0x0000000000000000ULL,
132 0x0000000000000000ULL, 0x0000000000000000ULL,
133 0x0000000000000000ULL, 0x0000000000000000ULL };
135 0x0000000000000000ULL, 0x0000000000000000ULL,
136 0x0000000000000000ULL, 0x0000000000000000ULL,
137 0x0000000000000000ULL, 0x0000000000000000ULL };
148 static constexpr uint64_t
modulus_0 = 0xBFD25E8CD0364141ULL;
149 static constexpr uint64_t
modulus_1 = 0xBAAEDCE6AF48A03BULL;
150 static constexpr uint64_t
modulus_2 = 0xFFFFFFFFFFFFFFFEULL;
151 static constexpr uint64_t
modulus_3 = 0xFFFFFFFFFFFFFFFFULL;
163 static constexpr uint64_t
r_inv = 5408259542528602431ULL;
169 static constexpr uint64_t
r_inv_0 = 0x9d4ad302583de6dcUL;
170 static constexpr uint64_t
r_inv_1 = 0xa09f710af0155525UL;
171 static constexpr uint64_t
r_inv_2 = 0xffffffffffffffffUL;
172 static constexpr uint64_t
r_inv_3 = 0x4b0dff665588b13eUL;
191 0x40e4273feef0b9bbULL, 0x8111c8b31eba787aULL, 0xc13f6a264e843739ULL, 0x16d0b997e4df5f8ULL,
192 0x419aad0cae17b4b7ULL, 0x81c84e7fdde17376ULL, 0xc1f5eff30dab3235ULL, 0x22391663d74f0f4ULL,
195 0x5a95af7e9394ded5ULL, 0x9fe6d297e44c3e99ULL, 0xe537f5b135039e5dULL, 0x2a8918ca85bafe22ULL,
196 0x6fda3be3d6725de6ULL, 0xb52b5efd2729bdaaULL, 0xfa7c821677e11d6eULL, 0x3fcda52fc8987d33ULL,
199 0x6ULL, 0x7ULL, 0x8ULL, 0xaULL, 0xbULL, 0xcULL, 0xdULL, 0xfULL,
202 0, 0, 0, 0, 0, 0, 0, 0,
215 static constexpr uint64_t
endo_b2_lo = 0xe86c90e49284eb15ULL;
218 static constexpr uint64_t
endo_g1_lo = 0xE893209A45DBB031ULL;
220 static constexpr uint64_t
endo_g1_hi = 0xE86C90E49284EB15ULL;
223 static constexpr uint64_t
endo_g2_lo = 0x1571B4AE8AC47F71ULL;
225 static constexpr uint64_t
endo_g2_hi = 0x6F547FA90ABFE4C4ULL;
269 0x27ed44c9d086e720ULL, 0x2da1732fc9bebf00ULL,
270 0x3355a195c2f696e0ULL, 0x3909cffbbc2e6ec0ULL,
271 0x3ebdfe61b56646a0ULL, 0x44722cc7ae9e1e80ULL };
273 0xa6feb626a073cbb8ULL, 0x51231950b75fc440ULL,
274 0xfb477c7ace4bbcc8ULL, 0xa56bdfa4e537b550ULL,
275 0x4f9042cefc23add8ULL, 0xf9b4a5f9130fa660ULL };
277 0x000000000000011cULL, 0x0000000000000145ULL,
278 0x000000000000016dULL, 0x0000000000000196ULL,
279 0x00000000000001bfULL, 0x00000000000001e7ULL };
281 0x0000000000000000ULL, 0x0000000000000000ULL,
282 0x0000000000000000ULL, 0x0000000000000000ULL,
283 0x0000000000000000ULL, 0x0000000000000000ULL };
295 static constexpr bool has_a =
false;
301 fq(0x59F2815B16F81798UL, 0x029BFCDB2DCE28D9UL, 0x55A06295CE870B07UL, 0x79BE667EF9DCBBACUL).
to_montgomery_form();
303 fq(0x9C47D08FFB10D4B8UL, 0xFD17B448A6855419UL, 0x5DA4FBFC0E1108A8UL, 0x483ADA7726A3C465UL).
to_montgomery_form();
typename Group::element Element
typename Group::affine_element AffineElement
group class. Represents an elliptic curve group element. Group is parametrised by Fq and Fr
group_elements::affine_element< Fq, Fr, Params > affine_element
group_elements::element< Fq, Fr, Params > element
group< fq, fr, G1Params > g1
General class for prime fields see Prime field documentation["field documentation"] for general imple...
BB_INLINE constexpr field to_montgomery_form() const noexcept
static constexpr uint64_t primitive_root_wasm_0
static constexpr uint64_t coset_generators_1[8]
static constexpr uint64_t primitive_root_2
static constexpr uint64_t modulus_wasm_4
static constexpr uint64_t r_inv_3
static constexpr uint64_t primitive_root_3
static constexpr uint64_t modulus_wasm_8
static constexpr uint64_t r_inv_0
static constexpr uint64_t modulus_wasm_0
static constexpr uint64_t r_squared_2
static constexpr uint64_t r_inv
static constexpr uint64_t modulus_wasm_7
static constexpr uint64_t modulus_wasm_2
static constexpr uint64_t r_inv_wasm_4
static constexpr uint64_t r_squared_wasm_1
static constexpr uint64_t r_inv_wasm_1
static constexpr uint64_t cube_root_wasm_0
static constexpr uint64_t r_squared_wasm_0
static constexpr uint64_t r_squared_3
static constexpr uint64_t primitive_root_wasm_1
static constexpr uint64_t modulus_0
static constexpr uint64_t modulus_wasm_5
static constexpr uint64_t cube_root_0
static constexpr uint64_t modulus_1
static constexpr uint64_t r_inv_wasm_5
static constexpr uint64_t coset_generators_wasm_2[8]
static constexpr uint64_t cube_root_wasm_3
static constexpr uint64_t coset_generators_2[8]
static constexpr uint64_t r_inv_wasm_8
static constexpr uint64_t r_squared_1
static constexpr uint64_t primitive_root_wasm_3
static constexpr uint64_t r_squared_wasm_2
static constexpr uint64_t primitive_root_1
static constexpr uint64_t r_squared_wasm_3
static constexpr uint64_t modulus_2
static constexpr uint64_t r_inv_1
static constexpr uint64_t coset_generators_wasm_3[8]
static constexpr uint64_t r_inv_wasm_7
static constexpr uint64_t coset_generators_3[8]
static constexpr uint64_t r_squared_0
static constexpr uint64_t r_inv_wasm_3
static constexpr uint64_t primitive_root_wasm_2
static constexpr uint64_t primitive_root_0
static constexpr uint64_t modulus_wasm_1
static constexpr uint64_t r_inv_wasm_0
static constexpr uint64_t coset_generators_wasm_0[8]
static constexpr uint64_t cube_root_2
static constexpr uint64_t cube_root_wasm_1
static constexpr size_t PUBLIC_INPUTS_SIZE
static constexpr uint64_t coset_generators_0[8]
static constexpr uint64_t cube_root_wasm_2
static constexpr uint64_t modulus_wasm_6
static constexpr uint64_t cube_root_1
static constexpr uint64_t coset_generators_wasm_1[8]
static constexpr uint64_t modulus_wasm_3
static constexpr uint64_t r_inv_wasm_2
static constexpr uint64_t r_inv_wasm_6
static constexpr uint64_t r_inv_2
static constexpr uint64_t cube_root_3
static constexpr uint64_t modulus_3
static constexpr uint64_t r_squared_3
static constexpr uint64_t r_inv_wasm_5
static constexpr uint64_t cube_root_wasm_0
static constexpr uint64_t modulus_wasm_5
static constexpr uint64_t coset_generators_1[8]
static constexpr uint64_t endo_g1_hi
static constexpr uint64_t modulus_wasm_7
static constexpr uint64_t r_inv
static constexpr uint64_t modulus_wasm_6
static constexpr uint64_t modulus_wasm_1
static constexpr uint64_t modulus_0
static constexpr uint64_t r_squared_wasm_3
static constexpr uint64_t endo_g1_mid
static constexpr uint64_t primitive_root_wasm_3
static constexpr uint64_t primitive_root_2
static constexpr uint64_t endo_minus_b1_lo
static constexpr uint64_t r_inv_1
static constexpr uint64_t endo_g1_lo
static constexpr uint64_t cube_root_wasm_1
static constexpr uint64_t cube_root_wasm_3
static constexpr uint64_t coset_generators_wasm_1[8]
static constexpr uint64_t modulus_wasm_8
static constexpr uint64_t r_inv_wasm_6
static constexpr uint64_t r_inv_0
static constexpr uint64_t modulus_3
static constexpr uint64_t r_inv_wasm_2
static constexpr uint64_t modulus_1
static constexpr uint64_t modulus_wasm_2
static constexpr uint64_t r_inv_wasm_8
static constexpr uint64_t endo_minus_b1_mid
static constexpr uint64_t r_inv_wasm_0
static constexpr uint64_t endo_b2_mid
static constexpr uint64_t modulus_wasm_3
static constexpr uint64_t r_inv_wasm_1
static constexpr uint64_t r_inv_2
static constexpr size_t PUBLIC_INPUTS_SIZE
static constexpr uint64_t coset_generators_0[8]
static constexpr uint64_t coset_generators_wasm_0[8]
static constexpr uint64_t primitive_root_wasm_2
static constexpr uint64_t primitive_root_0
static constexpr uint64_t cube_root_wasm_2
static constexpr uint64_t endo_b2_lo
static constexpr uint64_t r_squared_2
static constexpr uint64_t cube_root_3
static constexpr uint64_t coset_generators_3[8]
static constexpr uint64_t endo_g1_hihi
static constexpr uint64_t endo_g2_hihi
static constexpr uint64_t endo_g2_hi
static constexpr uint64_t r_inv_wasm_7
static constexpr uint64_t primitive_root_1
static constexpr uint64_t coset_generators_wasm_3[8]
static constexpr uint64_t primitive_root_wasm_0
static constexpr uint64_t r_squared_0
static constexpr uint64_t r_squared_wasm_2
static constexpr uint64_t modulus_2
static constexpr uint64_t r_squared_wasm_1
static constexpr uint64_t coset_generators_wasm_2[8]
static constexpr uint64_t modulus_wasm_4
static constexpr uint64_t coset_generators_2[8]
static constexpr uint64_t r_inv_wasm_4
static constexpr uint64_t cube_root_2
static constexpr uint64_t endo_g2_lo
static constexpr uint64_t r_squared_wasm_0
static constexpr uint64_t endo_g2_mid
static constexpr uint64_t r_squared_1
static constexpr uint64_t primitive_root_3
static constexpr uint64_t cube_root_0
static constexpr uint64_t r_inv_3
static constexpr uint64_t primitive_root_wasm_1
static constexpr uint64_t modulus_wasm_0
static constexpr uint64_t cube_root_1
static constexpr uint64_t r_inv_wasm_3
static constexpr bool small_elements
static constexpr bool can_hash_to_curve
static constexpr fq one_x
static constexpr fq one_y
static constexpr bool has_a
static constexpr bool USE_ENDOMORPHISM