DynamicSparseMatrix.h
Go to the documentation of this file.
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
5 //
6 // This Source Code Form is subject to the terms of the Mozilla
7 // Public License v. 2.0. If a copy of the MPL was not distributed
8 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 
10 #ifndef EIGEN_DYNAMIC_SPARSEMATRIX_H
11 #define EIGEN_DYNAMIC_SPARSEMATRIX_H
12 
13 namespace Eigen {
14 
35 namespace internal {
36 template<typename _Scalar, int _Options, typename _StorageIndex>
37 struct traits<DynamicSparseMatrix<_Scalar, _Options, _StorageIndex> >
38 {
39  typedef _Scalar Scalar;
40  typedef _StorageIndex StorageIndex;
42  typedef MatrixXpr XprKind;
43  enum {
44  RowsAtCompileTime = Dynamic,
45  ColsAtCompileTime = Dynamic,
46  MaxRowsAtCompileTime = Dynamic,
47  MaxColsAtCompileTime = Dynamic,
48  Flags = _Options | NestByRefBit | LvalueBit,
49  CoeffReadCost = NumTraits<Scalar>::ReadCost,
50  SupportedAccessPatterns = OuterRandomAccessPattern
51  };
52 };
53 }
54 
55 template<typename _Scalar, int _Options, typename _StorageIndex>
56  class DynamicSparseMatrix
57  : public SparseMatrixBase<DynamicSparseMatrix<_Scalar, _Options, _StorageIndex> >
58 {
60  using Base::convert_index;
61  public:
63  // FIXME: why are these operator already alvailable ???
64  // EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(DynamicSparseMatrix, +=)
65  // EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(DynamicSparseMatrix, -=)
66  typedef MappedSparseMatrix<Scalar,Flags> Map;
67  using Base::IsRowMajor;
68  using Base::operator=;
69  enum {
70  Options = _Options
71  };
72 
73  protected:
74 
75  typedef DynamicSparseMatrix<Scalar,(Flags&~RowMajorBit)|(IsRowMajor?RowMajorBit:0), StorageIndex> TransposedSparseMatrix;
76 
78  std::vector<internal::CompressedStorage<Scalar,StorageIndex> > m_data;
79 
80  public:
81 
82  inline Index rows() const { return IsRowMajor ? outerSize() : m_innerSize; }
83  inline Index cols() const { return IsRowMajor ? m_innerSize : outerSize(); }
84  inline Index innerSize() const { return m_innerSize; }
85  inline Index outerSize() const { return convert_index(m_data.size()); }
86  inline Index innerNonZeros(Index j) const { return m_data[j].size(); }
87 
88  std::vector<internal::CompressedStorage<Scalar,StorageIndex> >& _data() { return m_data; }
89  const std::vector<internal::CompressedStorage<Scalar,StorageIndex> >& _data() const { return m_data; }
90 
94  inline Scalar coeff(Index row, Index col) const
95  {
96  const Index outer = IsRowMajor ? row : col;
97  const Index inner = IsRowMajor ? col : row;
98  return m_data[outer].at(inner);
99  }
100 
106  {
107  const Index outer = IsRowMajor ? row : col;
108  const Index inner = IsRowMajor ? col : row;
109  return m_data[outer].atWithInsertion(inner);
110  }
111 
112  class InnerIterator;
113  class ReverseInnerIterator;
114 
115  void setZero()
116  {
117  for (Index j=0; j<outerSize(); ++j)
118  m_data[j].clear();
119  }
120 
122  Index nonZeros() const
123  {
124  Index res = 0;
125  for (Index j=0; j<outerSize(); ++j)
126  res += m_data[j].size();
127  return res;
128  }
129 
130 
131 
132  void reserve(Index reserveSize = 1000)
133  {
134  if (outerSize()>0)
135  {
136  Index reserveSizePerVector = (std::max)(reserveSize/outerSize(),Index(4));
137  for (Index j=0; j<outerSize(); ++j)
138  {
139  m_data[j].reserve(reserveSizePerVector);
140  }
141  }
142  }
143 
145  inline void startVec(Index /*outer*/) {}
146 
153  {
155  }
156 
158  inline Scalar& insertBackByOuterInner(Index outer, Index inner)
159  {
160  eigen_assert(outer<Index(m_data.size()) && inner<m_innerSize && "out of range");
161  eigen_assert(((m_data[outer].size()==0) || (m_data[outer].index(m_data[outer].size()-1)<inner))
162  && "wrong sorted insertion");
163  m_data[outer].append(0, inner);
164  return m_data[outer].value(m_data[outer].size()-1);
165  }
166 
168  {
169  const Index outer = IsRowMajor ? row : col;
170  const Index inner = IsRowMajor ? col : row;
171 
172  Index startId = 0;
173  Index id = static_cast<Index>(m_data[outer].size()) - 1;
174  m_data[outer].resize(id+2,1);
175 
176  while ( (id >= startId) && (m_data[outer].index(id) > inner) )
177  {
178  m_data[outer].index(id+1) = m_data[outer].index(id);
179  m_data[outer].value(id+1) = m_data[outer].value(id);
180  --id;
181  }
182  m_data[outer].index(id+1) = inner;
183  m_data[outer].value(id+1) = 0;
184  return m_data[outer].value(id+1);
185  }
186 
188  inline void finalize() {}
189 
192  {
193  for (Index j=0; j<outerSize(); ++j)
195  }
196 
200  {
201  const Index outerSize = IsRowMajor ? rows : cols;
203  setZero();
204  if (Index(m_data.size()) != outerSize)
205  {
206  m_data.resize(outerSize);
207  }
208  }
209 
211  {
212  const Index outerSize = IsRowMajor ? rows : cols;
213  const Index innerSize = IsRowMajor ? cols : rows;
215  {
216  // remove all coefficients with innerCoord>=innerSize
217  // TODO
218  //std::cerr << "not implemented yet\n";
219  exit(2);
220  }
221  if (m_data.size() != outerSize)
222  {
223  m_data.resize(outerSize);
224  }
225  }
226 
229  : m_innerSize(0), m_data(0)
230  {
231  #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
233  #endif
234  eigen_assert(innerSize()==0 && outerSize()==0);
235  }
236 
239  : m_innerSize(0)
240  {
241  #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
243  #endif
244  resize(rows, cols);
245  }
246 
248  template<typename OtherDerived>
250  : m_innerSize(0)
251  {
252  #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
254  #endif
255  Base::operator=(other.derived());
256  }
257 
259  : Base(), m_innerSize(0)
260  {
261  #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
263  #endif
264  *this = other.derived();
265  }
266 
268  {
269  //EIGEN_DBG_SPARSE(std::cout << "SparseMatrix:: swap\n");
270  std::swap(m_innerSize, other.m_innerSize);
271  //std::swap(m_outerSize, other.m_outerSize);
272  m_data.swap(other.m_data);
273  }
274 
276  {
277  if (other.isRValue())
278  {
279  swap(other.const_cast_derived());
280  }
281  else
282  {
283  resize(other.rows(), other.cols());
284  m_data = other.m_data;
285  }
286  return *this;
287  }
288 
291 
292  public:
293 
296  EIGEN_DEPRECATED void startFill(Index reserveSize = 1000)
297  {
298  setZero();
299  reserve(reserveSize);
300  }
301 
312  {
313  const Index outer = IsRowMajor ? row : col;
314  const Index inner = IsRowMajor ? col : row;
315  return insertBack(outer,inner);
316  }
317 
324  {
325  return insert(row,col);
326  }
327 
331 
332 # ifdef EIGEN_DYNAMICSPARSEMATRIX_PLUGIN
333 # include EIGEN_DYNAMICSPARSEMATRIX_PLUGIN
334 # endif
335  };
336 
337 template<typename Scalar, int _Options, typename _StorageIndex>
338 class DynamicSparseMatrix<Scalar,_Options,_StorageIndex>::InnerIterator : public SparseVector<Scalar,_Options,_StorageIndex>::InnerIterator
339 {
341  public:
343  : Base(mat.m_data[outer]), m_outer(outer)
344  {}
345 
346  inline Index row() const { return IsRowMajor ? m_outer : Base::index(); }
347  inline Index col() const { return IsRowMajor ? Base::index() : m_outer; }
348  inline Index outer() const { return m_outer; }
349 
350  protected:
351  const Index m_outer;
352 };
353 
354 template<typename Scalar, int _Options, typename _StorageIndex>
355 class DynamicSparseMatrix<Scalar,_Options,_StorageIndex>::ReverseInnerIterator : public SparseVector<Scalar,_Options,_StorageIndex>::ReverseInnerIterator
356 {
358  public:
360  : Base(mat.m_data[outer]), m_outer(outer)
361  {}
362 
363  inline Index row() const { return IsRowMajor ? m_outer : Base::index(); }
364  inline Index col() const { return IsRowMajor ? Base::index() : m_outer; }
365  inline Index outer() const { return m_outer; }
366 
367  protected:
368  const Index m_outer;
369 };
370 
371 namespace internal {
372 
373 template<typename _Scalar, int _Options, typename _StorageIndex>
374 struct evaluator<DynamicSparseMatrix<_Scalar,_Options,_StorageIndex> >
375  : evaluator_base<DynamicSparseMatrix<_Scalar,_Options,_StorageIndex> >
376 {
377  typedef _Scalar Scalar;
381 
382  enum {
384  Flags = SparseMatrixType::Flags
385  };
386 
387  evaluator() : m_matrix(0) {}
388  evaluator(const SparseMatrixType &mat) : m_matrix(&mat) {}
389 
390  operator SparseMatrixType&() { return m_matrix->const_cast_derived(); }
391  operator const SparseMatrixType&() const { return *m_matrix; }
392 
393  Scalar coeff(Index row, Index col) const { return m_matrix->coeff(row,col); }
394 
395  Index nonZerosEstimate() const { return m_matrix->nonZeros(); }
396 
398 };
399 
400 }
401 
402 } // end namespace Eigen
403 
404 #endif // EIGEN_DYNAMIC_SPARSEMATRIX_H
Eigen::DynamicSparseMatrix
A sparse matrix class designed for matrix assembly purpose.
Definition: SparseUtil.h:53
Eigen::DynamicSparseMatrix::DynamicSparseMatrix
DynamicSparseMatrix(const DynamicSparseMatrix &other)
Definition: DynamicSparseMatrix.h:258
Eigen::MatrixXpr
Definition: Constants.h:522
Eigen::DynamicSparseMatrix::ReverseInnerIterator::ReverseInnerIterator
ReverseInnerIterator(const DynamicSparseMatrix &mat, Index outer)
Definition: DynamicSparseMatrix.h:359
Eigen
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
Eigen::DynamicSparseMatrix::InnerIterator::col
Index col() const
Definition: DynamicSparseMatrix.h:347
col
m col(1)
Eigen::internal::traits< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::Scalar
_Scalar Scalar
Definition: DynamicSparseMatrix.h:39
Eigen::DynamicSparseMatrix::innerNonZeros
Index innerNonZeros(Index j) const
Definition: DynamicSparseMatrix.h:86
Eigen::DynamicSparseMatrix::ReverseInnerIterator::Base
SparseVector< Scalar, _Options, _StorageIndex >::ReverseInnerIterator Base
Definition: DynamicSparseMatrix.h:357
Eigen::DynamicSparseMatrix::DynamicSparseMatrix
EIGEN_DEPRECATED DynamicSparseMatrix(Index rows, Index cols)
Definition: DynamicSparseMatrix.h:238
Eigen::Sparse
Definition: Constants.h:510
Eigen::DynamicSparseMatrix::startFill
EIGEN_DEPRECATED void startFill(Index reserveSize=1000)
Definition: DynamicSparseMatrix.h:296
Eigen::internal::evaluator< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::m_matrix
const SparseMatrixType * m_matrix
Definition: DynamicSparseMatrix.h:397
Eigen::internal::evaluator< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::SparseMatrixType
DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > SparseMatrixType
Definition: DynamicSparseMatrix.h:378
eigen_assert
#define eigen_assert(x)
Definition: Macros.h:1037
Eigen::RowMajorBit
const unsigned int RowMajorBit
Definition: Constants.h:66
Eigen::DynamicSparseMatrix::DynamicSparseMatrix
EIGEN_DEPRECATED DynamicSparseMatrix()
Definition: DynamicSparseMatrix.h:228
Eigen::DynamicSparseMatrix::~DynamicSparseMatrix
~DynamicSparseMatrix()
Definition: DynamicSparseMatrix.h:290
EIGEN_DEPRECATED
#define EIGEN_DEPRECATED
Definition: Macros.h:1058
Eigen::DynamicSparseMatrix::reserve
void reserve(Index reserveSize=1000)
Definition: DynamicSparseMatrix.h:132
Eigen::DynamicSparseMatrix::DynamicSparseMatrix
EIGEN_DEPRECATED DynamicSparseMatrix(const SparseMatrixBase< OtherDerived > &other)
Definition: DynamicSparseMatrix.h:249
Eigen::DynamicSparseMatrix::setZero
void setZero()
Definition: DynamicSparseMatrix.h:115
Eigen::SparseMatrixBase::operator=
Derived & operator=(const EigenBase< OtherDerived > &other)
Definition: SparseAssign.h:17
Eigen::DynamicSparseMatrix::nonZeros
Index nonZeros() const
Definition: DynamicSparseMatrix.h:122
Eigen::DynamicSparseMatrix::insert
Scalar & insert(Index row, Index col)
Definition: DynamicSparseMatrix.h:167
Eigen::internal::evaluator< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::InnerIterator
SparseMatrixType::InnerIterator InnerIterator
Definition: DynamicSparseMatrix.h:379
mat
MatrixXf mat
Definition: Tutorial_AdvancedInitialization_CommaTemporary.cpp:1
res
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
Eigen::internal::evaluator_base
Definition: CoreEvaluators.h:110
Eigen::DynamicSparseMatrix::ReverseInnerIterator::outer
Index outer() const
Definition: DynamicSparseMatrix.h:365
Eigen::DynamicSparseMatrix::ReverseInnerIterator
Definition: DynamicSparseMatrix.h:355
Eigen::DynamicSparseMatrix::operator=
DynamicSparseMatrix & operator=(const DynamicSparseMatrix &other)
Definition: DynamicSparseMatrix.h:275
Eigen::DynamicSparseMatrix::InnerIterator::m_outer
const Index m_outer
Definition: DynamicSparseMatrix.h:351
Eigen::SparseCompressedBase::InnerIterator
Definition: SparseCompressedBase.h:158
Eigen::DynamicSparseMatrix::_data
std::vector< internal::CompressedStorage< Scalar, StorageIndex > > & _data()
Definition: DynamicSparseMatrix.h:88
Eigen::DynamicSparseMatrix::swap
void swap(DynamicSparseMatrix &other)
Definition: DynamicSparseMatrix.h:267
Eigen::DynamicSparseMatrix::resize
void resize(Index rows, Index cols)
Definition: DynamicSparseMatrix.h:199
size
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Eigen::DynamicSparseMatrix::m_innerSize
Index m_innerSize
Definition: DynamicSparseMatrix.h:77
epsilon
static double epsilon
Definition: testRot3.cpp:37
Eigen::internal::traits< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::XprKind
MatrixXpr XprKind
Definition: DynamicSparseMatrix.h:42
EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
#define EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
Definition: test/sparse_product.cpp:23
Eigen::DynamicSparseMatrix::ReverseInnerIterator::m_outer
const Index m_outer
Definition: DynamicSparseMatrix.h:368
EIGEN_SPARSE_PUBLIC_INTERFACE
#define EIGEN_SPARSE_PUBLIC_INTERFACE(Derived)
Definition: SparseUtil.h:43
Eigen::SparseMatrixBase::convert_index
static StorageIndex convert_index(const Index idx)
Definition: SparseMatrixBase.h:389
id
static const Similarity3 id
Definition: testSimilarity3.cpp:44
Eigen::internal::evaluator< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::Scalar
_Scalar Scalar
Definition: DynamicSparseMatrix.h:377
j
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2
Eigen::LvalueBit
const unsigned int LvalueBit
Definition: Constants.h:144
Eigen::DynamicSparseMatrix::Options
@ Options
Definition: DynamicSparseMatrix.h:70
Eigen::DynamicSparseMatrix::cols
Index cols() const
Definition: DynamicSparseMatrix.h:83
Eigen::Dynamic
const int Dynamic
Definition: Constants.h:22
Eigen::DynamicSparseMatrix::InnerIterator::InnerIterator
InnerIterator(const DynamicSparseMatrix &mat, Index outer)
Definition: DynamicSparseMatrix.h:342
return_value_policy::reference
@ reference
Eigen::DynamicSparseMatrix::InnerIterator::Base
SparseVector< Scalar, _Options, _StorageIndex >::InnerIterator Base
Definition: DynamicSparseMatrix.h:340
Eigen::DynamicSparseMatrix::insertBack
Scalar & insertBack(Index row, Index col)
Definition: DynamicSparseMatrix.h:152
std::swap
void swap(GeographicLib::NearestNeighbor< dist_t, pos_t, distfun_t > &a, GeographicLib::NearestNeighbor< dist_t, pos_t, distfun_t > &b)
Definition: NearestNeighbor.hpp:827
Eigen::DynamicSparseMatrix::TransposedSparseMatrix
DynamicSparseMatrix< Scalar,(Flags &~RowMajorBit)|(IsRowMajor?RowMajorBit:0), StorageIndex > TransposedSparseMatrix
Definition: DynamicSparseMatrix.h:75
Eigen::DynamicSparseMatrix::coeffRef
Scalar & coeffRef(Index row, Index col)
Definition: DynamicSparseMatrix.h:105
Eigen::internal::evaluator
Definition: CoreEvaluators.h:90
Eigen::InnerIterator
An InnerIterator allows to loop over the element of any matrix expression.
Definition: CoreIterators.h:33
Eigen::internal::convert_index
EIGEN_DEVICE_FUNC IndexDest convert_index(const IndexSrc &idx)
Definition: XprHelper.h:31
Eigen::DynamicSparseMatrix::_data
const std::vector< internal::CompressedStorage< Scalar, StorageIndex > > & _data() const
Definition: DynamicSparseMatrix.h:89
Eigen::DynamicSparseMatrix::InnerIterator::outer
Index outer() const
Definition: DynamicSparseMatrix.h:348
Eigen::internal::evaluator< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::evaluator
evaluator()
Definition: DynamicSparseMatrix.h:387
Eigen::DynamicSparseMatrix::Base
SparseMatrixBase< DynamicSparseMatrix > Base
Definition: DynamicSparseMatrix.h:59
Eigen::internal::evaluator< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::evaluator
evaluator(const SparseMatrixType &mat)
Definition: DynamicSparseMatrix.h:388
Eigen::DynamicSparseMatrix::m_data
std::vector< internal::CompressedStorage< Scalar, StorageIndex > > m_data
Definition: DynamicSparseMatrix.h:78
RealScalar
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:47
Eigen::internal::evaluator< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::coeff
Scalar coeff(Index row, Index col) const
Definition: DynamicSparseMatrix.h:393
Eigen::DynamicSparseMatrix::IsRowMajor
@ IsRowMajor
Definition: SparseMatrixBase.h:100
Eigen::SparseCompressedBase::ReverseInnerIterator
Definition: SparseCompressedBase.h:244
Eigen::DynamicSparseMatrix::ReverseInnerIterator::col
Index col() const
Definition: DynamicSparseMatrix.h:364
Eigen::internal::evaluator< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::nonZerosEstimate
Index nonZerosEstimate() const
Definition: DynamicSparseMatrix.h:395
Eigen::internal::traits
Definition: ForwardDeclarations.h:17
Eigen::DynamicSparseMatrix::resizeAndKeepData
void resizeAndKeepData(Index rows, Index cols)
Definition: DynamicSparseMatrix.h:210
Eigen::internal::evaluator< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::ReverseInnerIterator
SparseMatrixType::ReverseInnerIterator ReverseInnerIterator
Definition: DynamicSparseMatrix.h:380
Eigen::DynamicSparseMatrix::coeff
Scalar coeff(Index row, Index col) const
Definition: DynamicSparseMatrix.h:94
row
m row(1)
Eigen::SparseVector
a sparse vector class
Definition: SparseUtil.h:54
Eigen::internal::traits< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::StorageKind
Sparse StorageKind
Definition: DynamicSparseMatrix.h:41
Eigen::SparseMatrixBase
Base class of any sparse matrices or sparse expressions.
Definition: ForwardDeclarations.h:301
Eigen::DynamicSparseMatrix::rows
Index rows() const
Definition: DynamicSparseMatrix.h:82
Eigen::DynamicSparseMatrix::InnerIterator
Definition: DynamicSparseMatrix.h:338
Eigen::OuterRandomAccessPattern
const int OuterRandomAccessPattern
Definition: SparseUtil.h:49
internal
Definition: BandTriangularSolver.h:13
Eigen::DynamicSparseMatrix::InnerIterator::row
Index row() const
Definition: DynamicSparseMatrix.h:346
Eigen::DynamicSparseMatrix::ReverseInnerIterator::row
Index row() const
Definition: DynamicSparseMatrix.h:363
Eigen::DynamicSparseMatrix::endFill
EIGEN_DEPRECATED void endFill()
Definition: DynamicSparseMatrix.h:330
Eigen::DynamicSparseMatrix::finalize
void finalize()
Definition: DynamicSparseMatrix.h:188
max
#define max(a, b)
Definition: datatypes.h:20
Eigen::DynamicSparseMatrix::fill
EIGEN_DEPRECATED Scalar & fill(Index row, Index col)
Definition: DynamicSparseMatrix.h:311
Eigen::NestByRefBit
const unsigned int NestByRefBit
Definition: Constants.h:169
Eigen::DynamicSparseMatrix::fillrand
EIGEN_DEPRECATED Scalar & fillrand(Index row, Index col)
Definition: DynamicSparseMatrix.h:323
Eigen::NumTraits
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:232
Eigen::DynamicSparseMatrix::startVec
void startVec(Index)
Definition: DynamicSparseMatrix.h:145
Eigen::DynamicSparseMatrix::insertBackByOuterInner
Scalar & insertBackByOuterInner(Index outer, Index inner)
Definition: DynamicSparseMatrix.h:158
pybind_wrapper_test_script.other
other
Definition: pybind_wrapper_test_script.py:42
Eigen::DynamicSparseMatrix::prune
void prune(Scalar reference, RealScalar epsilon=NumTraits< RealScalar >::dummy_precision())
Definition: DynamicSparseMatrix.h:191
Eigen::MappedSparseMatrix
Sparse matrix.
Definition: MappedSparseMatrix.h:32
Eigen::DynamicSparseMatrix::outerSize
Index outerSize() const
Definition: DynamicSparseMatrix.h:85
Scalar
SCALAR Scalar
Definition: bench_gemm.cpp:46
Eigen::Index
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
Eigen::DynamicSparseMatrix::innerSize
Index innerSize() const
Definition: DynamicSparseMatrix.h:84
Eigen::internal::traits< DynamicSparseMatrix< _Scalar, _Options, _StorageIndex > >::StorageIndex
_StorageIndex StorageIndex
Definition: DynamicSparseMatrix.h:40


gtsam
Author(s):
autogenerated on Tue Jun 25 2024 03:00:49