diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/codec/c++/math.hpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/modules/codec/c++/math.hpp b/modules/codec/c++/math.hpp index 090005c..095c8ca 100644 --- a/modules/codec/c++/math.hpp +++ b/modules/codec/c++/math.hpp @@ -5,13 +5,13 @@ namespace saw { namespace math { /* -template<typename T, typename Encoding = encode::Native> +template<typename T, typename Encoding = FORSTIO_DEFAULT_DATA_ENCODING> data<typename T::InnerType,Encoding> norm_2(const data<T,Encoding>& d){ return {}; } */ -template<typename T, uint64_t D, typename Encoding = encode::Native> +template<typename T, uint64_t D, typename Encoding = FORSTIO_DEFAULT_DATA_ENCODING> data<schema::Scalar<T>, Encoding> dot(const data<schema::Vector<T,D>, Encoding>& left, const data<schema::Vector<T,D>, Encoding>& right){ data<schema::Scalar<T>,Encoding> val; auto& inner = val({}); @@ -22,14 +22,14 @@ data<schema::Scalar<T>, Encoding> dot(const data<schema::Vector<T,D>, Encoding>& return val; } -template<typename T,typename Encoding = encode::Native> +template<typename T,typename Encoding = FORSTIO_DEFAULT_DATA_ENCODING> data<schema::Scalar<T>,Encoding> sqrt(const data<schema::Scalar<T>,Encoding>& inp){ data<schema::Scalar<T>,Encoding> out; out.at({}).set(std::sqrt(inp.at({}).get())); return out; } -template<typename T, uint64_t D, typename Encoding = encode::Native> +template<typename T, uint64_t D, typename Encoding = FORSTIO_DEFAULT_DATA_ENCODING> data<schema::Vector<T,D>, Encoding> normalize(const data<schema::Vector<T,D>>& input ) { auto inp_dot = dot<T,D,Encoding>(input,input); if(inp_dot.at({}).get() <= 0){ @@ -43,5 +43,15 @@ data<schema::Vector<T,D>, Encoding> normalize(const data<schema::Vector<T,D>>& i } return out; } + +template<typename T, uint64_t D, typename Encoding = FORSTIO_DEFAULT_DATA_ENCODING> +data<schema::Vector<T,D>, Encoding> vectorize_data(const data<schema::FixedArray<T,D>>& dat){ + data<schema::Vector<T,D>,Encoding> vec_data; + for(uint64_t i{0u}; i < D; ++i){ + vec_data.at({{i}}) = dat.at({{i}}); + } + + return vec_data; +} } } |
