     with A83_014_Vector; use A83_014_Vector;
     with ConsAK;

     package A83_015_Matrix is
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
     Copyright : constant string :=
      "A83_015_Matrix 1.00 (C) 1994 by David Wallace Croft." &
      "  All rights reserved.";
     Description : constant string :=
       "Matrix type and operations.";
     ----------------------------------------------------------------------
     type Matrix_Type is array ( integer range <>, integer range <> )
       of float;
     ----------------------------------------------------------------------
     function "*" (
       M : Matrix_Type;
       F : float )
       return Matrix_Type;
     function "*" (
       M1 : Matrix_Type;
       M2 : Matrix_Type )
       return Matrix_Type;
     function "*" (
       M : Matrix_Type;
       V : Vector_Type )
       return Vector_Type;
     function "/" (
       M : Matrix_Type;
       F : float )
       return Matrix_Type;
     function "-" (
       M : Matrix_Type )
       return Matrix_Type;
     function "<=" (
       M1, M2 : Matrix_Type )
       return boolean;
     function Adjoint (
       M : Matrix_Type )
       return Matrix_Type;
     function Ask (
       Row_Default : in positive := 2;
       Col_Default : in positive := 2 )
       return Matrix_Type;
     procedure Ask (
       M      : in out Matrix_Type;
       Prompt : in     string );
     function Cofactor (
       M : Matrix_Type;
       Row, Col : integer )
       return float;
     function Column (
       M   : Matrix_Type;
       Col : integer )
       return Vector_Type;
     function Concatenate (
       M1, M2 : Matrix_Type;
       Col    : boolean := true )
       return Matrix_Type;
     function Concatenate (
       V1, V2 : Vector_Type )
       return Matrix_Type;
     procedure Demo;
     function Determinant (
       M : Matrix_Type )
       return float;
     function Fill (
       M : Matrix_Type;
       F : float := 0.0 )
       return Matrix_Type;
     function Identity (
       M : Matrix_Type )
       return Matrix_Type;
     function Inverse (
       M : Matrix_Type )
       return Matrix_Type;
     function Is_Square (
       M : Matrix_Type )
       return boolean;
     procedure Load (
       M         :    out Matrix_Type;
       File_Name : in     string );
     function Matrix_Convert (
       V : Vector_Type )
       return Matrix_Type;
     function Minor (
       A        : Matrix_Type;
       Row, Col : integer )
       return float;
     procedure Put_Line (
       M : in Matrix_Type );
     procedure Save (
       M         : in     Matrix_Type;
       File_Name : in     string );
     function Row (
       M   : Matrix_Type;
       Row : integer )
       return Vector_Type;
     function Slice (
       Tiny, Huge : Matrix_Type )
       return Matrix_Type;
     function Sub_Matrix (
       A        : Matrix_Type;
       Row, Col : integer )
       return Matrix_Type;
     function Transpose (
       M : Matrix_Type )
       return Matrix_Type;
     function Vector_Convert (
       M : Matrix_Type )
       return Vector_Type;
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
     end A83_015_Matrix;
