Thomas Davie tatd2 at kent.ac.uk
Sun Mar 13 18:08:26 EST 2005

```I may be barking up the wrong tree here, but I think the key to this
discussion is that real numbers are not bounded, while doubles are
bounded.  One cannot say what the smallest or largest real number are,
but one can say what the smallest or largest double are (and it is
unfortunately implementation specific, and probably pretty messy to set
up).  We could define maxBound as
(2^(mantisa_space))^(2^(exponent_space)) and min bound pretty
similarly... But I'm sure that everyone will agree that this is a
horrible hack.

One may even question whether Doubles should be bounded, in that they
are an attempt to represent real numbers, and as such should come as
close as is possible to being real numbers (meaning not having bounds).

Sorry for a possibly irrelevant ramble.

Bob

On Mar 13, 2005, at 11:02 PM, Lennart Augustsson wrote:

> And what would you have minBound and maxBound be?
> I guess you could use +/- the maximum value representable.
> Going for infinity is rather dodgy, and assumes an FP
> representation that has infinity.
>
>     -- Lennart
>
> Frederik Eaton wrote:
>> Interesting. In that case, I would agree that portability seems like
>> another reason to define a Bounded instance for Double. That way
>> users
>> could call 'maxBound' and 'minBound' rather than 1/0 and -(1/0)...
>> Frederik
>> On Fri, Mar 11, 2005 at 11:10:33AM +0100, Lennart Augustsson wrote:
>>> Haskell does not guarantee that 1/0 is well defined,
>>> nor that -(1/0) is different from 1/0.
>>> While the former is true for IEEE floating point numbers,
>>> the latter is only true when using affine infinities.
>>>
>>>     -- Lennart
>>>
>>> Frederik Eaton wrote:
>>>
>>>> Shouldn't Double, Float, etc. be instances of Bounded?
>>>>
>>>> I've declared e.g.
>>>>
>>>> instance Bounded Double where
>>>>   minBound = -(1/0)
>>>>   maxBound = 1/0
>>>>
>>>> in a module where I needed it and there doesn't seem to be any
>>>> issue
>>>> with the definition...
>>>>
>>>> Frederik
>>>>
>>>
>>>
>
> _______________________________________________