Instance Data for ExtensionFields
ExtensionFieldData: TYPE = REF ExtensionFieldDataRec;
ExtensionFieldDataRec:
TYPE =
RECORD [
groundField: AC.Structure,
primitiveElement: AN.AlgebraicNumber
];
Conversion and IO
ReadExtensionFieldElement:
PROC [in:
IO.
STREAM, extensionField:
AC.Structure, reduced:
BOOL ←
FALSE]
RETURNS [out: ExtensionFieldElement];
If not reduced, then reduce mod the minimal polynomial
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];
Arithmetic
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];
Note final argument is extensionField, not groundField
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];
Comparison
Sign:
PROC [in: ExtensionFieldElement]
RETURNS [Basics.Comparison];
Abs:
PROC [in: ExtensionFieldElement]
RETURNS [out: ExtensionFieldElement];
Compare: PROC [in1, in2: ExtensionFieldElement] RETURNS [Basics.Comparison];