Frederik Eaton frederik at ugcs.caltech.edu
Sun Mar 13 20:30:03 EST 2005

```Perhaps some motivation is in order. In an interval arithmetic
library, I have 'Bounded a' as a constraint on the instance
'Fractional (Interval a)' because an interval of maximum bound can
result when dividing by an interval containing zero. In a function
solver library I wrote, parameters need to be specified with
constraints on their values - so that the natural default can be
(minBound, maxBound) I require them to be Bounded. Having these bounds
be plus and minus infinity is elegant, but not necessary for either of
these applications, so I think that even if some platforms don't have
affine infinities there should still be a suitably defined maxBound
and minBound for Double - just maximum and minimum representable
values should be fine. (Besides, exactly how many floating point
implementations use projective infinities?)

Frederik

On Sun, Mar 13, 2005 at 11:08:26PM +0000, Thomas Davie wrote:
> 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
> >>>>
> >>>
> >>>
> >
> >_______________________________________________