From 1731a432e70422f608b072062c0da5454998cb46 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Fri, 28 Jan 2011 11:24:18 +0100 Subject: fix BTL cholesky action and output errors if the factorization failed --- bench/btl/actions/action_cholesky.hh | 2 +- bench/btl/libs/C_BLAS/C_BLAS_interface.hh | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'bench/btl') diff --git a/bench/btl/actions/action_cholesky.hh b/bench/btl/actions/action_cholesky.hh index 1e236656c..5f66d113a 100644 --- a/bench/btl/actions/action_cholesky.hh +++ b/bench/btl/actions/action_cholesky.hh @@ -44,7 +44,7 @@ public : // make sure X is invertible for (int i=0; i<_size; ++i) - X_stl[i][i] = X_stl[i][i] * 1e2 + 1; + X_stl[i][i] = std::abs(X_stl[i][i]) * 1e2 + 100; // generic matrix and vector initialization Interface::matrix_from_stl(X_ref,X_stl); diff --git a/bench/btl/libs/C_BLAS/C_BLAS_interface.hh b/bench/btl/libs/C_BLAS/C_BLAS_interface.hh index aa2021d13..5701b7b1e 100644 --- a/bench/btl/libs/C_BLAS/C_BLAS_interface.hh +++ b/bench/btl/libs/C_BLAS/C_BLAS_interface.hh @@ -246,12 +246,13 @@ public : #endif } - static inline void cholesky(const gene_vector & X, gene_vector & C, int N){ + static inline void cholesky(const gene_matrix & X, gene_matrix & C, int N){ int N2 = N*N; scopy_(&N2, X, &intone, C, &intone); char uplo = 'L'; int info = 0; spotrf_(&uplo, &N, C, &N, &info); + if(info!=0) std::cerr << "spotrf_ error " << info << "\n"; } static inline void partial_lu_decomp(const gene_matrix & X, gene_matrix & C, int N){ @@ -261,6 +262,7 @@ public : int info = 0; int * ipiv = (int*)alloca(sizeof(int)*N); sgetrf_(&N, &N, C, &N, ipiv, &info); + if(info!=0) std::cerr << "sgetrf_ error " << info << "\n"; } #ifdef HAS_LAPACK -- cgit v1.2.3