NAME

frexp, frexpf, frexpl — extract significand and exponent from a double precision number

SYNOPSIS

#include <math.h>

double frexp(double
num, int *exp);
float frexpf(float
num, int *exp);
long double frexpl(long double
num, int *exp);

DESCRIPTION

[CX] [Option Start] The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2024 defers to the ISO C standard. [Option End]

These functions shall break a floating-point number num into a normalized fraction and an integral power of 2. The integer exponent shall be stored in the int object pointed to by exp; if the integer exponent is outside the range of int, the results are unspecified.

RETURN VALUE

For finite arguments, these functions shall return the value x, such that x has a magnitude in the interval [½,1) or 0, and num equals x times 2 raised to the power *exp.

[MX] [Option Start] When the radix of the argument is a power of 2, the returned value shall be exact and shall be independent of the current rounding direction mode.

If num is NaN, a NaN shall be returned, and the value of *exp is unspecified.

If num is ±0, ±0 shall be returned, and the value of *exp shall be 0.

If num is ±Inf, num shall be returned, and the value of *exp is unspecified. [Option End]

ERRORS

No errors are defined.


The following sections are informative.

EXAMPLES

None.

APPLICATION USAGE

None.

RATIONALE

None.

FUTURE DIRECTIONS

None.

SEE ALSO

isnan , ldexp , modf

XBD <math.h>

CHANGE HISTORY

First released in Issue 1. Derived from Issue 1 of the SVID.

Issue 5

The DESCRIPTION is updated to indicate how an application should check for an error. This text was previously published in the APPLICATION USAGE section.

Issue 6

The frexpf() and frexpl() functions are added for alignment with the ISO/IEC 9899:1999 standard.

The DESCRIPTION, RETURN VALUE, ERRORS, and APPLICATION USAGE sections are revised to align with the ISO/IEC 9899:1999 standard.

IEC 60559:1989 standard floating-point extensions over the ISO/IEC 9899:1999 standard are marked.

Issue 8

Austin Group Defect 1302 is applied, aligning these functions with the ISO/IEC 9899:2018 standard.

Austin Group Defect 1753 is applied, changing the NAME section.

End of informative text.