<> <> DIRECTORY AlgebraClasses; <> Matrices: CEDAR DEFINITIONS ~ BEGIN OPEN AC: AlgebraClasses; <> Matrix: TYPE = AC.Object; MatrixData: TYPE = RowSeq; RowSeq: TYPE = REF RowSeqRec; RowSeqRec: TYPE = RECORD[SEQUENCE rowsPlusOne: [1..1000] OF Row]; Row: TYPE = REF RowRec; RowRec: TYPE = RECORD[SEQUENCE columnsPlusOne: [1..1000] OF AC.Object]; <> MatrixStructureData: TYPE = REF MatrixStructureDataRec; MatrixStructureDataRec: TYPE = RECORD [ elementStructure: AC.Object, nRows, nCols: NAT ]; <> MakeMatrixStructure: AC.MatrixStructureConstructor; <> PrintName: AC.PrintNameProc; ShortPrintName: AC.PrintNameProc; ElementStructure: AC.UnaryOp; NumRows: AC.StructureRankOp; NumCols: AC.StructureRankOp; Dimension: AC.StructureRankOp; <> IsMatrixStructure: AC.UnaryPredicate; Characteristic: AC.StructureRankOp; <> <> Recast: AC.BinaryOp; CanRecast: AC.BinaryPredicate; ToExpr: AC.ToExprOp; LegalFirstChar: AC.LegalFirstCharOp; Read: AC.ReadOp; FromRope: AC.FromRopeOp; ToRope: AC.ToRopeOp; Write: AC.WriteOp; <> DiagonalMatrix: AC.UnaryImbedOp; MatrixFromRowTemplate: AC.BinaryOp; <> MakeMatrix: AC.MatrixImbedOp; <> Element: AC.TernaryOp; <> <> Zero: AC.NullaryOp; One: AC.NullaryOp; Add: AC.BinaryOp; Negate: AC.UnaryOp; Subtract: AC.BinaryOp; Multiply: AC.BinaryOp; Power: AC.BinaryOp; Invert: AC.UnaryOp; Divide: AC.BinaryOp; ScalarMultiply: AC.BinaryOp; <> <<>> Transpose: AC.UnaryOp; Determinant: AC.StructuredToGroundOp; <> Equal: AC.BinaryPredicate; END.