diff --git a/src/core.h b/src/core.h index cc592461..29c47061 100644 --- a/src/core.h +++ b/src/core.h @@ -45,6 +45,21 @@ # define FP_USE(x) (void)(x) #endif +/* Ensure isnan() is present even on systems that don't define it, or + * when -ffast-math is being used. */ +#if defined __FAST_MATH__ +# undef isnan +#endif +#if !defined isnan +# define isnan isnan +# include +static inline int isnan(float f) +{ + union { float f; uint32_t x; } u = { f }; + return (u.x << 1) > 0xff000000u; +} +#endif + // Base types #include "trig.h" #include "half.h" diff --git a/test/half.cpp b/test/half.cpp index 8740857a..cf88ad36 100644 --- a/test/half.cpp +++ b/test/half.cpp @@ -17,19 +17,6 @@ #include "core.h" #include "lol/unit.h" -/* Ensure isnan() is present even on systems that don't define it, or - * when -ffast-math is being used. */ -#if defined __FAST_MATH__ -# undef isnan -#endif -#if !defined isnan -static inline int isnan(float f) -{ - union { float f; uint32_t x; } u = { f }; - return (u.x << 1) > 0xff000000u; -} -#endif - namespace lol {