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.
|