Karim BELABAS on Tue, 28 Sep 1999 17:52:05 +0200 (MET DST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
2.0.17-patch 1 (was: please report, report) |
[Paul van Wamelen:] > I just found the following in 2.0.16 (have not installed 17 yet...) > [...] > ? Mod(polcyclo(15),polcyclo(15))^(-1) > *** segmentation fault: bug in GP (please report). > > \\ and > > ? Mod(x,x)^(-1) > *** bus error: bug in GP (please report). Two bugs in one actually [1- wrong method chosen in isinexactfield(). 2- the SEGV proper in case of unexpected input]. Here's a patch. Karim. P.S for CVS users: The development CVS archive has been updated (i.e cvs checkout will always mirror my current set of sources). To fetch the original 2.0.17.beta release, use 'cvs checkout -r 2-0-17-release'. Index: src/basemath/polarit2.c =================================================================== RCS file: /home/megrez/cvsroot/pari/src/basemath/polarit2.c,v retrieving revision 1.2 diff -c -r1.2 polarit2.c *** src/basemath/polarit2.c 1999/09/20 13:30:05 1.2 --- src/basemath/polarit2.c 1999/09/28 11:50:01 *************** *** 1412,1418 **** case t_REAL: case t_PADIC: case t_SER: return 1; case t_POL: ! lx=lgef(x); for (i=2; i<lx; i++) if (!isinexactfield((GEN)x[i])) return 0; return 1; --- 1412,1418 ---- case t_REAL: case t_PADIC: case t_SER: return 1; case t_POL: ! lx=lgef(x); if (lx == 2) return 0; for (i=2; i<lx; i++) if (!isinexactfield((GEN)x[i])) return 0; return 1; *************** *** 1445,1450 **** --- 1445,1451 ---- long i,dx=lgef(x)-3,dy=lgef(y)-3,lz=dx+dy, av=avma, tetpil; GEN v,z; + if (dx < 0 || dy < 0) err(talker,"non-invertible polynomial in polinvmod"); z=cgetg(dy+2,t_POL); z[1]=y[1]; v=cgetg(lz+1,t_COL); for (i=1; i<lz; i++) v[i]=zero; *************** *** 2031,2043 **** /* RESULTANT PAR MATRICE DE SYLVESTER */ /* */ /*******************************************************************/ GEN sylvestermatrix_i(GEN x, GEN y) { long d,dx,dy,i,j; GEN p1,p2; ! dx=lgef(x)-3; dy=lgef(y)-3; d=dx+dy; p1=cgetg(d+1,t_MAT); for (j=1; j<=dy; j++) { --- 2032,2054 ---- /* RESULTANT PAR MATRICE DE SYLVESTER */ /* */ /*******************************************************************/ + static GEN + _zeropol() + { + GEN x = cgetg(3,t_POL); + x[1] = evallgef(3); + x[2] = zero; return x; + } + GEN sylvestermatrix_i(GEN x, GEN y) { long d,dx,dy,i,j; GEN p1,p2; ! dx = lgef(x)-3; if (dx < 0) { dx = 0; x = _zeropol(); } ! dy = lgef(y)-3; if (dy < 0) { dy = 0; y = _zeropol(); } ! d = dx+dy; p1=cgetg(d+1,t_MAT); for (j=1; j<=dy; j++) { __ 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/