with Ada.Text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; with Ada.Float_Text_IO; use Ada.Float_Text_IO; generic type T_Element is digits <>; N: Positive; package Google_Naive is type T_Google is private; type T_Vecteur is private; function "*"(left: T_Vecteur ; right: T_Google) return T_Vecteur; function "*"(left: Float; right: T_Google) return T_Google; function "/"(left: T_Google; right: Float) return T_Google with Pre => right /= 0.0; function "+"(left, right: T_Google) return T_Google; procedure initialize(mat: in out T_Google); procedure initialize(vec: in out T_Vecteur); function ones return T_Google; procedure insert(mat: in out T_Google; i, j: Natural; elm: T_Element); procedure create_H(mat: in out T_Google ; file: in Ada.Text_IO.File_Type); procedure create_S(mat: in out T_Google); procedure create_G(mat: in out T_Google ; alpha: in Float); procedure put(vec: in T_Vecteur); procedure put(mat: in T_Google); procedure put(file: in out Ada.Text_IO.File_Type; vec: in T_Vecteur); procedure sort_with_index_desc(pi: in T_Vecteur; pi_sorted: out T_Vecteur; pi_index: out T_Vecteur); private type T_Google is array (0..N-1, 0..N-1) of T_Element; type T_Vecteur is array (0..N-1) of T_Element; end Google_Naive;