Post Reply 
A quick precision test
06-05-2014, 01:18 AM (This post was last modified: 06-05-2014 01:19 AM by Claudio L..)
Post: #39
RE: A quick precision test
(06-04-2014 10:09 PM)Paul Dale Wrote:  
(06-04-2014 02:17 PM)Claudio L. Wrote:  The power function is guaranteed to give you an accurate result with 34 good digits, for any 2 parameters (in this case, your guess that it's less precise is incorrect).

I very very much doubt this. Perhaps results with one ULP error but even then I doubt it is that good. The power function is a very difficult one to get right. The GNU C library implementation for 64 bit doubles, in bad cases, falls back to multiple precision calculations carrying over 1600 guard bits. I expect someone rather clever spent a lot of time and effort determining that number as an upper bound to guarantee correctness for the 53 mantissa bits in the result.

I don't know that much, but the documentation of mpdecimal says the error is 1 ULP, so we use 9 extra digits and then we round, so the 'bad rounding' case would have to be in the form 999999995 in order for the 1 ULP error to give a badly rounded result. Notice that I said 'accurate digits' not 'correctly rounded'. The 1 ULP case may still happen, with a chance of 1 in 10^9.

(06-04-2014 10:09 PM)Paul Dale Wrote:  
Quote:I don't know how decNumber does it in particular, but in general powers with small integer exponents are handled by a sequence of multiplications, while powers of real numbers or large numbers are usually done through logarithms:

Code:
x^a = exp( a * ln(x) )

Which is usually very accurate, as ln() and exp() are both guaranteed to give you 34+GUARD good digits on any number you throw at them.

Two points here:

  1. Expressing power as x^a = exp( a * ln(x) ) is prone to digit loss. Don't expect an accurate result unless you have a lot of extra digits. See the 1600 above Smile
  2. The decNumber versions I've looked at do not guarantee ln() and exp() are correctly rounded, the source just claims close but usually within one ULP.


A good rule of thumb to follow is to assume correct rounding for the four arithmetic operations and square root -- these are mandated by the IEEE floating point standards these days. Everything else is close.

- Pauli

I agree, but "close" as in the last digit may be off by 1 due to rounding and only in some corner cases (like 1 in 10^9 chance), on most numbers you should get the right value.

I'd love to test some corner cases to see how the algorithms behave (like that case that needs 1600 digits, do you have any links to good material on this subject?). I did some tests of my own but I don't know what the corner cases are. I'd like to have some literature where they list cases that I can use to stress the algorithms and see the results.

Claudio
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
A quick precision test - pito - 06-02-2014, 10:37 PM
RE: A quick precison test - Paul Dale - 06-02-2014, 11:04 PM
RE: A quick precison test - pito - 06-03-2014, 12:07 AM
RE: A quick precison test - Paul Dale - 06-03-2014, 12:13 AM
RE: A quick precison test - pito - 06-03-2014, 12:27 AM
RE: A quick precison test - Paul Dale - 06-03-2014, 12:36 AM
RE: A quick precision test - Claudio L. - 06-04-2014, 01:25 PM
RE: A quick precision test - walter b - 06-04-2014, 01:33 PM
RE: A quick precision test - Claudio L. - 06-04-2014, 01:42 PM
RE: A quick precision test - Paul Dale - 06-04-2014, 09:47 PM
RE: A quick precison test - walter b - 06-03-2014, 11:24 AM
RE: A quick precision test - Dieter - 06-04-2014, 01:08 PM
RE: A quick precision test - walter b - 06-04-2014, 01:23 PM
RE: A quick precison test - HP67 - 06-03-2014, 09:06 AM
RE: A quick precision test - everettr - 06-03-2014, 02:11 PM
RE: A quick precison test - pito - 06-03-2014, 07:23 AM
RE: A quick precison test - HP67 - 06-03-2014, 11:50 AM
RE: A quick precison test - Paul Dale - 06-03-2014, 12:25 PM
RE: A quick precision test - walter b - 06-03-2014, 01:52 PM
RE: A quick precision test - Paul Dale - 06-03-2014, 10:10 PM
RE: A quick precison test - HP67 - 06-03-2014, 12:41 PM
RE: A quick precision test - HP67 - 06-03-2014, 01:01 PM
RE: A quick precision test - walter b - 06-03-2014, 01:56 PM
RE: A quick precision test - pito - 06-04-2014, 01:38 PM
RE: A quick precision test - Claudio L. - 06-04-2014, 02:17 PM
RE: A quick precision test - Paul Dale - 06-04-2014, 10:09 PM
RE: A quick precision test - Claudio L. - 06-05-2014 01:18 AM
RE: A quick precision test - Paul Dale - 06-05-2014, 02:00 AM
RE: A quick precision test - Claudio L. - 06-05-2014, 11:03 AM
RE: A quick precision test - Dieter - 06-05-2014, 11:23 AM
RE: A quick precision test - Paul Dale - 06-05-2014, 12:06 PM
RE: A quick precision test - Claudio L. - 06-05-2014, 09:08 PM
RE: A quick precision test - Paul Dale - 06-05-2014, 10:09 PM
RE: A quick precision test - Claudio L. - 06-06-2014, 12:57 AM
RE: A quick precision test - Claudio L. - 06-06-2014, 01:15 AM
RE: A quick precision test - Paul Dale - 06-06-2014, 01:35 AM
RE: A quick precision test - pito - 06-06-2014, 11:16 AM
RE: A quick precision test - Claudio L. - 06-06-2014, 12:04 PM
RE: A quick precision test - Paul Dale - 06-06-2014, 10:55 PM
RE: A quick precision test - pito - 06-07-2014, 11:56 AM
RE: A quick precision test - Paul Dale - 06-07-2014, 12:20 PM
RE: A quick precision test - pito - 06-07-2014, 04:44 PM
RE: A quick precision test - walter b - 06-08-2014, 05:28 PM
RE: A quick precision test - Claudio L. - 06-05-2014, 09:25 PM
RE: A quick precision test - Paul Dale - 06-05-2014, 10:20 PM
RE: A quick precision test - Claudio L. - 06-06-2014, 01:03 AM
RE: A quick precision test - Paul Dale - 06-06-2014, 01:46 AM
RE: A quick precision test - pito - 06-04-2014, 02:12 PM
RE: A quick precision test - pito - 06-04-2014, 02:31 PM
RE: A quick precision test - pito - 06-05-2014, 08:49 PM
RE: A quick precision test - walter b - 06-05-2014, 09:07 PM
RE: A quick precision test - pito - 06-05-2014, 09:13 PM
RE: A quick precision test - Mark Hardman - 06-05-2014, 09:21 PM
RE: A quick precision test - pito - 06-06-2014, 12:19 PM
RE: A quick precision test - pito - 06-08-2014, 12:44 PM
RE: A quick precision test - walter b - 06-08-2014, 01:57 PM
RE: A quick precision test - pito - 06-08-2014, 02:07 PM
RE: A quick precision test - walter b - 06-08-2014, 03:00 PM
RE: A quick precision test - Paul Dale - 06-08-2014, 10:46 PM



User(s) browsing this thread: 1 Guest(s)