diff options
Diffstat (limited to 'test/conjugate_gradient.cpp')
-rw-r--r-- | test/conjugate_gradient.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/conjugate_gradient.cpp b/test/conjugate_gradient.cpp new file mode 100644 index 000000000..869051b31 --- /dev/null +++ b/test/conjugate_gradient.cpp @@ -0,0 +1,30 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. +// +// Copyright (C) 2011 Gael Guennebaud <g.gael@free.fr> +// +// This Source Code Form is subject to the terms of the Mozilla +// Public License v. 2.0. If a copy of the MPL was not distributed +// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#include "sparse_solver.h" +#include <Eigen/IterativeLinearSolvers> + +template<typename T> void test_conjugate_gradient_T() +{ + ConjugateGradient<SparseMatrix<T>, Lower> cg_colmajor_lower_diag; + ConjugateGradient<SparseMatrix<T>, Upper> cg_colmajor_upper_diag; + ConjugateGradient<SparseMatrix<T>, Lower, IdentityPreconditioner> cg_colmajor_lower_I; + ConjugateGradient<SparseMatrix<T>, Upper, IdentityPreconditioner> cg_colmajor_upper_I; + + CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_lower_diag) ); + CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_upper_diag) ); + CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_lower_I) ); + CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_upper_I) ); +} + +void test_conjugate_gradient() +{ + CALL_SUBTEST_1(test_conjugate_gradient_T<double>()); + CALL_SUBTEST_2(test_conjugate_gradient_T<std::complex<double> >()); +} |