projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
more cleanup of dynamic linker internals
[musl]
/
src
/
math
/
nearbyint.c
diff --git
a/src/math/nearbyint.c
b/src/math/nearbyint.c
index
714c55c
..
7a4c58c
100644
(file)
--- a/
src/math/nearbyint.c
+++ b/
src/math/nearbyint.c
@@
-1,20
+1,19
@@
#include <fenv.h>
#include <math.h>
#include <fenv.h>
#include <math.h>
-/*
-rint may raise inexact (and it should not alter the fenv otherwise)
-nearbyint must not raise inexact
+/* nearbyint is the same as rint, but it must not raise the inexact exception */
-(according to ieee754r section 7.9 both functions should raise invalid
-when the input is signaling nan, but c99 does not define snan so saving
-and restoring the entire fenv should be fine)
-*/
+double nearbyint(double x)
+{
+#ifdef FE_INEXACT
+ int e;
-double nearbyint(double x) {
- fenv_t e;
-
- fegetenv(&e);
+ e = fetestexcept(FE_INEXACT);
+#endif
x = rint(x);
x = rint(x);
- fesetenv(&e);
+#ifdef FE_INEXACT
+ if (!e)
+ feclearexcept(FE_INEXACT);
+#endif
return x;
}
return x;
}