Originally found on: D-lang forum discussion <http://forum.dlang.org/thread/[email protected]?page=1>, forwarded to me by Robbert van Dalen.
The previous julia-users discussion about unums <https://groups.google.com/forum/#!topic/julia-users/LbFCCeMv76M> provoked a lot of responses (as did the previous discussion on /r/compsci <https://www.reddit.com/r/compsci/comments/3ek093/unum_a_better_alternative_to_ieee_floating_point/>, the previous Hacker News discussion <https://news.ycombinator.com/item?id=9943589>), so I figured I'd post this as an update for the people who were interested back then. For those of you who haven't heard of this before, John Gustafson has been working on an alternative number encoding to IEEE floating point. He just presented an updated version of this unum proposal at Multicore 2016. It's very different from before: For those of you who think you have already seen unums, this is a different approach. Every one of the slides here is completely new and has not been presented before the Multicore 2016 conference. The original unums had sign, exponent, and fraction fields just like IEEE floats and obeying most of the same rules; those unums had three metadata fields, the “utag”, that described the exact-inexact state, the exponent size, and the fraction size, and they therefore had variable length. This new approach makes a complete break from IEEE float compatibility and redesigns the way we represent the infinite space of real numbers on a computer. They are just as mathematically rigorous as before, but they clear up the remaining clunkiness of the IEEE format. They are so terse and so fast that you can think about solving very difficult equations by trying the entire real number line, overlooking nothing. You can find all the slides here: PDF: A Radical Approach to Computation with Real Numbers <http://www.johngustafson.net/presentations/Multicore2016-JLG.pdf> PPTX: A Radical Approach to Computation with Real Numbers <http://www.johngustafson.net/presentations/Multicore2016-JLG.pptx> I recommend the powerpoint, because it has speaker notes (which is where I took the above citations from), clarifying a lot. Gustafson also gave two replies to questions on the D-lang discussion board: What I don't get is: is there an exposant anymore? I don't see any mention of it. > That's part of the breakthrough: the separation of bit fields that is so > deeply built into IEEE floats, has far more drawbacks then advantages. That's > where all the problems with gradual underflow, wasted bit patterns on NaNs, > hidden bits, and wasted bit patterns in general, stem from. It is possible to > extract the exponent, in the traditional sense, by an integer divide if the > lattice is one chosen to be self-similar as the dynamic range increases. The > integer divide need NOT be by a power of 2, nor do you need to do the divide > very often at all... think different about the way we represent reals with > bit strings! The basic idea for Unums seems that you get an estimate of the bounds and then recompute using higher precision or better algorithm when necessary. With regular floats you just get a noisy value and you need much more heavy machinery to know whether you need to recompute using a better algorithm/higher precision. > Not quite. What you describe is a very old idea. When unums lose accuracy, > they become multiple unums in a row, or in a multidimensional volume > (uboxes). The next calculation starts not from the "interval" described by > the largest and smallest unum, but from each unum in the set; the results are > then combined as a set union, which leads to bounds that grow linearly > instead of exponentially. PS: Robbert has opened up a Google Group for general Unum computing discussion <https://groups.google.com/forum/#!forum/unum-computing>
