10 #ifndef EIGEN_SPARSEUTIL_H 11 #define EIGEN_SPARSEUTIL_H 16 #define EIGEN_DBG_SPARSE(X) 18 #define EIGEN_DBG_SPARSE(X) X 21 #define EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(Derived, Op) \ 22 template<typename OtherDerived> \ 23 EIGEN_STRONG_INLINE Derived& operator Op(const Eigen::SparseMatrixBase<OtherDerived>& other) \ 25 return Base::operator Op(other.derived()); \ 27 EIGEN_STRONG_INLINE Derived& operator Op(const Derived& other) \ 29 return Base::operator Op(other); \ 32 #define EIGEN_SPARSE_INHERIT_SCALAR_ASSIGNMENT_OPERATOR(Derived, Op) \ 33 template<typename Other> \ 34 EIGEN_STRONG_INLINE Derived& operator Op(const Other& scalar) \ 36 return Base::operator Op(scalar); \ 39 #define EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATORS(Derived) \ 40 EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(Derived, =) \ 41 EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(Derived, +=) \ 42 EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(Derived, -=) \ 43 EIGEN_SPARSE_INHERIT_SCALAR_ASSIGNMENT_OPERATOR(Derived, *=) \ 44 EIGEN_SPARSE_INHERIT_SCALAR_ASSIGNMENT_OPERATOR(Derived, /=) 46 #define _EIGEN_SPARSE_PUBLIC_INTERFACE(Derived, BaseClass) \ 47 typedef BaseClass Base; \ 48 typedef typename Eigen::internal::traits<Derived >::Scalar Scalar; \ 49 typedef typename Eigen::NumTraits<Scalar>::Real RealScalar; \ 50 typedef typename Eigen::internal::nested<Derived >::type Nested; \ 51 typedef typename Eigen::internal::traits<Derived >::StorageKind StorageKind; \ 52 typedef typename Eigen::internal::traits<Derived >::Index Index; \ 53 enum { RowsAtCompileTime = Eigen::internal::traits<Derived >::RowsAtCompileTime, \ 54 ColsAtCompileTime = Eigen::internal::traits<Derived >::ColsAtCompileTime, \ 55 Flags = Eigen::internal::traits<Derived >::Flags, \ 56 CoeffReadCost = Eigen::internal::traits<Derived >::CoeffReadCost, \ 57 SizeAtCompileTime = Base::SizeAtCompileTime, \ 58 IsVectorAtCompileTime = Base::IsVectorAtCompileTime }; \ 59 using Base::derived; \ 60 using Base::const_cast_derived; 62 #define EIGEN_SPARSE_PUBLIC_INTERFACE(Derived) \ 63 _EIGEN_SPARSE_PUBLIC_INTERFACE(Derived, Eigen::SparseMatrixBase<Derived >) 65 const int CoherentAccessPattern = 0x1;
66 const int InnerRandomAccessPattern = 0x2 | CoherentAccessPattern;
67 const int OuterRandomAccessPattern = 0x4 | CoherentAccessPattern;
68 const int RandomAccessPattern = 0x8 | OuterRandomAccessPattern | InnerRandomAccessPattern;
70 template<
typename _Scalar,
int _Flags = 0,
typename _Index =
int>
class SparseMatrix;
72 template<
typename _Scalar,
int _Flags = 0,
typename _Index =
int>
class SparseVector;
73 template<
typename _Scalar,
int _Flags = 0,
typename _Index =
int>
class MappedSparseMatrix;
78 template<
typename MatrixType>
class SparseView;
86 template<
typename Lhs,
typename Rhs,
88 template<
typename Lhs,
typename Rhs,
96 template<
typename T>
struct eval<
T,Sparse>
97 :
public sparse_eval<T, traits<T>::RowsAtCompileTime,traits<T>::ColsAtCompileTime>
114 template<
typename T,
int Rows,
int Cols>
struct sparse_eval {
147 template<typename Scalar, typename Index=typename SparseMatrix<Scalar>::Index >
151 Triplet() : m_row(0), m_col(0), m_value(0) {}
153 Triplet(
const Index& i,
const Index& j,
const Scalar& v =
Scalar(0))
154 : m_row(i), m_col(j), m_value(v)
158 const Index&
row()
const {
return m_row; }
161 const Index&
col()
const {
return m_col; }
164 const Scalar&
value()
const {
return m_value; }
172 #endif // EIGEN_SPARSEUTIL_H Definition: SparseProduct.h:80
const Scalar & value() const
Definition: SparseUtil.h:164
A versatible sparse matrix representation.
Definition: SparseMatrix.h:85
Definition: SparseSelfAdjointView.h:465
Definition: SparseUtil.h:94
Definition: XprHelper.h:170
iterative scaling algorithm to equilibrate rows and column norms in matrices
Definition: TestIMU_Common.h:87
Pseudo expression to manipulate a triangular sparse matrix as a selfadjoint matrix.
Definition: SparseSelfAdjointView.h:49
const unsigned int RowMajorBit
for a matrix, this means that the storage order is row-major.
Definition: Constants.h:53
Definition: SparseTriangularView.h:25
Storage order is column major (see TopicStorageOrders).
Definition: Constants.h:264
Definition: SparseDenseProduct.h:73
a sparse vector class
Definition: SparseUtil.h:72
Definition: SparseDenseProduct.h:28
Definition: ForwardDeclarations.h:116
A sparse matrix class designed for matrix assembly purpose.
Definition: SparseUtil.h:71
const Index & col() const
Definition: SparseUtil.h:161
Definition: SparseDenseProduct.h:258
Definition: BandTriangularSolver.h:13
Definition: SparseDenseProduct.h:288
Storage order is row major (see TopicStorageOrders).
Definition: Constants.h:266
Definition: SparseDiagonalProduct.h:59
Definition: SparseProduct.h:16
Definition: SparseDenseProduct.h:15
The matrix class, also used for vectors and row-vectors.
Definition: Matrix.h:127
Sparse matrix.
Definition: MappedSparseMatrix.h:31
Definition: ForwardDeclarations.h:17
Definition: XprHelper.h:203
double Scalar
Common scalar type.
Definition: FlexibleKalmanBase.h:48
const Index & row() const
Definition: SparseUtil.h:158