Computing the block triangular form of a sparse matrix | Synapse