|
linbox
|
Lapack-style permutation. More...
#include <permutation-matrix.h>
Public Member Functions | |
| BlasPermutation< _UnsignedInt > & | operator= (const BlasPermutation< _UnsignedInt > &P) |
| copy operator (with copy) | |
| _UnsignedInt | getSize () const |
| Returns the size of the permuation. | |
| _UnsignedInt | getOrder () const |
| Returns the order of the permuation. | |
| std::vector< _UnsignedInt > | getStorage () const |
| returns a copy of the raw storage. | |
| MatrixPermutation< _UnsignedInt > & | Convert (MatrixPermutation< _UnsignedInt > &P) |
Converts a BlasPermutation to a MatrixPermutation. | |
| _UnsignedInt | operator[] (const _UnsignedInt i) const |
| \( M \gets P M\) | |
| const _UnsignedInt * | getPointer () const |
col i and col j are swapped | |
| void | Compress () |
compresses BlasPermutation to a smaller r_. | |
| std::ostream & | write (std::ostream &o, bool Lapack=true) const |
writes on output stream o | |
Friends | |
| template<class _Uint> | |
| std::ostream & | operator<< (std::ostream &o, BlasPerm &P) |
writes P on output stream o | |
Lapack-style permutation.
A Lapack permutation is represented with a vector \([p_1,p_2,\cdots, p_r]\) such that \(p_i > i\). Converting it to a classic representation of a permutation corresponds to taking an identity permutation and then successively permuting \((i,p_i)\). Example : if P=[1,4,4] and V=[1,2,3,4,5], then P.V=[1,4,2,3,5].
| _Uint getSize | ( | ) | const |
Returns the size of the permuation.
If given, we return n as we see P in \(S_n\). We default to the order of the permutation (minimal such n)
| MatrixPermutation< _Uint > & Convert | ( | MatrixPermutation< _UnsignedInt > & | P | ) |
Converts a BlasPermutation to a MatrixPermutation.
| [out] | P | MatrixPermutation to be created. Need not be initialized. |
|
inline |
\( M \gets P M\)
\( M \gets M P\)
\( M \gets M P^t\)
\( M \gets P^t M\)
|
inline |
col i and col j are swapped
row i and row j are swapped