with RATIONAL_TYPES ; use RATIONAL_TYPES ; with RATIONAL_IO; use RATIONAL_IO; package RATIONAL_ARRAYS is -- RATIONAL MATRIX ARITHMETIC PACKAGE SPECIFICATION -- -- Purpose : To provide the basic set of matrix arithmetic -- capability in Ada -- -- Method : This package defines the types -- rational_matrix and rational_vector -- this package also defines the overloaded procedures -- -- this package then defines the overloaded operators -- -- + - * unary + unary - -- -- for combining types RATIONAL_MATRIX RATIONAL_VECTOR -- and RATIONAL -- type RATIONAL_MATRIX is array ( INTEGER range <> , INTEGER range <> ) of RATIONAL ; -- -- the first subscript is the row number, -- the second subscript is the column number -- -- type RATIONAL_VECTOR is array ( INTEGER range <> ) of RATIONAL ; -- MATRIX_ERROR : exception ; -- Raised for any illegal operation -- The exception conditions are tested explicitly in order to -- convey the improper calling parameters to the user . It could -- be difficult to find the improper calling parameter if the -- Ada exceptions CONSTRAINT_ERROR or others occurred in the -- middle of the code. -- function "+" ( A , B : RATIONAL_MATRIX ) return RATIONAL_MATRIX ; function "-" ( A , B : RATIONAL_MATRIX ) return RATIONAL_MATRIX ; function "*" ( A , B : RATIONAL_MATRIX ) return RATIONAL_MATRIX ; function "+" ( A , B : RATIONAL_VECTOR ) return RATIONAL_VECTOR ; function "-" ( A , B : RATIONAL_VECTOR ) return RATIONAL_VECTOR ; function "*" ( V : RATIONAL_VECTOR ; A : RATIONAL_MATRIX ) return RATIONAL_VECTOR ; function "*" ( A : RATIONAL_MATRIX ; V : RATIONAL_VECTOR ) return RATIONAL_VECTOR ; function DOT_PRODUCT ( P : RATIONAL_VECTOR ; Q : RATIONAL_VECTOR ) return RATIONAL ; function CROSS_PRODUCT ( P : RATIONAL_VECTOR ; Q : RATIONAL_VECTOR ) return RATIONAL_VECTOR ; function CROSS_PRODUCT ( A : RATIONAL_MATRIX ) return RATIONAL_VECTOR ; function IDENTITY_MATRIX ( N : INTEGER ) return RATIONAL_MATRIX ; function "*" ( F : RATIONAL ; A : RATIONAL_MATRIX ) return RATIONAL_MATRIX ; function "*" ( A : RATIONAL_MATRIX ; F : RATIONAL ) return RATIONAL_MATRIX ; function "*" ( F : RATIONAL ; A : RATIONAL_VECTOR ) return RATIONAL_VECTOR ; function "*" ( A : RATIONAL_VECTOR ; F : RATIONAL ) return RATIONAL_VECTOR ; function COLUMN_TO_VECTOR ( COLUMN : INTEGER ; A : RATIONAL_MATRIX ) return RATIONAL_VECTOR ; procedure VECTOR_TO_COLUMN ( V : RATIONAL_VECTOR ; COLUMN : INTEGER ; A : in out RATIONAL_MATRIX ) ; function ROW_TO_VECTOR ( ROW : INTEGER ; A : RATIONAL_MATRIX ) return RATIONAL_VECTOR ; procedure VECTOR_TO_ROW ( V : RATIONAL_VECTOR ; ROW : INTEGER ; A : in out RATIONAL_MATRIX ) ; function EXTRACT_SUB_MATRIX ( ROW_1 , ROW_2 , COL_1 , COL_2 : INTEGER ; A : RATIONAL_MATRIX ) return RATIONAL_MATRIX ; procedure INSERT_SUB_MATRIX ( SUB_MATRIX : RATIONAL_MATRIX ; ROW , COLUMN : INTEGER ; A : in out RATIONAL_MATRIX ) ; procedure PUT ( A : RATIONAL_MATRIX ) ; procedure PUT ( V : RATIONAL_VECTOR ) ; end RATIONAL_ARRAYS ;