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) returns 0.8 and
stores 4 in exponent.
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) returns 12.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 scalb function is the BSD name for ldexp.
|
| 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 |
scalbn is identical to scalb, except that the exponent
n is an int instead 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 |
scalbln is identical to scalb, except that the exponent
n is a long int instead 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 |
significand returns the mantissa of x scaled to the range
[1, 2).
It is equivalent to scalb (x, (double) -ilogb (x)).
This function exists mainly for use in certain standardized tests
of IEEE 754 conformance.
|