|
|
|
@ -2,6 +2,7 @@
@@ -2,6 +2,7 @@
|
|
|
|
|
|
|
|
|
|
#include_next <fenv.h> |
|
|
|
|
|
|
|
|
|
#ifndef HAVE_FEENABLEEXCEPT |
|
|
|
|
#if defined(__APPLE__) && defined(__MACH__) |
|
|
|
|
|
|
|
|
|
// Public domain polyfill for feenableexcept on OS X
|
|
|
|
@ -45,4 +46,29 @@ inline int fedisableexcept(unsigned int excepts)
@@ -45,4 +46,29 @@ inline int fedisableexcept(unsigned int excepts)
|
|
|
|
|
return fesetenv(&fenv) ? -1 : old_excepts; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#else |
|
|
|
|
inline int feenableexcept(unsigned int excepts) |
|
|
|
|
{ |
|
|
|
|
#pragma STDC FENV_ACCESS ON |
|
|
|
|
fexcept_t flags; |
|
|
|
|
/* Save current exception flags. */ |
|
|
|
|
fegetexceptflag(&flags, FE_ALL_EXCEPT); |
|
|
|
|
|
|
|
|
|
feclearexcept(FE_ALL_EXCEPT); /* clear all fp exception conditions */ |
|
|
|
|
return fesetexceptflag(&flags, excepts) != 0 ? -1 : flags; /* set new flags */ |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline int fedisableexcept(unsigned int excepts) |
|
|
|
|
{ |
|
|
|
|
#pragma STDC FENV_ACCESS ON |
|
|
|
|
fexcept_t flags; |
|
|
|
|
/* Save current exception flags. */ |
|
|
|
|
fegetexceptflag(&flags, FE_ALL_EXCEPT); |
|
|
|
|
|
|
|
|
|
feclearexcept(FE_ALL_EXCEPT); /* clear all fp exception conditions */ |
|
|
|
|
return fesetexceptflag(&flags, ~excepts) != 0 ? -1 : flags; /* set new flags */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
|
#endif |
|
|
|
|