template<typename MatrixType> void corners(const MatrixType& m) { typedef typename MatrixType::Index Index; Index rows = m.rows(); Index cols = m.cols(); Index r = internal::random<Index>(1,rows); Index c = internal::random<Index>(1,cols); MatrixType matrix = MatrixType::Random(rows,cols); const MatrixType const_matrix = MatrixType::Random(rows,cols); COMPARE_CORNER(topLeftCorner(r,c), block(0,0,r,c)); COMPARE_CORNER(topRightCorner(r,c), block(0,cols-c,r,c)); COMPARE_CORNER(bottomLeftCorner(r,c), block(rows-r,0,r,c)); COMPARE_CORNER(bottomRightCorner(r,c), block(rows-r,cols-c,r,c)); Index sr = internal::random<Index>(1,rows) - 1; Index nr = internal::random<Index>(1,rows-sr); Index sc = internal::random<Index>(1,cols) - 1; Index nc = internal::random<Index>(1,cols-sc); COMPARE_CORNER(topRows(r), block(0,0,r,cols)); COMPARE_CORNER(middleRows(sr,nr), block(sr,0,nr,cols)); COMPARE_CORNER(bottomRows(r), block(rows-r,0,r,cols)); COMPARE_CORNER(leftCols(c), block(0,0,rows,c)); COMPARE_CORNER(middleCols(sc,nc), block(0,sc,rows,nc)); COMPARE_CORNER(rightCols(c), block(0,cols-c,rows,c)); }
BasicArray bottomRows(int n) { return middleRows(m_nRow - n, n); }
BasicArray topRows(int n) { return middleRows(0, n); }