modf, modff, modfl - decompose a floating-point number
double modf(double x, double *iptr);
float modff(float value, float *iptr);
long double modfl(long double value, long double *iptr);
[CX] 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-2017 defers to the ISO C standard.
These functions shall break the argument x into integral and fractional parts, each of which has the same sign as the argument. It stores the integral part as a double (for the modf() function), a float (for the modff() function), or a long double (for the modfl() function), in the object pointed to by iptr.
Upon successful completion, these functions shall return the signed fractional part of x.
[MX] If x is NaN, a NaN shall be returned, and *iptr shall be set to a NaN.
If x is ±Inf, ±0 shall be returned, and *iptr shall be set to ±Inf.
No errors are defined.
The modf() function computes the function result and *iptr such that:a = modf(x, iptr) ; x == a+*iptr ;
allowing for the usual floating-point inaccuracies.
frexp, isnan, ldexp
First released in Issue 1. Derived from Issue 1 of the SVID.
The DESCRIPTION is updated to indicate how an application should check for an error. This text was previously published in the APPLICATION USAGE section.
The modff() and modfl() 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.
IEEE Std 1003.1-2001/Cor 1-2002, item XSH/TC1/D6/35 is applied, correcting the code example in the APPLICATION USAGE section.
return to top of page