Use a more robust infinity check in _Py_HashDouble.
This fixes a test_decimal failure on FreeBSD 8.0. (modf apparently
doesn't follow C99 Annex F on FreeBSD.)
diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py
index b0f353b..bf9beec 100644
--- a/Lib/test/test_float.py
+++ b/Lib/test/test_float.py
@@ -948,6 +948,15 @@
self.assertFalse(NAN.is_inf())
self.assertFalse((0.).is_inf())
+ def test_hash_inf(self):
+ # the actual values here should be regarded as an
+ # implementation detail, but they need to be
+ # identical to those used in the Decimal module.
+ self.assertEqual(hash(float('inf')), 314159)
+ self.assertEqual(hash(float('-inf')), -271828)
+ self.assertEqual(hash(float('nan')), 0)
+
+
fromHex = float.fromhex
toHex = float.hex
class HexFloatTestCase(unittest.TestCase):