diff options
author | Erik Schnetter <schnetter@gmail.com> | 2013-07-04 15:34:24 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2013-07-04 15:34:24 -0400 |
commit | 5941fd3d7816669eee6dd078a3f8711f7e691d47 (patch) | |
tree | d704d8e756dae6c016e73c3b9543fe903690fc31 /vec_pseudo.h | |
parent | 8d00c5fb205e9df9c8899910ab4528bbbd2f2d4d (diff) | |
download | vecmathlib-5941fd3d7816669eee6dd078a3f8711f7e691d47.zip vecmathlib-5941fd3d7816669eee6dd078a3f8711f7e691d47.tar.gz |
Implement maxval and minval reduction operations
Diffstat (limited to 'vec_pseudo.h')
-rw-r--r-- | vec_pseudo.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/vec_pseudo.h b/vec_pseudo.h index b8aa808..0ee5a60 100644 --- a/vec_pseudo.h +++ b/vec_pseudo.h @@ -656,6 +656,18 @@ namespace vecmathlib { return res /= x; } + real_t maxval() const + { + real_t res = v[0]; + for (int d=1; d<size; ++d) res = std::fmax(res, v[d]); + return res; + } + real_t minval() const + { + real_t res = v[0]; + for (int d=1; d<size; ++d) res = std::fmin(res, v[d]); + return res; + } real_t prod() const { real_t res = R(1.0); @@ -1072,6 +1084,18 @@ namespace vecmathlib { } template<typename real_t, int size> + inline real_t maxval(realpseudovec<real_t, size> x) + { + return x.maxval(); + } + + template<typename real_t, int size> + inline real_t minval(realpseudovec<real_t, size> x) + { + return x.minval(); + } + + template<typename real_t, int size> inline real_t prod(realpseudovec<real_t, size> x) { return x.prod(); |