35 assert(
sizeof(mp_limb_t) == 8 ||
sizeof(mp_limb_t) == 4);
38 bn128_modulus_r = bigint_r(
"21888242871839275222246405745257275088548364400416034343698204186575808495617");
40 if (
sizeof(mp_limb_t) == 8)
42 bn128_Fr::Rsquared = bigint_r(
"944936681149208446651664254269745548490766851729442924617792859073125903783");
43 bn128_Fr::Rcubed = bigint_r(
"5866548545943845227489894872040244720403868105578784105281690076696998248512");
46 if (
sizeof(mp_limb_t) == 4)
48 bn128_Fr::Rsquared = bigint_r(
"944936681149208446651664254269745548490766851729442924617792859073125903783");
49 bn128_Fr::Rcubed = bigint_r(
"5866548545943845227489894872040244720403868105578784105281690076696998248512");
53 bn128_Fr::euler = bigint_r(
"10944121435919637611123202872628637544274182200208017171849102093287904247808");
55 bn128_Fr::t = bigint_r(
"81540058820840996586704275553141814055101440848469862132140264610111");
63 bn128_modulus_q = bigint_q(
"21888242871839275222246405745257275088696311157297823662689037894645226208583");
65 if (
sizeof(mp_limb_t) == 8)
67 bn128_Fq::Rsquared = bigint_q(
"3096616502983703923843567936837374451735540968419076528771170197431451843209");
68 bn128_Fq::Rcubed = bigint_q(
"14921786541159648185948152738563080959093619838510245177710943249661917737183");
71 if (
sizeof(mp_limb_t) == 4)
73 bn128_Fq::Rsquared = bigint_q(
"3096616502983703923843567936837374451735540968419076528771170197431451843209");
74 bn128_Fq::Rcubed = bigint_q(
"14921786541159648185948152738563080959093619838510245177710943249661917737183");
78 bn128_Fq::euler = bigint_q(
"10944121435919637611123202872628637544348155578648911831344518947322613104291");
80 bn128_Fq::t = bigint_q(
"10944121435919637611123202872628637544348155578648911831344518947322613104291");
94 bn::Fp(
"266929791119991161246907387137283842545076965332900288569378510910307636690"));
97 bn::Fp(
"314498342015008975724433667930697407966947188435857772134235984660852259084"));
98 bn128_Fq2_t_minus_1_over_2 =
mie::Vuint(
"14971724250519463826312126413021210649976634891596900701138993820439690427699319920245032869357433499099632259837909383182382988566862092145199781964621");
169 bn::Fp(
"9034493566019742339402378670461897774509967669562610788113215988055021632533"));
171 bn::Fp(
"20532875081203448695448744255224543661959516361327385779878476709582931298750"));
static Fp_model< n, modulus > multiplicative_generator
static bigint< n > t_minus_1_over_2
static Fp_model< n, modulus > root_of_unity
static bigint< n > Rcubed
static bool modulus_is_valid()
static Fp_model< n, modulus > nqr_to_t
static Fp_model< n, modulus > nqr
static bigint< n > Rsquared
static std::vector< size_t > wnaf_window_table
static std::vector< size_t > fixed_base_exp_window_table
static std::vector< size_t > fixed_base_exp_window_table
static std::vector< size_t > wnaf_window_table
bn::Fp2 bn128_twist_coeff_b
mie::Vuint bn128_Fq_t_minus_1_over_2
bn::Fp2 bn128_Fq2_nqr_to_t
mie::Vuint bn128_Fq2_t_minus_1_over_2
Fp_model< bn128_r_limbs, bn128_modulus_r > bn128_Fr
Fp_model< bn128_q_limbs, bn128_modulus_q > bn128_Fq
bigint< bn128_q_limbs > bn128_modulus_q
bigint< bn128_r_limbs > bn128_modulus_r
VuintT< local::FixedBuffer< mie::Unit, MIE_ZM_VUINT_BIT_LEN > > Vuint
static void init(const CurveParam &cp, int mode=-1, bool useMulx=true)