Next: Floating-Point Comparison Functions, Previous: Remainder Functions, Up: Arithmetic Functions [Contents][Index]
There are some operations that are too complicated or expensive to perform by hand on floating-point numbers. ISO C99 defines functions to do these operations, which mostly involve changing single bits.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
These functions return x but with the sign of y. They work even if x or y are NaN or zero. Both of these can carry a sign (although not all implementations support it) and this is one of the few operations that can tell the difference.
copysign
never raises an exception.
This function is defined in IEC 559 (and the appendix with recommended functions in IEEE 754/IEEE 854).
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
signbit
is a generic macro which can work on all floating-point
types. It returns a nonzero value if the value of x has its sign
bit set.
This is not the same as x < 0.0
, because IEEE 754 floating
point allows zero to be signed. The comparison -0.0 < 0.0
is
false, but signbit (-0.0)
will return a nonzero value.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
The nextafter
function returns the next representable neighbor of
x in the direction towards y. The size of the step between
x and the result depends on the type of the result. If
x = y the function simply returns y. If either
value is NaN
, NaN
is returned. Otherwise
a value corresponding to the value of the least significant bit in the
mantissa is added or subtracted, depending on the direction.
nextafter
will signal overflow or underflow if the result goes
outside of the range of normalized numbers.
This function is defined in IEC 559 (and the appendix with recommended functions in IEEE 754/IEEE 854).
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
These functions are identical to the corresponding versions of
nextafter
except that their second argument is a long
double
.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
The nextup
function returns the next representable neighbor of x
in the direction of positive infinity. If x is the smallest negative
subnormal number in the type of x the function returns -0
. If
x = 0
the function returns the smallest positive subnormal
number in the type of x. If x is NaN, NaN is returned.
If x is +∞, +∞ is returned.
nextup
is from TS 18661-1:2014 and TS 18661-3:2015.
nextup
never raises an exception except for signaling NaNs.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
The nextdown
function returns the next representable neighbor of x
in the direction of negative infinity. If x is the smallest positive
subnormal number in the type of x the function returns +0
. If
x = 0
the function returns the smallest negative subnormal
number in the type of x. If x is NaN, NaN is returned.
If x is -∞, -∞ is returned.
nextdown
is from TS 18661-1:2014 and TS 18661-3:2015.
nextdown
never raises an exception except for signaling NaNs.
Preliminary: | MT-Safe locale | AS-Safe | AC-Safe | See POSIX Safety Concepts.
The nan
function returns a representation of NaN, provided that
NaN is supported by the target platform.
nan ("n-char-sequence")
is equivalent to
strtod ("NAN(n-char-sequence)")
.
The argument tagp is used in an unspecified manner. On IEEE 754 systems, there are many representations of NaN, and tagp selects one. On other systems it may do nothing.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
In some floating-point formats, some values have canonical (preferred) and noncanonical encodings (for IEEE interchange binary formats, all encodings are canonical). These functions, defined by TS 18661-1:2014 and TS 18661-3:2015, attempt to produce a canonical version of the floating-point value pointed to by x; if that value is a signaling NaN, they raise the invalid exception and produce a quiet NaN. If a canonical value is produced, it is stored in the object pointed to by cx, and these functions return zero. Otherwise (if a canonical value could not be produced because the object pointed to by x is not a valid representation of any floating-point value), the object pointed to by cx is unchanged and a nonzero value is returned.
Note that some formats have multiple encodings of a value which are all equally canonical; when such an encoding is used as an input to this function, any such encoding of the same value (or of the corresponding quiet NaN, if that value is a signaling NaN) may be produced as output.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
IEEE 754 defines the payload of a NaN to be an integer value encoded in the representation of the NaN. Payloads are typically propagated from NaN inputs to the result of a floating-point operation. These functions, defined by TS 18661-1:2014 and TS 18661-3:2015, return the payload of the NaN pointed to by x (returned as a positive integer, or positive zero, represented as a floating-point number); if x is not a NaN, they return an unspecified value. They raise no floating-point exceptions even for signaling NaNs.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
These functions, defined by TS 18661-1:2014 and TS 18661-3:2015, set the object pointed to by x to a quiet NaN with payload payload and a zero sign bit and return zero. If payload is not a positive-signed integer that is a valid payload for a quiet NaN of the given type, the object pointed to by x is set to positive zero and a nonzero value is returned. They raise no floating-point exceptions.
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
These functions, defined by TS 18661-1:2014 and TS 18661-3:2015, set the object pointed to by x to a signaling NaN with payload payload and a zero sign bit and return zero. If payload is not a positive-signed integer that is a valid payload for a signaling NaN of the given type, the object pointed to by x is set to positive zero and a nonzero value is returned. They raise no floating-point exceptions.
Next: Floating-Point Comparison Functions, Previous: Remainder Functions, Up: Arithmetic Functions [Contents][Index]