function x=GAUSS(A,b)
        n=length(b) // ou bien n=length(A).^(1/2)
        for j=1:n-1
// Recherche du plus grand pivot
        pivot=A(j,j)  // Le premier candidat
        ligne=j       // et sa ligne
        for i=j+1:n
            if abs(A(i,j))>abs(pivot) then
               pivot=A(i,j)
               ligne=i
            end
        end
// Placement du pivot dans (A,b): 
// il faut permuter les lignes       
        A([j,ligne],:)=A([ligne,j],:)
        b([j,ligne])=b([ligne,j])
// "Nettoyage" sous le pivot
        for i=j+1:n
          b(i)=b(i)-A(i,j)/A(j,j)*b(j) // voir remarque
          A(i,:)=A(i,:)-A(i,j)/A(j,j)*A(j,:)
        end
        end    
    // Remarque:  Si on inverse ces deux lignes
    // ça ne fonctionne pas. Reflechissez pourquoi !  Mais
    // si on introduit au préalable c=A(i,j)/A(j,j) on peut
    // b(i)=b(i)-c*b(j) et A(i,:)=A(i,:)-c*A(j,:) dans 
    // n'importe quel ordre. 
// On résout le système en remontant
        x=zeros(n,1)
        x(n)=b(n)/A(n,n)
        for i=n-1:-1:1
            x(i)=(b(i)-A(i,:)*x)/A(i,i)  
        // on utilise le fait que les  x(1:i) sont nuls
        end
endfunction
