blob: 019cc4d64fc7eb19c0574a1badd4b8be1c5be949 [file] [log] [blame]
Brian Silverman72890c22015-09-19 14:37:37 -04001// This file is part of Eigen, a lightweight C++ template library
2// for linear algebra.
3//
4// Copyright (C) 2011 Gael Guennebaud <g.gael@free.fr>
5//
6// This Source Code Form is subject to the terms of the Mozilla
7// Public License v. 2.0. If a copy of the MPL was not distributed
8// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
10#include "sparse_solver.h"
11#include <Eigen/IterativeLinearSolvers>
12
13template<typename T> void test_conjugate_gradient_T()
14{
15 ConjugateGradient<SparseMatrix<T>, Lower > cg_colmajor_lower_diag;
16 ConjugateGradient<SparseMatrix<T>, Upper > cg_colmajor_upper_diag;
17 ConjugateGradient<SparseMatrix<T>, Lower|Upper> cg_colmajor_loup_diag;
18 ConjugateGradient<SparseMatrix<T>, Lower, IdentityPreconditioner> cg_colmajor_lower_I;
19 ConjugateGradient<SparseMatrix<T>, Upper, IdentityPreconditioner> cg_colmajor_upper_I;
20
21 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_lower_diag) );
22 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_upper_diag) );
23 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_loup_diag) );
24 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_lower_I) );
25 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_upper_I) );
26}
27
28void test_conjugate_gradient()
29{
30 CALL_SUBTEST_1(test_conjugate_gradient_T<double>());
31 CALL_SUBTEST_2(test_conjugate_gradient_T<std::complex<double> >());
32}