Node:Normalization Functions,
Next:Rounding Functions,
Previous:Absolute Value,
Up:Arithmetic Functions
Normalization Functions
The functions described in this section are primarily provided as a way
to efficiently perform certain low-level manipulations on floating point
numbers that are represented internally using a binary radix;
see Floating Point Concepts.  These functions are required to
have equivalent behavior even if the representation does not use a radix
of 2, but of course they are unlikely to be particularly efficient in
those cases.
All these functions are declared in math.h.
| double frexp (double value, int *exponent) | Function | 
|  | 
| float frexpf (float value, int *exponent) | Function | 
|  | 
| long double frexpl (long double value, int *exponent) | Function | 
| These functions are used to split the number value
into a normalized fraction and an exponent. If the argument value is not zero, the return value is value
times a power of two, and is always in the range 1/2 (inclusive) to 1
(exclusive).  The corresponding exponent is stored in
*exponent; the return value multiplied by 2 raised to this
exponent equals the original number value. For example, frexp (12.8, &exponent)returns0.8and
stores4inexponent. If value is zero, then the return value is zero and
zero is stored in *exponent. | 
| double ldexp (double value, int exponent) | Function | 
|  | 
| float ldexpf (float value, int exponent) | Function | 
|  | 
| long double ldexpl (long double value, int exponent) | Function | 
| These functions return the result of multiplying the floating-point
number value by 2 raised to the power exponent.  (It can
be used to reassemble floating-point numbers that were taken apart
by frexp.)For example, ldexp (0.8, 4)returns12.8. | 
The following functions, which come from BSD, provide facilities
equivalent to those of ldexp and frexp.  See also the
ISO C function logb which originally also appeared in BSD.
| double scalb (double value, int exponent) | Function | 
|  | 
| float scalbf (float value, int exponent) | Function | 
|  | 
| long double scalbl (long double value, int exponent) | Function | 
| The scalbfunction is the BSD name forldexp. | 
| long long int scalbn (double x, int n) | Function | 
|  | 
| long long int scalbnf (float x, int n) | Function | 
|  | 
| long long int scalbnl (long double x, int n) | Function | 
| scalbnis identical toscalb, except that the exponent
n is anintinstead of a floating-point number. | 
| long long int scalbln (double x, long int n) | Function | 
|  | 
| long long int scalblnf (float x, long int n) | Function | 
|  | 
| long long int scalblnl (long double x, long int n) | Function | 
| scalblnis identical toscalb, except that the exponent
n is along intinstead of a floating-point number. | 
| long long int significand (double x) | Function | 
|  | 
| long long int significandf (float x) | Function | 
|  | 
| long long int significandl (long double x) | Function | 
| significandreturns the mantissa of x scaled to the range
[1, 2). 
It is equivalent toscalb (x, (double) -ilogb (x)).This function exists mainly for use in certain standardized tests
of IEEE 754 conformance. 
 |