[Python-checkins] r74565 - in python/branches/release26-maint: Lib/decimal.py Lib/test/decimaltestdata/extra.decTest Misc/NEWS

mark.dickinson python-checkins at python.org
Fri Aug 28 15:35:04 CEST 2009


Author: mark.dickinson
Date: Fri Aug 28 15:35:02 2009
New Revision: 74565

Log:
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.
........


Modified:
   python/branches/release26-maint/   (props changed)
   python/branches/release26-maint/Lib/decimal.py
   python/branches/release26-maint/Lib/test/decimaltestdata/extra.decTest
   python/branches/release26-maint/Misc/NEWS

Modified: python/branches/release26-maint/Lib/decimal.py
==============================================================================
--- python/branches/release26-maint/Lib/decimal.py	(original)
+++ python/branches/release26-maint/Lib/decimal.py	Fri Aug 28 15:35:02 2009
@@ -2693,12 +2693,15 @@
         other_nan = other._isnan()
         if self_nan or 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:
                         return _One
                     else:
                         return _NegativeOne
-                if self._int > other._int:
+                if self_key > other_key:
                     if sign:
                         return _NegativeOne
                     else:

Modified: python/branches/release26-maint/Lib/test/decimaltestdata/extra.decTest
==============================================================================
--- python/branches/release26-maint/Lib/test/decimaltestdata/extra.decTest	(original)
+++ python/branches/release26-maint/Lib/test/decimaltestdata/extra.decTest	Fri Aug 28 15:35:02 2009
@@ -154,6 +154,22 @@
 extr1302 fma 0E123 -Inf sNaN789 -> 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
 -- incorrect answers when the finite number required rounding; similarly
 -- for the other thre functions

Modified: python/branches/release26-maint/Misc/NEWS
==============================================================================
--- python/branches/release26-maint/Misc/NEWS	(original)
+++ python/branches/release26-maint/Misc/NEWS	Fri Aug 28 15:35:02 2009
@@ -72,6 +72,9 @@
 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
   small data on a buffered socket.socket.makefile() object.
 


More information about the Python-checkins mailing list