10 #ifndef EIGEN_SPARSEMATRIX_H
11 #define EIGEN_SPARSEMATRIX_H
46 template<
typename _Scalar,
int _Options,
typename _StorageIndex>
63 template<
typename _Scalar,
int _Options,
typename _StorageIndex,
int DiagIndex>
77 ColsAtCompileTime = 1,
79 MaxColsAtCompileTime = 1,
84 template<
typename _Scalar,
int _Options,
typename _StorageIndex,
int DiagIndex>
86 :
public traits<Diagonal<SparseMatrix<_Scalar, _Options, _StorageIndex>, DiagIndex> >
95 template<
typename _Scalar,
int _Options,
typename _StorageIndex>
102 template<
typename,
typename,
typename,
typename,
typename>
108 using Base::operator+=;
109 using Base::operator-=;
217 eigen_assert(
end>=start &&
"you probably called coeffRef on a non finalized matrix");
270 #ifdef EIGEN_PARSED_BY_DOXYGEN
283 template<
class SizesType>
284 inline void reserve(
const SizesType& reserveSizes);
286 template<
class SizesType>
287 inline void reserve(
const SizesType& reserveSizes,
const typename SizesType::value_type& enableif =
291 SizesType::value_type())
298 template<
class SizesType>
303 Index totalReserveSize = 0;
314 newOuterIndex[j] = count;
316 totalReserveSize += reserveSizes[j];
323 for(
Index i=innerNNZ-1; i>=0; --i)
345 newOuterIndex[j] = count;
347 StorageIndex toReserve = std::max<StorageIndex>(reserveSizes[j], alreadyReserved);
359 for(
Index i=innerNNZ-1; i>=0; --i)
368 std::free(newOuterIndex);
445 template<
typename InputIterators>
448 template<
typename InputIterators,
typename DupFunctor>
453 template<
typename DupFunctor>
489 oldStart = nextOldStart;
522 template<
typename KeepFunc>
523 void prune(
const KeepFunc& keep = KeepFunc())
534 for(
Index i=previousStart; i<
end; ++i)
559 if (this->
rows() == rows && this->
cols() == cols)
return;
579 else if (innerChange < 0)
597 while (n > 0 &&
m_data.
index(start+n-1) >= newInnerSize) --n;
604 if (outerChange == 0)
680 template<
typename OtherDerived>
685 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
692 #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
693 EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
700 template<
typename OtherDerived,
unsigned int UpLo>
717 template<
typename OtherDerived>
727 template<
typename OtherDerived>
765 else if(
this!=&other)
767 #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
768 EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
784 #ifndef EIGEN_PARSED_BY_DOXYGEN
785 template<
typename OtherDerived>
789 template<
typename Lhs,
typename Rhs>
793 template<
typename OtherDerived>
799 s <<
"Nonzero entries:\n";
802 for (Index i=0; i<m.nonZeros(); ++i)
803 s <<
"(" << m.m_data.value(i) <<
"," << m.m_data.index(i) <<
") ";
807 for (Index i=0; i<m.outerSize(); ++i)
809 Index p = m.m_outerIndex[i];
810 Index pe = m.m_outerIndex[i]+m.m_innerNonZeros[i];
813 s <<
"(" << m.m_data.value(k) <<
"," << m.m_data.index(k) <<
") ";
815 for (; k<m.m_outerIndex[i+1]; ++k) {
822 s <<
"Outer pointers:\n";
823 for (
Index i=0; i<m.outerSize(); ++i) {
824 s << m.m_outerIndex[i] <<
" ";
826 s <<
" $" << std::endl;
827 if(!m.isCompressed())
829 s <<
"Inner non zeros:\n";
830 for (Index i=0; i<m.outerSize(); ++i) {
831 s << m.m_innerNonZeros[i] <<
" ";
833 s <<
" $" << std::endl;
837 s << static_cast<const SparseMatrixBase<SparseMatrix>&>(m);
844 std::free(m_outerIndex);
845 std::free(m_innerNonZeros);
851 # ifdef EIGEN_SPARSEMATRIX_PLUGIN
852 # include EIGEN_SPARSEMATRIX_PLUGIN
857 template<
typename Other>
860 resize(other.rows(), other.cols());
863 std::free(m_innerNonZeros);
900 eigen_assert(m_innerNonZeros[outer]<=(m_outerIndex[outer+1] - m_outerIndex[outer]));
902 Index p = m_outerIndex[outer] + m_innerNonZeros[outer]++;
926 template<
typename DiagXpr,
typename Func>
929 Index n = diagXpr.size();
934 if((this->rows()!=n) || (this->cols()!=n))
938 if(m_data.
size()==0 || overwrite)
941 this->makeCompressed();
942 this->resizeNonZeros(n);
951 bool isComp = isCompressed();
953 std::vector<IndexPosPair> newEntries;
956 for(
Index i = 0; i<n; ++i)
963 assignFunc.assignCoeff(m_data.
value(p), diaEval.coeff(i));
965 else if((!isComp) && m_innerNonZeros[i] < (m_outerIndex[i+1]-m_outerIndex[i]))
968 m_data.
moveChunk(p, p+1, m_outerIndex[i]+m_innerNonZeros[i]-p);
969 m_innerNonZeros[i]++;
972 assignFunc.assignCoeff(m_data.
value(p), diaEval.coeff(i));
987 for(
Index k=0; k<n_entries;++k)
989 Index i = newEntries[k].i;
990 Index p = newEntries[k].p;
993 for(
Index j=prev_i;j<i;++j)
994 m_outerIndex[j+1] += k;
996 m_innerNonZeros[i]++;
1001 assignFunc.assignCoeff(newData.
value(p+k), diaEval.coeff(i));
1006 for(
Index j=prev_i+1;j<=m_outerSize;++j)
1007 m_outerIndex[j] += n_entries;
1009 m_data.
swap(newData);
1034 template<
typename InputIterator,
typename SparseMatrixType,
typename DupFunctor>
1035 void set_from_triplets(
const InputIterator& begin,
const InputIterator&
end, SparseMatrixType& mat, DupFunctor dup_func)
1037 enum { IsRowMajor = SparseMatrixType::IsRowMajor };
1038 typedef typename SparseMatrixType::Scalar Scalar;
1039 typedef typename SparseMatrixType::StorageIndex StorageIndex;
1045 typename SparseMatrixType::IndexVector wi(trMat.
outerSize());
1047 for(InputIterator it(begin); it!=
end; ++it)
1049 eigen_assert(it->row()>=0 && it->row()<mat.rows() && it->col()>=0 && it->col()<mat.cols());
1050 wi(IsRowMajor ? it->col() : it->row())++;
1055 for(InputIterator it(begin); it!=
end; ++it)
1106 template<
typename Scalar,
int _Options,
typename _StorageIndex>
1107 template<
typename InputIterators>
1122 template<
typename Scalar,
int _Options,
typename _StorageIndex>
1123 template<
typename InputIterators,
typename DupFunctor>
1126 internal::set_from_triplets<InputIterators, SparseMatrix<Scalar,_Options,_StorageIndex>, DupFunctor>(begin,
end, *
this, dup_func);
1130 template<
typename Scalar,
int _Options,
typename _StorageIndex>
1131 template<
typename DupFunctor>
1140 for(
Index j=0; j<outerSize(); ++j)
1143 Index oldEnd = m_outerIndex[j]+m_innerNonZeros[j];
1144 for(
Index k=m_outerIndex[j]; k<oldEnd; ++k)
1160 m_outerIndex[j] = start;
1162 m_outerIndex[m_outerSize] = count;
1165 std::free(m_innerNonZeros);
1166 m_innerNonZeros = 0;
1167 m_data.
resize(m_outerIndex[m_outerSize]);
1170 template<
typename Scalar,
int _Options,
typename _StorageIndex>
1171 template<
typename OtherDerived>
1175 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
1177 #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
1178 EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
1182 if (needToTranspose)
1184 #ifdef EIGEN_SPARSE_TRANSPOSED_COPY_PLUGIN
1185 EIGEN_SPARSE_TRANSPOSED_COPY_PLUGIN
1194 OtherCopy otherCopy(other.
derived());
1195 OtherCopyEval otherCopyEval(otherCopy);
1202 for (
Index j=0; j<otherCopy.outerSize(); ++j)
1203 for (
typename OtherCopyEval::InnerIterator it(otherCopyEval, j); it; ++it)
1213 positions[j] = count;
1222 for (
typename OtherCopyEval::InnerIterator it(otherCopyEval, j); it; ++it)
1224 Index pos = positions[it.index()]++;
1236 initAssignment(other.
derived());
1239 return Base::operator=(other.
derived());
1243 template<
typename _Scalar,
int _Options,
typename _StorageIndex>
1257 m_data.
reserve(2*m_innerSize);
1263 memset(m_innerNonZeros, 0, (m_outerSize)*
sizeof(
StorageIndex));
1268 for(
Index j=1; j<=m_outerSize; ++j)
1269 m_outerIndex[j] =
end;
1276 for(
Index j=0; j<m_outerSize; ++j)
1277 m_innerNonZeros[j] = m_outerIndex[j+1]-m_outerIndex[j];
1286 if(m_outerIndex[outer]==data_end)
1294 while(j>=0 && m_innerNonZeros[j]==0)
1295 m_outerIndex[j--] = p;
1298 ++m_innerNonZeros[outer];
1309 for(
Index k=outer+1; k<=m_outerSize; ++k)
1310 if(m_outerIndex[k]==data_end)
1311 m_outerIndex[k] = new_end;
1313 return m_data.
value(p);
1318 if(m_outerIndex[outer+1]==data_end && m_outerIndex[outer]+m_innerNonZeros[outer]==m_data.
size())
1323 ++m_innerNonZeros[outer];
1334 for(
Index k=outer+1; k<=m_outerSize; ++k)
1335 if(m_outerIndex[k]==data_end)
1336 m_outerIndex[k] = new_end;
1340 Index startId = m_outerIndex[outer];
1341 Index p = m_outerIndex[outer]+m_innerNonZeros[outer]-1;
1342 while ( (p > startId) && (m_data.
index(p-1) > inner) )
1360 return insertUncompressed(
row,
col);
1363 template<
typename _Scalar,
int _Options,
typename _StorageIndex>
1371 Index room = m_outerIndex[outer+1] - m_outerIndex[outer];
1379 Index startId = m_outerIndex[outer];
1380 Index p = startId + m_innerNonZeros[outer];
1381 while ( (p > startId) && (m_data.
index(p-1) > inner) )
1387 eigen_assert((p<=startId || m_data.
index(p-1)!=inner) &&
"you cannot insert an element that already exists, you must call coeffRef to this end");
1389 m_innerNonZeros[outer]++;
1391 m_data.
index(p) = inner;
1395 template<
typename _Scalar,
int _Options,
typename _StorageIndex>
1403 Index previousOuter = outer;
1404 if (m_outerIndex[outer+1]==0)
1407 while (previousOuter>=0 && m_outerIndex[previousOuter]==0)
1412 m_outerIndex[outer+1] = m_outerIndex[outer];
1418 bool isLastVec = (!(previousOuter==-1 && m_data.
size()!=0))
1419 && (std::size_t(m_outerIndex[outer+1]) == m_data.
size());
1421 std::size_t startId = m_outerIndex[outer];
1423 std::size_t p = m_outerIndex[outer+1];
1424 ++m_outerIndex[outer+1];
1426 double reallocRatio = 1;
1430 if (m_data.
size()==0)
1439 double nnzEstimate = double(m_outerIndex[outer])*double(m_outerSize)/double(outer+1);
1440 reallocRatio = (nnzEstimate-double(m_data.
size()))/
double(m_data.
size());
1451 if (previousOuter==-1)
1455 for (
Index k=0; k<=(outer+1); ++k)
1456 m_outerIndex[k] = 0;
1458 while(m_outerIndex[k]==0)
1459 m_outerIndex[k++] = 1;
1460 while (k<=m_outerSize && m_outerIndex[k]!=0)
1461 m_outerIndex[k++]++;
1464 k = m_outerIndex[k]-1;
1477 while (j<=m_outerSize && m_outerIndex[j]!=0)
1478 m_outerIndex[j++]++;
1481 Index k = m_outerIndex[j]-1;
1491 while ( (p > startId) && (m_data.
index(p-1) > inner) )
1498 m_data.
index(p) = inner;
1504 template<
typename _Scalar,
int _Options,
typename _StorageIndex>
1506 :
evaluator<SparseCompressedBase<SparseMatrix<_Scalar,_Options,_StorageIndex> > >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ColXpr col(Index i)
This is the const version of col().
Definition: BlockMethods.h:1097
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE RowXpr row(Index i)
This is the const version of row(). */.
Definition: BlockMethods.h:1118
internal::enable_if< internal::valid_indexed_view_overload< RowIndices, ColIndices >::value &&internal::traits< typename EIGEN_INDEXED_VIEW_METHOD_TYPE< RowIndices, ColIndices >::type >::ReturnAsIndexedView, typename EIGEN_INDEXED_VIEW_METHOD_TYPE< RowIndices, ColIndices >::type >::type operator()(const RowIndices &rowIndices, const ColIndices &colIndices) EIGEN_INDEXED_VIEW_METHOD_CONST
Definition: IndexedViewMethods.h:73
#define EIGEN_COMP_MSVC
Definition: Macros.h:114
#define eigen_internal_assert(x)
Definition: Macros.h:1043
#define EIGEN_UNUSED_VARIABLE(var)
Definition: Macros.h:1076
#define EIGEN_DONT_INLINE
Definition: Macros.h:940
#define eigen_assert(x)
Definition: Macros.h:1037
#define EIGEN_STRONG_INLINE
Definition: Macros.h:917
#define EIGEN_DBG_SPARSE(X)
Definition: SparseUtil.h:18
#define EIGEN_SPARSE_PUBLIC_INTERFACE(Derived)
Definition: SparseUtil.h:43
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
Definition: StaticAssert.h:127
General-purpose arrays with easy API for coefficient-wise operations.
Definition: Array.h:47
Definition: DiagonalMatrix.h:19
EIGEN_DEVICE_FUNC const Derived & derived() const
Definition: DiagonalMatrix.h:41
Expression of a diagonal/subdiagonal/superdiagonal in a matrix.
Definition: Diagonal.h:65
A matrix or vector expression mapping an existing array of data.
Definition: Map.h:96
Sparse matrix.
Definition: MappedSparseMatrix.h:34
Expression of the product of two arbitrary matrices or vectors.
Definition: Product.h:75
Definition: ReturnByValue.h:52
EIGEN_DEVICE_FUNC void evalTo(Dest &dst) const
Definition: ReturnByValue.h:61
Definition: SparseCompressedBase.h:159
Definition: SparseCompressedBase.h:245
Common base class for sparse [compressed]-{row|column}-storage format.
Definition: SparseCompressedBase.h:38
Index nonZeros() const
Definition: SparseCompressedBase.h:56
bool isCompressed() const
Definition: SparseCompressedBase.h:107
@ IsRowMajor
Definition: SparseMatrixBase.h:100
Derived & operator=(const Derived &other)
Definition: SparseAssign.h:43
Base class of any sparse matrices or sparse expressions.
Definition: SparseMatrixBase.h:28
internal::traits< SparseMatrix< _Scalar, _Options, _StorageIndex > >::StorageIndex StorageIndex
Definition: SparseMatrixBase.h:43
Index size() const
Definition: SparseMatrixBase.h:181
Index rows() const
Definition: SparseMatrixBase.h:176
bool isRValue() const
Definition: SparseMatrixBase.h:194
Derived & const_cast_derived() const
Definition: SparseMatrixBase.h:145
internal::traits< SparseMatrix< _Scalar, _Options, _StorageIndex > >::Scalar Scalar
Definition: SparseMatrixBase.h:31
const Derived & derived() const
Definition: SparseMatrixBase.h:143
NumTraits< Scalar >::Real RealScalar
Definition: SparseMatrixBase.h:128
Index cols() const
Definition: SparseMatrixBase.h:178
@ Flags
Definition: SparseMatrixBase.h:95
static StorageIndex convert_index(const Index idx)
Definition: SparseMatrixBase.h:389
Definition: SparseMatrix.h:875
StorageIndex m_index
Definition: SparseMatrix.h:876
SingletonVector(Index i, Index v)
Definition: SparseMatrix.h:880
StorageIndex operator[](Index i) const
Definition: SparseMatrix.h:884
StorageIndex value_type
Definition: SparseMatrix.h:879
StorageIndex m_value
Definition: SparseMatrix.h:877
A versatible sparse matrix representation.
Definition: SparseMatrix.h:98
StorageIndex * innerNonZeroPtr()
Definition: SparseMatrix.h:181
Scalar & coeffRef(Index row, Index col)
Definition: SparseMatrix.h:208
Index m_outerSize
Definition: SparseMatrix.h:129
void prune(const Scalar &reference, const RealScalar &epsilon=NumTraits< RealScalar >::dummy_precision())
Definition: SparseMatrix.h:510
void prune(const KeepFunc &keep=KeepFunc())
Definition: SparseMatrix.h:523
Scalar & insertBackByOuterInner(Index outer, Index inner)
Definition: SparseMatrix.h:393
Index innerSize() const
Definition: SparseMatrix.h:143
Base::InnerIterator InnerIterator
Definition: SparseMatrix.h:114
void reserve(Index reserveSize)
Definition: SparseMatrix.h:264
EIGEN_DONT_INLINE SparseMatrix & operator=(const SparseMatrixBase< OtherDerived > &other)
@ Options
Definition: SparseMatrix.h:121
SparseMatrix(const DiagonalBase< OtherDerived > &other)
Copy constructor with in-place evaluation.
Definition: SparseMatrix.h:728
const StorageIndex * innerNonZeroPtr() const
Definition: SparseMatrix.h:177
SparseMatrix & operator=(const SparseMatrix &other)
Definition: SparseMatrix.h:759
void reserve(const SizesType &reserveSizes, const typename SizesType::value_type &enableif=typename SizesType::value_type())
Definition: SparseMatrix.h:287
void startVec(Index outer)
Definition: SparseMatrix.h:415
StorageIndex * m_outerIndex
Definition: SparseMatrix.h:131
StorageIndex * m_innerNonZeros
Definition: SparseMatrix.h:132
~SparseMatrix()
Definition: SparseMatrix.h:842
void resizeNonZeros(Index size)
Definition: SparseMatrix.h:649
EIGEN_STRONG_INLINE Scalar & insertBackUncompressed(Index row, Index col)
Definition: SparseMatrix.h:894
SparseMatrix & operator=(const EigenBase< OtherDerived > &other)
Definition: SparseMatrix.h:786
const ConstDiagonalReturnType diagonal() const
Definition: SparseMatrix.h:655
SparseMatrix(const ReturnByValue< OtherDerived > &other)
Copy constructor with in-place evaluation.
Definition: SparseMatrix.h:718
Index outerSize() const
Definition: SparseMatrix.h:145
SparseMatrix(const SparseMatrixBase< OtherDerived > &other)
Definition: SparseMatrix.h:681
void finalize()
Definition: SparseMatrix.h:425
Scalar coeff(Index row, Index col) const
Definition: SparseMatrix.h:190
void assignDiagonal(const DiagXpr diagXpr, const Func &assignFunc)
Definition: SparseMatrix.h:927
Storage m_data
Definition: SparseMatrix.h:133
internal::CompressedStorage< Scalar, StorageIndex > Storage
Definition: SparseMatrix.h:119
void sumupDuplicates()
Definition: SparseMatrix.h:451
void makeCompressed()
Definition: SparseMatrix.h:467
Index rows() const
Definition: SparseMatrix.h:138
SparseMatrix()
Definition: SparseMatrix.h:664
SparseMatrix(Index rows, Index cols)
Definition: SparseMatrix.h:672
SparseMatrix< Scalar,(Flags &~RowMajorBit)|(IsRowMajor?RowMajorBit:0)> TransposedSparseMatrix
Definition: SparseMatrix.h:127
Storage & data()
Definition: SparseMatrix.h:184
const StorageIndex * outerIndexPtr() const
Definition: SparseMatrix.h:168
Base::ReverseInnerIterator ReverseInnerIterator
Definition: SparseMatrix.h:115
void uncompress()
Definition: SparseMatrix.h:498
Scalar & insertBackByOuterInnerUnordered(Index outer, Index inner)
Definition: SparseMatrix.h:405
bool isCompressed() const
Definition: SparseCompressedBase.h:107
void collapseDuplicates(DupFunctor dup_func=DupFunctor())
Definition: SparseMatrix.h:1132
void setIdentity()
Definition: SparseMatrix.h:749
StorageIndex * innerIndexPtr()
Definition: SparseMatrix.h:163
StorageIndex * outerIndexPtr()
Definition: SparseMatrix.h:172
const Scalar * valuePtr() const
Definition: SparseMatrix.h:150
void conservativeResize(Index rows, Index cols)
Definition: SparseMatrix.h:556
SparseMatrix & operator=(const Product< Lhs, Rhs, AliasFreeProduct > &other)
Base::IndexVector IndexVector
Definition: SparseMatrix.h:124
Index cols() const
Definition: SparseMatrix.h:140
EIGEN_DONT_INLINE Scalar & insertCompressed(Index row, Index col)
Definition: SparseMatrix.h:1396
SparseMatrix(const SparseSelfAdjointView< OtherDerived, UpLo > &other)
Definition: SparseMatrix.h:701
Scalar & insert(Index row, Index col)
Definition: SparseMatrix.h:1244
const Storage & data() const
Definition: SparseMatrix.h:186
Scalar * valuePtr()
Definition: SparseMatrix.h:154
Index m_innerSize
Definition: SparseMatrix.h:130
void setFromTriplets(const InputIterators &begin, const InputIterators &end)
Definition: SparseMatrix.h:1108
Base::ScalarVector ScalarVector
Definition: SparseMatrix.h:125
Scalar & insertBack(Index row, Index col)
Definition: SparseMatrix.h:386
void reserveInnerVectors(const SizesType &reserveSizes)
Definition: SparseMatrix.h:299
MappedSparseMatrix< Scalar, Flags > Map
Definition: SparseMatrix.h:111
void setZero()
Definition: SparseMatrix.h:253
void setFromTriplets(const InputIterators &begin, const InputIterators &end, DupFunctor dup_func)
Definition: SparseMatrix.h:1124
@ IsRowMajor
Definition: SparseMatrixBase.h:100
Scalar & insertByOuterInner(Index j, Index i)
Definition: SparseMatrix.h:460
const StorageIndex * innerIndexPtr() const
Definition: SparseMatrix.h:159
friend std::ostream & operator<<(std::ostream &s, const SparseMatrix &m)
Definition: SparseMatrix.h:796
void swap(SparseMatrix &other)
Definition: SparseMatrix.h:737
Diagonal< SparseMatrix > DiagonalReturnType
Definition: SparseMatrix.h:112
static void check_template_parameters()
Definition: SparseMatrix.h:1015
SparseCompressedBase< SparseMatrix > Base
Definition: SparseMatrix.h:99
void initAssignment(const Other &other)
Definition: SparseMatrix.h:858
SparseMatrix(const SparseMatrix &other)
Definition: SparseMatrix.h:709
EIGEN_DONT_INLINE Scalar & insertUncompressed(Index row, Index col)
Definition: SparseMatrix.h:1364
DiagonalReturnType diagonal()
Definition: SparseMatrix.h:661
void resize(Index rows, Index cols)
Definition: SparseMatrix.h:626
Diagonal< const SparseMatrix > ConstDiagonalReturnType
Definition: SparseMatrix.h:113
Pseudo expression to manipulate a triangular sparse matrix as a selfadjoint matrix.
Definition: SparseSelfAdjointView.h:45
a sparse vector class
Definition: SparseVector.h:66
StorageIndex & index(Index i)
Definition: CompressedStorage.h:121
void reserve(Index size)
Definition: CompressedStorage.h:76
Index size() const
Definition: CompressedStorage.h:109
void moveChunk(Index from, Index to, Index chunkSize)
Definition: CompressedStorage.h:210
Index allocatedSize() const
Definition: CompressedStorage.h:110
Scalar atInRange(Index start, Index end, Index key, const Scalar &defaultValue=Scalar(0)) const
Definition: CompressedStorage.h:159
void clear()
Definition: CompressedStorage.h:111
void append(const Scalar &v, Index i)
Definition: CompressedStorage.h:101
const Scalar * valuePtr() const
Definition: CompressedStorage.h:113
const StorageIndex * indexPtr() const
Definition: CompressedStorage.h:115
void squeeze()
Definition: CompressedStorage.h:83
void resize(Index size, double reserveSizeFactor=0)
Definition: CompressedStorage.h:89
void swap(CompressedStorage &other)
Definition: CompressedStorage.h:62
Scalar & value(Index i)
Definition: CompressedStorage.h:118
Index searchLowerIndex(Index key) const
Definition: CompressedStorage.h:125
@ pos
Definition: Typedefs.h:19
@ 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
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16() max(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:576
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16() min(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:571
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_assignment_no_alias(Dst &dst, const Src &src, const Func &func)
Definition: AssignEvaluator.h:873
EIGEN_DEVICE_FUNC IndexDest convert_index(const IndexSrc &idx)
Definition: XprHelper.h:31
EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const Scalar &x, const OtherScalar &y, const typename NumTraits< Scalar >::Real &precision=NumTraits< Scalar >::dummy_precision())
Definition: MathFunctions.h:1940
EIGEN_DEVICE_FUNC void throw_std_bad_alloc()
Definition: Memory.h:67
EIGEN_DEVICE_FUNC void smart_copy(const T *start, const T *end, T *target)
Definition: Memory.h:515
void set_from_triplets(const InputIterator &begin, const InputIterator &end, SparseMatrixType &mat, DupFunctor dup_func)
Definition: SparseMatrix.h:1035
static EIGEN_DEPRECATED const end_t end
Definition: IndexedViewHelper.h:181
Namespace containing all symbols from the Eigen library.
Definition: LDLT.h:16
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
type
The type the bitset is encoded with.
Definition: bitset.hpp:44
Flags
Special flags for archives.
Definition: cereal.hpp:185
Definition: document.h:416
NLOHMANN_BASIC_JSON_TPL_DECLARATION void swap(nlohmann::NLOHMANN_BASIC_JSON_TPL &j1, nlohmann::NLOHMANN_BASIC_JSON_TPL &j2) noexcept(//NOLINT(readability-inconsistent-declaration-parameter-name, cert-dcl58-cpp) is_nothrow_move_constructible< nlohmann::NLOHMANN_BASIC_JSON_TPL >::value &&//NOLINT(misc-redundant-expression, cppcoreguidelines-noexcept-swap, performance-noexcept-swap) is_nothrow_move_assignable< nlohmann::NLOHMANN_BASIC_JSON_TPL >::value)
exchanges the values of two JSON objects
Definition: json.hpp:25399
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1282
void swap(T &lhs, T &rhs)
Definition: pugixml.cpp:7597
Definition: Constants.h:507
Definition: EigenBase.h:30
EIGEN_DEVICE_FUNC Derived & derived()
Definition: EigenBase.h:46
Eigen::Index Index
The interface type of indices.
Definition: EigenBase.h:39
Definition: Constants.h:522
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:233
Definition: SparseMatrix.h:907
Index i
Definition: SparseMatrix.h:909
Index p
Definition: SparseMatrix.h:910
IndexPosPair(Index a_i, Index a_p)
Definition: SparseMatrix.h:908
Definition: SparseMatrix.h:1021
RealScalar epsilon
Definition: SparseMatrix.h:1028
Scalar reference
Definition: SparseMatrix.h:1027
default_prunning_func(const Scalar &ref, const RealScalar &eps)
Definition: SparseMatrix.h:1022
Definition: Constants.h:510
Definition: AssignEvaluator.h:824
Definition: SparseUtil.h:144
bool found
Definition: SparseUtil.h:148
Index value
Definition: SparseUtil.h:147
SparseMatrix< _Scalar, _Options, _StorageIndex > SparseMatrixType
Definition: SparseMatrix.h:1509
evaluator< SparseCompressedBase< SparseMatrix< _Scalar, _Options, _StorageIndex > > > Base
Definition: SparseMatrix.h:1508
evaluator(const SparseMatrixType &mat)
Definition: SparseMatrix.h:1511
evaluator()
Definition: SparseMatrix.h:1510
Definition: CoreEvaluators.h:91
Definition: XprHelper.h:458
Definition: XprHelper.h:417
T type
Definition: Meta.h:126
T type
Definition: Meta.h:114
Definition: BinaryFunctors.h:33
MatrixXpr XprKind
Definition: SparseMatrix.h:73
remove_reference< MatrixTypeNested >::type _MatrixTypeNested
Definition: SparseMatrix.h:68
_StorageIndex StorageIndex
Definition: SparseMatrix.h:72
_Scalar Scalar
Definition: SparseMatrix.h:70
SparseMatrix< _Scalar, _Options, _StorageIndex > MatrixType
Definition: SparseMatrix.h:66
ref_selector< MatrixType >::type MatrixTypeNested
Definition: SparseMatrix.h:67
Dense StorageKind
Definition: SparseMatrix.h:71
_StorageIndex StorageIndex
Definition: SparseMatrix.h:50
Sparse StorageKind
Definition: SparseMatrix.h:51
MatrixXpr XprKind
Definition: SparseMatrix.h:52
_Scalar Scalar
Definition: SparseMatrix.h:49
Definition: ForwardDeclarations.h:17
#define const
Definition: zconf.h:233