From 0b7e825484ab59e61a98b0c724c7f11347b5d5de Mon Sep 17 00:00:00 2001 From: Biljana Bojovic Date: Fri, 24 Mar 2023 18:29:26 +0100 Subject: [PATCH] core: Fix MatrixArray multiplication (use the correct matrix offset for lhs and rhs matrices) --- src/core/model/matrix-array.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/model/matrix-array.cc b/src/core/model/matrix-array.cc index affa42e6a..7ac670ae7 100644 --- a/src/core/model/matrix-array.cc +++ b/src/core/model/matrix-array.cc @@ -108,14 +108,16 @@ MatrixArray::operator*(const MatrixArray& rhs) const #else // Eigen not found or Eigen optimizations not enabled size_t matrixOffset = page * m_numRows * m_numCols; + size_t rhsMatrixOffset = page * rhs.m_numRows * rhs.m_numCols; for (uint16_t i = 0; i < res.m_numRows; ++i) { for (uint16_t j = 0; j < res.m_numCols; ++j) { - res(i, j, page) = - (m_values[std::slice(matrixOffset + i, m_numCols, m_numRows)] * - rhs.m_values[std::slice(matrixOffset + j * rhs.m_numRows, rhs.m_numRows, 1)]) - .sum(); + res(i, j, page) = (m_values[std::slice(matrixOffset + i, m_numCols, m_numRows)] * + rhs.m_values[std::slice(rhsMatrixOffset + j * rhs.m_numRows, + rhs.m_numRows, + 1)]) + .sum(); } }