The function **double frexp(double x, int *exponent);** breaks the floating point number x into its mantisa (an absolute floating point number between 0.5(included) and 1.0(excluded)) and an integer exponent of 2. It decompose x such that:

x = mantisa * 2^{exponent}

## Function prototype of frexp

*double frexp(double x, int *exponent);***x**: A floating point value to be decomposed.**exponent**: A pointer to an integer where the value of the exponent to be stored.

## Return value of frexp

It returns the value of mantissa and also stores the exponent of 2 in the integer pointer passed to it as argument.

If x is zero, both mantisa and exponent are zero.

If x is negative, the mantisa returned by this function is negative.

## C program using frexp function

The following program shows the use of frexp function to decompose a floating point number.

#include <stdio.h> #include <math.h> int main () { double value, fraction; int exponent; printf("Enter a number\n"); scanf("%lf", &value); fraction = frexp(value , &exponent); printf("%lf = %lf * 2^%d\n", value, fraction, exponent); return 0; }

Output

Enter a number 512 512.000000 = 0.500000 * 2^10