While working on my  SqueakJS  VM, it became necessary to deconstruct floating point numbers into their mantissa and exponent parts, and assembling them again. Peeking into the C sources of the regular VM, I saw they use the  frexp ()   and ldexp ()  functions found in the standard C math library.   Unfortunately, JavaScript does not provide these two functions. But surely there must have been someone who needed these before me, right? Sure enough, a Google search came up with a few implementations. However, an hour later I was convinced none of them actually are fully equivalent to the C functions. They were imprecise, that is, deconstructing a float using frexp()  and reconstructing it with  ldexp()  did not result in the original value. But that is the basic use case: for all float values, if     [ mantissa , exponent ] = frexp (value) then     value  = ldexp ( mantissa , exponent ) even if the value is subnormal . None of the implementations (even the complex ones) re...
Croquet, Squeak, etc