Qi = nfinit(x^2+1);
idealintersect(Qi,0,1)
Q = nfinit(y);
idealaddtoone(Q,1,[;])
idealaddtoone(Q,[;],1)
idealaddtoone(Q,[1,[;]])
zQ = idealstar(,4);
zerror=z=znstar(6,1);
z.clgp
p=19;N=19^4;z=znstar(N,1);g=Mod(z.gen[1],N);
for(i=1,1000,if (i%p && g^ideallog(,i,z)[1] != i, error(i)))
z=znstar(3120,1);
Mat(vector(#z,i,znlog(z.gen[i],z)))

nfisideal(Qi,matdiagonal([6,12]))
P = idealprimedec(Qi,2)[1];
idealprincipalunits(Qi,P,10)
idealprincipalunits(Qi,P,1)
idealintersect(Qi, 1/2,1/2)
ideallog(Q,1/2,idealstar(Q,3,1))
idealdiv(Qi,7*x-1,3*x+1,1)

K=nfinit(x^2-236*x+13384);\\ Q(sqrt(60)), in disguise
idealhnf(K, qfbprimeform(60,2))

Kerror=K=nfinit(x^3-2);
u=nfalgtobasis(K,x);v=nfalgtobasis(K,x^2);
idealhnf(K,Mat([u,v]))
idealhnf(K,1/4,1/6)
idealhnf(K,4,[6,0,0]~)
idealhnf(K,2,1/6)
idealhnf(K,1/3,u/2)
idealhnf(K,u,v/2)
P = idealprimedec(K,5);
idealval(K,P[1],P[2])
idealval(K,P[2],P[1])
idealval(K,P[2],P[2])
P[1][2] += 5;
idealval(K,P[1],P[1])
idealmul(K,P[1],P[1].gen[2])
idealnorm(K,P[1])
idealinv(K,Mod(x,K.pol))
idealinv(K,Mod(x-1,K.pol))
idealinv(K,2)
idealinv(K,1)
idealpow(K,idealhnf(K,x),-2)
v=[1,1/2,x,Mod(x,K.pol),P[1],[;],Mat(1),vector(5),[1,2,3;4,5,6;7,8,9],[1,2,3;0,4,5;0,0,6],I];
for(i=1,#v, if(!nfisideal(K,v[i]),print(i)))
idealred(K,2)
idealred(K,[2,[;]])
idealred(K,[2,factor(1)])
idealdown(K, -1/2)
idealdown(K, -2/3*(11*x+7))
idealdown(K, [2, 11, 5]~)
idealdown(K, idealprimedec(K, 2)[1])
idealdown(nf, idealhnf(K, -2/3*(11*x+7)))
idealismaximal(K,2)
idealismaximal(K,5)
idealismaximal(K,7).p
idealismaximal(K,-7).p
pr=idealprimedec(K,5)[1];
idealismaximal(K,pr) == pr
pr = idealprimedec(K,31)[2];
idealismaximal(K,idealhnf(K,pr)) == pr

k=nfinit(polcyclo(5));
idealfactor(k,101,100)
idealfactor(k,2*101,100)
idealfactor(k,101/103,100)
idealfactor(k,101/(2*103),100)
idealfactor(k,2^4*[0,1,0,0]~,100)
nf=nfinit(x^2+x+1);
p = 67452192952521724999; pi = idealprimedec(nf,p)[1];
q = 762234946175168528650011228121; qi = idealprimedec(nf,q)[1];
f=idealfactor(nf, idealdiv(nf,pi,qi))
idealfactor(nf, 787033*(x+1), 100)
fa = idealfactor(nf, 471440*x + 612823, 100)
idealfactor(nf,fa[2,1],10)
idealfactor(nf,fa[2,1],40)
idealfactor(nf, 471440*x + 612823, 2000)
id=idealfactorback(nf,f)
idealnumden(nf,id)
idealnumden(nf,pi)
idealnumden(nf,1)
idealnumden(nf,1/2)
idealnumden(nf,x/2)
nffactorback(nf, [3, x+1, [1,2]~], [1, 2, 3])

test(nf,F,v)=
{
  my(Y = idealchinese(nf,F,v), P = F[,1], E = F[,2]);
  for (i=1,#P, if( nfeltval(nf, nfeltadd(nf,v[i],-Y),P[i]) < E[i], error(i)));
  Y;
}
v = [x,0,[0,1/7^4]~,Mod(x,nf.pol)];
F = idealfactor(nf, 2*3*7);
F[,2] *= 3;
test(nf,F,v)
F[,2] = [0,1,-2,3]~;
test(nf,F,v)
F[,2] = [1,1,1,1]~;
test(nf,F,[1,0,0,0])
test(nf,F,[0,1/11,0,0])
P = F[2,1];
v = nfeltval(nf, 0, P, &y); [v == valuation(0,2),y]
v = nfeltval(nf, 12, P, &y); [v,y]
v = nfeltval(nf, (2/5*(1-x))^3, P, &y); [v,y]
v = nfeltval(nf, [2/5,3; 1-x,3], P, &y); [v,y]
v = nfeltval(nf, nfeltpow(nf,P.gen[2],4), P, &y); [v,y]

K = nfinit(t^2-2);
fa = idealfactor(K, 2^2*3);
C = idealchinese(K, [fa, [1,1]]);
idealchinese(K, C, [1,t])
idealchinese(K, C, [-1,t])
C = idealchinese(K, fa);
idealchinese(K, C, [1,t])
C = idealchinese(K, [C,[-1,-1]]);
idealchinese(K, C, [1,t])

F = idealfactor(Q,2);
idealchinese(Q, [F,[-1]], [0])
idealchinese(Q, [F,[1]], [0])
idealchinese(Q, [F,[0]], [0])

K = nfinit(x^3 - 2);
A = [46875, 30966, 9573; 0, 3, 0; 0, 0, 3];
idealispower(K, A, 3, &B)
B
A = [9375, 2841, 198; 0, 3, 0; 0, 0, 3];
idealispower(K, A, 3)
idealispower(K, A, 1)
idealispower(K, x, 2)

\\ #2019
idealispower(nfinit('y), 4, 2, &A)
A

K = nfinit(x^3 - 2);
idealispower(K,2*5^3,3, &A)
A

\\ #1643
K=nfinit(x^8-1310*x^6+575380*x^4-93689568*x^2+3644295424);
idealprimedec(K,17,1)

K=nfinit(2*x^2+1);
idealprimedec(K,2)

nf=nfinit(x^6+108); a=Mod(x,x^6+108);
{ for(k=2,5,
    u=nfalgtobasis(nf,(2*a^2+a+3)*random(2^100*x^6)^k);
    b=idealredmodpower(nf,u,k);
    v=nfeltmul(nf,u,nfeltpow(nf,b,k)); print(v)); }
idealredmodpower(nf,0,2)
idealredmodpower(nf,1,2)
idealredmodpower(nf,x^5-3*x^4-3*x^3+18*x^2-18*x-54,2)
idealredmodpower(nf,x/2,2)
idealredmodpower(nf,x/12,2)

\\ #2181
K=nfinit(x^8-x^7+853*x^6-1705*x^5+728461*x^4+1452660*x^3+619196112*x^2+618470208*x+526936617216);
u=-3295726369461731289346462354027551095147507850796810976485053015787461298353108007583029758931909391395188837628668142381696585601437206958160059088656895054166218670573364811083286147878242585838527045253797229311486033571024871881929287881077914632802195379103689126727632008134046230078244187204095701757094128/260724204971*x^7+152863926358270815544472123370490820166780242836471008050258163804853439449801824873411217655847998109907297746769178336511497087330162778040820494775879882958573450265443161858185457172379185261151238335647103015398581733887282351101399242916823136952231183683199101605679082163422859803969844993303192375158488395/260724204971*x^6+2406969062350137466974129399472410998165327268340813973208132297136368946979717955888179787396728806465215113589203085301099423514588331588410673016489928975328731366941577055358386555440702685134595491735392116911370554413115054763882219750201465929629596212857087211828803278102003368100380518925867680945671392758/260724204971*x^5+137081377031906128392870125864427558076072913056967813032379896192971269428599909167009269953614565674098274721075933937534960141450285421213854815419440875039596388799075475996861092731865801389720913656617782135991020999908157644078900708443933197909880176896579654094373664440105249916909867638439259664338357/357911*x^4-4070384803042875340985803129476097507909253548244290568349511184577280798573048974379898801802416130979368946784139048555791283831757663295406137658907489681591104458511952667444030644669716367155349587332608227047763781013968599806140375397111055668273281172821830908149779634693364726621708244806767055285739243/357911*x^3+168568151397754802332659319517140588351513494220656094382082344667989521434320523470084625110632495651098654578074052487914578127730269525935219602706975998497315707490354656426031415845673577166983029177291634864418998327847405449225543246927771172876308151314755102488557891516111932299073018228704234809975838558280/3672171901*x^2+181362559355967687441569495330120111725438491767051963183672797774029950131820046784857408792196513411721255514863234109334262708584276295532717046352106452388095588290213473060646544156544816015150427479886047726758182800473609208937424330313768632341406130437806943904609093544637112676778467331699309127867113568552/51720731*x+372127521854786946433207593778098718752150069645620903197210809657741784407186452886727962060707364324199752951617693996241954393320511097561377550117731467675995153475373681027825265683582338981915799545023659321144005643029640559571880834933169400027679490835114916769308702041993834252518389568506982417895596595904/728461;
if (!idealispower(K,u,5,&v) || idealpow(K,v,5) != idealhnf(K,u), error("#2181"))

\\ #2258
K = nfinit(x^4 + 1393*x^2 + 484416);
J = idealpow(K,idealprimedec(K,3)[1],-2) / 5;
idealdiv(K,J,[0,1/5,0,0]~)

\\ Errors, keep at end of file
idealaddtoone(Q,2,[;])
idealaddtoone(Q,[;],[;])
idealaddtoone(Q,[1,[;],Mat(1/2)])
ideallog(Q,2,zQ)
ideallog(,0,zerror)
ideallog(,2,zerror)
ideallog(,3,zerror)
ideallog(Q,3,zerror)
ideallog(,3,zQ)
idealmul(Kerror,[2,1;0,1],[2,1;0,1])
idealmul(Kerror,matid(4),matid(4))
idealred(nf,[2,Mat(1)])
