10#ifndef EIGEN_SPARSEVECTOR_H
11#define EIGEN_SPARSEVECTOR_H
29template<
typename _Scalar,
int _Options,
typename _StorageIndex>
39 RowsAtCompileTime = IsColVector ?
Dynamic : 1,
40 ColsAtCompileTime = IsColVector ? 1 :
Dynamic,
41 MaxRowsAtCompileTime = RowsAtCompileTime,
42 MaxColsAtCompileTime = ColsAtCompileTime,
55template<
typename Dest,
typename Src,
57 : Src::InnerSizeAtCompileTime==1 ?
SVA_Outer
63template<
typename _Scalar,
int _Options,
typename _StorageIndex>
68 using Base::convert_index;
105 return coeff(IsColVector ?
row :
col);
116 return coeffRef(IsColVector ?
row :
col);
152 return insertBack(inner);
157 return m_data.value(m_data.size()-1);
164 return insertBackUnordered(inner);
169 return m_data.value(m_data.size()-1);
189 m_data.resize(
p+2,1);
191 while ( (
p >= startId) && (m_data.index(
p) >
i) )
193 m_data.index(
p+1) = m_data.index(
p);
194 m_data.value(
p+1) = m_data.value(
p);
197 m_data.index(
p+1) = convert_index(
i);
198 m_data.value(
p+1) = 0;
199 return m_data.value(
p+1);
204 inline void reserve(
Index reserveSize) { m_data.reserve(reserveSize); }
212 m_data.prune(reference,epsilon);
248 if (newSize < m_size)
251 while (
i<m_data.size() && m_data.index(
i)<newSize) ++
i;
265 template<
typename OtherDerived>
269 #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
272 check_template_parameters();
277 :
Base(other), m_size(0)
279 check_template_parameters();
289 std::swap(m_size, other.
m_size);
290 m_data.swap(other.
m_data);
293 template<
int OtherOptions>
298 m_data.swap(other.
m_data);
315 template<
typename OtherDerived>
324 #ifndef EIGEN_PARSED_BY_DOXYGEN
325 template<
typename Lhs,
typename Rhs>
328 return Base::operator=(
product);
335 s <<
"(" <<
m.m_data.value(
i) <<
"," <<
m.m_data.index(
i) <<
") ";
352 m_data.reserve(reserve);
359 return fill(IsColVector ? r :
c);
366 return m_data.value(m_data.size()-1);
373 return fillrand(IsColVector ? r :
c);
391# ifdef EIGEN_SPARSEVECTOR_PLUGIN
392# include EIGEN_SPARSEVECTOR_PLUGIN
409template<
typename _Scalar,
int _Options,
typename _Index>
420 Flags = SparseVectorType::Flags
431 return m_matrix->nonZeros();
440template<
typename Dest,
typename Src>
446 for(
typename SrcEvaluatorType::InnerIterator
it(
srcEval, 0);
it; ++
it)
447 dst.insert(
it.index()) =
it.value();
451template<
typename Dest,
typename Src>
459 typename SrcEvaluatorType::InnerIterator
it(
srcEval,
i);
461 dst.insert(
i) =
it.value();
466template<
typename Dest,
typename Src>
Matrix3f m
Definition AngleAxis_mimic_euler.cpp:1
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define EIGEN_DEPRECATED
Definition Macros.h:1058
#define eigen_internal_assert(x)
Definition Macros.h:1043
#define EIGEN_UNUSED_VARIABLE(var)
Definition Macros.h:1076
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition Macros.h:1049
#define eigen_assert(x)
Definition Macros.h:1037
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
#define EIGEN_SPARSE_PUBLIC_INTERFACE(Derived)
Definition SparseUtil.h:43
#define EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(Derived, Op)
Definition SparseUtil.h:21
#define EIGEN_INTERNAL_CHECK_COST_VALUE(C)
Definition StaticAssert.h:218
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
Definition StaticAssert.h:127
MatrixXf mat
Definition Tutorial_AdvancedInitialization_CommaTemporary.cpp:1
float * p
Definition Tutorial_Map_using.cpp:9
int rows
Definition Tutorial_commainit_02.cpp:1
int cols
Definition Tutorial_commainit_02.cpp:1
ostream & operator<<(ostream &s, const size_triple_t &t)
Definition analyze-blocking-sizes.cpp:61
Scalar Scalar * c
Definition benchVecAdd.cpp:17
Scalar Scalar int size
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
Definition SparseCompressedBase.h:159
Definition SparseCompressedBase.h:245
Common base class for sparse [compressed]-{row|column}-storage format.
Definition SparseCompressedBase.h:38
Base class of any sparse matrices or sparse expressions.
Definition SparseMatrixBase.h:28
internal::traits< Derived >::StorageIndex StorageIndex
Definition SparseMatrixBase.h:43
const Derived & derived() const
Definition SparseMatrixBase.h:143
Index size() const
Definition SparseMatrixBase.h:181
bool isRValue() const
Definition SparseMatrixBase.h:194
internal::traits< Derived >::Scalar Scalar
Definition SparseMatrixBase.h:31
Derived & const_cast_derived() const
Definition SparseMatrixBase.h:145
NumTraits< Scalar >::Real RealScalar
Definition SparseMatrixBase.h:128
A versatible sparse matrix representation.
Definition SparseMatrix.h:98
Index outerSize() const
Definition SparseMatrix.h:145
Storage m_data
Definition SparseMatrix.h:133
Index m_innerSize
Definition SparseMatrix.h:130
Definition SparseUtil.h:61
a sparse vector class
Definition SparseVector.h:66
SparseVector(Index size)
Definition SparseVector.h:261
Base::ReverseInnerIterator ReverseInnerIterator
Definition SparseVector.h:135
EIGEN_DEPRECATED void startFill(Index reserve)
Definition SparseVector.h:349
void resize(Index newSize)
Definition SparseVector.h:233
EIGEN_DEPRECATED Scalar & fill(Index r, Index c)
Definition SparseVector.h:356
EIGEN_DEPRECATED void endFill()
Definition SparseVector.h:383
EIGEN_DEPRECATED Scalar & fillrand(Index r, Index c)
Definition SparseVector.h:370
void startVec(Index outer)
Definition SparseVector.h:142
void resize(Index rows, Index cols)
Definition SparseVector.h:223
Scalar & coeffRef(Index row, Index col)
Definition SparseVector.h:113
Scalar & insertBackByOuterInnerUnordered(Index outer, Index inner)
Definition SparseVector.h:160
EIGEN_DEPRECATED Scalar & fill(Index i)
Definition SparseVector.h:363
StorageIndex * innerNonZeroPtr()
Definition SparseVector.h:95
Scalar coeff(Index i) const
Definition SparseVector.h:107
void swap(SparseMatrix< Scalar, OtherOptions, StorageIndex > &other)
Definition SparseVector.h:294
EIGEN_DEPRECATED const Storage & _data() const
Definition SparseVector.h:389
EIGEN_STRONG_INLINE Index outerSize() const
Definition SparseVector.h:84
void reserve(Index reserveSize)
Definition SparseVector.h:204
Scalar & coeffRef(Index i)
Definition SparseVector.h:125
Scalar & insert(Index i)
Definition SparseVector.h:182
SparseVector & operator=(const SparseVector &other)
Definition SparseVector.h:301
SparseVector & operator=(const SparseSparseProduct< Lhs, Rhs > &product)
Definition SparseVector.h:326
EIGEN_STRONG_INLINE const StorageIndex * innerIndexPtr() const
Definition SparseVector.h:89
EIGEN_STRONG_INLINE Index cols() const
Definition SparseVector.h:82
Scalar & insertBackByOuterInner(Index outer, Index inner)
Definition SparseVector.h:148
SparseVector & operator=(const SparseMatrixBase< OtherDerived > &other)
Definition SparseVector.h:316
void finalize()
Definition SparseVector.h:207
Base::InnerIterator InnerIterator
Definition SparseVector.h:134
SparseVector(const SparseMatrixBase< OtherDerived > &other)
Definition SparseVector.h:266
EIGEN_STRONG_INLINE Index innerSize() const
Definition SparseVector.h:83
void swap(SparseVector &other)
Definition SparseVector.h:287
Storage m_data
Definition SparseVector.h:403
Scalar coeff(Index row, Index col) const
Definition SparseVector.h:102
SparseVector(Index rows, Index cols)
Definition SparseVector.h:263
void conservativeResize(Index newSize)
Definition SparseVector.h:246
void resizeNonZeros(Index size)
Definition SparseVector.h:257
SparseVector()
Definition SparseVector.h:259
const Storage & data() const
Definition SparseVector.h:100
void setZero()
Definition SparseVector.h:137
static void check_template_parameters()
Definition SparseVector.h:397
const StorageIndex * outerIndexPtr() const
Definition SparseVector.h:92
Scalar & insertBack(Index i)
Definition SparseVector.h:154
Storage & data()
Definition SparseVector.h:98
EIGEN_STRONG_INLINE Index rows() const
Definition SparseVector.h:81
StorageIndex * outerIndexPtr()
Definition SparseVector.h:93
EIGEN_STRONG_INLINE Scalar * valuePtr()
Definition SparseVector.h:87
~SparseVector()
Definition SparseVector.h:341
Scalar & insertBackUnordered(Index i)
Definition SparseVector.h:166
EIGEN_DEPRECATED Storage & _data()
Definition SparseVector.h:387
EIGEN_STRONG_INLINE StorageIndex * innerIndexPtr()
Definition SparseVector.h:90
Index nonZeros() const
Definition SparseVector.h:140
const StorageIndex * innerNonZeroPtr() const
Definition SparseVector.h:94
void prune(const Scalar &reference, const RealScalar &epsilon=NumTraits< RealScalar >::dummy_precision())
Definition SparseVector.h:210
EIGEN_STRONG_INLINE const Scalar * valuePtr() const
Definition SparseVector.h:86
SparseVector(const SparseVector &other)
Definition SparseVector.h:276
EIGEN_DEPRECATED Scalar & fillrand(Index i)
Definition SparseVector.h:377
Index m_size
Definition SparseVector.h:404
Scalar & insert(Index row, Index col)
Definition SparseVector.h:172
@ ColMajor
Definition Constants.h:319
@ RowMajor
Definition Constants.h:321
const unsigned int LvalueBit
Definition Constants.h:144
const unsigned int RowMajorBit
Definition Constants.h:66
const unsigned int CompressedAccessBit
Definition Constants.h:191
RealScalar s
Definition level1_cplx_impl.h:126
int EIGEN_BLAS_FUNC() swap(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy)
Definition level1_impl.h:130
@ SVA_Inner
Definition SparseVector.h:51
@ SVA_Outer
Definition SparseVector.h:52
@ SVA_RuntimeSwitch
Definition SparseVector.h:50
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
const unsigned int NestByRefBit
Definition Constants.h:169
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
const int InnerRandomAccessPattern
Definition SparseUtil.h:48
const int Dynamic
Definition Constants.h:22
Definition BandTriangularSolver.h:13
void product(const MatrixType &m)
Definition product.h:20
Definition Constants.h:522
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition Constants.h:510
const SparseVectorType * m_matrix
Definition SparseVector.h:437
evaluator_base< SparseVectorType > Base
Definition SparseVector.h:414
evaluator(const SparseVectorType &mat)
Definition SparseVector.h:425
SparseVectorType::InnerIterator InnerIterator
Definition SparseVector.h:415
SparseVector< _Scalar, _Options, _Index > SparseVectorType
Definition SparseVector.h:413
Index nonZerosEstimate() const
Definition SparseVector.h:430
SparseVectorType::ReverseInnerIterator ReverseInnerIterator
Definition SparseVector.h:416
evaluator()
Definition SparseVector.h:423
Definition CoreEvaluators.h:111
Definition CoreEvaluators.h:91
static void run(Dest &dst, const Src &src)
Definition SparseVector.h:442
static void run(Dest &dst, const Src &src)
Definition SparseVector.h:453
static void run(Dest &dst, const Src &src)
Definition SparseVector.h:468
Definition SparseVector.h:59
Sparse StorageKind
Definition SparseVector.h:34
MatrixXpr XprKind
Definition SparseVector.h:35
_Scalar Scalar
Definition SparseVector.h:32
_StorageIndex StorageIndex
Definition SparseVector.h:33
Definition ForwardDeclarations.h:17
#define EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
Definition sparse_product.cpp:23