Eigen::PermutationBase
template<typename Derived>
class Eigen::PermutationBase< Derived >
Base class for permutations.
-
Template Parameters
-
Derived |
the derived class |
This class is the base class for all expressions representing a permutation matrix, internally stored as a vector of integers. The convention followed here is that if \( \sigma \) is a permutation, the corresponding permutation matrix \( P_\sigma \) is such that if \( (e_1,\ldots,e_p) \) is the canonical basis, we have:
\[ P_\sigma(e_i) = e_{\sigma(i)}. \]
This convention ensures that for any two permutations \( \sigma, \tau \), we have:
\[ P_{\sigma\circ\tau} = P_\sigma P_\tau. \]
Permutation matrices are square and invertible.
Notice that in addition to the member functions and operators listed here, there also are non-member operator* to multiply any kind of permutation object with any kind of matrix expression (MatrixBase) on either side.
-
See also
-
class PermutationMatrix, class PermutationWrapper
applyTranspositionOnTheLeft()
template<typename Derived >
applyTranspositionOnTheRight()
template<typename Derived >
Multiplies *this by the transposition \((ij)\) on the right.
-
Returns
-
a reference to *this.
This is a fast operation, it only consists in swapping two indices.
-
See also
- applyTranspositionOnTheLeft(Index,Index)
cols()
template<typename Derived >
-
Returns
-
the number of columns
determinant()
template<typename Derived >
-
Returns
-
the determinant of the permutation matrix, which is either 1 or -1 depending on the parity of the permutation.
This function is O(n
) procedure allocating a buffer of n
booleans.
indices() [1/2]
template<typename Derived >
-
Returns
-
a reference to the stored array representing the permutation.
indices() [2/2]
template<typename Derived >
inverse()
template<typename Derived >
-
Returns
-
the inverse permutation matrix.
-
Note
-
This function returns the result by value. In order to make that efficient, it is implemented as just a return statement using a special constructor, hopefully allowing the compiler to perform a RVO (return value optimization).
operator*() [1/2]
template<typename Derived >
template<typename Other >
-
Returns
-
the product of a permutation with another inverse permutation.
-
Note
-
This function returns the result by value. In order to make that efficient, it is implemented as just a return statement using a special constructor, hopefully allowing the compiler to perform a RVO (return value optimization).
operator*() [2/2]
template<typename Derived >
template<typename Other >
-
Returns
-
the product permutation matrix.
-
Note
-
This function returns the result by value. In order to make that efficient, it is implemented as just a return statement using a special constructor, hopefully allowing the compiler to perform a RVO (return value optimization).
operator=() [1/2]
template<typename Derived >
template<typename OtherDerived >
Copies the other permutation into *this
operator=() [2/2]
template<typename Derived >
template<typename OtherDerived >
resize()
template<typename Derived >
rows()
template<typename Derived >
-
Returns
-
the number of rows
setIdentity() [1/2]
template<typename Derived >
Sets *this to be the identity permutation matrix
setIdentity() [2/2]
template<typename Derived >
Sets *this to be the identity permutation matrix of given size.
size()
template<typename Derived >
-
Returns
-
the size of a side of the respective square matrix, i.e., the number of indices
toDenseMatrix()
template<typename Derived >
-
Returns
-
a Matrix object initialized from this permutation matrix. Notice that it is inefficient to return this Matrix object by value. For efficiency, favor using the Matrix constructor taking EigenBase objects.
transpose()
template<typename Derived >
-
Returns
-
the tranpose permutation matrix.
-
Note
-
This function returns the result by value. In order to make that efficient, it is implemented as just a return statement using a special constructor, hopefully allowing the compiler to perform a RVO (return value optimization).
The documentation for this class was generated from the following file: