Hacker News new | ask | show | jobs
by jlgustafson 3733 days ago
I have a chronic problem with people taking a partial description of some of my math, and then complaining about all the things that are missing. Well, those things are in the part you didn't see! Ordinary differential equations are solved with provable bounds of arbitrary accuracy in Chapters 19 and 20 of The End of Error, and this is not possible with traditional interval arithmetic.

With unums 2.0, you can specify your own lattice of preferred exact values between 1 and infinity, albeit with recommended guidelines, and then the projective real line is auto-populated with the reciprocals, the negatives, and the open intervals between exact values. There is a continuum between table lookup (low precision) and float-type calculation (high precision), and I am mainly interested in table lookup for low-precision arithmetic. It is surprising how often it is better to use a small number of bits but obtain rigorous bounds (that do not grow exponentially like they do with intervals) than it is to use double-precision or even single-precision IEEE floats and obtain 15 or 7 decimals of answer, none of which decimals are guaranteed correct.

The idea is to work toward software-defined numerical systems that can be optimized for particular applications, for the purpose of saving bits and thereby reducing energy/power requirements while simultaneously improving answer quality and possibly increasing ease-of-use.

With unums 1.0, too many people had hopes of simply replacing their floats with unums and getting an improvement. While that does happen in many cases, in the general case where there are hazards of the dependency problem or the wrapping problem, you need some knowledge of uboxes, and the Julia and C versions tend to gloss over this essential aspect of the computing environment. I think unums 2.0 solve this by making the SORN the fundamental way of representing arguments to arithmetic operators, since they have their "ubox" aspect built into them and there is no need to choose a preferred ULP size.

1 comments

The bit about creating a custom tabled implementation per application seemed pretty clear, and awesome!, from the slides (or at least I thought so)

Are there any good notes at least on a methodological level for this 2.0 design? It's super fascinating, and colleagues of mine on the Modelling side loved reading the deck. Also would like to see more of the ideas :)