def SVD(A):
    # A = U*S*V, donc V = A'*U*inv(S)
    D, U = algoQR(A @ A.T)
    S = np.sqrt(np.diag(abs(D)))
    Sm1 = np.diag(np.divide(1, S))
    V = A.T @ U @ Sm1

    return U, S, V