ILOGB(3) BSD Programmer's Manual ILOGB(3)

**ilogb**, **ilogbf** - an unbiased exponent

libm

**#include <math.h>**
*int*
**ilogb**(*double x*);
*int*
**ilogbf**(*float x*);

The **ilogb**() and **ilogbf**() functions return the exponent of the non-zero
real floating-point number *x* as a signed integer value. Formally the re-
turn value is the integral part of
log_r | *x* ,
where *r* is the radix of the machine's floating-point arithmetic defined
by the FLT_RADIX constant in <*float.h*>.

As described above, upon successful completion, the functions return the
exponent. Functionally this is the same as calling the corresponding
logb(3) function and casting the return value to *int*.
The following special cases may occur:
1. If *x* is zero, the value of FP_ILOGB0 is returned and a domain
error occurs.
2. If *x* is infinite, a domain error occurs and the value of
INT_MAX is returned.
3. If *x* is *NaN*, a domain error is raised and the value of
FP_ILOGBNAN is returned.
4. If the correct value is outside the range of the return type,
a domain error occurs but an unspecified value is returned.

ilog2(3), logb(3), math(3)

The described functions conform to ISO/IEC 9899:1999 ("ISO C99").

Neither FP_ILOGB0 nor FP_ILOGBNAN is defined currently in NetBSD.
MirBSD #10-current February 9, 2014 1