In the "Wrath of Kahan, 2" example, the input to e[z] might be intended to 
be a unum, but in the actual examples used in the book, q[x] returns a 
ubound, not a unum, so I stand by my analysis that the presentation is 
incorrect in an important way.

As a plug for Julia, it should be a lot easier to track types more 
explicitly in Julia than it is in Mathematica.

See the following calculation, using the published Mathematica prototype:

http://i.imgur.com/h4d5dlJ.png

<http://i.imgur.com/h4d5dlJ.png>


On Friday, July 31, 2015 at 2:02:27 PM UTC-4, John Gustafson wrote:
>
> Thanks for the detailed reading, Jason. If the input is a unum, then the 
> only way for it to contain zero is to be exactly zero. And that was the way 
> the example was used. If the input to the function is a ubound, then you 
> are correct that the test would need to be rewritten.
>
> On Friday, July 31, 2015 at 9:51:57 AM UTC-7, Jason Merrill wrote:
>>
>> On Thursday, July 30, 2015 at 3:54:39 PM UTC-4, Jason Merrill wrote:
>>>
>>>
>>> * "Wrath of Kahan, 2"
>>> In the unum computation, squaring operations are fused with squareu, but 
>>> float Interval calculations are not fused. I also believe the check for the 
>>> ubounds containing zero in e[z] is erroneous in a way that makes this 
>>> example very deceiving, but I don't want to go into that detail here.
>>>
>>
>> Since it looks like Dr. Gustafson is reading this thread, I wanted to 
>> give my specific objection to this example. You should be able to read the 
>> relevant text of the book here:
>>
>>
>> https://books.google.com/books?id=fZsXBgAAQBAJ&pg=PA176&lpg=PA176&dq=Kahan+constructed+the+following+fiendishly+clever+example&source=bl&ots=MH0vfJyw2V&sig=ZEzOR7sCXGyzcRbncbqlRQJdWaA&hl=en&sa=X&ved=0CB4Q6AEwAGoVChMIr9HmxOeFxwIVRlw-Ch3wjQ2K#v=onepage&q=Kahan%20constructed%20the%20following%20fiendishly%20clever%20example&f=false
>>
>> There's a function e(x) = (exp(x) - 1)/x, defined to be 1 when x is 0. In 
>> the unum definition of this function, the function checks whether x 
>> *contains* zero when x is a ubound, and in this case, returns 1 exactly. 
>> This incorrectly collapses bounds with a finite width down to an exact 
>> answer.
>>
>> If you look at the output of q(x) for the example points suggested in the 
>> text, it is a bound of finite width, but the containment check in e(x) 
>> collapses e(q(x)^2) down to an exact value, making unums look better than 
>> they are.
>>
>> To be clear, I interpret this as an honest mistake, but this is also one 
>> of the high excitement points of the book (at least it was for me), so it's 
>> important to be very careful about what's really going on here.
>>
>

Reply via email to