// monitor("times.io","io");
// option(mem);

intmat tempo1[4][7];
intmat tempo2[4][7];
intmat tempo3[4][7];
intmat Tempo1[4][7];
intmat Tempo2[4][7];
intmat Tempo3[4][7];
intmat prepro[4][7];
intmat Prepro[4][7];
int tempo;
int p;
int r;
list CURVE;
list CURVE2;
list CODE;
list CODE2;
list GBNT;
list GBNT2;

system("--ticks-per-sec",1000);

p=2;
r=2;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[1,1]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,6);
tempo2[1,1]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[1,1]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[1,1]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,6);
Tempo2[1,1]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[1,1]=rtimer-tempo;

r=3;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[1,2]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,25);
tempo2[1,2]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[1,2]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[1,2]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,25);
Tempo2[1,2]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[1,2]=rtimer-tempo;

r=4;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[1,3]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,120);
tempo2[1,3]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[1,3]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[1,3]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,120);
Tempo2[1,3]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[1,3]=rtimer-tempo;

r=5;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[1,4]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,480);
tempo2[1,4]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[1,4]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[1,4]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,480);
Tempo2[1,4]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[1,4]=rtimer-tempo;

r=6;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[1,5]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,2000);
tempo2[1,5]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[1,5]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[1,5]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,2000);
Tempo2[1,5]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[1,5]=rtimer-tempo;

r=7;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[1,6]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,8000);
tempo2[1,6]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[1,6]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[1,6]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,8000);
Tempo2[1,6]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[1,6]=rtimer-tempo;

p=3;
r=2;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[2,1]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,20);
tempo2[2,1]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[2,1]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[2,1]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,20);
Tempo2[2,1]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[2,1]=rtimer-tempo;

r=3;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[2,2]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,220);
tempo2[2,2]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[2,2]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[2,2]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,220);
Tempo2[2,2]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[2,2]=rtimer-tempo;

r=4;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[2,3]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,2000);
tempo2[2,3]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[2,3]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[2,3]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,2000);
Tempo2[2,3]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[2,3]=rtimer-tempo;

r=5;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[2,4]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,10000);
tempo2[2,4]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[2,4]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[2,4]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,10000);
Tempo2[2,4]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[2,4]=rtimer-tempo;

p=5;
r=2;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[3,1]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,80);
tempo2[3,1]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[3,1]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[3,1]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,80);
Tempo2[3,1]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[3,1]=rtimer-tempo;

r=3;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[3,2]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,1500);
tempo2[3,2]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[3,2]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[3,2]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,1500);
Tempo2[3,2]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[3,2]=rtimer-tempo;

p=7;
r=2;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[4,1]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,200);
tempo2[4,1]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[4,1]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[4,1]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,200);
Tempo2[4,1]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[4,1]=rtimer-tempo;

r=3;
tempo=rtimer;
CURVE=NTcurve(p,r);
//tempo1[4,2]=rtimer-tempo;
//tempo=rtimer;
CODE=root_diagram_NTcode(CURVE,3000);
tempo2[4,2]=rtimer-tempo;
tempo=rtimer;
GBNT=GB_NTcode(CODE);
tempo3[4,2]=rtimer-tempo;

tempo=rtimer;
CURVE2=NTcurve2(p,r);
//Tempo1[4,2]=rtimer-tempo;
//tempo=rtimer;
CODE2=NTmodule_basis(CURVE2,3000);
Tempo2[4,2]=rtimer-tempo;
tempo=rtimer;
GBNT2=GB_NTbuchberger(CODE2);
Tempo3[4,2]=rtimer-tempo;

print("TIMES ...");

//print("times: preprocessing of the curve points");
//print(tempo1);
print("times: precomputation of the root diagram");
print(tempo2);
print("times: computation of the Groebner Basis");
print(tempo3);

print("ALTERNATIVE TIMES ...");

//print("times: preprocessing of the curve points");
//print(Tempo1);
print("times: precomputation of a module basis");
print(Tempo2);
print("times: computation of the Groebner Basis with Buchberger");
print(Tempo3);

exit;