10 #ifndef EIGEN_SPARSEMATRIXBASE_H 11 #define EIGEN_SPARSEMATRIXBASE_H 26 template<
typename Derived>
class SparseMatrixBase
50 template<
typename OtherDerived>
96 #ifndef EIGEN_PARSED_BY_DOXYGEN
112 #ifndef EIGEN_PARSED_BY_DOXYGEN 134 inline const Derived&
derived()
const {
return *
static_cast<const Derived*
>(
this); }
135 inline Derived&
derived() {
return *
static_cast<Derived*
>(
this); }
141 #endif // not EIGEN_PARSED_BY_DOXYGEN 143 #define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::SparseMatrixBase 144 #ifdef EIGEN_PARSED_BY_DOXYGEN 145 #define EIGEN_DOC_UNARY_ADDONS(METHOD,OP) 146 #define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL 147 #define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(COND) 149 #define EIGEN_DOC_UNARY_ADDONS(X,Y) 150 #define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL 151 #define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(COND) 153 # include "../plugins/CommonCwiseUnaryOps.h" 154 # include "../plugins/CommonCwiseBinaryOps.h" 155 # include "../plugins/MatrixCwiseUnaryOps.h" 156 # include "../plugins/MatrixCwiseBinaryOps.h" 157 # include "../plugins/BlockMethods.h" 158 # ifdef EIGEN_SPARSEMATRIXBASE_PLUGIN 159 # include EIGEN_SPARSEMATRIXBASE_PLUGIN 161 #undef EIGEN_CURRENT_STORAGE_BASE_CLASS 162 #undef EIGEN_DOC_UNARY_ADDONS 163 #undef EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL 164 #undef EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF 191 template<
typename OtherDerived>
194 template<
typename OtherDerived>
197 inline Derived&
operator=(
const Derived& other);
201 template<
typename OtherDerived>
202 inline Derived&
assign(
const OtherDerived& other);
204 template<
typename OtherDerived>
211 typedef typename Derived::Nested Nested;
223 for ( ; col<it.index(); ++
col)
225 s << it.value() <<
" ";
241 for ( ; row<it.index(); ++
row)
242 s <<
"0" << std::endl;
243 s << it.value() << std::endl;
247 s <<
"0" << std::endl;
252 s << static_cast<const SparseMatrixBase<SparseMatrix<Scalar, RowMajorBit, StorageIndex> >&>(trans);
258 template<
typename OtherDerived>
260 template<
typename OtherDerived>
263 template<
typename OtherDerived>
265 template<
typename OtherDerived>
271 template<
typename OtherDerived>
struct CwiseProductDenseReturnType {
281 template<
typename OtherDerived>
286 template<
typename OtherDerived>
292 template<
typename OtherDerived>
friend 298 template<
typename OtherDerived>
303 template<
typename OtherDerived>
309 template<
typename OtherDerived>
friend 320 template<
typename OtherDerived>
329 template<
unsigned int UpLo>
inline 331 template<
unsigned int UpLo>
inline 337 RealScalar
norm()
const;
361 template<
typename OtherDerived>
365 template<
typename OtherDerived>
368 {
return toDense().isApprox(other,prec); }
388 return internal::convert_index<StorageIndex>(idx);
391 template<
typename Dest>
void evalTo(Dest &)
const;
396 #endif // EIGEN_SPARSEMATRIXBASE_H
Generic expression of a matrix where all coefficients are defined by a functor.
#define EIGEN_STRONG_INLINE
const ConstTransposeReturnType transpose() const
Block< const Derived, IsRowMajor?1:Dynamic, IsRowMajor?Dynamic:1, true > ConstInnerVectorReturnType
friend std::ostream & operator<<(std::ostream &s, const SparseMatrixBase &m)
Block< const Derived, Dynamic, Dynamic, true > ConstInnerVectorsReturnType
internal::traits< Derived >::StorageKind StorageKind
SparseMatrixBase StorageBaseType
Expression of the product of two arbitrary matrices or vectors.
A versatible sparse matrix representation.
RealScalar squaredNorm() const
internal::packet_traits< Scalar >::type PacketScalar
CwiseBinaryOp< internal::scalar_product_op< typename ScalarBinaryOpTraits< typename internal::traits< Derived >::Scalar, typename internal::traits< OtherDerived >::Scalar >::ReturnType >, const Derived, const OtherDerived > Type
Expression of the transpose of a matrix.
const unsigned int DirectAccessBit
CwiseNullaryOp< internal::scalar_constant_op< Scalar >, Matrix< Scalar, Dynamic, Dynamic > > ConstantReturnType
Derived & operator+=(const SparseMatrixBase< OtherDerived > &other)
Pseudo expression to manipulate a triangular sparse matrix as a selfadjoint matrix.
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
Derived & operator=(const EigenBase< OtherDerived > &other)
void evalTo(Dest &) const
EIGEN_DEVICE_FUNC RowXpr row(Index i)
Eigen::Index Index
The interface type of indices.
Block< Derived, IsRowMajor?1:Dynamic, IsRowMajor?Dynamic:1, true > InnerVectorReturnType
const unsigned int RowMajorBit
Transpose< Derived > TransposeReturnType
internal::conditional< NumTraits< Scalar >::IsComplex, CwiseUnaryOp< internal::scalar_conjugate_op< Scalar >, Eigen::Transpose< const Derived > >, Transpose< const Derived > >::type AdjointReturnType
static StorageIndex convert_index(const Index idx)
const SparseView< Derived > pruned(const Scalar &reference=Scalar(0), const RealScalar &epsilon=NumTraits< Scalar >::dummy_precision()) const
internal::traits< Derived >::StorageIndex StorageIndex
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Base class of any sparse matrices or sparse expressions.
EIGEN_STRONG_INLINE const CwiseProductDenseReturnType< OtherDerived >::Type cwiseProduct(const MatrixBase< OtherDerived > &other) const
TransposeReturnType transpose()
internal::traits< Derived >::Scalar Scalar
SparseSelfAdjointView< Derived, UpLo > Type
RealScalar blueNorm() const
Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime > DenseMatrixType
Scalar dot(const MatrixBase< OtherDerived > &other) const
InnerVectorReturnType innerVector(Index outer)
const TriangularView< const Derived, Mode > triangularView() const
Derived & assign(const OtherDerived &other)
EIGEN_DEVICE_FUNC ColXpr col(Index i)
const AdjointReturnType adjoint() const
bool isApprox(const MatrixBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
internal::add_const< Transpose< const Derived > >::type ConstTransposeReturnType
const Product< Derived, OtherDerived > operator*(const DiagonalBase< OtherDerived > &other) const
ConstSelfAdjointViewReturnType< UpLo >::Type selfadjointView() const
InnerVectorsReturnType innerVectors(Index outerStart, Index outerSize)
Expression of a fixed-size or dynamic-size block.
EigenBase< Derived > Base
Derived & operator*=(const Scalar &other)
Derived & const_cast_derived() const
Derived & operator/=(const Scalar &other)
Expression of a triangular part in a matrix.
Derived & operator-=(const SparseMatrixBase< OtherDerived > &other)
internal::conditional< _HasDirectAccess, const Scalar &, Scalar >::type CoeffReturnType
void assignGeneric(const OtherDerived &other)
SparseSymmetricPermutationProduct< Derived, Upper|Lower > twistedBy(const PermutationMatrix< Dynamic, Dynamic, StorageIndex > &perm) const
Matrix< Scalar, EIGEN_SIZE_MAX(RowsAtCompileTime, ColsAtCompileTime), EIGEN_SIZE_MAX(RowsAtCompileTime, ColsAtCompileTime)> SquareMatrixType
const Derived & derived() const
Matrix< StorageIndex, Dynamic, 1 > IndexVector
friend const Product< OtherDerived, Derived > operator*(const MatrixBase< OtherDerived > &lhs, const SparseMatrixBase &rhs)
Determines whether the given binary operation of two numeric types is allowed and what the scalar ret...
const internal::eval< Derived >::type eval() const
DenseMatrixType toDense() const
Block< Derived, Dynamic, Dynamic, true > InnerVectorsReturnType
const SparseSelfAdjointView< const Derived, UpLo > Type
Generic expression where a coefficient-wise unary operator is applied to an expression.
NumTraits< Scalar >::Real RealScalar
Matrix< Scalar, Dynamic, 1 > ScalarVector
internal::add_const_on_value_type_if_arithmetic< typename internal::packet_traits< Scalar >::type >::type PacketReturnType
#define EIGEN_SIZE_MAX(a, b)
SparseMatrix< Scalar, Flags &RowMajorBit ? RowMajor :ColMajor, StorageIndex > PlainObject
Base class for all dense matrices, vectors, and expressions.
const Product< Derived, OtherDerived > operator*(const MatrixBase< OtherDerived > &other) const
friend const Product< OtherDerived, Derived > operator*(const DiagonalBase< OtherDerived > &lhs, const SparseMatrixBase &rhs)
EIGEN_DEVICE_FUNC const Derived & derived() const
bool isApprox(const SparseMatrixBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const