diff --git a/Numeric/GmshMatrix.cpp b/Numeric/GmshMatrix.cpp index dcfac6c2f12063692699b8e066a1ba5a53f692e4..16bf2c8de2d085f1a40bfbdbabe59c8531291dba 100644 --- a/Numeric/GmshMatrix.cpp +++ b/Numeric/GmshMatrix.cpp @@ -113,7 +113,10 @@ bool gmshMatrix<double>::lu_solve(const gmshVector<double> &rhs, gmshVector<doub dgesv_(&N, &nrhs, _data, &lda, ipiv, result._data, &ldb, &info); delete [] ipiv; if(info == 0) return true; - Msg::Error("Problem in LAPACK LU (info=%d)", info); + if(info > 0) + Msg::Error("U(%d,%d)=0 in LU decomposition", info, info); + else + Msg::Error("Wrong %d-th argument in LU decomposition", -info); return false; } @@ -134,7 +137,7 @@ double gmshMatrix<double>::determinant() const else if(info > 0) det = 0.; else - Msg::Error("Problem in LAPACK factorisation (info=%d)", info); + Msg::Error("Wrong %d-th argument in matrix factorization", -info); delete [] ipiv; return det; } @@ -150,7 +153,10 @@ bool gmshMatrix<double>::svd(gmshMatrix<double> &V, gmshVector<double> &S) VT._data, &LDVT, WORK._data, &LWORK, &info); V = VT.transpose(); if(info == 0) return true; - Msg::Error("Problem in LAPACK SVD (info=%d)", info); + if(info > 0) + Msg::Error("SVD did not converge"); + else + Msg::Error("Wrong %d-th argument in SVD decomposition", -info); return false; }