Karim Belabas on Fri, 24 Jan 2014 12:37:38 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: poldisc() problem |
[ By replying to an old message, I just sent this to the old @cr.yp.to address. Resending to pari-dev ... ] * Lorenz Minder [2010-01-19 07:49]: > I'm having trouble with poldisc() in pari-svn. It works fine for me > with pari-2.3.4: > > ? f = x^3 + Mod(2, 3)*x^2 > %1 = x^3 + Mod(2, 3)*x^2 > ? poldisc(f) > *** at top-level: poldisc(f) > *** ^---------- > *** poldisc: impossible inverse modulo: Mod(0, 3). > *** Break loop: type <Return> three times, or Control-d, to go back to GP) [ Sorry it took 3 years to acknowledge/fix this: your email somehow disappeared from my mbox :-(. I just found it in the pari-dev archives...] This is now fixed in master for Z/pZ, (12:13) gp > f = x^3 + Mod(2, 3)*x^2; (12:13) gp > poldisc(f) %2 = Mod(0, 3) But the solution is still fragile: (12:13) gp > f = x^3 + Mod(2, 3)*Mod(y,y^2+1)*x^2; (12:13) gp > poldisc(f) *** at top-level: poldisc(f=x^3+Mod(2, *** ^-------------------- *** poldisc: impossible inverse in Fl_inv: Mod(0, 3). This is of course due to the fact that the "base ring" over which everything makes sense is undefined to PARI, which only sees vectors of coefficients and (in that case) does not even try to make sense out of them. So we have (12:13) gp > f' %3 = 3*x^2 + Mod(Mod(1, 3)*y, y^2 + 1)*x + Mod(Mod(0, 3), y^2 + 1) and the leading coefficent '3' ( = Mod(0, 3) ) will cause problems. Simple workaround for *some* instances: (12:13) gp > f *= Mod(1, characteristic(f)); (12:13) gp > poldisc(f) %5 = Mod(0, 3) More generally, make sure the base ring is a domain, and *all* coefficients explicitly belong to it (with the relevant t_POLMOD / t_INTMOD / t_FFELT) without expecting type coercion to fix problems magically. (It won't :-() Cheers, K.B. -- Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50 351, cours de la Liberation http://www.math.u-bordeaux1.fr/~kbelabas/ F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP] `