Divide floating-point number into mantissa and power
double frexp(double val, int *exp);
frexp sets 0 to *exp and returns 0 if val is 0.
frexp sets 0 to *exp, returns a NaN and sets macro EDOM to global variable errno if val is ±∞.
If val is NaN, frexp sets 0 to *exp and returns a NaN.
This function expresses val of double type as mantissa m and the pth power of 2. The resulting mantissa m is 0.5 <= | x | < 1.0, unless val is zero. p is stored in *exp. m and p are calculated so that val = m * 2 p.