From ec5cab790eb93c48adc9dcd9a1fa0eeb0adb6253 Mon Sep 17 00:00:00 2001 From: Carl-Martin Pfeiler Date: Fri, 24 Jan 2025 14:20:46 +0100 Subject: [PATCH] mxp: Test .view(...).view(...) --- tests/test_mxp.cxx | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tests/test_mxp.cxx b/tests/test_mxp.cxx index 945cbeb4..d95e7696 100644 --- a/tests/test_mxp.cxx +++ b/tests/test_mxp.cxx @@ -742,6 +742,48 @@ TEST(mxp, view_slice_2D) } } +TEST(mxp, view_view_axaxaxpy) +{ + const int nx{3}; + const int ny{5}; + const float x_init{exp2f(-23)}; + const float y_init{1.f}; + const float a{1.f / 3.f}; + + EXPECT_NE(y_init, y_init + x_init); + + const std::vector x(nx, x_init); + /* */ std::vector y(ny, y_init); + + const auto gt_x = gt::adapt<1>(x.data(), x.size()); + /* */ auto gt_y = gt::adapt<1>(y.data(), y.size()); + + using gt::placeholders::_s; + + gt_y.view(_s(1, -1)).view(_s(1, -1)) = + gt_y.view(_s(1, -1)).view(_s(1, -1)) + a * gt_x.view(_s(1, -1)) + + a * gt_x.view(_s(1, -1)) + a * gt_x.view(_s(1, -1)); + + EXPECT_EQ(y[0], y_init); + EXPECT_EQ(y[1], y_init); + EXPECT_EQ(y[2], y_init); + EXPECT_EQ(y[3], y_init); + EXPECT_EQ(y[4], y_init); + + const auto mxp_x = mxp::adapt<1, double>(x.data(), x.size()); + /* */ auto mxp_y = mxp::adapt<1, double>(y.data(), y.size()); + + mxp_y.view(_s(1, -1)).view(_s(1, -1)) = + mxp_y.view(_s(1, -1)).view(_s(1, -1)) + a * mxp_x.view(_s(1, -1)) + + a * mxp_x.view(_s(1, -1)) + a * mxp_x.view(_s(1, -1)); + + EXPECT_EQ(y[0], y_init); + EXPECT_EQ(y[1], y_init); + EXPECT_EQ(y[2], y_init + x_init); + EXPECT_EQ(y[3], y_init); + EXPECT_EQ(y[4], y_init); +} + TEST(mxp, view_complex_axaxaxpy) { using complex32_t = gt::complex;