next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
PHCpack :: convertToPoly

convertToPoly -- converts a rational system to a Laurent polynomial system

Synopsis

Description

Here is an example when this function will be used:
i1 : QQ[x,y,z];
i2 : sys={y-x^2, z-x^3, (x+y+z-1)/x};
i3 : describe ring ideal sys --"there are denominators! i will call the conversion method."

o3 = frac QQ[x, y, z]
i4 : convertedSys = convertToPoly(sys);
convertedSys is an equivalent system living in a Laurent polynomial ring. For each denominator, a new variable was created.
i5 : printWidth = 300;
i6 : toString convertedSys

o6 = {y-x^2, z-x^3, -var_0^(-1)+z*var_0^(-1)+y*var_0^(-1)+x*var_0^(-1), var_0-x}
i7 : ring ideal convertedSys

o7 = QQ[x, y, z, var ]
                    0

o7 : PolynomialRing
i8 : describe oo --that this is a ring with negative exponents allowed is evident from the option "Inverses=>true".

o8 = QQ[x..z, var , Degrees => {4:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1, Inverses => true]
                 0                                     {GroupRevLex => 4  }
                                                       {Position => Up    }
Note that if the system is already polynomial, or in Laurent polynomial form, the method doesn’t change it. Of course, sometimes it is possible that it is polynomial "in disguise" as in the following example:
i9 : P=QQ[x,y,z];
i10 : f=(x*y + z^2*y) / y

       2
o10 = z  + x

o10 : frac(P)
i11 : liftable(f,P)

o11 = true
But, the method detects this and simplifies the system accordingly. Instead of creating Laurent polynomials, it simply updates the system using the following:
i12 : lift(f,P)

       2
o12 = z  + x

o12 : P
This method is called by phcSolve.

Ways to use convertToPoly :