Karim Belabas on Sun, 18 Jun 2017 17:48:55 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: polredabs not returning correct transformation map |
Dear Maarten, * Maarten Derickx [2017-06-18 01:24]: > Find below an example where polredabs does not return the correct > transformation map. The degree 12 example is the one that fails since one > should have that subst(f,x,h) = 0, however polredabs almost gives the > correct transformation map since subst(f,x,h/5) = 0 so it is just of by a > factor of 5. Changing the leading monomial from x^12 to x^11 gives a > working example. [...] > ? f = x^12 + x^7 - 1/5*x^6 - 3*x^5 + 13/5*x^4 + 11/5*x^3 + 2/5*x^2 + 2/5*x > + 1/5; > > ? gh = polredabs(f,1); > > ? g=gh[1]; > > ? h=gh[2]; > > ? subst(f,x,h) > > %5 = Mod(-195293748/5*x^11 + 244181236/5*x^10 - 634884076/5*x^9 + > 3564400908/5*x^8 - 2539683564/5*x^7 + 166278100*x^6 - 14647209952/5*x^5 - > 1269578400*x^4 + 4072182580*x^3 + 3017386300*x^2 - 1562284000*x - > 7518315624/5, x^12 - 2*x^11 + 2*x^10 - 11*x^9 + 13*x^8 + 15*x^7 - x^6 - > 5*x^5 + 5) I just fixed the typo in commit 1420fa40a ? f = x^12 + x^7 - 1/5*x^6 - 3*x^5 + 13/5*x^4 + 11/5*x^3 + 2/5*x^2 + 2/5*x + 1/5; ? [g,h] = polredabs(f,1); ? subst(f,x,h) == 0 %3 = 1 This was due to the new code attached to nfcertify(): since polredabs() promises a canonical result, we must compute correctly the integer basis; if it turns out our initial guess (based on a cheap partial factorization of the discriminant) is wrong, we must update it. This update mistakenly used a transformed (integral and monic) f2 instead of the original f... Thank you for your report ! K.B. -- Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 Universite de Bordeaux Fax: (+33) (0)5 40 00 21 23 351, cours de la Liberation http://www.math.u-bordeaux.fr/~kbelabas/ F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP] `