mirror of
https://github.com/python/cpython.git
synced 2025-08-21 17:25:34 +00:00
Decimal.sqrt(0) failed when the context was not
explicitly supplied.
This commit is contained in:
parent
a79e05097b
commit
26c25d9f64
3 changed files with 11 additions and 3 deletions
|
@ -2316,6 +2316,9 @@ class Decimal(object):
|
||||||
|
|
||||||
def sqrt(self, context=None):
|
def sqrt(self, context=None):
|
||||||
"""Return the square root of self."""
|
"""Return the square root of self."""
|
||||||
|
if context is None:
|
||||||
|
context = getcontext()
|
||||||
|
|
||||||
if self._is_special:
|
if self._is_special:
|
||||||
ans = self._check_nans(context=context)
|
ans = self._check_nans(context=context)
|
||||||
if ans:
|
if ans:
|
||||||
|
@ -2329,9 +2332,6 @@ class Decimal(object):
|
||||||
ans = _dec_from_triple(self._sign, '0', self._exp // 2)
|
ans = _dec_from_triple(self._sign, '0', self._exp // 2)
|
||||||
return ans._fix(context)
|
return ans._fix(context)
|
||||||
|
|
||||||
if context is None:
|
|
||||||
context = getcontext()
|
|
||||||
|
|
||||||
if self._sign == 1:
|
if self._sign == 1:
|
||||||
return context._raise_error(InvalidOperation, 'sqrt(-x), x > 0')
|
return context._raise_error(InvalidOperation, 'sqrt(-x), x > 0')
|
||||||
|
|
||||||
|
|
|
@ -1192,6 +1192,12 @@ class DecimalUsabilityTest(unittest.TestCase):
|
||||||
d = d1.max(d2)
|
d = d1.max(d2)
|
||||||
self.assertTrue(type(d) is Decimal)
|
self.assertTrue(type(d) is Decimal)
|
||||||
|
|
||||||
|
def test_implicit_context(self):
|
||||||
|
# Check results when context given implicitly. (Issue 2478)
|
||||||
|
c = getcontext()
|
||||||
|
self.assertEqual(str(Decimal(0).sqrt()),
|
||||||
|
str(c.sqrt(Decimal(0))))
|
||||||
|
|
||||||
|
|
||||||
class DecimalPythonAPItests(unittest.TestCase):
|
class DecimalPythonAPItests(unittest.TestCase):
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,8 @@ Core and builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #2478: fix failure of decimal.Decimal(0).sqrt()
|
||||||
|
|
||||||
- Issue #2432: give DictReader the dialect and line_num attributes
|
- Issue #2432: give DictReader the dialect and line_num attributes
|
||||||
advertised in the docs.
|
advertised in the docs.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue