----------------------------------------------
-- Nom fichier      : Matrice.ads                                                             --
-- Auteur           : Julien Burdy                                                            --
-- Date             : 26 février 2001                                                         --
--                                                                                            --
-- But              : Pactage mettant a disposition un type matrice ainsi que les opération   --
--                     de base de ce type Addition, soustraction, multiplication et élévation --
--                     une puissance                                                          --
--                                                                                            --
--                                                                                            --
-- Date de modif.   :                                                                         --
-- Raison           :                                                                         --
-- Modules appelés  :                                                                         --
-- Mat. particulier :                                                                         --
--                                                                                            --
-- Compilation      :                                                                         --
-- Edition de liens :                                                                         --
-- Mode défection :                                                                           --
----------------------------------------------
generic

   type T_Indice is (<>);

   type T_Element is private;

   Element_Null : in T_Element;

   with procedure Get ( Element : out T_Element) is <>;

   with procedure Put ( Element : in T_Element) is <>;


   with function "+" ( X, Y : T_Element ) return T_Element is <>;

   with function "+" ( X, Y : T_Indice ) return T_Indice is <>;

   with function "-" ( X, Y : T_Element ) return T_Element is <>;

   with function "-" ( X, Y : T_Indice ) return T_Indice is <>;

   with function "*" ( X, Y : T_Element ) return T_Element is <>;

   with function "=" ( X, Y : T_Element ) return Boolean is <>;



package Matrice_G is



-------------------
-- Type tableau matrice
type T_Matrice is array ( T_Indice range <>, T_Indice range <> ) of T_Element ;


----------------------------------------
-- Multiplication de deux matrices
function "*"  ( Matrice_A, Matrice_B : in T_Matrice ) return T_Matrice ;

-------
-- Elèvation à la puissance d'une matrice
function "**" ( Matrice : in T_Matrice ; Exposant : in Positive ) return T_Matrice ;

----------------------------------------------
-- Addition de deux matrices
--
--  Entrée : Operande A et Operande B
--  Exeption : Erreur_Dimension
----------------------------------------------
function "+"  ( Matrice_A, Matrice_B : in T_Matrice ) return T_Matrice ;

----------------------------------------------
-- Soustraction de deux matrices
function "-"  ( Matrice_A, Matrice_B : in T_Matrice ) return T_Matrice ;

----------------------------------------------
-- Lecture d'une matrice
procedure Get ( Matrice : out T_Matrice );

----------------------------------------------
-- Affichage d'une matrice
procedure Put ( Matrice : in  T_Matrice );

----------------------------------------------
end Matrice_G;