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. †Matrices.mesa Last Edited by: Arnon, March 5, 1986 10:49:31 am PST Rectangular Matrices over a Group. Square matrices over a ring (yielding a ring) or a field (yielding an algebra) are subclasses. Matrix Representation Instance Data for Matrix Rings and Matrix Algebras Matrix Structure Ops A particular matrix structure is defined by its elementStructure and its nRows, nCols. elementStructure can be a ring, field, algebra, or divisionAlgebra. For square matrices only Characteristic of elementStructure Conversion and IO Constructors firstArg is a Vector, a row template of size n; secondArg is an Int.Int = m specifying how many of those rows we want. Thus result is an m x n matrix. Selection firstArg is a Matrix, secondArg and thirdArg are Ints.Int's specifying (resp.) row and column to select. Returns NIL if can't do. Arithmetic firstArg is scalar, secondArg is matrix Comparison ΚΚ˜Jšœ ™ J™4J˜šΟk ˜ Jšœ˜—J˜Jšœ‚™‚J˜head2šœ œ ˜J˜—Jšœœœœ˜!headšΟn™Jšœœœ˜J˜Jšœ œ ˜J˜Jšœœœ ˜Jš œ œœœœ˜AJ˜Jšœœœ˜Jš œœœœœœ ˜G—šœ2™2Icodešœœœ˜7šœœœ˜'Mšœœ˜Mšœ˜M˜——šœ™šžœœ˜3Jšœš™šM˜—šž œœ˜J˜—šžœœ˜!M˜—šžœœ ˜M˜—šžœœ˜J˜—šžœœ˜J˜—šž œœ˜Jšœ™J˜—šžœœ˜%J˜—šžœœ˜#Jšœ"™"J˜——šœ™šžœœ ˜J˜—šž œœ˜J˜—šžœœ ˜J˜—šžœœ˜$J˜—šžœœ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—Jšžœœ ˜—šœ ™ šžœœ˜ J˜—šžœœ ˜#Mšœ—™—J˜—Jšž œœ˜—šž ™ šžœœ ˜Mšœ‚™‚——šœ ™ šžœœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J™(J™—šž œœ ˜J˜—Jšž œœ˜%—™ šžœœ˜J˜——J˜Jšœ˜—…—¦ φ