From fb161aa45a8110d18b08efa3175027b8fbac5463 Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 24 Mar 2017 10:38:11 +1100 Subject: lib/libm: Add implementation of nearbyintf, from musl-1.1.16. --- lib/libm/nearbyintf.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 lib/libm/nearbyintf.c (limited to 'lib/libm') diff --git a/lib/libm/nearbyintf.c b/lib/libm/nearbyintf.c new file mode 100644 index 000000000..1c3545945 --- /dev/null +++ b/lib/libm/nearbyintf.c @@ -0,0 +1,21 @@ +// adapted from the rintf() function from musl-1.1.16 + +#include "libm.h" + +float nearbyintf(float x) +{ + union {float f; uint32_t i;} u = {x}; + int e = u.i>>23 & 0xff; + int s = u.i>>31; + float_t y; + + if (e >= 0x7f+23) + return x; + if (s) + y = x - 0x1p23f + 0x1p23f; + else + y = x + 0x1p23f - 0x1p23f; + if (y == 0) + return s ? -0.0f : 0.0f; + return y; +} -- cgit v1.2.3 From b53a63517a71278d0f73f98f4f5ce1b15b14370e Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 31 May 2017 11:34:29 +1000 Subject: lib/libm: Use isfinite instead of finitef, for C99 compatibility. --- lib/libm/sf_ldexp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/libm') diff --git a/lib/libm/sf_ldexp.c b/lib/libm/sf_ldexp.c index 32a134eea..a0941df9f 100644 --- a/lib/libm/sf_ldexp.c +++ b/lib/libm/sf_ldexp.c @@ -32,7 +32,7 @@ float value; int exp; #endif { - if(!finitef(value)||value==(float)0.0) return value; + if(!isfinite(value)||value==(float)0.0) return value; value = scalbnf(value,exp); //if(!finitef(value)||value==(float)0.0) errno = ERANGE; return value; -- cgit v1.2.3