47 assert(
sizeof(mp_limb_t) == 8 ||
sizeof(mp_limb_t) == 4);
50 mnt6_modulus_r = bigint_r(
"475922286169261325753349249653048451545124879242694725395555128576210262817955800483758081");
52 if (
sizeof(mp_limb_t) == 8)
54 mnt6_Fr::Rsquared = bigint_r(
"273000478523237720910981655601160860640083126627235719712980612296263966512828033847775776");
55 mnt6_Fr::Rcubed = bigint_r(
"427298980065529822574935274648041073124704261331681436071990730954930769758106792920349077");
58 if (
sizeof(mp_limb_t) == 4)
60 mnt6_Fr::Rsquared = bigint_r(
"273000478523237720910981655601160860640083126627235719712980612296263966512828033847775776");
61 mnt6_Fr::Rcubed = bigint_r(
"427298980065529822574935274648041073124704261331681436071990730954930769758106792920349077");
65 mnt6_Fr::euler = bigint_r(
"237961143084630662876674624826524225772562439621347362697777564288105131408977900241879040");
67 mnt6_Fr::t = bigint_r(
"3630998887399759870554727551674258816109656366292531779446068791017229177993437198515");
68 mnt6_Fr::t_minus_1_over_2 = bigint_r(
"1815499443699879935277363775837129408054828183146265889723034395508614588996718599257");
72 mnt6_Fr::nqr_to_t =
mnt6_Fr(
"264706250571800080758069302369654305530125675521263976034054878017580902343339784464690243");
75 mnt6_modulus_q = bigint_q(
"475922286169261325753349249653048451545124878552823515553267735739164647307408490559963137");
77 if (
sizeof(mp_limb_t) == 8)
79 mnt6_Fq::Rsquared = bigint_q(
"163983144722506446826715124368972380525894397127205577781234305496325861831001705438796139");
80 mnt6_Fq::Rcubed = bigint_q(
"207236281459091063710247635236340312578688659363066707916716212805695955118593239854980171");
83 if (
sizeof(mp_limb_t) == 4)
85 mnt6_Fq::Rsquared = bigint_q(
"163983144722506446826715124368972380525894397127205577781234305496325861831001705438796139");
86 mnt6_Fq::Rcubed = bigint_q(
"207236281459091063710247635236340312578688659363066707916716212805695955118593239854980171");
90 mnt6_Fq::euler = bigint_q(
"237961143084630662876674624826524225772562439276411757776633867869582323653704245279981568");
92 mnt6_Fq::t = bigint_q(
"27702323054502562488973446286577291993024111641153199339359284829066871159442729");
97 mnt6_Fq::nqr_to_t =
mnt6_Fq(
"406220604243090401056429458730298145937262552508985450684842547562990900634752279902740880");
100 mnt6_Fq3::euler =
bigint<3*mnt6_q_limbs>(
"53898680178554951715397245154796036139463891589001478629193136369124915637741423690184935056189295242736833704290747216410090671804540908400210778934462129625646263095398323485795557551284190224166851571615834194321908328559167529729507439069424158411618728014749106176");
102 mnt6_Fq3::t =
bigint<3*mnt6_q_limbs>(
"6274632199033507112809136178669989590936327770934612330653836993631547740397674926811006741620285348354004521888069251599964996777072188956687550402067383940523288107407084140669968625447269322370045302856694231080113482726640944570478452261237446033817102203");
103 mnt6_Fq3::t_minus_1_over_2 =
bigint<3*mnt6_q_limbs>(
"3137316099516753556404568089334994795468163885467306165326918496815773870198837463405503370810142674177002260944034625799982498388536094478343775201033691970261644053703542070334984312723634661185022651428347115540056741363320472285239226130618723016908551101");
126 mnt6_G1::coeff_b =
mnt6_Fq(
"106700080510851735677967319632585352256454251201367587890185989362936000262606668469523074");
149 mnt6_Fq(
"402596290139780989709332707716568920777622032073762749862342374583908837063963736098549800"),
210 mnt6_Fq(
"103072927438548502463527009961344915021167584706439945404959058962657261178393635706405114"),
211 mnt6_Fq(
"143029172143731852627002926324735183809768363301149009204849580478324784395590388826052558")),
212 mnt6_Fq3(
mnt6_Fq(
"464673596668689463130099227575639512541218133445388869383893594087634649237515554342751377"),
213 mnt6_Fq(
"100642907501977375184575075967118071807821117960152743335603284583254620685343989304941678"),
214 mnt6_Fq(
"123019855502969896026940545715841181300275180157288044663051565390506010149881373807142903")),
273 mnt6_final_exponent =
bigint<6*mnt6_q_limbs>(
"24416320138090509697890595414313438768353977489862543935904010715439066975957855922532159264213056712140358746422742237328406558352706591021642230618060502855451264045397444793186876199015256781648746888625527075466063075011307800862173764236311342105211681121426931616843635215852236649271569251468773714424208521977615548771268520882870120900360322044218806712027729351845307690474985502587527753847200130592058098363641559341826790559426614919168");
static Fp3_model< n, modulus > nqr_to_t
static my_Fp Frobenius_coeffs_c1[3]
static Fp3_model< n, modulus > one()
static bigint< 3 *n > t_minus_1_over_2
static my_Fp Frobenius_coeffs_c2[3]
static Fp3_model< n, modulus > zero()
static bigint< 3 *n > euler
static Fp3_model< n, modulus > nqr
static my_Fp Frobenius_coeffs_c1[6]
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 > fixed_base_exp_window_table
static std::vector< size_t > wnaf_window_table
static std::vector< size_t > wnaf_window_table
static std::vector< size_t > fixed_base_exp_window_table
bigint< mnt6_r_limbs > mnt6_modulus_r
bigint< 6 *mnt6_q_limbs > mnt6_final_exponent
bigint< mnt6_q_limbs > mnt6_final_exponent_last_chunk_abs_of_w0
bigint< mnt6_q_limbs > mnt6_modulus_q
bool mnt6_final_exponent_last_chunk_is_w0_neg
mnt6_Fq mnt6_twist_mul_by_a_c0
bigint< mnt6_q_limbs > mnt6_final_exponent_last_chunk_w1
mnt6_Fq mnt6_twist_mul_by_a_c2
Fp_model< mnt6_r_limbs, mnt6_modulus_r > mnt6_Fr
mnt6_Fq mnt6_twist_mul_by_b_c2
Fp_model< mnt6_q_limbs, mnt6_modulus_q > mnt6_Fq
mnt6_Fq mnt6_twist_mul_by_b_c1
bool mnt6_ate_is_loop_count_neg
mnt6_Fq3 mnt6_twist_coeff_a
mnt6_Fq mnt6_twist_mul_by_q_Y
mnt6_Fq mnt6_twist_mul_by_b_c0
mnt6_Fq mnt6_twist_mul_by_q_X
Fp3_model< mnt6_q_limbs, mnt6_modulus_q > mnt6_Fq3
mnt6_Fq3 mnt6_twist_coeff_b
bigint< mnt6_q_limbs > mnt6_ate_loop_count
mnt6_Fq mnt6_twist_mul_by_a_c1