[Python-Dev] Re: PEP239 (Rational Numbers) Reference Implementation and new issues

Christian Tismer tismer@tismer.com
Wed, 02 Oct 2002 19:55:25 -0700


Andrew Koenig wrote:
> Greg> But how long are they going to *stay* small and efficient,
> Greg> once you start doing arithmetic on them?
> 
> Depends on what kind of arithmetic.

I doubt very much that this would help in more than few
simple cases. Floats with high exponents are usually
incorrect, since the number of bits of the exact
representation is already truncated to the float limitation.
With an exact rational representation all the bits are
preserved, and it is unlikely that many of the lower bits
simply become zero.

> Greg> The problem as I see it is not the magnitude of the number, but
> Greg> that the number of significant bits grows without bound, if you
> Greg> never throw any of them away.
> 
> So I'm suggesting that maybe it won't get bad as quickly if
> you keep only the significant bits :-)

Yes. And this is what a rounding to float would do for you.

> Seriously, I don't know whether it would help in practice.
> It might be that normalizing rationals from time to time would
> be enough.

Ok, not just zeros, but normalizing the fraction to no
common denominator. That makes sense if lots of small
numbers/fractions were multiplied and prime factors
pile up.
Not so with addition. This creates completely different
prime factors all the time, and addition becomes much
more expensive than multiplication when the common
denominator must always be reduced to the minimum.

gotta-be-expensive  -- chris

-- 
Christian Tismer             :^)   <mailto:tismer@tismer.com>
Mission Impossible 5oftware  :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34  home +49 30 802 86 56  pager +49 173 24 18 776
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/