
def normalise(M):
    B,n=1*M,len(M)
    for i in range(n):
        B[i,:]=M[i,:]/M[i,i]
    return B
    



def Gauss(M,B=False):
    # verification que M est carree
    t=...
    assert len(t)==2 and t[0]==t[1],'matrice non carree'
    n=t[0]
    # si B==False prendre B=In ->calcul de l’inverse
    if type(B)==bool:
        B=np.identity(n)
    # verification que B est de la bonne taille
    tb=np.shape(B)
    assert ...,"B n’est pas compatible"
    # construction de M|B
    T=np.zeros((.....))
    T[:,:n]=...
    ...
    # travail sur les lignes
    for i in range(n):
        p=pivot(T,i)
        # detecter si M est inversible
        assert abs(T[p,i])>1e-14,'matrice non inversible'
        # positionnement du pivot
        if p!=i:
            ...
        # elimination sur la colonne
        ...
            if ...:
                T=elimine(T,i,j)
    # normalisation des coeff diagonaux
    T=normalise(T)
    return T