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