| Karim BELABAS on Thu, 27 Mar 2003 19:46:18 +0100 (MET) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: argument checking for polhensellift |
On Wed, 12 Feb 2003, Bill Allombert wrote:
> With both 2.1.4 and 2.2.5 and 8Mb of stack:
>
> ? polhensellift((x^4+x^2+3*x+1)*Mod(1,5),factormod(x^4+x^2+3*x+1,5)[,1],5,3)
> *** bug in GP (Segmentation Fault), please report
Amazing. This routine is an empty (inefficient) frontend: it does nothing
but (expensive) argument checking for 40 lines, and then a single useful call
in the last line (to hensel_lift_fact).
No other PARI routine goes to such length. And it's still trivial to break it
(badly). OK, I'm adding yet more silly checks.
Besides, polhensellift() only allows lifting to Qp, not over an arbitrary
unramified extension, whereas the underlying hensel_lift_fact is completely
generic and wouldn't care at all [ there's an extra argument missing: the
defining polynomial for the extension, which is hardcoded as 'X' in
polhensellift(). ]
It's also completely useless since factorpadic(pol, p, prec) would produce
more or less the same output, possibly faster.
Lesson: never again allow direct frontends for internal PARI routines under GP.
It's really too cumbersome / dangerous. install() is a saner mechanism.
Karim.
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dép. de Mathématiques, Bât. 425 Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France) http://www.parigp-home.de/ [PARI/GP]