Exponent extraction
#include <math.h> int ilogb ( double x ); int ilogbf (float x );
libm
The ilogb() and ilogbf() functions compute the integral part of:
log_r |x|
as a signed integral value, for nonzero finite x, where r is the radix of the machine's floating point arithmetic.
The exponent part of x in integer format.
| If x is: | ilogb() returns: |
|---|---|
| 0 | -INT_MAX |
| NAN | INT_MAX |
| negative infinity | INT_MAX |
| positive infinity | INT_MAX |
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main( void )
{
printf( "%f\n", ilogb(.5) );
return EXIT_SUCCESS;
}
ilogb() is standard Unix; ilogbf() is ANSI (draft)
| Safety: | |
|---|---|
| Cancellation point | No |
| Interrupt handler | No |
| Signal handler | No |
| Thread | Yes |
log(), logb(), log10(), log1p()