Index: fusl/src/math/nearbyintl.c |
diff --git a/fusl/src/math/nearbyintl.c b/fusl/src/math/nearbyintl.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..82852492f8108b875fa6c588af96aecf358475b9 |
--- /dev/null |
+++ b/fusl/src/math/nearbyintl.c |
@@ -0,0 +1,26 @@ |
+#include <math.h> |
+#include <float.h> |
+ |
+#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 |
+long double nearbyintl(long double x) |
+{ |
+ return nearbyint(x); |
+} |
+#else |
+#include <fenv.h> |
+long double nearbyintl(long double x) |
+{ |
+#ifdef FE_INEXACT |
+ #pragma STDC FENV_ACCESS ON |
+ int e; |
+ |
+ e = fetestexcept(FE_INEXACT); |
+#endif |
+ x = rintl(x); |
+#ifdef FE_INEXACT |
+ if (!e) |
+ feclearexcept(FE_INEXACT); |
+#endif |
+ return x; |
+} |
+#endif |