summaryrefslogtreecommitdiffhomepage
path: root/options/value-traits.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'options/value-traits.hpp')
-rw-r--r--options/value-traits.hpp21
1 files changed, 4 insertions, 17 deletions
diff --git a/options/value-traits.hpp b/options/value-traits.hpp
index f5b74f73..765740f6 100644
--- a/options/value-traits.hpp
+++ b/options/value-traits.hpp
@@ -79,26 +79,13 @@ struct value_traits : default_value_traits<t> {};
template<>
struct value_traits<double> : default_value_traits<double>
{
- static bool is_equal(value_type x, value_type y)
- {
- if (x == y)
- return true;
- else
- {
- using I = std::int64_t;
- constexpr int K = 1000;
-
- value_type x_, y_;
-
- return I(std::modf(x, &x_) * K) == I(std::modf(y, &y_) * K) &&
- I(x_) == I(y_);
- }
- }
+ static bool is_equal(value_type x, value_type y) { return std::fabs(x - y) < 1e-6; }
};
-template<> struct value_traits<float> : value_traits<float, double>
+template<>
+struct value_traits<float> : default_value_traits<float>
{
- static constexpr inline value_type pass_value(const value_type& x) { return x; }
+ static bool is_equal(value_type x, value_type y) { return std::fabs(x - y) < 1e-6f; }
};
template<>