up previous next
QZP    --    change field for polynomials and ideals


Syntax
QZP(F: RINGELEM): RINGELEM
QZP(F: LIST of POLY): LIST of POLY
QZP(I: IDEAL): IDEAL

Description
***** NOT YET IMPLEMENTED ***** See example below

The functions QZP and ZPQ map polynomials and ideals of other rings into ones of the current ring. When mapping from one ring to another, one of the rings must have coefficients in the rational numbers and the other must have coefficients in a finite field. The indeterminates in both rings must be identical.

The function QZP maps polynomials with rational coefficients to polynomials with coefficients in a finite field; the function ZPQ does the reverse, mapping a polynomial with finite field coefficients into one with rational (actually, integer) coefficients. The function ZPQ is not uniquely defined mathematically, and currently for each coefficient the least non-negative equivalent integer is chosen. Users should not rely on this choice, though any change will be documented.

Example
/**/  use R ::= QQ[x,y,z];
/**/  F := 1/2*x^3 + (34/567)*x*y*z - 890; -- a poly with rational coefficients
/**/  use S ::= ZZ/(101)[x,y,z];
/**/  -- this is the clean way to do it!
/**/  phi := PolyRingHom(R, S, QQEmbeddingHom(S), indets(S));
/**/  phi(F);
-50*x^3 -19*x*y*z +19
***** NOT YET IMPLEMENTED *****
  QZP(F);                            -- compute its image with coeffs in ZZ/(101)
-50x^3 - 19xyz + 19
-------------------------------
  G := It;
  use R;
  ZPQ(G);                      -- now map that result back to QQ[x,y,z]
                               -- it is NOT the same as F...
51x^3 + 82xyz + 19
-------------------------------
  H := It;
  F - H;                       -- ... but the difference is divisible by 101
-101/2x^3 - 46460/567xyz - 909
-------------------------------
  use S;
  QZP(H) - G;                  -- F and H have the same image in ZZ/(101)[x,y,z]
0
-------------------------------

See Also