Issue #27539: Merge from 3.5.

This commit is contained in:
Mark Dickinson 2016-08-22 10:56:06 +01:00
commit 0add84b9b8
4 changed files with 22 additions and 1 deletions

View File

@ -460,10 +460,14 @@ class Fraction(numbers.Rational):
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.

View File

@ -356,6 +356,19 @@ class FractionTest(unittest.TestCase):
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)

View File

@ -218,6 +218,7 @@ Katherine Busch
Ralph Butler
Laurent De Buyst
Zach Byrne
Vedran Čačić
Nicolas Cadou
Jp Calderone
Arnaud Calmettes

View File

@ -38,6 +38,9 @@ Core and Builtins
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