From 1f869252379fdc4efdd2e81764edbff5b00b135c Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Mon, 15 Aug 2016 18:45:25 +1000 Subject: [PATCH] matrix: add elementwise sum function overload --- matrix.hpp | 5 +++++ matrix.ipp | 7 +++++++ test/matrix.cpp | 2 ++ 3 files changed, 14 insertions(+) diff --git a/matrix.hpp b/matrix.hpp index 09ffd8e1..1bf977a6 100644 --- a/matrix.hpp +++ b/matrix.hpp @@ -103,6 +103,11 @@ namespace util { matrix abs (const matrix&); + template + constexpr + T + sum (const matrix&); + template using matrix3 = matrix<3,T>; template using matrix4 = matrix<4,T>; diff --git a/matrix.ipp b/matrix.ipp index 1bb1e829..770bdce6 100644 --- a/matrix.ipp +++ b/matrix.ipp @@ -118,3 +118,10 @@ util::abs (const util::matrix &src) /////////////////////////////////////////////////////////////////////////////// +template +constexpr +T +util::sum (const util::matrix &src) +{ + return sum (std::cbegin (src), std::cend (src)); +} diff --git a/test/matrix.cpp b/test/matrix.cpp index a12d6fe6..5f32fcfa 100644 --- a/test/matrix.cpp +++ b/test/matrix.cpp @@ -11,6 +11,8 @@ main (void) { util::TAP::logger tap; + tap.expect_eq (sum (util::matrix4f::IDENTITY), 4.f, "element summation"); + { // Identity matrix-vector multiplication auto v = util::vector4f { 1.f, 2.f, 3.f, 4.f };