Hacker News new | ask | show | jobs
by pklo 3512 days ago
A large portion of engineering calculations overall requires something like three significant digits of precision; the problem is that these digits need to be accurate, i.e. we need a good error estimate, consistent with that precision. Most numerical algorithms do not provide such estimates, and so we've fallen into a cargo cult of excess precision, hoping that it will save us from the accuracy loss in the calculation. It often works, but occasionally fails, and we have no idea which one happened.

I have a simple example of that: a polynomial rp(x,y):=1335/4y^6+x^2(11x^2y^2-y^6+(-121)y^4-2)+11/2y^8+x/(2*y) that evaluates to about 1.1726 in both single and double precision, but whose real value is -0.827....

So, the bottom line is that I'd gladly trade off precision for better accuracy guarantees---but it turns out that's surprisingly hard in general case.

2 comments

Sorry--forgot to specify the values for the polynomial: 77617 and 33096. In Maxima, the effects of precision can be simulated thus:

  for fpprec:10 step 5 thru 50 do print (rp(77617.0b0, 33096.0b0));
1.17260394b0 1.17260394005318b0 1.8014398509481985173b16 1.172603940053178631858835b0 1.17260394005317863185883490452b0 1.1726039400531786318588349045201837b0 -8.27396059946821368141165095479816291999b-1 -8.27396059946821368141165095479816291999033116b-1 -8.2739605994682136814116509547981629199903311578439b-1

google will find you more info about Rump's polynomial..

Numbers of that magnitude combined with sixth and eighth powers should get you thinking 'hey, something's fishy here'.

Also, here's a good reference: http://epubs.siam.org/doi/book/10.1137/1.9780898718027

And I'm too headachey to bother trying, but I wonder what happens if you ignore that x/2y part and put the rest of the thing into Horner's form.

Accuracy estimation is a fundamental part of numerical analysis and has been since day one.