diff options
author | Mark Dickinson <dickinsm@gmail.com> | 2008-03-25 14:33:23 (GMT) |
---|---|---|
committer | Mark Dickinson <dickinsm@gmail.com> | 2008-03-25 14:33:23 (GMT) |
commit | 3b24ccbe7e2b43c4373e4b1e988df55978b819e7 (patch) | |
tree | c52e728abc2a9a08812e9222d6b3d09e63f6bcea | |
parent | f8f1fbd53c3a2b7fdda863f11242a976ec490e8f (diff) | |
download | cpython-3b24ccbe7e2b43c4373e4b1e988df55978b819e7.zip cpython-3b24ccbe7e2b43c4373e4b1e988df55978b819e7.tar.gz cpython-3b24ccbe7e2b43c4373e4b1e988df55978b819e7.tar.bz2 |
Issue #2478: Decimal(sqrt(0)) failed when the decimal context
was not explicitly supplied.
-rw-r--r-- | Lib/decimal.py | 6 | ||||
-rw-r--r-- | Lib/test/test_decimal.py | 6 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
3 files changed, 11 insertions, 3 deletions
diff --git a/Lib/decimal.py b/Lib/decimal.py index 5d25012..b775bee 100644 --- a/Lib/decimal.py +++ b/Lib/decimal.py @@ -2453,6 +2453,9 @@ class Decimal(object): def sqrt(self, context=None): """Return the square root of self.""" + if context is None: + context = getcontext() + if self._is_special: ans = self._check_nans(context=context) if ans: @@ -2466,9 +2469,6 @@ class Decimal(object): ans = _dec_from_triple(self._sign, '0', self._exp // 2) return ans._fix(context) - if context is None: - context = getcontext() - if self._sign == 1: return context._raise_error(InvalidOperation, 'sqrt(-x), x > 0') diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index 5e53318..46d2dc7 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -1315,6 +1315,12 @@ class DecimalUsabilityTest(unittest.TestCase): d = d1.max(d2) 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): @@ -72,6 +72,8 @@ Extensions Modules Library ------- +- Issue #2478: fix failure of decimal.Decimal(0).sqrt() + - Issue #2432: give DictReader the dialect and line_num attributes advertised in the docs. |