cpython: 91d7fadac271 (original) (raw)

Mercurial > cpython

changeset 90152:91d7fadac271

Issue #21136: Avoid unnecessary normalization in Fractions resulting from power and other operations. [#21136]

Mark Dickinson dickinsm@gmail.com
date Sat, 05 Apr 2014 09:29:00 +0100
parents 087cdbf49e80
children 9acc8196a82c
files Lib/fractions.py Lib/test/test_fractions.py Misc/NEWS
diffstat 3 files changed, 19 insertions(+), 10 deletions(-)[+] [-] Lib/fractions.py 23 Lib/test/test_fractions.py 3 Misc/NEWS 3

line wrap: on

line diff

--- a/Lib/fractions.py +++ b/Lib/fractions.py @@ -70,7 +70,7 @@ class Fraction(numbers.Rational): slots = ('_numerator', '_denominator') # We're immutable, so use new not init

Takes a string like '3/2' or '1.5', another Rational instance, a @@ -165,9 +165,12 @@ class Fraction(numbers.Rational): if denominator == 0: raise ZeroDivisionError('Fraction(%s, 0)' % numerator)

@classmethod @@ -453,10 +456,12 @@ class Fraction(numbers.Rational): power = b.numerator if power >= 0: return Fraction(a._numerator ** power,

@@ -480,15 +485,15 @@ class Fraction(numbers.Rational): def pos(a): """+a: Coerces a subclass instance to Fraction"""

def neg(a): """-a"""

def abs(a): """abs(a)"""

def trunc(a): """trunc(a)"""

--- a/Lib/test/test_fractions.py +++ b/Lib/test/test_fractions.py @@ -330,7 +330,6 @@ class FractionTest(unittest.TestCase): self.assertTypedEquals(F(-2, 10), round(F(-15, 100), 1)) self.assertTypedEquals(F(-2, 10), round(F(-25, 100), 1)) - def testArithmetic(self): self.assertEqual(F(1, 2), F(1, 10) + F(2, 5)) self.assertEqual(F(-3, 10), F(1, 10) - F(2, 5)) @@ -402,6 +401,8 @@ class FractionTest(unittest.TestCase): self.assertTypedEquals(2.0 , 4 ** F(1, 2)) self.assertTypedEquals(0.25, 2.0 ** F(-2, 1)) self.assertTypedEquals(1.0 + 0j, (1.0 + 0j) ** F(1, 10))

def testMixingWithDecimal(self): # Decimal refuses mixed arithmetic (but not mixed comparisons)

--- a/Misc/NEWS +++ b/Misc/NEWS @@ -29,6 +29,9 @@ Core and Builtins Library ------- +- Issue #21136: Avoid unnecessary normalization of Fractions resulting from