Merged revisions 74564 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r74564 | mark.dickinson | 2009-08-28 14:25:02 +0100 (Fri, 28 Aug 2009) | 3 lines Issue #6794: Fix handling of NaNs in Decimal.compare_total and Decimal.compare_total_mag. ........
This commit is contained in:
parent
fa680dcd2f
commit
7f265b7fac
|
@ -2693,12 +2693,15 @@ class Decimal(object):
|
||||||
other_nan = other._isnan()
|
other_nan = other._isnan()
|
||||||
if self_nan or other_nan:
|
if self_nan or other_nan:
|
||||||
if self_nan == other_nan:
|
if self_nan == other_nan:
|
||||||
if self._int < other._int:
|
# compare payloads as though they're integers
|
||||||
|
self_key = len(self._int), self._int
|
||||||
|
other_key = len(other._int), other._int
|
||||||
|
if self_key < other_key:
|
||||||
if sign:
|
if sign:
|
||||||
return _One
|
return _One
|
||||||
else:
|
else:
|
||||||
return _NegativeOne
|
return _NegativeOne
|
||||||
if self._int > other._int:
|
if self_key > other_key:
|
||||||
if sign:
|
if sign:
|
||||||
return _NegativeOne
|
return _NegativeOne
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -154,6 +154,22 @@ extr1301 fma Inf 0 sNaN456 -> NaN Invalid_operation
|
||||||
extr1302 fma 0E123 -Inf sNaN789 -> NaN Invalid_operation
|
extr1302 fma 0E123 -Inf sNaN789 -> NaN Invalid_operation
|
||||||
extr1302 fma -Inf 0E-456 sNaN148 -> NaN Invalid_operation
|
extr1302 fma -Inf 0E-456 sNaN148 -> NaN Invalid_operation
|
||||||
|
|
||||||
|
-- Issue #6794: when comparing NaNs using compare_total, payloads
|
||||||
|
-- should be compared as though positive integers; not
|
||||||
|
-- lexicographically as strings.
|
||||||
|
extr1400 comparetotal NaN123 NaN45 -> 1
|
||||||
|
extr1401 comparetotal sNaN123 sNaN45 -> 1
|
||||||
|
extr1402 comparetotal -NaN123 -NaN45 -> -1
|
||||||
|
extr1403 comparetotal -sNaN123 -sNaN45 -> -1
|
||||||
|
extr1404 comparetotal NaN45 NaN123 -> -1
|
||||||
|
extr1405 comparetotal sNaN45 sNaN123 -> -1
|
||||||
|
extr1406 comparetotal -NaN45 -NaN123 -> 1
|
||||||
|
extr1407 comparetotal -sNaN45 -sNaN123 -> 1
|
||||||
|
|
||||||
|
extr1410 comparetotal -sNaN63450748854172416 -sNaN911993 -> -1
|
||||||
|
extr1411 comparetotmag NaN1222222222222 -NaN999999 -> 1
|
||||||
|
|
||||||
|
|
||||||
-- max/min/max_mag/min_mag bug in 2.5.2/2.6/3.0: max(NaN, finite) gave
|
-- max/min/max_mag/min_mag bug in 2.5.2/2.6/3.0: max(NaN, finite) gave
|
||||||
-- incorrect answers when the finite number required rounding; similarly
|
-- incorrect answers when the finite number required rounding; similarly
|
||||||
-- for the other thre functions
|
-- for the other thre functions
|
||||||
|
|
|
@ -72,6 +72,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #6794: Fix Decimal.compare_total and Decimal.compare_total_mag: NaN
|
||||||
|
payloads are now ordered by integer value rather than lexicographically.
|
||||||
|
|
||||||
- Issue #6117: Fix O(n**2) performance degradation when outputting lots of
|
- Issue #6117: Fix O(n**2) performance degradation when outputting lots of
|
||||||
small data on a buffered socket.socket.makefile() object.
|
small data on a buffered socket.socket.makefile() object.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue