summaryrefslogtreecommitdiff
path: root/src/math/nearbyintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/math/nearbyintf.c')
-rw-r--r--src/math/nearbyintf.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/math/nearbyintf.c b/src/math/nearbyintf.c
index 07df8f54..39c3d73b 100644
--- a/src/math/nearbyintf.c
+++ b/src/math/nearbyintf.c
@@ -1,11 +1,17 @@
#include <fenv.h>
#include <math.h>
-float nearbyintf(float x) {
- fenv_t e;
+float nearbyintf(float x)
+{
+#ifdef FE_INEXACT
+ int e;
- fegetenv(&e);
+ e = fetestexcept(FE_INEXACT);
+#endif
x = rintf(x);
- fesetenv(&e);
+#ifdef FE_INEXACT
+ if (!e)
+ feclearexcept(FE_INEXACT);
+#endif
return x;
}