Polynomial - Perl module implementing an algebraic polynomial

**new**-
Create a new zero polynomial and return it to the caller.

**copy OBJREF**-
Perform a deep copy of the polynomial object referenced by OBJREF.

**monOrder****monOrder STRING**-
Return the current monomial ordering. If an argument is passed, it is assigned as the new monomial ordering. The valid orderings are:

tdeg - total degree (single variable case only) lex - pure lexicographic ordering grlex - graded lex grevlex - graded reverse lex

**varOrder****varOrder ARRAYREF**-
Return the current variable ordering as an array reference. If an argument is passed, it is assigned as the new variable ordering. For example,

$poly->varOrder(['x','y','z']);

assigns the variable ordering x > y > z.

**monomials****monomials HASHREF**-
Returns the current collection of monomials. If an argument is passed, it is assigned as the new collection of monomials.

**insertMonomial OBJREF**-
Performs a copy of the monomial referred to by OBJREF and inserts it into the monomial collection.

**simplify**-
Attempt to unify monomials with the same 'signature' (see getSignature) through addition.

**fromString STRING**-
Construct the state of the polynomial from the algebraic expressin represented in STRING. For example,

$poly->fromString("xyz+x^2y^4+x+2");

would create four monomials: xyz, x^2y^4, x, and 2. The previous monomials contained in the polynomial are destroyed.

**toString**-
Convert the current state of the polynomial into a string and return it to the caller. This string can be sent back in via fromString and be used to reconstruct the polynomial.

**applyOrder**-
Order the monomials according to the current monomial ordering setting.

**SortByLexOrder**-
(Internal) Perform sort.

**SortByGrevLex**-
(Internal) Perform sort.

**SortByGrLex**-
(Internal) Perform sort.

**SortByTotalDegree**-
(Internal) Perform sort.

**getLT**-
Get the leading term of the polynomial and return it to the caller.

**isNotZero**-
Return a boolean indiciating wether or not the polynomial is a zero polynomial or not.

**mult OBJREF**-
Perform polynomial multiplication using this polynomial and the one referred to by OBJREF. Return a new polynomial containing the product.

**add OBJREF**-
Perform polynomial addition using this polynomial and the one referred to by OBJREF. Return a new polynomial containing the sum.

**subtract OBJREF**-
Perform polynomial subtraction using this polynomial and the one referred to by OBJREF. Return a new polynomial containing the difference.

**divide OBJREF**-
Perform polynomial division using this polynomial and the one referred to by OBJREF. Return an array reference containing the quotients and the remainder.

**gcd OBJREF**-
Determine the polynomial greatest common divisor with respect to this polynomial and the one referred to by OBJREF. Return a new polynomial containing the gcd.

**reduce**-
Attempt to achieve two goals:

1) Get as many 1's as coefficients as possible 2) If the leading term's coefficient is negative multiply all the coefficients by -1.

**spoly**-
Determine the polynomial SPOLY with respect to this polynomial and the one referred to by OBJREF. Return a new polynomial containing the SPOLY.

Brian Guarraci <bguarrac@hotmail.com>