aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2011-10-11 19:38:36 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2011-10-11 19:38:36 +0200
commit21d27c6f71b764443c56f45bf689203f61ec54b1 (patch)
tree9fdb6768dab8cd49e3986a4d1536c9e87ecc036f /unsupported
parentcd3c2451b6915dbd9e27930b1dcb4550a73d8e2e (diff)
add proper bicgstab unit test
Diffstat (limited to 'unsupported')
-rw-r--r--unsupported/test/CMakeLists.txt1
-rw-r--r--unsupported/test/bicgstab.cpp43
2 files changed, 44 insertions, 0 deletions
diff --git a/unsupported/test/CMakeLists.txt b/unsupported/test/CMakeLists.txt
index 9adfe4758..a03baed60 100644
--- a/unsupported/test/CMakeLists.txt
+++ b/unsupported/test/CMakeLists.txt
@@ -94,6 +94,7 @@ ei_add_test(sparse_lu_legacy "" "${SPARSE_LIBS}")
ei_add_test(simplicial_cholesky)
ei_add_test(conjugate_gradient)
+ei_add_test(bicgstab)
if(UMFPACK_FOUND)
ei_add_test(umfpack_support "" "${UMFPACK_ALL_LIBS}")
diff --git a/unsupported/test/bicgstab.cpp b/unsupported/test/bicgstab.cpp
new file mode 100644
index 000000000..60f57af33
--- /dev/null
+++ b/unsupported/test/bicgstab.cpp
@@ -0,0 +1,43 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2011 Gael Guennebaud <g.gael@free.fr>
+//
+// Eigen is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+//
+// Alternatively, you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License and a copy of the GNU General Public License along with
+// Eigen. If not, see <http://www.gnu.org/licenses/>.
+
+#include "sparse_solver.h"
+#include <Eigen/IterativeSolvers>
+
+template<typename T> void test_bicgstab_T()
+{
+ BiCGSTAB<SparseMatrix<T>, DiagonalPreconditioner<T> > bicgstab_colmajor_diag;
+ BiCGSTAB<SparseMatrix<T>, IdentityPreconditioner > bicgstab_colmajor_I;
+
+ CALL_SUBTEST( check_sparse_square_solving(bicgstab_colmajor_diag) );
+ CALL_SUBTEST( check_sparse_square_solving(bicgstab_colmajor_I) );
+}
+
+void test_bicgstab()
+{
+ for(int i = 0; i < g_repeat; i++) {
+ CALL_SUBTEST_1(test_bicgstab_T<double>());
+ CALL_SUBTEST_2(test_bicgstab_T<std::complex<double> >());
+ }
+}