Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_float.py @ 70817:dd775b1561ba
Fix markup.
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Tue, 14 Jun 2011 21:09:55 +0200 |
| parents | db73857669fb |
| children | d9ad109dd82e |
| 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 |
|
66701
294806cac8c5
Backout broken backport. (Sorry.)
Mark Dickinson <dickinsm@gmail.com>
parents:
66700
diff
changeset
|
14 have_getformat = hasattr(float, "__getformat__") |
|
294806cac8c5
Backout broken backport. (Sorry.)
Mark Dickinson <dickinsm@gmail.com>
parents:
66700
diff
changeset
|
15 requires_getformat = unittest.skipUnless(have_getformat, |
|
294806cac8c5
Backout broken backport. (Sorry.)
Mark Dickinson <dickinsm@gmail.com>
parents:
66700
diff
changeset
|
16 "requires __getformat__") |
|
294806cac8c5
Backout broken backport. (Sorry.)
Mark Dickinson <dickinsm@gmail.com>
parents:
66700
diff
changeset
|
17 requires_setformat = unittest.skipUnless(hasattr(float, "__setformat__"), |
|
294806cac8c5
Backout broken backport. (Sorry.)
Mark Dickinson <dickinsm@gmail.com>
parents:
66700
diff
changeset
|
18 "requires __setformat__") |
|
294806cac8c5
Backout broken backport. (Sorry.)
Mark Dickinson <dickinsm@gmail.com>
parents:
66700
diff
changeset
|
19 |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
20 #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
|
21 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
|
22 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
|
23 |
|
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
|
24 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
|
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
|
26 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
|
27 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
|
28 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
|
29 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
|
30 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
|
31 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
|
32 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
|
33 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
|
34 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
|
35 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
|
36 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
|
37 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
|
38 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
|
39 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
|
40 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
|
41 self.assertRaises(ValueError, float, "-.") |
|
66673
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
42 self.assertRaises(ValueError, float, b"-") |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
43 self.assertRaises(TypeError, float, {}) |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
44 # Lone surrogate |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
45 self.assertRaises(UnicodeEncodeError, float, '\uD8F0') |
|
58887
6acb9afc75cd
Merged revisions 78166 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
58456
diff
changeset
|
46 # check that we don't accept alternate exponent markers |
|
6acb9afc75cd
Merged revisions 78166 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
58456
diff
changeset
|
47 self.assertRaises(ValueError, float, "-1.7d29") |
|
6acb9afc75cd
Merged revisions 78166 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
58456
diff
changeset
|
48 self.assertRaises(ValueError, float, "3D-14") |
|
66673
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
49 self.assertEqual(float(" \u0663.\u0661\u0664 "), 3.14) |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
50 self.assertEqual(float("\N{EM SPACE}3.14\N{EN SPACE}"), 3.14) |
|
56916
690c565c15a9
Merged revisions 75885 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
51 # extra long strings should not be a problem |
|
690c565c15a9
Merged revisions 75885 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
52 float(b'.' + b'1'*1000) |
|
690c565c15a9
Merged revisions 75885 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
53 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
|
54 |
|
66673
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
55 def test_error_message(self): |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
56 testlist = ('\xbd', '123\xbd', ' 123 456 ') |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
57 for s in testlist: |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
58 try: |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
59 float(s) |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
60 except ValueError as e: |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
61 self.assertIn(s.strip(), e.args[0]) |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
62 else: |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
63 self.fail("Expected int(%r) to raise a ValueError", s) |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
64 |
|
7b6af56ee74d
Issue #10557: Fixed error messages from float() and other numeric
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66444
diff
changeset
|
65 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46664
diff
changeset
|
66 @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
|
67 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
|
68 # 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
|
69 # float must not accept the locale specific decimal point but |
|
68585
bf94b6a73fc8
#11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66703
diff
changeset
|
70 # it still has to accept the normal python syntax |
|
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
|
71 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
|
72 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
|
73 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
|
74 |
|
031dfe455585
Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
75 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
|
76 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
|
77 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
|
78 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
|
79 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
|
80 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
|
81 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
|
82 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
|
83 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
|
84 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
|
85 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
|
86 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
|
87 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
|
88 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
|
89 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
|
90 self.assertEqual(float(" 25.e-1 "), 2.5) |
|
68130
614a8c7b9525
Removed fcmp and FUZZ from test.support, following the discussion on python-dev:
Eli Bendersky <eliben@gmail.com>
parents:
66709
diff
changeset
|
91 self.assertAlmostEqual(float(" .25e-1 "), .025) |
|
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
|
92 |
|
031dfe455585
Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
93 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
|
94 # 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
|
95 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
|
96 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
|
97 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
|
98 |
|
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 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
|
100 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
|
101 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
|
102 |
|
031dfe455585
Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
103 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
|
104 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
|
105 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
|
106 |
|
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 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
|
108 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
|
109 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
|
110 |
|
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 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
|
112 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
|
113 |
|
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 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
|
115 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
|
116 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
|
117 |
|
53161
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
118 # 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
|
119 # unicode subclasses). |
|
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
120 class FooStr(str): |
|
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
121 def __float__(self): |
|
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
122 return float(str(self)) + 1 |
|
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
123 |
|
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
|
124 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
|
125 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
|
126 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
|
127 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
|
128 self.assertRaises(TypeError, float, Foo4(42)) |
|
53161
df2638b9bee2
Merged revisions 71628 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49721
diff
changeset
|
129 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
|
130 |
|
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 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
|
132 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
|
133 (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
|
134 (-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
|
135 (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
|
136 (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
|
137 ]: |
|
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 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
|
139 |
|
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
|
140 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
|
141 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
|
142 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
|
143 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
|
144 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
|
145 |
|
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
|
146 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
|
147 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
|
148 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
|
149 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
|
150 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
|
151 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
|
152 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
|
153 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
|
154 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
|
155 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
|
156 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
|
157 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
|
158 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
|
159 |
|
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
|
160 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
|
161 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
|
162 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
|
163 |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
164 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
|
165 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
|
166 for f in floats: |
|
58415
f6a626f34840
use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents:
58279
diff
changeset
|
167 self.assertIn(f, [f]) |
|
f6a626f34840
use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents:
58279
diff
changeset
|
168 self.assertIn(f, (f,)) |
|
f6a626f34840
use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents:
58279
diff
changeset
|
169 self.assertIn(f, {f}) |
|
f6a626f34840
use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents:
58279
diff
changeset
|
170 self.assertIn(f, {f: None}) |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
171 self.assertEqual([f].count(f), 1, "[].count('%r') != 1" % f) |
|
58415
f6a626f34840
use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents:
58279
diff
changeset
|
172 self.assertIn(f, floats) |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
173 |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
174 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
|
175 # nonidentical containers, same type, same contents |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
176 self.assertTrue([f] == [f], "[%r] != [%r]" % (f, f)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
177 self.assertTrue((f,) == (f,), "(%r,) != (%r,)" % (f, f)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
178 self.assertTrue({f} == {f}, "{%r} != {%r}" % (f, f)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
179 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
|
180 "{%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
|
181 |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
182 # identical containers |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
183 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
|
184 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
|
185 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
|
186 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
|
187 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
|
188 |
|
66703
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
189 def assertEqualAndEqualSign(self, a, b): |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
190 # fail unless a == b and a and b have the same sign bit; |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
191 # the only difference from assertEqual is that this test |
|
68585
bf94b6a73fc8
#11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66703
diff
changeset
|
192 # distinguishes -0.0 and 0.0. |
|
66703
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
193 self.assertEqual((a, copysign(1.0, a)), (b, copysign(1.0, b))) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
194 |
|
66709
f2a4ade36a1e
Issue #10624: Use support.requires_IEEE_754 in all appropriate tests.
Eric Smith <eric@trueblade.com>
parents:
66698
diff
changeset
|
195 @support.requires_IEEE_754 |
|
66703
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
196 def test_float_mod(self): |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
197 # Check behaviour of % operator for IEEE 754 special cases. |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
198 # In particular, check signs of zeros. |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
199 mod = operator.mod |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
200 |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
201 self.assertEqualAndEqualSign(mod(-1.0, 1.0), 0.0) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
202 self.assertEqualAndEqualSign(mod(-1e-100, 1.0), 1.0) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
203 self.assertEqualAndEqualSign(mod(-0.0, 1.0), 0.0) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
204 self.assertEqualAndEqualSign(mod(0.0, 1.0), 0.0) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
205 self.assertEqualAndEqualSign(mod(1e-100, 1.0), 1e-100) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
206 self.assertEqualAndEqualSign(mod(1.0, 1.0), 0.0) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
207 |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
208 self.assertEqualAndEqualSign(mod(-1.0, -1.0), -0.0) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
209 self.assertEqualAndEqualSign(mod(-1e-100, -1.0), -1e-100) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
210 self.assertEqualAndEqualSign(mod(-0.0, -1.0), -0.0) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
211 self.assertEqualAndEqualSign(mod(0.0, -1.0), -0.0) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
212 self.assertEqualAndEqualSign(mod(1e-100, -1.0), -1.0) |
|
f14f619d7050
Merged revisions 87032 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
66701
diff
changeset
|
213 self.assertEqualAndEqualSign(mod(1.0, -1.0), -0.0) |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
214 |
|
66709
f2a4ade36a1e
Issue #10624: Use support.requires_IEEE_754 in all appropriate tests.
Eric Smith <eric@trueblade.com>
parents:
66698
diff
changeset
|
215 @support.requires_IEEE_754 |
|
58006
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
216 def test_float_pow(self): |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
217 # test builtin pow and ** operator for IEEE 754 special cases. |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
218 # Special cases taken from section F.9.4.4 of the C99 specification |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
219 |
|
58006
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
220 for pow_op in pow, operator.pow: |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
221 # x**NAN is NAN for any x except 1 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
222 self.assertTrue(isnan(pow_op(-INF, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
223 self.assertTrue(isnan(pow_op(-2.0, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
224 self.assertTrue(isnan(pow_op(-1.0, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
225 self.assertTrue(isnan(pow_op(-0.5, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
226 self.assertTrue(isnan(pow_op(-0.0, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
227 self.assertTrue(isnan(pow_op(0.0, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
228 self.assertTrue(isnan(pow_op(0.5, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
229 self.assertTrue(isnan(pow_op(2.0, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
230 self.assertTrue(isnan(pow_op(INF, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
231 self.assertTrue(isnan(pow_op(NAN, NAN))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
232 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
233 # NAN**y is NAN for any y except +-0 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
234 self.assertTrue(isnan(pow_op(NAN, -INF))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
235 self.assertTrue(isnan(pow_op(NAN, -2.0))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
236 self.assertTrue(isnan(pow_op(NAN, -1.0))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
237 self.assertTrue(isnan(pow_op(NAN, -0.5))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
238 self.assertTrue(isnan(pow_op(NAN, 0.5))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
239 self.assertTrue(isnan(pow_op(NAN, 1.0))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
240 self.assertTrue(isnan(pow_op(NAN, 2.0))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
241 self.assertTrue(isnan(pow_op(NAN, INF))) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
242 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
243 # (+-0)**y raises ZeroDivisionError for y a negative odd integer |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
244 self.assertRaises(ZeroDivisionError, pow_op, -0.0, -1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
245 self.assertRaises(ZeroDivisionError, pow_op, 0.0, -1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
246 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
247 # (+-0)**y raises ZeroDivisionError for y finite and negative |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
248 # but not an odd integer |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
249 self.assertRaises(ZeroDivisionError, pow_op, -0.0, -2.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
250 self.assertRaises(ZeroDivisionError, pow_op, -0.0, -0.5) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
251 self.assertRaises(ZeroDivisionError, pow_op, 0.0, -2.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
252 self.assertRaises(ZeroDivisionError, pow_op, 0.0, -0.5) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
253 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
254 # (+-0)**y is +-0 for y a positive odd integer |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
255 self.assertEqualAndEqualSign(pow_op(-0.0, 1.0), -0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
256 self.assertEqualAndEqualSign(pow_op(0.0, 1.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
257 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
258 # (+-0)**y is 0 for y finite and positive but not an odd integer |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
259 self.assertEqualAndEqualSign(pow_op(-0.0, 0.5), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
260 self.assertEqualAndEqualSign(pow_op(-0.0, 2.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
261 self.assertEqualAndEqualSign(pow_op(0.0, 0.5), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
262 self.assertEqualAndEqualSign(pow_op(0.0, 2.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
263 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
264 # (-1)**+-inf is 1 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
265 self.assertEqualAndEqualSign(pow_op(-1.0, -INF), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
266 self.assertEqualAndEqualSign(pow_op(-1.0, INF), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
267 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
268 # 1**y is 1 for any y, even if y is an infinity or nan |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
269 self.assertEqualAndEqualSign(pow_op(1.0, -INF), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
270 self.assertEqualAndEqualSign(pow_op(1.0, -2.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
271 self.assertEqualAndEqualSign(pow_op(1.0, -1.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
272 self.assertEqualAndEqualSign(pow_op(1.0, -0.5), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
273 self.assertEqualAndEqualSign(pow_op(1.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
274 self.assertEqualAndEqualSign(pow_op(1.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
275 self.assertEqualAndEqualSign(pow_op(1.0, 0.5), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
276 self.assertEqualAndEqualSign(pow_op(1.0, 1.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
277 self.assertEqualAndEqualSign(pow_op(1.0, 2.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
278 self.assertEqualAndEqualSign(pow_op(1.0, INF), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
279 self.assertEqualAndEqualSign(pow_op(1.0, NAN), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
280 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
281 # x**+-0 is 1 for any x, even if x is a zero, infinity, or nan |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
282 self.assertEqualAndEqualSign(pow_op(-INF, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
283 self.assertEqualAndEqualSign(pow_op(-2.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
284 self.assertEqualAndEqualSign(pow_op(-1.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
285 self.assertEqualAndEqualSign(pow_op(-0.5, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
286 self.assertEqualAndEqualSign(pow_op(-0.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
287 self.assertEqualAndEqualSign(pow_op(0.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
288 self.assertEqualAndEqualSign(pow_op(0.5, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
289 self.assertEqualAndEqualSign(pow_op(1.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
290 self.assertEqualAndEqualSign(pow_op(2.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
291 self.assertEqualAndEqualSign(pow_op(INF, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
292 self.assertEqualAndEqualSign(pow_op(NAN, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
293 self.assertEqualAndEqualSign(pow_op(-INF, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
294 self.assertEqualAndEqualSign(pow_op(-2.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
295 self.assertEqualAndEqualSign(pow_op(-1.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
296 self.assertEqualAndEqualSign(pow_op(-0.5, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
297 self.assertEqualAndEqualSign(pow_op(-0.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
298 self.assertEqualAndEqualSign(pow_op(0.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
299 self.assertEqualAndEqualSign(pow_op(0.5, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
300 self.assertEqualAndEqualSign(pow_op(1.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
301 self.assertEqualAndEqualSign(pow_op(2.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
302 self.assertEqualAndEqualSign(pow_op(INF, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
303 self.assertEqualAndEqualSign(pow_op(NAN, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
304 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
305 # x**y defers to complex pow for finite negative x and |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
306 # non-integral y. |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
307 self.assertEqual(type(pow_op(-2.0, -0.5)), complex) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
308 self.assertEqual(type(pow_op(-2.0, 0.5)), complex) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
309 self.assertEqual(type(pow_op(-1.0, -0.5)), complex) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
310 self.assertEqual(type(pow_op(-1.0, 0.5)), complex) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
311 self.assertEqual(type(pow_op(-0.5, -0.5)), complex) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
312 self.assertEqual(type(pow_op(-0.5, 0.5)), complex) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
313 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
314 # x**-INF is INF for abs(x) < 1 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
315 self.assertEqualAndEqualSign(pow_op(-0.5, -INF), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
316 self.assertEqualAndEqualSign(pow_op(-0.0, -INF), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
317 self.assertEqualAndEqualSign(pow_op(0.0, -INF), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
318 self.assertEqualAndEqualSign(pow_op(0.5, -INF), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
319 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
320 # x**-INF is 0 for abs(x) > 1 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
321 self.assertEqualAndEqualSign(pow_op(-INF, -INF), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
322 self.assertEqualAndEqualSign(pow_op(-2.0, -INF), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
323 self.assertEqualAndEqualSign(pow_op(2.0, -INF), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
324 self.assertEqualAndEqualSign(pow_op(INF, -INF), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
325 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
326 # x**INF is 0 for abs(x) < 1 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
327 self.assertEqualAndEqualSign(pow_op(-0.5, INF), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
328 self.assertEqualAndEqualSign(pow_op(-0.0, INF), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
329 self.assertEqualAndEqualSign(pow_op(0.0, INF), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
330 self.assertEqualAndEqualSign(pow_op(0.5, INF), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
331 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
332 # x**INF is INF for abs(x) > 1 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
333 self.assertEqualAndEqualSign(pow_op(-INF, INF), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
334 self.assertEqualAndEqualSign(pow_op(-2.0, INF), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
335 self.assertEqualAndEqualSign(pow_op(2.0, INF), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
336 self.assertEqualAndEqualSign(pow_op(INF, INF), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
337 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
338 # (-INF)**y is -0.0 for y a negative odd integer |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
339 self.assertEqualAndEqualSign(pow_op(-INF, -1.0), -0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
340 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
341 # (-INF)**y is 0.0 for y negative but not an odd integer |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
342 self.assertEqualAndEqualSign(pow_op(-INF, -0.5), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
343 self.assertEqualAndEqualSign(pow_op(-INF, -2.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
344 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
345 # (-INF)**y is -INF for y a positive odd integer |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
346 self.assertEqualAndEqualSign(pow_op(-INF, 1.0), -INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
347 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
348 # (-INF)**y is INF for y positive but not an odd integer |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
349 self.assertEqualAndEqualSign(pow_op(-INF, 0.5), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
350 self.assertEqualAndEqualSign(pow_op(-INF, 2.0), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
351 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
352 # INF**y is INF for y positive |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
353 self.assertEqualAndEqualSign(pow_op(INF, 0.5), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
354 self.assertEqualAndEqualSign(pow_op(INF, 1.0), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
355 self.assertEqualAndEqualSign(pow_op(INF, 2.0), INF) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
356 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
357 # INF**y is 0.0 for y negative |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
358 self.assertEqualAndEqualSign(pow_op(INF, -2.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
359 self.assertEqualAndEqualSign(pow_op(INF, -1.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
360 self.assertEqualAndEqualSign(pow_op(INF, -0.5), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
361 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
362 # basic checks not covered by the special cases above |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
363 self.assertEqualAndEqualSign(pow_op(-2.0, -2.0), 0.25) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
364 self.assertEqualAndEqualSign(pow_op(-2.0, -1.0), -0.5) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
365 self.assertEqualAndEqualSign(pow_op(-2.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
366 self.assertEqualAndEqualSign(pow_op(-2.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
367 self.assertEqualAndEqualSign(pow_op(-2.0, 1.0), -2.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
368 self.assertEqualAndEqualSign(pow_op(-2.0, 2.0), 4.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
369 self.assertEqualAndEqualSign(pow_op(-1.0, -2.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
370 self.assertEqualAndEqualSign(pow_op(-1.0, -1.0), -1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
371 self.assertEqualAndEqualSign(pow_op(-1.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
372 self.assertEqualAndEqualSign(pow_op(-1.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
373 self.assertEqualAndEqualSign(pow_op(-1.0, 1.0), -1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
374 self.assertEqualAndEqualSign(pow_op(-1.0, 2.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
375 self.assertEqualAndEqualSign(pow_op(2.0, -2.0), 0.25) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
376 self.assertEqualAndEqualSign(pow_op(2.0, -1.0), 0.5) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
377 self.assertEqualAndEqualSign(pow_op(2.0, -0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
378 self.assertEqualAndEqualSign(pow_op(2.0, 0.0), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
379 self.assertEqualAndEqualSign(pow_op(2.0, 1.0), 2.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
380 self.assertEqualAndEqualSign(pow_op(2.0, 2.0), 4.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
381 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
382 # 1 ** large and -1 ** large; some libms apparently |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
383 # have problems with these |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
384 self.assertEqualAndEqualSign(pow_op(1.0, -1e100), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
385 self.assertEqualAndEqualSign(pow_op(1.0, 1e100), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
386 self.assertEqualAndEqualSign(pow_op(-1.0, -1e100), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
387 self.assertEqualAndEqualSign(pow_op(-1.0, 1e100), 1.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
388 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
389 # check sign for results that underflow to 0 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
390 self.assertEqualAndEqualSign(pow_op(-2.0, -2000.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
391 self.assertEqual(type(pow_op(-2.0, -2000.5)), complex) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
392 self.assertEqualAndEqualSign(pow_op(-2.0, -2001.0), -0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
393 self.assertEqualAndEqualSign(pow_op(2.0, -2000.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
394 self.assertEqualAndEqualSign(pow_op(2.0, -2000.5), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
395 self.assertEqualAndEqualSign(pow_op(2.0, -2001.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
396 self.assertEqualAndEqualSign(pow_op(-0.5, 2000.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
397 self.assertEqual(type(pow_op(-0.5, 2000.5)), complex) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
398 self.assertEqualAndEqualSign(pow_op(-0.5, 2001.0), -0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
399 self.assertEqualAndEqualSign(pow_op(0.5, 2000.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
400 self.assertEqualAndEqualSign(pow_op(0.5, 2000.5), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
401 self.assertEqualAndEqualSign(pow_op(0.5, 2001.0), 0.0) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
402 |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
403 # check we don't raise an exception for subnormal results, |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
404 # and validate signs. Tests currently disabled, since |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
405 # they fail on systems where a subnormal result from pow |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
406 # is flushed to zero (e.g. Debian/ia64.) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
407 #self.assertTrue(0.0 < pow_op(0.5, 1048) < 1e-315) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
408 #self.assertTrue(0.0 < pow_op(-0.5, 1048) < 1e-315) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
409 #self.assertTrue(0.0 < pow_op(0.5, 1047) < 1e-315) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
410 #self.assertTrue(0.0 > pow_op(-0.5, 1047) > -1e-315) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
411 #self.assertTrue(0.0 < pow_op(2.0, -1048) < 1e-315) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
412 #self.assertTrue(0.0 < pow_op(-2.0, -1048) < 1e-315) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
413 #self.assertTrue(0.0 < pow_op(2.0, -1047) < 1e-315) |
|
740dbae2e30c
Merged revisions 77139-77140 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57538
diff
changeset
|
414 #self.assertTrue(0.0 > pow_op(-2.0, -1047) > -1e-315) |
|
49721
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
415 |
|
98628dc730da
Issue #4296: Fix PyObject_RichCompareBool so that "x in [x]" evaluates to
Mark Dickinson <dickinsm@gmail.com>
parents:
49062
diff
changeset
|
416 |
|
62705
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
417 @requires_setformat |
| 34972 | 418 class FormatFunctionsTestCase(unittest.TestCase): |
| 419 | |
| 420 def setUp(self): | |
| 421 self.save_formats = {'double':float.__getformat__('double'), | |
| 422 'float':float.__getformat__('float')} | |
| 423 | |
| 424 def tearDown(self): | |
| 425 float.__setformat__('double', self.save_formats['double']) | |
| 426 float.__setformat__('float', self.save_formats['float']) | |
| 427 | |
| 428 def test_getformat(self): | |
|
58456
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
58415
diff
changeset
|
429 self.assertIn(float.__getformat__('double'), |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
58415
diff
changeset
|
430 ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
58415
diff
changeset
|
431 self.assertIn(float.__getformat__('float'), |
|
f0f221e1a7c0
use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents:
58415
diff
changeset
|
432 ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) |
| 34972 | 433 self.assertRaises(ValueError, float.__getformat__, 'chicken') |
| 434 self.assertRaises(TypeError, float.__getformat__, 1) | |
| 435 | |
| 436 def test_setformat(self): | |
| 437 for t in 'double', 'float': | |
| 438 float.__setformat__(t, 'unknown') | |
| 439 if self.save_formats[t] == 'IEEE, big-endian': | |
| 440 self.assertRaises(ValueError, float.__setformat__, | |
| 441 t, 'IEEE, little-endian') | |
| 442 elif self.save_formats[t] == 'IEEE, little-endian': | |
| 443 self.assertRaises(ValueError, float.__setformat__, | |
| 444 t, 'IEEE, big-endian') | |
| 445 else: | |
| 446 self.assertRaises(ValueError, float.__setformat__, | |
| 447 t, 'IEEE, big-endian') | |
| 448 self.assertRaises(ValueError, float.__setformat__, | |
| 449 t, 'IEEE, little-endian') | |
| 450 self.assertRaises(ValueError, float.__setformat__, | |
| 451 t, 'chicken') | |
| 452 self.assertRaises(ValueError, float.__setformat__, | |
| 453 'chicken', 'unknown') | |
| 454 | |
|
41725
d1146d4db549
Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents:
35014
diff
changeset
|
455 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
|
456 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
|
457 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
|
458 LE_DOUBLE_NAN = bytes(reversed(BE_DOUBLE_NAN)) |
| 34972 | 459 |
|
41725
d1146d4db549
Make tset_float pass. float(<unicode>) was never very good -- it used
Guido van Rossum <guido@python.org>
parents:
35014
diff
changeset
|
460 BE_FLOAT_INF = b'\x7f\x80\x00\x00' |
|
43947
cbc8b3bd3157
Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents:
43777
diff
changeset
|
461 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
|
462 BE_FLOAT_NAN = b'\x7f\xc0\x00\x00' |
|
43947
cbc8b3bd3157
Rename buffer -> bytearray.
Guido van Rossum <guido@python.org>
parents:
43777
diff
changeset
|
463 LE_FLOAT_NAN = bytes(reversed(BE_FLOAT_NAN)) |
| 34972 | 464 |
| 465 # on non-IEEE platforms, attempting to unpack a bit pattern | |
| 466 # representing an infinity or a NaN should raise an exception. | |
| 467 | |
|
62705
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
468 @requires_setformat |
| 34972 | 469 class UnknownFormatTestCase(unittest.TestCase): |
| 470 def setUp(self): | |
| 471 self.save_formats = {'double':float.__getformat__('double'), | |
| 472 'float':float.__getformat__('float')} | |
| 473 float.__setformat__('double', 'unknown') | |
| 474 float.__setformat__('float', 'unknown') | |
|
35014
275843630522
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
34972
diff
changeset
|
475 |
| 34972 | 476 def tearDown(self): |
| 477 float.__setformat__('double', self.save_formats['double']) | |
| 478 float.__setformat__('float', self.save_formats['float']) | |
| 479 | |
| 480 def test_double_specials_dont_unpack(self): | |
| 481 for fmt, data in [('>d', BE_DOUBLE_INF), | |
| 482 ('>d', BE_DOUBLE_NAN), | |
| 483 ('<d', LE_DOUBLE_INF), | |
| 484 ('<d', LE_DOUBLE_NAN)]: | |
| 485 self.assertRaises(ValueError, struct.unpack, fmt, data) | |
| 486 | |
| 487 def test_float_specials_dont_unpack(self): | |
| 488 for fmt, data in [('>f', BE_FLOAT_INF), | |
| 489 ('>f', BE_FLOAT_NAN), | |
| 490 ('<f', LE_FLOAT_INF), | |
| 491 ('<f', LE_FLOAT_NAN)]: | |
| 492 self.assertRaises(ValueError, struct.unpack, fmt, data) | |
| 493 | |
| 494 | |
| 495 # on an IEEE platform, all we guarantee is that bit patterns | |
| 496 # representing infinities or NaNs do not raise an exception; all else | |
| 497 # is accident (today). | |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
498 # let's also try to guarantee that -0.0 and 0.0 don't get confused. |
| 34972 | 499 |
| 500 class IEEEFormatTestCase(unittest.TestCase): | |
| 501 | |
|
66709
f2a4ade36a1e
Issue #10624: Use support.requires_IEEE_754 in all appropriate tests.
Eric Smith <eric@trueblade.com>
parents:
66698
diff
changeset
|
502 @support.requires_IEEE_754 |
|
62705
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
503 def test_double_specials_do_unpack(self): |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
504 for fmt, data in [('>d', BE_DOUBLE_INF), |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
505 ('>d', BE_DOUBLE_NAN), |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
506 ('<d', LE_DOUBLE_INF), |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
507 ('<d', LE_DOUBLE_NAN)]: |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
508 struct.unpack(fmt, data) |
| 34972 | 509 |
|
66709
f2a4ade36a1e
Issue #10624: Use support.requires_IEEE_754 in all appropriate tests.
Eric Smith <eric@trueblade.com>
parents:
66698
diff
changeset
|
510 @support.requires_IEEE_754 |
|
62705
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
511 def test_float_specials_do_unpack(self): |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
512 for fmt, data in [('>f', BE_FLOAT_INF), |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
513 ('>f', BE_FLOAT_NAN), |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
514 ('<f', LE_FLOAT_INF), |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
515 ('<f', LE_FLOAT_NAN)]: |
|
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
516 struct.unpack(fmt, data) |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41725
diff
changeset
|
517 |
|
42817
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
518 class FormatTestCase(unittest.TestCase): |
|
62705
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
519 |
| 43111 | 520 def test_format(self): |
|
42817
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
521 # 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
|
522 # x.__format__(spec) |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
523 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
524 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
|
525 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
526 # 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
|
527 self.assertEqual(format(0.0, ''), '0.0') |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
528 self.assertEqual(format(0.01, ''), '0.01') |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
529 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
|
530 |
|
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
|
531 # 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
|
532 # (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
|
533 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
|
534 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
|
535 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
|
536 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
|
537 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
|
538 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
539 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
|
540 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
541 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
|
542 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
543 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
|
544 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
|
545 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
|
546 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
|
547 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
548 # % formatting |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
549 self.assertEqual(format(-1.0, '%'), '-100.000000%') |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
550 |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
551 # conversion to string should fail |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
552 self.assertRaises(ValueError, format, 3.0, "s") |
|
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
553 |
|
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
|
554 # 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
|
555 # 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
|
556 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
|
557 [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
|
558 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
|
559 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
|
560 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
|
561 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
|
562 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
|
563 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
|
564 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
|
565 self.assertRaises(ValueError, format, -1e-100, format_spec) |
| 34972 | 566 |
|
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
|
567 # 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
|
568 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
|
569 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
|
570 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
|
571 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
|
572 |
|
66709
f2a4ade36a1e
Issue #10624: Use support.requires_IEEE_754 in all appropriate tests.
Eric Smith <eric@trueblade.com>
parents:
66698
diff
changeset
|
573 @support.requires_IEEE_754 |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
574 def test_format_testfile(self): |
|
65786
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
575 with open(format_testfile) as testfile: |
|
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
576 for line in testfile: |
|
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
577 if line.startswith('--'): |
|
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
578 continue |
|
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
579 line = line.strip() |
|
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
580 if not line: |
|
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
581 continue |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
582 |
|
65786
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
583 lhs, rhs = map(str.strip, line.split('->')) |
|
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
584 fmt, arg = lhs.split() |
|
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
585 self.assertEqual(fmt % float(arg), rhs) |
|
06e21500119a
Merged revisions 86003 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
58280
diff
changeset
|
586 self.assertEqual(fmt % -float(arg), '-' + rhs) |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
587 |
|
53603
3759839b9fa5
Issue #5864: Fix problem with empty code formatting for floats,
Mark Dickinson <dickinsm@gmail.com>
parents:
53218
diff
changeset
|
588 def test_issue5864(self): |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65786
diff
changeset
|
589 self.assertEqual(format(123.456, '.4'), '123.5') |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65786
diff
changeset
|
590 self.assertEqual(format(1234.56, '.4'), '1.235e+03') |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65786
diff
changeset
|
591 self.assertEqual(format(12345.6, '.4'), '1.235e+04') |
|
53603
3759839b9fa5
Issue #5864: Fix problem with empty code formatting for floats,
Mark Dickinson <dickinsm@gmail.com>
parents:
53218
diff
changeset
|
592 |
|
53209
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
593 class ReprTestCase(unittest.TestCase): |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
594 def test_repr(self): |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
595 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
|
596 'floating_points.txt')) |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
597 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
|
598 line = line.strip() |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
599 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
|
600 continue |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
601 v = eval(line) |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
602 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
|
603 floats_file.close() |
|
8d8f2f98a752
Sort out some confusion in test_float.py: the two
Mark Dickinson <dickinsm@gmail.com>
parents:
53187
diff
changeset
|
604 |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
605 @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
|
606 "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
|
607 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
|
608 # 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
|
609 # 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
|
610 # 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
|
611 # 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
|
612 # 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
|
613 # 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
|
614 |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
615 test_strings = [ |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
616 # 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
|
617 # 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
|
618 '0.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
619 '1.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
620 '0.01', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
621 '0.02', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
622 '0.03', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
623 '0.04', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
624 '0.05', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
625 '1.23456789', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
626 '10.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
627 '100.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
628 # 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
|
629 '1000000000000000.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
630 '9999999999999990.0', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
631 '1e+16', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
632 '1e+17', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
633 # ... 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
|
634 '0.001', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
635 '0.001001', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
636 '0.00010000000000001', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
637 '0.0001', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
638 '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
|
639 '1e-05', |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
640 # 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
|
641 # 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
|
642 '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
|
643 '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
|
644 '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
|
645 '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
|
646 '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
|
647 ] |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
648 |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
649 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
|
650 negs = '-'+s |
|
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
651 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
|
652 self.assertEqual(negs, repr(float(negs))) |
|
63750
eafe07d40eb7
Issue #9337: Make float.__str__ identical to float.__repr__.
Mark Dickinson <dickinsm@gmail.com>
parents:
62705
diff
changeset
|
653 # Since Python 3.2, repr and str are identical |
|
eafe07d40eb7
Issue #9337: Make float.__str__ identical to float.__repr__.
Mark Dickinson <dickinsm@gmail.com>
parents:
62705
diff
changeset
|
654 self.assertEqual(repr(float(s)), str(float(s))) |
|
eafe07d40eb7
Issue #9337: Make float.__str__ identical to float.__repr__.
Mark Dickinson <dickinsm@gmail.com>
parents:
62705
diff
changeset
|
655 self.assertEqual(repr(float(negs)), str(float(negs))) |
|
53187
b653eab13b73
The other half of Issue #1580: use short float repr where possible.
Eric Smith <eric@trueblade.com>
parents:
53161
diff
changeset
|
656 |
|
66709
f2a4ade36a1e
Issue #10624: Use support.requires_IEEE_754 in all appropriate tests.
Eric Smith <eric@trueblade.com>
parents:
66698
diff
changeset
|
657 @support.requires_IEEE_754 |
|
53218
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
658 class RoundTestCase(unittest.TestCase): |
|
62705
f271e1d0e9c4
Merged revisions 82461 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
62414
diff
changeset
|
659 |
|
53218
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
660 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
|
661 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
|
662 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
|
663 self.assertRaises(ValueError, round, NAN) |
|
57425
b7fbef077eae
Merged revisions 76485 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56922
diff
changeset
|
664 self.assertRaises(TypeError, round, INF, 0.0) |
|
b7fbef077eae
Merged revisions 76485 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56922
diff
changeset
|
665 self.assertRaises(TypeError, round, -INF, 1.0) |
|
b7fbef077eae
Merged revisions 76485 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56922
diff
changeset
|
666 self.assertRaises(TypeError, round, NAN, "ceci n'est pas un integer") |
|
b7fbef077eae
Merged revisions 76485 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56922
diff
changeset
|
667 self.assertRaises(TypeError, round, -0.0, 1j) |
|
53218
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
668 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
669 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
|
670 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
|
671 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
|
672 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
|
673 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
|
674 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
|
675 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
|
676 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
|
677 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
|
678 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
|
679 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
|
680 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
681 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
|
682 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
|
683 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
|
684 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
|
685 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
|
686 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
|
687 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
688 def test_overflow(self): |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
689 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
|
690 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
|
691 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
692 @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
|
693 "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
|
694 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
|
695 # 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
|
696 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
|
697 562949953421312.5) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
698 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
|
699 56294995342131.5) |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
700 # round-half-even |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
701 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
|
702 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
|
703 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
|
704 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
|
705 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
|
706 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
|
707 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
|
708 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
|
709 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
710 @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
|
711 "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
|
712 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
|
713 # 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
|
714 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
|
715 x = i/1000. |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
716 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
|
717 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
|
718 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
|
719 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
|
720 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
721 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
|
722 x = i/1000. |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
723 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
|
724 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
|
725 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
|
726 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
|
727 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
728 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
|
729 x = random.random() |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
730 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
|
731 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
|
732 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
|
733 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
|
734 |
|
57538
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
735 def test_format_specials(self): |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
736 # Test formatting of nans and infs. |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
737 |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
738 def test(fmt, value, expected): |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
739 # Test with both % and format(). |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
740 self.assertEqual(fmt % value, expected, fmt) |
|
66444
eded691497b7
Issue #7094: Add alternate ('#') flag to __format__ methods for float, complex and Decimal. Allows greater control over when decimal points appear. Added to make transitioning from %-formatting easier. '#g' still has a problem with Decimal which I'll fix soon.
Eric Smith <eric@trueblade.com>
parents:
66310
diff
changeset
|
741 fmt = fmt[1:] # strip off the % |
|
eded691497b7
Issue #7094: Add alternate ('#') flag to __format__ methods for float, complex and Decimal. Allows greater control over when decimal points appear. Added to make transitioning from %-formatting easier. '#g' still has a problem with Decimal which I'll fix soon.
Eric Smith <eric@trueblade.com>
parents:
66310
diff
changeset
|
742 self.assertEqual(format(value, fmt), expected, fmt) |
|
57538
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
743 |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
744 for fmt in ['%e', '%f', '%g', '%.0e', '%.6f', '%.20g', |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
745 '%#e', '%#f', '%#g', '%#.20e', '%#.15f', '%#.3g']: |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
746 pfmt = '%+' + fmt[1:] |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
747 sfmt = '% ' + fmt[1:] |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
748 test(fmt, INF, 'inf') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
749 test(fmt, -INF, '-inf') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
750 test(fmt, NAN, 'nan') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
751 test(fmt, -NAN, 'nan') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
752 # When asking for a sign, it's always provided. nans are |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
753 # always positive. |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
754 test(pfmt, INF, '+inf') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
755 test(pfmt, -INF, '-inf') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
756 test(pfmt, NAN, '+nan') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
757 test(pfmt, -NAN, '+nan') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
758 # When using ' ' for a sign code, only infs can be negative. |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
759 # Others have a space. |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
760 test(sfmt, INF, ' inf') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
761 test(sfmt, -INF, '-inf') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
762 test(sfmt, NAN, ' nan') |
|
b40512cec2d6
Merged revisions 76632 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57425
diff
changeset
|
763 test(sfmt, -NAN, ' nan') |
|
53218
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
764 |
|
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
765 |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
766 # 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
|
767 # 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
|
768 class InfNanTest(unittest.TestCase): |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
769 def test_inf_from_str(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
770 self.assertTrue(isinf(float("inf"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
771 self.assertTrue(isinf(float("+inf"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
772 self.assertTrue(isinf(float("-inf"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
773 self.assertTrue(isinf(float("infinity"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
774 self.assertTrue(isinf(float("+infinity"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
775 self.assertTrue(isinf(float("-infinity"))) |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
776 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
777 self.assertEqual(repr(float("inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
778 self.assertEqual(repr(float("+inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
779 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
|
780 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
|
781 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
|
782 self.assertEqual(repr(float("-infinity")), "-inf") |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
783 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
784 self.assertEqual(repr(float("INF")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
785 self.assertEqual(repr(float("+Inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
786 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
|
787 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
|
788 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
|
789 self.assertEqual(repr(float("-INFINITY")), "-inf") |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
790 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
791 self.assertEqual(str(float("inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
792 self.assertEqual(str(float("+inf")), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
793 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
|
794 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
|
795 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
|
796 self.assertEqual(str(float("-infinity")), "-inf") |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
797 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
798 self.assertRaises(ValueError, float, "info") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
799 self.assertRaises(ValueError, float, "+info") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
800 self.assertRaises(ValueError, float, "-info") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
801 self.assertRaises(ValueError, float, "in") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
802 self.assertRaises(ValueError, float, "+in") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
803 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
|
804 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
|
805 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
|
806 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
|
807 self.assertRaises(ValueError, float, "infinitys") |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
808 |
|
54232
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
809 self.assertRaises(ValueError, float, "++Inf") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
810 self.assertRaises(ValueError, float, "-+inf") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
811 self.assertRaises(ValueError, float, "+-infinity") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
812 self.assertRaises(ValueError, float, "--Infinity") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
813 |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
814 def test_inf_as_str(self): |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
815 self.assertEqual(repr(1e300 * 1e300), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
816 self.assertEqual(repr(-1e300 * 1e300), "-inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
817 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
818 self.assertEqual(str(1e300 * 1e300), "inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
819 self.assertEqual(str(-1e300 * 1e300), "-inf") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
820 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
821 def test_nan_from_str(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
822 self.assertTrue(isnan(float("nan"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
823 self.assertTrue(isnan(float("+nan"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
824 self.assertTrue(isnan(float("-nan"))) |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
825 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
826 self.assertEqual(repr(float("nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
827 self.assertEqual(repr(float("+nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
828 self.assertEqual(repr(float("-nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
829 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
830 self.assertEqual(repr(float("NAN")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
831 self.assertEqual(repr(float("+NAn")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
832 self.assertEqual(repr(float("-NaN")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
833 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
834 self.assertEqual(str(float("nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
835 self.assertEqual(str(float("+nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
836 self.assertEqual(str(float("-nan")), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
837 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
838 self.assertRaises(ValueError, float, "nana") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
839 self.assertRaises(ValueError, float, "+nana") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
840 self.assertRaises(ValueError, float, "-nana") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
841 self.assertRaises(ValueError, float, "na") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
842 self.assertRaises(ValueError, float, "+na") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
843 self.assertRaises(ValueError, float, "-na") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
844 |
|
54232
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
845 self.assertRaises(ValueError, float, "++nan") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
846 self.assertRaises(ValueError, float, "-+NAN") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
847 self.assertRaises(ValueError, float, "+-NaN") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
848 self.assertRaises(ValueError, float, "--nAn") |
|
4501b638fc3f
Refactor to remove duplicated nan/inf parsing code in
Mark Dickinson <dickinsm@gmail.com>
parents:
54001
diff
changeset
|
849 |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
850 def test_nan_as_str(self): |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
851 self.assertEqual(repr(1e300 * 1e300 * 0), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
852 self.assertEqual(repr(-1e300 * 1e300 * 0), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
853 |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
854 self.assertEqual(str(1e300 * 1e300 * 0), "nan") |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
855 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
|
856 |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
857 def notest_float_nan(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
858 self.assertTrue(NAN.is_nan()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
859 self.assertFalse(INF.is_nan()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
860 self.assertFalse((0.).is_nan()) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
861 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
862 def notest_float_inf(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
863 self.assertTrue(INF.is_inf()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
864 self.assertFalse(NAN.is_inf()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54232
diff
changeset
|
865 self.assertFalse((0.).is_inf()) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
866 |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
867 fromHex = float.fromhex |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
868 toHex = float.hex |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
869 class HexFloatTestCase(unittest.TestCase): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
870 MAX = fromHex('0x.fffffffffffff8p+1024') # max normal |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
871 MIN = fromHex('0x1p-1022') # min normal |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
872 TINY = fromHex('0x0.0000000000001p-1022') # min subnormal |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
873 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
|
874 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
875 def identical(self, x, y): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
876 # 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
|
877 # are NaNs |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
878 if isnan(x) or isnan(y): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
879 if isnan(x) == isnan(y): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
880 return |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
881 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
|
882 return |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
883 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
|
884 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
885 def test_ends(self): |
|
48498
177302feab36
Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48497
diff
changeset
|
886 self.identical(self.MIN, ldexp(1.0, -1022)) |
|
177302feab36
Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48497
diff
changeset
|
887 self.identical(self.TINY, ldexp(1.0, -1074)) |
|
177302feab36
Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48497
diff
changeset
|
888 self.identical(self.EPS, ldexp(1.0, -52)) |
|
177302feab36
Merged revisions 64981 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48497
diff
changeset
|
889 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
|
890 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
891 def test_invalid_inputs(self): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
892 invalid_inputs = [ |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
893 'infi', # misspelt infinities and nans |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
894 '-Infinit', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
895 '++inf', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
896 '-+Inf', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
897 '--nan', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
898 '+-NaN', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
899 'snan', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
900 'NaNs', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
901 'nna', |
|
54001
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
902 'an', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
903 'nf', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
904 'nfinity', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
905 'inity', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
906 'iinity', |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
907 '0xnan', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
908 '', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
909 ' ', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
910 'x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
911 '0xX1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
912 '+ 0x1.0p0', # internal whitespace |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
913 '- 0x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
914 '0 x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
915 '0x 1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
916 '0x1 2.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
917 '+0x1 .0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
918 '0x1. 0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
919 '-0x1.0 1p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
920 '-0x1.0 p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
921 '+0x1.0p +0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
922 '0x1.0p -0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
923 '0x1.0p 0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
924 '+0x1.0p+ 0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
925 '-0x1.0p- 0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
926 '++0x1.0p-0', # double signs |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
927 '--0x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
928 '+-0x1.0p+0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
929 '-+0x1.0p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
930 '0x1.0p++0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
931 '+0x1.0p+-0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
932 '-0x1.0p-+0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
933 '0x1.0p--0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
934 '0x1.0.p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
935 '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
|
936 '0x1,p0', # wrong decimal point character |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
937 '0x1pa', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
938 '0x1p\uff10', # fullwidth Unicode digits |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
939 '\uff10x1p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
940 '0x\uff11p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
941 '0x1.\uff10p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
942 '0x1p0 \n 0x2p0', |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
943 '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
|
944 ] |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
945 for x in invalid_inputs: |
|
48817
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
946 try: |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
947 result = fromHex(x) |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
948 except ValueError: |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
949 pass |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
950 else: |
|
a77022dc3f61
Merged revisions 65958 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48499
diff
changeset
|
951 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
|
952 'got %r instead' % (x, result)) |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
953 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
954 |
|
54001
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
955 def test_whitespace(self): |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
956 value_pairs = [ |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
957 ('inf', INF), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
958 ('-Infinity', -INF), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
959 ('nan', NAN), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
960 ('1.0', 1.0), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
961 ('-0x.2', -0.125), |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
962 ('-0.0', -0.0) |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
963 ] |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
964 whitespace = [ |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
965 '', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
966 ' ', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
967 '\t', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
968 '\n', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
969 '\n \t', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
970 '\f', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
971 '\v', |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
972 '\r' |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
973 ] |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
974 for inp, expected in value_pairs: |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
975 for lead in whitespace: |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
976 for trail in whitespace: |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
977 got = fromHex(lead + inp + trail) |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
978 self.identical(got, expected) |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
979 |
|
9414c2b1923e
Merged revisions 72564 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
53849
diff
changeset
|
980 |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
981 def test_from_hex(self): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
982 MIN = self.MIN; |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
983 MAX = self.MAX; |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
984 TINY = self.TINY; |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
985 EPS = self.EPS; |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
986 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
987 # 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
|
988 self.identical(fromHex('inf'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
989 self.identical(fromHex('+Inf'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
990 self.identical(fromHex('-INF'), -INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
991 self.identical(fromHex('iNf'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
992 self.identical(fromHex('Infinity'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
993 self.identical(fromHex('+INFINITY'), INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
994 self.identical(fromHex('-infinity'), -INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
995 self.identical(fromHex('-iNFiNitY'), -INF) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
996 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
997 # nans with optional sign; case insensitive |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
998 self.identical(fromHex('nan'), NAN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
999 self.identical(fromHex('+NaN'), NAN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1000 self.identical(fromHex('-NaN'), NAN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1001 self.identical(fromHex('-nAN'), NAN) |
|
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 # variations in input format |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1004 self.identical(fromHex('1'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1005 self.identical(fromHex('+1'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1006 self.identical(fromHex('1.'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1007 self.identical(fromHex('1.0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1008 self.identical(fromHex('1.0p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1009 self.identical(fromHex('01'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1010 self.identical(fromHex('01.'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1011 self.identical(fromHex('0x1'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1012 self.identical(fromHex('0x1.'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1013 self.identical(fromHex('0x1.0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1014 self.identical(fromHex('+0x1.0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1015 self.identical(fromHex('0x1p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1016 self.identical(fromHex('0X1p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1017 self.identical(fromHex('0X1P0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1018 self.identical(fromHex('0x1P0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1019 self.identical(fromHex('0x1.p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1020 self.identical(fromHex('0x1.0p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1021 self.identical(fromHex('0x.1p4'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1022 self.identical(fromHex('0x.1p04'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1023 self.identical(fromHex('0x.1p004'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1024 self.identical(fromHex('0x1p+0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1025 self.identical(fromHex('0x1P-0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1026 self.identical(fromHex('+0x1p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1027 self.identical(fromHex('0x01p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1028 self.identical(fromHex('0x1p00'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1029 self.identical(fromHex(' 0x1p0 '), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1030 self.identical(fromHex('\n 0x1p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1031 self.identical(fromHex('0x1p0 \t'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1032 self.identical(fromHex('0xap0'), 10.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1033 self.identical(fromHex('0xAp0'), 10.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1034 self.identical(fromHex('0xaP0'), 10.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1035 self.identical(fromHex('0xAP0'), 10.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1036 self.identical(fromHex('0xbep0'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1037 self.identical(fromHex('0xBep0'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1038 self.identical(fromHex('0xbEp0'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1039 self.identical(fromHex('0XBE0P-4'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1040 self.identical(fromHex('0xBEp0'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1041 self.identical(fromHex('0xB.Ep4'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1042 self.identical(fromHex('0x.BEp8'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1043 self.identical(fromHex('0x.0BEp12'), 190.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1044 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1045 # moving the point around |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1046 pi = fromHex('0x1.921fb54442d18p1') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1047 self.identical(fromHex('0x.006487ed5110b46p11'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1048 self.identical(fromHex('0x.00c90fdaa22168cp10'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1049 self.identical(fromHex('0x.01921fb54442d18p9'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1050 self.identical(fromHex('0x.03243f6a8885a3p8'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1051 self.identical(fromHex('0x.06487ed5110b46p7'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1052 self.identical(fromHex('0x.0c90fdaa22168cp6'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1053 self.identical(fromHex('0x.1921fb54442d18p5'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1054 self.identical(fromHex('0x.3243f6a8885a3p4'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1055 self.identical(fromHex('0x.6487ed5110b46p3'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1056 self.identical(fromHex('0x.c90fdaa22168cp2'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1057 self.identical(fromHex('0x1.921fb54442d18p1'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1058 self.identical(fromHex('0x3.243f6a8885a3p0'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1059 self.identical(fromHex('0x6.487ed5110b46p-1'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1060 self.identical(fromHex('0xc.90fdaa22168cp-2'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1061 self.identical(fromHex('0x19.21fb54442d18p-3'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1062 self.identical(fromHex('0x32.43f6a8885a3p-4'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1063 self.identical(fromHex('0x64.87ed5110b46p-5'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1064 self.identical(fromHex('0xc9.0fdaa22168cp-6'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1065 self.identical(fromHex('0x192.1fb54442d18p-7'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1066 self.identical(fromHex('0x324.3f6a8885a3p-8'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1067 self.identical(fromHex('0x648.7ed5110b46p-9'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1068 self.identical(fromHex('0xc90.fdaa22168cp-10'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1069 self.identical(fromHex('0x1921.fb54442d18p-11'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1070 # ... |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1071 self.identical(fromHex('0x1921fb54442d1.8p-47'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1072 self.identical(fromHex('0x3243f6a8885a3p-48'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1073 self.identical(fromHex('0x6487ed5110b46p-49'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1074 self.identical(fromHex('0xc90fdaa22168cp-50'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1075 self.identical(fromHex('0x1921fb54442d18p-51'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1076 self.identical(fromHex('0x3243f6a8885a30p-52'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1077 self.identical(fromHex('0x6487ed5110b460p-53'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1078 self.identical(fromHex('0xc90fdaa22168c0p-54'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1079 self.identical(fromHex('0x1921fb54442d180p-55'), pi) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1080 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1081 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1082 # results that should overflow... |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1083 self.assertRaises(OverflowError, fromHex, '-0x1p1024') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1084 self.assertRaises(OverflowError, fromHex, '0x1p+1025') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1085 self.assertRaises(OverflowError, fromHex, '+0X1p1030') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1086 self.assertRaises(OverflowError, fromHex, '-0x1p+1100') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1087 self.assertRaises(OverflowError, fromHex, '0X1p123456789123456789') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1088 self.assertRaises(OverflowError, fromHex, '+0X.8p+1025') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1089 self.assertRaises(OverflowError, fromHex, '+0x0.8p1025') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1090 self.assertRaises(OverflowError, fromHex, '-0x0.4p1026') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1091 self.assertRaises(OverflowError, fromHex, '0X2p+1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1092 self.assertRaises(OverflowError, fromHex, '0x2.p1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1093 self.assertRaises(OverflowError, fromHex, '-0x2.0p+1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1094 self.assertRaises(OverflowError, fromHex, '+0X4p+1022') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1095 self.assertRaises(OverflowError, fromHex, '0x1.ffffffffffffffp+1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1096 self.assertRaises(OverflowError, fromHex, '-0X1.fffffffffffff9p1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1097 self.assertRaises(OverflowError, fromHex, '0X1.fffffffffffff8p1023') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1098 self.assertRaises(OverflowError, fromHex, '+0x3.fffffffffffffp1022') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1099 self.assertRaises(OverflowError, fromHex, '0x3fffffffffffffp+970') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1100 self.assertRaises(OverflowError, fromHex, '0x10000000000000000p960') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1101 self.assertRaises(OverflowError, fromHex, '-0Xffffffffffffffffp960') |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1102 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1103 # ...and those that round to +-max float |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1104 self.identical(fromHex('+0x1.fffffffffffffp+1023'), MAX) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1105 self.identical(fromHex('-0X1.fffffffffffff7p1023'), -MAX) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1106 self.identical(fromHex('0X1.fffffffffffff7fffffffffffffp1023'), MAX) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1107 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1108 # zeros |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1109 self.identical(fromHex('0x0p0'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1110 self.identical(fromHex('0x0p1000'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1111 self.identical(fromHex('-0x0p1023'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1112 self.identical(fromHex('0X0p1024'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1113 self.identical(fromHex('-0x0p1025'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1114 self.identical(fromHex('0X0p2000'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1115 self.identical(fromHex('0x0p123456789123456789'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1116 self.identical(fromHex('-0X0p-0'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1117 self.identical(fromHex('-0X0p-1000'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1118 self.identical(fromHex('0x0p-1023'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1119 self.identical(fromHex('-0X0p-1024'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1120 self.identical(fromHex('-0x0p-1025'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1121 self.identical(fromHex('-0x0p-1072'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1122 self.identical(fromHex('0X0p-1073'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1123 self.identical(fromHex('-0x0p-1074'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1124 self.identical(fromHex('0x0p-1075'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1125 self.identical(fromHex('0X0p-1076'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1126 self.identical(fromHex('-0X0p-2000'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1127 self.identical(fromHex('-0x0p-123456789123456789'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1128 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1129 # values that should underflow to 0 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1130 self.identical(fromHex('0X1p-1075'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1131 self.identical(fromHex('-0X1p-1075'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1132 self.identical(fromHex('-0x1p-123456789123456789'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1133 self.identical(fromHex('0x1.00000000000000001p-1075'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1134 self.identical(fromHex('-0x1.1p-1075'), -TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1135 self.identical(fromHex('0x1.fffffffffffffffffp-1075'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1136 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1137 # 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
|
1138 self.identical(fromHex('0x1p-1076'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1139 self.identical(fromHex('0X2p-1076'), 0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1140 self.identical(fromHex('0X3p-1076'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1141 self.identical(fromHex('0x4p-1076'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1142 self.identical(fromHex('0X5p-1076'), TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1143 self.identical(fromHex('0X6p-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1144 self.identical(fromHex('0x7p-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1145 self.identical(fromHex('0X8p-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1146 self.identical(fromHex('0X9p-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1147 self.identical(fromHex('0xap-1076'), 2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1148 self.identical(fromHex('0Xbp-1076'), 3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1149 self.identical(fromHex('0xcp-1076'), 3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1150 self.identical(fromHex('0Xdp-1076'), 3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1151 self.identical(fromHex('0Xep-1076'), 4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1152 self.identical(fromHex('0xfp-1076'), 4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1153 self.identical(fromHex('0x10p-1076'), 4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1154 self.identical(fromHex('-0x1p-1076'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1155 self.identical(fromHex('-0X2p-1076'), -0.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1156 self.identical(fromHex('-0x3p-1076'), -TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1157 self.identical(fromHex('-0X4p-1076'), -TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1158 self.identical(fromHex('-0x5p-1076'), -TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1159 self.identical(fromHex('-0x6p-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1160 self.identical(fromHex('-0X7p-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1161 self.identical(fromHex('-0X8p-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1162 self.identical(fromHex('-0X9p-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1163 self.identical(fromHex('-0Xap-1076'), -2*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1164 self.identical(fromHex('-0xbp-1076'), -3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1165 self.identical(fromHex('-0xcp-1076'), -3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1166 self.identical(fromHex('-0Xdp-1076'), -3*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1167 self.identical(fromHex('-0xep-1076'), -4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1168 self.identical(fromHex('-0Xfp-1076'), -4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1169 self.identical(fromHex('-0X10p-1076'), -4*TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1170 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1171 # ... and near MIN ... |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1172 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
|
1173 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
|
1174 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
|
1175 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
|
1176 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
|
1177 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
|
1178 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
|
1179 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
|
1180 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
|
1181 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
|
1182 self.identical(fromHex('0x0.ffffffffffffeap-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1183 self.identical(fromHex('0x0.ffffffffffffecp-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1184 self.identical(fromHex('0x0.ffffffffffffeep-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1185 self.identical(fromHex('0x0.fffffffffffff0p-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1186 self.identical(fromHex('0x0.fffffffffffff2p-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1187 self.identical(fromHex('0x0.fffffffffffff4p-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1188 self.identical(fromHex('0x0.fffffffffffff6p-1022'), MIN-TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1189 self.identical(fromHex('0x0.fffffffffffff8p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1190 self.identical(fromHex('0x0.fffffffffffffap-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1191 self.identical(fromHex('0x0.fffffffffffffcp-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1192 self.identical(fromHex('0x0.fffffffffffffep-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1193 self.identical(fromHex('0x1.00000000000000p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1194 self.identical(fromHex('0x1.00000000000002p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1195 self.identical(fromHex('0x1.00000000000004p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1196 self.identical(fromHex('0x1.00000000000006p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1197 self.identical(fromHex('0x1.00000000000008p-1022'), MIN) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1198 self.identical(fromHex('0x1.0000000000000ap-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1199 self.identical(fromHex('0x1.0000000000000cp-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1200 self.identical(fromHex('0x1.0000000000000ep-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1201 self.identical(fromHex('0x1.00000000000010p-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1202 self.identical(fromHex('0x1.00000000000012p-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1203 self.identical(fromHex('0x1.00000000000014p-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1204 self.identical(fromHex('0x1.00000000000016p-1022'), MIN+TINY) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1205 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
|
1206 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1207 # ... and near 1.0. |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1208 self.identical(fromHex('0x0.fffffffffffff0p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1209 self.identical(fromHex('0x0.fffffffffffff1p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1210 self.identical(fromHex('0X0.fffffffffffff2p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1211 self.identical(fromHex('0x0.fffffffffffff3p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1212 self.identical(fromHex('0X0.fffffffffffff4p0'), 1.0-EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1213 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
|
1214 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
|
1215 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
|
1216 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
|
1217 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
|
1218 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
|
1219 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
|
1220 self.identical(fromHex('0X0.fffffffffffffcp0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1221 self.identical(fromHex('0x0.fffffffffffffdp0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1222 self.identical(fromHex('0X0.fffffffffffffep0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1223 self.identical(fromHex('0x0.ffffffffffffffp0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1224 self.identical(fromHex('0X1.00000000000000p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1225 self.identical(fromHex('0X1.00000000000001p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1226 self.identical(fromHex('0x1.00000000000002p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1227 self.identical(fromHex('0X1.00000000000003p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1228 self.identical(fromHex('0x1.00000000000004p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1229 self.identical(fromHex('0X1.00000000000005p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1230 self.identical(fromHex('0X1.00000000000006p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1231 self.identical(fromHex('0X1.00000000000007p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1232 self.identical(fromHex('0x1.00000000000007ffffffffffffffffffffp0'), |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1233 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1234 self.identical(fromHex('0x1.00000000000008p0'), 1.0) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1235 self.identical(fromHex('0x1.00000000000008000000000000000001p0'), |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1236 1+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1237 self.identical(fromHex('0X1.00000000000009p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1238 self.identical(fromHex('0x1.0000000000000ap0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1239 self.identical(fromHex('0x1.0000000000000bp0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1240 self.identical(fromHex('0X1.0000000000000cp0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1241 self.identical(fromHex('0x1.0000000000000dp0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1242 self.identical(fromHex('0x1.0000000000000ep0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1243 self.identical(fromHex('0X1.0000000000000fp0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1244 self.identical(fromHex('0x1.00000000000010p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1245 self.identical(fromHex('0X1.00000000000011p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1246 self.identical(fromHex('0x1.00000000000012p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1247 self.identical(fromHex('0X1.00000000000013p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1248 self.identical(fromHex('0X1.00000000000014p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1249 self.identical(fromHex('0x1.00000000000015p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1250 self.identical(fromHex('0x1.00000000000016p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1251 self.identical(fromHex('0X1.00000000000017p0'), 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1252 self.identical(fromHex('0x1.00000000000017ffffffffffffffffffffp0'), |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1253 1.0+EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1254 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
|
1255 self.identical(fromHex('0X1.00000000000018000000000000000001p0'), |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1256 1.0+2*EPS) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1257 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
|
1258 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
|
1259 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
|
1260 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
|
1261 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
|
1262 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
|
1263 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
|
1264 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
|
1265 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1266 def test_roundtrip(self): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1267 def roundtrip(x): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1268 return fromHex(toHex(x)) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1269 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1270 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
|
1271 self.identical(x, roundtrip(x)) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1272 self.identical(-x, roundtrip(-x)) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1273 |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1274 # 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
|
1275 import random |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1276 for i in range(10000): |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1277 e = random.randrange(-1200, 1200) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1278 m = random.random() |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1279 s = random.choice([1.0, -1.0]) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1280 try: |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1281 x = s*ldexp(m, e) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1282 except OverflowError: |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1283 pass |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1284 else: |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1285 self.identical(x, fromHex(toHex(x))) |
|
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1286 |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45023
diff
changeset
|
1287 |
| 34972 | 1288 def test_main(): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46664
diff
changeset
|
1289 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
|
1290 GeneralFloatCases, |
| 34972 | 1291 FormatFunctionsTestCase, |
| 1292 UnknownFormatTestCase, | |
|
42817
5355337709e1
Implementation of PEP 3101, Advanced String Formatting.
Eric Smith <eric@trueblade.com>
parents:
42775
diff
changeset
|
1293 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
|
1294 FormatTestCase, |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
1295 ReprTestCase, |
|
53218
d43d64252d36
Issue #1869 (and 4707, 5118, 5473, 1456775): use the new
Mark Dickinson <dickinsm@gmail.com>
parents:
53209
diff
changeset
|
1296 RoundTestCase, |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44268
diff
changeset
|
1297 InfNanTest, |
|
48497
2bb866d282ba
Merged revisions 64974 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47322
diff
changeset
|
1298 HexFloatTestCase, |
|
44268
7ae604b3533b
Merged revisions 59450-59464 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44260
diff
changeset
|
1299 ) |
| 34972 | 1300 |
| 1301 if __name__ == '__main__': | |
| 1302 test_main() |
