Henning Thielemann <[EMAIL PROTECTED]> writes:

> On Thu, 12 Jul 2007, Jon Fairbairn wrote:
> 
> > Now, a proper exact real type is doubtless very inefficient,
> > but wouldn't it be possible to define something that had a
> > fairly efficient head, and a lazy tail? So you'd have, say
> >
> > > data Real = R {big::(Ratio !Int !Int), small:: More_Precision}
> 
> Interesting approach.

But flawed as I put it: the big part can't express big
numbers! The big part needs to be either Rational (and the
precision of that part limited during arithmetic) or
BigFloat where

> Data BigFloat = BF {mantissa:: Int, exponent:: Integer}

(ie limited precision, but unbounded magnitude). If we were
to use BigFloat the base would need to be a power of ten to
get the desired results for things like Don's example)

> Somehow similar to making Integer a sum of Int and
> BigInt. Indeed, I have used transcendent arithmetic on
> Doubles to speedup computations for real numbers. However
> real numbers cannot be checked for equality. This can be
> also considered an advantage, because using (==) for
> floating point numbers is most oftenly a bug.

Agreed. That should be part of the change to the numeric
hierarchy. 

> I think that this hybrid type is nice and could be used by
> default. But it should not replace native floating point
> types, since they have guaranteed speed in favor of not
> guaranteed precision. And we need a correct
> implementation.

Absolutely!  

-- 
Jón Fairbairn                                 [EMAIL PROTECTED]
http://www.chaos.org.uk/~jf/Stuff-I-dont-want.html  (updated 2007-05-07)

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to