DIRECTORY Rope USING [ROPE], Basics, IO USING [STREAM], AlgebraClasses, Polynomials, AlgebraicNumbers; ExtensionFields: CEDAR DEFINITIONS ~ BEGIN OPEN AC: AlgebraClasses, POL: Polynomials, AN: AlgebraicNumbers; ExtensionFieldElement: TYPE = POL.Polynomial; generalExtensionFieldClass: AC.StructureClass; realExtensionFieldClass: AC.StructureClass; ExtensionFieldData: TYPE = REF ExtensionFieldDataRec; ExtensionFieldDataRec: TYPE = RECORD [ groundField: AC.Structure, primitiveElement: AN.AlgebraicNumber ]; MakeExtensionField: PROC [primitiveElement: AN.AlgebraicNumber] RETURNS [extensionField: AC.Structure]; IsGeneralExtensionField: PROC [structure: AC.Structure] RETURNS [BOOL]; IsRealField: PROC [structure: AC.Structure] RETURNS [BOOL]; IsRealExtensionField: PROC [structure: AC.Structure] RETURNS [BOOL]; ReadExtensionFieldElement: PROC [in: IO.STREAM, extensionField: AC.Structure, reduced: BOOL _ FALSE] RETURNS [out: ExtensionFieldElement]; ExtensionFieldElementFromRope: PROC [in: Rope.ROPE, extensionField: AC.Structure, reduced: BOOL _ FALSE] RETURNS [out: ExtensionFieldElement]; ExtensionFieldElementToRope: PROC [in: ExtensionFieldElement] RETURNS [out: Rope.ROPE]; WriteExtensionFieldElement: PROC [in: ExtensionFieldElement, out: IO.STREAM]; Add: PROC [in1, in2: ExtensionFieldElement] RETURNS [out: ExtensionFieldElement]; Negate: PROC [in: ExtensionFieldElement] RETURNS [out: ExtensionFieldElement]; Subtract: PROC [in1, in2: ExtensionFieldElement] RETURNS [ExtensionFieldElement]; Multiply: PROC [in1, in2: ExtensionFieldElement] RETURNS [out: ExtensionFieldElement]; Invert: PROC [in: ExtensionFieldElement] RETURNS [out: ExtensionFieldElement]; Divide: PROC [in1, in2: ExtensionFieldElement] RETURNS [out: ExtensionFieldElement]; ScalarMultiply: PROC [scalar: AC.Object, in: ExtensionFieldElement] RETURNS [out: ExtensionFieldElement]; Sign: PROC [in: ExtensionFieldElement] RETURNS [Basics.Comparison]; Abs: PROC [in: ExtensionFieldElement] RETURNS [out: ExtensionFieldElement]; Compare: PROC [in1, in2: ExtensionFieldElement] RETURNS [Basics.Comparison]; Equal: PROC [in1, in2: ExtensionFieldElement] RETURNS [BOOL]; END. ExtensionFields.mesa Last Edited by: Arnon, March 5, 1986 10:49:31 am PST ExtensionField Representation wrt primitiveElement of the field: an element of minPolyRing, of degree less than the degree of minimalPolynomial. Classes for ExtensionFields Instance Data for ExtensionFields Operations unique to ExtensionFields ExtensionField Constructors extensionField is a structure of category divisionAlgebra, with properties depending on whether primitiveElement is a general or real algebraic number. Check Properties check that has category field or divisionAlgebra, and is realField; may or may not be an extension field Conversion and IO If not reduced, then reduce mod the minimal polynomial Arithmetic Note final argument is extensionField, not groundField Comparison Miscellaneous Κ^˜Jšœ™J™4J˜šΟk ˜ Jšœœœ˜J˜Jšœœœ˜Jšœ˜Jšœ ˜ Jšœ˜—J˜J˜head2šœœ ˜"J˜—Jš œœœœœœ˜IheadšΟn™šœœœ ˜-Jšœr™r——šœ™codešœœ˜.M˜—Mšœœ˜+—šœ!™!Mšœœœ˜5šœœœ˜&Mšœ œ ˜Mšœœ˜$M˜——Lšœ$™$šœ™š žœœœœœ ˜gMšœ—™———™š žœœ œ œœ˜GM™—š ž œœ œ œœ˜;Mšœh™hM™—š žœœ œ œœ˜DM™——šœ™šžœœœœœœœœ˜ŠJšœ6™6J˜—šžœœ œœœœœ˜ŽJ™—šžœœœ œ˜WJ˜—Jšžœœ"œœ˜M—šœ ™ šžœœ#œ˜QJ˜—šžœœœ˜NJ˜—šžœœ#œ˜QJ˜—šžœœ#œ˜VJšœ6™6J˜—šžœœœ˜NJ˜—šžœœ#œ˜TJ˜—Jšžœœ œ$œ˜i—šœ ™ šžœœœ˜CJ˜—šžœœœ˜KJ˜—Mšžœœ#œ˜L—šœ ™ šžœœ#œœ˜=J˜——J˜Jšœ˜—…—xπ