M4RI
20140914
|
PLE and PLUQ matrix decomposition routines. More...
#include <m4ri/mzd.h>
#include <m4ri/mzp.h>
Go to the source code of this file.
Macros | |
#define | __M4RI_PLE_CUTOFF MIN(524288, __M4RI_CPU_L3_CACHE >> 3) |
Functions | |
rci_t | mzd_pluq (mzd_t *A, mzp_t *P, mzp_t *Q, const int cutoff) |
PLUQ matrix decomposition. More... | |
rci_t | mzd_ple (mzd_t *A, mzp_t *P, mzp_t *Q, const int cutoff) |
PLE matrix decomposition. More... | |
rci_t | _mzd_pluq (mzd_t *A, mzp_t *P, mzp_t *Q, const int cutoff) |
PLUQ matrix decomposition. More... | |
rci_t | _mzd_ple (mzd_t *A, mzp_t *P, mzp_t *Qt, const int cutoff) |
PLE matrix decomposition. More... | |
rci_t | _mzd_pluq_naive (mzd_t *A, mzp_t *P, mzp_t *Q) |
PLUQ matrix decomposition (naive base case). More... | |
rci_t | _mzd_ple_naive (mzd_t *A, mzp_t *P, mzp_t *Qt) |
PLE matrix decomposition (naive base case). More... | |
PLE and PLUQ matrix decomposition routines.
#define __M4RI_PLE_CUTOFF MIN(524288, __M4RI_CPU_L3_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.
PLE matrix decomposition.
Computes the PLE matrix decomposition using a block recursive algorithm.
Returns (P,L,S,Q) satisfying PLE = 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_ple() 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. |