.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" References consulted:
.\"     Linux libc source code
.\"     Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
.\"     386BSD man pages
.\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
.\" Modified 2002-07-27 by Walter Harms
.\" 	(walter.harms@informatik.uni-oldenburg.de)
.\"
.TH FREXP 3 2016-03-15 "" "Linux Programmer's Manual"
.SH NAME
frexp, frexpf, frexpl \- convert floating-point number to fractional
and integral components
.SH SYNOPSIS
.nf
.B #include <math.h>
.sp
.BI "double frexp(double " x ", int *" exp );
.br
.BI "float frexpf(float " x ", int *" exp );
.br
.BI "long double frexpl(long double " x ", int *" exp );
.fi
.sp
Link with \fI\-lm\fP.
.sp
.in -4n
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.in
.sp
.ad l
.BR frexpf (),
.BR frexpl ():
.RS 4
_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.RE
.ad
.SH DESCRIPTION
These functions are used to split the number
.I x
into a
normalized fraction and an exponent which is stored in
.IR exp .
.SH RETURN VALUE
These functions return the normalized fraction.
If the argument
.I x
is not zero,
the normalized fraction is
.I x
times a power of two,
and its absolute value is always in the range 1/2 (inclusive) to
1 (exclusive), that is, [0.5,1).

If
.I x
is zero, then the normalized fraction is
zero and zero is stored in
.IR exp .

If
.I x
is a NaN,
a NaN is returned, and the value of
.I *exp
is unspecified.

If
.I x
is positive infinity (negative infinity),
positive infinity (negative infinity) is returned, and the value of
.I *exp
is unspecified.
.SH ERRORS
No errors occur.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbw27 lb lb
l l l.
Interface	Attribute	Value
T{
.BR frexp (),
.BR frexpf (),
.BR frexpl ()
T}	Thread safety	MT-Safe
.TE
.SH CONFORMING TO
C99, POSIX.1-2001, POSIX.1-2008.

The variant returning
.I double
also conforms to
SVr4, 4.3BSD, C89.
.SH EXAMPLE
The program below produces results such as the following:
.sp
.nf
.in +4n
.RB "$" " ./a.out 2560"
frexp(2560, &e) = 0.625: 0.625 * 2^12 = 2560
.RB "$" " ./a.out \-4"
frexp(\-4, &e) = \-0.5: \-0.5 * 2^3 = \-4
.in
.fi
.SS Program source
\&
.nf
#include <math.h>
#include <float.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    double x, r;
    int exp;

    x = strtod(argv[1], NULL);
    r = frexp(x, &exp);

    printf("frexp(%g, &e) = %g: %g * %d^%d = %g\\n",
           x, r, r, FLT_RADIX, exp, x);
    exit(EXIT_SUCCESS);
}
.fi
.SH SEE ALSO
.BR ldexp (3),
.BR modf (3)
