diff options
author | Facundo Batista <facundobatista@gmail.com> | 2007-12-19 12:53:01 (GMT) |
---|---|---|
committer | Facundo Batista <facundobatista@gmail.com> | 2007-12-19 12:53:01 (GMT) |
commit | 0f5e7bf3049408d6f4c1855807204c9f13ae98f9 (patch) | |
tree | 51f69fe054cb61a8d996190d23fd66c2c335d2b9 /Lib | |
parent | e93237dfcc4ee4feee62adafb4e7899487ca864b (diff) | |
download | cpython-0f5e7bf3049408d6f4c1855807204c9f13ae98f9.zip cpython-0f5e7bf3049408d6f4c1855807204c9f13ae98f9.tar.gz cpython-0f5e7bf3049408d6f4c1855807204c9f13ae98f9.tar.bz2 |
Some minor cleanups. Thanks Mark Dickinson.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/decimal.py | 53 |
1 files changed, 19 insertions, 34 deletions
diff --git a/Lib/decimal.py b/Lib/decimal.py index 882c3a2..257ba0c 100644 --- a/Lib/decimal.py +++ b/Lib/decimal.py @@ -183,7 +183,6 @@ class Clamped(DecimalException): number of zero digits are appended to the coefficient ("fold-down"). """ - class InvalidOperation(DecimalException): """An invalid operation was performed. @@ -209,14 +208,10 @@ class InvalidOperation(DecimalException): """ def handle(self, context, *args): if args: - if args[0] == 1: # sNaN, must drop 's' but keep diagnostics - ans = _dec_from_triple(args[1]._sign, args[1]._int, 'n', True) - return ans._fix_nan(context) - elif args[0] == 2: - return _dec_from_triple(args[1], args[2], 'n', True) + ans = _dec_from_triple(args[0]._sign, args[0]._int, 'n', True) + return ans._fix_nan(context) return NaN - class ConversionSyntax(InvalidOperation): """Trying to convert badly formed string. @@ -276,7 +271,6 @@ class Inexact(DecimalException): The inexact signal may be tested (or trapped) to determine if a given operation (or sequence of operations) was inexact. """ - pass class InvalidContext(InvalidOperation): """Invalid context. Unknown rounding, for example. @@ -303,7 +297,6 @@ class Rounded(DecimalException): The rounded signal may be tested (or trapped) to determine if a given operation (or sequence of operations) caused a loss of precision. """ - pass class Subnormal(DecimalException): """Exponent < Emin before rounding. @@ -315,7 +308,6 @@ class Subnormal(DecimalException): The subnormal signal may be tested (or trapped) to determine if a given or operation (or sequence of operations) yielded a subnormal result. """ - pass class Overflow(Inexact, Rounded): """Numerical overflow. @@ -337,7 +329,7 @@ class Overflow(Inexact, Rounded): the result is the same as for round-down if the sign of the intermediate result is 0, or is [1,inf] otherwise. In all cases, Inexact and Rounded will also be raised. - """ + """ def handle(self, context, sign, *args): if context.rounding in (ROUND_HALF_UP, ROUND_HALF_EVEN, @@ -661,7 +653,7 @@ class Decimal(object): """Returns whether the number is not actually one. 0 if a number - 1 if NaN (it could be a normal quiet NaN or a phantom one) + 1 if NaN 2 if sNaN """ if self._is_special: @@ -707,10 +699,10 @@ class Decimal(object): if self_is_nan == 2: return context._raise_error(InvalidOperation, 'sNaN', - 1, self) + self) if other_is_nan == 2: return context._raise_error(InvalidOperation, 'sNaN', - 1, other) + other) if self_is_nan: return self._fix_nan(context) @@ -901,7 +893,7 @@ class Decimal(object): if not self: # -Decimal('0') is Decimal('0'), not Decimal('-0') - ans = self.copy_sign(Dec_0) + ans = self.copy_abs() else: ans = self.copy_negate() @@ -921,7 +913,7 @@ class Decimal(object): if not self: # + (-0) = 0 - ans = self.copy_sign(Dec_0) + ans = self.copy_abs() else: ans = Decimal(self) @@ -1454,9 +1446,6 @@ class Decimal(object): context - context used. """ - if context is None: - context = getcontext() - if self._is_special: if self._isnan(): # decapitate payload if necessary @@ -1620,11 +1609,9 @@ class Decimal(object): if context is None: context = getcontext() if self._exp == 'N': - return context._raise_error(InvalidOperation, 'sNaN', - 1, self) + return context._raise_error(InvalidOperation, 'sNaN', self) if other._exp == 'N': - return context._raise_error(InvalidOperation, 'sNaN', - 1, other) + return context._raise_error(InvalidOperation, 'sNaN', other) if self._exp == 'n': product = self elif other._exp == 'n': @@ -1667,13 +1654,13 @@ class Decimal(object): if self_is_nan or other_is_nan or modulo_is_nan: if self_is_nan == 2: return context._raise_error(InvalidOperation, 'sNaN', - 1, self) + self) if other_is_nan == 2: return context._raise_error(InvalidOperation, 'sNaN', - 1, other) + other) if modulo_is_nan == 2: return context._raise_error(InvalidOperation, 'sNaN', - 1, modulo) + modulo) if self_is_nan: return self._fix_nan(context) if other_is_nan: @@ -2544,16 +2531,16 @@ class Decimal(object): other_is_nan = other._isnan() if self_is_nan == 2: return context._raise_error(InvalidOperation, 'sNaN', - 1, self) + self) if other_is_nan == 2: return context._raise_error(InvalidOperation, 'sNaN', - 1, other) + other) if self_is_nan: return context._raise_error(InvalidOperation, 'NaN in compare_signal', - 1, self) + self) if other_is_nan: return context._raise_error(InvalidOperation, 'NaN in compare_signal', - 1, other) + other) return self.compare(other, context=context) def compare_total(self, other): @@ -3197,8 +3184,8 @@ class Decimal(object): """Returns an indication of the class of self. The class is one of the following strings: - -sNaN - -NaN + sNaN + NaN -Infinity -Normal -Subnormal @@ -5164,8 +5151,6 @@ NaN = Decimal('NaN') Dec_0 = Decimal(0) Dec_p1 = Decimal(1) Dec_n1 = Decimal(-1) -Dec_p2 = Decimal(2) -Dec_n2 = Decimal(-2) # Infsign[sign] is infinity w/ that sign Infsign = (Inf, negInf) |