ASRootIsolation.mesa
Last Edited by Arnon: November 27, 1987 10:49:49 am PST
Routines for isolation of the real roots of individual, or sets of, univariate polynomials over some real (complete, ordered, characteristic zero) field. As much as possible, the algorithms should be generic (independent of the particular field).
Although other forms may be accepted as input, individual polynomials actually dealt with internally are either primitive, positive squarefree integral polynomials, or monic squarefree polynomials over a (real) algebraic number field.
In fact, there should be input routines that allow mixed sets of arbitrary integral, rational, and algebraic polynomials, and convert them to one of the desired forms.
Sets of input polynomials actually dealt with internally are maintained as (squarefree) bases of polynomials, all elements being in one of the above two forms.
Key additional routines are the refinement routines, i.e. the ability to refine an existing isolation list by one or more new input polynomials. The output rep of such a refinement should distinguish new from old roots, e.g. it may be a revised isolation list (with narrower intervals) for the old polynomials, plus an isolation list for the new polynomials, plus specification for each root of the new list of which old roots it is between, or which old root it is equal to.
DIRECTORY
Rope,
AlgebraClasses;
ASRootIsolation: CEDAR DEFINITIONS
~ BEGIN
Element Representation
ElementName: TYPE = AlgebraClasses.Object;
Comment
ElementNameData: TYPE = REF ElementNameDataRec;
ElementName
DataRec:
TYPE =
RECORD [
field: Type,
field: Type
];
Structure Instance Data
NameStructureData: TYPE = REF NameStructureDataRec;
Name
StructureDataRec:
TYPE =
RECORD [
data1: AlgebraClasses.Object, -- Comment
data2: AlgebraClasses.Object -- Comment
];
Structure Constructor
MakeNameStructure: AlgebraClasses.StructureConstructorProc;
Structure Operations
PrintName: AlgebraClasses.ToRopeOp;
ShortPrintName: AlgebraClasses.ToRopeOp;
IsNameStructure: AlgebraClasses.UnaryPredicate;
SelectorProc: AlgebraClasses.UnaryOp;
selector: data1
SelectorProc: AlgebraClasses.UnaryOp;
selector: data2
StructureData: AlgebraClasses.UnaryToListOp;
selector: returns LIST[data1, data2] of a Name Structure
Element Conversion and IO
Recast: AlgebraClasses.BinaryOp;
CanRecast: AlgebraClasses.BinaryPredicate;
ToExpr: AlgebraClasses.ToExprOp;
LegalFirstChar: AlgebraClasses.LegalFirstCharOp;
Read: AlgebraClasses.ReadOp;
FromRope: AlgebraClasses.FromRopeOp;
ToRope: AlgebraClasses.ToRopeOp;
Write: AlgebraClasses.WriteOp;
Element Constructor
ConstructorProc: AlgebraClasses.ListImbedOp;
Element Operations
BinaryOp: AlgebraClasses.BinaryOp;
UnaryOp: AlgebraClasses.UnaryOp;
END.