10 #ifndef EIGEN_SPARSEVECTOR_H
11 #define EIGEN_SPARSEVECTOR_H
32 template <
typename Scalar_,
int Options_,
typename StorageIndex_>
41 RowsAtCompileTime = IsColVector ?
Dynamic : 1,
42 ColsAtCompileTime = IsColVector ? 1 :
Dynamic,
43 MaxRowsAtCompileTime = RowsAtCompileTime,
44 MaxColsAtCompileTime = ColsAtCompileTime,
53 template <
typename Dest,
typename Src,
55 : Src::InnerSizeAtCompileTime == 1 ?
SVA_Outer
61 template <
typename Scalar_,
int Options_,
typename StorageIndex_>
144 return m_data.value(m_data.size() - 1);
154 return m_data.value(m_data.size() - 1);
172 m_data.resize(
p + 2, 1);
174 while ((
p >= startId) && (m_data.index(
p) >
i)) {
175 m_data.index(
p + 1) = m_data.index(
p);
176 m_data.value(
p + 1) = m_data.value(
p);
180 m_data.value(
p + 1) = 0;
181 return m_data.value(
p + 1);
186 inline void reserve(
Index reserveSize) { m_data.reserve(reserveSize); }
207 if (keep_predicate(m_data.value(
i))) {
208 m_data.value(
k) = std::move(m_data.value(
i));
209 m_data.index(
k) = m_data.index(
i);
249 while (
i < m_data.size() && m_data.index(
i) < newSize) ++
i;
263 template <
typename OtherDerived>
265 #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
279 m_data.swap(other.m_data);
283 template <
int OtherOptions>
287 m_data.swap(other.
m_data);
289 template <
int OtherOptions>
293 template <
int OtherOptions>
303 m_data = other.m_data;
308 template <
typename OtherDerived>
318 template <
typename OtherDerived>
320 *
this = other.
derived().markAsRValue();
328 template <
typename OtherDerived>
330 *
this = other.
derived().markAsRValue();
334 #ifndef EIGEN_PARSED_BY_DOXYGEN
335 template <
typename Lhs,
typename Rhs>
343 for (
Index i = 0;
i <
m.nonZeros(); ++
i)
s <<
"(" <<
m.m_data.value(
i) <<
"," <<
m.m_data.index(
i) <<
") ";
371 return m_data.value(m_data.size() - 1);
392 #ifdef EIGEN_SPARSEVECTOR_PLUGIN
393 #include EIGEN_SPARSEVECTOR_PLUGIN
406 template <
typename Scalar_,
int Options_,
typename Index_>
427 template <
typename Dest,
typename Src>
429 static void run(Dest& dst,
const Src& src) {
432 SrcEvaluatorType srcEval(src);
433 for (
typename SrcEvaluatorType::InnerIterator it(srcEval, 0); it; ++it) dst.insert(it.index()) = it.value();
437 template <
typename Dest,
typename Src>
439 static void run(Dest& dst,
const Src& src) {
442 SrcEvaluatorType srcEval(src);
443 for (
Index i = 0;
i < src.size(); ++
i) {
444 typename SrcEvaluatorType::InnerIterator it(srcEval,
i);
445 if (it) dst.insert(
i) = it.value();
450 template <
typename Dest,
typename Src>
452 static void run(Dest& dst,
const Src& src) {
453 if (src.outerSize() == 1)
464 template <
typename Scalar,
int Options,
typename StorageIndex>
482 const size_t header_bytes =
sizeof(Header);
483 Header header = {
value.innerSize(),
value.nonZeros()};
485 memcpy(dest, &header, header_bytes);
486 dest += header_bytes;
489 std::size_t data_bytes =
sizeof(
StorageIndex) * header.num_non_zeros;
490 memcpy(dest,
value.innerIndexPtr(), data_bytes);
494 data_bytes =
sizeof(
Scalar) * header.num_non_zeros;
495 memcpy(dest,
value.valuePtr(), data_bytes);
505 const size_t header_bytes =
sizeof(Header);
508 memcpy(&header, src, header_bytes);
512 value.resize(header.size);
513 value.resizeNonZeros(header.num_non_zeros);
516 std::size_t data_bytes =
sizeof(
StorageIndex) * header.num_non_zeros;
518 memcpy(
value.innerIndexPtr(), src, data_bytes);
522 data_bytes =
sizeof(
Scalar) * header.num_non_zeros;
524 memcpy(
value.valuePtr(), src, data_bytes);
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
#define EIGEN_DEPRECATED
Definition: Macros.h:931
#define EIGEN_USING_STD(FUNC)
Definition: Macros.h:1090
#define eigen_internal_assert(x)
Definition: Macros.h:916
#define EIGEN_PREDICT_FALSE(x)
Definition: Macros.h:1179
#define EIGEN_UNUSED_VARIABLE(var)
Definition: Macros.h:966
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_ONLY_USED_FOR_DEBUG(x)
Definition: Macros.h:922
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_SPARSE_PUBLIC_INTERFACE(Derived)
Definition: SparseUtil.h:39
#define EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(Derived, Op)
Definition: SparseUtil.h:24
#define EIGEN_INTERNAL_CHECK_COST_VALUE(C)
Definition: StaticAssert.h:101
float * p
Definition: Tutorial_Map_using.cpp:9
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
EIGEN_DEVICE_FUNC const uint8_t * deserialize(const uint8_t *src, const uint8_t *end, SparseMat &value) const
Definition: SparseVector.h:501
EIGEN_DEVICE_FUNC size_t size(const SparseMat &value) const
Definition: SparseVector.h:474
SparseVector< Scalar, Options, StorageIndex > SparseMat
Definition: SparseVector.h:467
EIGEN_DEVICE_FUNC uint8_t * serialize(uint8_t *dest, uint8_t *end, const SparseMat &value)
Definition: SparseVector.h:478
Definition: Serializer.h:27
Definition: SparseCompressedBase.h:207
Definition: SparseCompressedBase.h:292
Common base class for sparse [compressed]-{row|column}-storage format.
Definition: SparseCompressedBase.h:43
Derived & operator=(const Derived &other)
Definition: SparseAssign.h:43
Base class of any sparse matrices or sparse expressions.
Definition: SparseMatrixBase.h:30
internal::traits< SparseVector< Scalar_, Options_, StorageIndex_ > >::StorageIndex StorageIndex
Definition: SparseMatrixBase.h:44
Index size() const
Definition: SparseMatrixBase.h:187
bool isRValue() const
Definition: SparseMatrixBase.h:200
Derived & const_cast_derived() const
Definition: SparseMatrixBase.h:146
internal::traits< SparseVector< Scalar_, Options_, StorageIndex_ > >::Scalar Scalar
Definition: SparseMatrixBase.h:32
const Derived & derived() const
Definition: SparseMatrixBase.h:144
NumTraits< Scalar >::Real RealScalar
Definition: SparseMatrixBase.h:128
static StorageIndex convert_index(const Index idx)
Definition: SparseMatrixBase.h:391
A versatible sparse matrix representation.
Definition: SparseMatrix.h:121
Storage m_data
Definition: SparseMatrix.h:155
Index outerSize() const
Definition: SparseMatrix.h:166
Index m_innerSize
Definition: SparseMatrix.h:152
Definition: SparseUtil.h:59
a sparse vector class
Definition: SparseVector.h:62
void startVec(Index outer)
Definition: SparseVector.h:132
@ IsColVector
Definition: SparseVector.h:72
EIGEN_DEPRECATED Scalar & fillrand(Index r, Index c)
Definition: SparseVector.h:375
Scalar & insertBackByOuterInnerUnordered(Index outer, Index inner)
Definition: SparseVector.h:147
Scalar & coeffRef(Index row, Index col)
Definition: SparseVector.h:106
StorageIndex * innerNonZeroPtr()
Definition: SparseVector.h:90
void resizeNonZeros(Index size)
Definition: SparseVector.h:255
constexpr Storage & data()
Definition: SparseVector.h:93
SparseVector(SparseCompressedBase< OtherDerived > &&other)
Definition: SparseVector.h:319
Index m_size
Definition: SparseVector.h:401
void finalize()
Definition: SparseVector.h:188
EIGEN_DEPRECATED Scalar & fill(Index i)
Definition: SparseVector.h:369
Scalar & insert(Index row, Index col)
Definition: SparseVector.h:157
void conservativeResize(Index newSize)
Definition: SparseVector.h:246
EIGEN_STRONG_INLINE const Scalar * valuePtr() const
Definition: SparseVector.h:81
SparseVector(Index rows, Index cols)
Definition: SparseVector.h:261
Scalar & insertBackByOuterInner(Index outer, Index inner)
Definition: SparseVector.h:137
SparseVector(SparseVector &&other)
Definition: SparseVector.h:316
Base::ReverseInnerIterator ReverseInnerIterator
Definition: SparseVector.h:125
EIGEN_STRONG_INLINE StorageIndex * innerIndexPtr()
Definition: SparseVector.h:85
const StorageIndex * outerIndexPtr() const
Definition: SparseVector.h:87
friend EIGEN_DEVICE_FUNC void swap(SparseVector &a, SparseVector &b)
Definition: SparseVector.h:281
friend EIGEN_DEVICE_FUNC void swap(SparseVector &a, SparseMatrix< Scalar, OtherOptions, StorageIndex > &b)
Definition: SparseVector.h:290
Index prune(const Scalar &reference, const RealScalar &epsilon=NumTraits< RealScalar >::dummy_precision())
Definition: SparseVector.h:191
friend std::ostream & operator<<(std::ostream &s, const SparseVector &m)
Definition: SparseVector.h:342
@ Options
Definition: SparseVector.h:74
void resize(Index rows, Index cols)
Definition: SparseVector.h:225
SparseVector & operator=(SparseCompressedBase< OtherDerived > &&other)
Definition: SparseVector.h:329
SparseVector()
Definition: SparseVector.h:257
Scalar & coeffRef(Index i)
Definition: SparseVector.h:117
constexpr const Storage & data() const
Definition: SparseVector.h:95
~SparseVector()
Definition: SparseVector.h:350
friend EIGEN_DEVICE_FUNC void swap(SparseMatrix< Scalar, OtherOptions, StorageIndex > &a, SparseVector &b)
Definition: SparseVector.h:294
EIGEN_STRONG_INLINE Index innerSize() const
Definition: SparseVector.h:78
SparseVector & operator=(SparseVector &&other)
Definition: SparseVector.h:323
Scalar & insert(Index i)
Definition: SparseVector.h:166
EIGEN_STRONG_INLINE const StorageIndex * innerIndexPtr() const
Definition: SparseVector.h:84
const StorageIndex * innerNonZeroPtr() const
Definition: SparseVector.h:89
void swap(SparseVector &other)
Definition: SparseVector.h:277
void swap(SparseMatrix< Scalar, OtherOptions, StorageIndex > &other)
Definition: SparseVector.h:284
Scalar & insertBack(Index i)
Definition: SparseVector.h:142
EIGEN_STRONG_INLINE Index rows() const
Definition: SparseVector.h:76
Index prune(F &&keep_predicate)
Prunes the entries of the vector based on a predicate
Definition: SparseVector.h:203
Scalar coeff(Index row, Index col) const
Definition: SparseVector.h:97
EIGEN_STRONG_INLINE Scalar * valuePtr()
Definition: SparseVector.h:82
SparseVector & operator=(const SparseMatrixBase< OtherDerived > &other)
Definition: SparseVector.h:309
EIGEN_DEPRECATED void startFill(Index reserve)
Definition: SparseVector.h:357
EIGEN_DEPRECATED Scalar & fillrand(Index i)
Definition: SparseVector.h:381
EIGEN_STRONG_INLINE Index cols() const
Definition: SparseVector.h:77
void setZero()
Definition: SparseVector.h:127
EIGEN_STRONG_INLINE Index outerSize() const
Definition: SparseVector.h:79
void reserve(Index reserveSize)
Definition: SparseVector.h:186
Scalar & insertBackUnordered(Index i)
Definition: SparseVector.h:152
Index nonZeros() const
Definition: SparseVector.h:130
SparseVector(Index size)
Definition: SparseVector.h:259
SparseCompressedBase< SparseVector > Base
Definition: SparseVector.h:63
EIGEN_DEPRECATED Scalar & fill(Index r, Index c)
Definition: SparseVector.h:363
Base::InnerIterator InnerIterator
Definition: SparseVector.h:124
SparseVector(const SparseMatrixBase< OtherDerived > &other)
Definition: SparseVector.h:264
StorageIndex * outerIndexPtr()
Definition: SparseVector.h:88
SparseVector(const SparseVector &other)
Definition: SparseVector.h:271
SparseVector & operator=(const SparseVector &other)
Definition: SparseVector.h:298
EIGEN_DEPRECATED void endFill()
Definition: SparseVector.h:384
EIGEN_DEPRECATED const Storage & _data() const
Definition: SparseVector.h:390
void resize(Index newSize)
Definition: SparseVector.h:234
Scalar coeff(Index i) const
Definition: SparseVector.h:101
EIGEN_DEPRECATED Storage & _data()
Definition: SparseVector.h:388
EIGEN_STATIC_ASSERT((Options_ &(ColMajor|RowMajor))==Options, INVALID_MATRIX_TEMPLATE_PARAMETERS) Storage m_data
Scalar sum() const
Definition: SparseRedux.h:40
SparseVector & operator=(const SparseSparseProduct< Lhs, Rhs > &product)
Definition: SparseVector.h:336
static constexpr lastp1_t end
Definition: IndexedViewHelper.h:79
@ ColMajor
Definition: Constants.h:318
@ RowMajor
Definition: Constants.h:320
const unsigned int LvalueBit
Definition: Constants.h:148
const unsigned int RowMajorBit
Definition: Constants.h:70
const unsigned int CompressedAccessBit
Definition: Constants.h:195
RealScalar s
Definition: level1_cplx_impl.h:130
EIGEN_BLAS_FUNC() swap(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy)
Definition: level1_impl.h:117
const Scalar * a
Definition: level2_cplx_impl.h:32
int * m
Definition: level2_cplx_impl.h:294
if(UPLO(*uplo)==INVALID) info
Definition: level3_impl.h:428
char char char int int * k
Definition: level2_impl.h:374
Eigen::Matrix< Scalar, Dynamic, Dynamic, ColMajor > tmp
Definition: level3_impl.h:365
EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const Scalar &x, const OtherScalar &y, const typename NumTraits< Scalar >::Real &precision=NumTraits< Scalar >::dummy_precision())
Definition: MathFunctions.h:1916
@ SVA_Inner
Definition: SparseVector.h:51
@ SVA_Outer
Definition: SparseVector.h:51
@ SVA_RuntimeSwitch
Definition: SparseVector.h:51
std::uint8_t uint8_t
Definition: Meta.h:36
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
const unsigned int NestByRefBit
Definition: Constants.h:173
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
const int InnerRandomAccessPattern
Definition: SparseUtil.h:42
const int Dynamic
Definition: Constants.h:25
Extend namespace for flags.
Definition: fsi_chan_precond_driver.cc:56
int c
Definition: calibrate.py:100
val
Definition: calibrate.py:119
Definition: Eigen_Colamd.h:49
@ F
Definition: octree.h:74
double epsilon
Definition: osc_ring_sarah_asymptotics.h:43
void product(const MatrixType &m)
Definition: product.h:42
#define EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
Definition: sparse_permutations.cpp:22
Eigen::Index Index
The interface type of indices.
Definition: EigenBase.h:43
Definition: Constants.h:534
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:217
Definition: Constants.h:522
evaluator(const SparseVectorType &mat)
Definition: SparseVector.h:417
SparseVectorType::InnerIterator InnerIterator
Definition: SparseVector.h:410
evaluator()
Definition: SparseVector.h:415
const SparseVectorType * m_matrix
Definition: SparseVector.h:424
evaluator_base< SparseVectorType > Base
Definition: SparseVector.h:409
SparseVector< Scalar_, Options_, Index_ > SparseVectorType
Definition: SparseVector.h:408
Index nonZerosEstimate() const
Definition: SparseVector.h:419
SparseVectorType::ReverseInnerIterator ReverseInnerIterator
Definition: SparseVector.h:411
Definition: CoreEvaluators.h:118
Definition: CoreEvaluators.h:104
static void run(Dest &dst, const Src &src)
Definition: SparseVector.h:429
static void run(Dest &dst, const Src &src)
Definition: SparseVector.h:439
static void run(Dest &dst, const Src &src)
Definition: SparseVector.h:452
Definition: SparseVector.h:57
MatrixXpr XprKind
Definition: SparseVector.h:37
Scalar_ Scalar
Definition: SparseVector.h:34
Sparse StorageKind
Definition: SparseVector.h:36
StorageIndex_ StorageIndex
Definition: SparseVector.h:35
Definition: ForwardDeclarations.h:21
void run(const string &dir_name, LinearSolver *linear_solver_pt, const unsigned nel_1d, bool mess_up_order)
Definition: two_d_poisson_compare_solvers.cc:317