|
linbox
|
PLUQ factorisation. More...
#include <factorized-matrix.h>
Public Types | |
| typedef Field::Element | Element |
| typedef BlasMatrix< Field, typename Vector< Field >::Dense > | matrixType |
| typedef TriangularBlasMatrix< matrixType > | TriangularMatrix |
Public Member Functions | |
| template<class _Rep> | |
| PLUQMatrix (const BlasMatrix< Field, _Rep > &A) | |
| Contruction of PLUQ factorization of A (making a copy of A) | |
| template<class _Rep> | |
| PLUQMatrix (BlasMatrix< Field, _Rep > &A) | |
| Contruction of PLUQ factorization of A (in-place in A) | |
| template<class _Rep> | |
| PLUQMatrix (const BlasMatrix< Field, _Rep > &A, BlasPermutation< size_t > &P, BlasPermutation< size_t > &Q) | |
| Contruction of PLUQ factorization of A (making a copy of A). | |
| template<class _Rep> | |
| PLUQMatrix (BlasMatrix< Field, _Rep > &A, BlasPermutation< size_t > &P, BlasPermutation< size_t > &Q) | |
| Contruction of PLUQ factorization of A (in-place in A). | |
| ~PLUQMatrix () | |
| destructor. | |
| Field & | field () |
| get the field on which the factorization is done | |
| size_t | rowdim () const |
| get row dimension | |
| size_t | coldim () const |
| get column dimension | |
| size_t | getRank () const |
| get the rank of matrix | |
| const BlasPermutation< size_t > & | getQ () const |
| get the permutation Q. | |
| BlasPermutation< size_t > & | getQ (BlasPermutation< size_t > &Q) const |
| get the permutation Q. | |
| const BlasPermutation< size_t > & | getP () const |
Get the transpose of the permutation P. | |
| BlasPermutation< size_t > & | getP (BlasPermutation< size_t > &PT) const |
| get the permutation P^T. | |
| TriangularMatrix & | getL (TriangularMatrix &L, bool _QLUP=false) const |
get the Matrix L. | |
| TriangularMatrix & | getU (TriangularMatrix &U) const |
get the matrix U. | |
| Element * | getPointer () const |
| get the matrix S. | |
| size_t | getStride () const |
| template<class Operand> | |
| Operand & | left_solve (Operand &X, const Operand &B) const |
| Solvers with matrices or vectors Operand can be a BlasMatrix<Field,_Rep> or a std::vector<Element> | |
| template<class Operand> | |
| Operand & | left_solve (Operand &B) const |
| template<class Operand> | |
| Operand & | right_solve (Operand &X, const Operand &B) const |
| template<class Operand> | |
| Operand & | right_solve (Operand &B) const |
| template<class Operand> | |
| Operand & | left_Lsolve (Operand &X, const Operand &B) const |
| template<class Operand> | |
| Operand & | left_Lsolve (Operand &B) const |
| template<class Operand> | |
| Operand & | right_Lsolve (Operand &X, const Operand &B) const |
| template<class Operand> | |
| Operand & | right_Lsolve (Operand &B) const |
| template<class Operand> | |
| Operand & | left_Usolve (Operand &X, const Operand &B) const |
| template<class Operand> | |
| Operand & | rleft_Usolve (Operand &B) const |
| template<class Operand> | |
| Operand & | right_Usolve (Operand &X, const Operand &B) const |
| template<class Operand> | |
| Operand & | right_Usolve (Operand &B) const |
Protected Attributes | |
| Field | _field |
| BlasMatrix< Field, typename Vector< Field >::Dense > & | _factLU |
| BlasPermutation< size_t > & | _permP |
| BlasPermutation< size_t > & | _permQ |
| size_t | _m |
| size_t | _n |
| size_t | _rank |
| bool | _alloc |
| bool | _plloc |
PLUQ factorisation.
This is a class to ease the use LU factorisation (see FFPACK::PLUQ
The factorisation is \( A = P L U P \) with L lower unit triangular, U upper non-unit triangular, P and Q permutations.
There are two kind of contructors (with and without permutations) and they build a PLUQ factorisation of a BlasMatrix/ a finite field. There are methods for retrieving BlasBlackbox onP L,U and Q matrices and methods for solving systems.
| typedef BlasMatrix<Field,typename Vector<Field>::Dense > matrixType |
| typedef TriangularBlasMatrix<matrixType> TriangularMatrix |
Contruction of PLUQ factorization of A (making a copy of A)
Contruction of PLUQ factorization of A (in-place in A)
| PLUQMatrix | ( | const BlasMatrix< Field, _Rep > & | A, |
| BlasPermutation< size_t > & | P, | ||
| BlasPermutation< size_t > & | Q ) |
Contruction of PLUQ factorization of A (making a copy of A).
P and Q are arguments !
| PLUQMatrix | ( | BlasMatrix< Field, _Rep > & | A, |
| BlasPermutation< size_t > & | P, | ||
| BlasPermutation< size_t > & | Q ) |
| ~PLUQMatrix | ( | ) |
destructor.
| size_t rowdim | ( | ) | const |
get row dimension
| size_t coldim | ( | ) | const |
get column dimension
| size_t getRank | ( | ) | const |
get the rank of matrix
| const BlasPermutation< size_t > & getQ | ( | ) | const |
get the permutation Q.
(no copy)
| BlasPermutation< size_t > & getQ | ( | BlasPermutation< size_t > & | Q | ) | const |
get the permutation Q.
(copy)
| const BlasPermutation< size_t > & getP | ( | ) | const |
Get the transpose of the permutation P.
P itself! (because it is more difficult to compute) If needed, P can be obtained as a TransposedBlasMatrix from the return value. One reason this confusion exists is that left-multiplying by a permuation matrix corresponds to a row permuation \(\pi \in S_n\), while right-multiplying by the same matrix corresponds to the inverse column permutation \(\pi^{-1}\)! Usually this is handled intelligently (eg by applyP) but you must be careful with getP(). | BlasPermutation< size_t > & getP | ( | BlasPermutation< size_t > & | PT | ) | const |
|
inline |
get the Matrix L.
| [out] | L | |
| _QLUP | if true then L form QLUP decomposition, else L is form PLUQ decomposition. |
L has unit diagonal
|
inline |
get the matrix U.
U has non-unit diagonal | Field::Element * getPointer | ( | ) | const |
get the matrix S.
from the LSP factorization of A deduced from PLUQ)
get a pointer to the begin of storage.
| size_t getStride | ( | ) | const |
get the stride in _factLU
| Operand & left_solve | ( | Operand & | X, |
| const Operand & | B ) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field,_Rep> or a std::vector<Element>
| Operand & right_solve | ( | Operand & | X, |
| const Operand & | B ) const |
| Operand & left_Lsolve | ( | Operand & | X, |
| const Operand & | B ) const |
| Operand & right_Lsolve | ( | Operand & | X, |
| const Operand & | B ) const |
| Operand & left_Usolve | ( | Operand & | X, |
| const Operand & | B ) const |
| Operand & right_Usolve | ( | Operand & | X, |
| const Operand & | B ) const |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |