Next: Rounding Functions, Previous: Absolute Value, Up: Arithmetic Functions [Contents][Index]
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 Representation 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.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
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 its magnitude 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
.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
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.
The _FloatN
and _FloatN
variants of the
following functions come from TS 18661-3:2015.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
The scalb
function is the BSD name for ldexp
.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
scalbn
is identical to scalb
, except that the exponent
n is an int
instead of a floating-point number.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
scalbln
is identical to scalb
, except that the exponent
n is a long int
instead of a floating-point number.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
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.
Next: Rounding Functions, Previous: Absolute Value, Up: Arithmetic Functions [Contents][Index]