Issue #27539: Merge from 3.5.
This commit is contained in:
commit
0add84b9b8
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -218,6 +218,7 @@ Katherine Busch
|
|||
Ralph Butler
|
||||
Laurent De Buyst
|
||||
Zach Byrne
|
||||
Vedran Čačić
|
||||
Nicolas Cadou
|
||||
Jp Calderone
|
||||
Arnaud Calmettes
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue