Karim Belabas on Sat, 09 Mar 2019 10:36:39 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: poldisc variable must be x or y ? |
* Jacques Gélinas [2019-02-21 10:03]: > Thanks for the confirmation of the variable order problem. > So what is the use of the second argument v in poldisc ? > > poldisc0(GEN x, long v) { > case t_POL: { <====== oups!!! type(z/a+1)=="t_RFRAC" (:-( > long v0 = -1; > if (v >= 0 && v != varn(x)) > { > v0 = fetch_var_higher(); > x = fix_pol(x,v, v0); > } > D = RgX_disc(x); > > The easy fix is to always use x or y as main variable. Or to update from current 'master', where I believe the bug is now fixed: (10:28) gp > poldisc(x^2/y + 1, y) \\ used to return 0 *** at top-level: poldisc(x^2/y+1,y) *** ^------------------ *** poldisc: incorrect type in polresultant (t_RFRAC). (10:28) gp > poldisc(y^2/x + 1, y) \\ used to raise an exception %1 = -4/x N.B. The problem also affected polresultant. Besides the problem you pointed out with poldisc (only t_POL handled "correctly" v), fix_pol() was also faulty (see the first example above, some corner cases were non). Thanks for your report ! K.B. P.S. I notice that divrem has an analogous problem: (10:32) gp > divrem(y^2/x, y/x+1, y) *** at top-level: divrem(y^2/x,y/x+1,y) *** ^--------------------- *** divrem: forbidden division t_RFRAC \ t_RFRAC. I will fix that one later. -- 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] `