cart-elc

Source code for CART-ELC
git clone git://git.laack.co/cart-elc.git
Log | Files | Refs | README | LICENSE

pastix_support.cpp (1902B)


      1 // This file is part of Eigen, a lightweight C++ template library
      2 // for linear algebra.
      3 //
      4 // Copyright (C) 2008-2012 Gael Guennebaud <gael.guennebaud@inria.fr>
      5 // Copyright (C) 2012 Désiré Nuentsa-Wakam <desire.nuentsa_wakam@inria.fr>
      6 //
      7 // This Source Code Form is subject to the terms of the Mozilla
      8 // Public License v. 2.0. If a copy of the MPL was not distributed
      9 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
     10 
     11 #define EIGEN_NO_DEBUG_SMALL_PRODUCT_BLOCKS
     12 #include "sparse_solver.h"
     13 #include <Eigen/PaStiXSupport>
     14 #include <unsupported/Eigen/SparseExtra>
     15 
     16 
     17 template<typename T> void test_pastix_T()
     18 {
     19   PastixLLT< SparseMatrix<T, ColMajor>, Eigen::Lower > pastix_llt_lower;
     20   PastixLDLT< SparseMatrix<T, ColMajor>, Eigen::Lower > pastix_ldlt_lower;
     21   PastixLLT< SparseMatrix<T, ColMajor>, Eigen::Upper > pastix_llt_upper;
     22   PastixLDLT< SparseMatrix<T, ColMajor>, Eigen::Upper > pastix_ldlt_upper;
     23   PastixLU< SparseMatrix<T, ColMajor> > pastix_lu;
     24 
     25   check_sparse_spd_solving(pastix_llt_lower);
     26   check_sparse_spd_solving(pastix_ldlt_lower);
     27   check_sparse_spd_solving(pastix_llt_upper);
     28   check_sparse_spd_solving(pastix_ldlt_upper);
     29   check_sparse_square_solving(pastix_lu);
     30 
     31   // Some compilation check:
     32   pastix_llt_lower.iparm();
     33   pastix_llt_lower.dparm();
     34   pastix_ldlt_lower.iparm();
     35   pastix_ldlt_lower.dparm();
     36   pastix_lu.iparm();
     37   pastix_lu.dparm();
     38 }
     39 
     40 // There is no support for selfadjoint matrices with PaStiX. 
     41 // Complex symmetric matrices should pass though
     42 template<typename T> void test_pastix_T_LU()
     43 {
     44   PastixLU< SparseMatrix<T, ColMajor> > pastix_lu;
     45   check_sparse_square_solving(pastix_lu);
     46 }
     47 
     48 EIGEN_DECLARE_TEST(pastix_support)
     49 {
     50   CALL_SUBTEST_1(test_pastix_T<float>());
     51   CALL_SUBTEST_2(test_pastix_T<double>());
     52   CALL_SUBTEST_3( (test_pastix_T_LU<std::complex<float> >()) );
     53   CALL_SUBTEST_4(test_pastix_T_LU<std::complex<double> >());
     54 }