11#ifndef EIGEN_PERMUTATIONMATRIX_H
12#define EIGEN_PERMUTATIONMATRIX_H
45template<
typename Derived>
52 #ifndef EIGEN_PARSED_BY_DOXYGEN
73 template<
typename OtherDerived>
81 template<
typename OtherDerived>
99 #ifndef EIGEN_PARSED_BY_DOXYGEN
100 template<
typename DenseDerived>
105 other.coeffRef(
indices().coeff(
i),
i) =
typename DenseDerived::Scalar(1);
197#ifndef EIGEN_PARSED_BY_DOXYGEN
199 template<
typename OtherDerived>
204 template<
typename Lhs,
typename Rhs>
218 template<
typename Other>
226 template<
typename Other>
234 template<
typename Other>
friend
252 while(r<
n && mask[r]) r++;
272template<
int SizeAtCompileTime,
int MaxSizeAtCompileTime,
typename _StorageIndex>
274 :
traits<Matrix<_StorageIndex,SizeAtCompileTime,SizeAtCompileTime,0,MaxSizeAtCompileTime,MaxSizeAtCompileTime> >
296template<
int SizeAtCompileTime,
int MaxSizeAtCompileTime,
typename _StorageIndex>
305 #ifndef EIGEN_PARSED_BY_DOXYGEN
321 template<
typename OtherDerived>
332 template<
typename Other>
337 template<
typename Other>
345 template<
typename Other>
353 template<
typename Other>
367#ifndef EIGEN_PARSED_BY_DOXYGEN
368 template<
typename Other>
375 m_indices.coeffRef(other.derived().nestedExpression().indices().coeff(
i)) =
i;
377 template<
typename Lhs,
typename Rhs>
392template<
int SizeAtCompileTime,
int MaxSizeAtCompileTime,
typename _StorageIndex,
int _PacketAccess>
394 :
traits<Matrix<_StorageIndex,SizeAtCompileTime,SizeAtCompileTime,0,MaxSizeAtCompileTime,MaxSizeAtCompileTime> >
403template<
int SizeAtCompileTime,
int MaxSizeAtCompileTime,
typename _StorageIndex,
int _PacketAccess>
405 :
public PermutationBase<Map<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex>,_PacketAccess> >
411 #ifndef EIGEN_PARSED_BY_DOXYGEN
417 : m_indices(indicesPtr)
421 : m_indices(indicesPtr,
size)
425 template<
typename Other>
427 {
return Base::operator=(other.
derived()); }
430 template<
typename Other>
432 {
return Base::operator=(tr.
derived()); }
434 #ifndef EIGEN_PARSED_BY_DOXYGEN
440 m_indices = other.m_indices;
457template<
typename _IndicesType>
465 RowsAtCompileTime = _IndicesType::SizeAtCompileTime,
466 ColsAtCompileTime = _IndicesType::SizeAtCompileTime,
467 MaxRowsAtCompileTime = IndicesType::MaxSizeAtCompileTime,
468 MaxColsAtCompileTime = IndicesType::MaxSizeAtCompileTime,
485template<
typename _IndicesType>
492 #ifndef EIGEN_PARSED_BY_DOXYGEN
512template<
typename MatrixDerived,
typename PermutationDerived>
524template<
typename PermutationDerived,
typename MatrixDerived>
526const Product<PermutationDerived, MatrixDerived, AliasFreeProduct>
535template<
typename PermutationType>
537 :
public EigenBase<Inverse<PermutationType> >
539 typedef typename PermutationType::PlainPermutationType PlainPermutationType;
547 #ifndef EIGEN_PARSED_BY_DOXYGEN
550 RowsAtCompileTime = PermTraits::RowsAtCompileTime,
551 ColsAtCompileTime = PermTraits::ColsAtCompileTime,
552 MaxRowsAtCompileTime = PermTraits::MaxRowsAtCompileTime,
553 MaxColsAtCompileTime = PermTraits::MaxColsAtCompileTime
557 #ifndef EIGEN_PARSED_BY_DOXYGEN
558 template<
typename DenseDerived>
562 for (
Index i=0;
i<derived().rows();++
i)
563 other.coeffRef(
i, derived().nestedExpression().indices().coeff(
i)) =
typename DenseDerived::Scalar(1);
568 PlainPermutationType
eval()
const {
return derived(); }
574 template<
typename OtherDerived>
friend
583 template<
typename OtherDerived>
591template<
typename Derived>
int n
Definition BiCGSTAB_simple.cpp:1
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define eigen_internal_assert(x)
Definition Macros.h:1043
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define eigen_assert(x)
Definition Macros.h:1037
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition PartialRedux_count.cpp:3
Scalar Scalar int size
Definition benchVecAdd.cpp:17
EIGEN_DEVICE_FUNC Derived & setZero()
Definition CwiseNullaryOp.h:546
void evalTo(MatrixBase< DenseDerived > &other) const
Definition PermutationMatrix.h:559
DenseMatrixType toDenseMatrix() const
Definition PermutationMatrix.h:570
InverseImpl()
Definition PermutationMatrix.h:542
PermutationType::DenseMatrixType DenseMatrixType
Definition PermutationMatrix.h:548
PlainPermutationType eval() const
Definition PermutationMatrix.h:568
Inverse< PermutationType > InverseType
Definition PermutationMatrix.h:544
const Product< InverseType, OtherDerived, AliasFreeProduct > operator*(const MatrixBase< OtherDerived > &matrix) const
Definition PermutationMatrix.h:585
friend const Product< OtherDerived, InverseType, AliasFreeProduct > operator*(const MatrixBase< OtherDerived > &matrix, const InverseType &trPerm)
Definition PermutationMatrix.h:576
Expression of the inverse of another expression.
Definition Inverse.h:44
Map & operator=(const Map &other)
Definition PermutationMatrix.h:438
Map(const StorageIndex *indicesPtr)
Definition PermutationMatrix.h:416
Map & operator=(const TranspositionsBase< Other > &tr)
Definition PermutationMatrix.h:431
Traits::IndicesType IndicesType
Definition PermutationMatrix.h:412
IndicesType & indices()
Definition PermutationMatrix.h:448
Map(const StorageIndex *indicesPtr, Index size)
Definition PermutationMatrix.h:420
Map & operator=(const PermutationBase< Other > &other)
Definition PermutationMatrix.h:426
IndicesType::Scalar StorageIndex
Definition PermutationMatrix.h:413
IndicesType m_indices
Definition PermutationMatrix.h:452
const IndicesType & indices() const
Definition PermutationMatrix.h:446
A matrix or vector expression mapping an existing array of data.
Definition Map.h:96
MapBase< Map > Base
Definition Map.h:99
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50
const PermutationWrapper< const Derived > asPermutation() const
Definition PermutationMatrix.h:592
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar & coeffRef(Index rowId, Index colId)
Definition PlainObjectBase.h:175
Base class for permutations.
Definition PermutationMatrix.h:47
InverseReturnType transpose() const
Definition PermutationMatrix.h:191
Derived & applyTranspositionOnTheLeft(Index i, Index j)
Definition PermutationMatrix.h:155
void assignProduct(const Lhs &lhs, const Rhs &rhs)
Definition PermutationMatrix.h:205
void resize(Index newSize)
Definition PermutationMatrix.h:125
Traits::IndicesType IndicesType
Definition PermutationMatrix.h:53
EIGEN_DEVICE_FUNC Index rows() const
Definition PermutationMatrix.h:91
Traits::StorageIndex StorageIndex
Definition PermutationMatrix.h:61
PlainPermutationType PlainObject
Definition PermutationMatrix.h:66
EIGEN_DEVICE_FUNC Index cols() const
Definition PermutationMatrix.h:94
Index determinant() const
Definition PermutationMatrix.h:242
Inverse< Derived > InverseReturnType
Definition PermutationMatrix.h:68
EIGEN_DEVICE_FUNC Index size() const
Definition PermutationMatrix.h:97
@ MaxRowsAtCompileTime
Definition PermutationMatrix.h:58
@ RowsAtCompileTime
Definition PermutationMatrix.h:56
@ MaxColsAtCompileTime
Definition PermutationMatrix.h:59
@ Flags
Definition PermutationMatrix.h:55
@ ColsAtCompileTime
Definition PermutationMatrix.h:57
Derived & applyTranspositionOnTheRight(Index i, Index j)
Definition PermutationMatrix.h:174
friend PlainPermutationType operator*(const InverseImpl< Other, PermutationStorage > &other, const PermutationBase &perm)
Definition PermutationMatrix.h:235
PermutationMatrix< IndicesType::SizeAtCompileTime, IndicesType::MaxSizeAtCompileTime, StorageIndex > PlainPermutationType
Definition PermutationMatrix.h:65
void setIdentity()
Definition PermutationMatrix.h:131
Derived & operator=(const PermutationBase< OtherDerived > &other)
Definition PermutationMatrix.h:74
IndicesType & indices()
Definition PermutationMatrix.h:121
Matrix< StorageIndex, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime > DenseMatrixType
Definition PermutationMatrix.h:63
void evalTo(MatrixBase< DenseDerived > &other) const
Definition PermutationMatrix.h:101
void Scalar
Definition PermutationMatrix.h:69
void setIdentity(Index newSize)
Definition PermutationMatrix.h:140
PlainPermutationType operator*(const InverseImpl< Other, PermutationStorage > &other) const
Definition PermutationMatrix.h:227
EIGEN_DEVICE_FUNC Derived & derived()
Definition EigenBase.h:46
const IndicesType & indices() const
Definition PermutationMatrix.h:119
InverseReturnType inverse() const
Definition PermutationMatrix.h:185
DenseMatrixType toDenseMatrix() const
Definition PermutationMatrix.h:113
Derived & operator=(const TranspositionsBase< OtherDerived > &tr)
Definition PermutationMatrix.h:82
PlainPermutationType operator*(const PermutationBase< Other > &other) const
Definition PermutationMatrix.h:219
void assignTranspose(const PermutationBase< OtherDerived > &other)
Definition PermutationMatrix.h:200
Permutation matrix.
Definition PermutationMatrix.h:298
PermutationMatrix(const TranspositionsBase< Other > &tr)
Definition PermutationMatrix.h:338
PermutationMatrix(const MatrixBase< Other > &indices)
Definition PermutationMatrix.h:333
PermutationMatrix(const PermutationBase< OtherDerived > &other)
Definition PermutationMatrix.h:322
PermutationMatrix & operator=(const PermutationBase< Other > &other)
Definition PermutationMatrix.h:346
PermutationMatrix(const InverseImpl< Other, PermutationStorage > &other)
Definition PermutationMatrix.h:369
Traits::IndicesType IndicesType
Definition PermutationMatrix.h:306
const IndicesType & indices() const
Definition PermutationMatrix.h:360
IndicesType m_indices
Definition PermutationMatrix.h:387
IndicesType & indices()
Definition PermutationMatrix.h:362
PermutationMatrix & operator=(const TranspositionsBase< Other > &tr)
Definition PermutationMatrix.h:354
const PermutationMatrix & Nested
Definition PermutationMatrix.h:303
PermutationMatrix()
Definition PermutationMatrix.h:310
PermutationMatrix(Index size)
Definition PermutationMatrix.h:315
Traits::StorageIndex StorageIndex
Definition PermutationMatrix.h:307
PermutationMatrix(internal::PermPermProduct_t, const Lhs &lhs, const Rhs &rhs)
Definition PermutationMatrix.h:378
Class to view a vector of integers as a permutation matrix.
Definition PermutationMatrix.h:487
PermutationWrapper(const IndicesType &indices)
Definition PermutationMatrix.h:496
const internal::remove_all< typenameIndicesType::Nested >::type & indices() const
Definition PermutationMatrix.h:502
IndicesType::Nested m_indices
Definition PermutationMatrix.h:506
Traits::IndicesType IndicesType
Definition PermutationMatrix.h:493
Expression of the product of two arbitrary matrices or vectors.
Definition Product.h:75
Definition Transpositions.h:17
EIGEN_DEVICE_FUNC Index size() const
Definition Transpositions.h:41
EIGEN_DEVICE_FUNC const StorageIndex & coeff(Index i) const
Definition Transpositions.h:51
EIGEN_DEVICE_FUNC Derived & derived()
Definition Transpositions.h:27
Definition Transpositions.h:274
Map< Matrix< T, Dynamic, Dynamic, ColMajor >, 0, OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition common.h:110
PermPermProduct_t
Definition PermutationMatrix.h:18
@ PermPermProduct
Definition PermutationMatrix.h:18
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEVICE_FUNC const Product< MatrixDerived, PermutationDerived, AliasFreeProduct > operator*(const MatrixBase< MatrixDerived > &matrix, const PermutationBase< PermutationDerived > &permutation)
Definition PermutationMatrix.h:515
Definition BandTriangularSolver.h:13
Definition Constants.h:528
Definition EigenBase.h:30
Eigen::Index Index
The interface type of indices.
Definition EigenBase.h:39
EIGEN_DEVICE_FUNC Derived & derived()
Definition EigenBase.h:46
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition Constants.h:535
Definition Constants.h:516
EigenBase2EigenBase Kind
Definition PermutationMatrix.h:599
Definition AssignEvaluator.h:817
Definition AssignEvaluator.h:815
_StorageIndex StorageIndex
Definition PermutationMatrix.h:398
void Scalar
Definition PermutationMatrix.h:399
Map< const Matrix< _StorageIndex, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1 >, _PacketAccess > IndicesType
Definition PermutationMatrix.h:397
PermutationStorage StorageKind
Definition PermutationMatrix.h:396
_StorageIndex StorageIndex
Definition PermutationMatrix.h:278
PermutationStorage StorageKind
Definition PermutationMatrix.h:276
Matrix< _StorageIndex, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1 > IndicesType
Definition PermutationMatrix.h:277
void Scalar
Definition PermutationMatrix.h:279
void Scalar
Definition PermutationMatrix.h:461
_IndicesType IndicesType
Definition PermutationMatrix.h:463
PermutationStorage StorageKind
Definition PermutationMatrix.h:460
_IndicesType::Scalar StorageIndex
Definition PermutationMatrix.h:462
Definition ForwardDeclarations.h:17
std::ptrdiff_t j
Definition tut_arithmetic_redux_minmax.cpp:2