diff --git a/test/redux.cpp b/test/redux.cpp index 2dc4dcc45..104cd4cdd 100644 --- a/test/redux.cpp +++ b/test/redux.cpp @@ -52,6 +52,17 @@ template void matrixRedux(const MatrixType& m) VERIFY_IS_APPROX(m1.prod(), p); VERIFY_IS_APPROX(m1.real().minCoeff(), ei_real(minc)); VERIFY_IS_APPROX(m1.real().maxCoeff(), ei_real(maxc)); + + // test sclice vectorization assuming assign is ok + int r0 = ei_random(0,rows-1); + int c0 = ei_random(0,cols-1); + int r1 = ei_random(r0+1,rows)-r0; + int c1 = ei_random(c0+1,cols)-c0; + VERIFY_IS_APPROX(m1.block(r0,c0,r1,c1).sum(), m1.block(r0,c0,r1,c1).eval().sum()); + VERIFY_IS_APPROX(m1.block(r0,c0,r1,c1).mean(), m1.block(r0,c0,r1,c1).eval().mean()); + VERIFY_IS_APPROX(m1.block(r0,c0,r1,c1).prod(), m1.block(r0,c0,r1,c1).eval().prod()); + VERIFY_IS_APPROX(m1.block(r0,c0,r1,c1).real().minCoeff(), m1.block(r0,c0,r1,c1).real().eval().minCoeff()); + VERIFY_IS_APPROX(m1.block(r0,c0,r1,c1).real().maxCoeff(), m1.block(r0,c0,r1,c1).real().eval().maxCoeff()); } template void vectorRedux(const VectorType& w)