aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/sparse_solvers.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-05-19 16:49:05 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-05-19 16:49:05 +0200
commit64cbd452669bccdb2470ddaf74f1312b4566b48e (patch)
tree54d1589b9b66a1c660b138ed92bf1e01589b5240 /test/sparse_solvers.cpp
parent2b6153d3ed3fb0096a6f10e97c884b1ad559192e (diff)
minor chnages in Taucs and Cholmod backends
Diffstat (limited to 'test/sparse_solvers.cpp')
-rw-r--r--test/sparse_solvers.cpp34
1 files changed, 19 insertions, 15 deletions
diff --git a/test/sparse_solvers.cpp b/test/sparse_solvers.cpp
index fab2ab56e..00df1bffd 100644
--- a/test/sparse_solvers.cpp
+++ b/test/sparse_solvers.cpp
@@ -131,16 +131,20 @@ template<typename Scalar> void sparse_solvers(int rows, int cols)
#endif
#ifdef EIGEN_TAUCS_SUPPORT
- x = b;
- SparseLLT<SparseMatrix<Scalar> ,Taucs>(m2,IncompleteFactorization).solveInPlace(x);
- VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: taucs (IncompleteFactorization)");
// TODO fix TAUCS with complexes
- x = b;
- SparseLLT<SparseMatrix<Scalar> ,Taucs>(m2,SupernodalMultifrontal).solveInPlace(x);
- VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: taucs (SupernodalMultifrontal)");
- x = b;
- SparseLLT<SparseMatrix<Scalar> ,Taucs>(m2,SupernodalLeftLooking).solveInPlace(x);
- VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: taucs (SupernodalLeftLooking)");
+ if (!NumTraits<Scalar>::IsComplex)
+ {
+ x = b;
+// SparseLLT<SparseMatrix<Scalar> ,Taucs>(m2,IncompleteFactorization).solveInPlace(x);
+// VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: taucs (IncompleteFactorization)");
+
+ x = b;
+ SparseLLT<SparseMatrix<Scalar> ,Taucs>(m2,SupernodalMultifrontal).solveInPlace(x);
+ VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: taucs (SupernodalMultifrontal)");
+ x = b;
+ SparseLLT<SparseMatrix<Scalar> ,Taucs>(m2,SupernodalLeftLooking).solveInPlace(x);
+ VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: taucs (SupernodalLeftLooking)");
+ }
#endif
}
@@ -154,9 +158,9 @@ template<typename Scalar> void sparse_solvers(int rows, int cols)
DenseVector b = DenseVector::Random(cols);
DenseVector refX(cols), x(cols);
- //initSPD(density, refMat2, m2);
+// initSPD(density, refMat2, m2);
initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeUpperTriangular, 0, 0);
- refMat2 += refMat2.adjoint();
+ refMat2 += (refMat2.adjoint()).eval();
refMat2.diagonal() *= 0.5;
refX = refMat2.llt().solve(b); // FIXME use LLT to compute the reference because LDLT seems to fail with large matrices
@@ -202,7 +206,7 @@ template<typename Scalar> void sparse_solvers(int rows, int cols)
}
if (slu.solve(b, &x, SvAdjoint)) {
-// VERIFY(b.isApprox(m2.adjoint() * x, test_precision<Scalar>()));
+ VERIFY(b.isApprox(m2.adjoint() * x, test_precision<Scalar>()));
}
if (count==0) {
@@ -236,8 +240,8 @@ template<typename Scalar> void sparse_solvers(int rows, int cols)
void test_sparse_solvers()
{
for(int i = 0; i < g_repeat; i++) {
-// CALL_SUBTEST(sparse_solvers<double>(8, 8) );
- CALL_SUBTEST(sparse_solvers<std::complex<double> >(16, 16) );
-// CALL_SUBTEST(sparse_solvers<double>(100, 100) );
+ CALL_SUBTEST_1(sparse_solvers<double>(8, 8) );
+ CALL_SUBTEST_2(sparse_solvers<std::complex<double> >(16, 16) );
+ CALL_SUBTEST_1(sparse_solvers<double>(100, 100) );
}
}