annotate Lib/test/test_float.py @ 48715:48dddfd2fbf3

RPC_WSTR is not available Visual Studio 2003 or earlier. (Maybe I should have defined RPC_WSTR on old compiler, but uuidcreate() is only place using it, so I simply replaced with unsigned short *)
author Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
date Sun, 17 Aug 2008 07:26:26 +0000
parents de0bf60f1245
children a77022dc3f61
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
1
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
2 import unittest, struct
44260
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
3 import os
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46664
diff changeset
4 from test import support
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
5 import math
48497
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
6 from math import isinf, isnan, copysign, ldexp
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
7 import operator
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
8
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
9 INF = float("inf")
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
10 NAN = float("nan")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
11
46664
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
12 class GeneralFloatCases(unittest.TestCase):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
13
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
14 def test_float(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
15 self.assertEqual(float(3.14), 3.14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
16 self.assertEqual(float(314), 314.0)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
17 self.assertEqual(float(" 3.14 "), 3.14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
18 self.assertRaises(ValueError, float, " 0x3.1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
19 self.assertRaises(ValueError, float, " -0x3.p-1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
20 self.assertRaises(ValueError, float, " +0x3.p-1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
21 self.assertRaises(ValueError, float, "++3.14")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
22 self.assertRaises(ValueError, float, "+-3.14")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
23 self.assertRaises(ValueError, float, "-+3.14")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
24 self.assertRaises(ValueError, float, "--3.14")
47322
027c887e9da9 remove test.support.have_unicode
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
25 self.assertEqual(float(unicode(" 3.14 ")), 3.14)
027c887e9da9 remove test.support.have_unicode
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
26 self.assertEqual(float(unicode(" \u0663.\u0661\u0664 ",'raw-unicode-escape')), 3.14)
027c887e9da9 remove test.support.have_unicode
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
27 # Implementation limitation in PyFloat_FromString()
027c887e9da9 remove test.support.have_unicode
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
28 self.assertRaises(ValueError, float, unicode("1"*10000))
46664
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
29
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46664
diff changeset
30 @support.run_with_locale('LC_NUMERIC', 'fr_FR', 'de_DE')
46664
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
31 def test_float_with_comma(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
32 # set locale to something that doesn't use '.' for the decimal point
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
33 # float must not accept the locale specific decimal point but
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
34 # it still has to accept the normal python syntac
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
35 import locale
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
36 if not locale.localeconv()['decimal_point'] == ',':
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
37 return
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
38
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
39 self.assertEqual(float(" 3.14 "), 3.14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
40 self.assertEqual(float("+3.14 "), 3.14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
41 self.assertEqual(float("-3.14 "), -3.14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
42 self.assertEqual(float(".14 "), .14)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
43 self.assertEqual(float("3. "), 3.0)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
44 self.assertEqual(float("3.e3 "), 3000.0)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
45 self.assertEqual(float("3.2e3 "), 3200.0)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
46 self.assertEqual(float("2.5e-1 "), 0.25)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
47 self.assertEqual(float("5e-1"), 0.5)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
48 self.assertRaises(ValueError, float, " 3,14 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
49 self.assertRaises(ValueError, float, " +3,14 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
50 self.assertRaises(ValueError, float, " -3,14 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
51 self.assertRaises(ValueError, float, " 0x3.1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
52 self.assertRaises(ValueError, float, " -0x3.p-1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
53 self.assertRaises(ValueError, float, " +0x3.p-1 ")
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
54 self.assertEqual(float(" 25.e-1 "), 2.5)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
55 self.assertEqual(fcmp(float(" .25e-1 "), .025), 0)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
56
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
57 def test_floatconversion(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
58 # Make sure that calls to __float__() work properly
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
59 class Foo0:
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
60 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
61 return 42.
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
62
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
63 class Foo1(object):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
64 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
65 return 42.
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
66
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
67 class Foo2(float):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
68 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
69 return 42.
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
70
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
71 class Foo3(float):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
72 def __new__(cls, value=0.):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
73 return float.__new__(cls, 2*value)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
74
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
75 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
76 return self
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
77
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
78 class Foo4(float):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
79 def __float__(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
80 return 42
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
81
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
82 self.assertAlmostEqual(float(Foo0()), 42.)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
83 self.assertAlmostEqual(float(Foo1()), 42.)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
84 self.assertAlmostEqual(float(Foo2()), 42.)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
85 self.assertAlmostEqual(float(Foo3(21)), 42.)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
86 self.assertRaises(TypeError, float, Foo4(42))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
87
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
88 def test_floatasratio(self):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
89 for f, ratio in [
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
90 (0.875, (7, 8)),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
91 (-0.875, (-7, 8)),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
92 (0.0, (0, 1)),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
93 (11.5, (23, 2)),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
94 ]:
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
95 self.assertEqual(f.as_integer_ratio(), ratio)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
96
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
97 for i in range(10000):
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
98 f = random.random()
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
99 f *= 10 ** random.randint(-100, 100)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
100 n, d = f.as_integer_ratio()
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
101 self.assertEqual(float(n).__truediv__(d), f)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
102
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
103 R = fractions.Fraction
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
104 self.assertEqual(R(0, 1),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
105 R(*float(0.0).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
106 self.assertEqual(R(5, 2),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
107 R(*float(2.5).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
108 self.assertEqual(R(1, 2),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
109 R(*float(0.5).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
110 self.assertEqual(R(4728779608739021, 2251799813685248),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
111 R(*float(2.1).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
112 self.assertEqual(R(-4728779608739021, 2251799813685248),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
113 R(*float(-2.1).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
114 self.assertEqual(R(-2100, 1),
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
115 R(*float(-2100.0).as_integer_ratio()))
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
116
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
117 self.assertRaises(OverflowError, float('inf').as_integer_ratio)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
118 self.assertRaises(OverflowError, float('-inf').as_integer_ratio)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
119 self.assertRaises(ValueError, float('nan').as_integer_ratio)
031dfe455585 Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 46477
diff changeset
120
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
121 class FormatFunctionsTestCase(unittest.TestCase):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
122
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
123 def setUp(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
124 self.save_formats = {'double':float.__getformat__('double'),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
125 'float':float.__getformat__('float')}
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
126
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
127 def tearDown(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
128 float.__setformat__('double', self.save_formats['double'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
129 float.__setformat__('float', self.save_formats['float'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
130
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
131 def test_getformat(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
132 self.assert_(float.__getformat__('double') in
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
133 ['unknown', 'IEEE, big-endian', 'IEEE, little-endian'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
134 self.assert_(float.__getformat__('float') in
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
135 ['unknown', 'IEEE, big-endian', 'IEEE, little-endian'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
136 self.assertRaises(ValueError, float.__getformat__, 'chicken')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
137 self.assertRaises(TypeError, float.__getformat__, 1)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
138
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
139 def test_setformat(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
140 for t in 'double', 'float':
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
141 float.__setformat__(t, 'unknown')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
142 if self.save_formats[t] == 'IEEE, big-endian':
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
143 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
144 t, 'IEEE, little-endian')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
145 elif self.save_formats[t] == 'IEEE, little-endian':
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
146 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
147 t, 'IEEE, big-endian')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
148 else:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
149 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
150 t, 'IEEE, big-endian')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
151 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
152 t, 'IEEE, little-endian')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
153 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
154 t, 'chicken')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
155 self.assertRaises(ValueError, float.__setformat__,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
156 'chicken', 'unknown')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
157
41725
d1146d4db549 Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents: 35014
diff changeset
158 BE_DOUBLE_INF = b'\x7f\xf0\x00\x00\x00\x00\x00\x00'
43947
cbc8b3bd3157 Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents: 43777
diff changeset
159 LE_DOUBLE_INF = bytes(reversed(BE_DOUBLE_INF))
41725
d1146d4db549 Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents: 35014
diff changeset
160 BE_DOUBLE_NAN = b'\x7f\xf8\x00\x00\x00\x00\x00\x00'
43947
cbc8b3bd3157 Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents: 43777
diff changeset
161 LE_DOUBLE_NAN = bytes(reversed(BE_DOUBLE_NAN))
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
162
41725
d1146d4db549 Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents: 35014
diff changeset
163 BE_FLOAT_INF = b'\x7f\x80\x00\x00'
43947
cbc8b3bd3157 Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents: 43777
diff changeset
164 LE_FLOAT_INF = bytes(reversed(BE_FLOAT_INF))
41725
d1146d4db549 Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents: 35014
diff changeset
165 BE_FLOAT_NAN = b'\x7f\xc0\x00\x00'
43947
cbc8b3bd3157 Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents: 43777
diff changeset
166 LE_FLOAT_NAN = bytes(reversed(BE_FLOAT_NAN))
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
167
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
168 # on non-IEEE platforms, attempting to unpack a bit pattern
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
169 # representing an infinity or a NaN should raise an exception.
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
170
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
171 class UnknownFormatTestCase(unittest.TestCase):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
172 def setUp(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
173 self.save_formats = {'double':float.__getformat__('double'),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
174 'float':float.__getformat__('float')}
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
175 float.__setformat__('double', 'unknown')
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
176 float.__setformat__('float', 'unknown')
35014
275843630522 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 34972
diff changeset
177
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
178 def tearDown(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
179 float.__setformat__('double', self.save_formats['double'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
180 float.__setformat__('float', self.save_formats['float'])
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
181
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
182 def test_double_specials_dont_unpack(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
183 for fmt, data in [('>d', BE_DOUBLE_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
184 ('>d', BE_DOUBLE_NAN),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
185 ('<d', LE_DOUBLE_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
186 ('<d', LE_DOUBLE_NAN)]:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
187 self.assertRaises(ValueError, struct.unpack, fmt, data)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
188
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
189 def test_float_specials_dont_unpack(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
190 for fmt, data in [('>f', BE_FLOAT_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
191 ('>f', BE_FLOAT_NAN),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
192 ('<f', LE_FLOAT_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
193 ('<f', LE_FLOAT_NAN)]:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
194 self.assertRaises(ValueError, struct.unpack, fmt, data)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
195
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
196
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
197 # on an IEEE platform, all we guarantee is that bit patterns
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
198 # representing infinities or NaNs do not raise an exception; all else
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
199 # is accident (today).
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
200 # let's also try to guarantee that -0.0 and 0.0 don't get confused.
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
201
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
202 class IEEEFormatTestCase(unittest.TestCase):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
203 if float.__getformat__("double").startswith("IEEE"):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
204 def test_double_specials_do_unpack(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
205 for fmt, data in [('>d', BE_DOUBLE_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
206 ('>d', BE_DOUBLE_NAN),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
207 ('<d', LE_DOUBLE_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
208 ('<d', LE_DOUBLE_NAN)]:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
209 struct.unpack(fmt, data)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
210
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
211 if float.__getformat__("float").startswith("IEEE"):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
212 def test_float_specials_do_unpack(self):
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
213 for fmt, data in [('>f', BE_FLOAT_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
214 ('>f', BE_FLOAT_NAN),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
215 ('<f', LE_FLOAT_INF),
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
216 ('<f', LE_FLOAT_NAN)]:
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
217 struct.unpack(fmt, data)
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
218
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
219 if float.__getformat__("double").startswith("IEEE"):
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
220 def test_negative_zero(self):
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
221 import math
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
222 def pos_pos():
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
223 return 0.0, math.atan2(0.0, -1)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
224 def pos_neg():
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
225 return 0.0, math.atan2(-0.0, -1)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
226 def neg_pos():
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
227 return -0.0, math.atan2(0.0, -1)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
228 def neg_neg():
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
229 return -0.0, math.atan2(-0.0, -1)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
230 self.assertEquals(pos_pos(), neg_pos())
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
231 self.assertEquals(pos_neg(), neg_neg())
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41725
diff changeset
232
42817
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
233 class FormatTestCase(unittest.TestCase):
43111
7b0237cbd0ed Fixed test name.
Eric Smith <eric@trueblade.com>
parents: 42817
diff changeset
234 def test_format(self):
42817
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
235 # these should be rewritten to use both format(x, spec) and
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
236 # x.__format__(spec)
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
237
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
238 self.assertEqual(format(0.0, 'f'), '0.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
239
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
240 # the default is 'g', except for empty format spec
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
241 self.assertEqual(format(0.0, ''), '0.0')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
242 self.assertEqual(format(0.01, ''), '0.01')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
243 self.assertEqual(format(0.01, 'g'), '0.01')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
244
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
245
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
246 self.assertEqual(format(1.0, 'f'), '1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
247
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
248 self.assertEqual(format(-1.0, 'f'), '-1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
249
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
250 self.assertEqual(format( 1.0, ' f'), ' 1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
251 self.assertEqual(format(-1.0, ' f'), '-1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
252 self.assertEqual(format( 1.0, '+f'), '+1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
253 self.assertEqual(format(-1.0, '+f'), '-1.000000')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
254
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
255 # % formatting
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
256 self.assertEqual(format(-1.0, '%'), '-100.000000%')
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
257
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
258 # conversion to string should fail
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
259 self.assertRaises(ValueError, format, 3.0, "s")
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
260
45023
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
261 # other format specifiers shouldn't work on floats,
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
262 # in particular int specifiers
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
263 for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
264 [chr(x) for x in range(ord('A'), ord('Z')+1)]):
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
265 if not format_spec in 'eEfFgGn%':
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
266 self.assertRaises(ValueError, format, 0.0, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
267 self.assertRaises(ValueError, format, 1.0, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
268 self.assertRaises(ValueError, format, -1.0, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
269 self.assertRaises(ValueError, format, 1e100, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
270 self.assertRaises(ValueError, format, -1e100, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
271 self.assertRaises(ValueError, format, 1e-100, format_spec)
727cc810d690 Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
Eric Smith <eric@trueblade.com>
parents: 44349
diff changeset
272 self.assertRaises(ValueError, format, -1e-100, format_spec)
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
273
44260
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
274 class ReprTestCase(unittest.TestCase):
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
275 def test_repr(self):
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
276 floats_file = open(os.path.join(os.path.split(__file__)[0],
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
277 'floating_points.txt'))
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
278 for line in floats_file:
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
279 line = line.strip()
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
280 if not line or line.startswith('#'):
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
281 continue
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
282 v = eval(line)
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
283 self.assertEqual(v, eval(repr(v)))
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
284 floats_file.close()
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
285
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
286 # Beginning with Python 2.6 float has cross platform compatible
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
287 # ways to create and represent inf and nan
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
288 class InfNanTest(unittest.TestCase):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
289 def test_inf_from_str(self):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
290 self.assert_(isinf(float("inf")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
291 self.assert_(isinf(float("+inf")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
292 self.assert_(isinf(float("-inf")))
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
293 self.assert_(isinf(float("infinity")))
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
294 self.assert_(isinf(float("+infinity")))
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
295 self.assert_(isinf(float("-infinity")))
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
296
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
297 self.assertEqual(repr(float("inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
298 self.assertEqual(repr(float("+inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
299 self.assertEqual(repr(float("-inf")), "-inf")
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
300 self.assertEqual(repr(float("infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
301 self.assertEqual(repr(float("+infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
302 self.assertEqual(repr(float("-infinity")), "-inf")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
303
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
304 self.assertEqual(repr(float("INF")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
305 self.assertEqual(repr(float("+Inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
306 self.assertEqual(repr(float("-iNF")), "-inf")
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
307 self.assertEqual(repr(float("Infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
308 self.assertEqual(repr(float("+iNfInItY")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
309 self.assertEqual(repr(float("-INFINITY")), "-inf")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
310
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
311 self.assertEqual(str(float("inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
312 self.assertEqual(str(float("+inf")), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
313 self.assertEqual(str(float("-inf")), "-inf")
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
314 self.assertEqual(str(float("infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
315 self.assertEqual(str(float("+infinity")), "inf")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
316 self.assertEqual(str(float("-infinity")), "-inf")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
317
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
318 self.assertRaises(ValueError, float, "info")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
319 self.assertRaises(ValueError, float, "+info")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
320 self.assertRaises(ValueError, float, "-info")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
321 self.assertRaises(ValueError, float, "in")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
322 self.assertRaises(ValueError, float, "+in")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
323 self.assertRaises(ValueError, float, "-in")
48499
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
324 self.assertRaises(ValueError, float, "infinit")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
325 self.assertRaises(ValueError, float, "+Infin")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
326 self.assertRaises(ValueError, float, "-INFI")
de0bf60f1245 Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48498
diff changeset
327 self.assertRaises(ValueError, float, "infinitys")
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
328
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
329 def test_inf_as_str(self):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
330 self.assertEqual(repr(1e300 * 1e300), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
331 self.assertEqual(repr(-1e300 * 1e300), "-inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
332
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
333 self.assertEqual(str(1e300 * 1e300), "inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
334 self.assertEqual(str(-1e300 * 1e300), "-inf")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
335
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
336 def test_nan_from_str(self):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
337 self.assert_(isnan(float("nan")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
338 self.assert_(isnan(float("+nan")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
339 self.assert_(isnan(float("-nan")))
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
340
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
341 self.assertEqual(repr(float("nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
342 self.assertEqual(repr(float("+nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
343 self.assertEqual(repr(float("-nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
344
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
345 self.assertEqual(repr(float("NAN")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
346 self.assertEqual(repr(float("+NAn")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
347 self.assertEqual(repr(float("-NaN")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
348
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
349 self.assertEqual(str(float("nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
350 self.assertEqual(str(float("+nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
351 self.assertEqual(str(float("-nan")), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
352
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
353 self.assertRaises(ValueError, float, "nana")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
354 self.assertRaises(ValueError, float, "+nana")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
355 self.assertRaises(ValueError, float, "-nana")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
356 self.assertRaises(ValueError, float, "na")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
357 self.assertRaises(ValueError, float, "+na")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
358 self.assertRaises(ValueError, float, "-na")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
359
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
360 def test_nan_as_str(self):
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
361 self.assertEqual(repr(1e300 * 1e300 * 0), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
362 self.assertEqual(repr(-1e300 * 1e300 * 0), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
363
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
364 self.assertEqual(str(1e300 * 1e300 * 0), "nan")
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
365 self.assertEqual(str(-1e300 * 1e300 * 0), "nan")
44260
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
366
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
367 def notest_float_nan(self):
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
368 self.assert_(NAN.is_nan())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
369 self.failIf(INF.is_nan())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
370 self.failIf((0.).is_nan())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
371
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
372 def notest_float_inf(self):
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
373 self.assert_(INF.is_inf())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
374 self.failIf(NAN.is_inf())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
375 self.failIf((0.).is_inf())
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
376
48497
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
377 fromHex = float.fromhex
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
378 toHex = float.hex
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
379 class HexFloatTestCase(unittest.TestCase):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
380 MAX = fromHex('0x.fffffffffffff8p+1024') # max normal
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
381 MIN = fromHex('0x1p-1022') # min normal
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
382 TINY = fromHex('0x0.0000000000001p-1022') # min subnormal
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
383 EPS = fromHex('0x0.0000000000001p0') # diff between 1.0 and next float up
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
384
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
385 def identical(self, x, y):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
386 # check that floats x and y are identical, or that both
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
387 # are NaNs
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
388 if isnan(x) or isnan(y):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
389 if isnan(x) == isnan(y):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
390 return
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
391 elif x == y and (x != 0.0 or copysign(1.0, x) == copysign(1.0, y)):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
392 return
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
393 self.fail('%r not identical to %r' % (x, y))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
394
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
395 def test_ends(self):
48498
177302feab36 Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48497
diff changeset
396 self.identical(self.MIN, ldexp(1.0, -1022))
177302feab36 Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48497
diff changeset
397 self.identical(self.TINY, ldexp(1.0, -1074))
177302feab36 Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48497
diff changeset
398 self.identical(self.EPS, ldexp(1.0, -52))
177302feab36 Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 48497
diff changeset
399 self.identical(self.MAX, 2.*(ldexp(1.0, 1023) - ldexp(1.0, 970)))
48497
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
400
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
401 def test_invalid_inputs(self):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
402 invalid_inputs = [
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
403 'infi', # misspelt infinities and nans
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
404 '-Infinit',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
405 '++inf',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
406 '-+Inf',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
407 '--nan',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
408 '+-NaN',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
409 'snan',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
410 'NaNs',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
411 'nna',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
412 '0xnan',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
413 '',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
414 ' ',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
415 'x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
416 '0xX1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
417 '+ 0x1.0p0', # internal whitespace
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
418 '- 0x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
419 '0 x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
420 '0x 1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
421 '0x1 2.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
422 '+0x1 .0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
423 '0x1. 0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
424 '-0x1.0 1p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
425 '-0x1.0 p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
426 '+0x1.0p +0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
427 '0x1.0p -0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
428 '0x1.0p 0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
429 '+0x1.0p+ 0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
430 '-0x1.0p- 0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
431 '++0x1.0p-0', # double signs
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
432 '--0x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
433 '+-0x1.0p+0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
434 '-+0x1.0p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
435 '0x1.0p++0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
436 '+0x1.0p+-0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
437 '-0x1.0p-+0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
438 '0x1.0p--0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
439 '0x1.0.p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
440 '0x.p0', # no hex digits before or after point
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
441 '0x1,p0', # wrong decimal point character
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
442 '0x1pa',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
443 '0x1p\uff10', # fullwidth Unicode digits
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
444 '\uff10x1p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
445 '0x\uff11p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
446 '0x1.\uff10p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
447 '0x1p0 \n 0x2p0',
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
448 '0x1p0\0 0x1p0', # embedded null byte is not end of string
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
449 ]
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
450 for x in invalid_inputs:
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
451 self.assertRaises(ValueError, fromHex, x)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
452
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
453
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
454 def test_from_hex(self):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
455 MIN = self.MIN;
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
456 MAX = self.MAX;
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
457 TINY = self.TINY;
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
458 EPS = self.EPS;
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
459
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
460 # two spellings of infinity, with optional signs; case-insensitive
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
461 self.identical(fromHex('inf'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
462 self.identical(fromHex('+Inf'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
463 self.identical(fromHex('-INF'), -INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
464 self.identical(fromHex('iNf'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
465 self.identical(fromHex('Infinity'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
466 self.identical(fromHex('+INFINITY'), INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
467 self.identical(fromHex('-infinity'), -INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
468 self.identical(fromHex('-iNFiNitY'), -INF)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
469
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
470 # nans with optional sign; case insensitive
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
471 self.identical(fromHex('nan'), NAN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
472 self.identical(fromHex('+NaN'), NAN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
473 self.identical(fromHex('-NaN'), NAN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
474 self.identical(fromHex('-nAN'), NAN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
475
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
476 # variations in input format
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
477 self.identical(fromHex('1'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
478 self.identical(fromHex('+1'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
479 self.identical(fromHex('1.'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
480 self.identical(fromHex('1.0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
481 self.identical(fromHex('1.0p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
482 self.identical(fromHex('01'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
483 self.identical(fromHex('01.'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
484 self.identical(fromHex('0x1'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
485 self.identical(fromHex('0x1.'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
486 self.identical(fromHex('0x1.0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
487 self.identical(fromHex('+0x1.0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
488 self.identical(fromHex('0x1p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
489 self.identical(fromHex('0X1p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
490 self.identical(fromHex('0X1P0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
491 self.identical(fromHex('0x1P0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
492 self.identical(fromHex('0x1.p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
493 self.identical(fromHex('0x1.0p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
494 self.identical(fromHex('0x.1p4'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
495 self.identical(fromHex('0x.1p04'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
496 self.identical(fromHex('0x.1p004'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
497 self.identical(fromHex('0x1p+0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
498 self.identical(fromHex('0x1P-0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
499 self.identical(fromHex('+0x1p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
500 self.identical(fromHex('0x01p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
501 self.identical(fromHex('0x1p00'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
502 self.identical(fromHex(' 0x1p0 '), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
503 self.identical(fromHex('\n 0x1p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
504 self.identical(fromHex('0x1p0 \t'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
505 self.identical(fromHex('0xap0'), 10.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
506 self.identical(fromHex('0xAp0'), 10.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
507 self.identical(fromHex('0xaP0'), 10.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
508 self.identical(fromHex('0xAP0'), 10.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
509 self.identical(fromHex('0xbep0'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
510 self.identical(fromHex('0xBep0'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
511 self.identical(fromHex('0xbEp0'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
512 self.identical(fromHex('0XBE0P-4'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
513 self.identical(fromHex('0xBEp0'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
514 self.identical(fromHex('0xB.Ep4'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
515 self.identical(fromHex('0x.BEp8'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
516 self.identical(fromHex('0x.0BEp12'), 190.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
517
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
518 # moving the point around
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
519 pi = fromHex('0x1.921fb54442d18p1')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
520 self.identical(fromHex('0x.006487ed5110b46p11'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
521 self.identical(fromHex('0x.00c90fdaa22168cp10'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
522 self.identical(fromHex('0x.01921fb54442d18p9'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
523 self.identical(fromHex('0x.03243f6a8885a3p8'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
524 self.identical(fromHex('0x.06487ed5110b46p7'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
525 self.identical(fromHex('0x.0c90fdaa22168cp6'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
526 self.identical(fromHex('0x.1921fb54442d18p5'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
527 self.identical(fromHex('0x.3243f6a8885a3p4'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
528 self.identical(fromHex('0x.6487ed5110b46p3'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
529 self.identical(fromHex('0x.c90fdaa22168cp2'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
530 self.identical(fromHex('0x1.921fb54442d18p1'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
531 self.identical(fromHex('0x3.243f6a8885a3p0'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
532 self.identical(fromHex('0x6.487ed5110b46p-1'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
533 self.identical(fromHex('0xc.90fdaa22168cp-2'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
534 self.identical(fromHex('0x19.21fb54442d18p-3'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
535 self.identical(fromHex('0x32.43f6a8885a3p-4'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
536 self.identical(fromHex('0x64.87ed5110b46p-5'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
537 self.identical(fromHex('0xc9.0fdaa22168cp-6'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
538 self.identical(fromHex('0x192.1fb54442d18p-7'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
539 self.identical(fromHex('0x324.3f6a8885a3p-8'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
540 self.identical(fromHex('0x648.7ed5110b46p-9'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
541 self.identical(fromHex('0xc90.fdaa22168cp-10'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
542 self.identical(fromHex('0x1921.fb54442d18p-11'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
543 # ...
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
544 self.identical(fromHex('0x1921fb54442d1.8p-47'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
545 self.identical(fromHex('0x3243f6a8885a3p-48'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
546 self.identical(fromHex('0x6487ed5110b46p-49'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
547 self.identical(fromHex('0xc90fdaa22168cp-50'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
548 self.identical(fromHex('0x1921fb54442d18p-51'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
549 self.identical(fromHex('0x3243f6a8885a30p-52'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
550 self.identical(fromHex('0x6487ed5110b460p-53'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
551 self.identical(fromHex('0xc90fdaa22168c0p-54'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
552 self.identical(fromHex('0x1921fb54442d180p-55'), pi)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
553
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
554
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
555 # results that should overflow...
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
556 self.assertRaises(OverflowError, fromHex, '-0x1p1024')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
557 self.assertRaises(OverflowError, fromHex, '0x1p+1025')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
558 self.assertRaises(OverflowError, fromHex, '+0X1p1030')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
559 self.assertRaises(OverflowError, fromHex, '-0x1p+1100')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
560 self.assertRaises(OverflowError, fromHex, '0X1p123456789123456789')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
561 self.assertRaises(OverflowError, fromHex, '+0X.8p+1025')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
562 self.assertRaises(OverflowError, fromHex, '+0x0.8p1025')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
563 self.assertRaises(OverflowError, fromHex, '-0x0.4p1026')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
564 self.assertRaises(OverflowError, fromHex, '0X2p+1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
565 self.assertRaises(OverflowError, fromHex, '0x2.p1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
566 self.assertRaises(OverflowError, fromHex, '-0x2.0p+1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
567 self.assertRaises(OverflowError, fromHex, '+0X4p+1022')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
568 self.assertRaises(OverflowError, fromHex, '0x1.ffffffffffffffp+1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
569 self.assertRaises(OverflowError, fromHex, '-0X1.fffffffffffff9p1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
570 self.assertRaises(OverflowError, fromHex, '0X1.fffffffffffff8p1023')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
571 self.assertRaises(OverflowError, fromHex, '+0x3.fffffffffffffp1022')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
572 self.assertRaises(OverflowError, fromHex, '0x3fffffffffffffp+970')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
573 self.assertRaises(OverflowError, fromHex, '0x10000000000000000p960')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
574 self.assertRaises(OverflowError, fromHex, '-0Xffffffffffffffffp960')
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
575
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
576 # ...and those that round to +-max float
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
577 self.identical(fromHex('+0x1.fffffffffffffp+1023'), MAX)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
578 self.identical(fromHex('-0X1.fffffffffffff7p1023'), -MAX)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
579 self.identical(fromHex('0X1.fffffffffffff7fffffffffffffp1023'), MAX)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
580
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
581 # zeros
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
582 self.identical(fromHex('0x0p0'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
583 self.identical(fromHex('0x0p1000'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
584 self.identical(fromHex('-0x0p1023'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
585 self.identical(fromHex('0X0p1024'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
586 self.identical(fromHex('-0x0p1025'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
587 self.identical(fromHex('0X0p2000'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
588 self.identical(fromHex('0x0p123456789123456789'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
589 self.identical(fromHex('-0X0p-0'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
590 self.identical(fromHex('-0X0p-1000'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
591 self.identical(fromHex('0x0p-1023'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
592 self.identical(fromHex('-0X0p-1024'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
593 self.identical(fromHex('-0x0p-1025'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
594 self.identical(fromHex('-0x0p-1072'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
595 self.identical(fromHex('0X0p-1073'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
596 self.identical(fromHex('-0x0p-1074'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
597 self.identical(fromHex('0x0p-1075'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
598 self.identical(fromHex('0X0p-1076'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
599 self.identical(fromHex('-0X0p-2000'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
600 self.identical(fromHex('-0x0p-123456789123456789'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
601
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
602 # values that should underflow to 0
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
603 self.identical(fromHex('0X1p-1075'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
604 self.identical(fromHex('-0X1p-1075'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
605 self.identical(fromHex('-0x1p-123456789123456789'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
606 self.identical(fromHex('0x1.00000000000000001p-1075'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
607 self.identical(fromHex('-0x1.1p-1075'), -TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
608 self.identical(fromHex('0x1.fffffffffffffffffp-1075'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
609
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
610 # check round-half-even is working correctly near 0 ...
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
611 self.identical(fromHex('0x1p-1076'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
612 self.identical(fromHex('0X2p-1076'), 0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
613 self.identical(fromHex('0X3p-1076'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
614 self.identical(fromHex('0x4p-1076'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
615 self.identical(fromHex('0X5p-1076'), TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
616 self.identical(fromHex('0X6p-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
617 self.identical(fromHex('0x7p-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
618 self.identical(fromHex('0X8p-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
619 self.identical(fromHex('0X9p-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
620 self.identical(fromHex('0xap-1076'), 2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
621 self.identical(fromHex('0Xbp-1076'), 3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
622 self.identical(fromHex('0xcp-1076'), 3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
623 self.identical(fromHex('0Xdp-1076'), 3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
624 self.identical(fromHex('0Xep-1076'), 4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
625 self.identical(fromHex('0xfp-1076'), 4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
626 self.identical(fromHex('0x10p-1076'), 4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
627 self.identical(fromHex('-0x1p-1076'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
628 self.identical(fromHex('-0X2p-1076'), -0.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
629 self.identical(fromHex('-0x3p-1076'), -TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
630 self.identical(fromHex('-0X4p-1076'), -TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
631 self.identical(fromHex('-0x5p-1076'), -TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
632 self.identical(fromHex('-0x6p-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
633 self.identical(fromHex('-0X7p-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
634 self.identical(fromHex('-0X8p-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
635 self.identical(fromHex('-0X9p-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
636 self.identical(fromHex('-0Xap-1076'), -2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
637 self.identical(fromHex('-0xbp-1076'), -3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
638 self.identical(fromHex('-0xcp-1076'), -3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
639 self.identical(fromHex('-0Xdp-1076'), -3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
640 self.identical(fromHex('-0xep-1076'), -4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
641 self.identical(fromHex('-0Xfp-1076'), -4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
642 self.identical(fromHex('-0X10p-1076'), -4*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
643
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
644 # ... and near MIN ...
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
645 self.identical(fromHex('0x0.ffffffffffffd6p-1022'), MIN-3*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
646 self.identical(fromHex('0x0.ffffffffffffd8p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
647 self.identical(fromHex('0x0.ffffffffffffdap-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
648 self.identical(fromHex('0x0.ffffffffffffdcp-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
649 self.identical(fromHex('0x0.ffffffffffffdep-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
650 self.identical(fromHex('0x0.ffffffffffffe0p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
651 self.identical(fromHex('0x0.ffffffffffffe2p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
652 self.identical(fromHex('0x0.ffffffffffffe4p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
653 self.identical(fromHex('0x0.ffffffffffffe6p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
654 self.identical(fromHex('0x0.ffffffffffffe8p-1022'), MIN-2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
655 self.identical(fromHex('0x0.ffffffffffffeap-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
656 self.identical(fromHex('0x0.ffffffffffffecp-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
657 self.identical(fromHex('0x0.ffffffffffffeep-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
658 self.identical(fromHex('0x0.fffffffffffff0p-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
659 self.identical(fromHex('0x0.fffffffffffff2p-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
660 self.identical(fromHex('0x0.fffffffffffff4p-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
661 self.identical(fromHex('0x0.fffffffffffff6p-1022'), MIN-TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
662 self.identical(fromHex('0x0.fffffffffffff8p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
663 self.identical(fromHex('0x0.fffffffffffffap-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
664 self.identical(fromHex('0x0.fffffffffffffcp-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
665 self.identical(fromHex('0x0.fffffffffffffep-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
666 self.identical(fromHex('0x1.00000000000000p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
667 self.identical(fromHex('0x1.00000000000002p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
668 self.identical(fromHex('0x1.00000000000004p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
669 self.identical(fromHex('0x1.00000000000006p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
670 self.identical(fromHex('0x1.00000000000008p-1022'), MIN)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
671 self.identical(fromHex('0x1.0000000000000ap-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
672 self.identical(fromHex('0x1.0000000000000cp-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
673 self.identical(fromHex('0x1.0000000000000ep-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
674 self.identical(fromHex('0x1.00000000000010p-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
675 self.identical(fromHex('0x1.00000000000012p-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
676 self.identical(fromHex('0x1.00000000000014p-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
677 self.identical(fromHex('0x1.00000000000016p-1022'), MIN+TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
678 self.identical(fromHex('0x1.00000000000018p-1022'), MIN+2*TINY)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
679
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
680 # ... and near 1.0.
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
681 self.identical(fromHex('0x0.fffffffffffff0p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
682 self.identical(fromHex('0x0.fffffffffffff1p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
683 self.identical(fromHex('0X0.fffffffffffff2p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
684 self.identical(fromHex('0x0.fffffffffffff3p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
685 self.identical(fromHex('0X0.fffffffffffff4p0'), 1.0-EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
686 self.identical(fromHex('0X0.fffffffffffff5p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
687 self.identical(fromHex('0X0.fffffffffffff6p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
688 self.identical(fromHex('0x0.fffffffffffff7p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
689 self.identical(fromHex('0x0.fffffffffffff8p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
690 self.identical(fromHex('0X0.fffffffffffff9p0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
691 self.identical(fromHex('0X0.fffffffffffffap0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
692 self.identical(fromHex('0x0.fffffffffffffbp0'), 1.0-EPS/2)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
693 self.identical(fromHex('0X0.fffffffffffffcp0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
694 self.identical(fromHex('0x0.fffffffffffffdp0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
695 self.identical(fromHex('0X0.fffffffffffffep0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
696 self.identical(fromHex('0x0.ffffffffffffffp0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
697 self.identical(fromHex('0X1.00000000000000p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
698 self.identical(fromHex('0X1.00000000000001p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
699 self.identical(fromHex('0x1.00000000000002p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
700 self.identical(fromHex('0X1.00000000000003p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
701 self.identical(fromHex('0x1.00000000000004p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
702 self.identical(fromHex('0X1.00000000000005p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
703 self.identical(fromHex('0X1.00000000000006p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
704 self.identical(fromHex('0X1.00000000000007p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
705 self.identical(fromHex('0x1.00000000000007ffffffffffffffffffffp0'),
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
706 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
707 self.identical(fromHex('0x1.00000000000008p0'), 1.0)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
708 self.identical(fromHex('0x1.00000000000008000000000000000001p0'),
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
709 1+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
710 self.identical(fromHex('0X1.00000000000009p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
711 self.identical(fromHex('0x1.0000000000000ap0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
712 self.identical(fromHex('0x1.0000000000000bp0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
713 self.identical(fromHex('0X1.0000000000000cp0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
714 self.identical(fromHex('0x1.0000000000000dp0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
715 self.identical(fromHex('0x1.0000000000000ep0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
716 self.identical(fromHex('0X1.0000000000000fp0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
717 self.identical(fromHex('0x1.00000000000010p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
718 self.identical(fromHex('0X1.00000000000011p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
719 self.identical(fromHex('0x1.00000000000012p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
720 self.identical(fromHex('0X1.00000000000013p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
721 self.identical(fromHex('0X1.00000000000014p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
722 self.identical(fromHex('0x1.00000000000015p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
723 self.identical(fromHex('0x1.00000000000016p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
724 self.identical(fromHex('0X1.00000000000017p0'), 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
725 self.identical(fromHex('0x1.00000000000017ffffffffffffffffffffp0'),
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
726 1.0+EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
727 self.identical(fromHex('0x1.00000000000018p0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
728 self.identical(fromHex('0X1.00000000000018000000000000000001p0'),
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
729 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
730 self.identical(fromHex('0x1.00000000000019p0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
731 self.identical(fromHex('0X1.0000000000001ap0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
732 self.identical(fromHex('0X1.0000000000001bp0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
733 self.identical(fromHex('0x1.0000000000001cp0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
734 self.identical(fromHex('0x1.0000000000001dp0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
735 self.identical(fromHex('0x1.0000000000001ep0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
736 self.identical(fromHex('0X1.0000000000001fp0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
737 self.identical(fromHex('0x1.00000000000020p0'), 1.0+2*EPS)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
738
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
739 def test_roundtrip(self):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
740 def roundtrip(x):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
741 return fromHex(toHex(x))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
742
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
743 for x in [NAN, INF, self.MAX, self.MIN, self.MIN-self.TINY, self.TINY, 0.0]:
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
744 self.identical(x, roundtrip(x))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
745 self.identical(-x, roundtrip(-x))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
746
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
747 # fromHex(toHex(x)) should exactly recover x, for any non-NaN float x.
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
748 import random
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
749 for i in range(10000):
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
750 e = random.randrange(-1200, 1200)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
751 m = random.random()
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
752 s = random.choice([1.0, -1.0])
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
753 try:
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
754 x = s*ldexp(m, e)
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
755 except OverflowError:
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
756 pass
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
757 else:
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
758 self.identical(x, fromHex(toHex(x)))
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
759
46477
b69f443ef480 Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45023
diff changeset
760
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
761 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46664
diff changeset
762 support.run_unittest(
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
763 FormatFunctionsTestCase,
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
764 UnknownFormatTestCase,
42817
5355337709e1 Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents: 42775
diff changeset
765 IEEEFormatTestCase,
44260
682d9788a038 Issue #1580: New free format floating point representation based on "Floating-Point Printer Sample Code", by Robert G. Burger. For example repr(11./5) now returns '2.2' instead of '2.2000000000000002'.
Christian Heimes <christian@cheimes.de>
parents: 43947
diff changeset
766 FormatTestCase,
44349
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
767 ReprTestCase,
4dc01402d78a Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44268
diff changeset
768 InfNanTest,
48497
2bb866d282ba Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47322
diff changeset
769 HexFloatTestCase,
44268
7ae604b3533b Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44260
diff changeset
770 )
34972
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
771
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
772 if __name__ == '__main__':
1dd8a0d64432 This is my patch:
Michael W. Hudson <mwh@python.net>
parents:
diff changeset
773 test_main()