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.
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)returns0.8and stores4inexponent.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)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.
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
scalbfunction is the BSD name forldexp.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
scalbnis identical toscalb, except that the exponent n is anintinstead of a floating-point number.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
scalblnis identical toscalb, except that the exponent n is along intinstead of a floating-point number.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
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.