Clearmatics Libff
0.1
C++ library for Finite Fields and Elliptic Curves
|
Go to the documentation of this file.
47 sizeof(mp_limb_t) == 8 ||
48 sizeof(mp_limb_t) == 4);
51 mnt4_modulus_r = bigint_r(
"475922286169261325753349249653048451545124878552"
52 "823515553267735739164647307408490559963137");
54 if (
sizeof(mp_limb_t) == 8) {
56 bigint_r(
"163983144722506446826715124368972380525894397127205577781"
57 "234305496325861831001705438796139");
59 bigint_r(
"207236281459091063710247635236340312578688659363066707916"
60 "716212805695955118593239854980171");
63 if (
sizeof(mp_limb_t) == 4) {
65 bigint_r(
"163983144722506446826715124368972380525894397127205577781"
66 "234305496325861831001705438796139");
68 bigint_r(
"207236281459091063710247635236340312578688659363066707916"
69 "716212805695955118593239854980171");
73 mnt4_Fr::euler = bigint_r(
"237961143084630662876674624826524225772562439276"
74 "411757776633867869582323653704245279981568");
76 mnt4_Fr::t = bigint_r(
"2770232305450256248897344628657729199302411164115319"
77 "9339359284829066871159442729");
79 bigint_r(
"1385116152725128124448672314328864599651205582057659966967964"
80 "2414533435579721364");
83 mnt4_Fr(
"12063881782691317345876882948569009984537700803089161801010977"
84 "2937363554409782252579816313");
87 "08985450684842547562990900634752279902740880");
91 mnt4_modulus_q = bigint_q(
"475922286169261325753349249653048451545124879242"
92 "694725395555128576210262817955800483758081");
94 if (
sizeof(mp_limb_t) == 8) {
96 bigint_q(
"273000478523237720910981655601160860640083126627235719712"
97 "980612296263966512828033847775776");
99 bigint_q(
"427298980065529822574935274648041073124704261331681436071"
100 "990730954930769758106792920349077");
103 if (
sizeof(mp_limb_t) == 4) {
105 bigint_q(
"273000478523237720910981655601160860640083126627235719712"
106 "980612296263966512828033847775776");
108 bigint_q(
"427298980065529822574935274648041073124704261331681436071"
109 "990730954930769758106792920349077");
113 mnt4_Fq::euler = bigint_q(
"237961143084630662876674624826524225772562439621"
114 "347362697777564288105131408977900241879040");
116 mnt4_Fq::t = bigint_q(
"3630998887399759870554727551674258816109656366292531"
117 "779446068791017229177993437198515");
119 bigint_q(
"1815499443699879935277363775837129408054828183146265889723034"
120 "395508614588996718599257");
123 mnt4_Fq(
"26470625057180008075806930236965430553012567552126397603405487"
124 "8017580902343339784464690243");
127 "21263976034054878017580902343339784464690243");
132 "1132510112362881350982493452491542308959143818587889181068472142434191"
133 "4242292413349746081746824985483306726003898571037009192086083701428188"
134 "6963086681184370139950267830740466401280");
137 "8640366457846689994678447360927904578850889729216683815524842395280391"
138 "1150302225873917249655341991297200973540485924049447571457547770905980"
139 "6542104196047745818712370534824115");
141 "4320183228923344997339223680463952289425444864608341907762421197640195"
142 "5575151112936958624827670995648600486770242962024723785728773885452990"
143 "3271052098023872909356185267412057");
148 mnt4_Fq(
"29402818985595053196743631544512156561638230562612542604956687"
149 "802791427330205135130967658"));
152 mnt4_Fq(
"47592228616926132575334924965304845154512487924269472539555512"
153 "8576210262817955800483758080");
160 mnt4_Fq(
"76841632454535016156213515524733370693010820609768050046250116"
161 "94147890954040864167002308");
163 mnt4_Fq(
"47592228616926132575334924965304845154512487924269472539555512"
164 "8576210262817955800483758080");
166 mnt4_Fq(
"46823812292380782413772789810057511447582379718171792039093011"
167 "6882062371863914936316755773");
172 "3896002803341544124054745019340795360841685");
186 mnt4_Fq(
"47592228616926132575334924965304845154512487924269472539555512"
187 "8576210262817955800483758080");
189 mnt4_Fq(
"76841632454535016156213515524733370693010820609768050046250116"
190 "94147890954040864167002308");
197 mnt4_Fq(
"60760244141852568949126569781626075788424196370144486719385562"
198 "369396875346601926534016838"),
199 mnt4_Fq(
"36373285070258297826390277081514578445974772235707184397110767"
200 "4179038674942891694705904306"),
265 mnt4_Fq(
"4383749262193500998549191000778096818427835091637909918478"
266 "67546339851681564223481322252708"),
267 mnt4_Fq(
"3762095361550048011093551436092327860546447645971239327767"
268 "9280819942849043649216370485641")),
270 mnt4_Fq(
"3743740900852896826835252103493693184297354644137066311854"
271 "3015118291998305624025037512482"),
272 mnt4_Fq(
"4246214795988938826723931903374206805975846958923171976461"
273 "13820787463109735345923009077489")),
278 "4759222861692613257533492496530484515451248799325659352378425214132558"
279 "78328503110407553025");
336 bigint_q(
"689871209842287392837045615510547309923794944");
339 "1077973603571099034307944903095920722789277838030318543579109081219034"
340 "3983877286149717711641082558674308976086994539461051191727497797155906"
341 "2689561855016270594656570874331111995170645233717143416875749097203441"
342 "437192367065467706065411650403684877366879441766585988546560");
344 bigint_q(
"689871209842287392837045615510547309923794945");
static bigint< 2 *n > euler
(modulus^2-1)/2
Fp_model< mnt4_r_limbs, mnt4_modulus_r > mnt4_Fr
static Fp2_model< n, modulus > nqr_to_t
nqr^t
mnt4_Fq mnt4_twist_mul_by_b_c1
mnt4_Fq2 mnt4_twist_coeff_b
mnt4_Fq mnt4_twist_mul_by_a_c1
static bigint< 2 *n > t_minus_1_over_2
(t-1)/2
static const Fp2_model< n, modulus > & one()
static bigint< h_limbs > h
mnt4_Fq2 mnt4_twist_coeff_a
static Fp_model< n, modulus > nqr
a quadratic nonresidue
static const Fp_model< n, modulus > & zero()
static bigint< n > t
with t odd
bigint< 4 *mnt4_q_limbs > mnt4_final_exponent
static size_t s
modulus = 2^s * t + 1
mnt4_Fq mnt4_twist_mul_by_q_X
bigint< mnt4_q_limbs > mnt4_final_exponent_last_chunk_abs_of_w0
static bigint< n > euler
(modulus-1)/2
static bool modulus_is_valid()
static const Fp_model< n, modulus > & one()
Fp_model< mnt4_q_limbs, mnt4_modulus_q > mnt4_Fq
static my_Fp Frobenius_coeffs_c1[2]
non_residue^((modulus^i-1)/2) for i=0,1
bigint< mnt4_q_limbs > mnt4_modulus_q
static Fp2_model< n, modulus > nqr
a quadratic nonresidue in Fp2
static void static_init()
static std::vector< size_t > fixed_base_exp_window_table
static std::vector< size_t > fixed_base_exp_window_table
static bigint< n > t_minus_1_over_2
(t-1)/2
Fp2_model< mnt4_q_limbs, mnt4_modulus_q > mnt4_Fq2
static void static_init()
static Fp_model< n, modulus > root_of_unity
generator^((modulus-1)/2^s)
bigint< mnt4_q_limbs > mnt4_ate_loop_count
static std::vector< size_t > wnaf_window_table
bool mnt4_ate_is_loop_count_neg
mnt4_Fq mnt4_twist_mul_by_b_c0
static Fp_model< n, modulus > nqr_to_t
nqr^t
static Fp_model< n, modulus > multiplicative_generator
generator of Fp^*
bool mnt4_final_exponent_last_chunk_is_w0_neg
mnt4_Fq mnt4_twist_mul_by_q_Y
bigint< mnt4_r_limbs > mnt4_modulus_r
static mp_limb_t inv
-modulus^(-1) mod W, where W = 2^(word size)
bigint< mnt4_q_limbs > mnt4_final_exponent_last_chunk_w1
static my_Fp Frobenius_coeffs_c1[4]
non_residue^((modulus^i-1)/4) for i=0,1,2,3
static std::vector< size_t > wnaf_window_table
mnt4_Fq mnt4_twist_mul_by_a_c0
static const Fp2_model< n, modulus > & zero()
static bigint< h_limbs > h
static bigint< n > Rsquared
R^2, where R = W^k, where k = ??
static bigint< 2 *n > t
with t odd
static size_t s
modulus^2 = 2^s * t + 1
static bigint< n > Rcubed
R^3.