December 2005
Beginner to intermediate
618 pages
20h 19m
English
ilogb
Returns the exponent of a floating-point number as an integer
#include <math.h> intilogb( doublex) intilogbf( floatx) intilogbl( long doublex)
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.
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.
logb(), log(), log10(), log1p(), exp(), pow().
Read now
Unlock full access