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.