diff options
author | Gael Guennebaud <g.gael@free.fr> | 2011-01-28 16:30:21 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2011-01-28 16:30:21 +0100 |
commit | c478e0039ee9d7140994758cc365073a2a703f20 (patch) | |
tree | acd284477723ea83a8917b934bc80354a6b5107b /unsupported | |
parent | 6f2ba1f52bdda2c477828a5ad00af75329d30ca2 (diff) |
disable broken determinant for complexes and SuperLU
Diffstat (limited to 'unsupported')
-rw-r--r-- | unsupported/Eigen/src/SparseExtra/SuperLUSupport.h | 3 | ||||
-rw-r--r-- | unsupported/test/sparse_lu.cpp | 32 |
2 files changed, 18 insertions, 17 deletions
diff --git a/unsupported/Eigen/src/SparseExtra/SuperLUSupport.h b/unsupported/Eigen/src/SparseExtra/SuperLUSupport.h index a3e2de82e..ffe2bc9af 100644 --- a/unsupported/Eigen/src/SparseExtra/SuperLUSupport.h +++ b/unsupported/Eigen/src/SparseExtra/SuperLUSupport.h @@ -630,6 +630,7 @@ void SparseLU<MatrixType,SuperLU>::extractData() const template<typename MatrixType> typename SparseLU<MatrixType,SuperLU>::Scalar SparseLU<MatrixType,SuperLU>::determinant() const { + assert((!NumTraits<Scalar>::IsComplex) && "This function is not implemented for complex yet"); if (m_extractedDataAreDirty) extractData(); @@ -647,7 +648,7 @@ typename SparseLU<MatrixType,SuperLU>::Scalar SparseLU<MatrixType,SuperLU>::dete det *= m_u._valuePtr()[lastId]; } } - // std::cout << m_sluRscale[j] << " " << m_sluCscale[j] << " "; +// std::cout << m_sluRscale[j] << " " << m_sluCscale[j] << " \n"; } return det; } diff --git a/unsupported/test/sparse_lu.cpp b/unsupported/test/sparse_lu.cpp index e693499bb..c1e50d272 100644 --- a/unsupported/test/sparse_lu.cpp +++ b/unsupported/test/sparse_lu.cpp @@ -79,28 +79,28 @@ template<typename Scalar> void sparse_lu(int rows, int cols) VERIFY(b.isApprox(m2.adjoint() * x, test_precision<Scalar>())); } - if (count==0) { + if (!NumTraits<Scalar>::IsComplex) { VERIFY_IS_APPROX(refDet,slu.determinant()); // FIXME det is not very stable for complex } } } #endif #ifdef EIGEN_UMFPACK_SUPPORT - { - // check solve - x.setZero(); - SparseLU<SparseMatrix<Scalar>,UmfPack> slu(m2); - if (slu.succeeded()) { - if (slu.solve(b,&x)) { - if (count==0) { - VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LU: umfpack"); // FIXME solve is not very stable for complex - } - } - VERIFY_IS_APPROX(refDet,slu.determinant()); - // TODO check the extracted data - //std::cerr << slu.matrixL() << "\n"; - } - } +// { +// // check solve +// x.setZero(); +// SparseLU<SparseMatrix<Scalar>,UmfPack> slu(m2); +// if (slu.succeeded()) { +// if (slu.solve(b,&x)) { +// if (count==0) { +// VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LU: umfpack"); // FIXME solve is not very stable for complex +// } +// } +// VERIFY_IS_APPROX(refDet,slu.determinant()); +// // TODO check the extracted data +// //std::cerr << slu.matrixL() << "\n"; +// } +// } #endif count++; } |