code: function(a, b, c, d) {
              	var elements = [], ni = c, i, nj, j;
              	var rows = this.elements.length, cols = this.elements[0].length;
              	while (ni--) {
              	    i = c - ni - 1;
              	    elements[i] = [];
              	    nj = d;
              	    while (nj--) {
              		j = d - nj - 1;
              		elements[i][j] = this.elements[(a + i - 1) % rows][(b + j - 1) % cols];
              	    }
              	}
              	return Matrix$b.create(elements);
                  }
docs: Returns a submatrix taken from the matrix Argument order is: start row, start col, nrows, ncols Element selection wraps if the required index is outside the matrix's bounds, so you could use this to perform row/column cycling or copy-augmenting.