DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
EigenSupport.h
1
16
17
#pragma once
18
30
31
#if defined(EigenSupport_RECURSES)
32
#error Recursive header files inclusion detected in EigenSupport.h
33
#else
// defined(EigenSupport_RECURSES)
35
#define EigenSupport_RECURSES
36
37
#if !defined EigenSupport_h
39
#define EigenSupport_h
40
42
44
// Eigen API extensions
45
#define EIGEN_DENSEBASE_PLUGIN "DGtal/math/linalg/EigenDenseBaseAddons.h"
46
#define EIGEN_SPARSEMATRIX_PLUGIN "DGtal/math/linalg/EigenSparseMatrixAddons.h"
48
50
// Inclusions
51
#include <iostream>
52
#if defined(__GNUG__) && !defined(__clang__)
53
#pragma GCC diagnostic push
54
#pragma GCC diagnostic ignored "-Wpragmas"
55
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
56
#pragma GCC diagnostic ignored "-Wignored-attributes"
57
#pragma GCC diagnostic ignored "-Wshadow"
58
#endif
59
#if defined(__clang__)
60
#pragma clang diagnostic push
61
#pragma clang diagnostic ignored "-Wdocumentation"
62
#pragma clang diagnostic ignored "-Wignored-attributes"
63
#endif
64
#include <Eigen/Dense>
65
#include <Eigen/Sparse>
66
#include <Eigen/SparseCholesky>
67
#include <Eigen/IterativeLinearSolvers>
68
#include <Eigen/SparseLU>
69
#include <Eigen/SparseQR>
70
#if defined(__clang__)
71
#pragma clang diagnostic pop
72
#endif
73
#if defined(__GNUG__) && !defined(__clang__)
74
#pragma GCC diagnostic pop
75
#endif
77
78
namespace
DGtal
79
{
81
// struct EigenLinearAlgebraBackend
95
struct
EigenLinearAlgebraBackend
96
{
97
typedef
Eigen::VectorXd
DenseVector
;
98
typedef
Eigen::MatrixXd
DenseMatrix
;
99
typedef
Eigen::VectorXi
IntegerVector
;
100
101
typedef
Eigen::SparseMatrix<DenseVector::Scalar, Eigen::ColMajor, DenseVector::Index>
SparseMatrix
;
102
typedef
Eigen::Triplet<double, SparseMatrix::StorageIndex>
Triplet
;
103
105
typedef
Eigen::SimplicialLLT<SparseMatrix>
SolverSimplicialLLT
;
106
typedef
Eigen::SimplicialLDLT<SparseMatrix>
SolverSimplicialLDLT
;
107
typedef
Eigen::ConjugateGradient<SparseMatrix>
SolverConjugateGradient
;
108
typedef
Eigen::BiCGSTAB<SparseMatrix>
SolverBiCGSTAB
;
109
typedef
Eigen::SparseLU<SparseMatrix>
SolverSparseLU
;
110
typedef
Eigen::SparseQR<SparseMatrix, Eigen::COLAMDOrdering<SparseMatrix::Index> >
SolverSparseQR
;
111
};
112
113
114
121
inline
122
std::ostream&
123
operator<<
(std::ostream & os,
const
Eigen::ComputationInfo& info)
124
{
125
switch
(info)
126
{
127
case
Eigen::Success:
128
os <<
"success"
;
129
break
;
130
case
Eigen::NumericalIssue:
131
os <<
"numerical_issue"
;
132
break
;
133
case
Eigen::NoConvergence:
134
os <<
"no_convergence"
;
135
break
;
136
case
Eigen::InvalidInput:
137
os <<
"invalid_input"
;
138
break
;
139
}
140
141
return
os;
142
}
143
144
}
// namespace DGtal
145
146
#endif
// !defined EigenSupport_h
147
148
#undef EigenSupport_RECURSES
149
#endif
// else defined(EigenSupport_RECURSES)
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::operator<<
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
DGtal::EigenLinearAlgebraBackend
Aim: Provide linear algebra backend using Eigen dense and sparse matrix as well as dense vector....
Definition
EigenSupport.h:96
DGtal::EigenLinearAlgebraBackend::DenseVector
Eigen::VectorXd DenseVector
Definition
EigenSupport.h:97
DGtal::EigenLinearAlgebraBackend::SolverSimplicialLLT
Eigen::SimplicialLLT< SparseMatrix > SolverSimplicialLLT
Solvers on sparse matrices.
Definition
EigenSupport.h:105
DGtal::EigenLinearAlgebraBackend::SolverSimplicialLDLT
Eigen::SimplicialLDLT< SparseMatrix > SolverSimplicialLDLT
Definition
EigenSupport.h:106
DGtal::EigenLinearAlgebraBackend::Triplet
Eigen::Triplet< double, SparseMatrix::StorageIndex > Triplet
Definition
EigenSupport.h:102
DGtal::EigenLinearAlgebraBackend::DenseMatrix
Eigen::MatrixXd DenseMatrix
Definition
EigenSupport.h:98
DGtal::EigenLinearAlgebraBackend::SolverBiCGSTAB
Eigen::BiCGSTAB< SparseMatrix > SolverBiCGSTAB
Definition
EigenSupport.h:108
DGtal::EigenLinearAlgebraBackend::IntegerVector
Eigen::VectorXi IntegerVector
Definition
EigenSupport.h:99
DGtal::EigenLinearAlgebraBackend::SolverSparseQR
Eigen::SparseQR< SparseMatrix, Eigen::COLAMDOrdering< SparseMatrix::Index > > SolverSparseQR
Definition
EigenSupport.h:110
DGtal::EigenLinearAlgebraBackend::SparseMatrix
Eigen::SparseMatrix< DenseVector::Scalar, Eigen::ColMajor, DenseVector::Index > SparseMatrix
Definition
EigenSupport.h:101
DGtal::EigenLinearAlgebraBackend::SolverSparseLU
Eigen::SparseLU< SparseMatrix > SolverSparseLU
Definition
EigenSupport.h:109
DGtal::EigenLinearAlgebraBackend::SolverConjugateGradient
Eigen::ConjugateGradient< SparseMatrix > SolverConjugateGradient
Definition
EigenSupport.h:107
src
DGtal
math
linalg
EigenSupport.h
Generated on
for DGtal by
1.18.0