M4RI 1.0.1
|
PLS and PLUQ matrix decomposition routines. More...
Go to the source code of this file.
Defines | |
#define | __M4RI_PLS_CUTOFF MIN(524288, __M4RI_CPU_L2_CACHE >> 3) |
Functions | |
rci_t | mzd_pluq (mzd_t *A, mzp_t *P, mzp_t *Q, const int cutoff) |
PLUQ matrix decomposition. | |
rci_t | mzd_pls (mzd_t *A, mzp_t *P, mzp_t *Q, const int cutoff) |
PLS matrix decomposition. | |
rci_t | _mzd_pluq (mzd_t *A, mzp_t *P, mzp_t *Q, const int cutoff) |
PLUQ matrix decomposition. | |
rci_t | _mzd_pls (mzd_t *A, mzp_t *P, mzp_t *Qt, const int cutoff) |
PLS matrix decomposition. | |
rci_t | _mzd_pluq_naive (mzd_t *A, mzp_t *P, mzp_t *Q) |
PLUQ matrix decomposition (naive base case). | |
rci_t | _mzd_pls_naive (mzd_t *A, mzp_t *P, mzp_t *Qt) |
PLS matrix decomposition (naive base case). |
PLS and PLUQ matrix decomposition routines.
#define __M4RI_PLS_CUTOFF MIN(524288, __M4RI_CPU_L2_CACHE >> 3) |
Crossover point for PLUQ factorization.
PLUQ matrix decomposition.
See mzd_pluq() for details.
A | Input matrix |
P | Output row mzp_t matrix |
Q | Output column mzp_t matrix |
cutoff | Minimal dimension for Strassen recursion. |
PLUQ matrix decomposition (naive base case).
See mzd_pluq() for details.
PLS matrix decomposition.
Computes the PLS matrix decomposition using a block recursive algorithm.
Returns (P,L,S,Q) satisfying PLS = A where P is a permutation matrix of dimension m x m, L is m x r unit lower triangular and S is an r x n matrix which is upper triangular except that its columns are permuted, that is S = UQ for U r x n upper triangular and Q is a n x n permutation matrix. The matrix L and S are stored in place over A.
P and Q must be preallocated but they don't have to be identity permutations. If cutoff is zero a value is chosen automatically. It is recommended to set cutoff to zero for most applications.
This is the wrapper function including bounds checks. See _mzd_pls() for implementation details.
A | Input m x n matrix |
P | Output row permutation of length m |
Q | Output column permutation matrix of length n |
cutoff | Minimal dimension for Strassen recursion. |
PLUQ matrix decomposition.
Returns (P,L,U,Q) satisfying PLUQ = A where P and Q are two permutation matrices, of dimension respectively m x m and n x n, L is m x r unit lower triangular and U is r x n upper triangular.
P and Q must be preallocated but they don't have to be identity permutations. If cutoff is zero a value is chosen automatically. It is recommended to set cutoff to zero for most applications.
The row echelon form (not reduced) can be read from the upper triangular matrix U. See mzd_echelonize_pluq() for details.
This is the wrapper function including bounds checks. See _mzd_pluq() for implementation details.
A | Input m x n matrix |
P | Output row permutation of length m |
Q | Output column permutation matrix of length n |
cutoff | Minimal dimension for Strassen recursion. |