From: nsz Date: Sun, 18 Mar 2012 19:40:43 +0000 (+0100) Subject: make lrint and llrint functions work without fenv support X-Git-Tag: v0.8.8~107 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=65db00983f3fa5449f20f2694477f9d5116f6ea5;p=oweals%2Fmusl.git make lrint and llrint functions work without fenv support --- diff --git a/src/math/llrint.c b/src/math/llrint.c index ee783b8e..4f583ae5 100644 --- a/src/math/llrint.c +++ b/src/math/llrint.c @@ -1,6 +1,6 @@ #include -/* 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) { diff --git a/src/math/llrintf.c b/src/math/llrintf.c index e41b6d41..96949a00 100644 --- a/src/math/llrintf.c +++ b/src/math/llrintf.c @@ -1,6 +1,6 @@ #include -/* 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) { diff --git a/src/math/llrintl.c b/src/math/llrintl.c index f1cc47ed..32bb8b03 100644 --- a/src/math/llrintl.c +++ b/src/math/llrintl.c @@ -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 diff --git a/src/math/lrint.c b/src/math/lrint.c index feba28d0..67091835 100644 --- a/src/math/lrint.c +++ b/src/math/lrint.c @@ -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; diff --git a/src/math/lrintf.c b/src/math/lrintf.c index 34d1081c..ca0b6a46 100644 --- a/src/math/lrintf.c +++ b/src/math/lrintf.c @@ -1,6 +1,6 @@ #include -/* assumes LONG_MAX > 2^24, see comments in lrint.c */ +/* uses LONG_MAX > 2^24, see comments in lrint.c */ long lrintf(float x) { diff --git a/src/math/lrintl.c b/src/math/lrintl.c index 0e579bc5..5eb1ba7e 100644 --- a/src/math/lrintl.c +++ b/src/math/lrintl.c @@ -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