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

**Tim Peters
**
tim.one@comcast.net

*Wed, 02 Oct 2002 21:44:27 -0400*

[Andrew Koenig]
>* By the way, has anyone considered the idea of making operations
*>* on rationals faster by never storing any trailing zeroes in the
*>* numerator or denominator? Instead, strip them and store the
*>* (signed) difference between the number of zeroes you've stripped
*>* from the numerator and the number you've stripped from the denominator.
*>*
*>* In other words, instead of storing (num, denom) and having the number
*>* be the (exact) value of num/demon, store (num, denom, exp) and have the
*>* number be the (exact) value of (2**exp)*num/denom.
*
How many trailing zeroes do you expect to save this way? "On average", a
random int has exactly n (>= 0) trailing zero bits with probability
1/2**(n+1). Then how expensive is it for operations to keep track of them
appropriately (esp. + and -, where the split representation seems offhand
(to me) unnatural to work with)? My FixedPoint.py does a variation of this
for a form of unnormalized rational, except the "trailing zeroes" there are
wrt base 10. But it wasn't to save time (heh) in that context, it was to
create a faithful illusion of exact decimal arithmetic.