summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/codec/c++/math.hpp18
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;
+}
}
}