2#include <ossia/detail/config.hpp>
9OSSIA_INLINE
bool safe_isnan(
double val)
noexcept
11#if __FINITE_MATH_ONLY__
13 return std::isnan(val);
14#elif defined(__APPLE__)
16#elif defined(__EMSCRIPTEN__)
17 return __fpclassifyl(val) == FP_NAN;
27 return ((
unsigned)(num.bits >> 32) & 0x7fffffff) + ((unsigned)num.bits != 0)
31 return std::isnan(val);
35OSSIA_INLINE
bool safe_isfinite(
double val)
noexcept
37#if __FINITE_MATH_ONLY__
39 return std::isfinite(val);
40#elif defined(__APPLE__)
41 return __isfinited(val);
42#elif defined(__EMSCRIPTEN__)
43 const auto cls = __fpclassifyl(val);
44 return cls != FP_NAN && cls != FP_INFINITE;
56 return ((
unsigned)(num.bits >> 32) & 0x7ff00000) != 0x7ff00000;
59 return std::isfinite(val);
63OSSIA_INLINE
bool safe_isinf(
double val)
noexcept
65#if __FINITE_MATH_ONLY__
67 return std::isinf(val);
68#elif defined(__APPLE__)
70#elif defined(__EMSCRIPTEN__)
71 return __fpclassifyl(val) == FP_INFINITE;
81 return ((
unsigned)(num.bits >> 32) & 0x7fffffff) == 0x7ff00000
82 && (unsigned)num.bits == 0;
85 return std::isinf(val);