Function m4ri_sys::mzd_ple[][src]

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

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.

See also _mzd_ple() _mzd_pluq() _mzd_pluq_mmpf() mzd_echelonize_pluq()

Returns Rank of A.