[New-bugs-announce] [issue21136] fractions.Fraction.__pow__ does unneeded renormalization

William Ehlhardt report at bugs.python.org
Thu Apr 3 01:52:30 CEST 2014


New submission from William Ehlhardt:

The following Python runs unnecessarily slowly:

import fractions
fractions.Fraction(6249919, 6250000) ** 89993


The problem here is that Fraction.__pow__ constructs a new Fraction() to return, and Fraction.__new__ tries to gcd to normalize the numerator/denominator. The gcd is very, very slow, and more to the point, unnecessary; raising a normalized fraction to an integer power will always yield another normalized fraction.


fractions.Fraction.__pow__ should use this trick to make the code snippet above fast.

----------
components: Library (Lib)
messages: 215409
nosy: Orborde
priority: normal
severity: normal
status: open
title: fractions.Fraction.__pow__ does unneeded renormalization
type: performance
versions: Python 2.7, Python 3.2

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue21136>
_______________________________________


More information about the New-bugs-announce mailing list