
Jonathan Cast
On 11 Jan 2008, at 10:12 AM, Achim Schneider wrote:
David Roundy
wrote: Prelude> let x=1e-300/1e300 Prelude> x 0.0 Prelude> x/x NaN
The "true" answer here is that x/x == 1.0 (not 0 or +Infinity), but there's no way for the computer to know this, so it's NaN.
Didn't catch this the first time around, but: only to a physicist. (I mean no disrespect to the author of darcs, but nevertheless the point stands). Back in the real world, 0 / 0 may be defined arbitrarily, or left undefined. (Defining it breaks the wonderful property that, if lim (xn) = x, lim (yn) = y, and x/y = z, then lim (xn / yn) = z. This is considered a Bad Thing by real mathematicians). In fact, in integration theory 0 * inf = 0 for certain 'multiplications', which gives the lie to 0 / 0.
whereas lim( 0 ) * lim( inf ) is anything you want, or, more precisely, the area of the thing you started with. It's like taking seven balls, assembling them into a hexagon and claiming it's a circle. Such things just "happen" if you are working with pure abstractions. -- (c) this sig last receiving data processing entity. Inspect headers for past copyright information. All rights reserved. Unauthorised copying, hiring, renting, public performance and/or broadcasting of this signature prohibited.