Building Block Matrices

HorizontalJoin(A, B): MtrxSprs, MtrxSprs -> MtrxSprs

Given a sparse matrix \(A\) with \(r\) rows and \(c\) columns, and a sparse matrix \(B\) with \(r\) rows and \(d\) columns, both over the same coefficient ring \(R\), return the sparse matrix over \(R\) with \(r\) rows and \((c+d)\) columns obtained by joining \(A\) and \(B\) horizontally (placing \(B\) to the right of \(A\)).

VerticalJoin(A, B): MtrxSprs, MtrxSprs -> MtrxSprs

Given a sparse matrix \(A\) with \(r\) rows and \(c\) columns, and a sparse matrix \(B\) with \(s\) rows and \(c\) columns, both over the same coefficient ring \(R\), return the sparse matrix with \((r+s)\) rows and \(c\) columns over \(R\) obtained by joining \(A\) and \(B\) vertically (placing \(B\) underneath \(A\)).

DiagonalJoin(A, B): MtrxSprs, MtrxSprs -> MtrxSprs

Given matrices \(A\) with \(a\) rows and \(b\) columns and \(B\) with \(c\) rows and \(d\) columns, both over the same coefficient ring \(R\), return the sparse matrix with \((a+c)\) rows and \((b+d)\) columns over \(R\) obtained by joining \(A\) and \(B\) diagonally (placing \(B\) diagonally to the right of and underneath \(A\), with zero blocks above and below the diagonal).