@@ -1,6 +1,6 @@
#include <math.h>
-/* assumes LLONG_MAX > 2^53, see comments in lrint.c */
+/* uses LLONG_MAX > 2^53, see comments in lrint.c */
long long llrint(double x)
{
-/* assumes LLONG_MAX > 2^24, see comments in lrint.c */
+/* uses LLONG_MAX > 2^24, see comments in lrint.c */
long long llrintf(float x)
@@ -8,7 +8,7 @@ long long llrintl(long double x)
return llrint(x);
}
-#else
+#elif defined(FE_INEXACT)
/*
see comments in lrint.c
@@ -27,4 +27,9 @@ long long llrintl(long double x)
/* conversion */
return x;
+#else
+long long llrintl(long double x)
+{
+ return rintl(x);
+}
#endif
@@ -25,7 +25,7 @@ otherwise LONG_MAX and LONG_MIN can be represented exactly
as a double.
*/
-#if LONG_MAX < 1U<<53
+#if LONG_MAX < 1U<<53 && defined(FE_INEXACT)
long lrint(double x)
int e;
-/* assumes LONG_MAX > 2^24, see comments in lrint.c */
+/* uses LONG_MAX > 2^24, see comments in lrint.c */
long lrintf(float x)
@@ -8,7 +8,7 @@ long lrintl(long double x)
return lrint(x);
@@ -27,4 +27,9 @@ long lrintl(long double x)
+long lrintl(long double x)