ASPolyDivision.mesa
Last Edited by: Arnon, June 10, 1985 4:19:22 pm PDT
DIRECTORY
AlgebraClasses,
Polynomials;
ASPolyDivision:
CEDAR
DEFINITIONS
= BEGIN OPEN AC: AlgebraClasses, POL: Polynomials;
Content:
PROC [in:
POL.Polynomial, ring:
AC.Structure]
RETURNS [out:
POL.Polynomial];
PrimitivePart:
PROC [in:
POL.Polynomial, ring:
AC.Structure]
RETURNS [out:
POL.Polynomial];
PseudoDivide:
PROC [dividend, divisor:
POL.Polynomial, coeffRing:
AC.Structure]
RETURNS [quotient, remainder:
POL.Polynomial];
DivisionAlgorithm:
PROC [dividend, divisor:
POL.Polynomial, coeffRing:
AC.Structure]
RETURNS [quotient, remainder:
POL.Polynomial];
quotient ← remainder ← NIL if fails.
Remainder:
PROC [dividend, divisor:
POL.Polynomial, polynomialsOverField:
AC.Structure]
RETURNS [
POL.Polynomial];
ExactDivide:
PROC [in1, in2:
POL.Polynomial, coeffRing:
AC.Structure]
RETURNS [out:
POL.Polynomial];
Returns NIL = ZeroPoly if in2 does not divide in1 exactly, i.e. if DivisionAlgorithm either fails, or returns nonzero remainder.
GreatestCommonDivisor:
PROC [dividend, divisor:
POL.Polynomial, coeffRing:
AC.Structure]
RETURNS [quotient, remainder:
POL.Polynomial];
GreatestSqFreeDivisor:
PROC [in:
POL.Polynomial, ring:
AC.Structure]
RETURNS [out:
POL.Polynomial];
A simple-minded algorithm based on division algorithm, possibly on pseudo-division. If the former, fails if division algorithm does. Intended mainly for univariate polynomials over a field.
END.