Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_float.py @ 57114:d3a81051663b
importlib.test.source.util referenced variables in the 'finally' part of a
try/finally which may not have been set.
| author | Brett Cannon <bcannon@gmail.com> |
|---|---|
| date | Thu, 05 Nov 2009 01:17:22 +0000 |
| parents | e1dca972fa35 |
| children | b7fbef077eae |
| rev | line source |
|---|---|
| 34972 | 1 |
| 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 |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
4 import sys |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46664
diff
changeset
|
5 from test import support |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
6 import math |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
7 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
|
8 import operator |
|
49055
ca1a8ac47d04
I modified the tests a bit to account for unicode string
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
48817
diff
changeset
|
9 import random, fractions |
| 34972 | 10 |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
11 INF = float("inf") |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
12 NAN = float("nan") |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
13 |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
14 #locate file with float format test values |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
15 test_dir = os.path.dirname(__file__) or os.curdir |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
16 format_testfile = os.path.join(test_dir, 'formatfloat_testcases.txt') |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
17 |
|
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
|
18 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
|
19 |
|
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 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
|
21 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
|
22 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
|
23 self.assertEqual(float(" 3.14 "), 3.14) |
|
49055
ca1a8ac47d04
I modified the tests a bit to account for unicode string
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
48817
diff
changeset
|
24 self.assertEqual(float(b" 3.14 "), 3.14) |
|
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
|
25 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
|
26 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
|
27 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
|
28 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
|
29 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
|
30 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
|
31 self.assertRaises(ValueError, float, "--3.14") |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
32 self.assertRaises(ValueError, float, ".nan") |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
33 self.assertRaises(ValueError, float, "+.inf") |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
34 self.assertRaises(ValueError, float, ".") |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
35 self.assertRaises(ValueError, float, "-.") |
|
49055
ca1a8ac47d04
I modified the tests a bit to account for unicode string
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
48817
diff
changeset
|
36 self.assertEqual(float(b" \u0663.\u0661\u0664 ".decode('raw-unicode-escape')), 3.14) |
|
56916
690c565c15a9
Merged revisions 75885 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
37 # extra long strings should not be a problem |
|
690c565c15a9
Merged revisions 75885 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
38 float(b'.' + b'1'*1000) |
|
690c565c15a9
Merged revisions 75885 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
39 float('.' + '1'*1000) |
|
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
|
40 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46664
diff
changeset
|
41 @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
|
42 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
|
43 # 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
|
44 # 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
|
45 # 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
|
46 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
|
47 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
|
48 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
|
49 |
|
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.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
|
51 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
|
52 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
|
53 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
|
54 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
|
55 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
|
56 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
|
57 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
|
58 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
|
59 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
|
60 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
|
61 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
|
62 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
|
63 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
|
64 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
|
65 self.assertEqual(float(" 25.e-1 "), 2.5) |
|
49062
13955bcd08be
Merged revisions 66277 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49055
diff
changeset
|
66 self.assertEqual(support.fcmp(float(" .25e-1 "), .025), 0) |
|
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
|
67 |
|
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 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
|
69 # 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
|
70 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
|
71 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
|
72 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
|
73 |
|
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 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
|
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 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
|
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 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
|
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 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
|
83 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
|
84 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
|
85 |
|
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 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
|
87 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
|
88 |
|
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 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
|
90 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
|
91 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
|
92 |
|
53161
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
93 # Issue 5759: __float__ not called on str subclasses (though it is on |
|
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
94 # unicode subclasses). |
|
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
95 class FooStr(str): |
|
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
96 def __float__(self): |
|
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
97 return float(str(self)) + 1 |
|
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
98 |
|
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
|
99 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
|
100 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
|
101 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
|
102 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
|
103 self.assertRaises(TypeError, float, Foo4(42)) |
|
53161
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
104 self.assertAlmostEqual(float(FooStr('8')), 9.) |
|
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
|
105 |
|
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 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
|
107 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
|
108 (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
|
109 (-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
|
110 (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
|
111 (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
|
112 ]: |
|
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 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
|
114 |
|
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 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
|
116 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
|
117 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
|
118 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
|
119 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
|
120 |
|
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
|
121 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
|
122 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
|
123 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
|
124 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
|
125 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
|
126 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
|
127 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
|
128 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
|
129 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
|
130 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
|
131 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
|
132 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
|
133 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
|
134 |
|
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
|
135 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
|
136 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
|
137 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
|
138 |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
139 def test_float_containment(self): |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
140 floats = (INF, -INF, 0.0, 1.0, NAN) |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
141 for f in floats: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
142 self.assertTrue(f in [f], "'%r' not in []" % f) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
143 self.assertTrue(f in (f,), "'%r' not in ()" % f) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
144 self.assertTrue(f in {f}, "'%r' not in set()" % f) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
145 self.assertTrue(f in {f: None}, "'%r' not in {}" % f) |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
146 self.assertEqual([f].count(f), 1, "[].count('%r') != 1" % f) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
147 self.assertTrue(f in floats, "'%r' not in container" % f) |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
148 |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
149 for f in floats: |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
150 # nonidentical containers, same type, same contents |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
151 self.assertTrue([f] == [f], "[%r] != [%r]" % (f, f)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
152 self.assertTrue((f,) == (f,), "(%r,) != (%r,)" % (f, f)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
153 self.assertTrue({f} == {f}, "{%r} != {%r}" % (f, f)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
154 self.assertTrue({f : None} == {f: None}, "{%r : None} != " |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
155 "{%r : None}" % (f, f)) |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
156 |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
157 # identical containers |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
158 l, t, s, d = [f], (f,), {f}, {f: None} |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
159 self.assertTrue(l == l, "[%r] not equal to itself" % f) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
160 self.assertTrue(t == t, "(%r,) not equal to itself" % f) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
161 self.assertTrue(s == s, "{%r} not equal to itself" % f) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
162 self.assertTrue(d == d, "{%r : None} not equal to itself" % f) |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
163 |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
164 |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
165 |
| 34972 | 166 class FormatFunctionsTestCase(unittest.TestCase): |
| 167 | |
| 168 def setUp(self): | |
| 169 self.save_formats = {'double':float.__getformat__('double'), | |
| 170 'float':float.__getformat__('float')} | |
| 171 | |
| 172 def tearDown(self): | |
| 173 float.__setformat__('double', self.save_formats['double']) | |
| 174 float.__setformat__('float', self.save_formats['float']) | |
| 175 | |
| 176 def test_getformat(self): | |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
177 self.assertTrue(float.__getformat__('double') in |
| 34972 | 178 ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
179 self.assertTrue(float.__getformat__('float') in |
| 34972 | 180 ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) |
| 181 self.assertRaises(ValueError, float.__getformat__, 'chicken') | |
| 182 self.assertRaises(TypeError, float.__getformat__, 1) | |
| 183 | |
| 184 def test_setformat(self): | |
| 185 for t in 'double', 'float': | |
| 186 float.__setformat__(t, 'unknown') | |
| 187 if self.save_formats[t] == 'IEEE, big-endian': | |
| 188 self.assertRaises(ValueError, float.__setformat__, | |
| 189 t, 'IEEE, little-endian') | |
| 190 elif self.save_formats[t] == 'IEEE, little-endian': | |
| 191 self.assertRaises(ValueError, float.__setformat__, | |
| 192 t, 'IEEE, big-endian') | |
| 193 else: | |
| 194 self.assertRaises(ValueError, float.__setformat__, | |
| 195 t, 'IEEE, big-endian') | |
| 196 self.assertRaises(ValueError, float.__setformat__, | |
| 197 t, 'IEEE, little-endian') | |
| 198 self.assertRaises(ValueError, float.__setformat__, | |
| 199 t, 'chicken') | |
| 200 self.assertRaises(ValueError, float.__setformat__, | |
| 201 'chicken', 'unknown') | |
| 202 | |
|
41725
d1146d4db549
Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents:
35014
diff
changeset
|
203 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
|
204 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
|
205 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
|
206 LE_DOUBLE_NAN = bytes(reversed(BE_DOUBLE_NAN)) |
| 34972 | 207 |
|
41725
d1146d4db549
Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents:
35014
diff
changeset
|
208 BE_FLOAT_INF = b'\x7f\x80\x00\x00' |
|
43947
cbc8b3bd3157
Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents:
43777
diff
changeset
|
209 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
|
210 BE_FLOAT_NAN = b'\x7f\xc0\x00\x00' |
|
43947
cbc8b3bd3157
Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents:
43777
diff
changeset
|
211 LE_FLOAT_NAN = bytes(reversed(BE_FLOAT_NAN)) |
| 34972 | 212 |
| 213 # on non-IEEE platforms, attempting to unpack a bit pattern | |
| 214 # representing an infinity or a NaN should raise an exception. | |
| 215 | |
| 216 class UnknownFormatTestCase(unittest.TestCase): | |
| 217 def setUp(self): | |
| 218 self.save_formats = {'double':float.__getformat__('double'), | |
| 219 'float':float.__getformat__('float')} | |
| 220 float.__setformat__('double', 'unknown') | |
| 221 float.__setformat__('float', 'unknown') | |
|
35014
275843630522
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
34972
diff
changeset
|
222 |
| 34972 | 223 def tearDown(self): |
| 224 float.__setformat__('double', self.save_formats['double']) | |
| 225 float.__setformat__('float', self.save_formats['float']) | |
| 226 | |
| 227 def test_double_specials_dont_unpack(self): | |
| 228 for fmt, data in [('>d', BE_DOUBLE_INF), | |
| 229 ('>d', BE_DOUBLE_NAN), | |
| 230 ('<d', LE_DOUBLE_INF), | |
| 231 ('<d', LE_DOUBLE_NAN)]: | |
| 232 self.assertRaises(ValueError, struct.unpack, fmt, data) | |
| 233 | |
| 234 def test_float_specials_dont_unpack(self): | |
| 235 for fmt, data in [('>f', BE_FLOAT_INF), | |
| 236 ('>f', BE_FLOAT_NAN), | |
| 237 ('<f', LE_FLOAT_INF), | |
| 238 ('<f', LE_FLOAT_NAN)]: | |
| 239 self.assertRaises(ValueError, struct.unpack, fmt, data) | |
| 240 | |
| 241 | |
| 242 # on an IEEE platform, all we guarantee is that bit patterns | |
| 243 # representing infinities or NaNs do not raise an exception; all else | |
| 244 # is accident (today). | |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
245 # let's also try to guarantee that -0.0 and 0.0 don't get confused. |
| 34972 | 246 |
| 247 class IEEEFormatTestCase(unittest.TestCase): | |
| 248 if float.__getformat__("double").startswith("IEEE"): | |
| 249 def test_double_specials_do_unpack(self): | |
| 250 for fmt, data in [('>d', BE_DOUBLE_INF), | |
| 251 ('>d', BE_DOUBLE_NAN), | |
| 252 ('<d', LE_DOUBLE_INF), | |
| 253 ('<d', LE_DOUBLE_NAN)]: | |
| 254 struct.unpack(fmt, data) | |
| 255 | |
| 256 if float.__getformat__("float").startswith("IEEE"): | |
| 257 def test_float_specials_do_unpack(self): | |
| 258 for fmt, data in [('>f', BE_FLOAT_INF), | |
| 259 ('>f', BE_FLOAT_NAN), | |
| 260 ('<f', LE_FLOAT_INF), | |
| 261 ('<f', LE_FLOAT_NAN)]: | |
| 262 struct.unpack(fmt, data) | |
| 263 | |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
264 if float.__getformat__("double").startswith("IEEE"): |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
265 def test_negative_zero(self): |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
266 import math |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
267 def pos_pos(): |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
268 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
|
269 def pos_neg(): |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
270 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
|
271 def neg_pos(): |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
272 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
|
273 def neg_neg(): |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
274 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
|
275 self.assertEquals(pos_pos(), neg_pos()) |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
276 self.assertEquals(pos_neg(), neg_neg()) |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
277 |
|
42817
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
278 class FormatTestCase(unittest.TestCase): |
| 43111 | 279 def test_format(self): |
|
42817
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
280 # 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
|
281 # x.__format__(spec) |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
282 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
283 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
|
284 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
285 # 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
|
286 self.assertEqual(format(0.0, ''), '0.0') |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
287 self.assertEqual(format(0.01, ''), '0.01') |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
288 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
|
289 |
|
53787
c6376d3fa968
Issue #5920: Changed format.__float__ and complex.__float__ to use a precision of 12 when using the empty presentation type. This more closely matches str()'s behavior and reduces surprises when adding alignment flags to an empty format string. Patch by Mark Dickinson.
Eric Smith <eric@trueblade.com>
parents:
53603
diff
changeset
|
290 # empty presentation type should format in the same way as str |
|
c6376d3fa968
Issue #5920: Changed format.__float__ and complex.__float__ to use a precision of 12 when using the empty presentation type. This more closely matches str()'s behavior and reduces surprises when adding alignment flags to an empty format string. Patch by Mark Dickinson.
Eric Smith <eric@trueblade.com>
parents:
53603
diff
changeset
|
291 # (issue 5920) |
|
c6376d3fa968
Issue #5920: Changed format.__float__ and complex.__float__ to use a precision of 12 when using the empty presentation type. This more closely matches str()'s behavior and reduces surprises when adding alignment flags to an empty format string. Patch by Mark Dickinson.
Eric Smith <eric@trueblade.com>
parents:
53603
diff
changeset
|
292 x = 100/7. |
|
c6376d3fa968
Issue #5920: Changed format.__float__ and complex.__float__ to use a precision of 12 when using the empty presentation type. This more closely matches str()'s behavior and reduces surprises when adding alignment flags to an empty format string. Patch by Mark Dickinson.
Eric Smith <eric@trueblade.com>
parents:
53603
diff
changeset
|
293 self.assertEqual(format(x, ''), str(x)) |
|
c6376d3fa968
Issue #5920: Changed format.__float__ and complex.__float__ to use a precision of 12 when using the empty presentation type. This more closely matches str()'s behavior and reduces surprises when adding alignment flags to an empty format string. Patch by Mark Dickinson.
Eric Smith <eric@trueblade.com>
parents:
53603
diff
changeset
|
294 self.assertEqual(format(x, '-'), str(x)) |
|
c6376d3fa968
Issue #5920: Changed format.__float__ and complex.__float__ to use a precision of 12 when using the empty presentation type. This more closely matches str()'s behavior and reduces surprises when adding alignment flags to an empty format string. Patch by Mark Dickinson.
Eric Smith <eric@trueblade.com>
parents:
53603
diff
changeset
|
295 self.assertEqual(format(x, '>'), str(x)) |
|
c6376d3fa968
Issue #5920: Changed format.__float__ and complex.__float__ to use a precision of 12 when using the empty presentation type. This more closely matches str()'s behavior and reduces surprises when adding alignment flags to an empty format string. Patch by Mark Dickinson.
Eric Smith <eric@trueblade.com>
parents:
53603
diff
changeset
|
296 self.assertEqual(format(x, '2'), str(x)) |
|
42817
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
297 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
298 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
|
299 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
300 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
|
301 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
302 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
|
303 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
|
304 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
|
305 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
|
306 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
307 # % formatting |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
308 self.assertEqual(format(-1.0, '%'), '-100.000000%') |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
309 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
310 # conversion to string should fail |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
311 self.assertRaises(ValueError, format, 3.0, "s") |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
312 |
|
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
|
313 # 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
|
314 # 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
|
315 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
|
316 [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
|
317 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
|
318 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
|
319 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
|
320 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
|
321 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
|
322 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
|
323 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
|
324 self.assertRaises(ValueError, format, -1e-100, format_spec) |
| 34972 | 325 |
|
53849
04bdc944718a
Issue #3382. float 'F' formatting no longer maps to 'f'. This only affects nan and inf.
Eric Smith <eric@trueblade.com>
parents:
53787
diff
changeset
|
326 # issue 3382 |
|
04bdc944718a
Issue #3382. float 'F' formatting no longer maps to 'f'. This only affects nan and inf.
Eric Smith <eric@trueblade.com>
parents:
53787
diff
changeset
|
327 self.assertEqual(format(NAN, 'f'), 'nan') |
|
04bdc944718a
Issue #3382. float 'F' formatting no longer maps to 'f'. This only affects nan and inf.
Eric Smith <eric@trueblade.com>
parents:
53787
diff
changeset
|
328 self.assertEqual(format(NAN, 'F'), 'NAN') |
|
04bdc944718a
Issue #3382. float 'F' formatting no longer maps to 'f'. This only affects nan and inf.
Eric Smith <eric@trueblade.com>
parents:
53787
diff
changeset
|
329 self.assertEqual(format(INF, 'f'), 'inf') |
|
04bdc944718a
Issue #3382. float 'F' formatting no longer maps to 'f'. This only affects nan and inf.
Eric Smith <eric@trueblade.com>
parents:
53787
diff
changeset
|
330 self.assertEqual(format(INF, 'F'), 'INF') |
|
04bdc944718a
Issue #3382. float 'F' formatting no longer maps to 'f'. This only affects nan and inf.
Eric Smith <eric@trueblade.com>
parents:
53787
diff
changeset
|
331 |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
332 @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
333 "test requires IEEE 754 doubles") |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
334 def test_format_testfile(self): |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
335 for line in open(format_testfile): |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
336 if line.startswith('--'): |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
337 continue |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
338 line = line.strip() |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
339 if not line: |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
340 continue |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
341 |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
342 lhs, rhs = map(str.strip, line.split('->')) |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
343 fmt, arg = lhs.split() |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
344 self.assertEqual(fmt % float(arg), rhs) |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
345 self.assertEqual(fmt % -float(arg), '-' + rhs) |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
346 |
|
53603
3759839b9fa5
Issue #5864: Fix problem with empty code formatting for floats,
Mark Dickinson <dickinsm@gmail.com>
parents:
53218
diff
changeset
|
347 def test_issue5864(self): |
|
3759839b9fa5
Issue #5864: Fix problem with empty code formatting for floats,
Mark Dickinson <dickinsm@gmail.com>
parents:
53218
diff
changeset
|
348 self.assertEquals(format(123.456, '.4'), '123.5') |
|
3759839b9fa5
Issue #5864: Fix problem with empty code formatting for floats,
Mark Dickinson <dickinsm@gmail.com>
parents:
53218
diff
changeset
|
349 self.assertEquals(format(1234.56, '.4'), '1.235e+03') |
|
3759839b9fa5
Issue #5864: Fix problem with empty code formatting for floats,
Mark Dickinson <dickinsm@gmail.com>
parents:
53218
diff
changeset
|
350 self.assertEquals(format(12345.6, '.4'), '1.235e+04') |
|
3759839b9fa5
Issue #5864: Fix problem with empty code formatting for floats,
Mark Dickinson <dickinsm@gmail.com>
parents:
53218
diff
changeset
|
351 |
|
53209
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
352 class ReprTestCase(unittest.TestCase): |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
353 def test_repr(self): |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
354 floats_file = open(os.path.join(os.path.split(__file__)[0], |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
355 'floating_points.txt')) |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
356 for line in floats_file: |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
357 line = line.strip() |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
358 if not line or line.startswith('#'): |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
359 continue |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
360 v = eval(line) |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
361 self.assertEqual(v, eval(repr(v))) |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
362 floats_file.close() |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
363 |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
364 @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
365 "applies only when using short float repr style") |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
366 def test_short_repr(self): |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
367 # test short float repr introduced in Python 3.1. One aspect |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
368 # of this repr is that we get some degree of str -> float -> |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
369 # str roundtripping. In particular, for any numeric string |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
370 # containing 15 or fewer significant digits, those exact same |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
371 # digits (modulo trailing zeros) should appear in the output. |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
372 # No more repr(0.03) -> "0.029999999999999999"! |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
373 |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
374 test_strings = [ |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
375 # output always includes *either* a decimal point and at |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
376 # least one digit after that point, or an exponent. |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
377 '0.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
378 '1.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
379 '0.01', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
380 '0.02', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
381 '0.03', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
382 '0.04', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
383 '0.05', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
384 '1.23456789', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
385 '10.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
386 '100.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
387 # values >= 1e16 get an exponent... |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
388 '1000000000000000.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
389 '9999999999999990.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
390 '1e+16', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
391 '1e+17', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
392 # ... and so do values < 1e-4 |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
393 '0.001', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
394 '0.001001', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
395 '0.00010000000000001', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
396 '0.0001', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
397 '9.999999999999e-05', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
398 '1e-05', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
399 # values designed to provoke failure if the FPU rounding |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
400 # precision isn't set correctly |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
401 '8.72293771110361e+25', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
402 '7.47005307342313e+26', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
403 '2.86438000439698e+28', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
404 '8.89142905246179e+28', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
405 '3.08578087079232e+35', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
406 ] |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
407 |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
408 for s in test_strings: |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
409 negs = '-'+s |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
410 self.assertEqual(s, repr(float(s))) |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
411 self.assertEqual(negs, repr(float(negs))) |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
412 |
|
53218
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
413 class RoundTestCase(unittest.TestCase): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
414 @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
415 "test requires IEEE 754 doubles") |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
416 def test_inf_nan(self): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
417 self.assertRaises(OverflowError, round, INF) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
418 self.assertRaises(OverflowError, round, -INF) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
419 self.assertRaises(ValueError, round, NAN) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
420 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
421 @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
422 "test requires IEEE 754 doubles") |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
423 def test_large_n(self): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
424 for n in [324, 325, 400, 2**31-1, 2**31, 2**32, 2**100]: |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
425 self.assertEqual(round(123.456, n), 123.456) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
426 self.assertEqual(round(-123.456, n), -123.456) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
427 self.assertEqual(round(1e300, n), 1e300) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
428 self.assertEqual(round(1e-320, n), 1e-320) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
429 self.assertEqual(round(1e150, 300), 1e150) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
430 self.assertEqual(round(1e300, 307), 1e300) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
431 self.assertEqual(round(-3.1415, 308), -3.1415) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
432 self.assertEqual(round(1e150, 309), 1e150) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
433 self.assertEqual(round(1.4e-315, 315), 1e-315) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
434 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
435 @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
436 "test requires IEEE 754 doubles") |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
437 def test_small_n(self): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
438 for n in [-308, -309, -400, 1-2**31, -2**31, -2**31-1, -2**100]: |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
439 self.assertEqual(round(123.456, n), 0.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
440 self.assertEqual(round(-123.456, n), -0.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
441 self.assertEqual(round(1e300, n), 0.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
442 self.assertEqual(round(1e-320, n), 0.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
443 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
444 @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
445 "test requires IEEE 754 doubles") |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
446 def test_overflow(self): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
447 self.assertRaises(OverflowError, round, 1.6e308, -308) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
448 self.assertRaises(OverflowError, round, -1.7e308, -308) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
449 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
450 @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
451 "applies only when using short float repr style") |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
452 def test_previous_round_bugs(self): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
453 # particular cases that have occurred in bug reports |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
454 self.assertEqual(round(562949953421312.5, 1), |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
455 562949953421312.5) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
456 self.assertEqual(round(56294995342131.5, 3), |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
457 56294995342131.5) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
458 # round-half-even |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
459 self.assertEqual(round(25.0, -1), 20.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
460 self.assertEqual(round(35.0, -1), 40.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
461 self.assertEqual(round(45.0, -1), 40.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
462 self.assertEqual(round(55.0, -1), 60.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
463 self.assertEqual(round(65.0, -1), 60.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
464 self.assertEqual(round(75.0, -1), 80.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
465 self.assertEqual(round(85.0, -1), 80.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
466 self.assertEqual(round(95.0, -1), 100.0) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
467 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
468 @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
469 "applies only when using short float repr style") |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
470 def test_matches_float_format(self): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
471 # round should give the same results as float formatting |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
472 for i in range(500): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
473 x = i/1000. |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
474 self.assertEqual(float(format(x, '.0f')), round(x, 0)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
475 self.assertEqual(float(format(x, '.1f')), round(x, 1)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
476 self.assertEqual(float(format(x, '.2f')), round(x, 2)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
477 self.assertEqual(float(format(x, '.3f')), round(x, 3)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
478 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
479 for i in range(5, 5000, 10): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
480 x = i/1000. |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
481 self.assertEqual(float(format(x, '.0f')), round(x, 0)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
482 self.assertEqual(float(format(x, '.1f')), round(x, 1)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
483 self.assertEqual(float(format(x, '.2f')), round(x, 2)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
484 self.assertEqual(float(format(x, '.3f')), round(x, 3)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
485 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
486 for i in range(500): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
487 x = random.random() |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
488 self.assertEqual(float(format(x, '.0f')), round(x, 0)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
489 self.assertEqual(float(format(x, '.1f')), round(x, 1)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
490 self.assertEqual(float(format(x, '.2f')), round(x, 2)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
491 self.assertEqual(float(format(x, '.3f')), round(x, 3)) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
492 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
493 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
494 |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
495 # 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
|
496 # 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
|
497 class InfNanTest(unittest.TestCase): |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
498 def test_inf_from_str(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
499 self.assertTrue(isinf(float("inf"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
500 self.assertTrue(isinf(float("+inf"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
501 self.assertTrue(isinf(float("-inf"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
502 self.assertTrue(isinf(float("infinity"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
503 self.assertTrue(isinf(float("+infinity"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
504 self.assertTrue(isinf(float("-infinity"))) |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
505 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
506 self.assertEqual(repr(float("inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
507 self.assertEqual(repr(float("+inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
508 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
|
509 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
|
510 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
|
511 self.assertEqual(repr(float("-infinity")), "-inf") |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
512 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
513 self.assertEqual(repr(float("INF")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
514 self.assertEqual(repr(float("+Inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
515 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
|
516 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
|
517 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
|
518 self.assertEqual(repr(float("-INFINITY")), "-inf") |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
519 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
520 self.assertEqual(str(float("inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
521 self.assertEqual(str(float("+inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
522 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
|
523 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
|
524 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
|
525 self.assertEqual(str(float("-infinity")), "-inf") |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
526 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
527 self.assertRaises(ValueError, float, "info") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
528 self.assertRaises(ValueError, float, "+info") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
529 self.assertRaises(ValueError, float, "-info") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
530 self.assertRaises(ValueError, float, "in") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
531 self.assertRaises(ValueError, float, "+in") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
532 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
|
533 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
|
534 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
|
535 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
|
536 self.assertRaises(ValueError, float, "infinitys") |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
537 |
|
54232
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
538 self.assertRaises(ValueError, float, "++Inf") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
539 self.assertRaises(ValueError, float, "-+inf") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
540 self.assertRaises(ValueError, float, "+-infinity") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
541 self.assertRaises(ValueError, float, "--Infinity") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
542 |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
543 def test_inf_as_str(self): |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
544 self.assertEqual(repr(1e300 * 1e300), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
545 self.assertEqual(repr(-1e300 * 1e300), "-inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
546 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
547 self.assertEqual(str(1e300 * 1e300), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
548 self.assertEqual(str(-1e300 * 1e300), "-inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
549 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
550 def test_nan_from_str(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
551 self.assertTrue(isnan(float("nan"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
552 self.assertTrue(isnan(float("+nan"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
553 self.assertTrue(isnan(float("-nan"))) |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
554 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
555 self.assertEqual(repr(float("nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
556 self.assertEqual(repr(float("+nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
557 self.assertEqual(repr(float("-nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
558 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
559 self.assertEqual(repr(float("NAN")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
560 self.assertEqual(repr(float("+NAn")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
561 self.assertEqual(repr(float("-NaN")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
562 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
563 self.assertEqual(str(float("nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
564 self.assertEqual(str(float("+nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
565 self.assertEqual(str(float("-nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
566 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
567 self.assertRaises(ValueError, float, "nana") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
568 self.assertRaises(ValueError, float, "+nana") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
569 self.assertRaises(ValueError, float, "-nana") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
570 self.assertRaises(ValueError, float, "na") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
571 self.assertRaises(ValueError, float, "+na") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
572 self.assertRaises(ValueError, float, "-na") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
573 |
|
54232
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
574 self.assertRaises(ValueError, float, "++nan") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
575 self.assertRaises(ValueError, float, "-+NAN") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
576 self.assertRaises(ValueError, float, "+-NaN") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
577 self.assertRaises(ValueError, float, "--nAn") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
578 |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
579 def test_nan_as_str(self): |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
580 self.assertEqual(repr(1e300 * 1e300 * 0), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
581 self.assertEqual(repr(-1e300 * 1e300 * 0), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
582 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
583 self.assertEqual(str(1e300 * 1e300 * 0), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
584 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
|
585 |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
586 def notest_float_nan(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
587 self.assertTrue(NAN.is_nan()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
588 self.assertFalse(INF.is_nan()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
589 self.assertFalse((0.).is_nan()) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
590 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
591 def notest_float_inf(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
592 self.assertTrue(INF.is_inf()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
593 self.assertFalse(NAN.is_inf()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
594 self.assertFalse((0.).is_inf()) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
595 |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
596 fromHex = float.fromhex |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
597 toHex = float.hex |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
598 class HexFloatTestCase(unittest.TestCase): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
599 MAX = fromHex('0x.fffffffffffff8p+1024') # max normal |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
600 MIN = fromHex('0x1p-1022') # min normal |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
601 TINY = fromHex('0x0.0000000000001p-1022') # min subnormal |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
602 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
|
603 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
604 def identical(self, x, y): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
605 # 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
|
606 # are NaNs |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
607 if isnan(x) or isnan(y): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
608 if isnan(x) == isnan(y): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
609 return |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
610 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
|
611 return |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
612 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
|
613 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
614 def test_ends(self): |
|
48498
177302feab36
Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48497
diff
changeset
|
615 self.identical(self.MIN, ldexp(1.0, -1022)) |
|
177302feab36
Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48497
diff
changeset
|
616 self.identical(self.TINY, ldexp(1.0, -1074)) |
|
177302feab36
Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48497
diff
changeset
|
617 self.identical(self.EPS, ldexp(1.0, -52)) |
|
177302feab36
Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48497
diff
changeset
|
618 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
|
619 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
620 def test_invalid_inputs(self): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
621 invalid_inputs = [ |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
622 'infi', # misspelt infinities and nans |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
623 '-Infinit', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
624 '++inf', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
625 '-+Inf', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
626 '--nan', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
627 '+-NaN', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
628 'snan', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
629 'NaNs', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
630 'nna', |
|
54001
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
631 'an', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
632 'nf', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
633 'nfinity', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
634 'inity', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
635 'iinity', |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
636 '0xnan', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
637 '', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
638 ' ', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
639 'x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
640 '0xX1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
641 '+ 0x1.0p0', # internal whitespace |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
642 '- 0x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
643 '0 x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
644 '0x 1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
645 '0x1 2.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
646 '+0x1 .0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
647 '0x1. 0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
648 '-0x1.0 1p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
649 '-0x1.0 p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
650 '+0x1.0p +0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
651 '0x1.0p -0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
652 '0x1.0p 0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
653 '+0x1.0p+ 0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
654 '-0x1.0p- 0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
655 '++0x1.0p-0', # double signs |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
656 '--0x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
657 '+-0x1.0p+0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
658 '-+0x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
659 '0x1.0p++0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
660 '+0x1.0p+-0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
661 '-0x1.0p-+0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
662 '0x1.0p--0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
663 '0x1.0.p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
664 '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
|
665 '0x1,p0', # wrong decimal point character |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
666 '0x1pa', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
667 '0x1p\uff10', # fullwidth Unicode digits |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
668 '\uff10x1p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
669 '0x\uff11p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
670 '0x1.\uff10p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
671 '0x1p0 \n 0x2p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
672 '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
|
673 ] |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
674 for x in invalid_inputs: |
|
48817
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
675 try: |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
676 result = fromHex(x) |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
677 except ValueError: |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
678 pass |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
679 else: |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
680 self.fail('Expected float.fromhex(%r) to raise ValueError; ' |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
681 'got %r instead' % (x, result)) |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
682 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
683 |
|
54001
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
684 def test_whitespace(self): |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
685 value_pairs = [ |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
686 ('inf', INF), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
687 ('-Infinity', -INF), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
688 ('nan', NAN), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
689 ('1.0', 1.0), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
690 ('-0x.2', -0.125), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
691 ('-0.0', -0.0) |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
692 ] |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
693 whitespace = [ |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
694 '', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
695 ' ', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
696 '\t', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
697 '\n', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
698 '\n \t', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
699 '\f', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
700 '\v', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
701 '\r' |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
702 ] |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
703 for inp, expected in value_pairs: |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
704 for lead in whitespace: |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
705 for trail in whitespace: |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
706 got = fromHex(lead + inp + trail) |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
707 self.identical(got, expected) |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
708 |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
709 |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
710 def test_from_hex(self): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
711 MIN = self.MIN; |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
712 MAX = self.MAX; |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
713 TINY = self.TINY; |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
714 EPS = self.EPS; |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
715 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
716 # 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
|
717 self.identical(fromHex('inf'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
718 self.identical(fromHex('+Inf'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
719 self.identical(fromHex('-INF'), -INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
720 self.identical(fromHex('iNf'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
721 self.identical(fromHex('Infinity'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
722 self.identical(fromHex('+INFINITY'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
723 self.identical(fromHex('-infinity'), -INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
724 self.identical(fromHex('-iNFiNitY'), -INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
725 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
726 # nans with optional sign; case insensitive |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
727 self.identical(fromHex('nan'), NAN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
728 self.identical(fromHex('+NaN'), NAN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
729 self.identical(fromHex('-NaN'), NAN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
730 self.identical(fromHex('-nAN'), NAN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
731 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
732 # variations in input format |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
733 self.identical(fromHex('1'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
734 self.identical(fromHex('+1'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
735 self.identical(fromHex('1.'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
736 self.identical(fromHex('1.0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
737 self.identical(fromHex('1.0p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
738 self.identical(fromHex('01'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
739 self.identical(fromHex('01.'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
740 self.identical(fromHex('0x1'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
741 self.identical(fromHex('0x1.'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
742 self.identical(fromHex('0x1.0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
743 self.identical(fromHex('+0x1.0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
744 self.identical(fromHex('0x1p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
745 self.identical(fromHex('0X1p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
746 self.identical(fromHex('0X1P0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
747 self.identical(fromHex('0x1P0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
748 self.identical(fromHex('0x1.p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
749 self.identical(fromHex('0x1.0p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
750 self.identical(fromHex('0x.1p4'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
751 self.identical(fromHex('0x.1p04'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
752 self.identical(fromHex('0x.1p004'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
753 self.identical(fromHex('0x1p+0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
754 self.identical(fromHex('0x1P-0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
755 self.identical(fromHex('+0x1p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
756 self.identical(fromHex('0x01p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
757 self.identical(fromHex('0x1p00'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
758 self.identical(fromHex(' 0x1p0 '), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
759 self.identical(fromHex('\n 0x1p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
760 self.identical(fromHex('0x1p0 \t'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
761 self.identical(fromHex('0xap0'), 10.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
762 self.identical(fromHex('0xAp0'), 10.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
763 self.identical(fromHex('0xaP0'), 10.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
764 self.identical(fromHex('0xAP0'), 10.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
765 self.identical(fromHex('0xbep0'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
766 self.identical(fromHex('0xBep0'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
767 self.identical(fromHex('0xbEp0'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
768 self.identical(fromHex('0XBE0P-4'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
769 self.identical(fromHex('0xBEp0'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
770 self.identical(fromHex('0xB.Ep4'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
771 self.identical(fromHex('0x.BEp8'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
772 self.identical(fromHex('0x.0BEp12'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
773 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
774 # moving the point around |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
775 pi = fromHex('0x1.921fb54442d18p1') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
776 self.identical(fromHex('0x.006487ed5110b46p11'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
777 self.identical(fromHex('0x.00c90fdaa22168cp10'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
778 self.identical(fromHex('0x.01921fb54442d18p9'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
779 self.identical(fromHex('0x.03243f6a8885a3p8'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
780 self.identical(fromHex('0x.06487ed5110b46p7'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
781 self.identical(fromHex('0x.0c90fdaa22168cp6'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
782 self.identical(fromHex('0x.1921fb54442d18p5'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
783 self.identical(fromHex('0x.3243f6a8885a3p4'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
784 self.identical(fromHex('0x.6487ed5110b46p3'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
785 self.identical(fromHex('0x.c90fdaa22168cp2'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
786 self.identical(fromHex('0x1.921fb54442d18p1'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
787 self.identical(fromHex('0x3.243f6a8885a3p0'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
788 self.identical(fromHex('0x6.487ed5110b46p-1'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
789 self.identical(fromHex('0xc.90fdaa22168cp-2'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
790 self.identical(fromHex('0x19.21fb54442d18p-3'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
791 self.identical(fromHex('0x32.43f6a8885a3p-4'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
792 self.identical(fromHex('0x64.87ed5110b46p-5'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
793 self.identical(fromHex('0xc9.0fdaa22168cp-6'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
794 self.identical(fromHex('0x192.1fb54442d18p-7'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
795 self.identical(fromHex('0x324.3f6a8885a3p-8'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
796 self.identical(fromHex('0x648.7ed5110b46p-9'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
797 self.identical(fromHex('0xc90.fdaa22168cp-10'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
798 self.identical(fromHex('0x1921.fb54442d18p-11'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
799 # ... |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
800 self.identical(fromHex('0x1921fb54442d1.8p-47'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
801 self.identical(fromHex('0x3243f6a8885a3p-48'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
802 self.identical(fromHex('0x6487ed5110b46p-49'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
803 self.identical(fromHex('0xc90fdaa22168cp-50'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
804 self.identical(fromHex('0x1921fb54442d18p-51'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
805 self.identical(fromHex('0x3243f6a8885a30p-52'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
806 self.identical(fromHex('0x6487ed5110b460p-53'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
807 self.identical(fromHex('0xc90fdaa22168c0p-54'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
808 self.identical(fromHex('0x1921fb54442d180p-55'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
809 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
810 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
811 # results that should overflow... |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
812 self.assertRaises(OverflowError, fromHex, '-0x1p1024') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
813 self.assertRaises(OverflowError, fromHex, '0x1p+1025') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
814 self.assertRaises(OverflowError, fromHex, '+0X1p1030') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
815 self.assertRaises(OverflowError, fromHex, '-0x1p+1100') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
816 self.assertRaises(OverflowError, fromHex, '0X1p123456789123456789') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
817 self.assertRaises(OverflowError, fromHex, '+0X.8p+1025') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
818 self.assertRaises(OverflowError, fromHex, '+0x0.8p1025') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
819 self.assertRaises(OverflowError, fromHex, '-0x0.4p1026') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
820 self.assertRaises(OverflowError, fromHex, '0X2p+1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
821 self.assertRaises(OverflowError, fromHex, '0x2.p1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
822 self.assertRaises(OverflowError, fromHex, '-0x2.0p+1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
823 self.assertRaises(OverflowError, fromHex, '+0X4p+1022') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
824 self.assertRaises(OverflowError, fromHex, '0x1.ffffffffffffffp+1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
825 self.assertRaises(OverflowError, fromHex, '-0X1.fffffffffffff9p1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
826 self.assertRaises(OverflowError, fromHex, '0X1.fffffffffffff8p1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
827 self.assertRaises(OverflowError, fromHex, '+0x3.fffffffffffffp1022') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
828 self.assertRaises(OverflowError, fromHex, '0x3fffffffffffffp+970') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
829 self.assertRaises(OverflowError, fromHex, '0x10000000000000000p960') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
830 self.assertRaises(OverflowError, fromHex, '-0Xffffffffffffffffp960') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
831 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
832 # ...and those that round to +-max float |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
833 self.identical(fromHex('+0x1.fffffffffffffp+1023'), MAX) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
834 self.identical(fromHex('-0X1.fffffffffffff7p1023'), -MAX) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
835 self.identical(fromHex('0X1.fffffffffffff7fffffffffffffp1023'), MAX) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
836 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
837 # zeros |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
838 self.identical(fromHex('0x0p0'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
839 self.identical(fromHex('0x0p1000'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
840 self.identical(fromHex('-0x0p1023'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
841 self.identical(fromHex('0X0p1024'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
842 self.identical(fromHex('-0x0p1025'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
843 self.identical(fromHex('0X0p2000'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
844 self.identical(fromHex('0x0p123456789123456789'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
845 self.identical(fromHex('-0X0p-0'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
846 self.identical(fromHex('-0X0p-1000'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
847 self.identical(fromHex('0x0p-1023'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
848 self.identical(fromHex('-0X0p-1024'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
849 self.identical(fromHex('-0x0p-1025'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
850 self.identical(fromHex('-0x0p-1072'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
851 self.identical(fromHex('0X0p-1073'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
852 self.identical(fromHex('-0x0p-1074'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
853 self.identical(fromHex('0x0p-1075'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
854 self.identical(fromHex('0X0p-1076'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
855 self.identical(fromHex('-0X0p-2000'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
856 self.identical(fromHex('-0x0p-123456789123456789'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
857 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
858 # values that should underflow to 0 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
859 self.identical(fromHex('0X1p-1075'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
860 self.identical(fromHex('-0X1p-1075'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
861 self.identical(fromHex('-0x1p-123456789123456789'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
862 self.identical(fromHex('0x1.00000000000000001p-1075'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
863 self.identical(fromHex('-0x1.1p-1075'), -TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
864 self.identical(fromHex('0x1.fffffffffffffffffp-1075'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
865 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
866 # 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
|
867 self.identical(fromHex('0x1p-1076'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
868 self.identical(fromHex('0X2p-1076'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
869 self.identical(fromHex('0X3p-1076'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
870 self.identical(fromHex('0x4p-1076'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
871 self.identical(fromHex('0X5p-1076'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
872 self.identical(fromHex('0X6p-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
873 self.identical(fromHex('0x7p-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
874 self.identical(fromHex('0X8p-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
875 self.identical(fromHex('0X9p-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
876 self.identical(fromHex('0xap-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
877 self.identical(fromHex('0Xbp-1076'), 3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
878 self.identical(fromHex('0xcp-1076'), 3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
879 self.identical(fromHex('0Xdp-1076'), 3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
880 self.identical(fromHex('0Xep-1076'), 4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
881 self.identical(fromHex('0xfp-1076'), 4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
882 self.identical(fromHex('0x10p-1076'), 4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
883 self.identical(fromHex('-0x1p-1076'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
884 self.identical(fromHex('-0X2p-1076'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
885 self.identical(fromHex('-0x3p-1076'), -TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
886 self.identical(fromHex('-0X4p-1076'), -TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
887 self.identical(fromHex('-0x5p-1076'), -TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
888 self.identical(fromHex('-0x6p-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
889 self.identical(fromHex('-0X7p-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
890 self.identical(fromHex('-0X8p-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
891 self.identical(fromHex('-0X9p-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
892 self.identical(fromHex('-0Xap-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
893 self.identical(fromHex('-0xbp-1076'), -3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
894 self.identical(fromHex('-0xcp-1076'), -3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
895 self.identical(fromHex('-0Xdp-1076'), -3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
896 self.identical(fromHex('-0xep-1076'), -4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
897 self.identical(fromHex('-0Xfp-1076'), -4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
898 self.identical(fromHex('-0X10p-1076'), -4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
899 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
900 # ... and near MIN ... |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
901 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
|
902 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
|
903 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
|
904 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
|
905 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
|
906 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
|
907 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
|
908 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
|
909 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
|
910 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
|
911 self.identical(fromHex('0x0.ffffffffffffeap-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
912 self.identical(fromHex('0x0.ffffffffffffecp-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
913 self.identical(fromHex('0x0.ffffffffffffeep-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
914 self.identical(fromHex('0x0.fffffffffffff0p-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
915 self.identical(fromHex('0x0.fffffffffffff2p-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
916 self.identical(fromHex('0x0.fffffffffffff4p-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
917 self.identical(fromHex('0x0.fffffffffffff6p-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
918 self.identical(fromHex('0x0.fffffffffffff8p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
919 self.identical(fromHex('0x0.fffffffffffffap-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
920 self.identical(fromHex('0x0.fffffffffffffcp-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
921 self.identical(fromHex('0x0.fffffffffffffep-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
922 self.identical(fromHex('0x1.00000000000000p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
923 self.identical(fromHex('0x1.00000000000002p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
924 self.identical(fromHex('0x1.00000000000004p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
925 self.identical(fromHex('0x1.00000000000006p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
926 self.identical(fromHex('0x1.00000000000008p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
927 self.identical(fromHex('0x1.0000000000000ap-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
928 self.identical(fromHex('0x1.0000000000000cp-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
929 self.identical(fromHex('0x1.0000000000000ep-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
930 self.identical(fromHex('0x1.00000000000010p-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
931 self.identical(fromHex('0x1.00000000000012p-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
932 self.identical(fromHex('0x1.00000000000014p-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
933 self.identical(fromHex('0x1.00000000000016p-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
934 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
|
935 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
936 # ... and near 1.0. |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
937 self.identical(fromHex('0x0.fffffffffffff0p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
938 self.identical(fromHex('0x0.fffffffffffff1p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
939 self.identical(fromHex('0X0.fffffffffffff2p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
940 self.identical(fromHex('0x0.fffffffffffff3p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
941 self.identical(fromHex('0X0.fffffffffffff4p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
942 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
|
943 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
|
944 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
|
945 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
|
946 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
|
947 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
|
948 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
|
949 self.identical(fromHex('0X0.fffffffffffffcp0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
950 self.identical(fromHex('0x0.fffffffffffffdp0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
951 self.identical(fromHex('0X0.fffffffffffffep0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
952 self.identical(fromHex('0x0.ffffffffffffffp0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
953 self.identical(fromHex('0X1.00000000000000p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
954 self.identical(fromHex('0X1.00000000000001p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
955 self.identical(fromHex('0x1.00000000000002p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
956 self.identical(fromHex('0X1.00000000000003p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
957 self.identical(fromHex('0x1.00000000000004p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
958 self.identical(fromHex('0X1.00000000000005p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
959 self.identical(fromHex('0X1.00000000000006p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
960 self.identical(fromHex('0X1.00000000000007p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
961 self.identical(fromHex('0x1.00000000000007ffffffffffffffffffffp0'), |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
962 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
963 self.identical(fromHex('0x1.00000000000008p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
964 self.identical(fromHex('0x1.00000000000008000000000000000001p0'), |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
965 1+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
966 self.identical(fromHex('0X1.00000000000009p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
967 self.identical(fromHex('0x1.0000000000000ap0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
968 self.identical(fromHex('0x1.0000000000000bp0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
969 self.identical(fromHex('0X1.0000000000000cp0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
970 self.identical(fromHex('0x1.0000000000000dp0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
971 self.identical(fromHex('0x1.0000000000000ep0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
972 self.identical(fromHex('0X1.0000000000000fp0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
973 self.identical(fromHex('0x1.00000000000010p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
974 self.identical(fromHex('0X1.00000000000011p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
975 self.identical(fromHex('0x1.00000000000012p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
976 self.identical(fromHex('0X1.00000000000013p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
977 self.identical(fromHex('0X1.00000000000014p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
978 self.identical(fromHex('0x1.00000000000015p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
979 self.identical(fromHex('0x1.00000000000016p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
980 self.identical(fromHex('0X1.00000000000017p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
981 self.identical(fromHex('0x1.00000000000017ffffffffffffffffffffp0'), |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
982 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
983 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
|
984 self.identical(fromHex('0X1.00000000000018000000000000000001p0'), |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
985 1.0+2*EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
986 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
|
987 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
|
988 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
|
989 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
|
990 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
|
991 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
|
992 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
|
993 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
|
994 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
995 def test_roundtrip(self): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
996 def roundtrip(x): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
997 return fromHex(toHex(x)) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
998 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
999 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
|
1000 self.identical(x, roundtrip(x)) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1001 self.identical(-x, roundtrip(-x)) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1002 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1003 # 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
|
1004 import random |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1005 for i in range(10000): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1006 e = random.randrange(-1200, 1200) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1007 m = random.random() |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1008 s = random.choice([1.0, -1.0]) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1009 try: |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1010 x = s*ldexp(m, e) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1011 except OverflowError: |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1012 pass |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1013 else: |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1014 self.identical(x, fromHex(toHex(x))) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1015 |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
1016 |
| 34972 | 1017 def test_main(): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46664
diff
changeset
|
1018 support.run_unittest( |
|
49055
ca1a8ac47d04
I modified the tests a bit to account for unicode string
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
48817
diff
changeset
|
1019 GeneralFloatCases, |
| 34972 | 1020 FormatFunctionsTestCase, |
| 1021 UnknownFormatTestCase, | |
|
42817
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
1022 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
|
1023 FormatTestCase, |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
1024 ReprTestCase, |
|
53218
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
1025 RoundTestCase, |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
1026 InfNanTest, |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1027 HexFloatTestCase, |
|
44268
7ae604b3533b
Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44260
diff
changeset
|
1028 ) |
| 34972 | 1029 |
| 1030 if __name__ == '__main__': | |
| 1031 test_main() |
