Karim BELABAS on Tue, 19 Jan 1999 18:43:37 +0100 (MET)


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: nf.sign in 2.0.12


[Ilya:]
> I see no purpose for the current user interface without (..., 3).  The
> result cannot be used without an additional check for the polynomial
> to be monic, or the length of the result to be 2.  Thus the automatic
> conversion to monic does not simplify the program at all, but makes it
> harder to understand.
> 
> The only acceptable explanation for the current behaviour I can see
> now would be something like
> 
>    "We are working over making all the places which accept nf to
>    accept [nf,var_change] too."
> 
> but apparenlty it is not so.
> [...]
> I made an experiment: I had the documentation before my eyes, but
> could not understand how to use nfinit().  This is a serious datapoint
> against the current user interface.  ;-)

Ok, you have a point.

The following patch implements the behaviour deemed acceptable above. You get
the same warning as before, but then nf and bnf are accepted in the form
[(b)nf, t_POLMOD].

  Karim.

*** src/basemath/base1.c.orig	Mon Jan 18 18:35:40 1999
--- src/basemath/base1.c	Tue Jan 19 18:26:09 1999
***************
*** 16,31 ****
    if (lg(rnf)!=12) err(idealer1);
  }
  
! void
  checkbnf(GEN bnf)
  {
    if (typ(bnf)!=t_VEC) err(idealer1);
!   if (lg(bnf)!=11)
    {
!     if (lg(bnf)==10 && typ(bnf[1])==t_POL)
!       err(talker,"please apply bnfinit first");
!     err(idealer1);
    }
  }
  
  GEN
--- 16,38 ----
    if (lg(rnf)!=12) err(idealer1);
  }
  
! GEN
  checkbnf(GEN bnf)
  {
    if (typ(bnf)!=t_VEC) err(idealer1);
!   switch (lg(bnf))
    {
!     case 11: return bnf;
!     case 10:
!       if (typ(bnf[1])==t_POL)
!         err(talker,"please apply bnfinit first");
!       break;
!     case 3:
!       if (typ(bnf[2])==t_POLMOD)
!         return checkbnf((GEN)bnf[1]);
    }
+   err(idealer1);
+   return NULL; /* not reached */
  }
  
  GEN
***************
*** 33,40 ****
  {
    if (typ(nf)==t_POL) err(talker,"please apply nfinit first");
    if (typ(nf)!=t_VEC) err(idealer1);
!   if (lg(nf)==10) return nf;
!   if (lg(nf)==11) return checknf((GEN)nf[7]);
    err(idealer1);
    return NULL; /* not reached */
  }
--- 40,51 ----
  {
    if (typ(nf)==t_POL) err(talker,"please apply nfinit first");
    if (typ(nf)!=t_VEC) err(idealer1);
!   switch(lg(nf))
!   {
!     case 10: return nf;
!     case 11: return checknf((GEN)nf[7]);
!     case 3: if (typ(nf[2]) == t_POLMOD) return checknf((GEN)nf[1]);
!   }
    err(idealer1);
    return NULL; /* not reached */
  }
***************
*** 44,50 ****
  {
    if (typ(bnr)!=t_VEC || lg(bnr)!=7)
      err(talker,"incorrect bigray field");
!   checkbnf((GEN)bnr[1]);
  }
  
  void
--- 55,61 ----
  {
    if (typ(bnr)!=t_VEC || lg(bnr)!=7)
      err(talker,"incorrect bigray field");
!   (void)checkbnf((GEN)bnr[1]);
  }
  
  void
***************
*** 2213,2219 ****
    long av=avma,tetpil,j,N,n;
    GEN p1,id,Az,Iz,nf,A,I;
  
!   checkbnf(bnf);
    if (typ(order)!=t_VEC || lg(order)<3)
      err(talker,"not a pseudo-basis in nfsimplifybasis");
    A=(GEN)order[1]; I=(GEN)order[2]; n=lg(A)-1; nf=(GEN)bnf[7];
--- 2375,2381 ----
    long av=avma,tetpil,j,N,n;
    GEN p1,id,Az,Iz,nf,A,I;
  
!   bnf = checkbnf(bnf);
    if (typ(order)!=t_VEC || lg(order)<3)
      err(talker,"not a pseudo-basis in nfsimplifybasis");
    A=(GEN)order[1]; I=(GEN)order[2]; n=lg(A)-1; nf=(GEN)bnf[7];
***************
*** 2333,2339 ****
    long av=avma,tetpil,j,N,n;
    GEN nf,A,I,classe,p1,p2,id;
  
!   checkbnf(bnf);
    nf=(GEN)bnf[7]; N=lgef(nf[1])-3; id=idmat(N);
    if (typ(order)==t_POL) order=rnfpseudobasis(nf,order);
    if (typ(order)!=t_VEC || lg(order)<3)
--- 2495,2501 ----
    long av=avma,tetpil,j,N,n;
    GEN nf,A,I,classe,p1,p2,id;
  
!   bnf = checkbnf(bnf);
    nf=(GEN)bnf[7]; N=lgef(nf[1])-3; id=idmat(N);
    if (typ(order)==t_POL) order=rnfpseudobasis(nf,order);
    if (typ(order)!=t_VEC || lg(order)<3)
***************
*** 2370,2376 ****
    long av=avma,tetpil,j,N,n;
    GEN nf,A,I,p1,id;
  
!   checkbnf(bnf); nf=(GEN)bnf[7];
    N=lgef(nf[1])-3; id=idmat(N);
    if (typ(order)==t_POL)
    {
--- 2532,2538 ----
    long av=avma,tetpil,j,N,n;
    GEN nf,A,I,p1,id;
  
!   bnf = checkbnf(bnf); nf=(GEN)bnf[7];
    N=lgef(nf[1])-3; id=idmat(N);
    if (typ(order)==t_POL)
    {
***************
*** 2403,2409 ****
    long av=avma,n,N,j;
    GEN nf,p1,id,I;
  
!   checkbnf(bnf);
    if (gcmp1(gmael3(bnf,8,1,1))) return 1;
  
    nf=(GEN)bnf[7]; N=lgef(nf[1])-3; id=idmat(N);
--- 2565,2571 ----
    long av=avma,n,N,j;
    GEN nf,p1,id,I;
  
!   bnf = checkbnf(bnf);
    if (gcmp1(gmael3(bnf,8,1,1))) return 1;
  
    nf=(GEN)bnf[7]; N=lgef(nf[1])-3; id=idmat(N);
*** src/basemath/base3.c.orig	Tue Dec 15 16:29:27 1998
--- src/basemath/base3.c	Tue Jan 19 18:26:37 1999
***************
*** 1779,1785 ****
  init_units(GEN bnf, GEN *funits, GEN *racunit)
  {
    GEN p1;
!   checkbnf(bnf); p1=(GEN)bnf[8];
    if (lg(p1)==5) *funits=(GEN)buchfu(bnf)[1];
    else
    {
--- 1779,1785 ----
  init_units(GEN bnf, GEN *funits, GEN *racunit)
  {
    GEN p1;
!   bnf = checkbnf(bnf); p1=(GEN)bnf[8];
    if (lg(p1)==5) *funits=(GEN)buchfu(bnf)[1];
    else
    {
*** src/basemath/buch1.c.orig	Wed Dec 16 12:32:28 1998
--- src/basemath/buch1.c	Tue Jan 19 18:33:16 1999
***************
*** 242,248 ****
  {
    if (typ(D)!=t_INT)
    {
!     checkbnf(D);
      if (degree(gmael(D,7,1))!=2)
        err(talker,"not a polynomial of degree 2 in quadhilbert");
      D=gmael(D,7,3);
--- 242,248 ----
  {
    if (typ(D)!=t_INT)
    {
!     D = checkbnf(D);
      if (degree(gmael(D,7,1))!=2)
        err(talker,"not a polynomial of degree 2 in quadhilbert");
      D=gmael(D,7,3);
***************
*** 760,766 ****
  
    if (typ(D)!=t_INT)
    {
!     bnf=D; checkbnf(bnf);
      if (degree(gmael(bnf,7,1))!=2)
        err(talker,"not a polynomial of degree 2 in quadray");
      D=gmael(bnf,7,3);
--- 760,766 ----
  
    if (typ(D)!=t_INT)
    {
!     bnf = checkbnf(D);
      if (degree(gmael(bnf,7,1))!=2)
        err(talker,"not a polynomial of degree 2 in quadray");
      D=gmael(bnf,7,3);
*** src/basemath/buch2.c.orig	Tue Dec 15 16:29:35 1998
--- src/basemath/buch2.c	Tue Jan 19 18:28:05 1999
***************
*** 610,616 ****
    GEN nf,xarch,reg,res,fu,y;
    long av=avma,tetpil,c,RU;
  
!   checkbnf(bnf); nf = checknf(bnf);
    RU=itos(gmael(nf,2,1))+itos(gmael(nf,2,2));
    res=(GEN)bnf[8];
    if (lg(res)==7 && lg(res[5])==RU)
--- 610,616 ----
    GEN nf,xarch,reg,res,fu,y;
    long av=avma,tetpil,c,RU;
  
!   bnf = checkbnf(bnf); nf = (GEN)bnf[7];
    RU=itos(gmael(nf,2,1))+itos(gmael(nf,2,2));
    res=(GEN)bnf[8];
    if (lg(res)==7 && lg(res[5])==RU)
***************
*** 934,942 ****
    long av = avma,c, tx = typ(x);
    GEN nf,y;
  
!   if (typ(bnf)!=t_VEC || lg(bnf)!=11)
!     err(talker,"not a big number field vector in isprincipal");
!   nf = checknf(bnf);
    if (tx==t_POLMOD || tx==t_POL)
    {
      if (tx==t_POLMOD)
--- 934,940 ----
    long av = avma,c, tx = typ(x);
    GEN nf,y;
  
!   bnf = checkbnf(bnf); nf = (GEN)bnf[7];
    if (tx==t_POLMOD || tx==t_POL)
    {
      if (tx==t_POLMOD)
***************
*** 998,1004 ****
    long av=avma,tetpil,tx = typ(x),i,R1,RU,nru;
    GEN RES,matunit,y,p1,p2,p3,nf,ro1,pisurw,pish;
  
!   checkbnf(bnf); nf=(GEN)bnf[7];
    matunit=(GEN)bnf[3]; RU=lg(matunit);
    RES=(GEN)bnf[8]; ro1=(GEN)RES[4];
    nru=itos((GEN)ro1[1]);
--- 998,1004 ----
    long av=avma,tetpil,tx = typ(x),i,R1,RU,nru;
    GEN RES,matunit,y,p1,p2,p3,nf,ro1,pisurw,pish;
  
!   bnf = checkbnf(bnf); nf=(GEN)bnf[7];
    matunit=(GEN)bnf[3]; RU=lg(matunit);
    RES=(GEN)bnf[8]; ro1=(GEN)RES[4];
    nru=itos((GEN)ro1[1]);
***************
*** 1056,1062 ****
    long av,i,j,R1,RU,mun;
    GEN matunit,y,p1,p2,nf,pi;
  
!   checkbnf(bnf); nf=checknf(bnf);
    matunit=(GEN)bnf[3]; RU=lg(matunit);
    R1=itos(gmael(nf,2,1)); pi=mppi(MEDDEFAULTPREC);
    y=cgetg(RU,t_MAT); mun = lnegi(gun);
--- 1056,1062 ----
    long av,i,j,R1,RU,mun;
    GEN matunit,y,p1,p2,nf,pi;
  
!   bnf = checkbnf(bnf); nf=(GEN)bnf[7];
    matunit=(GEN)bnf[3]; RU=lg(matunit);
    R1=itos(gmael(nf,2,1)); pi=mppi(MEDDEFAULTPREC);
    y=cgetg(RU,t_MAT); mun = lnegi(gun);
***************
*** 2134,2140 ****
    long av=avma,tetpil,k;
    GEN y,bnf,pfb,vp,nf,mas,res,uni,v1,v2,v3;
  
!   if (typ(pol)==t_VEC) { checkbnf(pol); bnf=pol; }
    else bnf=buchall(pol,gcbach,gcbach2,gRELSUP,gborne,nbrelpid,minsfb,-3,prec);
    pfb=(GEN)bnf[5]; vp=(GEN)bnf[6]; nf=(GEN)bnf[7];
    mas=(GEN)nf[5]; res=(GEN)bnf[8]; uni=(GEN)res[5];
--- 2134,2140 ----
    long av=avma,tetpil,k;
    GEN y,bnf,pfb,vp,nf,mas,res,uni,v1,v2,v3;
  
!   if (typ(pol)==t_VEC) bnf = checkbnf(pol);
    else bnf=buchall(pol,gcbach,gcbach2,gRELSUP,gborne,nbrelpid,minsfb,-3,prec);
    pfb=(GEN)bnf[5]; vp=(GEN)bnf[6]; nf=(GEN)bnf[7];
    mas=(GEN)nf[5]; res=(GEN)bnf[8]; uni=(GEN)res[5];
***************
*** 2199,2205 ****
    long r1,r2,ru;
    GEN nf,ro,res,p1,y,funits,mun;
  
!   checkbnf(bnf); nf = nfnewprec((GEN)bnf[7],prec);
    r1=itos(gmael(nf,2,1)); r2=itos(gmael(nf,2,2));
    ru = r1+r2;
  
--- 2199,2205 ----
    long r1,r2,ru;
    GEN nf,ro,res,p1,y,funits,mun;
  
!   bnf = checkbnf(bnf); nf = nfnewprec((GEN)bnf[7],prec);
    r1=itos(gmael(nf,2,1)); r2=itos(gmael(nf,2,2));
    ru = r1+r2;
  
*** src/basemath/buch3.c.orig	Mon Jan 18 13:53:25 1999
--- src/basemath/buch3.c	Tue Jan 19 18:29:49 1999
***************
*** 208,214 ****
    GEN racunit,bigres,bid,resbid2,resbid3,x,y,funits,hmat,vecel;
    long RU,R3,i,j,ngen,sizeh,lo,c,av=avma,tetpil,N;
  
!   checkbnf(bnf); nf=checknf(bnf); bigres=(GEN)bnf[8];
    if (lg(bigres)==5) funits=(GEN)buchfu(bnf)[1];
    else
    {
--- 208,214 ----
    GEN racunit,bigres,bid,resbid2,resbid3,x,y,funits,hmat,vecel;
    long RU,R3,i,j,ngen,sizeh,lo,c,av=avma,tetpil,N;
  
!   bnf = checkbnf(bnf); nf=(GEN)bnf[7]; bigres=(GEN)bnf[8];
    if (lg(bigres)==5) funits=(GEN)buchfu(bnf)[1];
    else
    {
***************
*** 404,410 ****
    GEN racunit,bigres,bid,resbid,resbid2,funits,hmat;
    long RU,R3,i,j,av=avma;
  
!   checkbnf(bnf); nf=checknf(bnf); bigres=(GEN)bnf[8];
    if (lg(bigres)==5) funits=(GEN)buchfu(bnf)[1];
    else
    {
--- 404,410 ----
    GEN racunit,bigres,bid,resbid,resbid2,funits,hmat;
    long RU,R3,i,j,av=avma;
  
!   bnf = checkbnf(bnf); nf=(GEN)bnf[7]; bigres=(GEN)bnf[8];
    if (lg(bigres)==5) funits=(GEN)buchfu(bnf)[1];
    else
    {
***************
*** 1201,1207 ****
    GEN big,nf,reg,rootsofone,funits,gen,p1,gbound,DK,alpha,factfd1,f1,h,cyc;
    byteptr delta = diffptr;
  
!   checkbnf(bnf); nf = checknf(bnf);
    N=lgef(nf[1])-3; if (N==1) return 1;
    R1=itos(gmael(nf,2,1)); R2=itos(gmael(nf,2,2)); R=R1+R2-1;
    funits = (GEN)buchfu(bnf)[1];
--- 1201,1207 ----
    GEN big,nf,reg,rootsofone,funits,gen,p1,gbound,DK,alpha,factfd1,f1,h,cyc;
    byteptr delta = diffptr;
  
!   bnf = checkbnf(bnf); nf = (GEN)bnf[7];
    N=lgef(nf[1])-3; if (N==1) return 1;
    R1=itos(gmael(nf,2,1)); R2=itos(gmael(nf,2,2)); R=R1+R2-1;
    funits = (GEN)buchfu(bnf)[1];
***************
*** 1313,1323 ****
    switch(lg(arg0))
    {
      case 7:  /* bnr */
!       bnr=arg0; bnf=(GEN) bnr[1]; checkbnf(bnf);
        *subgroup=arg1; break;
  
      case 11: /* bnf */
!       bnf=arg0; checkbnf(bnf);
        bnr=buchrayall(bnf,arg1,nf_INIT | nf_GEN,prec);
        *subgroup=arg2; break;
  
--- 1313,1323 ----
    switch(lg(arg0))
    {
      case 7:  /* bnr */
!       bnr=arg0; (void)checkbnf((GEN)bnr[1]);
        *subgroup=arg1; break;
  
      case 11: /* bnf */
!       bnf = checkbnf(arg0);
        bnr=buchrayall(bnf,arg1,nf_INIT | nf_GEN,prec);
        *subgroup=arg2; break;
  
***************
*** 1485,1491 ****
    long av=avma,tetpil,R1,i,v;
    GEN nf,module,arch,bnr,group,p1,pol2;
  
!   checkbnf(bnf); nf=(GEN)bnf[7];
    module=cgetg(3,t_VEC); R1=itos(gmael(nf,2,1));
    v=varn(polrel);
    p1=unifpol((GEN)bnf[7],polrel,0);
--- 1485,1491 ----
    long av=avma,tetpil,R1,i,v;
    GEN nf,module,arch,bnr,group,p1,pol2;
  
!   bnf = checkbnf(bnf); nf=(GEN)bnf[7];
    module=cgetg(3,t_VEC); R1=itos(gmael(nf,2,1));
    v=varn(polrel);
    p1=unifpol((GEN)bnf[7],polrel,0);
***************
*** 1677,1683 ****
    GEN h,modulist,unitlist,classlist,sous,sousu,sousclass,p2,m,bid,q,cyclic;
  
    if (typ(listes)!=t_VEC || lg(listes)!=3) err(typeer,"rayclassnolist");
!   checkbnf(bnf); h=gmael3(bnf,8,1,1);
    modulist=(GEN)listes[1]; unitlist=(GEN)listes[2];
    lx=lg(modulist); classlist=cgetg(lx,t_VEC);
    for (i=1; i<lx; i++)
--- 1677,1683 ----
    GEN h,modulist,unitlist,classlist,sous,sousu,sousclass,p2,m,bid,q,cyclic;
  
    if (typ(listes)!=t_VEC || lg(listes)!=3) err(typeer,"rayclassnolist");
!   bnf = checkbnf(bnf); h=gmael3(bnf,8,1,1);
    modulist=(GEN)listes[1]; unitlist=(GEN)listes[2];
    lx=lg(modulist); classlist=cgetg(lx,t_VEC);
    for (i=1; i<lx; i++)
***************
*** 2112,2118 ****
    /* ce qui suit recopie d'assez pres ideallistzstarall */
    if (DEBUGLEVEL>2) timer2();
    if (bound <= 0) err(talker,"non-positive bound in discrayabslist");
!   av0=avma; checkbnf(bnf); flbou=0;
    nf=(GEN)bnf[7]; bigres=(GEN)bnf[8]; pol=(GEN)nf[1]; degk=lgef(pol)-3;
    r1=itos(gmael(nf,2,1)); fadkabs=factor(absi((GEN)nf[3]));
    clh=gmael(bigres,1,1);
--- 2112,2118 ----
    /* ce qui suit recopie d'assez pres ideallistzstarall */
    if (DEBUGLEVEL>2) timer2();
    if (bound <= 0) err(talker,"non-positive bound in discrayabslist");
!   av0=avma; bnf = checkbnf(bnf); flbou=0;
    nf=(GEN)bnf[7]; bigres=(GEN)bnf[8]; pol=(GEN)nf[1]; degk=lgef(pol)-3;
    r1=itos(gmael(nf,2,1)); fadkabs=factor(absi((GEN)nf[3]));
    clh=gmael(bigres,1,1);
*** src/basemath/buch4.c.orig	Tue Dec 15 16:29:37 1998
--- src/basemath/buch4.c	Tue Jan 19 18:30:08 1999
***************
*** 477,483 ****
    GEN sunites,sunites_entieres,card,sreg,res,pow, modpol;
  
    if (typ(S) != t_VEC) err(typeer,"bnfsunit");
!   checkbnf(bnf); nf=checknf(bnf); pol = (GEN)nf[1]; d=lg(pol);
    classgp=gmael(bnf,8,1); l=lg(classgp[2]);
    cyc = (GEN)classgp[2];
    gen = (GEN)classgp[3];
--- 477,483 ----
    GEN sunites,sunites_entieres,card,sreg,res,pow, modpol;
  
    if (typ(S) != t_VEC) err(typeer,"bnfsunit");
!   bnf = checkbnf(bnf); nf=(GEN)bnf[7]; pol = (GEN)nf[1]; d=lg(pol);
    classgp=gmael(bnf,8,1); l=lg(classgp[2]);
    cyc = (GEN)classgp[2];
    gen = (GEN)classgp[3];
***************
*** 605,611 ****
    long i,k,ls,tetpil, av = avma;
    GEN S,v,p1,xp,xm;
  
!   checkbnf(bnf);
    if (typ(suni)!=t_VEC || lg(suni)!=7) err(typeer,"bnfissunit");
    switch (typ(x))
    {
--- 605,611 ----
    long i,k,ls,tetpil, av = avma;
    GEN S,v,p1,xp,xm;
  
!   bnf = checkbnf(bnf);
    if (typ(suni)!=t_VEC || lg(suni)!=7) err(typeer,"bnfissunit");
    switch (typ(x))
    {
***************
*** 682,688 ****
    GEN res = cgetg(3,t_VEC), S1,S2;
  
    if (typ(ext)!=t_VEC || lg(ext)!=4) err (typeer,"bnfisnorm");
!   checkbnf(bnf); relnf = (GEN)ext[3];
    if (gcmp0(x) || gcmp1(x) || (gcmp_1(x) && (degree((GEN)ext[1])&1)))
    {
      res[1]=lcopy(x); res[2]=un; return res;
--- 682,688 ----
    GEN res = cgetg(3,t_VEC), S1,S2;
  
    if (typ(ext)!=t_VEC || lg(ext)!=4) err (typeer,"bnfisnorm");
!   bnf = checkbnf(bnf); relnf = (GEN)ext[3];
    if (gcmp0(x) || gcmp1(x) || (gcmp_1(x) && (degree((GEN)ext[1])&1)))
    {
      res[1]=lcopy(x); res[2]=un; return res;
***************
*** 790,796 ****
    long ltop = avma, lbot;
    GEN ext = cgetg(4,t_VEC);
  
!   checkbnf(bnf);
    ext[1] = mael(bnf,7,1);
    ext[2] = zero;
    ext[3] = (long) bnf;
--- 790,796 ----
    long ltop = avma, lbot;
    GEN ext = cgetg(4,t_VEC);
  
!   bnf = checkbnf(bnf);
    ext[1] = mael(bnf,7,1);
    ext[2] = zero;
    ext[3] = (long) bnf;
*** src/headers/paridecl.h.orig	Tue Jan  5 18:31:42 1999
--- src/headers/paridecl.h	Tue Jan 19 18:25:58 1999
***************
*** 237,243 ****
  /* base1.c */
  
  void    checkbid(GEN bid);
! void    checkbnf(GEN bnf);
  void    checkbnr(GEN bnr);
  void    checkbnrgen(GEN bnr);
  void    checkid(GEN x, long N);
--- 237,243 ----
  /* base1.c */
  
  void    checkbid(GEN bid);
! GEN     checkbnf(GEN bnf);
  void    checkbnr(GEN bnr);
  void    checkbnrgen(GEN bnr);
  void    checkid(GEN x, long N);
*** src/modules/thue.c.orig	Tue Dec 15 16:30:33 1998
--- src/modules/thue.c	Tue Jan 19 18:30:40 1999
***************
*** 25,31 ****
    deg=lgef(tnf[1])-3;
    if (deg<=2) err(talker,"invalid polynomial in thue (need deg>2)");
    s=sturm((GEN)tnf[1]); t=(deg-s)>>1; r=s+t-1;
!   checkbnf((GEN)tnf[2]);
    if (typ(tnf[3]) != t_COL || lg(tnf[3]) != deg+1) return 0;
    if (typ(tnf[4]) != t_COL || lg(tnf[4]) != r+1) return 0;
    if (typ(tnf[5]) != t_MAT || lg(tnf[5]) != r+1
--- 25,31 ----
    deg=lgef(tnf[1])-3;
    if (deg<=2) err(talker,"invalid polynomial in thue (need deg>2)");
    s=sturm((GEN)tnf[1]); t=(deg-s)>>1; r=s+t-1;
!   (void)checkbnf((GEN)tnf[2]);
    if (typ(tnf[3]) != t_COL || lg(tnf[3]) != deg+1) return 0;
    if (typ(tnf[4]) != t_COL || lg(tnf[4]) != r+1) return 0;
    if (typ(tnf[5]) != t_MAT || lg(tnf[5]) != r+1
***************
*** 1068,1074 ****
    GEN nf,pol,res,unit,x,id, *Primes;
    long av = avma, tetpil,sa,i,j,norm_1;
  
!   checkbnf(bnf); nf = checknf(bnf); pol = (GEN)nf[1];
    if (typ(a)!=t_INT)
      err(talker,"expected an integer in bnfisintnorm");
    sa = signe(a);
--- 1068,1074 ----
    GEN nf,pol,res,unit,x,id, *Primes;
    long av = avma, tetpil,sa,i,j,norm_1;
  
!   bnf = checkbnf(bnf); nf = (GEN)bnf[7]; pol = (GEN)nf[1];
    if (typ(a)!=t_INT)
      err(talker,"expected an integer in bnfisintnorm");
    sa = signe(a);
--
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://pari.home.ml.org