The frexp() function breaks a floating-point number into a normalized fraction and an integral power of 2. It stores the integer exponent in the int object pointed
to by exp.
The frexp() function returns the value x, such that x is a double with magnitude in the interval [½, 1) or
0, and num equals x times 2 raised to the power *exp.
If num is 0, both parts of the result are 0.
If num is NaN, NaN is returned and the value of *exp is unspecified.
If num is +-Inf, num is returned and the value of *exp is unspecified.
An application wishing to check for error situations should set errno to 0 before calling frexp(). If errno is non-zero on return, or the return
value is NaN, an error has occurred.