bin/170206: complex arcsinh, log, etc.
Stephen Montgomery-Smith
stephen at missouri.edu
Sat Jul 28 15:50:10 UTC 2012
The following reply was made to PR bin/170206; it has been noted by GNATS.
From: Stephen Montgomery-Smith <stephen at missouri.edu>
To: Bruce Evans <brde at optusnet.com.au>
Cc: freebsd-bugs at freebsd.org, FreeBSD-gnats-submit at freebsd.org,
Stephen Montgomery-Smith <stephen at freebsd.org>
Subject: Re: bin/170206: complex arcsinh, log, etc.
Date: Sat, 28 Jul 2012 10:40:41 -0500
On 07/28/2012 02:35 AM, Bruce Evans wrote:
> On Sat, 28 Jul 2012, Stephen Montgomery-Smith wrote:
>
>> On 07/28/2012 12:25 AM, Bruce Evans wrote:
>>>
>>> #define DE DBL_EPSILON // for clarity
>>>
>>> (1) 1 + DE/2 = 1 (half way case rounded down to even)
>>> (2) 1 + DE/2 + DE/2 = 1 (double rounding)
>>> (3) DE/2 + DE/2 + 1 = 1 + DE (null rounding)
>>>
>>> We want to add -1 to a value near 1 like the above. Now a leading 1
>>> in the above will cancel with the -1, and the the order in (3) becomes
>>> the inaccurate one.
>>
>> Yes, but in my situation, I am rather sure that when I am adding
>> highest to lowest that this won't occur. I am starting with -1, then
>> adding something close to 1, then adding lots of smaller terms. And I
>> find it very plausible that the kind of situation you describe won't
>> happen. x0*x0 is close to 1. x0*x1 is at most sqrt(DE) times smaller.
>> And so on. So I think the kind of situation you describe should never
>> happen.
>
> Ahem. FP^2 space is not nearly as large as the metaverse (only 2^256
> cases even for sparc64), but it is large enough so that almost
> everything that can happen in it does happen in it. You are right
> that problems are far away with the x* terms (x0*x0 had better not be
> very close to 1 unless it is exactly 1, since it it is too close then
> it will no longer be many times larger than x0*x1 after subtracting 1
> from it; the other cases for x* are simpler). The problem is with the
> additional y* terms. x and y are independent, so for many or most x,
> there are many y's with bits that cause half-way cases when combined
> with x.
> After splitting and squaring, the bits move around, so it hard to generate
> or control the offending y's.
>
>> As I said, I don't have a mathematical proof that the kind of thing
>> you describe can NEVER happen. I just have never observed it happen.
>
> There might be a measly 2^128 bad cases out of 2^256. Then no one would
> even observe them by chance :-). But half-way cases are fairly common.
I agree. That is why I am sad that I don't have a mathematical proof.
and the probability of picking out the bad example by chance is
something like the chances of being hit by a large asteroid, so we will
never see it happen in a random experiment.
More information about the freebsd-bugs
mailing list