Function m4ri_sys::mzd_pluq[][src]

pub unsafe extern "C" fn mzd_pluq(
    a: *mut Mzd,
    p: *mut Mzp,
    q: *mut Mzp,
    cutoff: c_int
) -> Rci

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.

See also _mzd_pluq() _mzd_pluq_mmpf() mzd_echelonize_pluq()

return Rank of A.