From f0d73c8758cf5def353489dfcab0cb4a157be667 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 16 Nov 2024 21:02:52 +0200 Subject: ipa: libipa: vector: Add missing binary arithemtic operators The Vector class defines multiple element-wise arithmetic operators between vectors or between a vector and a scalar. A few variants are missing. Add them. Signed-off-by: Laurent Pinchart Reviewed-by: Milan Zamazal --- src/ipa/libipa/vector.h | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'src/ipa/libipa/vector.h') diff --git a/src/ipa/libipa/vector.h b/src/ipa/libipa/vector.h index 5545da12..15a60951 100644 --- a/src/ipa/libipa/vector.h +++ b/src/ipa/libipa/vector.h @@ -68,24 +68,44 @@ public: return ret; } + constexpr Vector operator+(const Vector &other) const + { + return apply(*this, other, std::plus<>{}); + } + + constexpr Vector operator+(T scalar) const + { + return apply(*this, scalar, std::plus<>{}); + } + constexpr Vector operator-(const Vector &other) const { return apply(*this, other, std::minus<>{}); } - constexpr Vector operator+(const Vector &other) const + constexpr Vector operator-(T scalar) const { - return apply(*this, other, std::plus<>{}); + return apply(*this, scalar, std::minus<>{}); + } + + constexpr Vector operator*(const Vector &other) const + { + return apply(*this, other, std::multiplies<>{}); + } + + constexpr Vector operator*(T scalar) const + { + return apply(*this, scalar, std::multiplies<>{}); } - constexpr Vector operator*(T factor) const + constexpr Vector operator/(const Vector &other) const { - return apply(*this, factor, std::multiplies<>{}); + return apply(*this, other, std::divides<>{}); } - constexpr Vector operator/(T factor) const + constexpr Vector operator/(T scalar) const { - return apply(*this, factor, std::divides<>{}); + return apply(*this, scalar, std::divides<>{}); } constexpr T dot(const Vector &other) const -- cgit v1.2.1