[Python-checkins] cpython (merge 3.5 -> default): Issue #27539: Merge from 3.5.
mark.dickinson
python-checkins at python.org
Mon Aug 22 05:56:19 EDT 2016
https://hg.python.org/cpython/rev/902e82f71880
changeset: 102834:902e82f71880
parent: 102832:485d7c341386
parent: 102833:7eea5b87f5fa
user: Mark Dickinson <dickinsm at gmail.com>
date: Mon Aug 22 10:56:06 2016 +0100
summary:
Issue #27539: Merge from 3.5.
files:
Lib/fractions.py | 6 +++++-
Lib/test/test_fractions.py | 13 +++++++++++++
Misc/ACKS | 1 +
Misc/NEWS | 3 +++
4 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/Lib/fractions.py b/Lib/fractions.py
--- a/Lib/fractions.py
+++ b/Lib/fractions.py
@@ -460,10 +460,14 @@
return Fraction(a._numerator ** power,
a._denominator ** power,
_normalize=False)
- else:
+ elif a._numerator >= 0:
return Fraction(a._denominator ** -power,
a._numerator ** -power,
_normalize=False)
+ else:
+ return Fraction((-a._denominator) ** -power,
+ (-a._numerator) ** -power,
+ _normalize=False)
else:
# A fractional power will generally produce an
# irrational number.
diff --git a/Lib/test/test_fractions.py b/Lib/test/test_fractions.py
--- a/Lib/test/test_fractions.py
+++ b/Lib/test/test_fractions.py
@@ -356,6 +356,19 @@
z = pow(F(-1), F(1, 2))
self.assertAlmostEqual(z.real, 0)
self.assertEqual(z.imag, 1)
+ # Regression test for #27539.
+ p = F(-1, 2) ** 0
+ self.assertEqual(p, F(1, 1))
+ self.assertEqual(p.numerator, 1)
+ self.assertEqual(p.denominator, 1)
+ p = F(-1, 2) ** -1
+ self.assertEqual(p, F(-2, 1))
+ self.assertEqual(p.numerator, -2)
+ self.assertEqual(p.denominator, 1)
+ p = F(-1, 2) ** -2
+ self.assertEqual(p, F(4, 1))
+ self.assertEqual(p.numerator, 4)
+ self.assertEqual(p.denominator, 1)
def testMixedArithmetic(self):
self.assertTypedEquals(F(11, 10), F(1, 10) + 1)
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -218,6 +218,7 @@
Ralph Butler
Laurent De Buyst
Zach Byrne
+Vedran Čačić
Nicolas Cadou
Jp Calderone
Arnaud Calmettes
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -38,6 +38,9 @@
Library
-------
+- Issue #27539: Fix unnormalised ``Fraction.__pow__`` result in the case
+ of negative exponent and negative base.
+
- Issue #21718: cursor.description is now available for queries using CTEs.
- Issue #27819: In distutils sdists, simply produce the "gztar" (gzipped tar
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list