commit 8104f2f4fb7f88bc1428effe87639e0a03c89e05 parent 2568a72c62405e5f093ac7d243fa38332b47f37f Author: d.levin256@gmail.com <d.levin256@gmail.com> Date: Wed, 27 Jul 2016 19:57:52 +0300 Return infinity if available for min/max Diffstat:
M | include/kfr/base/min_max.hpp | | | 9 | ++++++--- |
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/include/kfr/base/min_max.hpp b/include/kfr/base/min_max.hpp @@ -121,17 +121,20 @@ KFR_SINTRIN vec<T, N> max(vec<T, N> x, vec<T, N> y) template <typename T> KFR_SINTRIN T min(initialvalue<T>) { - return std::numeric_limits<T>::max(); + return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() + : std::numeric_limits<T>::max(); } template <typename T> KFR_SINTRIN T max(initialvalue<T>) { - return std::numeric_limits<T>::min(); + return std::numeric_limits<T>::has_infinity ? -std::numeric_limits<T>::infinity() + : std::numeric_limits<T>::min(); } template <typename T> KFR_SINTRIN T absmin(initialvalue<T>) { - return std::numeric_limits<T>::max(); + return std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() + : std::numeric_limits<T>::max(); } template <typename T> KFR_SINTRIN T absmax(initialvalue<T>)