throw new IllegalArgumentException("Sides of blocks are incompatible!");
}
final int rows = a.rows() + c.rows();
final int cols = a.columns() + b.columns();
ByteMatrix matrix = new CRSByteMatrix(rows, cols);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if ((i < a.rows()) && (j < a.columns())) {
matrix.set(i, j, a.get(i, j));
}
if ((i < a.rows()) && (j > a.columns())) {
matrix.set(i, j, b.get(i, j));
}
if ((i > a.rows()) && (j < a.columns())) {
matrix.set(i, j, c.get(i, j));
}
if ((i > a.rows()) && (j > a.columns())) {
matrix.set(i, j, d.get(i, j));
}
}
}
return matrix;