The implementation of Algorithm  stores upper triangular matrices in CSR format, and matching matrices as a hash map. For both clique and cubical complexes, we store the matrix \(D\)  in a compressed data structure that permits lazy look-up of rows and columns. While doing row reductions, the rows of \(D\)  are generated by a coface iterator; correspondingly, while doing column reductions, the columns of \(D\)  are generated by a face iterator. The data structure for clique complexes closely resembles that of [1]}, and the structure used for cubical complexes closely resembles that of [2]}, [3]}.
