| Michael Stoll on Sun, 26 Apr 1998 22:19:10 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| issquare |
More strange behaviour:
gp (22:07)> issquare(x^2)
*** division by zero in gdiv, gdivgs or ginv
gp (22:07)> issquarefree(x^2)
%111 = 0
gp (22:09)> issquare(x^2+1)
%112 = 0
gp (22:09)> issquare(x^2+x)
*** division by zero in gdiv, gdivgs or ginv
Line 537-545 in arith2.c:
case t_POL:
if (!signe(x)) return gun;
l=lgef(x)-3; if (l&1) return gzero;
av=avma; p2=(GEN)x[2];
if (!signe(gcarreparfait(p2))) return gzero;
p1 = gdiv(gadd(x,ggrando(polx[varn(x)],l+1)),p2); // <--- here !
p1 = gtrunc(gsqrt(p1,DEFAULTPREC));
v=gegal(gmul(p2,gsqr(p1)), x); avma=av; return v?gun:gzero;
Here a check if the constant term is zero should be inserted. More
precisely, if it is zero, check if the first non-zero term occurs
with even exponent, if so, divide by this term, etc.
Michael