class SubMatrix implements Cloneable {

    public void difference(final SubMatrix ls, final SubMatrix rs) {
        // if (m_nrows != ls.m_nrows || m_ncols != ls.m_ncols || m_nrows !=
        // rs.m_nrows || m_ncols != rs.m_ncols)
        // throw new MatrixException(MatrixException.IncompatibleDimensions);
        DataBlockIterator iter, liter, riter;
        if (ls.m_row_inc == 1 && rs.m_row_inc == 1 && m_row_inc == 1) {
            iter = columns();
            liter = ls.columns();
            riter = rs.columns();
        } else {
            iter = rows();
            liter = ls.rows();
            riter = rs.rows();
        }

        DataBlock icur = iter.getData(), lcur = liter.getData(), rcur = riter.getData();
        do {
            icur.difference(lcur, rcur);
        } while (iter.next() && liter.next() && riter.next());
    }

    public  SubMatrix(final double[] data, final int nrows, final int ncols);
    public  SubMatrix(final double[] data, final int start, final int nrows,
            final int ncols, final int rowinc, final int colinc);
    public  SubMatrix(final SubMatrix m);

}