Karim BELABAS on Thu, 4 Feb 1999 18:14:19 +0100 (MET) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: nfgaloisapply |
[Paul van Wamelen:] > According to the documentation nfgaloisapply is supposed to be able to > take an ideal in idealprimedec form as an argument, but it does not > seem to: [...] According to source code, it looks like you're the first one to have actually tried it... Here's a patch: Karim. *** src/basemath/base1.c.orig Wed Jan 20 17:09:33 1999 --- src/basemath/base1.c Thu Feb 4 18:04:42 1999 *************** *** 897,909 **** galoisapply(GEN nf, GEN aut, GEN x) { long av=avma,tetpil,lx,j,N; ! GEN p1,y,pol,unmod; nf=checknf(nf); pol=(GEN)nf[1]; if (typ(aut)==t_POL) aut = gmodulcp(aut,pol); else { ! if (typ(aut)!=t_POLMOD || !gegal((GEN)aut[1],pol) || gcmp0((GEN)aut[1])) err(talker,"incorrect galois automorphism in galoisapply"); } switch(typ(x)) --- 897,909 ---- galoisapply(GEN nf, GEN aut, GEN x) { long av=avma,tetpil,lx,j,N; ! GEN p,p1,y,pol; nf=checknf(nf); pol=(GEN)nf[1]; if (typ(aut)==t_POL) aut = gmodulcp(aut,pol); else { ! if (typ(aut)!=t_POLMOD || !gegal((GEN)aut[1],pol)) err(talker,"incorrect galois automorphism in galoisapply"); } switch(typ(x)) *************** *** 930,944 **** } if (lg(x)!=6) err(typeer,"galoisapply"); y=cgetg(6,t_VEC); y[1]=x[1]; y[3]=x[3]; y[4]=x[4]; ! unmod=gmodulsg(1,(GEN)x[1]); ! p1=centerlift(gmul(unmod,algtobasis(nf,galoisapply(nf,aut,(GEN)x[2])))); ! if (gcmp1((GEN)x[3])) ! if (ggval(subres(gmul((GEN)nf[7],p1),pol),(GEN)x[1]) > itos((GEN)x[4])) ! p1[1] = (signe(p1[1]) > 0)? lsub((GEN)p1[1],(GEN)x[1]) ! : ladd((GEN)p1[1],(GEN)x[1]); y[2]=(long)p1; ! p1=centerlift(gmul(unmod,algtobasis(nf,galoisapply(nf,aut,(GEN)x[5])))); ! y[5]=(long)p1; tetpil=avma; return gerepile(av,tetpil,gcopy(y)); case t_COL: --- 930,943 ---- } if (lg(x)!=6) err(typeer,"galoisapply"); y=cgetg(6,t_VEC); y[1]=x[1]; y[3]=x[3]; y[4]=x[4]; ! p = (GEN)x[1]; ! p1=centermod(galoisapply(nf,aut,(GEN)x[2]), p); ! if (is_pm1(x[3])) ! if (ggval(subres(gmul((GEN)nf[7],p1),pol), p) > itos((GEN)x[4])) ! p1[1] = (signe(p1[1]) > 0)? lsub((GEN)p1[1], p) ! : ladd((GEN)p1[1], p); y[2]=(long)p1; ! y[5]=(long)centermod(galoisapply(nf,aut,(GEN)x[5]), p); tetpil=avma; return gerepile(av,tetpil,gcopy(y)); case t_COL: -- Karim Belabas email: Karim.Belabas@math.u-psud.fr Dep. de Mathematiques, Bat. 425 Universite Paris-Sud Tel: (00 33) 1 69 15 57 48 F-91405 Orsay (France) Fax: (00 33) 1 69 15 60 19 -- PARI/GP Home Page: http://hasse.mathematik.tu-muenchen.de/ntsw/pari/