frexp
From cppreference.com
                    
                                        
                    
                    
                                                            
                    | Defined in header  <math.h> | ||
| float       frexpf( float arg, int* exp ); | (since C99) | |
| double      frexp( double arg, int* exp ); | ||
| long double frexpl( long double arg, int* exp ); | (since C99) | |
Decomposes given floating point value arg to significand and exponent. 
| Contents | 
[edit] Parameters
| arg | - | floating point value | 
| exp | - | pointer to integer value to store the exponent to | 
[edit] Return value
Significand of the given floating point number in the range of [0.5; 1). The exponent is put into integer value pointed to by exp.
[edit] Example
Run this code
#include <stdio.h> #include <math.h> #include <float.h> int main(void) { int exp; printf("frexp(1.0,&exp) = %+f * 2^", frexp(1.0,&exp)); printf("(%+2d)\n", exp); printf("frexp(+0.0,&exp) = %+f * 2^", frexp(+0.0,&exp)); printf("(%+2d)\n", exp); printf("frexp(-0.0,&exp) = %+f * 2^", frexp(-0.0,&exp)); printf("(%+2d)\n", exp); printf("frexp(+INFINITY,&exp) = %+f * 2^", frexp(+INFINITY,&exp)); printf("(%+2d)\n", exp); printf("frexp(-INFINITY,&exp) = %+f * 2^", frexp(-INFINITY,&exp)); printf("(%+2d)\n", exp); printf("frexp(NAN,&exp) = %+f * 2^", frexp(NAN,&exp)); printf("(%+2d)\n", exp); printf("\n"); printf("frexp(DBL_MIN,&exp) = %+f * 2^", frexp(DBL_MIN,&exp)); printf("(%+2d)\n", exp); printf("frexp(DBL_MAX,&exp) = %+f * 2^", frexp(DBL_MAX,&exp)); printf("(%+2d)\n", exp); return 0; }
Possible output:
frexp(1.0,&exp) = +0.500000 * 2^(+1) frexp(+0.0,&exp) = +0.000000 * 2^(+0) frexp(-0.0,&exp) = -0.000000 * 2^(+0) frexp(+INFINITY,&exp) = +inf * 2^(+0) frexp(-INFINITY,&exp) = -inf * 2^(+0) frexp(NAN,&exp) = +nan * 2^(+0) frexp(DBL_MIN,&exp) = +0.500000 * 2^(-1021) frexp(DBL_MAX,&exp) = +1.000000 * 2^(+1024)
[edit] See also
| (C99)(C99) | multiplies a number by 2 raised to a power (function) | 
| (C99)(C99)(C99) | extracts exponent of the given number (function) | 
| (C99)(C99)(C99) | extracts exponent of the given number (function) | 
| (C99)(C99) | breaks a number into integer and fractional parts (function) | 
| C++ documentation for frexp | |


