core: Fix MatrixArray multiplication (use the correct matrix offset for lhs and rhs matrices)

This commit is contained in:
Biljana Bojovic
2023-03-24 18:29:26 +01:00
committed by Biljana B
parent 32e495dcbd
commit 0b7e825484

View File

@@ -108,14 +108,16 @@ MatrixArray<T>::operator*(const MatrixArray<T>& 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();
}
}