Previous Page
Next Page

ilogb

Returns the exponent of a floating-point number as an integer

#include <math.h>
int ilogb ( double x  )
int ilogbf ( float x  )
int ilogbl ( long double x  )

The ilogb( ) functions return the exponent of their floating-point argument as a signed integer. If the argument is not normalized, ilogb( ) returns the exponent of its normalized value.

If the argument is 0, ilogb( ) returns the value of the macro FP_ILOGB0 (defined in math.h), and may incur a range error. If the argument is infinite, the return value is equal to INT_MAX. If the floating-point argument is NaN ("not a number"), ilogb( ) returns the value of the macro FP_ILOGBNAN.

Example

int exponent = 0;
double x = -1.509812734e200;

while ( exponent < INT_MAX )
{
  exponent = ilogb( x );
  printf( "The exponent of %g is %d.\n", x, exponent );

  if ( x < 0.0 && x * x > 1.0 )
    x /= 1e34;
  else
    x += 1.1, x *= 2.2e34 ;
}

This code produces some 15 output lines, including these samples:

The exponent of -1.50981e+200 is 664.
The exponent of -1.50981e+30 is 100.
The exponent of -0.000150981 is -13.
The exponent of 2.41967e+34 is 114.
The exponent of inf is 2147483647.

See Also

logb( ), log( ), log10( ), log1p( ), exp( ), pow( ).


Previous Page
Next Page