From 2554a83890a5e4c1aed56f1812ccfab281cae0b5 Mon Sep 17 00:00:00 2001 From: Joel Falcou Date: Mon, 12 May 2025 14:51:20 +0200 Subject: [PATCH] More products --- src/matrix_impl64.cpp | 44 ++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/matrix_impl64.cpp b/src/matrix_impl64.cpp index 219b9f1..d5382a8 100644 --- a/src/matrix_impl64.cpp +++ b/src/matrix_impl64.cpp @@ -10,20 +10,20 @@ namespace rotgen { + //================================================================================================ + // Internal paylod + //================================================================================================ struct matrix_impl64::payload { Eigen::Matrix data; payload(std::size_t r=0, std::size_t c=0) : data(r, c) {} }; - std::ostream& operator<<(std::ostream& os,matrix_impl64 const& m) - { - return os << m.storage_->data; - } - matrix_impl64::matrix_impl64(std::size_t r, std::size_t c) - : storage_(std::make_unique(r,c)) - {} + //================================================================================================== + // Constructors & Special Members + //================================================================================================== + matrix_impl64::matrix_impl64(std::size_t r, std::size_t c) : storage_(std::make_unique(r,c)) {} matrix_impl64::matrix_impl64(matrix_impl64 const& o) : matrix_impl64(o.storage_->data.rows(),o.storage_->data.cols()) @@ -42,24 +42,26 @@ namespace rotgen matrix_impl64::~matrix_impl64() = default; - std::size_t matrix_impl64::rows() const + //================================================================================================== + // Matrix API + //================================================================================================== + std::size_t matrix_impl64::rows() const { return static_cast(storage_->data.rows()); } + std::size_t matrix_impl64::cols() const { return static_cast(storage_->data.cols()); } + + double& matrix_impl64::operator()(std::size_t i, std::size_t j) { return storage_->data(i,j); } + double const& matrix_impl64::operator()(std::size_t i, std::size_t j) const { return storage_->data(i,j); } + + //================================================================================================== + // Operators + //================================================================================================== + std::ostream& operator<<(std::ostream& os,matrix_impl64 const& m) { - return static_cast(storage_->data.rows()); + return os << m.storage_->data; } - std::size_t matrix_impl64::cols() const + bool operator==(matrix_impl64 const& lhs, matrix_impl64 const& rhs) { - return static_cast(storage_->data.cols()); - } - - double& matrix_impl64::operator()(std::size_t i, std::size_t j) - { - return storage_->data(i,j); - } - - double const& matrix_impl64::operator()(std::size_t i, std::size_t j) const - { - return storage_->data(i,j); + return lhs.storage_->data == rhs.storage_->data; } matrix_impl64& matrix_impl64::operator+=(matrix_impl64 const& rhs)