SubMatrix implements Cloneable { public boolean isEmpty() { return getColumnsCount() <= 0 || getRowsCount() <= 0; } SubMatrix(final double[] data, final int nrows, final int ncols);  SubMatrix(final double[] data, final int start, final int nrows,
            final int ncols, final int rowinc, final int colinc);  SubMatrix(final SubMatrix m); void add(final double val); void add(final int row, final int col, final double val); void add(final SubMatrix m); void addTo(SubMatrix m, int i, int j); void subTo(SubMatrix m, int i, int j); void chs(); void set(final Matrix.MatrixFunction fn); void add(final Matrix.MatrixFunction fn); void set(final Matrix.MatrixRelativeFunction fn); void add(final Matrix.MatrixRelativeFunction fn); @Override SubMatrix clone(); DataBlock column(final int c); DataBlockIterator columns(); void copy(final SubMatrix m); void copyRows(final SubMatrix src, final boolean[] brows); void copyRows(final SubMatrix src, final int[] irows); void copyColumns(final SubMatrix src, final boolean[] bcols); void copyColumns(final SubMatrix src, final int[] icols); void copy(final SubMatrix src, final boolean[] brows, final boolean[] bcols); void copy(final SubMatrix src, final int[] irows, final int[] icols); void copyTo(SubMatrix m, int i, int j); void setAY(final double a, final SubMatrix Y); void addAY(final double a, final SubMatrix Y); void addXaXt(double a, DataBlock x); void addXaYt(double a, DataBlock x, DataBlock y); DataBlock diagonal(); void difference(final SubMatrix ls, final SubMatrix rs); SubMatrix extract(final int r0, final int r1, final int c0,
            final int c1); SubMatrix extract(final int r0, final int c0, final int nrows,
            final int ncols, final int rowinc, final int colinc); double get(final int row, final int col); int getColumnsCount(); int getRowsCount(); void move(final int dr, final int dc); void mul(final double val); void mul(final int row, final int col, final double val); double dot(final SubMatrix m); void product(final SubMatrix m, final SubMatrix n); void kronecker(final SubMatrix m, final SubMatrix n); DataBlock row(final int r); DataBlockIterator rows(); void set(final double val); void set(final int row, final int col, final double value); void shift(final int n); void sub(final SubMatrix m); DataBlock subDiagonal(int pos); double sum(); void sum(final SubMatrix ls, final SubMatrix rs); SubMatrix transpose(); boolean isEmpty(); boolean isZero(double zero); @Deprecated boolean isNull(double zero); boolean isDiagonal(); boolean isIdentity(); boolean isLower(); boolean isUpper(); @Override String toString(); String toString(String fmt); @NewObject DataBlock rowSum(); @NewObject DataBlock columnSum(); void xmy(SubMatrix x, SubMatrix y); double nrm2(); void next(int nrows, int ncols); void next(); void hnext(int ncols); void hnext(); void vnext(int nrows); void vnext(); void previous(int nrows, int ncols); void previous(); void hprevious(int ncols); void hprevious(); void vprevious(int nrows); void vprevious(); SubMatrix topLeft(); SubMatrix topLeft(int nr, int nc); SubMatrix top(int nr); SubMatrix left(int nc); SubMatrix bottomRight(); SubMatrix bottomRight(int nr, int nc); SubMatrix bottom(int nr); SubMatrix right(int nc);  }
@Test public void testIsEmpty() { }