gettime; allocatemem(20*10^6)
v=[321,520,577,840,904,1009,1129,1229,1297,1509,1901,1937,2305,2920,3281,2^15-199];
for(i=1, #v, print(v[i]": "quadhilbert(v[i])))

{
v = [
[y^2-145,1],
[y^2-229,1],
[y^2-401,1],
[y^2-577,1],
[y^2-761,1],
[y^3-y^2-17*y-16,1],
[y^3-14*y-7,1],
[y^3-y^2-16*y+22,1],
[y^3-36*y-45,1],
[y^3-21*y-35,1],
/* tougher: */
[y^3-12*y-1,1],
[y^3-y^2-17*y-16,1],
[y^3-y^2-30*y-27,1],
[y^3-14*y-7,1],
[y^3-y^2-16*y+22,1],
[y^3-y^2-30*y+71,1],
[y^3-y^2-16*y-6,1],
[y^3-36*y-45,1],
[y^3-12*y-1,[5,y+1]],
[y^3-y^2-37*y+64,1],
[y^3-y^2-9*y+8,1],
[y^3-21*y-35,1],
[y^3-y^2-16*y+8,1],
[y^3-y^2-4*y-1,7],
[y^3-12*y-1,[5,y+1]],
[y^3-y^2-7*y+6,[29,y-13]]
];
}

allocatemem(20*10^6)

do(w) = 
{
  local(pol, mod, bnf, bnr, relpol);
  pol = w[1]; 
  mod = w[2]; bnf = bnfinit(pol);
  if (type(mod) == "t_VEC", mod = idealhnf(bnf, mod[1], mod[2]));
  bnr = bnrinit(bnf, mod, 1); 
  bnrstark(bnr, 0);
}			
for(i = 1, #v, print(v[i]": "do(v[i]))); 

print("Total time spent: ",gettime);
