|
linbox
|
LQUP factorisation. More...
#include <factorized-matrix.h>
Public Member Functions | |
| LQUPMatrix (const Field &F, const BlasMatrix< Element > &A) | |
| Contruction of LQUP factorization of A (making a copy of A) | |
| LQUPMatrix (const Field &F, BlasMatrix< Element > &A) | |
| Contruction of LQUP factorization of A (in-place in A) | |
| LQUPMatrix (const BlasBlackbox< Field > &A) | |
| Contruction of LQUP factorization of A (making a copy of A) | |
| LQUPMatrix (BlasBlackbox< Field > &A) | |
| Contruction of LQUP factorization of A (in-place in A) | |
| LQUPMatrix (const Field &F, const BlasMatrix< Element > &A, BlasPermutation< size_t > &P, BlasPermutation< size_t > &Q) | |
| Contruction of LQUP factorization of A (making a copy of A). | |
| LQUPMatrix (const Field &F, BlasMatrix< Element > &A, BlasPermutation< size_t > &P, BlasPermutation< size_t > &Q) | |
| Contruction of LQUP factorization of A (in-place in A). | |
| LQUPMatrix (const BlasBlackbox< Field > &A, BlasPermutation< size_t > &P, BlasPermutation< size_t > &Q) | |
| Contruction of LQUP factorization of A (making a copy of A). | |
| LQUPMatrix (BlasBlackbox< Field > &A, BlasPermutation< size_t > &P, BlasPermutation< size_t > &Q) | |
| Contruction of LQUP factorization of A (in-place in A). | |
| ~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. | |
| BlasPermutation< size_t > & | getP (BlasPermutation< size_t > &P) const |
| get the permutation P. | |
| const BlasPermutation< size_t > & | getQ () const |
Get the transpose of the permutation Q. | |
| BlasPermutation< size_t > & | getQ (BlasPermutation< size_t > &Qt) const |
| get the permutation Qt. | |
| TriangularBlasMatrix< Element > & | getL (TriangularBlasMatrix< Element > &L, bool _QLUP=false) const |
get the Matrix L. | |
| TriangularBlasMatrix< Element > & | getU (TriangularBlasMatrix< Element > &U) const |
get the matrix U. | |
| BlasMatrix< Element > & | getS (BlasMatrix< Element > &S) const |
| get the matrix S. | |
| template<class Operand > | |
| Operand & | left_solve (Operand &X, const Operand &B) const |
| Solvers with matrices or vectors Operand can be a BlasMatrix<Element> or a std::vector<Element> | |
| template<class Operand > | |
| Operand & | left_solve (Operand &B) const |
| Solvers with matrices or vectors Operand can be a BlasMatrix<Element> 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<Element> or a std::vector<Element> | |
| template<class Operand > | |
| Operand & | right_solve (Operand &B) const |
| Solvers with matrices or vectors Operand can be a BlasMatrix<Element> 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<Element> or a std::vector<Element> | |
| template<class Operand > | |
| Operand & | left_Lsolve (Operand &B) const |
| Solvers with matrices or vectors Operand can be a BlasMatrix<Element> 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<Element> or a std::vector<Element> | |
| template<class Operand > | |
| Operand & | right_Lsolve (Operand &B) const |
| Solvers with matrices or vectors Operand can be a BlasMatrix<Element> 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<Element> or a std::vector<Element> | |
| template<class Operand > | |
| Operand & | rleft_Usolve (Operand &B) const |
| Solvers with matrices or vectors Operand can be a BlasMatrix<Element> 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<Element> or a std::vector<Element> | |
| template<class Operand > | |
| Operand & | right_Usolve (Operand &B) const |
| Solvers with matrices or vectors Operand can be a BlasMatrix<Element> or a std::vector<Element> | |
LQUP factorisation.
This is a class to ease the use LU factorisation (see LUdivine in FFPACK)
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/BlasBlackbox on a finite field. There are methods for retrieving L,Q,U and P matrices and methods for solving systems.
| LQUPMatrix | ( | const Field & | F, |
| const BlasMatrix< Element > & | A, | ||
| BlasPermutation< size_t > & | P, | ||
| BlasPermutation< size_t > & | Q | ||
| ) | [inline] |
Contruction of LQUP factorization of A (making a copy of A).
P and Q are arguments !
| LQUPMatrix | ( | const Field & | F, |
| BlasMatrix< Element > & | A, | ||
| BlasPermutation< size_t > & | P, | ||
| BlasPermutation< size_t > & | Q | ||
| ) | [inline] |
Contruction of LQUP factorization of A (in-place in A).
P and Q are arguments !
| LQUPMatrix | ( | const BlasBlackbox< Field > & | A, |
| BlasPermutation< size_t > & | P, | ||
| BlasPermutation< size_t > & | Q | ||
| ) | [inline] |
Contruction of LQUP factorization of A (making a copy of A).
P and Q are arguments !
| LQUPMatrix | ( | BlasBlackbox< Field > & | A, |
| BlasPermutation< size_t > & | P, | ||
| BlasPermutation< size_t > & | Q | ||
| ) | [inline] |
Contruction of LQUP factorization of A (in-place in A).
P and Q are arguments !
| const BlasPermutation<size_t>& getP | ( | ) | const [inline] |
get the permutation P.
(no copy)
| BlasPermutation<size_t>& getP | ( | BlasPermutation< size_t > & | P | ) | const [inline] |
get the permutation P.
(copy)
| const BlasPermutation<size_t>& getQ | ( | ) | const [inline] |
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
, while right-multiplying by the same matrix corresponds to the inverse column permutation
! Usually this is handled intelligently (eg by applyP) but you must be careful with getQ(). | BlasPermutation<size_t>& getQ | ( | BlasPermutation< size_t > & | Qt | ) | const [inline] |
| TriangularBlasMatrix< typename Field::Element > & getL | ( | TriangularBlasMatrix< Element > & | L, |
| bool | _QLUP = false |
||
| ) | 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 | TriangularBlasMatrix< typename Field::Element > & getU | ( | TriangularBlasMatrix< Element > & | U | ) | const [inline] |
get the matrix U.
U has non-unit diagonal | BlasMatrix< typename Field::Element > & getS | ( | BlasMatrix< Element > & | S | ) | const [inline] |
get the matrix S.
from the LSP factorization of A deduced from LQUP)
1.7.4