[Haskell-cafe] Re: 0/0 > 1 == False
Jonathan Cast
jonathanccast at fastmail.fm
Sun Jan 13 19:15:33 EST 2008
On 11 Jan 2008, at 11:25 PM, Achim Schneider wrote:
> Jonathan Cast <jonathanccast at fastmail.fm> wrote:
>
>> On 11 Jan 2008, at 10:12 AM, Achim Schneider wrote:
>>
>>> David Roundy <droundy at darcs.net> 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.
I think you're thinking of the Riemann integral (I was thinking of
the Lebesgue integral, and in particular the definition of the
integral for step functions). That integral can be informally
characterized as the sum of infinitely many terms, each zero (it's a
limit of finite sums, where the largest (in the sense of absolute
value) term in each sum goes to 0 as the sequence proceeds). That's
scarcely a rigorous characterization, and it overlooks a ton of
issues (like the fact that neither an infinite sum nor a sum
identically 0 terms is actually involved), and it's scarcely relevant
to the numerical analysis question of what 0/0 should return except
to point out that any definition is going to make *somebody*'s
algorithm silently go wrong...
jcc
More information about the Haskell-Cafe
mailing list