Scientific notation is a general way to express a number with an explicit order of magnitude. First, a non-zero digit, then a notation, then a fractional part and an exponent. In binary format, there is only one possible non-zero digit.
The floating point math includes an implicit first digit equal to one, then the mantissa bits "follow the notation".
So why does frexp() put a radius point to the left of the implicit bit and return a number in [0,5, 1] instead of a notation similar to [1, 2]? Is there an overflow to beware of?
Effectively, it subtracts another offset value specified in IEEE 754 / ISO 60559. In hardware, this potentially trades the add-on for XOR. One, this seems like a pretty weak argument, given that in many cases a return to normal operation will require another floating point operation.
c floating-point posix ieee-754
Potatoswatter
source share