#pragma once

// my sparse implementation
#include "csc_form.hpp"
#include "csr_form.hpp"

// global matrix storage
#include "Dense.Single/BandMat.hpp"
#include "Dense.Single/BandMatSpike.hpp"
#include "Dense.Single/BandSymmMat.hpp"
#include "Dense.Single/FullMat.hpp"
#include "Dense.Single/SymmPackMat.hpp"
#include "Sparse.Single/SparseMatSuperLU.hpp"

#ifdef SUANPAN_MKL
#include "Sparse.Single/SparseMatFGMRES.hpp"
#include "Sparse.Single/SparseMatPARDISO.hpp"
#endif

#ifdef SUANPAN_CUDA
#include "Dense.Single/FullMatCUDA.hpp"
#include "Sparse.Single/SparseMatCUDA.hpp"
#ifdef SUANPAN_MAGMA
#include "Dense.Single/BandMatMAGMA.hpp"
#include "Sparse.Single/SparseMatMAGMA.hpp"
#endif
#endif

#ifdef SUANPAN_DISTRIBUTED
#include "Dense.Cluster/BandMatCluster.hpp"
#include "Dense.Cluster/BandSymmMatCluster.hpp"
#include "Dense.Cluster/FullMatCluster.hpp"
#include "Sparse.Cluster/SparseMatClusterLIS.hpp"
#include "Sparse.Cluster/SparseMatClusterMUMPS.hpp"
#include "Sparse.Cluster/SparseMatClusterPARDISO.hpp"
#endif

// misc operation
#include "operator_times.hpp"
