From 451a8eb09ae2bb2484ffc76da5854ea9983dd643 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Thu, 11 Feb 2010 21:00:33 +0000 Subject: 2010-02-11 Craig Howland * libm/common/s_ilogb.c: Adjust documentation to reflect new returns (see next items) and that ilogb() and ilogbf() are C99/POSIX. * libm/common/s_ilogb.c (ilogb): Use C99/POSIX FP_ILOGB0 and FP_ILOGBNAN returns for 0 and NAN arguments, respectively, instead of the prior -INT_MAX and INT_MAX. The FP_ILOGBx defines in math.h presently match the prior hard-codes, so no functional change is actually introduced. (Not at this time, nor planned, but the values are permitted to be different, so subsequent edits of math.h could possibly cause a functional change.) * libm/common/sf_ilogb.c (ilogbf): Ditto. --- newlib/libm/common/sf_ilogb.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'newlib/libm/common/sf_ilogb.c') 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 +#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; } -- cgit v1.2.3