Has the Decades-Old Floating Point Error Problem Been Solved? (insidehpc.com)
overheardinpdx quotes HPCwire:
Wednesday a company called Bounded Floating Point announced a "breakthrough patent in processor design, which allows representation of real numbers accurate to the last digit for the first time in computer history. This bounded floating point system is a game changer for the computing industry, particularly for computationally intensive functions such as weather prediction, GPS, and autonomous vehicles," said the inventor, Alan Jorgensen, PhD. "By using this system, it is possible to guarantee that the display of floating point values is accurate to plus or minus one in the last digit..."
The innovative bounded floating point system computes two limits (or bounds) that contain the represented real number. These bounds are carried through successive calculations. When the calculated result is no longer sufficiently accurate the result is so marked, as are all further calculations made using that value. It is fail-safe and performs in real time.
Jorgensen is described as a cyber bounty hunter and part time instructor at the University of Nevada, Las Vegas teaching computer science to non-computer science students. In November he received US Patent number 9,817,662 -- "Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof." But in a followup, HPCwire reports: After this article was published, a number of readers raised concerns about the originality of Jorgensen's techniques, noting the existence of prior art going back years. Specifically, there is precedent in John Gustafson's work on unums and interval arithmetic both at Sun and in his 2015 book, The End of Error, which was published 19 months before Jorgensen's patent application was filed. We regret the omission of this information from the original article.
The innovative bounded floating point system computes two limits (or bounds) that contain the represented real number. These bounds are carried through successive calculations. When the calculated result is no longer sufficiently accurate the result is so marked, as are all further calculations made using that value. It is fail-safe and performs in real time.
Jorgensen is described as a cyber bounty hunter and part time instructor at the University of Nevada, Las Vegas teaching computer science to non-computer science students. In November he received US Patent number 9,817,662 -- "Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof." But in a followup, HPCwire reports: After this article was published, a number of readers raised concerns about the originality of Jorgensen's techniques, noting the existence of prior art going back years. Specifically, there is precedent in John Gustafson's work on unums and interval arithmetic both at Sun and in his 2015 book, The End of Error, which was published 19 months before Jorgensen's patent application was filed. We regret the omission of this information from the original article.
So, what is the last digit of Pi?
the "bounds" also have the same issue, it's making the problem smaller but not eliminating it
For those of you too lazy to read the summary, their method is that instead of using one floating point value, they use two and say the real answer is between those two. If the two floats are consistent when rounded to the requested precision, it declares the value correct. If they differ, it gives an accuracy error.
So, for only twice the work and a little ovehead on top, this process can tell you when to switch to a high precision fixed-point model instead of relying on the floating point approximations.
As mentioned in the summary, this sounds no different from the age old interval arithmetic. The reason interval arithmetic never took off is that for the vast majority of problems where error is actually a problem, the bounds on the error become so large as to be worthless. To fix this you still need to employ those specialist numerical programmers, so this doesn't actually get you anywhere.
> any company that chooses to implement it
This patent relates CPU design, for CPUs used in critical applications involving lots of floating point operations. So by "any company" you mean "AMD and Intel".
> It'll never reach any mass adoption.
Right, neither Intel nor AMD would EVER license any patents for use in their processors (eyeroll).
- There are some numeric decimal types which allow a perfect precision like the
- This approach doesn't seem to try to avoid the default problems as the aforementioned types, but just to warn about potential inaccuracies. According to the linked article:
The innovative bounded floating point system computes two limits (or bounds) that contain the represented real number. These bounds are carried through successive calculations. When the calculated result is no longer sufficiently accurate the result is so marked, as are all further calculations made using that value.
- Any floating-point-type error is certainly programmer's fault as far as being aware about these limitations is part of the basic knowledge which someone working with big decimal values should posses. So, avoiding problems like the one referred by the quote below these lines doesn't require a programming structure re-definition, just a competent developer.
the most notorious floating point error was the Patriot missile failure in Saudi Arabia...
Custom Solvers 2.0 = Alvaro Carballo Garcia = varocarbas.
The perversions of the US patent system are truly astounding.
Also sounds very much like they re-invented Interval Arithmetic, which was discovered originally around 1950 and has been available in numeric packages for a long time. And, to top it off, the title is lying: Interval Arithmetic does not give you an accurate representation. It just makes sure you always know the maximum error.
Pathetic.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Earlier prior art, https://en.m.wikipedia.org/wik...
Patents, implementations etc. Not that there isn’t room for innovation as well as popularization.
Standards efforts (IFIP, IEEE) are ongoing. Yearly conferences in reliable computing, so both the original article and most likely the patent itself gloss over engineer-decades (if not centuries) of work.
What about irrationals, which are as numerous as the whole of real numbers?
Approximate them as 22/7.
what does "MOUNT TAPE U1439 ON B3, NO RING" mean?
is the answer who gets the last slice of Pi?
Some drink at the fountain of knowledge. Others just gargle.
In the 1950s, when the public was first becoming aware of computers, computers were considered to be large calculators. They could do math. They could be used by the IRS to compute your taxes or by the military to analyze sensor inputs and guide missiles. Few people could envision a future where computers could manipulate strings, images, sounds and communicate in the many ways that we now enjoy.
But today we have all those unimaginable benefits but one: They can't really do math well. Oh, the irony!
...omphaloskepsis often...
And get perfect numbers for everything but irrational numbers, for which there is no easy precise solution anyway.
Would probably be faster too, since the ratios could be two integers.
Yes. I've used rational types in python. When you are doing arithmetic in the rationals, it's nice to use this and get precise answers.
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
Irrationals are, actually, a lot more numerous than rational numbers. Of the latter there are just as many as there are integers (and naturals), whereas the set of the former is a lot more powerful.
Yes, the parallels with human society make me sad too...
In Soviet Washington the swamp drains you.
You've got an answer to the problem this was trying to deal with, but what he actually did was just put bounds on the error. As others have said, this has been known for a long time.
The only thing that's been said which "sort of" justifies this patent is that this is the reduction of a known algorithm (interval arithmetic) to a hardware implementation. Why that's worth a patent I'm not sure, but at least, unlike copyrights, patents eventually expire.
I think we've pushed this "anyone can grow up to be president" thing too far.
This is totally theoretical. There is no implementation on silicon.
Until someone does this on a chip it's meaningless, and as others have pointed out, the solution isn't new.
But there is a rational number between every two irrational numbers! Words like "numerous" are tricky that way...
"to the last digit." Cool. I'd like a representation of pi, please.
There's this perl5 module that actually solved this exactly quite some time ago - no compromise at all, but as Damian Conway says, we suck at marketing - if you need a bigrat to solve your problem. Perl 6 (which should have a different name and many now call Rakudo) - has this as a built-in. Rational numbers are kept exact all the way through calculations, period, if built from...rational numbers in the first place (won't help with pi or sqrt 2 of course). One of the best conference presentations ever given about anything happens to cover this - skip past the boring intros. Computer scientists will get the dry humor in say "the Alan Machine" reference. https://www.youtube.com/watch?...
Why guess when you can know? Measure!
The original article has a comment by someone who developed the method and released it openly.
From what little i've read it certainly seems to be the case.
"Numerous" is not the best word to use here, because it implies countability. Rational numbers are countable, i.e., you can construct a 1-to-1 mapping with the integers, but any attempt to place the irrational numbers in a 1-to-1 mapping with the integers can be shown to have omitted at least one irrational number.
One can say that the set of rationals and the set of irrationals are both infinite, but the irrationals have a higher infinitude than the rationals. The curious reader should look up Transfinite Cardinals.
If it weren't for deadlines, nothing would be late.
The only thing that's been said which "sort of" justifies this patent is that this is the reduction of a known algorithm (interval arithmetic) to a hardware implementation.
If you read TFA, it's clear that there are at least two things which can reasonably be called "new": a compact representation of a value-plus-bounds (i.e. an interval), and some way to mark (analogous to quiet NaNs, if I'm reading it correctly) a calculation that may have violated its precision requirements.
Maybe if you're working in a safety-critical field it might help with some calculations, but I can't see how it would help with most numeric problems.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
From the patent:
Using current technology error can be reduced by increasing computation time and/or memory space. The present invention provides this error information within the inventive data structure with little impact on space and performance.
This expresses the key development better. This patent specifies a means by which this error tracking and warning mechanism can be added to floating point HW with little addition of hardware or performance penalty. The operation is not performed twice as other posters here have imagined.
The article's wording definitely misleads as this just provides a means of identifying precision violations efficiently. But, I can imagine that someone could then go further at the assembly level and automatically respond to the new flag by repeating the operation with a higher precision instruction or algorithm.
IIUC, the existing methods already had a way to mark when the bounds were violated. Compact, however, might well be new. And perhaps the way he marks that bounds have been violated is new...though I wouldn't bet on that...not given what I read in the summary.
For that matter, I'm not expert in the field, but it wouldn't surprise me if some existing library already used an analogous "compact representation". Probably not the same representation, as implementing stuff in hardware usually causes changes, but something close enough that no reasonable patent agency would consider it worth a patent. (That said, this is just me being cynical. As I said, I'm no expert in the field.)
I think we've pushed this "anyone can grow up to be president" thing too far.
He specifies the hardware algorithms that can utilize this new representation directly, track the error amount and flag violations with little addition of work. This is not just a representation patent. It is a patent on the algorithms to utilize the representation efficiently.
(a) The first example of this (decades before Gustafsson's unums) is interval arithmetic.
(b) A trivial counter-example is any kind of Newton-Rapson iteration to calculate the value of a given function: Even though the NR iteration for sqrt(x) or sqrt(1/x) both have quadratic convergence, i.e. the number of correct digits double on each iteration, any kind of interval arithmetic will tell you that the error instead grows to infinite levels.
I.e. the claimed benefits are totally bogus except for really trivial calculations, and for those the error bounds are equally trivial.
Full disclosure: I am currently a member of the 2018 ieee754 floating point revision working group, so you could claim that I am biased here due to having spent a year or two working in the subject area.
Terje
"almost all programming can be viewed as an exercise in caching"
People tend to forget that.
putting the 'B' in LGBTQ+
We used to use a lot of fixed point math that you could configure to get the range and resolution needed.
It's amazing how well optimized these systems were. Much of the expensive math and rational number problems were invisible because of the internal data representations being carefully planned.
There was a dll generated at build time that provided information to properly convert the internal representation to engineering units. It was very interesting doing the conversions
Divide 63,000,000 by foo, then add bar times 0.015625 and divide the result by pi and you get RPM!
Yep, I'm familiar with all of that:
- Ordering fractions diagonally to connect them to naturals
- Assuming an ordered list of all the reals, taking the first digit + 1 behind the decimal point of the "first" real, the second digit + 1 of the "second" real, etc. yields a real that is not in the list
But it's still weird that, if there are so many "more" reals, you cannot find two reals without a rational in between. When dealing with infinities, it's really easy to take a wrong turn because assumptions valid for finite sets no longer hold for infinite sets.
The innovative bounded floating point system computes two limits (or bounds) that contain the represented real number. These bounds are carried through successive calculations. When the calculated result is no longer sufficiently accurate the result is so marked, as are all further calculations made using that value.
This sounds like interval arithmetic.. A.K.A. using a vectorized format for numbers that carries forward an upper and lower bound through each operation, and I wrote a Matlab datatype for that in college, but others are published in the subject already, so this is not an innovation.
I would also point out that including two limit bounds increases the size storage costs, and the complexity/number of basic elements that will be required for computation.
Don't forget the ARM CPUs out there!
Self-importance and self-indulgence is the root of ALL evil.
Yes, but does it also perform speculative execution? If so, do not want!
ARM isn't used for serious floating point work. Very much the wrong tool for the job.
Irrational numbers always bothered me anyway. Now, if we could get rid of imaginary numbers, that would really be something!
Damn, I didn't know the guy from Ministry was into computer science!