default(realprecision,38);
allocatemem(40*10^6)
count = 0;
do(nf,f, H = 0, sol)=
{ my(T,K);
  setrand(1); print(count++);
  K=bnrinit(bnfinit(nf,1),f);
  T=liftpol(rnfkummer(K, H));
  if (!sol, return(T));
  sol=rnfequation(K,sol); T=rnfequation(K,T);
  \\ 32 is enough except for (4)
  exponent(T) < exponent(sol)+128 && !(nfisisom(sol,T)===0);
}

\\1
s=x^3+(-1518*y^3-19215*y^2-34929*y-44574)*x+(-60109*y^3-749439*y^2-1267239*y - 1564605);
do(y^4+12*y^3+15*y^2+15*y-15,1,,s)
s=x^3+(-2966607821298137695221*y^3+476631046289035481994*y^2+192709457001514904928*y-3466403968157289515244)*x+(2540572479236177356777153564954770*y^3-408570956574208393016204492517851*y^2-164574364514926539352315962553323*y+2968147937781020190344296341491759);
do(y^4-13*y^3+2*y^2+2*y-15,1,,s)
s=x^5-1715*x^3+588245*x+2224060;
do(y^4-y^3-2404*y^2+2404*y+1154401, 5, matdiagonal([5,1]));
s=x^5+110*x^3-385*x^2+(-6875*y+13310)*x+(20625*y+32197);
do(quadpoly(-8,y), 11, [5,2;0,1],s)
\\ behaviour depend on kernel (bnfinit(Kz) too complicated
\\do(quadpoly(181433,y),1)
\\5
do(quadpoly(-1752,y), 19, matdiagonal([5,1,1]))
s=x^3+(336*y^5-828*y^4+1392*y^3-648*y^2+642*y+708)*x+(-1912*y^5+4824*y^4-8258*y^3+4314*y^2-4150*y-3594);
do(nf=nfinit(y^6-2*y^5+3*y^4+y^2+3*y+1), idealprimedec(nf,2)[1],, s)

s=x^5+(17017652173565571513458621056962*y^3+12092145775172043054548359109292*y^2-876325659055432449266468856998622*y-622686226498527114644408241456762)*x^3+(-3509904899717566966361185126674382222066108248*y^3-2494015112748825304350579819178605081336660639*y^2+180742895265230743774161845730710476962698024868*y+128429551566977306010167099728851556007053429284)*x^2+(-1972361656110697509244968379675717662455301447086165796289400202*y^3-1401490900378015477557575577469182804976562578329531347503191642*y^2+101566955920731277024130968369809169962198986145523774515702599862*y+72169910655579515123740845629476995598141584116856346581053927787)*x+(34721240711563041872902655091500329727616260135040946866379973649336303371935962/5*y^3+24671693832786211543559425805647889122051819888022849161623390846096663130382901/5*y^2-1787973678122699988761167318155157950566709361557781579817258775320505214806036792/5*y-1270471281086259788398204676300747617880461477918128294395645166564235888677144306/5);
do(y^4-52*y^2+26, 3, Mat(5), s)
do(quadpoly(5288,y), 9, [1,0;0,3])
do(y^4+y^3-9*y^2-9*y+11, 10, Mat(5))
\\10
s=x^5+(-529233791226172709100320/81*y^3+3856182858784066157178560/81*y^2+19968952019298399590558240/27*y-1767943061901363725254720)*x^3+(21016918588870574311435370027106800/9*y^3-153136633658805062951977710977807840/9*y^2-793006504596568244295808438522363120/3*y+631876581124697283193080866876590640)*x^2+(99538230152635328168723025018245409255387840040/81*y^3-725270425418204908413609232830115267947275641300/81*y^2-3755758182784678377160496318527825877206726398460/27*y+332514526301452771136644707346843750911135033280)*x+(1941590900241005290199398084175241231379799910514989312794/27*y^3-14147111678061387270415384857052593696568582438030377393362/27*y^2-73259750550300118059950705916778690241941650239204460587372/9*y+19458066839490303713476895648671719865039612076039284017118);
do(y^4-y^3-159*y^2-441*y+1701, 10, Mat(5),s)
s=x^5+(-2760116613489424684185680*y-25596268476580686164852330)*x^3+(2822328864746831957012367413172460940*y+26173201160487613338298184296409027890)*x^2+(22521335074832656216040962332820759440095503975180*y+208854269493224240023328311873583704058925723623705)*x+(-6679144273925645056255136241787816440935337639536263503273192*y-61939835872761085128676422377548845549491163927579451363961202);
do(quadpoly(344,y),11,matdiagonal([5,1]),s)
/* \\ used to be very slow (>20h). Now ~ 7mn
 do(quadpoly(17,y),311,Mat(13))
 do(nf=nfinit(y^4-y^3+2*y+1), idealprimedec(nf,463)[2]);
 bnrclassfield(bnfinit(y^2+5393946914743),3);
*/


/* 0 eq. OK at \p200 */
do(y^6-19*y^5-11*y^4-6*y^3-15*y^2-11*y+15, 4, [2,1,1; 0,1,0;0,0,1])

/* more than 1 eq. OK at \p200 */
P=do(y^6+8*y^5-7*y^4+y^3+4*y^2-9*y+10, 8, [2,1,1,1,1;0,1,0,0,0;0,0,1,0,0;0,0,0,1,0;0,0,0,0,1]);
(P==x^2+(1/4*y^5+9/4*y^4+1/2*y^3+3/4*y^2+7/4*y-3/2)) || (P==x^2+(-1/4*y^5-7/4*y^4+7/2*y^3-15/4*y^2+11/4*y-3/2))

/* 1 eq. Wrong result at \p28. OK at \p200 */
do(y^6-9*y^5-20*y^4-4*y^2-y-17, 17, [2,0,1;0,1,0;0,0,1])

setrand(1); for(i=1,10,rnfkummer(bnrinit(bnfinit(quadpoly(2540,y)),9),[3,1;0,1]))

\\15
do(quadpoly(689,y), 2, Mat(2))
do(y^8-76*y^6+1425*y^4-5776*y^2+5776, 5, matdiagonal([2,1]))
s=x^3+(257*y^3-1029*y^2-7159*y+54438)*x+(1388161802/3*y^3-11630342135/6*y^2-36056723284/3*y+570374601445/6);
do(y^4 - 34*y^2 + 1189, 5, matdiagonal([3,1,1]), s)
do(y, [36,[1]], matdiagonal([3,1]))
\\ #1632
do(quadpoly(3409,y),25,[5,1;0,1])

\\ #1744
lift(rnfkummer(bnrinit(bnfinit(y^4-62*y^2+186,1),744),[1,0,0,0;0,1,0,0;0,0,2,1;0,0,0,1]))

\\ #1760
mod=[[385,0,305;0,385,265;0,0,5],[0]]; setrand(1);
bnr=bnrinit(bnfinit(y^3-y^2+1),mod); lift(rnfkummer(bnr,[1,0,0;0,2,1;0,0,1]))

mod=[[429,234,78;0,39,0;0,0,39],[0]]; setrand(1);
bnr=bnrinit(bnfinit(y^3+y-1,1),mod); lift(rnfkummer(bnr,[2,1,1;0,1,0;0,0,1]))

\\ #1873
rnfkummer(bnrinit(bnfinit(y^6-2*y^5+8*y^4-18*y^3+24*y^2-18*y+6),168),matdiagonal([2,1,1,1,1,1,1,1]))

\\ #2154
setrand(1); k=bnfinit(y^4 - 561*y^2 - 1334*y + 104607,1);
bnr=bnrinit(k,idealprimedec(k,2)[1]);
\\ no need to print result [depends on arch], was "bug in rnfkummer"
rnfkummer(bnr,subgrouplist(bnr,[3],0)[1]);

\\ #2182
rnfkummer(bnrinit(bnfinit(y^3+28*y+2,1),1))

K=bnrinit(bnfinit(y^4-y^3+16*y^2-16*y+61),[89,9,52,85;0,1,0,0;0,0,1,0;0,0,0,1]);
bnrclassfield(K,5)

\\ #2280
setrand(1);bnf=bnfinit(quadpoly(-2923,a)); R=bnrclassfield(bnf,3)

\\ ERRORS, keep at end of file
rnfkummer(bnfinit(x^2+23))
