Xavier Roblot on Wed, 20 Oct 1999 12:11:15 -0400 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Bug in nfabsis/Round4 |
Bill Allombert wrote: > I stumble on this one, with the current cvs version: > > ? nfbasis(x^16-42*x^12+560*x^10-1645*x^8+2352*x^6+10290*x^4+10192*x^2+3969) > *** impossible inverse modulo: Mod(0, 2). The bug was due to a possible lost of precision in one of the modular reductions performed in nilord2. It is corrected using the following patch (I have also updated the CVS version). Xavier Index: src/basemath/base2.c =================================================================== RCS file: /home/megrez/cvsroot/pari/src/basemath/base2.c,v retrieving revision 1.6 retrieving revision 1.7 diff -c -r1.6 -r1.7 *** src/basemath/base2.c 1999/10/15 16:50:03 1.6 --- src/basemath/base2.c 1999/10/20 16:01:17 1.7 *************** *** 1704,1719 **** if (typ(delt) == t_INT) { chie = poleval(chig, gadd(polx[v], delt)); - chie = polmodi(chie, pmr); nue = (GEN)factmod(chie, p)[1]; l = lg(nue) - 1; nue = lift((GEN)nue[l]); } else ! { p1 = factcp(p, chi, eta); chie = (GEN)p1[1]; - chie = polmodi(chie, pmr); nue = (GEN)p1[2]; l = itos((GEN)p1[3]); } --- 1704,1717 ---- if (typ(delt) == t_INT) { chie = poleval(chig, gadd(polx[v], delt)); nue = (GEN)factmod(chie, p)[1]; l = lg(nue) - 1; nue = lift((GEN)nue[l]); } else ! { p1 = factcp(p, chi, eta); chie = (GEN)p1[1]; nue = (GEN)p1[2]; l = itos((GEN)p1[3]); } *************** *** 1731,1736 **** --- 1729,1736 ---- } delete_var(); + if (!signe(modii((GEN)chie[2], pmr))) chie = mycaract(chi, eta); + pie = getprime(p, chi, eta, chie, nue, &Le, &Ee); if (Ea%Ee) {