Gerhard Niklasch on Tue, 1 Sep 1998 12:45:22 +0200 (MET DST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: bug of t_POLMOD ? |
In response to: > Message-Id: <19980901175620F.ohgisi@payila.dj.kit.ac.jp> > Date: Tue, 01 Sep 1998 17:56:20 +0900 (JST) > From: Kiyoshi Ohgishi <ohgisi@payila.dj.kit.ac.jp> > > Don't work as I expected. > > Example) > > ? A=Mod(Mod(1, 2)*X, Mod(1, 2)*X^3 + Mod(1, 2)*X + Mod(1, 2)) > %1 = Mod(Mod(1, 2)*X, Mod(1, 2)*X^3 + Mod(1, 2)*X + Mod(1, 2)) > ? A^0 > %2 = Mod(1, Mod(1, 2)*X^3 + Mod(1, 2)*X + Mod(1, 2)) > ? A^0+A^0 > %3 = Mod(2, Mod(1, 2)*X^3 + Mod(1, 2)*X + Mod(1, 2)) You were expecting %2 to read Mod(Mod(1, 2), ...) and %3 to read Mod(Mod(0, 2), ...), right? The short answer is: Multiply things by Mod(1,2) to force the results you want (and to make equality tests meaningful). A longer answer is that polynomials in PARI can have coefficients of mixed type, some integers, some integermods (there are some restrictions, and indeed I find these don't seem to work the way they should -- will investigate later), and thus it would be quite impossible to formulate a general rule what sort of unit element should be the result of (some polynomial)^0 -- should we let ourselves be guided by the type of the constant coefficient? or of the leading coefficient? or choose a type to which each coefficient can be projected (integer if all coefficients are integers, integermod the gcd of all moduli otherwise)? or a type which can be projected to each coefficient type? PARI takes the latter approach. The element 1 of the ring of integers is the only answer which is `safe' in the sense that it can be mapped canonically into whatever ring you need. (It can get even worse. Try 1.2*X^2+3*X+Mod(1,2) ... It behaves reasonably so long as you don't do anything which causes a real by integermod multiplication.) For working in algebras over finite fields, constructions like `Mod(representative, (ideal in Z[X] generated by a prime and by one or more polynomials) )' (as pioneered by Kronecker more than a century ago) would perhaps be useful, but PARI's internal representation of an object like A is not symmetrical in the prime and the modulus polynomial, but hierarchical -- a polmod of two polynomial components, whose coef- ficients happen to be integermods to modulus 2 (and could equally well be of other types). Gerhard