9#include "../../fields/field.hpp"
10#include "../../groups/group.hpp"
16 static constexpr uint64_t
modulus_0 = 0xFFFFFFFFFFFFFFFFULL;
17 static constexpr uint64_t
modulus_1 = 0x00000000FFFFFFFFULL;
18 static constexpr uint64_t
modulus_2 = 0x0000000000000000ULL;
19 static constexpr uint64_t
modulus_3 = 0xFFFFFFFF00000001ULL;
23 static constexpr uint64_t
r_squared_1 = 18446744056529682431ULL;
24 static constexpr uint64_t
r_squared_2 = 18446744073709551614ULL;
31 static constexpr uint64_t
r_inv = 1;
37 static constexpr uint64_t
r_inv_0 = 0x100000000UL;
38 static constexpr uint64_t
r_inv_1 = 0x0UL;
39 static constexpr uint64_t
r_inv_2 = 0xffffffff00000001UL;
40 static constexpr uint64_t
r_inv_3 = 0x0UL;
59 0x3ULL, 0x4ULL, 0x5ULL, 0x6ULL, 0x7ULL, 0x8ULL, 0x9ULL, 0xaULL,
62 0xfffffffd00000000ULL, 0xfffffffc00000000ULL, 0xfffffffb00000000ULL, 0xfffffffa00000000ULL,
63 0xfffffff900000000ULL, 0xfffffff800000000ULL, 0xfffffff700000000ULL, 0xfffffff600000000ULL,
66 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL,
67 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL,
70 0x2fffffffcULL, 0x3fffffffbULL, 0x4fffffffaULL, 0x5fffffff9ULL,
71 0x6fffffff8ULL, 0x7fffffff7ULL, 0x8fffffff6ULL, 0x9fffffff5ULL,
120 0x00000000000000a0ULL, 0x00000000000000c0ULL,
121 0x00000000000000e0ULL, 0x0000000000000100ULL,
122 0x0000000000000120ULL, 0x0000000000000140ULL };
124 0xffffff6000000000ULL, 0xffffff4000000000ULL,
125 0xffffff2000000000ULL, 0xffffff0000000000ULL,
126 0xfffffee000000000ULL, 0xfffffec000000000ULL };
128 0xffffffffffffffffULL, 0xffffffffffffffffULL,
129 0xffffffffffffffffULL, 0xffffffffffffffffULL,
130 0xffffffffffffffffULL, 0xffffffffffffffffULL };
132 0x0000009fffffff5fULL, 0x000000bfffffff3fULL,
133 0x000000dfffffff1fULL, 0x000000fffffffeffULL,
134 0x0000011ffffffedfULL, 0x0000013ffffffebfULL };
145 static constexpr uint64_t
modulus_0 = 0xF3B9CAC2FC632551ULL;
146 static constexpr uint64_t
modulus_1 = 0xBCE6FAADA7179E84ULL;
147 static constexpr uint64_t
modulus_2 = 0xFFFFFFFFFFFFFFFFULL;
148 static constexpr uint64_t
modulus_3 = 0xFFFFFFFF00000000ULL;
160 static constexpr uint64_t
r_inv = 14758798090332847183ULL;
166 static constexpr uint64_t
r_inv_0 = 0x230102a06d6251dcUL;
167 static constexpr uint64_t
r_inv_1 = 0xca5113bcafc4ea28UL;
168 static constexpr uint64_t
r_inv_2 = 0xded10c5bee00bc4eUL;
169 static constexpr uint64_t
r_inv_3 = 0xccd1c8aa212ef3a4UL;
188 0x55eb74ab1949fac9ULL, 0x6231a9e81ce6d578ULL, 0x6e77df252083b027ULL, 0x7abe146224208ad6ULL,
189 0x8704499f27bd6585ULL, 0x934a7edc2b5a4034ULL, 0x9f90b4192ef71ae3ULL, 0xabd6e9563293f592ULL,
192 0xd5af25406e5aaa5dULL, 0x18c82a92c7430bd8ULL, 0x5be12fe5202b6d53ULL, 0x9efa35377913ceceULL,
193 0xe2133a89d1fc3049ULL, 0x252c3fdc2ae491c4ULL, 0x6845452e83ccf33fULL, 0xab5e4a80dcb554baULL,
196 0x1ULL, 0x2ULL, 0x2ULL, 0x2ULL, 0x2ULL, 0x3ULL, 0x3ULL, 0x3ULL,
199 0x6fffffff9ULL, 0x7fffffff8ULL, 0x8fffffff7ULL, 0x9fffffff6ULL,
200 0xafffffff5ULL, 0xbfffffff4ULL, 0xcfffffff3ULL, 0xdfffffff2ULL,
249 0xcefbe4a4107604e0ULL, 0x57c28c4484115ac0ULL,
250 0xe08933e4f7acb0a0ULL, 0x694fdb856b480680ULL,
251 0xf2168325dee35c60ULL, 0x7add2ac6527eb240ULL };
253 0x7c25fca4056daa6dULL, 0xdf46a6ef2279d9cfULL,
254 0x4267513a3f860930ULL, 0xa587fb855c923892ULL,
255 0x08a8a5d0799e67f3ULL, 0x6bc9501b96aa9755ULL };
257 0x000000000000004bULL, 0x0000000000000053ULL,
258 0x000000000000005cULL, 0x0000000000000064ULL,
259 0x000000000000006dULL, 0x0000000000000075ULL };
261 0x0000011ffffffee0ULL, 0x0000013ffffffec0ULL,
262 0x0000015ffffffea0ULL, 0x0000017ffffffe80ULL,
263 0x0000019ffffffe60ULL, 0x000001bffffffe40ULL };
278 fq(0x3BCE3C3E27D2604B, 0x651D06B0CC53B0F6, 0xB3EBBD55769886BC, 0x5AC635D8AA3A93E7).
to_montgomery_form();
280 fq(0xFFFFFFFFFFFFFFFC, 0x00000000FFFFFFFF, 0x0000000000000000, 0xFFFFFFFF00000001).
to_montgomery_form();
283 fq(0xF4A13945D898C296, 0x77037D812DEB33A0, 0xF8BCE6E563A440F2, 0x6B17D1F2E12C4247).
to_montgomery_form();
285 fq(0xCBB6406837BF51F5, 0x2BCE33576B315ECE, 0x8EE7EB4A7C0F9E16, 0x4FE342E2FE1A7F9B).
to_montgomery_form();
typename Group::affine_element AffineElement
typename Group::element Element
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 modulus_wasm_2
static constexpr uint64_t coset_generators_wasm_3[8]
static constexpr uint64_t r_squared_1
static constexpr uint64_t primitive_root_wasm_3
static constexpr size_t PUBLIC_INPUTS_SIZE
static constexpr uint64_t coset_generators_wasm_2[8]
static constexpr uint64_t cube_root_3
static constexpr uint64_t primitive_root_0
static constexpr uint64_t r_squared_0
static constexpr uint64_t cube_root_wasm_1
static constexpr uint64_t r_inv_3
static constexpr uint64_t r_inv_0
static constexpr uint64_t primitive_root_3
static constexpr uint64_t r_inv_wasm_8
static constexpr uint64_t modulus_3
static constexpr uint64_t r_squared_wasm_1
static constexpr uint64_t primitive_root_1
static constexpr uint64_t primitive_root_wasm_2
static constexpr uint64_t coset_generators_wasm_0[8]
static constexpr uint64_t modulus_wasm_8
static constexpr uint64_t r_squared_wasm_3
static constexpr uint64_t coset_generators_0[8]
static constexpr uint64_t modulus_wasm_3
static constexpr uint64_t coset_generators_wasm_1[8]
static constexpr uint64_t cube_root_1
static constexpr uint64_t modulus_wasm_7
static constexpr uint64_t cube_root_0
static constexpr uint64_t modulus_wasm_5
static constexpr uint64_t r_squared_wasm_2
static constexpr uint64_t cube_root_wasm_2
static constexpr uint64_t modulus_wasm_1
static constexpr uint64_t primitive_root_wasm_1
static constexpr uint64_t primitive_root_2
static constexpr uint64_t cube_root_wasm_3
static constexpr uint64_t r_inv
static constexpr uint64_t r_inv_wasm_7
static constexpr uint64_t r_squared_3
static constexpr uint64_t modulus_2
static constexpr uint64_t r_inv_wasm_4
static constexpr uint64_t modulus_0
static constexpr uint64_t cube_root_2
static constexpr uint64_t r_inv_wasm_5
static constexpr uint64_t coset_generators_1[8]
static constexpr uint64_t coset_generators_3[8]
static constexpr uint64_t cube_root_wasm_0
static constexpr uint64_t r_squared_2
static constexpr uint64_t r_inv_wasm_6
static constexpr uint64_t r_inv_wasm_2
static constexpr uint64_t r_squared_wasm_0
static constexpr uint64_t r_inv_2
static constexpr uint64_t r_inv_1
static constexpr uint64_t r_inv_wasm_0
static constexpr uint64_t primitive_root_wasm_0
static constexpr uint64_t modulus_wasm_4
static constexpr uint64_t coset_generators_2[8]
static constexpr uint64_t modulus_wasm_6
static constexpr uint64_t modulus_1
static constexpr uint64_t r_inv_wasm_3
static constexpr uint64_t r_inv_wasm_1
static constexpr uint64_t modulus_wasm_0
static constexpr uint64_t r_squared_wasm_0
static constexpr uint64_t coset_generators_3[8]
static constexpr uint64_t r_inv_1
static constexpr uint64_t r_squared_1
static constexpr uint64_t r_inv
static constexpr uint64_t primitive_root_wasm_0
static constexpr uint64_t modulus_wasm_6
static constexpr uint64_t coset_generators_wasm_2[8]
static constexpr uint64_t modulus_2
static constexpr uint64_t coset_generators_2[8]
static constexpr uint64_t primitive_root_wasm_3
static constexpr uint64_t r_inv_wasm_5
static constexpr uint64_t primitive_root_0
static constexpr uint64_t modulus_wasm_7
static constexpr uint64_t r_inv_wasm_0
static constexpr uint64_t r_squared_0
static constexpr uint64_t modulus_wasm_0
static constexpr uint64_t modulus_wasm_8
static constexpr uint64_t r_inv_2
static constexpr uint64_t cube_root_0
static constexpr uint64_t primitive_root_3
static constexpr uint64_t r_inv_wasm_3
static constexpr uint64_t r_inv_wasm_8
static constexpr uint64_t modulus_wasm_1
static constexpr uint64_t primitive_root_1
static constexpr uint64_t r_inv_wasm_7
static constexpr uint64_t modulus_wasm_5
static constexpr uint64_t primitive_root_wasm_1
static constexpr uint64_t primitive_root_wasm_2
static constexpr uint64_t cube_root_wasm_1
static constexpr uint64_t modulus_wasm_2
static constexpr uint64_t cube_root_wasm_3
static constexpr uint64_t coset_generators_wasm_0[8]
static constexpr uint64_t r_inv_wasm_4
static constexpr uint64_t modulus_1
static constexpr uint64_t r_inv_wasm_2
static constexpr size_t PUBLIC_INPUTS_SIZE
static constexpr uint64_t r_inv_3
static constexpr uint64_t modulus_3
static constexpr uint64_t modulus_wasm_3
static constexpr uint64_t r_squared_wasm_2
static constexpr uint64_t r_inv_wasm_1
static constexpr uint64_t coset_generators_0[8]
static constexpr uint64_t r_inv_0
static constexpr uint64_t cube_root_2
static constexpr uint64_t r_squared_2
static constexpr uint64_t modulus_wasm_4
static constexpr uint64_t coset_generators_wasm_1[8]
static constexpr uint64_t r_squared_3
static constexpr uint64_t r_inv_wasm_6
static constexpr uint64_t cube_root_wasm_0
static constexpr uint64_t r_squared_wasm_3
static constexpr uint64_t coset_generators_wasm_3[8]
static constexpr uint64_t cube_root_1
static constexpr uint64_t coset_generators_1[8]
static constexpr uint64_t cube_root_wasm_2
static constexpr uint64_t modulus_0
static constexpr uint64_t r_squared_wasm_1
static constexpr uint64_t primitive_root_2
static constexpr uint64_t cube_root_3
static constexpr bool can_hash_to_curve
static constexpr bool has_a
static constexpr fq one_y
static constexpr bool USE_ENDOMORPHISM
static constexpr bool small_elements
static constexpr fq one_x