blob: d49ee00c31997eb88b6c19e04b475da3fefc3922 [file] [log] [blame]
Austin Schuh189376f2018-12-20 22:11:15 +11001// 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_lscg_T()
14{
15 LeastSquaresConjugateGradient<SparseMatrix<T> > lscg_colmajor_diag;
16 LeastSquaresConjugateGradient<SparseMatrix<T>, IdentityPreconditioner> lscg_colmajor_I;
17 LeastSquaresConjugateGradient<SparseMatrix<T,RowMajor> > lscg_rowmajor_diag;
18 LeastSquaresConjugateGradient<SparseMatrix<T,RowMajor>, IdentityPreconditioner> lscg_rowmajor_I;
19
20 CALL_SUBTEST( check_sparse_square_solving(lscg_colmajor_diag) );
21 CALL_SUBTEST( check_sparse_square_solving(lscg_colmajor_I) );
22
23 CALL_SUBTEST( check_sparse_leastsquare_solving(lscg_colmajor_diag) );
24 CALL_SUBTEST( check_sparse_leastsquare_solving(lscg_colmajor_I) );
25
26 CALL_SUBTEST( check_sparse_square_solving(lscg_rowmajor_diag) );
27 CALL_SUBTEST( check_sparse_square_solving(lscg_rowmajor_I) );
28
29 CALL_SUBTEST( check_sparse_leastsquare_solving(lscg_rowmajor_diag) );
30 CALL_SUBTEST( check_sparse_leastsquare_solving(lscg_rowmajor_I) );
31}
32
33void test_lscg()
34{
35 CALL_SUBTEST_1(test_lscg_T<double>());
36 CALL_SUBTEST_2(test_lscg_T<std::complex<double> >());
37}