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 > >>>> > >>> > >>> > > > >_______________________________________________ > >Haskell mailing list > >Haskell@haskell.org > >http://www.haskell.org/mailman/listinfo/haskell > > -- http://ofb.net/~frederik/ _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell