blob: 9622fd86ddd67dbebba8bba342071176fca49376 [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
Austin Schuh189376f2018-12-20 22:11:15 +110013template<typename T, typename I> void test_conjugate_gradient_T()
Brian Silverman72890c22015-09-19 14:37:37 -040014{
Austin Schuh189376f2018-12-20 22:11:15 +110015 typedef SparseMatrix<T,0,I> SparseMatrixType;
16 ConjugateGradient<SparseMatrixType, Lower > cg_colmajor_lower_diag;
17 ConjugateGradient<SparseMatrixType, Upper > cg_colmajor_upper_diag;
18 ConjugateGradient<SparseMatrixType, Lower|Upper> cg_colmajor_loup_diag;
19 ConjugateGradient<SparseMatrixType, Lower, IdentityPreconditioner> cg_colmajor_lower_I;
20 ConjugateGradient<SparseMatrixType, Upper, IdentityPreconditioner> cg_colmajor_upper_I;
Brian Silverman72890c22015-09-19 14:37:37 -040021
22 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_lower_diag) );
23 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_upper_diag) );
24 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_loup_diag) );
25 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_lower_I) );
26 CALL_SUBTEST( check_sparse_spd_solving(cg_colmajor_upper_I) );
27}
28
29void test_conjugate_gradient()
30{
Austin Schuh189376f2018-12-20 22:11:15 +110031 CALL_SUBTEST_1(( test_conjugate_gradient_T<double,int>() ));
32 CALL_SUBTEST_2(( test_conjugate_gradient_T<std::complex<double>, int>() ));
33 CALL_SUBTEST_3(( test_conjugate_gradient_T<double,long int>() ));
Brian Silverman72890c22015-09-19 14:37:37 -040034}