function [L,U] = LUcho(A)     // decomposition LU
                                // avec les diagonales de L et U égales
      // on divise la ligne et la colonne du pivot par la racine carrée du pivot
                                // on ne doit pas avoir de pivot nul

n=size(A,'c') // calcul de la taille de A et vérif carrée
if ~ size(A,'r')==n  then printf('matrice non carree'), return,end

print(6,A)

for k = 1 : n ,   // etape k
    if A(k,k)==0 then 
        printf('pivot nul à l''étape %d',k),
        L='pas de calcul',
        U='',
        return
    end,
  
   printf('pivot=%f',A(k,k)),

   racpivot = sqrt(A(k,k))
   A(k,k+1:n) = A(k,k+1:n)/racpivot, // nouvelle ligne k
   A(k:n,k) = A(k:n,k)/racpivot, // nouvelle colonne k
   
   // for i = k+1 : n ,   // nouvelle ligne i
   //     A(i,k+1:n) = A(i,k+1:n) - A(i,k)*A(k,k+1:n)) 
   // end,
   // ou
   A(k+1:n,k+1:n) = A(k+1:n,k+1:n) - A(k+1:n,k)*A(k,k+1:n)
   
   printf('etape %d',k),
   print(6,A),
end,

L=zeros(n,n)
for i=1:n,L(i,1:i)=A(i,1:i), end
U=zeros(n,n)
for i=1:n,U(i,i:n)=A(i,i:n), end

// A=[2,1,-4;3,3,-5;4,5,-2]       premier exemple du cours
// A=[2,1,-4;4,2,-7;2,1,-1]        resol impossible
// A=[2,1,-4;4,2,-7;2,1,-1]        resol indeterminee
// A=[2,1,-4;4,2,-7;2,2,-1]        echange de lignes obligatoire
//                                             pas de LU mais PLU

// A=[2,1,-4;4,2,1;2,1,1]         plusieurs decompositions LU
// A=[2,1,-4;4,2,1;2,2,1]         pas de decomposition LU


