Brian Silverman | 72890c2 | 2015-09-19 14:37:37 -0400 | [diff] [blame] | 1 | // 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 | |
Austin Schuh | c55b017 | 2022-02-20 17:52:35 -0800 | [diff] [blame] | 12 | template<typename T, typename I_, int flag> void test_simplicial_cholesky_T() |
Brian Silverman | 72890c2 | 2015-09-19 14:37:37 -0400 | [diff] [blame] | 13 | { |
Austin Schuh | c55b017 | 2022-02-20 17:52:35 -0800 | [diff] [blame] | 14 | typedef SparseMatrix<T,flag,I_> SparseMatrixType; |
Austin Schuh | 189376f | 2018-12-20 22:11:15 +1100 | [diff] [blame] | 15 | SimplicialCholesky<SparseMatrixType, Lower> chol_colmajor_lower_amd; |
| 16 | SimplicialCholesky<SparseMatrixType, Upper> chol_colmajor_upper_amd; |
| 17 | SimplicialLLT< SparseMatrixType, Lower> llt_colmajor_lower_amd; |
| 18 | SimplicialLLT< SparseMatrixType, Upper> llt_colmajor_upper_amd; |
| 19 | SimplicialLDLT< SparseMatrixType, Lower> ldlt_colmajor_lower_amd; |
| 20 | SimplicialLDLT< SparseMatrixType, Upper> ldlt_colmajor_upper_amd; |
Austin Schuh | c55b017 | 2022-02-20 17:52:35 -0800 | [diff] [blame] | 21 | SimplicialLDLT< SparseMatrixType, Lower, NaturalOrdering<I_> > ldlt_colmajor_lower_nat; |
| 22 | SimplicialLDLT< SparseMatrixType, Upper, NaturalOrdering<I_> > ldlt_colmajor_upper_nat; |
Brian Silverman | 72890c2 | 2015-09-19 14:37:37 -0400 | [diff] [blame] | 23 | |
| 24 | check_sparse_spd_solving(chol_colmajor_lower_amd); |
| 25 | check_sparse_spd_solving(chol_colmajor_upper_amd); |
| 26 | check_sparse_spd_solving(llt_colmajor_lower_amd); |
| 27 | check_sparse_spd_solving(llt_colmajor_upper_amd); |
| 28 | check_sparse_spd_solving(ldlt_colmajor_lower_amd); |
| 29 | check_sparse_spd_solving(ldlt_colmajor_upper_amd); |
| 30 | |
| 31 | check_sparse_spd_determinant(chol_colmajor_lower_amd); |
| 32 | check_sparse_spd_determinant(chol_colmajor_upper_amd); |
| 33 | check_sparse_spd_determinant(llt_colmajor_lower_amd); |
| 34 | check_sparse_spd_determinant(llt_colmajor_upper_amd); |
| 35 | check_sparse_spd_determinant(ldlt_colmajor_lower_amd); |
| 36 | check_sparse_spd_determinant(ldlt_colmajor_upper_amd); |
| 37 | |
Austin Schuh | c55b017 | 2022-02-20 17:52:35 -0800 | [diff] [blame] | 38 | check_sparse_spd_solving(ldlt_colmajor_lower_nat, (std::min)(300,EIGEN_TEST_MAX_SIZE), 1000); |
| 39 | check_sparse_spd_solving(ldlt_colmajor_upper_nat, (std::min)(300,EIGEN_TEST_MAX_SIZE), 1000); |
Brian Silverman | 72890c2 | 2015-09-19 14:37:37 -0400 | [diff] [blame] | 40 | } |
| 41 | |
Austin Schuh | c55b017 | 2022-02-20 17:52:35 -0800 | [diff] [blame] | 42 | EIGEN_DECLARE_TEST(simplicial_cholesky) |
Brian Silverman | 72890c2 | 2015-09-19 14:37:37 -0400 | [diff] [blame] | 43 | { |
Austin Schuh | c55b017 | 2022-02-20 17:52:35 -0800 | [diff] [blame] | 44 | CALL_SUBTEST_11(( test_simplicial_cholesky_T<double, int, ColMajor>() )); |
| 45 | CALL_SUBTEST_12(( test_simplicial_cholesky_T<std::complex<double>, int, ColMajor>() )); |
| 46 | CALL_SUBTEST_13(( test_simplicial_cholesky_T<double, long int, ColMajor>() )); |
| 47 | CALL_SUBTEST_21(( test_simplicial_cholesky_T<double, int, RowMajor>() )); |
| 48 | CALL_SUBTEST_22(( test_simplicial_cholesky_T<std::complex<double>, int, RowMajor>() )); |
| 49 | CALL_SUBTEST_23(( test_simplicial_cholesky_T<double, long int, RowMajor>() )); |
Brian Silverman | 72890c2 | 2015-09-19 14:37:37 -0400 | [diff] [blame] | 50 | } |