45 assert(
sizeof(mp_limb_t) == 8 ||
sizeof(mp_limb_t) == 4);
48 mnt4_modulus_r = bigint_r(
"475922286169261325753349249653048451545124878552823515553267735739164647307408490559963137");
50 if (
sizeof(mp_limb_t) == 8)
52 mnt4_Fr::Rsquared = bigint_r(
"163983144722506446826715124368972380525894397127205577781234305496325861831001705438796139");
53 mnt4_Fr::Rcubed = bigint_r(
"207236281459091063710247635236340312578688659363066707916716212805695955118593239854980171");
56 if (
sizeof(mp_limb_t) == 4)
58 mnt4_Fr::Rsquared = bigint_r(
"163983144722506446826715124368972380525894397127205577781234305496325861831001705438796139");
59 mnt4_Fr::Rcubed = bigint_r(
"207236281459091063710247635236340312578688659363066707916716212805695955118593239854980171");
63 mnt4_Fr::euler = bigint_r(
"237961143084630662876674624826524225772562439276411757776633867869582323653704245279981568");
65 mnt4_Fr::t = bigint_r(
"27702323054502562488973446286577291993024111641153199339359284829066871159442729");
70 mnt4_Fr::nqr_to_t =
mnt4_Fr(
"406220604243090401056429458730298145937262552508985450684842547562990900634752279902740880");
73 mnt4_modulus_q = bigint_q(
"475922286169261325753349249653048451545124879242694725395555128576210262817955800483758081");
75 if (
sizeof(mp_limb_t) == 8)
77 mnt4_Fq::Rsquared = bigint_q(
"273000478523237720910981655601160860640083126627235719712980612296263966512828033847775776");
78 mnt4_Fq::Rcubed = bigint_q(
"427298980065529822574935274648041073124704261331681436071990730954930769758106792920349077");
81 if (
sizeof(mp_limb_t) == 4)
83 mnt4_Fq::Rsquared = bigint_q(
"273000478523237720910981655601160860640083126627235719712980612296263966512828033847775776");
84 mnt4_Fq::Rcubed = bigint_q(
"427298980065529822574935274648041073124704261331681436071990730954930769758106792920349077");
88 mnt4_Fq::euler = bigint_q(
"237961143084630662876674624826524225772562439621347362697777564288105131408977900241879040");
90 mnt4_Fq::t = bigint_q(
"3630998887399759870554727551674258816109656366292531779446068791017229177993437198515");
91 mnt4_Fq::t_minus_1_over_2 = bigint_q(
"1815499443699879935277363775837129408054828183146265889723034395508614588996718599257");
95 mnt4_Fq::nqr_to_t =
mnt4_Fq(
"264706250571800080758069302369654305530125675521263976034054878017580902343339784464690243");
98 mnt4_Fq2::euler =
bigint<2*mnt4_q_limbs>(
"113251011236288135098249345249154230895914381858788918106847214243419142422924133497460817468249854833067260038985710370091920860837014281886963086681184370139950267830740466401280");
100 mnt4_Fq2::t =
bigint<2*mnt4_q_limbs>(
"864036645784668999467844736092790457885088972921668381552484239528039111503022258739172496553419912972009735404859240494475714575477709059806542104196047745818712370534824115");
117 mnt4_G1::coeff_b =
mnt4_Fq(
"423894536526684178289416011533888240029318103673896002803341544124054745019340795360841685");
138 mnt4_Fq(
"363732850702582978263902770815145784459747722357071843971107674179038674942891694705904306"),
200 mnt4_Fq(
"37620953615500480110935514360923278605464476459712393277679280819942849043649216370485641")),
201 mnt4_Fq2(
mnt4_Fq(
"37437409008528968268352521034936931842973546441370663118543015118291998305624025037512482"),
202 mnt4_Fq(
"424621479598893882672393190337420680597584695892317197646113820787463109735345923009077489")),
261 mnt4_final_exponent =
bigint<4*mnt4_q_limbs>(
"107797360357109903430794490309592072278927783803031854357910908121903439838772861497177116410825586743089760869945394610511917274977971559062689561855016270594656570874331111995170645233717143416875749097203441437192367065467706065411650403684877366879441766585988546560");
static bigint< 2 *n > t_minus_1_over_2
static Fp2_model< n, modulus > zero()
static Fp2_model< n, modulus > nqr_to_t
static Fp2_model< n, modulus > one()
static my_Fp Frobenius_coeffs_c1[2]
static Fp2_model< n, modulus > nqr
static bigint< 2 *n > euler
static my_Fp Frobenius_coeffs_c1[4]
static Fp_model< n, modulus > multiplicative_generator
static Fp_model< n, modulus > zero()
static Fp_model< n, modulus > one()
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
bool mnt4_final_exponent_last_chunk_is_w0_neg
Fp_model< mnt4_q_limbs, mnt4_modulus_q > mnt4_Fq
bigint< mnt4_q_limbs > mnt4_modulus_q
bigint< 4 *mnt4_q_limbs > mnt4_final_exponent
mnt4_Fq mnt4_twist_mul_by_b_c1
bool mnt4_ate_is_loop_count_neg
bigint< mnt4_q_limbs > mnt4_final_exponent_last_chunk_abs_of_w0
bigint< mnt4_r_limbs > mnt4_modulus_r
bigint< mnt4_q_limbs > mnt4_final_exponent_last_chunk_w1
bigint< mnt4_q_limbs > mnt4_ate_loop_count
mnt4_Fq mnt4_twist_mul_by_a_c0
mnt4_Fq2 mnt4_twist_coeff_b
mnt4_Fq mnt4_twist_mul_by_q_X
Fp_model< mnt4_r_limbs, mnt4_modulus_r > mnt4_Fr
mnt4_Fq mnt4_twist_mul_by_a_c1
mnt4_Fq2 mnt4_twist_coeff_a
Fp2_model< mnt4_q_limbs, mnt4_modulus_q > mnt4_Fq2
mnt4_Fq mnt4_twist_mul_by_b_c0
mnt4_Fq mnt4_twist_mul_by_q_Y