Skip to content
Snippets Groups Projects

Feature/algebra

9 files
+ 635
31
Compare changes
  • Side-by-side
  • Inline

Files

+ 9
2
@@ -38,7 +38,7 @@ class [[nodiscard]] SmallMatrix // LCOV_EXCL_LINE
friend PUGS_INLINE SmallMatrix<std::remove_const_t<DataType>> copy(const SmallMatrix& A) noexcept
{
return {A.m_nb_rows, A.m_nb_columns, copy(A.m_values)};
return SmallMatrix<std::remove_const_t<DataType>>{A.m_nb_rows, A.m_nb_columns, copy(A.m_values)};
}
friend PUGS_INLINE SmallMatrix<std::remove_const_t<DataType>> transpose(const SmallMatrix& A)
@@ -130,7 +130,8 @@ class [[nodiscard]] SmallMatrix // LCOV_EXCL_LINE
{
static_assert(std::is_same_v<std::remove_const_t<DataType>, std::remove_const_t<DataType2>>,
"incompatible data types");
Assert((m_nb_rows == B.numberOfRows()) and (m_nb_columns == B.numberOfColumns()), "incompatible matrix sizes");
Assert((m_nb_rows == B.numberOfRows()) and (m_nb_columns == B.numberOfColumns()),
"cannot add matrix: incompatible sizes");
parallel_for(
m_values.size(), PUGS_LAMBDA(index_type i) { m_values[i] += B.m_values[i]; });
@@ -260,6 +261,12 @@ class [[nodiscard]] SmallMatrix // LCOV_EXCL_LINE
SmallMatrix(SmallMatrix &&) = default;
explicit SmallMatrix(size_t nb_rows, size_t nb_columns, const SmallArray<DataType>& values)
: m_nb_rows{nb_rows}, m_nb_columns{nb_columns}, m_values{values}
{
Assert(m_values.size() == m_nb_columns * m_nb_rows, "incompatible array size and matrix dimensions")
}
explicit SmallMatrix(size_t nb_rows, size_t nb_columns) noexcept
: m_nb_rows{nb_rows}, m_nb_columns{nb_columns}, m_values{nb_rows * nb_columns}
{}
Loading