[Python-checkins] r78291 - in python/branches/release31-maint: Lib/test/test_strtod.py
mark.dickinson
python-checkins at python.org
Sun Feb 21 15:51:02 CET 2010
Author: mark.dickinson
Date: Sun Feb 21 15:51:02 2010
New Revision: 78291
Log:
Merged revisions 78289 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
r78289 | mark.dickinson | 2010-02-21 14:49:52 +0000 (Sun, 21 Feb 2010) | 9 lines
Merged revisions 78287 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78287 | mark.dickinson | 2010-02-21 14:42:27 +0000 (Sun, 21 Feb 2010) | 1 line
Reduce number of random tests in test_strtod, to avoid hogging buildbot time.
........
................
Modified:
python/branches/release31-maint/ (props changed)
python/branches/release31-maint/Lib/test/test_strtod.py
Modified: python/branches/release31-maint/Lib/test/test_strtod.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_strtod.py (original)
+++ python/branches/release31-maint/Lib/test/test_strtod.py Sun Feb 21 15:51:02 2010
@@ -76,7 +76,7 @@
hexdigs,
e + 4*hexdigs)
-TEST_SIZE = 16
+TEST_SIZE = 10
@unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short',
"applies only when using short float repr style")
@@ -109,7 +109,7 @@
lower = -(-2**53//5**k)
if lower % 2 == 0:
lower += 1
- for i in range(10 * TEST_SIZE):
+ for i in range(TEST_SIZE):
# Select a random odd n in [2**53/5**k,
# 2**54/5**k). Then n * 10**k gives a halfway case
# with small number of significant digits.
@@ -145,34 +145,29 @@
def test_halfway_cases(self):
# test halfway cases for the round-half-to-even rule
- for i in range(1000):
- for j in range(TEST_SIZE):
- # bit pattern for a random finite positive (or +0.0) float
- bits = random.randrange(2047*2**52)
-
- # convert bit pattern to a number of the form m * 2**e
- e, m = divmod(bits, 2**52)
- if e:
- m, e = m + 2**52, e - 1
- e -= 1074
-
- # add 0.5 ulps
- m, e = 2*m + 1, e - 1
-
- # convert to a decimal string
- if e >= 0:
- digits = m << e
- exponent = 0
- else:
- # m * 2**e = (m * 5**-e) * 10**e
- digits = m * 5**-e
- exponent = e
- s = '{}e{}'.format(digits, exponent)
- self.check_strtod(s)
-
- # get expected answer via struct, to triple check
- #fs = struct.unpack('<d', struct.pack('<Q', bits + (bits&1)))[0]
- #self.assertEqual(fs, float(s))
+ for i in range(100 * TEST_SIZE):
+ # bit pattern for a random finite positive (or +0.0) float
+ bits = random.randrange(2047*2**52)
+
+ # convert bit pattern to a number of the form m * 2**e
+ e, m = divmod(bits, 2**52)
+ if e:
+ m, e = m + 2**52, e - 1
+ e -= 1074
+
+ # add 0.5 ulps
+ m, e = 2*m + 1, e - 1
+
+ # convert to a decimal string
+ if e >= 0:
+ digits = m << e
+ exponent = 0
+ else:
+ # m * 2**e = (m * 5**-e) * 10**e
+ digits = m * 5**-e
+ exponent = e
+ s = '{}e{}'.format(digits, exponent)
+ self.check_strtod(s)
def test_boundaries(self):
# boundaries expressed as triples (n, e, u), where
@@ -186,11 +181,10 @@
]
for n, e, u in boundaries:
for j in range(1000):
- for i in range(TEST_SIZE):
- digits = n + random.randrange(-3*u, 3*u)
- exponent = e
- s = '{}e{}'.format(digits, exponent)
- self.check_strtod(s)
+ digits = n + random.randrange(-3*u, 3*u)
+ exponent = e
+ s = '{}e{}'.format(digits, exponent)
+ self.check_strtod(s)
n *= 10
u *= 10
e -= 1
@@ -209,7 +203,7 @@
def test_bigcomp(self):
for ndigs in 5, 10, 14, 15, 16, 17, 18, 19, 20, 40, 41, 50:
dig10 = 10**ndigs
- for i in range(100 * TEST_SIZE):
+ for i in range(10 * TEST_SIZE):
digits = random.randrange(dig10)
exponent = random.randrange(-400, 400)
s = '{}e{}'.format(digits, exponent)
More information about the Python-checkins
mailing list