Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libm/common/sf_ilogb.c')
-rw-r--r--newlib/libm/common/sf_ilogb.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/newlib/libm/common/sf_ilogb.c b/newlib/libm/common/sf_ilogb.c
index ec59406e1..28191c2c6 100644
--- a/newlib/libm/common/sf_ilogb.c
+++ b/newlib/libm/common/sf_ilogb.c
@@ -13,8 +13,8 @@
* ====================================================
*/
-#include "fdlibm.h"
#include <limits.h>
+#include "fdlibm.h"
#ifdef __STDC__
int ilogbf(float x)
@@ -28,11 +28,14 @@
GET_FLOAT_WORD(hx,x);
hx &= 0x7fffffff;
if(FLT_UWORD_IS_ZERO(hx))
- return - INT_MAX; /* ilogb(0) = 0x80000001 */
+ return FP_ILOGB0; /* ilogb(0) = special case error */
if(FLT_UWORD_IS_SUBNORMAL(hx)) {
for (ix = -126,hx<<=8; hx>0; hx<<=1) ix -=1;
return ix;
}
+ #if FP_ILOGBNAN != INT_MAX
+ else if (FLT_UWORD_IS_NAN(hx)) return FP_ILOGBNAN; /* NAN */
+ #endif
else if (!FLT_UWORD_IS_FINITE(hx)) return INT_MAX;
else return (hx>>23)-127;
}