aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/btl
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2011-01-28 11:24:18 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2011-01-28 11:24:18 +0100
commit1731a432e70422f608b072062c0da5454998cb46 (patch)
treeaa56ee1a4bbd6d239b60e542c00e0f891dc63407 /bench/btl
parent837f1ae59c7e71a0524410271d1553b1d0e77e66 (diff)
fix BTL cholesky action and output errors if the factorization failed
Diffstat (limited to 'bench/btl')
-rw-r--r--bench/btl/actions/action_cholesky.hh2
-rw-r--r--bench/btl/libs/C_BLAS/C_BLAS_interface.hh4
2 files changed, 4 insertions, 2 deletions
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