37 int F4::NB_THREAD=min(8, omp_get_num_procs());
46 int cyclic6F4(
bool magma)
48 cout <<
"#########################################################" << endl;
49 cout <<
"# CYCLIC 6 #" << endl;
50 cout <<
"#########################################################" << endl << endl;
62 vector<Polynomial<eltType>> polCyclic6;
65 polCyclic6.emplace_back(
"x0+x1+x2+x3+x4+x5");
66 polCyclic6.emplace_back(
"x0*x1+x1*x2+x2*x3+x3*x4+x0*x5+x4*x5");
67 polCyclic6.emplace_back(
"x0*x1*x2+x1*x2*x3+x2*x3*x4+x0*x1*x5+x0*x4*x5+x3*x4*x5");
68 polCyclic6.emplace_back(
"x0*x1*x2*x3+x1*x2*x3*x4+x0*x1*x2*x5+x0*x1*x4*x5+x0*x3*x4*x5+x2*x3*x4*x5");
69 polCyclic6.emplace_back(
"x0*x1*x2*x3*x4+x0*x1*x2*x3*x5+x0*x1*x2*x4*x5+x0*x1*x3*x4*x5+x0*x2*x3*x4*x5+x1*x2*x3*x4*x5");
70 polCyclic6.emplace_back(
"x0*x1*x2*x3*x4*x5-1");
81 cyclic6.printReducedGroebnerBasis(
"cyclic6", modulo);
87 int cyclic7F4(
bool magma)
89 cout <<
"#########################################################" << endl;
90 cout <<
"# CYCLIC 7 #" << endl;
91 cout <<
"#########################################################" << endl << endl;
103 vector<Polynomial<eltType>> polCyclic7;
106 polCyclic7.emplace_back(
"x0+x1+x2+x3+x4+x5+x6");
107 polCyclic7.emplace_back(
"x0*x1+x1*x2+x2*x3+x3*x4+x4*x5+x0*x6+x5*x6");
108 polCyclic7.emplace_back(
"x0*x1*x2+x1*x2*x3+x2*x3*x4+x3*x4*x5+x0*x1*x6+x0*x5*x6+x4*x5*x6");
109 polCyclic7.emplace_back(
"x0*x1*x2*x3+x1*x2*x3*x4+x2*x3*x4*x5+x0*x1*x2*x6+x0*x1*x5*x6+x0*x4*x5*x6+x3*x4*x5*x6");
110 polCyclic7.emplace_back(
"x0*x1*x2*x3*x4+x1*x2*x3*x4*x5+x0*x1*x2*x3*x6+x0*x1*x2*x5*x6+x0*x1*x4*x5*x6+x0*x3*x4*x5*x6+x2*x3*x4*x5*x6");
111 polCyclic7.emplace_back(
"x0*x1*x2*x3*x4*x5+x0*x1*x2*x3*x4*x6+x0*x1*x2*x3*x5*x6+x0*x1*x2*x4*x5*x6+x0*x1*x3*x4*x5*x6+x0*x2*x3*x4*x5*x6+x1*x2*x3*x4*x5*x6");
112 polCyclic7.emplace_back(
"x0*x1*x2*x3*x4*x5*x6-1");
123 cyclic7.printReducedGroebnerBasis(
"cyclic7", modulo);
129 int cyclic8F4(
bool magma)
132 cout <<
"#########################################################" << endl;
133 cout <<
"# CYCLIC 8 #" << endl;
134 cout <<
"#########################################################" << endl << endl;
146 vector<Polynomial<eltType>> polCyclic8;
149 polCyclic8.emplace_back(
"x0+x1+x2+x3+x4+x5+x6+x7");
150 polCyclic8.emplace_back(
"x0*x1+x1*x2+x2*x3+x3*x4+x4*x5+x5*x6+x0*x7+x6*x7");
151 polCyclic8.emplace_back(
"x0*x1*x2+x1*x2*x3+x2*x3*x4+x3*x4*x5+x4*x5*x6+x0*x1*x7+x0*x6*x7+x5*x6*x7");
152 polCyclic8.emplace_back(
"x0*x1*x2*x3+x1*x2*x3*x4+x2*x3*x4*x5+x3*x4*x5*x6+x0*x1*x2*x7+x0*x1*x6*x7+x0*x5*x6*x7+x4*x5*x6*x7");
153 polCyclic8.emplace_back(
"x0*x1*x2*x3*x4+x1*x2*x3*x4*x5+x2*x3*x4*x5*x6+x0*x1*x2*x3*x7+x0*x1*x2*x6*x7+x0*x1*x5*x6*x7+x0*x4*x5*x6*x7+x3*x4*x5*x6*x7");
154 polCyclic8.emplace_back(
"x0*x1*x2*x3*x4*x5+x1*x2*x3*x4*x5*x6+x0*x1*x2*x3*x4*x7+x0*x1*x2*x3*x6*x7+x0*x1*x2*x5*x6*x7+x0*x1*x4*x5*x6*x7+x0*x3*x4*x5*x6*x7+x2*x3*x4*x5*x6*x7");
155 polCyclic8.emplace_back(
"x0*x1*x2*x3*x4*x5*x6+x0*x1*x2*x3*x4*x5*x7+x0*x1*x2*x3*x4*x6*x7+x0*x1*x2*x3*x5*x6*x7+x0*x1*x2*x4*x5*x6*x7+x0*x1*x3*x4*x5*x6*x7+x0*x2*x3*x4*x5*x6*x7+x1*x2*x3*x4*x5*x6*x7");
156 polCyclic8.emplace_back(
"x0*x1*x2*x3*x4*x5*x6*x7-1");
167 cyclic8.printReducedGroebnerBasis(
"cyclic8", modulo);
173 int cyclic9F4(
bool magma)
176 cout <<
"#########################################################" << endl;
177 cout <<
"# CYCLIC 9 #" << endl;
178 cout <<
"#########################################################" << endl << endl;
190 vector<Polynomial<eltType>> polCyclic9;
193 polCyclic9.emplace_back(
"x0+x1+x2+x3+x4+x5+x6+x7+x8");
194 polCyclic9.emplace_back(
"x0*x1+x1*x2+x2*x3+x3*x4+x4*x5+x5*x6+x6*x7+x0*x8+x7*x8");
195 polCyclic9.emplace_back(
"x0*x1*x2+x1*x2*x3+x2*x3*x4+x3*x4*x5+x4*x5*x6+x5*x6*x7+x0*x1*x8+x0*x7*x8+x6*x7*x8");
196 polCyclic9.emplace_back(
"x0*x1*x2*x3+x1*x2*x3*x4+x2*x3*x4*x5+x3*x4*x5*x6+x4*x5*x6*x7+x0*x1*x2*x8+x0*x1*x7*x8+x0*x6*x7*x8+x5*x6*x7*x8");
197 polCyclic9.emplace_back(
"x0*x1*x2*x3*x4+x1*x2*x3*x4*x5+x2*x3*x4*x5*x6+x3*x4*x5*x6*x7+x0*x1*x2*x3*x8+x0*x1*x2*x7*x8+x0*x1*x6*x7*x8+x0*x5*x6*x7*x8+x4*x5*x6*x7*x8");
198 polCyclic9.emplace_back(
"x0*x1*x2*x3*x4*x5+x1*x2*x3*x4*x5*x6+x2*x3*x4*x5*x6*x7+x0*x1*x2*x3*x4*x8+x0*x1*x2*x3*x7*x8+x0*x1*x2*x6*x7*x8+x0*x1*x5*x6*x7*x8+x0*x4*x5*x6*x7*x8+x3*x4*x5*x6*x7*x8");
199 polCyclic9.emplace_back(
"x0*x1*x2*x3*x4*x5*x6+x1*x2*x3*x4*x5*x6*x7+x0*x1*x2*x3*x4*x5*x8+x0*x1*x2*x3*x4*x7*x8+x0*x1*x2*x3*x6*x7*x8+x0*x1*x2*x5*x6*x7*x8+x0*x1*x4*x5*x6*x7*x8+x0*x3*x4*x5*x6*x7*x8+x2*x3*x4*x5*x6*x7*x8");
200 polCyclic9.emplace_back(
"x0*x1*x2*x3*x4*x5*x6*x7+x0*x1*x2*x3*x4*x5*x6*x8+x0*x1*x2*x3*x4*x5*x7*x8+x0*x1*x2*x3*x4*x6*x7*x8+x0*x1*x2*x3*x5*x6*x7*x8+x0*x1*x2*x4*x5*x6*x7*x8+x0*x1*x3*x4*x5*x6*x7*x8+x0*x2*x3*x4*x5*x6*x7*x8+x1*x2*x3*x4*x5*x6*x7*x8");
201 polCyclic9.emplace_back(
"x0*x1*x2*x3*x4*x5*x6*x7*x8-1");
212 cyclic9.printReducedGroebnerBasis(
"cyclic9", modulo);
218 int katsura9F4(
bool magma)
220 cout <<
"#########################################################" << endl;
221 cout <<
"# KATSURA 9 #" << endl;
222 cout <<
"#########################################################" << endl << endl;
234 vector<Polynomial<eltType>> polKatsura9;
237 polKatsura9.emplace_back(
"x0+2*x1+2*x2+2*x3+2*x4+2*x5+2*x6+2*x7+2*x8-1");
238 polKatsura9.emplace_back(
"x0^2+2*x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2+2*x6^2+2*x7^2+2*x8^2-x0");
239 polKatsura9.emplace_back(
"2*x0*x1+2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5+2*x5*x6+2*x6*x7+2*x7*x8-x1");
240 polKatsura9.emplace_back(
"x1^2+2*x0*x2+2*x1*x3+2*x2*x4+2*x3*x5+2*x4*x6+2*x5*x7+2*x6*x8-x2");
241 polKatsura9.emplace_back(
"2*x1*x2+2*x0*x3+2*x1*x4+2*x2*x5+2*x3*x6+2*x4*x7+2*x5*x8-x3");
242 polKatsura9.emplace_back(
"x2^2+2*x1*x3+2*x0*x4+2*x1*x5+2*x2*x6+2*x3*x7+2*x4*x8-x4");
243 polKatsura9.emplace_back(
"2*x2*x3+2*x1*x4+2*x0*x5+2*x1*x6+2*x2*x7+2*x3*x8-x5");
244 polKatsura9.emplace_back(
"x3^2+2*x2*x4+2*x1*x5+2*x0*x6+2*x1*x7+2*x2*x8-x6");
245 polKatsura9.emplace_back(
"2*x3*x4+2*x2*x5+2*x1*x6+2*x0*x7+2*x1*x8-x7");
256 katsura9.printReducedGroebnerBasis(
"katsura9", modulo);
262 int katsura10F4(
bool magma)
264 cout <<
"#########################################################" << endl;
265 cout <<
"# KATSURA 10 #" << endl;
266 cout <<
"#########################################################" << endl << endl;
278 vector<Polynomial<eltType>> polKatsura10;
281 polKatsura10.emplace_back(
"x0+2*x1+2*x2+2*x3+2*x4+2*x5+2*x6+2*x7+2*x8+2*x9-1");
282 polKatsura10.emplace_back(
"x0^2+2*x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2+2*x6^2+2*x7^2+2*x8^2+2*x9^2-x0");
283 polKatsura10.emplace_back(
"2*x0*x1+2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5+2*x5*x6+2*x6*x7+2*x7*x8+2*x8*x9-x1");
284 polKatsura10.emplace_back(
"x1^2+2*x0*x2+2*x1*x3+2*x2*x4+2*x3*x5+2*x4*x6+2*x5*x7+2*x6*x8+2*x7*x9-x2");
285 polKatsura10.emplace_back(
"2*x1*x2+2*x0*x3+2*x1*x4+2*x2*x5+2*x3*x6+2*x4*x7+2*x5*x8+2*x6*x9-x3");
286 polKatsura10.emplace_back(
"x2^2+2*x1*x3+2*x0*x4+2*x1*x5+2*x2*x6+2*x3*x7+2*x4*x8+2*x5*x9-x4");
287 polKatsura10.emplace_back(
"2*x2*x3+2*x1*x4+2*x0*x5+2*x1*x6+2*x2*x7+2*x3*x8+2*x4*x9-x5");
288 polKatsura10.emplace_back(
"x3^2+2*x2*x4+2*x1*x5+2*x0*x6+2*x1*x7+2*x2*x8+2*x3*x9-x6");
289 polKatsura10.emplace_back(
"2*x3*x4+2*x2*x5+2*x1*x6+2*x0*x7+2*x1*x8+2*x2*x9-x7");
290 polKatsura10.emplace_back(
"x4^2+2*x3*x5+2*x2*x6+2*x1*x7+2*x0*x8+2*x1*x9-x8");
296 nbGen=katsura10.f4();
301 katsura10.printReducedGroebnerBasis(
"katsura10", modulo);
306 int katsura11F4(
bool magma)
308 cout <<
"#########################################################" << endl;
309 cout <<
"# KATSURA 11 #" << endl;
310 cout <<
"#########################################################" << endl << endl;
322 vector<Polynomial<eltType>> polKatsura11;
325 polKatsura11.emplace_back(
"x0+2*x1+2*x2+2*x3+2*x4+2*x5+2*x6+2*x7+2*x8+2*x9+2*x10-1");
326 polKatsura11.emplace_back(
"x0^2+2*x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2+2*x6^2+2*x7^2+2*x8^2+2*x9^2+2*x10^2-x0");
327 polKatsura11.emplace_back(
"2*x0*x1+2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5+2*x5*x6+2*x6*x7+2*x7*x8+2*x8*x9+2*x9*x10-x1");
328 polKatsura11.emplace_back(
"x1^2+2*x0*x2+2*x1*x3+2*x2*x4+2*x3*x5+2*x4*x6+2*x5*x7+2*x6*x8+2*x7*x9+2*x8*x10-x2");
329 polKatsura11.emplace_back(
"2*x1*x2+2*x0*x3+2*x1*x4+2*x2*x5+2*x3*x6+2*x4*x7+2*x5*x8+2*x6*x9+2*x7*x10-x3");
330 polKatsura11.emplace_back(
"x2^2+2*x1*x3+2*x0*x4+2*x1*x5+2*x2*x6+2*x3*x7+2*x4*x8+2*x5*x9+2*x6*x10-x4");
331 polKatsura11.emplace_back(
"2*x2*x3+2*x1*x4+2*x0*x5+2*x1*x6+2*x2*x7+2*x3*x8+2*x4*x9+2*x5*x10-x5");
332 polKatsura11.emplace_back(
"x3^2+2*x2*x4+2*x1*x5+2*x0*x6+2*x1*x7+2*x2*x8+2*x3*x9+2*x4*x10-x6");
333 polKatsura11.emplace_back(
"2*x3*x4+2*x2*x5+2*x1*x6+2*x0*x7+2*x1*x8+2*x2*x9+2*x3*x10-x7");
334 polKatsura11.emplace_back(
"x4^2+2*x3*x5+2*x2*x6+2*x1*x7+2*x0*x8+2*x1*x9+2*x2*x10-x8");
335 polKatsura11.emplace_back(
"2*x4*x5+2*x3*x6+2*x2*x7+2*x1*x8+2*x0*x9+2*x1*x10-x9");
341 nbGen=katsura11.f4();
346 katsura11.printReducedGroebnerBasis(
"katsura11", modulo);
351 int katsura12F4(
bool magma)
353 cout <<
"#########################################################" << endl;
354 cout <<
"# KATSURA 12 #" << endl;
355 cout <<
"#########################################################" << endl << endl;
367 vector<Polynomial<eltType>> polKatsura12;
370 polKatsura12.emplace_back(
"x0+2*x1+2*x2+2*x3+2*x4+2*x5+2*x6+2*x7+2*x8+2*x9+2*x10+2*x11-1");
371 polKatsura12.emplace_back(
"x0^2+2*x1^2+2*x2^2+2*x3^2+2*x4^2+2*x5^2+2*x6^2+2*x7^2+2*x8^2+2*x9^2+2*x10^2+2*x11^2-x0");
372 polKatsura12.emplace_back(
"2*x0*x1+2*x1*x2+2*x2*x3+2*x3*x4+2*x4*x5+2*x5*x6+2*x6*x7+2*x7*x8+2*x8*x9+2*x9*x10+2*x10*x11-x1");
373 polKatsura12.emplace_back(
"x1^2+2*x0*x2+2*x1*x3+2*x2*x4+2*x3*x5+2*x4*x6+2*x5*x7+2*x6*x8+2*x7*x9+2*x8*x10+2*x9*x11-x2");
374 polKatsura12.emplace_back(
"2*x1*x2+2*x0*x3+2*x1*x4+2*x2*x5+2*x3*x6+2*x4*x7+2*x5*x8+2*x6*x9+2*x7*x10+2*x8*x11-x3");
375 polKatsura12.emplace_back(
"x2^2+2*x1*x3+2*x0*x4+2*x1*x5+2*x2*x6+2*x3*x7+2*x4*x8+2*x5*x9+2*x6*x10+2*x7*x11-x4");
376 polKatsura12.emplace_back(
"2*x2*x3+2*x1*x4+2*x0*x5+2*x1*x6+2*x2*x7+2*x3*x8+2*x4*x9+2*x5*x10+2*x6*x11-x5");
377 polKatsura12.emplace_back(
"x3^2+2*x2*x4+2*x1*x5+2*x0*x6+2*x1*x7+2*x2*x8+2*x3*x9+2*x4*x10+2*x5*x11-x6");
378 polKatsura12.emplace_back(
"2*x3*x4+2*x2*x5+2*x1*x6+2*x0*x7+2*x1*x8+2*x2*x9+2*x3*x10+2*x4*x11-x7");
379 polKatsura12.emplace_back(
"x4^2+2*x3*x5+2*x2*x6+2*x1*x7+2*x0*x8+2*x1*x9+2*x2*x10+2*x3*x11-x8");
380 polKatsura12.emplace_back(
"2*x4*x5+2*x3*x6+2*x2*x7+2*x1*x8+2*x0*x9+2*x1*x10+2*x2*x11-x9");
381 polKatsura12.emplace_back(
"x5^2+2*x4*x6+2*x3*x7+2*x2*x8+2*x1*x9+2*x0*x10+2*x1*x11-x10");
387 nbGen=katsura12.f4();
392 katsura12.printReducedGroebnerBasis(
"katsura12", modulo);
398 int randomIdealF4(
bool magma)
400 cout <<
"#########################################################" << endl;
401 cout <<
"# RANDOM 10 #" << endl;
402 cout <<
"#########################################################" << endl << endl;
414 vector<Polynomial<eltType>> polRandomIdeal;
417 polRandomIdeal.emplace_back(
"-25655*x1^2*x2^2*x4 - 27093*x0*x2*x3*x5^2 + 15696*x5^5 - 31611*x0*x1^3 + 10089*x0^3*x2 - 2759*x1^2*x3^2 + 3186*x1*x3^2*x4 - 7916*x1*x2^2*x5 + 16867*x1*x4^2*x5 - 26502*x2^2*x4");
418 polRandomIdeal.emplace_back(
"24757*x2^4*x3 + 13532*x0*x1*x2*x3^2 - 32273*x2^2*x3^3 + 24976*x2*x3^4 + 6577*x0*x2^3*x5 - 14251*x1*x3^2*x4*x5 + 8633*x0*x3*x4^2 + 18508*x0*x4^3 + 12700*x1*x2*x5^2 + 21103*x1*x5");
419 polRandomIdeal.emplace_back(
"-14089*x0^2*x2^3 + 6374*x0*x1^2*x3^2 - 11572*x2^3*x3^2 + 17253*x0^3*x1*x4 - 26476*x2*x3*x4^3 - 5794*x2*x4^3*x5 - 9292*x0^3*x1 + 9740*x0^3*x2 - 9633*x0^2*x5^2 + 15791*x4");
420 polRandomIdeal.emplace_back(
"520*x0^2*x1*x3*x5 - 29475*x3^4*x5 + 19553*x1*x4^3*x5 - 23508*x0*x3^2*x5^2 - 5914*x0^2*x4*x5^2 - 1142*x0*x2*x4*x5 + 18000*x0*x2*x3 + 9342*x2*x3^2 + 8761*x0^2*x5 + 19293*x2*x5");
421 polRandomIdeal.emplace_back(
"-29406*x0^4*x1 - 6933*x1*x2^4 - 16593*x1^2*x2*x3^2 - 12720*x1*x3^4 - 8580*x4*x5^4 - 17076*x1^2*x3*x4 + 24339*x0*x2*x3*x4 + 7722*x1*x3*x4^2 - 14196*x1*x2*x3 - 15797*x1^2*x5");
422 polRandomIdeal.emplace_back(
"31060*x0^3*x1*x2 - 6848*x2*x3^3*x5 - 17952*x1*x3*x4^2*x5 + 24428*x0*x2*x3*x5^2 + 20435*x0^4 - 20926*x1^2*x2*x3 + 18778*x2^2*x3^2 + 24106*x2*x4^3 - 11252*x5^4 - 20128*x2*x3");
423 polRandomIdeal.emplace_back(
"2175*x0^3*x4^2 + 24248*x0^2*x3*x4*x5 - 25078*x0*x2*x3*x4*x5 + 17127*x0*x3^2*x4*x5 + 16204*x3^2*x4*x5^2 + 3683*x0*x1*x2*x3 + 14115*x1*x4^2*x5 - 32337*x0^2*x1 - 17348*x1^2*x5 + 3481*x1*x4");
424 polRandomIdeal.emplace_back(
"-10922*x2^3*x3^2 + 11055*x2^2*x3^3 - 24940*x2^2*x3*x5^2 - 2405*x2*x5^4 - 26339*x1*x2*x3^2 - 4489*x0*x3^2*x5 + 2022*x1*x3*x4*x5 + 6254*x3*x4^2*x5 + 19234*x1^2*x3 + 28792*x2*x4*x5");
425 polRandomIdeal.emplace_back(
"-30691*x0^2*x2*x3^2 + 6407*x0*x2*x4^3 + 30127*x1*x4^4 + 20623*x2*x3*x4^2*x5 + 14919*x0*x3^2*x5^2 + 11410*x1^2*x4^2 + 11040*x0*x2*x4^2 - 23568*x4*x5^3 + 12549*x1^2*x3 - 19452*x2^2*x3");
426 polRandomIdeal.emplace_back(
"-21749*x0^3*x1^2 + 31426*x2^3*x4^2 + 24770*x3^2*x4^3 - 8527*x0^3*x1*x5 - 24637*x0^2*x1*x3*x5 - 12368*x0*x1*x2*x3*x5 + 12346*x1*x2^2*x3*x5 - 27520*x0*x5^4 - 8249*x1^2*x3*x4 - 4866*x0*x2*x3*x4");
432 nbGen=randomIdeal.f4();
437 randomIdeal.printReducedGroebnerBasis(
"randomIdeal", modulo);
443 int randomIdealExampleF4(
bool magma)
445 cout <<
"#########################################################" << endl;
446 cout <<
"# RANDOM 4 #" << endl;
447 cout <<
"#########################################################" << endl << endl;
459 vector<Polynomial<eltType>> polRandomIdeal;
462 polRandomIdeal.emplace_back(
"x1+2*x2+3*x3");
463 polRandomIdeal.emplace_back(
"4*x0+5*x1+6*x2+7*x3");
464 polRandomIdeal.emplace_back(
"8*x0*x1+9*x1*x2+10*x2*x3");
471 nbGen=randomIdeal.f4();
476 randomIdeal.printReducedGroebnerBasis(
"randomIdeal4", modulo);
479 randomIdeal.printReducedGroebnerBasis(
true);
484 int main (
int argc,
char **argv)
486 cout <<
"#########################################################" << endl;
487 cout <<
"# BENCHMARK INT #" << endl;
488 cout <<
"#########################################################" << endl << endl;
491 chrono::steady_clock::time_point start;
492 typedef chrono::duration<int,milli> millisecs_t;
495 cout << NB_THREAD <<
" threads used " << endl << endl;
504 ofstream file(
"benchmark-int.txt");
507 file <<
"Benchmark for ideal with integer type coefficient." << endl << endl << endl;
510 start=chrono::steady_clock::now();
511 nbGen=randomIdealF4(magma);
514 file <<
"Random 10 : " << chrono::duration_cast<millisecs_t>(chrono::steady_clock::now()-start).count() <<
" ms (" << nbGen <<
" generators)" << endl << endl;
538 start=chrono::steady_clock::now();
539 nbGen=cyclic8F4(magma);
542 file <<
"Cyclic 8 : " << chrono::duration_cast<millisecs_t>(chrono::steady_clock::now()-start).count() <<
" ms (" << nbGen <<
" generators)" << endl << endl;
573 start=chrono::steady_clock::now();
574 nbGen=katsura12F4(magma);
577 file <<
"Katsura 12 : " << chrono::duration_cast<millisecs_t>(chrono::steady_clock::now()-start).count() <<
" ms (" << nbGen <<
" generators)" << endl << endl;
static void initMonomial(int nbVariable, short degree=0)
Initialise the static parameters of Monomial.
Represent an element of an extension of GF2, this class is a POD (Plain Old Data) because of the alig...
Represent an element of a prime field, this class is a POD (Plain Old Data) because of the alignement...
static void setModulo(baseType modulo)
Set the static variable MODULO.
Declaration of class F4 methods.