diff --git a/lib/linalg/Matrix.cpp b/lib/linalg/Matrix.cpp index 240d207e3..2313ae515 100644 --- a/lib/linalg/Matrix.cpp +++ b/lib/linalg/Matrix.cpp @@ -755,7 +755,11 @@ Matrix::inverse( } // Now call lapack to do the inversion. dgetrf(&mtx_size, &mtx_size, result->d_mat, &mtx_size, ipiv, &info); + CAROM_VERIFY(info == 0); + dgetri(&mtx_size, result->d_mat, &mtx_size, ipiv, work, &lwork, &info); + CAROM_VERIFY(info == 0); + // Result now has the inverse in a column major representation. Put it // into row major order. for (int row = 0; row < mtx_size; ++row) { @@ -798,7 +802,11 @@ Matrix::inverse( } // Now call lapack to do the inversion. dgetrf(&mtx_size, &mtx_size, result.d_mat, &mtx_size, ipiv, &info); + CAROM_VERIFY(info == 0); + dgetri(&mtx_size, result.d_mat, &mtx_size, ipiv, work, &lwork, &info); + CAROM_VERIFY(info == 0); + // Result now has the inverse in a column major representation. Put it // into row major order. for (int row = 0; row < mtx_size; ++row) { @@ -852,7 +860,11 @@ Matrix::inverse() } // Now call lapack to do the inversion. dgetrf(&mtx_size, &mtx_size, d_mat, &mtx_size, ipiv, &info); + CAROM_VERIFY(info == 0); + dgetri(&mtx_size, d_mat, &mtx_size, ipiv, work, &lwork, &info); + CAROM_VERIFY(info == 0); + // This now has its inverse in a column major representation. Put it into // row major representation. for (int row = 0; row < mtx_size; ++row) {