summaryrefslogtreecommitdiff
path: root/modules/codec/c++/data_math.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/codec/c++/data_math.hpp')
-rw-r--r--modules/codec/c++/data_math.hpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/modules/codec/c++/data_math.hpp b/modules/codec/c++/data_math.hpp
index f423fcb..86336ad 100644
--- a/modules/codec/c++/data_math.hpp
+++ b/modules/codec/c++/data_math.hpp
@@ -99,7 +99,7 @@ public:
return values_.at(index);
}
- data<schema::Tensor<Inner, Dims...>, encode::Native> operator+(const data<schema::Tensor<Inner, Dims...>, encode::Native>& rhs) {
+ data<schema::Tensor<Inner, Dims...>, encode::Native> operator+(const data<schema::Tensor<Inner, Dims...>, encode::Native>& rhs) const {
data<schema::Tensor<Inner, Dims...>, encode::Native> c;
rank_iterator<Dims...>::in_fixed_bounds([&](const data<schema::FixedArray<schema::UInt64, sizeof...(Dims)>, encode::Native>& index) -> error_or<void>{
@@ -110,7 +110,7 @@ public:
return c;
}
- data<schema::Tensor<Inner, Dims...>, encode::Native> operator-(const data<schema::Tensor<Inner, Dims...>, encode::Native>& rhs) {
+ data<schema::Tensor<Inner, Dims...>, encode::Native> operator-(const data<schema::Tensor<Inner, Dims...>, encode::Native>& rhs) const {
data<schema::Tensor<Inner, Dims...>, encode::Native> c;
rank_iterator<Dims...>::in_fixed_bounds([&](const data<schema::FixedArray<schema::UInt64, sizeof...(Dims)>, encode::Native>& index) -> error_or<void>{
@@ -131,6 +131,28 @@ public:
return native_change;
}
+
+ data<schema::Tensor<Inner,Dims...>, encode::Native> operator*(const data<schema::Scalar<Inner>, encode::Native>& scal) const {
+ data<schema::Tensor<Inner, Dims...>, encode::Native> c;
+
+ rank_iterator<Dims...>::in_fixed_bounds([&](const data<schema::FixedArray<schema::UInt64, sizeof...(Dims)>, encode::Native>& index) -> error_or<void>{
+ c.at(index) = at(index) * scal.at({});
+ return make_void();
+ });
+
+ return c;
+ }
+
+ data<schema::Tensor<Inner,Dims...>, encode::Native> operator/(const data<schema::Scalar<Inner>, encode::Native>& scal) const {
+ data<schema::Tensor<Inner, Dims...>, encode::Native> c;
+
+ rank_iterator<Dims...>::in_fixed_bounds([&](const data<schema::FixedArray<schema::UInt64, sizeof...(Dims)>, encode::Native>& index) -> error_or<void>{
+ c.at(index) = at(index) / scal.at({});
+ return make_void();
+ });
+
+ return c;
+ }
};
}