[Michael Somos:]
> gp> for(n=1,12,print(n" "(1+O(t))*x^n * (1+O(t))*x^n ))
> 1 (1 + O(t))*x^2
[...]
> 9 (1 + O(t))*x^18 + O(t)*x^13
[...]
> This looks like a bug to me. The 1.39 version did not do this. Shalom, Michael
Strictly speaking it's not a bug since the result is correct (0 is indeed
O(t)). On the other hand, given the input, it could have been more precise.
It comes from Karatsuba multiplication and the annoying fact that
(a0 + a1) * (b0 + b1) - a0 * b0 - a1 * b1
which is the standard way of computing the "middle term" is not exactly the
same as
a0 * b1 + a1 * b0
when the entries are approximate. I don't see any way of correcting this
besides disabling fast multiplication when the entries are not exact, and we
don't want that. I can fix this particular case though: factor out x first,
multiply what's left, then multiply back by x^n.
Karim.
P.S: 1.39 didn't have Karatsuba...
__
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/