[Neil Schemenauer] > Common Lisp has a function called decode-float: > > (decode-float float) => significand, exponent, sign > > computes three values that characterize float. The first value is of > the same type as float and represents the significand. The second > value represents the exponent to which the radix (notated in this > description by b) must be raised to obtain the value that, when > multiplied with the first result, produces the absolute value of > float. If float is zero, any integer value may be returned, provided > that the identity shown for scale-float holds. The third value is of > the same type as float and is 1.0 if float is greater than or equal > to zero or -1.0 otherwise. > > How hard would it be to write a method like this for Python floats? I > think it could go a long way in helping people understand how floating > point works. Python's math.frexp() already exposes a very similar standard C function. If you take the terms as defined above, it's math.frexp(float) => significand * sign, exponent >>> math.frexp(18) (0.5625, 5) >>> math.frexp(-18.5) (-0.578125, 5) >>> Separating out the sign is a nice little convenience, reflecting common use (most uses of frexp() immediately test-and-branch on the significand's sign bit right after!). "decode-float" sounds like some Unicode function, while "frexp" is wonderfully mnemonic <wink>.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4