linbox
|
LQUP factorisation. More...
#include <factorized-matrix.h>
Public Member Functions | |
LQUPMatrix (const BlasMatrix< Field > &A) | |
Contruction of LQUP factorization of A (making a copy of A) | |
LQUPMatrix (BlasMatrix< Field > &A) | |
Contruction of LQUP factorization of A (in-place in A) | |
LQUPMatrix (const BlasMatrix< Field > &A, BlasPermutation< size_t > &P, BlasPermutation< size_t > &Q) | |
Contruction of LQUP factorization of A (making a copy of A). More... | |
LQUPMatrix (BlasMatrix< Field > &A, BlasPermutation< size_t > &P, BlasPermutation< size_t > &Q) | |
Contruction of LQUP factorization of A (in-place in A). More... | |
~LQUPMatrix () | |
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 > & | getP () const |
get the permutation P. More... | |
BlasPermutation< size_t > & | getP (BlasPermutation< size_t > &P) const |
get the permutation P. More... | |
const BlasPermutation< size_t > & | getQ () const |
Get the transpose of the permutation Q . More... | |
BlasPermutation< size_t > & | getQ (BlasPermutation< size_t > &Qt) const |
get the permutation Qt. More... | |
TriangularBlasMatrix< Field > & | getL (TriangularBlasMatrix< Field > &L, bool _QLUP=false) const |
get the Matrix L . More... | |
TriangularBlasMatrix< Field > & | getU (TriangularBlasMatrix< Field > &U) const |
get the matrix U . More... | |
BlasMatrix< Field > & | getS (BlasMatrix< Field > &S) const |
get the matrix S. More... | |
template<class Operand > | |
Operand & | left_solve (Operand &X, const Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | left_solve (Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | right_solve (Operand &X, const Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | right_solve (Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | left_Lsolve (Operand &X, const Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | left_Lsolve (Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | right_Lsolve (Operand &X, const Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | right_Lsolve (Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | left_Usolve (Operand &X, const Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | rleft_Usolve (Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | right_Usolve (Operand &X, const Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
template<class Operand > | |
Operand & | right_Usolve (Operand &B) const |
Solvers with matrices or vectors Operand can be a BlasMatrix<Field> or a std::vector<Element> | |
LQUP factorisation.
This is a class to ease the use LU factorisation (see FFPACK::LUdivine (bug link here.))
The factorisation is 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 LQUP
factorisation of a BlasMatrix/
a finite field. There are methods for retrieving BlasBlackbox
onL
,Q
,U
and P
matrices and methods for solving systems.
LQUPMatrix | ( | const BlasMatrix< Field > & | A, |
BlasPermutation< size_t > & | P, | ||
BlasPermutation< size_t > & | Q | ||
) |
Contruction of LQUP factorization of A (making a copy of A).
P and Q are arguments !
LQUPMatrix | ( | BlasMatrix< Field > & | A, |
BlasPermutation< size_t > & | P, | ||
BlasPermutation< size_t > & | Q | ||
) |
const BlasPermutation< size_t > & getP | ( | ) | const |
get the permutation P.
(no copy)
BlasPermutation< size_t > & getP | ( | BlasPermutation< size_t > & | P) | const |
get the permutation P.
(copy)
const BlasPermutation< size_t > & getQ | ( | ) | const |
Get the transpose of the permutation Q
.
Q
itself! (because it is more difficult to compute) If needed, Q
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 applyP
) but you must be careful with getQ()
. BlasPermutation< size_t > & getQ | ( | BlasPermutation< size_t > & | Qt) | const |
|
inline |
get the Matrix L
.
[out] | L | |
_QLUP | if true then L form QLUP decomposition, else L is form LQUP decomposition. |
L
has unit diagonal
|
inline |
get the matrix U
.
U
has non-unit diagonal
|
inline |
get the matrix S.
from the LSP factorization of A deduced from LQUP)