Beyond Floating Point: Next-Generation Computer Arithmetic [pdf]
web.stanford.edu
web.stanford.edu
The first big issue I would have with Posits is the lack of a Not-a-Number (NaN) representation (as indicated on slide 16).
NaN values have the property of making any calculation they are used in also result in in a NaN.
I've found this property of NaNs to be invaluable in many contexts, especially as a no-data value regular data.
For example, this is useful when using bllinear filtering of floating point textures on a GPU -- any time a NaN texel is encountered, the entire fragment is discarded. In this manner, NaN values can be used to mask out a region without introducing a separate texture lookup.
I also love the simple, albeit obtuse, check for NaN:
// Don't remove this if! It's checking if value is a NaN
if (value != value) {
// value is NaN...
}It might be worth digging into the bit representation to find out exactly what happens, for instance, when you multiply 0 * infinity. That was a case that supposedly outputs NaN.
Here is an implementation: https://github.com/libcg/bfp
That said the absence of -0 is actually a problem for some math - you need it for some operations to come out correctly given that you are using a finitely bound representation.
I'd love to see a clearer paper comparing precision, etc with equal size constraints.