make lrint and llrint functions work without fenv support
authornsz <nsz@port70.net>
Sun, 18 Mar 2012 19:40:43 +0000 (20:40 +0100)
committernsz <nsz@port70.net>
Sun, 18 Mar 2012 19:40:43 +0000 (20:40 +0100)
src/math/llrint.c
src/math/llrintf.c
src/math/llrintl.c
src/math/lrint.c
src/math/lrintf.c
src/math/lrintl.c

index ee783b8e403475075715bfbdf3ee514b51fb00cf..4f583ae5536aa6152c3bab8671846da507f8f57e 100644 (file)
@@ -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)
 {
index e41b6d41862304f09e6fe00c0cc788ade8940065..96949a006ea88146af15d967fc01f90431e34d19 100644 (file)
@@ -1,6 +1,6 @@
 #include <math.h>
 
-/* 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)
 {
index f1cc47ed453c82d07e40554f11b9f5cfea53b83b..32bb8b031be40c7c9a96fb643ad10eacaf473de7 100644 (file)
@@ -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
index feba28d072c153e50dac0fe207e833e2bc7361a4..67091835a6d5050719938a32748a3927e741a457 100644 (file)
@@ -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;
index 34d1081c0fbf1a1fe98cb94f158f7036d45605ec..ca0b6a46aaed3cf97d61724923593ea1b9d7aaf3 100644 (file)
@@ -1,6 +1,6 @@
 #include <math.h>
 
-/* assumes LONG_MAX > 2^24, see comments in lrint.c */
+/* uses LONG_MAX > 2^24, see comments in lrint.c */
 
 long lrintf(float x)
 {
index 0e579bc51c9a4066e7a0b197614c6f9ad6a458b2..5eb1ba7edbb24b241b0ee2aa432618f8c029a0d1 100644 (file)
@@ -8,7 +8,7 @@ long lrintl(long double x)
 {
        return lrint(x);
 }
-#else
+#elif defined(FE_INEXACT)
 /*
 see comments in lrint.c
 
@@ -27,4 +27,9 @@ long lrintl(long double x)
        /* conversion */
        return x;
 }
+#else
+long lrintl(long double x)
+{
+       return rintl(x);
+}
 #endif