This documentation is archived and is not being maintained.


Gets the mantissa and exponent of a floating-point number.

double frexp(
   double x,
   int *expptr 
float frexp(
   float x,
   int * expptr
);  // C++ only
long double frexp(
   long double x,
   int * expptr
);  // C++ only


Floating-point value.
Pointer to stored integer exponent.

Return Value

frexp returns the mantissa. If x is 0, the function returns 0 for both the mantissa and the exponent. There is no error return.


The frexp function breaks down the floating-point value (x) into a mantissa (m) and an exponent (n), such that the absolute value of m is greater than or equal to 0.5 and less than 1.0, and x = m*2n. The integer exponent n is stored at the location pointed to by expptr.

C++ allows overloading, so you can call overloads of frexp. In a C program, frexp always takes a double and an int and returns a double.


Function Required header Compatibility
frexp <math.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.


All versions of the C run-time libraries.


// crt_frexp.c
/* This program calculates frexp( 16.4, &n )
 * then displays y and n.

#include <math.h>
#include <stdio.h>

int main( void )
   double x, y;
   int n;

   x = 16.4;
   y = frexp( x, &n );
   printf( "frexp( %f, &n ) = %f, n = %d\n", x, y, n );


frexp( 16.400000, &n ) = 0.512500, n = 5

See Also

Floating-Point Support Routines | ldexp | modf | Run-Time Routines and .NET Framework Equivalents