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. >> >