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(Q,Mat(2))
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(x^3-9216*x-1); pr=idealprimedec(K,2)[1];
y=[-7251900112893394084630798621252778318328823533401193294840423185069284010118591056272912470850596269372678704921912086470447212545880393655162109344551257556522001544975617113653626505416989042867708649441635537906645036859305944019456658330693793415682691843066999955760793392760905274945376164960562430160499108743499489166126112286009187484098481841959052276342967337596329855275728191062143785239993461801661066499033908665360152840022520735711822526852796653675739586967804491713715733508499227401313919685231314583572415034026601694878847990666591234129630499499618519087857790138725749828198318462952936971186543274927991920100085364830093053624697582983462351788061311719734582985213317107441673887626159137920132977234063900896027136396636365117069606665341092785349565712790993664097231039603008339544399512868277612682210429393171461063237969283817710245,-2360132442057874747689273820720362046424339941461618886350826050226768088358242993964507296057577657594202672684207104480519301251180707938704041235100833509586519915077407676914716744353674738283667692061514086450255178210255999941322465197431410516193011963762146689482400150209177411411055794184310126356273013824737007989745355371999985613009192210527609466796508488868265962799895319379492168131560647427585471768508335892838647659384132817585825652205567211488476594688742130447090335185302733753528466373580383524136862656055037349165584500453223287208442578102315800773028624685576661911327535886726849611703792108343011574990463354707094879326961457784184392523878142031564479577307514152659262501057646532992968611372467068531210214277356801401290262284113607511465114006914847245463594108562489712048466456627569000216549896556809542683160106911342243,7079629137248140607534263802511617544277840436474159263127045636894875018982059388290823938229939700694216000711029248248544320867096904399737148347483828065653911945212992193990277681601615586973113160415823443330728056183046750020038707042234967620499753361349333910802934291323385057054936022813276581538843838138306483625117978511593393573171189586878645265348062069729269352782261507177928838084859848129123524772826668386532195847961354852784978639003003276853101259131041414526570347944356412769953044865974762989385211557990996134656942808880432381990089265583355794420791687584993069037904769041249653099646630151551521202190654880886047498561993191792371550922197828560939461770201848049399192335647711875733227730750137220427214593608880562566905108670517623437950158138092591013780943449078454922467260689488043719085499977593585468727939031959225672]~;
nfeltval(K,y,pr)

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)])

K=nfinit(y^3+8*y^2-128*y-512);
idealstar(K,[4,Vecsmall([1,1,1])])
idealstar(K,[4,Vecsmall([1,4,2])])
idealstar(K,[4,Vecsmall([-1,2,3])])
idealstar(K,[4,Vecsmall([1,1])])
