summaryrefslogtreecommitdiff
path: root/src/ipa/libipa
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-11-16 21:02:52 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-11-26 19:05:19 +0200
commitf0d73c8758cf5def353489dfcab0cb4a157be667 (patch)
tree5a452ad06f4fa013ac2d743057ba50048406c228 /src/ipa/libipa
parent49e961ca3598922f62ec9381dc1d742b4c1c0b31 (diff)
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 <laurent.pinchart@ideasonboard.com> Reviewed-by: Milan Zamazal <mzamazal@redhat.com>
Diffstat (limited to 'src/ipa/libipa')
-rw-r--r--src/ipa/libipa/vector.cpp54
-rw-r--r--src/ipa/libipa/vector.h32
2 files changed, 67 insertions, 19 deletions
diff --git a/src/ipa/libipa/vector.cpp b/src/ipa/libipa/vector.cpp
index d3d7c7ca..f86603e2 100644
--- a/src/ipa/libipa/vector.cpp
+++ b/src/ipa/libipa/vector.cpp
@@ -65,31 +65,59 @@ namespace ipa {
*/
/**
+ * \fn Vector::operator+(Vector const &other) const
+ * \brief Calculate the sum of this vector and \a other element-wise
+ * \param[in] other The other vector
+ * \return The element-wise sum of this vector and \a other
+ */
+
+/**
+ * \fn Vector::operator+(T scalar) const
+ * \brief Calculate the sum of this vector and \a scalar element-wise
+ * \param[in] scalar The scalar
+ * \return The element-wise sum of this vector and \a other
+ */
+
+/**
* \fn Vector::operator-(Vector const &other) const
- * \brief Subtract one vector from another
+ * \brief Calculate the difference of this vector and \a other element-wise
* \param[in] other The other vector
- * \return The difference of \a other from this vector
+ * \return The element-wise subtraction of \a other from this vector
*/
/**
- * \fn Vector::operator+()
- * \brief Add two vectors together
+ * \fn Vector::operator-(T scalar) const
+ * \brief Calculate the difference of this vector and \a scalar element-wise
+ * \param[in] scalar The scalar
+ * \return The element-wise subtraction of \a scalar from this vector
+ */
+
+/**
+ * \fn Vector::operator*(const Vector &other) const
+ * \brief Calculate the product of this vector and \a other element-wise
* \param[in] other The other vector
- * \return The sum of the two vectors
+ * \return The element-wise product of this vector and \a other
*/
/**
- * \fn Vector::operator*(T factor) const
- * \brief Multiply the vector by a scalar
- * \param[in] factor The factor
- * \return The vector multiplied by \a factor
+ * \fn Vector::operator*(T scalar) const
+ * \brief Calculate the product of this vector and \a scalar element-wise
+ * \param[in] scalar The scalar
+ * \return The element-wise product of this vector and \a scalar
+ */
+
+/**
+ * \fn Vector::operator/(const Vector &other) const
+ * \brief Calculate the quotient of this vector and \a other element-wise
+ * \param[in] other The other vector
+ * \return The element-wise division of this vector by \a other
*/
/**
- * \fn Vector::operator/()
- * \brief Divide the vector by a scalar
- * \param[in] factor The factor
- * \return The vector divided by \a factor
+ * \fn Vector::operator/(T scalar) const
+ * \brief Calculate the quotient of this vector and \a scalar element-wise
+ * \param[in] scalar The scalar
+ * \return The element-wise division of this vector by \a scalar
*/
/**
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<T, Rows> &other) const