mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-21 07:19:46 +08:00
7b0c4102fa
construction of generic expressions working for both dense and sparse matrix. A nicer solution would be to use CwiseBinaryOp for any kind of matrix. To this end we either need to change the overall design so that the base class(es) depends on the kind of matrix, or we could add a template parameter to each expression type (e.g., int Kind = ei_traits<MatrixType>::Kind) allowing to specialize each expression for each kind of matrix. * Extend AutoDiffScalar to work with sparse vector expression for the derivatives.
136 lines
2.8 KiB
Plaintext
136 lines
2.8 KiB
Plaintext
#ifndef EIGEN_SPARSE_MODULE_H
|
|
#define EIGEN_SPARSE_MODULE_H
|
|
|
|
#include "Core"
|
|
|
|
#include "src/Core/util/DisableMSVCWarnings.h"
|
|
|
|
#include <vector>
|
|
#include <map>
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
#include <algorithm>
|
|
|
|
#ifdef EIGEN_GOOGLEHASH_SUPPORT
|
|
#include <google/dense_hash_map>
|
|
#endif
|
|
|
|
#ifdef EIGEN_CHOLMOD_SUPPORT
|
|
extern "C" {
|
|
#include <cholmod.h>
|
|
}
|
|
#endif
|
|
|
|
#ifdef EIGEN_TAUCS_SUPPORT
|
|
// taucs.h declares a lot of mess
|
|
#define isnan
|
|
#define finite
|
|
#define isinf
|
|
extern "C" {
|
|
#include <taucs.h>
|
|
}
|
|
#undef isnan
|
|
#undef finite
|
|
#undef isinf
|
|
|
|
#ifdef min
|
|
#undef min
|
|
#endif
|
|
#ifdef max
|
|
#undef max
|
|
#endif
|
|
#ifdef complex
|
|
#undef complex
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef EIGEN_SUPERLU_SUPPORT
|
|
typedef int int_t;
|
|
#include <slu_Cnames.h>
|
|
#include <supermatrix.h>
|
|
#include <slu_util.h>
|
|
|
|
namespace SuperLU_S {
|
|
#include <slu_sdefs.h>
|
|
}
|
|
namespace SuperLU_D {
|
|
#include <slu_ddefs.h>
|
|
}
|
|
namespace SuperLU_C {
|
|
#include <slu_cdefs.h>
|
|
}
|
|
namespace SuperLU_Z {
|
|
#include <slu_zdefs.h>
|
|
}
|
|
namespace Eigen { struct SluMatrix; }
|
|
#endif
|
|
|
|
#ifdef EIGEN_UMFPACK_SUPPORT
|
|
#include <umfpack.h>
|
|
#endif
|
|
|
|
namespace Eigen {
|
|
|
|
/** \defgroup Sparse_Module Sparse module
|
|
*
|
|
* \nonstableyet
|
|
*
|
|
* See the \ref TutorialSparse "Sparse tutorial"
|
|
*
|
|
* \code
|
|
* #include <Eigen/QR>
|
|
* \endcode
|
|
*/
|
|
|
|
#include "src/Sparse/SparseUtil.h"
|
|
#include "src/Sparse/SparseMatrixBase.h"
|
|
#include "src/Sparse/SparseNestByValue.h"
|
|
#include "src/Sparse/CompressedStorage.h"
|
|
#include "src/Sparse/AmbiVector.h"
|
|
#include "src/Sparse/RandomSetter.h"
|
|
#include "src/Sparse/SparseBlock.h"
|
|
#include "src/Sparse/SparseMatrix.h"
|
|
#include "src/Sparse/DynamicSparseMatrix.h"
|
|
#include "src/Sparse/MappedSparseMatrix.h"
|
|
#include "src/Sparse/SparseVector.h"
|
|
#include "src/Sparse/CoreIterators.h"
|
|
#include "src/Sparse/SparseTranspose.h"
|
|
#include "src/Sparse/SparseCwise.h"
|
|
#include "src/Sparse/SparseCwiseUnaryOp.h"
|
|
#include "src/Sparse/SparseCwiseBinaryOp.h"
|
|
#include "src/Sparse/SparseDot.h"
|
|
#include "src/Sparse/SparseAssign.h"
|
|
#include "src/Sparse/SparseRedux.h"
|
|
#include "src/Sparse/SparseFuzzy.h"
|
|
#include "src/Sparse/SparseFlagged.h"
|
|
#include "src/Sparse/SparseProduct.h"
|
|
#include "src/Sparse/SparseDiagonalProduct.h"
|
|
#include "src/Sparse/SparseTriangular.h"
|
|
#include "src/Sparse/TriangularSolver.h"
|
|
#include "src/Sparse/SparseLLT.h"
|
|
#include "src/Sparse/SparseLDLT.h"
|
|
#include "src/Sparse/SparseLU.h"
|
|
#include "src/Sparse/SparseExpressionMaker.h"
|
|
|
|
#ifdef EIGEN_CHOLMOD_SUPPORT
|
|
# include "src/Sparse/CholmodSupport.h"
|
|
#endif
|
|
|
|
#ifdef EIGEN_TAUCS_SUPPORT
|
|
# include "src/Sparse/TaucsSupport.h"
|
|
#endif
|
|
|
|
#ifdef EIGEN_SUPERLU_SUPPORT
|
|
# include "src/Sparse/SuperLUSupport.h"
|
|
#endif
|
|
|
|
#ifdef EIGEN_UMFPACK_SUPPORT
|
|
# include "src/Sparse/UmfPackSupport.h"
|
|
#endif
|
|
|
|
} // namespace Eigen
|
|
|
|
#include "src/Core/util/EnableMSVCWarnings.h"
|
|
|
|
#endif // EIGEN_SPARSE_MODULE_H
|