|
linbox
|
Lapack-style permutation. More...
#include <permutation-matrix.h>
Public Member Functions | |
| BlasPermutation () | |
| ~BlasPermutation () | |
| BlasPermutation (size_t n) | |
| BlasPermutation (const _UnsignedInt *V, const _UnsignedInt &n) | |
| BlasPermutation (const std::vector< _UnsignedInt > &V) | |
| BlasPermutation (const MatrixPermutation< _UnsignedInt > &M) | |
| const Givaro::ZRing< _UnsignedInt > & | field () const |
| 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. | |
| void | setOrder (size_t r) |
| std::vector< _UnsignedInt > | getStorage () const |
| returns a copy of the raw storage. | |
| void | resize (_UnsignedInt s, bool with_zeros=true) |
| bool | isIdentity () const |
| 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 | |
| _UnsignedInt * | getPointer () |
| void | Transpose () |
| void | Invert () |
| BlasPerm & | Transpose (BlasPerm &Mt) |
| BlasPerm & | Invert (BlasPerm &Mt) |
| void | Compress () |
compresses BlasPermutation to a smaller r_. | |
| std::ostream & | write (std::ostream &o, bool Lapack=true) const |
writes on output stream o | |
Protected Member Functions | |
| void | BuildQ_ () const |
| void | InvertQ_ () |
| std::vector< _UnsignedInt > & | InvertQ_ (std::vector< _UnsignedInt > &Qinv) |
| void | BuildP_ (std::vector< _UnsignedInt > &Q, std::vector< _UnsignedInt > &Qinv) |
| bool | CheckP_ () |
| void | InitQ_ () const |
Protected Attributes | |
| _UnsignedInt | r_ |
| _UnsignedInt | n_ |
| std::vector< _UnsignedInt > | P_ |
| std::vector< _UnsignedInt > | Q_ |
| bool | inv_ |
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].
Q_ is built, then P_=Q_ | BlasPermutation | ( | ) |
| ~BlasPermutation | ( | ) |
| BlasPermutation | ( | size_t | n | ) |
| BlasPermutation | ( | const _UnsignedInt * | V, |
| const _UnsignedInt & | n ) |
| BlasPermutation | ( | const std::vector< _UnsignedInt > & | V | ) |
| BlasPermutation | ( | const MatrixPermutation< _UnsignedInt > & | M | ) |
|
inline |
|
inline |
copy operator (with copy)
| _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)
| _Uint getOrder | ( | ) | const |
Returns the order of the permuation.
| void setOrder | ( | size_t | r | ) |
|
inline |
returns a copy of the raw storage.
|
inline |
|
inline |
| 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
|
inline |
| void Transpose | ( | ) |
| void Invert | ( | ) |
| void Compress | ( | ) |
compresses BlasPermutation to a smaller r_.
| std::ostream & write | ( | std::ostream & | o, |
| bool | Lapack = true ) const |
writes on output stream o
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
friend |
writes P on output stream o
|
protected |
|
mutableprotected |
|
protected |
|
mutableprotected |
|
protected |