Finds a symmetric permutation that puts a square matrix into
block lower-triangular (tda_mpbl) or block upper-triangular
(tda_mpbu) form (Duff & Reid, CACM 529) – TDA's
mpbl/mpbu. B[i, j] == A[p[i], p[j]] for
every i, j; block
gives, for each row/column of B, which block it belongs to
(blocks numbered in the order B is arranged, so entries
between an earlier and a later block are always zero on the side
tda_mpbl/tda_mpbu promises – confirmed on an
instance with cross-block coupling, not one where every
block trivially has size 1).
Value
A list: B, the permuted, block-triangular matrix;
p, the permutation (B == A[p, p]); block,
an integer vector the same length as p giving each
position's block number.
See also
Other matrix algebra:
tda_mcel(),
tda_mcent(),
tda_mch(),
tda_mcross(),
tda_mdiag(),
tda_mev(),
tda_mevs(),
tda_midf(),
tda_midf1(),
tda_midf2(),
tda_midf3(),
tda_minvs(),
tda_mkmet(),
tda_mkp(),
tda_mmul(),
tda_mnc(),
tda_mnrow(),
tda_mpfit(),
tda_mpinv(),
tda_mpit(),
tda_mple(),
tda_mpz(),
tda_mscal1(),
tda_msqrtd(),
tda_msvd(),
tda_mwvec()