From 135c8751041961ef7f66502926d770b93539c252 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sat, 21 Mar 2026 14:45:57 +0100 Subject: iterators and fill ops --- modules/codec/c++/math.hpp | 20 ++++++++++++++++++++ modules/codec/tests/math.cpp | 13 +++++++++++++ 2 files changed, 33 insertions(+) (limited to 'modules') diff --git a/modules/codec/c++/math.hpp b/modules/codec/c++/math.hpp index d110b64..7524265 100644 --- a/modules/codec/c++/math.hpp +++ b/modules/codec/c++/math.hpp @@ -3,7 +3,16 @@ #include "data_math.hpp" namespace saw { +template +class iterator final { +public: + template data norm_2(const data& d){ @@ -149,5 +158,16 @@ data,Encoding> scale( } return sc_vec; } + +template +data, Encoding> fill( + const data& filler){ + data, Encoding> tbf; + + iterator::apply([&](const auto& index){ + tbf.at(index) = filler; + }, {}, {{Ds...}}); + return tbf; +} } } diff --git a/modules/codec/tests/math.cpp b/modules/codec/tests/math.cpp index 63b6d2b..5f4de92 100644 --- a/modules/codec/tests/math.cpp +++ b/modules/codec/tests/math.cpp @@ -28,6 +28,19 @@ SAW_TEST("Math/Tensor Construction"){ // data> b{{{1,3,5}}}; } +SAW_TEST("Math/Tensor Fill"){ + using namespace saw; + + auto tensor = math::fill({2.5}); + + bool cf{true}; + for(uint64_t i = 0u; i < 2u; ++i){ + for(uint64_t j = 0u; j < 2u; ++j){ + SAW_EXPECT((tensor.at({{i,j}}).get() == 2.5), "Wasn't filled with value 2.5"); + } + } +} + SAW_TEST("Math/Tensor"){ using namespace saw; -- cgit v1.2.3