PermutationMatrix.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) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
5 // Copyright (C) 2009-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
6 //
7 // This Source Code Form is subject to the terms of the Mozilla
8 // Public License v. 2.0. If a copy of the MPL was not distributed
9 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 
11 #ifndef EIGEN_PERMUTATIONMATRIX_H
12 #define EIGEN_PERMUTATIONMATRIX_H
13 
14 namespace Eigen {
15 
16 namespace internal {
17 
19 
20 } // end namespace internal
21 
45 template<typename Derived>
46 class PermutationBase : public EigenBase<Derived>
47 {
50  public:
51 
52  #ifndef EIGEN_PARSED_BY_DOXYGEN
53  typedef typename Traits::IndicesType IndicesType;
54  enum {
55  Flags = Traits::Flags,
56  RowsAtCompileTime = Traits::RowsAtCompileTime,
57  ColsAtCompileTime = Traits::ColsAtCompileTime,
58  MaxRowsAtCompileTime = Traits::MaxRowsAtCompileTime,
59  MaxColsAtCompileTime = Traits::MaxColsAtCompileTime
60  };
61  typedef typename Traits::StorageIndex StorageIndex;
67  using Base::derived;
69  typedef void Scalar;
70  #endif
71 
73  template<typename OtherDerived>
75  {
76  indices() = other.indices();
77  return derived();
78  }
79 
81  template<typename OtherDerived>
83  {
84  setIdentity(tr.size());
85  for(Index k=size()-1; k>=0; --k)
87  return derived();
88  }
89 
91  inline EIGEN_DEVICE_FUNC Index rows() const { return Index(indices().size()); }
92 
94  inline EIGEN_DEVICE_FUNC Index cols() const { return Index(indices().size()); }
95 
97  inline EIGEN_DEVICE_FUNC Index size() const { return Index(indices().size()); }
98 
99  #ifndef EIGEN_PARSED_BY_DOXYGEN
100  template<typename DenseDerived>
102  {
103  other.setZero();
104  for (Index i=0; i<rows(); ++i)
105  other.coeffRef(indices().coeff(i),i) = typename DenseDerived::Scalar(1);
106  }
107  #endif
108 
114  {
115  return derived();
116  }
117 
119  const IndicesType& indices() const { return derived().indices(); }
121  IndicesType& indices() { return derived().indices(); }
122 
125  inline void resize(Index newSize)
126  {
127  indices().resize(newSize);
128  }
129 
131  void setIdentity()
132  {
134  for(StorageIndex i = 0; i < n; ++i)
135  indices().coeffRef(i) = i;
136  }
137 
140  void setIdentity(Index newSize)
141  {
142  resize(newSize);
143  setIdentity();
144  }
145 
156  {
157  eigen_assert(i>=0 && j>=0 && i<size() && j<size());
158  for(Index k = 0; k < size(); ++k)
159  {
160  if(indices().coeff(k) == i) indices().coeffRef(k) = StorageIndex(j);
161  else if(indices().coeff(k) == j) indices().coeffRef(k) = StorageIndex(i);
162  }
163  return derived();
164  }
165 
175  {
176  eigen_assert(i>=0 && j>=0 && i<size() && j<size());
177  std::swap(indices().coeffRef(i), indices().coeffRef(j));
178  return derived();
179  }
180 
185  inline InverseReturnType inverse() const
186  { return InverseReturnType(derived()); }
192  { return InverseReturnType(derived()); }
193 
194  /**** multiplication helpers to hopefully get RVO ****/
195 
196 
197 #ifndef EIGEN_PARSED_BY_DOXYGEN
198  protected:
199  template<typename OtherDerived>
201  {
202  for (Index i=0; i<rows();++i) indices().coeffRef(other.indices().coeff(i)) = i;
203  }
204  template<typename Lhs,typename Rhs>
205  void assignProduct(const Lhs& lhs, const Rhs& rhs)
206  {
207  eigen_assert(lhs.cols() == rhs.rows());
208  for (Index i=0; i<rows();++i) indices().coeffRef(i) = lhs.indices().coeff(rhs.indices().coeff(i));
209  }
210 #endif
211 
212  public:
213 
218  template<typename Other>
221 
226  template<typename Other>
228  { return PlainPermutationType(internal::PermPermProduct, *this, other.eval()); }
229 
234  template<typename Other> friend
237 
243  {
244  Index res = 1;
245  Index n = size();
247  mask.fill(false);
248  Index r = 0;
249  while(r < n)
250  {
251  // search for the next seed
252  while(r<n && mask[r]) r++;
253  if(r>=n)
254  break;
255  // we got one, let's follow it until we are back to the seed
256  Index k0 = r++;
257  mask.coeffRef(k0) = true;
258  for(Index k=indices().coeff(k0); k!=k0; k=indices().coeff(k))
259  {
260  mask.coeffRef(k) = true;
261  res = -res;
262  }
263  }
264  return res;
265  }
266 
267  protected:
268 
269 };
270 
271 namespace internal {
272 template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex>
273 struct traits<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex> >
274  : traits<Matrix<_StorageIndex,SizeAtCompileTime,SizeAtCompileTime,0,MaxSizeAtCompileTime,MaxSizeAtCompileTime> >
275 {
278  typedef _StorageIndex StorageIndex;
279  typedef void Scalar;
280 };
281 }
282 
296 template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex>
297 class PermutationMatrix : public PermutationBase<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex> >
298 {
301  public:
302 
303  typedef const PermutationMatrix& Nested;
304 
305  #ifndef EIGEN_PARSED_BY_DOXYGEN
308  #endif
309 
311  {}
312 
316  {
318  }
319 
321  template<typename OtherDerived>
323  : m_indices(other.indices()) {}
324 
332  template<typename Other>
334  {}
335 
337  template<typename Other>
339  : m_indices(tr.size())
340  {
341  *this = tr;
342  }
343 
345  template<typename Other>
347  {
348  m_indices = other.indices();
349  return *this;
350  }
351 
353  template<typename Other>
355  {
356  return Base::operator=(tr.derived());
357  }
358 
360  const IndicesType& indices() const { return m_indices; }
363 
364 
365  /**** multiplication helpers to hopefully get RVO ****/
366 
367 #ifndef EIGEN_PARSED_BY_DOXYGEN
368  template<typename Other>
370  : m_indices(other.derived().nestedExpression().size())
371  {
374  for (StorageIndex i=0; i<end;++i)
375  m_indices.coeffRef(other.derived().nestedExpression().indices().coeff(i)) = i;
376  }
377  template<typename Lhs,typename Rhs>
379  : m_indices(lhs.indices().size())
380  {
381  Base::assignProduct(lhs,rhs);
382  }
383 #endif
384 
385  protected:
386 
388 };
389 
390 
391 namespace internal {
392 template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex, int _PacketAccess>
393 struct traits<Map<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex>,_PacketAccess> >
394  : traits<Matrix<_StorageIndex,SizeAtCompileTime,SizeAtCompileTime,0,MaxSizeAtCompileTime,MaxSizeAtCompileTime> >
395 {
398  typedef _StorageIndex StorageIndex;
399  typedef void Scalar;
400 };
401 }
402 
403 template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex, int _PacketAccess>
404 class Map<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex>,_PacketAccess>
405  : public PermutationBase<Map<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex>,_PacketAccess> >
406 {
409  public:
410 
411  #ifndef EIGEN_PARSED_BY_DOXYGEN
412  typedef typename Traits::IndicesType IndicesType;
414  #endif
415 
416  inline Map(const StorageIndex* indicesPtr)
417  : m_indices(indicesPtr)
418  {}
419 
420  inline Map(const StorageIndex* indicesPtr, Index size)
421  : m_indices(indicesPtr,size)
422  {}
423 
425  template<typename Other>
427  { return Base::operator=(other.derived()); }
428 
430  template<typename Other>
432  { return Base::operator=(tr.derived()); }
433 
434  #ifndef EIGEN_PARSED_BY_DOXYGEN
435 
439  {
440  m_indices = other.m_indices;
441  return *this;
442  }
443  #endif
444 
446  const IndicesType& indices() const { return m_indices; }
448  IndicesType& indices() { return m_indices; }
449 
450  protected:
451 
453 };
454 
455 template<typename _IndicesType> class TranspositionsWrapper;
456 namespace internal {
457 template<typename _IndicesType>
458 struct traits<PermutationWrapper<_IndicesType> >
459 {
461  typedef void Scalar;
463  typedef _IndicesType IndicesType;
464  enum {
465  RowsAtCompileTime = _IndicesType::SizeAtCompileTime,
466  ColsAtCompileTime = _IndicesType::SizeAtCompileTime,
467  MaxRowsAtCompileTime = IndicesType::MaxSizeAtCompileTime,
468  MaxColsAtCompileTime = IndicesType::MaxSizeAtCompileTime,
469  Flags = 0
470  };
471 };
472 }
473 
485 template<typename _IndicesType>
486 class PermutationWrapper : public PermutationBase<PermutationWrapper<_IndicesType> >
487 {
490  public:
491 
492  #ifndef EIGEN_PARSED_BY_DOXYGEN
493  typedef typename Traits::IndicesType IndicesType;
494  #endif
495 
497  : m_indices(indices)
498  {}
499 
502  indices() const { return m_indices; }
503 
504  protected:
505 
506  typename IndicesType::Nested m_indices;
507 };
508 
509 
512 template<typename MatrixDerived, typename PermutationDerived>
516  const PermutationBase<PermutationDerived>& permutation)
517 {
519  (matrix.derived(), permutation.derived());
520 }
521 
524 template<typename PermutationDerived, typename MatrixDerived>
529 {
531  (permutation.derived(), matrix.derived());
532 }
533 
534 
535 template<typename PermutationType>
536 class InverseImpl<PermutationType, PermutationStorage>
537  : public EigenBase<Inverse<PermutationType> >
538 {
539  typedef typename PermutationType::PlainPermutationType PlainPermutationType;
541  protected:
543  public:
545  using EigenBase<Inverse<PermutationType> >::derived;
546 
547  #ifndef EIGEN_PARSED_BY_DOXYGEN
548  typedef typename PermutationType::DenseMatrixType DenseMatrixType;
549  enum {
550  RowsAtCompileTime = PermTraits::RowsAtCompileTime,
551  ColsAtCompileTime = PermTraits::ColsAtCompileTime,
552  MaxRowsAtCompileTime = PermTraits::MaxRowsAtCompileTime,
553  MaxColsAtCompileTime = PermTraits::MaxColsAtCompileTime
554  };
555  #endif
556 
557  #ifndef EIGEN_PARSED_BY_DOXYGEN
558  template<typename DenseDerived>
560  {
561  other.setZero();
562  for (Index i=0; i<derived().rows();++i)
563  other.coeffRef(i, derived().nestedExpression().indices().coeff(i)) = typename DenseDerived::Scalar(1);
564  }
565  #endif
566 
568  PlainPermutationType eval() const { return derived(); }
569 
570  DenseMatrixType toDenseMatrix() const { return derived(); }
571 
574  template<typename OtherDerived> friend
577  {
578  return Product<OtherDerived, InverseType, AliasFreeProduct>(matrix.derived(), trPerm.derived());
579  }
580 
583  template<typename OtherDerived>
586  {
588  }
589 };
590 
591 template<typename Derived>
593 {
594  return derived();
595 }
596 
597 namespace internal {
598 
600 
601 } // end namespace internal
602 
603 } // end namespace Eigen
604 
605 #endif // EIGEN_PERMUTATIONMATRIX_H
Eigen::internal::traits< PermutationWrapper< _IndicesType > >::StorageKind
PermutationStorage StorageKind
Definition: PermutationMatrix.h:460
Eigen::Inverse
Expression of the inverse of another expression.
Definition: Inverse.h:43
Eigen::InverseImpl< PermutationType, PermutationStorage >::InverseImpl
InverseImpl()
Definition: PermutationMatrix.h:542
Eigen::internal::traits< Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess > >::Scalar
void Scalar
Definition: PermutationMatrix.h:399
Eigen::internal::Lhs
@ Lhs
Definition: TensorContractionMapper.h:19
perm
idx_t idx_t idx_t idx_t idx_t * perm
Definition: include/metis.h:223
Eigen::TranspositionsBase
Definition: Transpositions.h:16
Eigen::InverseImpl< PermutationType, PermutationStorage >::InverseType
Inverse< PermutationType > InverseType
Definition: PermutationMatrix.h:544
EIGEN_DEVICE_FUNC
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:976
Eigen
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
Eigen::internal::traits< PermutationWrapper< _IndicesType > >::IndicesType
_IndicesType IndicesType
Definition: PermutationMatrix.h:463
Eigen::PermutationBase::cols
EIGEN_DEVICE_FUNC Index cols() const
Definition: PermutationMatrix.h:94
Eigen::EigenBase::derived
EIGEN_DEVICE_FUNC Derived & derived()
Definition: EigenBase.h:46
Eigen::internal::traits< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex > >::StorageKind
PermutationStorage StorageKind
Definition: PermutationMatrix.h:276
Eigen::internal::traits< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex > >::IndicesType
Matrix< _StorageIndex, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1 > IndicesType
Definition: PermutationMatrix.h:277
Eigen::InverseImpl< PermutationType, PermutationStorage >::operator*
const friend Product< OtherDerived, InverseType, AliasFreeProduct > operator*(const MatrixBase< OtherDerived > &matrix, const InverseType &trPerm)
Definition: PermutationMatrix.h:576
Eigen::InverseImpl< PermutationType, PermutationStorage >::operator*
const Product< InverseType, OtherDerived, AliasFreeProduct > operator*(const MatrixBase< OtherDerived > &matrix) const
Definition: PermutationMatrix.h:585
Eigen::PermutationMatrix::PermutationMatrix
PermutationMatrix(internal::PermPermProduct_t, const Lhs &lhs, const Rhs &rhs)
Definition: PermutationMatrix.h:378
Eigen::PermutationMatrix::indices
IndicesType & indices()
Definition: PermutationMatrix.h:362
Eigen::EigenBase< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, int > >::Index
Eigen::Index Index
The interface type of indices.
Definition: EigenBase.h:39
Eigen::DenseShape
Definition: Constants.h:528
Eigen::PermutationMatrix::indices
const IndicesType & indices() const
Definition: PermutationMatrix.h:360
Eigen::internal::traits< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex > >::Scalar
void Scalar
Definition: PermutationMatrix.h:279
Eigen::PermutationBase::PlainPermutationType
PermutationMatrix< IndicesType::SizeAtCompileTime, IndicesType::MaxSizeAtCompileTime, StorageIndex > PlainPermutationType
Definition: PermutationMatrix.h:65
Eigen::internal::EigenBase2EigenBase
Definition: AssignEvaluator.h:815
Eigen::PermutationBase::DenseMatrixType
Matrix< StorageIndex, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime > DenseMatrixType
Definition: PermutationMatrix.h:63
Eigen::PermutationMatrix::StorageIndex
Traits::StorageIndex StorageIndex
Definition: PermutationMatrix.h:307
Eigen::PermutationBase::transpose
InverseReturnType transpose() const
Definition: PermutationMatrix.h:191
Eigen::PermutationBase::rows
EIGEN_DEVICE_FUNC Index rows() const
Definition: PermutationMatrix.h:91
Eigen::EigenBase
Definition: EigenBase.h:29
Eigen::PermutationMatrix::PermutationMatrix
PermutationMatrix(const TranspositionsBase< Other > &tr)
Definition: PermutationMatrix.h:338
eigen_assert
#define eigen_assert(x)
Definition: Macros.h:1037
Eigen::PermutationBase::Scalar
void Scalar
Definition: PermutationMatrix.h:69
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::operator=
Map & operator=(const PermutationBase< Other > &other)
Definition: PermutationMatrix.h:426
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::StorageIndex
IndicesType::Scalar StorageIndex
Definition: PermutationMatrix.h:413
Eigen::PermutationWrapper::IndicesType
Traits::IndicesType IndicesType
Definition: PermutationMatrix.h:493
Eigen::internal::PermPermProduct_t
PermPermProduct_t
Definition: PermutationMatrix.h:18
Eigen::PermutationBase::resize
void resize(Index newSize)
Definition: PermutationMatrix.h:125
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::Traits
internal::traits< Map > Traits
Definition: PermutationMatrix.h:408
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::operator=
Map & operator=(const TranspositionsBase< Other > &tr)
Definition: PermutationMatrix.h:431
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::indices
const IndicesType & indices() const
Definition: PermutationMatrix.h:446
res
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
Eigen::PermutationBase::setIdentity
void setIdentity(Index newSize)
Definition: PermutationMatrix.h:140
Eigen::InverseImpl< PermutationType, PermutationStorage >::toDenseMatrix
DenseMatrixType toDenseMatrix() const
Definition: PermutationMatrix.h:570
Eigen::PermutationBase::StorageIndex
Traits::StorageIndex StorageIndex
Definition: PermutationMatrix.h:61
Eigen::operator*
const EIGEN_DEVICE_FUNC Product< MatrixDerived, PermutationDerived, AliasFreeProduct > operator*(const MatrixBase< MatrixDerived > &matrix, const PermutationBase< PermutationDerived > &permutation)
Definition: PermutationMatrix.h:515
eigen_internal_assert
#define eigen_internal_assert(x)
Definition: Macros.h:1043
k0
double k0(double x)
Definition: k0.c:131
Eigen::PermutationBase::Base
EigenBase< Derived > Base
Definition: PermutationMatrix.h:49
Eigen::PermutationMatrix::PermutationMatrix
PermutationMatrix()
Definition: PermutationMatrix.h:310
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::indices
IndicesType & indices()
Definition: PermutationMatrix.h:448
size
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Eigen::MatrixBase::asPermutation
const PermutationWrapper< const Derived > asPermutation() const
Definition: PermutationMatrix.h:592
Eigen::InverseImpl
Definition: Inverse.h:15
Eigen::PermutationWrapper::Base
PermutationBase< PermutationWrapper > Base
Definition: PermutationMatrix.h:488
n
int n
Definition: BiCGSTAB_simple.cpp:1
Eigen::PermutationBase::operator=
Derived & operator=(const PermutationBase< OtherDerived > &other)
Definition: PermutationMatrix.h:74
Eigen::PermutationBase::applyTranspositionOnTheLeft
Derived & applyTranspositionOnTheLeft(Index i, Index j)
Definition: PermutationMatrix.h:155
j
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2
Eigen::PermutationWrapper::PermutationWrapper
PermutationWrapper(const IndicesType &indices)
Definition: PermutationMatrix.h:496
Eigen::PermutationWrapper
Class to view a vector of integers as a permutation matrix.
Definition: PermutationMatrix.h:486
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::Base
PermutationBase< Map > Base
Definition: PermutationMatrix.h:407
Eigen::InverseImpl< PermutationType, PermutationStorage >::eval
PlainPermutationType eval() const
Definition: PermutationMatrix.h:568
Eigen::InverseImpl< PermutationType, PermutationStorage >::evalTo
void evalTo(MatrixBase< DenseDerived > &other) const
Definition: PermutationMatrix.h:559
Eigen::internal::PermPermProduct
@ PermPermProduct
Definition: PermutationMatrix.h:18
Eigen::TranspositionsBase::coeff
const EIGEN_DEVICE_FUNC StorageIndex & coeff(Index i) const
Definition: Transpositions.h:51
Eigen::internal::traits< PermutationWrapper< _IndicesType > >::Scalar
void Scalar
Definition: PermutationMatrix.h:461
Eigen::InverseImpl< PermutationType, PermutationStorage >::PlainPermutationType
PermutationType::PlainPermutationType PlainPermutationType
Definition: PermutationMatrix.h:539
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::IndicesType
Traits::IndicesType IndicesType
Definition: PermutationMatrix.h:412
Eigen::TranspositionsBase::size
EIGEN_DEVICE_FUNC Index size() const
Definition: Transpositions.h:41
Eigen::TranspositionsBase::derived
EIGEN_DEVICE_FUNC Derived & derived()
Definition: Transpositions.h:27
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::m_indices
IndicesType m_indices
Definition: PermutationMatrix.h:452
Eigen::PermutationBase::indices
const IndicesType & indices() const
Definition: PermutationMatrix.h:119
Eigen::PermutationBase::MaxColsAtCompileTime
@ MaxColsAtCompileTime
Definition: PermutationMatrix.h:59
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::PermutationMatrix::m_indices
IndicesType m_indices
Definition: PermutationMatrix.h:387
Eigen::internal::traits< Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess > >::IndicesType
Map< const Matrix< _StorageIndex, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1 >, _PacketAccess > IndicesType
Definition: PermutationMatrix.h:397
Eigen::PermutationMatrix::operator=
PermutationMatrix & operator=(const TranspositionsBase< Other > &tr)
Definition: PermutationMatrix.h:354
Eigen::PermutationBase::operator*
PlainPermutationType operator*(const InverseImpl< Other, PermutationStorage > &other) const
Definition: PermutationMatrix.h:227
Eigen::PermutationBase::assignTranspose
void assignTranspose(const PermutationBase< OtherDerived > &other)
Definition: PermutationMatrix.h:200
Eigen::PermutationBase::evalTo
void evalTo(MatrixBase< DenseDerived > &other) const
Definition: PermutationMatrix.h:101
Eigen::Product
Expression of the product of two arbitrary matrices or vectors.
Definition: Product.h:71
Eigen::PermutationBase::inverse
InverseReturnType inverse() const
Definition: PermutationMatrix.h:185
Eigen::Matrix::coeffRef
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & coeffRef(Index rowId, Index colId)
Definition: PlainObjectBase.h:175
Eigen::Triplet< double >
Eigen::internal::traits< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex > >::StorageIndex
_StorageIndex StorageIndex
Definition: PermutationMatrix.h:278
Eigen::Map
A matrix or vector expression mapping an existing array of data.
Definition: Map.h:94
Eigen::InverseImpl< PermutationType, PermutationStorage >::PermTraits
internal::traits< PermutationType > PermTraits
Definition: PermutationMatrix.h:540
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::Map
Map(const StorageIndex *indicesPtr, Index size)
Definition: PermutationMatrix.h:420
Eigen::PermutationBase::toDenseMatrix
DenseMatrixType toDenseMatrix() const
Definition: PermutationMatrix.h:113
matrix
Map< Matrix< T, Dynamic, Dynamic, ColMajor >, 0, OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition: gtsam/3rdparty/Eigen/blas/common.h:110
Eigen::PermutationBase::assignProduct
void assignProduct(const Lhs &lhs, const Rhs &rhs)
Definition: PermutationMatrix.h:205
Eigen::PermutationBase::determinant
Index determinant() const
Definition: PermutationMatrix.h:242
Eigen::PermutationWrapper::indices
const internal::remove_all< typename IndicesType::Nested >::type & indices() const
Definition: PermutationMatrix.h:502
Eigen::internal::traits< Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess > >::StorageKind
PermutationStorage StorageKind
Definition: PermutationMatrix.h:396
Eigen::PermutationMatrix::PermutationMatrix
PermutationMatrix(Index size)
Definition: PermutationMatrix.h:315
Eigen::PermutationBase::size
EIGEN_DEVICE_FUNC Index size() const
Definition: PermutationMatrix.h:97
Eigen::PermutationMatrix::PermutationMatrix
PermutationMatrix(const InverseImpl< Other, PermutationStorage > &other)
Definition: PermutationMatrix.h:369
Eigen::PermutationBase::Traits
internal::traits< Derived > Traits
Definition: PermutationMatrix.h:48
Eigen::PermutationMatrix::operator=
PermutationMatrix & operator=(const PermutationBase< Other > &other)
Definition: PermutationMatrix.h:346
Eigen::PermutationBase
Base class for permutations.
Definition: PermutationMatrix.h:46
Eigen::internal::traits< Derived >
Eigen::PermutationStorage
Definition: Constants.h:516
Eigen::PermutationBase::operator*
PlainPermutationType operator*(const PermutationBase< Other > &other) const
Definition: PermutationMatrix.h:219
Eigen::internal::Rhs
@ Rhs
Definition: TensorContractionMapper.h:18
Eigen::PermutationMatrix::Base
PermutationBase< PermutationMatrix > Base
Definition: PermutationMatrix.h:299
Eigen::PermutationBase::operator*
friend PlainPermutationType operator*(const InverseImpl< Other, PermutationStorage > &other, const PermutationBase &perm)
Definition: PermutationMatrix.h:235
Eigen::internal::traits< Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess > >::StorageIndex
_StorageIndex StorageIndex
Definition: PermutationMatrix.h:398
Eigen::PermutationMatrix
Permutation matrix.
Definition: PermutationMatrix.h:297
Eigen::PermutationBase::MaxRowsAtCompileTime
@ MaxRowsAtCompileTime
Definition: PermutationMatrix.h:58
Product
ProductLieGroup< Point2, Pose2 > Product
Definition: testLie.cpp:33
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::Map
Map(const StorageIndex *indicesPtr)
Definition: PermutationMatrix.h:416
Eigen::PermutationWrapper::m_indices
IndicesType::Nested m_indices
Definition: PermutationMatrix.h:506
Eigen::PermutationBase::Flags
@ Flags
Definition: PermutationMatrix.h:55
Eigen::PermutationBase::RowsAtCompileTime
@ RowsAtCompileTime
Definition: PermutationMatrix.h:56
Eigen::PermutationBase::ColsAtCompileTime
@ ColsAtCompileTime
Definition: PermutationMatrix.h:57
Eigen::Matrix
The matrix class, also used for vectors and row-vectors.
Definition: 3rdparty/Eigen/Eigen/src/Core/Matrix.h:178
Eigen::PermutationBase::applyTranspositionOnTheRight
Derived & applyTranspositionOnTheRight(Index i, Index j)
Definition: PermutationMatrix.h:174
internal
Definition: BandTriangularSolver.h:13
Eigen::MatrixBase
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:48
Eigen::PermutationBase::indices
IndicesType & indices()
Definition: PermutationMatrix.h:121
Eigen::placeholders::end
static const EIGEN_DEPRECATED end_t end
Definition: IndexedViewHelper.h:181
Eigen::PermutationBase< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex > >::derived
EIGEN_DEVICE_FUNC PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex > & derived()
Definition: EigenBase.h:46
Eigen::PermutationMatrix::IndicesType
Traits::IndicesType IndicesType
Definition: PermutationMatrix.h:306
Eigen::TranspositionsWrapper
Definition: PermutationMatrix.h:455
Eigen::PermutationMatrix::Nested
const typedef PermutationMatrix & Nested
Definition: PermutationMatrix.h:303
Eigen::PermutationMatrix::Traits
internal::traits< PermutationMatrix > Traits
Definition: PermutationMatrix.h:300
Eigen::PermutationBase::setIdentity
void setIdentity()
Definition: PermutationMatrix.h:131
Eigen::NumTraits
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:232
Eigen::PermutationBase::PlainObject
PlainPermutationType PlainObject
Definition: PermutationMatrix.h:66
i
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Eigen::Map< PermutationMatrix< SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex >, _PacketAccess >::operator=
Map & operator=(const Map &other)
Definition: PermutationMatrix.h:438
Eigen::PermutationMatrix::PermutationMatrix
PermutationMatrix(const MatrixBase< Other > &indices)
Definition: PermutationMatrix.h:333
pybind_wrapper_test_script.other
other
Definition: pybind_wrapper_test_script.py:42
Eigen::PermutationBase::operator=
Derived & operator=(const TranspositionsBase< OtherDerived > &tr)
Definition: PermutationMatrix.h:82
Eigen::PermutationWrapper::Traits
internal::traits< PermutationWrapper > Traits
Definition: PermutationMatrix.h:489
Eigen::internal::AssignmentKind
Definition: AssignEvaluator.h:811
Scalar
SCALAR Scalar
Definition: bench_gemm.cpp:46
Eigen::internal::traits< PermutationWrapper< _IndicesType > >::StorageIndex
_IndicesType::Scalar StorageIndex
Definition: PermutationMatrix.h:462
Eigen::PermutationMatrix::PermutationMatrix
PermutationMatrix(const PermutationBase< OtherDerived > &other)
Definition: PermutationMatrix.h:322
Eigen::InverseImpl< PermutationType, PermutationStorage >::DenseMatrixType
PermutationType::DenseMatrixType DenseMatrixType
Definition: PermutationMatrix.h:548
Eigen::PermutationBase::IndicesType
Traits::IndicesType IndicesType
Definition: PermutationMatrix.h:53
Eigen::internal::AssignmentKind< DenseShape, PermutationShape >::Kind
EigenBase2EigenBase Kind
Definition: PermutationMatrix.h:599
Eigen::PermutationBase::InverseReturnType
Inverse< Derived > InverseReturnType
Definition: PermutationMatrix.h:68
Eigen::PermutationShape
Definition: Constants.h:535


gtsam
Author(s):
autogenerated on Thu Dec 19 2024 04:02:24