summaryrefslogtreecommitdiffstats
path: root/vec_pseudo.h
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-07-04 15:34:24 -0400
committerErik Schnetter <schnetter@gmail.com>2013-07-04 15:34:24 -0400
commit5941fd3d7816669eee6dd078a3f8711f7e691d47 (patch)
treed704d8e756dae6c016e73c3b9543fe903690fc31 /vec_pseudo.h
parent8d00c5fb205e9df9c8899910ab4528bbbd2f2d4d (diff)
downloadvecmathlib-5941fd3d7816669eee6dd078a3f8711f7e691d47.zip
vecmathlib-5941fd3d7816669eee6dd078a3f8711f7e691d47.tar.gz
Implement maxval and minval reduction operations
Diffstat (limited to 'vec_pseudo.h')
-rw-r--r--vec_pseudo.h24
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();
OpenPOWER on IntegriCloud