##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# ilogb

From cppreference.com
< c‎ | numeric‎ | math

Defined in header `<math.h>` |  |
int ilogbf( float arg ); |  | (since C99)
int ilogb( double arg ); |  | (since C99)
int ilogbl( long double arg ); |  | (since C99)
#define FP_ILOGB0 /*implementation-defined*/ |  | (since C99)
#define FP_ILOGBNAN /*implementation-defined*/ |  | (since C99)

Extracts the value of the exponent from the floating-point argument `arg`, and returns it as a signed integer value. Formally, the result is the integral part of log
r|arg| as a signed integral value, for non-zero arg, where `r` is FLT_RADIX.

### [edit] Parameters

arg | - | floating point value

### [edit] Return value

The floating-point exponent, cast to integer.

Domain or range error may occur if `arg` is zero, FP_ILOGB0 is returned in that case.

Domain or range error may occur if `arg` is infinite, INT_MAX is returned in that case.

Domain or range error may occur if `arg` is NaN, FP_ILOGBNAN is returned in that case.

If the result cannot be represented as int, the result is undefined.

### [edit] Notes

The value of the exponent returned by ilogb is always 1 less than the exponent retuned by frexp because of the different normalization requirements: for the exponent `e` returned by ilogb, |arg*r-e
| is between 1 and `r` (typically between 1 and 2), but for the exponent `e` returned by frexp, |arg*2-e
| is between 0.5 and 1.

### [edit] Example

| This section is incomplete Reason: no example

### [edit] See also

frexp | decomposes a number into significand and a power of 2 (function) [edit]
logb (C99) | extracts exponent of the number (function) [edit]
scalbn scalbln (C99)(C99) | multiplies a number by FLT_RADIX raised to a power (function) [edit]
C++ documentation for ilogb

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/numeric/math/ilogb&oldid=66651"
Category:

- Todo no example