From ea0d5dc956c1268dd91ce636d8fd5e07225acb06 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 10 Sep 2019 16:25:24 +0200 Subject: bug #1741: fix C.noalias() = A*C; with C.innerStride()!=1 --- test/product.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'test/product.h') diff --git a/test/product.h b/test/product.h index d26e8063d..c6c78fbd8 100644 --- a/test/product.h +++ b/test/product.h @@ -241,4 +241,19 @@ template void product(const MatrixType& m) VERIFY_IS_APPROX(square * (square*square).conjugate(), square * square.conjugate() * square.conjugate()); } + // destination with a non-default inner-stride + // see bug 1741 + if(!MatrixType::IsRowMajor) + { + typedef Matrix MatrixX; + MatrixX buffer(2*rows,2*rows); + Map > map1(buffer.data(),rows,rows,Stride(2*rows,2)); + buffer.setZero(); + VERIFY_IS_APPROX(map1 = m1 * m2.transpose(), (m1 * m2.transpose()).eval()); + buffer.setZero(); + VERIFY_IS_APPROX(map1.noalias() = m1 * m2.transpose(), (m1 * m2.transpose()).eval()); + buffer.setZero(); + VERIFY_IS_APPROX(map1.noalias() += m1 * m2.transpose(), (m1 * m2.transpose()).eval()); + } + } -- cgit v1.2.3