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