Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_math.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 | 1feeeb8992f8 |
| children |
| rev | line source |
|---|---|
| 3950 | 1 # Python test set -- math module |
| 2 # XXXX Should not do tests around zero only | |
| 3 | |
|
66706
ae3fa781eef2
Issue #10624: Move requires_IEEE_754 into test.support. I'll fix up other uses of it shortly.
Eric Smith <eric@trueblade.com>
parents:
66310
diff
changeset
|
4 from test.support import run_unittest, verbose, requires_IEEE_754 |
|
70574
35212b113730
test.support: add requires_mac_ver() function
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70018
diff
changeset
|
5 from test import support |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
6 import unittest |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
7 import math |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
8 import os |
|
70018
34871c3072c9
Issue #11888: skip some log2 tests on Mac OS X Tiger
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69979
diff
changeset
|
9 import platform |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
10 import sys |
|
56270
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
11 import struct |
|
66064
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
12 import sysconfig |
| 3950 | 13 |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
14 eps = 1E-05 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
15 NAN = float('nan') |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
16 INF = float('inf') |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
17 NINF = float('-inf') |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
18 |
|
53352
54b4489f1c28
Merged revisions 71837-71838 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48606
diff
changeset
|
19 # detect evidence of double-rounding: fsum is not always correctly |
|
54b4489f1c28
Merged revisions 71837-71838 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48606
diff
changeset
|
20 # rounded on machines that suffer from double rounding. |
|
54b4489f1c28
Merged revisions 71837-71838 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48606
diff
changeset
|
21 x, y = 1e16, 2.9999 # use temporary values to defeat peephole optimizer |
|
54b4489f1c28
Merged revisions 71837-71838 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48606
diff
changeset
|
22 HAVE_DOUBLE_ROUNDING = (x + y == 1e16 + 4) |
|
54b4489f1c28
Merged revisions 71837-71838 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48606
diff
changeset
|
23 |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
24 # locate file with test values |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
25 if __name__ == '__main__': |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
26 file = sys.argv[0] |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
27 else: |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
28 file = __file__ |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
29 test_dir = os.path.dirname(file) or os.curdir |
|
56270
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
30 math_testcases = os.path.join(test_dir, 'math_testcases.txt') |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
31 test_file = os.path.join(test_dir, 'cmath_testcases.txt') |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
32 |
|
56270
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
33 def to_ulps(x): |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
34 """Convert a non-NaN float x to an integer, in such a way that |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
35 adjacent floats are converted to adjacent integers. Then |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
36 abs(ulps(x) - ulps(y)) gives the difference in ulps between two |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
37 floats. |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
38 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
39 The results from this function will only make sense on platforms |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
40 where C doubles are represented in IEEE 754 binary64 format. |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
41 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
42 """ |
|
56557
7d71c51fc308
Merged revisions 75454 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56308
diff
changeset
|
43 n = struct.unpack('<q', struct.pack('<d', x))[0] |
|
56270
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
44 if n < 0: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
45 n = ~(n+2**63) |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
46 return n |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
47 |
|
57660
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
48 def ulps_check(expected, got, ulps=20): |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
49 """Given non-NaN floats `expected` and `got`, |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
50 check that they're equal to within the given number of ulps. |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
51 |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
52 Returns None on success and an error message on failure.""" |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
53 |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
54 ulps_error = to_ulps(got) - to_ulps(expected) |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
55 if abs(ulps_error) <= ulps: |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
56 return None |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
57 return "error = {} ulps; permitted error = {} ulps".format(ulps_error, |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
58 ulps) |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
59 |
|
61599
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
60 # Here's a pure Python version of the math.factorial algorithm, for |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
61 # documentation and comparison purposes. |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
62 # |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
63 # Formula: |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
64 # |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
65 # factorial(n) = factorial_odd_part(n) << (n - count_set_bits(n)) |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
66 # |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
67 # where |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
68 # |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
69 # factorial_odd_part(n) = product_{i >= 0} product_{0 < j <= n >> i; j odd} j |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
70 # |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
71 # The outer product above is an infinite product, but once i >= n.bit_length, |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
72 # (n >> i) < 1 and the corresponding term of the product is empty. So only the |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
73 # finitely many terms for 0 <= i < n.bit_length() contribute anything. |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
74 # |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
75 # We iterate downwards from i == n.bit_length() - 1 to i == 0. The inner |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
76 # product in the formula above starts at 1 for i == n.bit_length(); for each i |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
77 # < n.bit_length() we get the inner product for i from that for i + 1 by |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
78 # multiplying by all j in {n >> i+1 < j <= n >> i; j odd}. In Python terms, |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
79 # this set is range((n >> i+1) + 1 | 1, (n >> i) + 1 | 1, 2). |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
80 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
81 def count_set_bits(n): |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
82 """Number of '1' bits in binary expansion of a nonnnegative integer.""" |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
83 return 1 + count_set_bits(n & n - 1) if n else 0 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
84 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
85 def partial_product(start, stop): |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
86 """Product of integers in range(start, stop, 2), computed recursively. |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
87 start and stop should both be odd, with start <= stop. |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
88 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
89 """ |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
90 numfactors = (stop - start) >> 1 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
91 if not numfactors: |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
92 return 1 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
93 elif numfactors == 1: |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
94 return start |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
95 else: |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
96 mid = (start + numfactors) | 1 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
97 return partial_product(start, mid) * partial_product(mid, stop) |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
98 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
99 def py_factorial(n): |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
100 """Factorial of nonnegative integer n, via "Binary Split Factorial Formula" |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
101 described at http://www.luschny.de/math/factorial/binarysplitfact.html |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
102 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
103 """ |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
104 inner = outer = 1 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
105 for i in reversed(range(n.bit_length())): |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
106 inner *= partial_product((n >> i + 1) + 1 | 1, (n >> i) + 1 | 1) |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
107 outer *= inner |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
108 return outer << (n - count_set_bits(n)) |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
109 |
|
57660
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
110 def acc_check(expected, got, rel_err=2e-15, abs_err = 5e-323): |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
111 """Determine whether non-NaN floats a and b are equal to within a |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
112 (small) rounding error. The default values for rel_err and |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
113 abs_err are chosen to be suitable for platforms where a float is |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
114 represented by an IEEE 754 double. They allow an error of between |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
115 9 and 19 ulps.""" |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
116 |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
117 # need to special case infinities, since inf - inf gives nan |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
118 if math.isinf(expected) and got == expected: |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
119 return None |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
120 |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
121 error = got - expected |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
122 |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
123 permitted_error = max(abs_err, rel_err * abs(expected)) |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
124 if abs(error) < permitted_error: |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
125 return None |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
126 return "error = {}; permitted error = {}".format(error, |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
127 permitted_error) |
|
56270
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
128 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
129 def parse_mtestfile(fname): |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
130 """Parse a file with test values |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
131 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
132 -- starts a comment |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
133 blank lines, or lines containing only a comment, are ignored |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
134 other lines are expected to have the form |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
135 id fn arg -> expected [flag]* |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
136 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
137 """ |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
138 with open(fname) as fp: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
139 for line in fp: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
140 # strip comments, and skip blank lines |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
141 if '--' in line: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
142 line = line[:line.index('--')] |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
143 if not line.strip(): |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
144 continue |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
145 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
146 lhs, rhs = line.split('->') |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
147 id, fn, arg = lhs.split() |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
148 rhs_pieces = rhs.split() |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
149 exp = rhs_pieces[0] |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
150 flags = rhs_pieces[1:] |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
151 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
152 yield (id, fn, float(arg), float(exp), flags) |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
153 |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
154 def parse_testfile(fname): |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
155 """Parse a file with test values |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
156 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
157 Empty lines or lines starting with -- are ignored |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
158 yields id, fn, arg_real, arg_imag, exp_real, exp_imag |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
159 """ |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
160 with open(fname) as fp: |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
161 for line in fp: |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
162 # skip comment lines and blank lines |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
163 if line.startswith('--') or not line.strip(): |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
164 continue |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
165 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
166 lhs, rhs = line.split('->') |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
167 id, fn, arg_real, arg_imag = lhs.split() |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
168 rhs_pieces = rhs.split() |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
169 exp_real, exp_imag = rhs_pieces[0], rhs_pieces[1] |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
170 flags = rhs_pieces[2:] |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
171 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
172 yield (id, fn, |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
173 float(arg_real), float(arg_imag), |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
174 float(exp_real), float(exp_imag), |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
175 flags |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
176 ) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
177 |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
178 class MathTests(unittest.TestCase): |
| 3950 | 179 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
180 def ftest(self, name, value, expected): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
181 if abs(value-expected) > eps: |
|
42466
3fc3cedc49ca
Merged revisions 56753-56781 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
182 # Use %r instead of %f so the error message |
|
3fc3cedc49ca
Merged revisions 56753-56781 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
183 # displays full precision. Otherwise discrepancies |
|
3fc3cedc49ca
Merged revisions 56753-56781 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
184 # in the last few bits will lead to very confusing |
|
3fc3cedc49ca
Merged revisions 56753-56781 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
185 # error messages |
|
3fc3cedc49ca
Merged revisions 56753-56781 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
186 self.fail('%s returned %r, expected %r' % |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
187 (name, value, expected)) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
188 |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
189 def testConstants(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
190 self.ftest('pi', math.pi, 3.1415926) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
191 self.ftest('e', math.e, 2.7182818) |
| 3950 | 192 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
193 def testAcos(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
194 self.assertRaises(TypeError, math.acos) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
195 self.ftest('acos(-1)', math.acos(-1), math.pi) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
196 self.ftest('acos(0)', math.acos(0), math.pi/2) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
197 self.ftest('acos(1)', math.acos(1), 0) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
198 self.assertRaises(ValueError, math.acos, INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
199 self.assertRaises(ValueError, math.acos, NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
200 self.assertTrue(math.isnan(math.acos(NAN))) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
201 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
202 def testAcosh(self): |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
203 self.assertRaises(TypeError, math.acosh) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
204 self.ftest('acosh(1)', math.acosh(1), 0) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
205 self.ftest('acosh(2)', math.acosh(2), 1.3169578969248168) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
206 self.assertRaises(ValueError, math.acosh, 0) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
207 self.assertRaises(ValueError, math.acosh, -1) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
208 self.assertEqual(math.acosh(INF), INF) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
209 self.assertRaises(ValueError, math.acosh, NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
210 self.assertTrue(math.isnan(math.acosh(NAN))) |
| 3950 | 211 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
212 def testAsin(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
213 self.assertRaises(TypeError, math.asin) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
214 self.ftest('asin(-1)', math.asin(-1), -math.pi/2) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
215 self.ftest('asin(0)', math.asin(0), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
216 self.ftest('asin(1)', math.asin(1), math.pi/2) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
217 self.assertRaises(ValueError, math.asin, INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
218 self.assertRaises(ValueError, math.asin, NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
219 self.assertTrue(math.isnan(math.asin(NAN))) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
220 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
221 def testAsinh(self): |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
222 self.assertRaises(TypeError, math.asinh) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
223 self.ftest('asinh(0)', math.asinh(0), 0) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
224 self.ftest('asinh(1)', math.asinh(1), 0.88137358701954305) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
225 self.ftest('asinh(-1)', math.asinh(-1), -0.88137358701954305) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
226 self.assertEqual(math.asinh(INF), INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
227 self.assertEqual(math.asinh(NINF), NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
228 self.assertTrue(math.isnan(math.asinh(NAN))) |
| 3950 | 229 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
230 def testAtan(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
231 self.assertRaises(TypeError, math.atan) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
232 self.ftest('atan(-1)', math.atan(-1), -math.pi/4) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
233 self.ftest('atan(0)', math.atan(0), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
234 self.ftest('atan(1)', math.atan(1), math.pi/4) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
235 self.ftest('atan(inf)', math.atan(INF), math.pi/2) |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
236 self.ftest('atan(-inf)', math.atan(NINF), -math.pi/2) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
237 self.assertTrue(math.isnan(math.atan(NAN))) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
238 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
239 def testAtanh(self): |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
240 self.assertRaises(TypeError, math.atan) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
241 self.ftest('atanh(0)', math.atanh(0), 0) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
242 self.ftest('atanh(0.5)', math.atanh(0.5), 0.54930614433405489) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
243 self.ftest('atanh(-0.5)', math.atanh(-0.5), -0.54930614433405489) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
244 self.assertRaises(ValueError, math.atanh, 1) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
245 self.assertRaises(ValueError, math.atanh, -1) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
246 self.assertRaises(ValueError, math.atanh, INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
247 self.assertRaises(ValueError, math.atanh, NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
248 self.assertTrue(math.isnan(math.atanh(NAN))) |
| 3950 | 249 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
250 def testAtan2(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
251 self.assertRaises(TypeError, math.atan2) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
252 self.ftest('atan2(-1, 0)', math.atan2(-1, 0), -math.pi/2) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
253 self.ftest('atan2(-1, 1)', math.atan2(-1, 1), -math.pi/4) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
254 self.ftest('atan2(0, 1)', math.atan2(0, 1), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
255 self.ftest('atan2(1, 1)', math.atan2(1, 1), math.pi/4) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
256 self.ftest('atan2(1, 0)', math.atan2(1, 0), math.pi/2) |
| 3950 | 257 |
|
46516
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
258 # math.atan2(0, x) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
259 self.ftest('atan2(0., -inf)', math.atan2(0., NINF), math.pi) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
260 self.ftest('atan2(0., -2.3)', math.atan2(0., -2.3), math.pi) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
261 self.ftest('atan2(0., -0.)', math.atan2(0., -0.), math.pi) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
262 self.assertEqual(math.atan2(0., 0.), 0.) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
263 self.assertEqual(math.atan2(0., 2.3), 0.) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
264 self.assertEqual(math.atan2(0., INF), 0.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
265 self.assertTrue(math.isnan(math.atan2(0., NAN))) |
|
46516
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
266 # math.atan2(-0, x) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
267 self.ftest('atan2(-0., -inf)', math.atan2(-0., NINF), -math.pi) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
268 self.ftest('atan2(-0., -2.3)', math.atan2(-0., -2.3), -math.pi) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
269 self.ftest('atan2(-0., -0.)', math.atan2(-0., -0.), -math.pi) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
270 self.assertEqual(math.atan2(-0., 0.), -0.) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
271 self.assertEqual(math.atan2(-0., 2.3), -0.) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
272 self.assertEqual(math.atan2(-0., INF), -0.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
273 self.assertTrue(math.isnan(math.atan2(-0., NAN))) |
|
46516
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
274 # math.atan2(INF, x) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
275 self.ftest('atan2(inf, -inf)', math.atan2(INF, NINF), math.pi*3/4) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
276 self.ftest('atan2(inf, -2.3)', math.atan2(INF, -2.3), math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
277 self.ftest('atan2(inf, -0.)', math.atan2(INF, -0.0), math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
278 self.ftest('atan2(inf, 0.)', math.atan2(INF, 0.0), math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
279 self.ftest('atan2(inf, 2.3)', math.atan2(INF, 2.3), math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
280 self.ftest('atan2(inf, inf)', math.atan2(INF, INF), math.pi/4) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
281 self.assertTrue(math.isnan(math.atan2(INF, NAN))) |
|
46516
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
282 # math.atan2(NINF, x) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
283 self.ftest('atan2(-inf, -inf)', math.atan2(NINF, NINF), -math.pi*3/4) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
284 self.ftest('atan2(-inf, -2.3)', math.atan2(NINF, -2.3), -math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
285 self.ftest('atan2(-inf, -0.)', math.atan2(NINF, -0.0), -math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
286 self.ftest('atan2(-inf, 0.)', math.atan2(NINF, 0.0), -math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
287 self.ftest('atan2(-inf, 2.3)', math.atan2(NINF, 2.3), -math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
288 self.ftest('atan2(-inf, inf)', math.atan2(NINF, INF), -math.pi/4) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
289 self.assertTrue(math.isnan(math.atan2(NINF, NAN))) |
|
46516
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
290 # math.atan2(+finite, x) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
291 self.ftest('atan2(2.3, -inf)', math.atan2(2.3, NINF), math.pi) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
292 self.ftest('atan2(2.3, -0.)', math.atan2(2.3, -0.), math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
293 self.ftest('atan2(2.3, 0.)', math.atan2(2.3, 0.), math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
294 self.assertEqual(math.atan2(2.3, INF), 0.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
295 self.assertTrue(math.isnan(math.atan2(2.3, NAN))) |
|
46516
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
296 # math.atan2(-finite, x) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
297 self.ftest('atan2(-2.3, -inf)', math.atan2(-2.3, NINF), -math.pi) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
298 self.ftest('atan2(-2.3, -0.)', math.atan2(-2.3, -0.), -math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
299 self.ftest('atan2(-2.3, 0.)', math.atan2(-2.3, 0.), -math.pi/2) |
|
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
300 self.assertEqual(math.atan2(-2.3, INF), -0.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
301 self.assertTrue(math.isnan(math.atan2(-2.3, NAN))) |
|
46516
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
302 # math.atan2(NAN, x) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
303 self.assertTrue(math.isnan(math.atan2(NAN, NINF))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
304 self.assertTrue(math.isnan(math.atan2(NAN, -2.3))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
305 self.assertTrue(math.isnan(math.atan2(NAN, -0.))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
306 self.assertTrue(math.isnan(math.atan2(NAN, 0.))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
307 self.assertTrue(math.isnan(math.atan2(NAN, 2.3))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
308 self.assertTrue(math.isnan(math.atan2(NAN, INF))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
309 self.assertTrue(math.isnan(math.atan2(NAN, NAN))) |
|
46516
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
310 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
311 def testCeil(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
312 self.assertRaises(TypeError, math.ceil) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
313 self.assertEqual(int, type(math.ceil(0.5))) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
314 self.ftest('ceil(0.5)', math.ceil(0.5), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
315 self.ftest('ceil(1.0)', math.ceil(1.0), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
316 self.ftest('ceil(1.5)', math.ceil(1.5), 2) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
317 self.ftest('ceil(-0.5)', math.ceil(-0.5), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
318 self.ftest('ceil(-1.0)', math.ceil(-1.0), -1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
319 self.ftest('ceil(-1.5)', math.ceil(-1.5), -1) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
320 #self.assertEqual(math.ceil(INF), INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
321 #self.assertEqual(math.ceil(NINF), NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
322 #self.assertTrue(math.isnan(math.ceil(NAN))) |
| 3950 | 323 |
|
42754
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
324 class TestCeil: |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
325 def __ceil__(self): |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
326 return 42 |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
327 class TestNoCeil: |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
328 pass |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
329 self.ftest('ceil(TestCeil())', math.ceil(TestCeil()), 42) |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
330 self.assertRaises(TypeError, math.ceil, TestNoCeil()) |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
331 |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
332 t = TestNoCeil() |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
333 t.__ceil__ = lambda *args: args |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
334 self.assertRaises(TypeError, math.ceil, t) |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
335 self.assertRaises(TypeError, math.ceil, t, 0) |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
336 |
|
56091
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
337 @requires_IEEE_754 |
|
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
338 def testCopysign(self): |
|
58769
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
339 self.assertEqual(math.copysign(1, 42), 1.0) |
|
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
340 self.assertEqual(math.copysign(0., 42), 0.0) |
|
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
341 self.assertEqual(math.copysign(1., -42), -1.0) |
|
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
342 self.assertEqual(math.copysign(3, 0.), 3.0) |
|
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
343 self.assertEqual(math.copysign(4., -0.), -4.0) |
|
58771
a2ab26c5f08b
Merged revisions 78045 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
344 |
|
56091
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
345 self.assertRaises(TypeError, math.copysign) |
|
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
346 # copysign should let us distinguish signs of zeros |
|
66310
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
347 self.assertEqual(math.copysign(1., 0.), 1.) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
348 self.assertEqual(math.copysign(1., -0.), -1.) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
349 self.assertEqual(math.copysign(INF, 0.), INF) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
350 self.assertEqual(math.copysign(INF, -0.), NINF) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
351 self.assertEqual(math.copysign(NINF, 0.), INF) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
352 self.assertEqual(math.copysign(NINF, -0.), NINF) |
|
56091
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
353 # and of infinities |
|
66310
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
354 self.assertEqual(math.copysign(1., INF), 1.) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
355 self.assertEqual(math.copysign(1., NINF), -1.) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
356 self.assertEqual(math.copysign(INF, INF), INF) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
357 self.assertEqual(math.copysign(INF, NINF), NINF) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
358 self.assertEqual(math.copysign(NINF, INF), INF) |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
359 self.assertEqual(math.copysign(NINF, NINF), NINF) |
|
58769
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
360 self.assertTrue(math.isnan(math.copysign(NAN, 1.))) |
|
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
361 self.assertTrue(math.isnan(math.copysign(NAN, INF))) |
|
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
362 self.assertTrue(math.isnan(math.copysign(NAN, NINF))) |
|
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
363 self.assertTrue(math.isnan(math.copysign(NAN, NAN))) |
|
56091
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
364 # copysign(INF, NAN) may be INF or it may be NINF, since |
|
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
365 # we don't know whether the sign bit of NAN is set on any |
|
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
366 # given platform. |
|
58769
0b42e1aa4a8b
Merged revisions 78041 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57758
diff
changeset
|
367 self.assertTrue(math.isinf(math.copysign(INF, NAN))) |
|
56091
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
368 # similarly, copysign(2., NAN) could be 2. or -2. |
|
66310
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66064
diff
changeset
|
369 self.assertEqual(abs(math.copysign(2., NAN)), 2.) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
370 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
371 def testCos(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
372 self.assertRaises(TypeError, math.cos) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
373 self.ftest('cos(-pi/2)', math.cos(-math.pi/2), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
374 self.ftest('cos(0)', math.cos(0), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
375 self.ftest('cos(pi/2)', math.cos(math.pi/2), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
376 self.ftest('cos(pi)', math.cos(math.pi), -1) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
377 try: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
378 self.assertTrue(math.isnan(math.cos(INF))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
379 self.assertTrue(math.isnan(math.cos(NINF))) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
380 except ValueError: |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
381 self.assertRaises(ValueError, math.cos, INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
382 self.assertRaises(ValueError, math.cos, NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
383 self.assertTrue(math.isnan(math.cos(NAN))) |
| 3950 | 384 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
385 def testCosh(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
386 self.assertRaises(TypeError, math.cosh) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
387 self.ftest('cosh(0)', math.cosh(0), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
388 self.ftest('cosh(2)-2*cosh(1)**2', math.cosh(2)-2*math.cosh(1)**2, -1) # Thanks to Lambert |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
389 self.assertEqual(math.cosh(INF), INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
390 self.assertEqual(math.cosh(NINF), INF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
391 self.assertTrue(math.isnan(math.cosh(NAN))) |
| 3950 | 392 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
393 def testDegrees(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
394 self.assertRaises(TypeError, math.degrees) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
395 self.ftest('degrees(pi)', math.degrees(math.pi), 180.0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
396 self.ftest('degrees(pi/2)', math.degrees(math.pi/2), 90.0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
397 self.ftest('degrees(-pi/4)', math.degrees(-math.pi/4), -45.0) |
|
23426
1157281f00a0
Adds tests for degrees() and radians() functions added to mathmodule.
Raymond Hettinger <python@rcn.com>
parents:
19750
diff
changeset
|
398 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
399 def testExp(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
400 self.assertRaises(TypeError, math.exp) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
401 self.ftest('exp(-1)', math.exp(-1), 1/math.e) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
402 self.ftest('exp(0)', math.exp(0), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
403 self.ftest('exp(1)', math.exp(1), math.e) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
404 self.assertEqual(math.exp(INF), INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
405 self.assertEqual(math.exp(NINF), 0.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
406 self.assertTrue(math.isnan(math.exp(NAN))) |
| 3950 | 407 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
408 def testFabs(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
409 self.assertRaises(TypeError, math.fabs) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
410 self.ftest('fabs(-1)', math.fabs(-1), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
411 self.ftest('fabs(0)', math.fabs(0), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
412 self.ftest('fabs(1)', math.fabs(1), 1) |
| 3950 | 413 |
|
47562
bd584f121c4b
Merged revisions 64002-64003,64012,64036-64037,64047,64050-64052,64054-64055,64066,64071 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47559
diff
changeset
|
414 def testFactorial(self): |
|
61599
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
415 self.assertEqual(math.factorial(0), 1) |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
416 self.assertEqual(math.factorial(0.0), 1) |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
417 total = 1 |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
418 for i in range(1, 1000): |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
419 total *= i |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
420 self.assertEqual(math.factorial(i), total) |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
421 self.assertEqual(math.factorial(float(i)), total) |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
422 self.assertEqual(math.factorial(i), py_factorial(i)) |
|
47562
bd584f121c4b
Merged revisions 64002-64003,64012,64036-64037,64047,64050-64052,64054-64055,64066,64071 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47559
diff
changeset
|
423 self.assertRaises(ValueError, math.factorial, -1) |
|
61599
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
424 self.assertRaises(ValueError, math.factorial, -1.0) |
|
47562
bd584f121c4b
Merged revisions 64002-64003,64012,64036-64037,64047,64050-64052,64054-64055,64066,64071 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47559
diff
changeset
|
425 self.assertRaises(ValueError, math.factorial, math.pi) |
|
61599
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
426 self.assertRaises(OverflowError, math.factorial, sys.maxsize+1) |
|
1e149b50aca6
Issue #8692: Improve performance of math.factorial:
Mark Dickinson <dickinsm@gmail.com>
parents:
61540
diff
changeset
|
427 self.assertRaises(OverflowError, math.factorial, 10e100) |
|
47562
bd584f121c4b
Merged revisions 64002-64003,64012,64036-64037,64047,64050-64052,64054-64055,64066,64071 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47559
diff
changeset
|
428 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
429 def testFloor(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
430 self.assertRaises(TypeError, math.floor) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
431 self.assertEqual(int, type(math.floor(0.5))) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
432 self.ftest('floor(0.5)', math.floor(0.5), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
433 self.ftest('floor(1.0)', math.floor(1.0), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
434 self.ftest('floor(1.5)', math.floor(1.5), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
435 self.ftest('floor(-0.5)', math.floor(-0.5), -1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
436 self.ftest('floor(-1.0)', math.floor(-1.0), -1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
437 self.ftest('floor(-1.5)', math.floor(-1.5), -2) |
|
42466
3fc3cedc49ca
Merged revisions 56753-56781 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
438 # pow() relies on floor() to check for integers |
|
3fc3cedc49ca
Merged revisions 56753-56781 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
439 # This fails on some platforms - so check it here |
|
3fc3cedc49ca
Merged revisions 56753-56781 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
440 self.ftest('floor(1.23e167)', math.floor(1.23e167), 1.23e167) |
|
3fc3cedc49ca
Merged revisions 56753-56781 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
441 self.ftest('floor(-1.23e167)', math.floor(-1.23e167), -1.23e167) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
442 #self.assertEqual(math.ceil(INF), INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
443 #self.assertEqual(math.ceil(NINF), NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
444 #self.assertTrue(math.isnan(math.floor(NAN))) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
445 |
|
42754
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
446 class TestFloor: |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
447 def __floor__(self): |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
448 return 42 |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
449 class TestNoFloor: |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
450 pass |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
451 self.ftest('floor(TestFloor())', math.floor(TestFloor()), 42) |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
452 self.assertRaises(TypeError, math.floor, TestNoFloor()) |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
453 |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
454 t = TestNoFloor() |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
455 t.__floor__ = lambda *args: args |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
456 self.assertRaises(TypeError, math.floor, t) |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
457 self.assertRaises(TypeError, math.floor, t, 0) |
|
1c98b445d847
Fix math.ceil() and math.floor() to fall back to __ceil__ and __floor__
Guido van Rossum <guido@python.org>
parents:
42466
diff
changeset
|
458 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
459 def testFmod(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
460 self.assertRaises(TypeError, math.fmod) |
|
69814
21e2e06fea4a
test_math.py: Use correct signs on zeros for expected fmod results.
Mark Dickinson <mdickinson@enthought.com>
parents:
69813
diff
changeset
|
461 self.ftest('fmod(10, 1)', math.fmod(10, 1), 0.0) |
|
21e2e06fea4a
test_math.py: Use correct signs on zeros for expected fmod results.
Mark Dickinson <mdickinson@enthought.com>
parents:
69813
diff
changeset
|
462 self.ftest('fmod(10, 0.5)', math.fmod(10, 0.5), 0.0) |
|
21e2e06fea4a
test_math.py: Use correct signs on zeros for expected fmod results.
Mark Dickinson <mdickinson@enthought.com>
parents:
69813
diff
changeset
|
463 self.ftest('fmod(10, 1.5)', math.fmod(10, 1.5), 1.0) |
|
21e2e06fea4a
test_math.py: Use correct signs on zeros for expected fmod results.
Mark Dickinson <mdickinson@enthought.com>
parents:
69813
diff
changeset
|
464 self.ftest('fmod(-10, 1)', math.fmod(-10, 1), -0.0) |
|
21e2e06fea4a
test_math.py: Use correct signs on zeros for expected fmod results.
Mark Dickinson <mdickinson@enthought.com>
parents:
69813
diff
changeset
|
465 self.ftest('fmod(-10, 0.5)', math.fmod(-10, 0.5), -0.0) |
|
21e2e06fea4a
test_math.py: Use correct signs on zeros for expected fmod results.
Mark Dickinson <mdickinson@enthought.com>
parents:
69813
diff
changeset
|
466 self.ftest('fmod(-10, 1.5)', math.fmod(-10, 1.5), -1.0) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
467 self.assertTrue(math.isnan(math.fmod(NAN, 1.))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
468 self.assertTrue(math.isnan(math.fmod(1., NAN))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
469 self.assertTrue(math.isnan(math.fmod(NAN, NAN))) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
470 self.assertRaises(ValueError, math.fmod, 1., 0.) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
471 self.assertRaises(ValueError, math.fmod, INF, 1.) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
472 self.assertRaises(ValueError, math.fmod, NINF, 1.) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
473 self.assertRaises(ValueError, math.fmod, INF, 0.) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
474 self.assertEqual(math.fmod(3.0, INF), 3.0) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
475 self.assertEqual(math.fmod(-3.0, INF), -3.0) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
476 self.assertEqual(math.fmod(3.0, NINF), 3.0) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
477 self.assertEqual(math.fmod(-3.0, NINF), -3.0) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
478 self.assertEqual(math.fmod(0.0, 3.0), 0.0) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
479 self.assertEqual(math.fmod(0.0, NINF), 0.0) |
| 3950 | 480 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
481 def testFrexp(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
482 self.assertRaises(TypeError, math.frexp) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
483 |
|
41717
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
484 def testfrexp(name, result, expected): |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
485 (mant, exp), (emant, eexp) = result, expected |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
486 if abs(mant-emant) > eps or exp != eexp: |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
487 self.fail('%s returned %r, expected %r'%\ |
|
41717
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
488 (name, result, expected)) |
| 3950 | 489 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
490 testfrexp('frexp(-1)', math.frexp(-1), (-0.5, 1)) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
491 testfrexp('frexp(0)', math.frexp(0), (0, 0)) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
492 testfrexp('frexp(1)', math.frexp(1), (0.5, 1)) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
493 testfrexp('frexp(2)', math.frexp(2), (0.5, 2)) |
| 3950 | 494 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
495 self.assertEqual(math.frexp(INF)[0], INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
496 self.assertEqual(math.frexp(NINF)[0], NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
497 self.assertTrue(math.isnan(math.frexp(NAN)[0])) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
498 |
|
56091
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
499 @requires_IEEE_754 |
|
53352
54b4489f1c28
Merged revisions 71837-71838 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48606
diff
changeset
|
500 @unittest.skipIf(HAVE_DOUBLE_ROUNDING, |
|
54b4489f1c28
Merged revisions 71837-71838 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48606
diff
changeset
|
501 "fsum is not exact on machines with double rounding") |
|
48606
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
502 def testFsum(self): |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
503 # math.fsum relies on exact rounding for correct operation. |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
504 # There's a known problem with IA32 floating-point that causes |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
505 # inexact rounding in some situations, and will cause the |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
506 # math.fsum tests below to fail; see issue #2937. On non IEEE |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
507 # 754 platforms, and on IEEE 754 platforms that exhibit the |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
508 # problem described in issue #2937, we simply skip the whole |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
509 # test. |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
510 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
511 # Python version of math.fsum, for comparison. Uses a |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
512 # different algorithm based on frexp, ldexp and integer |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
513 # arithmetic. |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
514 from sys import float_info |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
515 mant_dig = float_info.mant_dig |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
516 etiny = float_info.min_exp - mant_dig |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
517 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
518 def msum(iterable): |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
519 """Full precision summation. Compute sum(iterable) without any |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
520 intermediate accumulation of error. Based on the 'lsum' function |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
521 at http://code.activestate.com/recipes/393090/ |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
522 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
523 """ |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
524 tmant, texp = 0, 0 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
525 for x in iterable: |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
526 mant, exp = math.frexp(x) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
527 mant, exp = int(math.ldexp(mant, mant_dig)), exp - mant_dig |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
528 if texp > exp: |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
529 tmant <<= texp-exp |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
530 texp = exp |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
531 else: |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
532 mant <<= exp-texp |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
533 tmant += mant |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
534 # Round tmant * 2**texp to a float. The original recipe |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
535 # used float(str(tmant)) * 2.0**texp for this, but that's |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
536 # a little unsafe because str -> float conversion can't be |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
537 # relied upon to do correct rounding on all platforms. |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
538 tail = max(len(bin(abs(tmant)))-2 - mant_dig, etiny - texp) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
539 if tail > 0: |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
540 h = 1 << (tail-1) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
541 tmant = tmant // (2*h) + bool(tmant & h and tmant & 3*h-1) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
542 texp += tail |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
543 return math.ldexp(tmant, texp) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
544 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
545 test_values = [ |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
546 ([], 0.0), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
547 ([0.0], 0.0), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
548 ([1e100, 1.0, -1e100, 1e-100, 1e50, -1.0, -1e50], 1e-100), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
549 ([2.0**53, -0.5, -2.0**-54], 2.0**53-1.0), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
550 ([2.0**53, 1.0, 2.0**-100], 2.0**53+2.0), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
551 ([2.0**53+10.0, 1.0, 2.0**-100], 2.0**53+12.0), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
552 ([2.0**53-4.0, 0.5, 2.0**-54], 2.0**53-3.0), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
553 ([1./n for n in range(1, 1001)], |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
554 float.fromhex('0x1.df11f45f4e61ap+2')), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
555 ([(-1.)**n/n for n in range(1, 1001)], |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
556 float.fromhex('-0x1.62a2af1bd3624p-1')), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
557 ([1.7**(i+1)-1.7**i for i in range(1000)] + [-1.7**1000], -1.0), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
558 ([1e16, 1., 1e-16], 10000000000000002.0), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
559 ([1e16-2., 1.-2.**-53, -(1e16-2.), -(1.-2.**-53)], 0.0), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
560 # exercise code for resizing partials array |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
561 ([2.**n - 2.**(n+50) + 2.**(n+52) for n in range(-1074, 972, 2)] + |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
562 [-2.**1022], |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
563 float.fromhex('0x1.5555555555555p+970')), |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
564 ] |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
565 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
566 for i, (vals, expected) in enumerate(test_values): |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
567 try: |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
568 actual = math.fsum(vals) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
569 except OverflowError: |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
570 self.fail("test %d failed: got OverflowError, expected %r " |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
571 "for math.fsum(%.100r)" % (i, expected, vals)) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
572 except ValueError: |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
573 self.fail("test %d failed: got ValueError, expected %r " |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
574 "for math.fsum(%.100r)" % (i, expected, vals)) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
575 self.assertEqual(actual, expected) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
576 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
577 from random import random, gauss, shuffle |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
578 for j in range(1000): |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
579 vals = [7, 1e100, -7, -1e100, -9e-20, 8e-20] * 10 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
580 s = 0 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
581 for i in range(200): |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
582 v = gauss(0, random()) ** 7 - s |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
583 s += v |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
584 vals.append(v) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
585 shuffle(vals) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
586 |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
587 s = msum(vals) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
588 self.assertEqual(msum(vals), math.fsum(vals)) |
|
f121a963ab69
Merged revisions 65258,65292,65299,65308-65309,65315,65326 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
47562
diff
changeset
|
589 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
590 def testHypot(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
591 self.assertRaises(TypeError, math.hypot) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
592 self.ftest('hypot(0,0)', math.hypot(0,0), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
593 self.ftest('hypot(3,4)', math.hypot(3,4), 5) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
594 self.assertEqual(math.hypot(NAN, INF), INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
595 self.assertEqual(math.hypot(INF, NAN), INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
596 self.assertEqual(math.hypot(NAN, NINF), INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
597 self.assertEqual(math.hypot(NINF, NAN), INF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
598 self.assertTrue(math.isnan(math.hypot(1.0, NAN))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
599 self.assertTrue(math.isnan(math.hypot(NAN, -2.0))) |
| 3950 | 600 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
601 def testLdexp(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
602 self.assertRaises(TypeError, math.ldexp) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
603 self.ftest('ldexp(0,1)', math.ldexp(0,1), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
604 self.ftest('ldexp(1,1)', math.ldexp(1,1), 2) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
605 self.ftest('ldexp(1,-1)', math.ldexp(1,-1), 0.5) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
606 self.ftest('ldexp(-1,1)', math.ldexp(-1,1), -2) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
607 self.assertRaises(OverflowError, math.ldexp, 1., 1000000) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
608 self.assertRaises(OverflowError, math.ldexp, -1., 1000000) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
609 self.assertEqual(math.ldexp(1., -1000000), 0.) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
610 self.assertEqual(math.ldexp(-1., -1000000), -0.) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
611 self.assertEqual(math.ldexp(INF, 30), INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
612 self.assertEqual(math.ldexp(NINF, -213), NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
613 self.assertTrue(math.isnan(math.ldexp(NAN, 0))) |
| 3950 | 614 |
|
47063
081c15806e28
Merged revisions 62914-62916,62918-62919,62921-62922,62924-62942,62944-62945,62947-62949 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46616
diff
changeset
|
615 # large second argument |
|
081c15806e28
Merged revisions 62914-62916,62918-62919,62921-62922,62924-62942,62944-62945,62947-62949 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46616
diff
changeset
|
616 for n in [10**5, 10**10, 10**20, 10**40]: |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
617 self.assertEqual(math.ldexp(INF, -n), INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
618 self.assertEqual(math.ldexp(NINF, -n), NINF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
619 self.assertEqual(math.ldexp(1., -n), 0.) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
620 self.assertEqual(math.ldexp(-1., -n), -0.) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
621 self.assertEqual(math.ldexp(0., -n), 0.) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
622 self.assertEqual(math.ldexp(-0., -n), -0.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
623 self.assertTrue(math.isnan(math.ldexp(NAN, -n))) |
|
47063
081c15806e28
Merged revisions 62914-62916,62918-62919,62921-62922,62924-62942,62944-62945,62947-62949 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46616
diff
changeset
|
624 |
|
081c15806e28
Merged revisions 62914-62916,62918-62919,62921-62922,62924-62942,62944-62945,62947-62949 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46616
diff
changeset
|
625 self.assertRaises(OverflowError, math.ldexp, 1., n) |
|
081c15806e28
Merged revisions 62914-62916,62918-62919,62921-62922,62924-62942,62944-62945,62947-62949 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46616
diff
changeset
|
626 self.assertRaises(OverflowError, math.ldexp, -1., n) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
627 self.assertEqual(math.ldexp(0., n), 0.) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
628 self.assertEqual(math.ldexp(-0., n), -0.) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
629 self.assertEqual(math.ldexp(INF, n), INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
630 self.assertEqual(math.ldexp(NINF, n), NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
631 self.assertTrue(math.isnan(math.ldexp(NAN, n))) |
|
47063
081c15806e28
Merged revisions 62914-62916,62918-62919,62921-62922,62924-62942,62944-62945,62947-62949 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46616
diff
changeset
|
632 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
633 def testLog(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
634 self.assertRaises(TypeError, math.log) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
635 self.ftest('log(1/e)', math.log(1/math.e), -1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
636 self.ftest('log(1)', math.log(1), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
637 self.ftest('log(e)', math.log(math.e), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
638 self.ftest('log(32,2)', math.log(32,2), 5) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
639 self.ftest('log(10**40, 10)', math.log(10**40, 10), 40) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
640 self.ftest('log(10**40, 10**20)', math.log(10**40, 10**20), 2) |
|
65026
a9349fd3d0f7
Issue #9599: Further accuracy tweaks to loghelper. For an integer n that's small enough to be converted to a float without overflow, log(n) is now computed as log(float(n)), and similarly for log10.
Mark Dickinson <dickinsm@gmail.com>
parents:
62968
diff
changeset
|
641 self.ftest('log(10**1000)', math.log(10**1000), |
|
a9349fd3d0f7
Issue #9599: Further accuracy tweaks to loghelper. For an integer n that's small enough to be converted to a float without overflow, log(n) is now computed as log(float(n)), and similarly for log10.
Mark Dickinson <dickinsm@gmail.com>
parents:
62968
diff
changeset
|
642 2302.5850929940457) |
|
a9349fd3d0f7
Issue #9599: Further accuracy tweaks to loghelper. For an integer n that's small enough to be converted to a float without overflow, log(n) is now computed as log(float(n)), and similarly for log10.
Mark Dickinson <dickinsm@gmail.com>
parents:
62968
diff
changeset
|
643 self.assertRaises(ValueError, math.log, -1.5) |
|
a9349fd3d0f7
Issue #9599: Further accuracy tweaks to loghelper. For an integer n that's small enough to be converted to a float without overflow, log(n) is now computed as log(float(n)), and similarly for log10.
Mark Dickinson <dickinsm@gmail.com>
parents:
62968
diff
changeset
|
644 self.assertRaises(ValueError, math.log, -10**1000) |
|
a9349fd3d0f7
Issue #9599: Further accuracy tweaks to loghelper. For an integer n that's small enough to be converted to a float without overflow, log(n) is now computed as log(float(n)), and similarly for log10.
Mark Dickinson <dickinsm@gmail.com>
parents:
62968
diff
changeset
|
645 self.assertRaises(ValueError, math.log, NINF) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
646 self.assertEqual(math.log(INF), INF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
647 self.assertTrue(math.isnan(math.log(NAN))) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
648 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
649 def testLog1p(self): |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
650 self.assertRaises(TypeError, math.log1p) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
651 n= 2**90 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
652 self.assertAlmostEqual(math.log1p(n), math.log1p(float(n))) |
| 3950 | 653 |
|
69946
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
654 @requires_IEEE_754 |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
655 def testLog2(self): |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
656 self.assertRaises(TypeError, math.log2) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
657 |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
658 # Check some integer values |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
659 self.assertEqual(math.log2(1), 0.0) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
660 self.assertEqual(math.log2(2), 1.0) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
661 self.assertEqual(math.log2(4), 2.0) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
662 |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
663 # Large integer values |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
664 self.assertEqual(math.log2(2**1023), 1023.0) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
665 self.assertEqual(math.log2(2**1024), 1024.0) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
666 self.assertEqual(math.log2(2**2000), 2000.0) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
667 |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
668 self.assertRaises(ValueError, math.log2, -1.5) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
669 self.assertRaises(ValueError, math.log2, NINF) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
670 self.assertTrue(math.isnan(math.log2(NAN))) |
|
6d1cbfcee45a
Issue #11888: Add log2 function to math module. Patch written by Mark
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69814
diff
changeset
|
671 |
|
70018
34871c3072c9
Issue #11888: skip some log2 tests on Mac OS X Tiger
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69979
diff
changeset
|
672 @requires_IEEE_754 |
|
70576
566c42b0e750
(Merge 3.2) Close #12230: Mac OS X Tiger (10.4) has a kernel bug: sometimes,
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70574
diff
changeset
|
673 # log2() is not accurate enough on Mac OS X Tiger (10.4) |
|
566c42b0e750
(Merge 3.2) Close #12230: Mac OS X Tiger (10.4) has a kernel bug: sometimes,
Victor Stinner <victor.stinner@haypocalc.com>
parents:
70574
diff
changeset
|
674 @support.requires_mac_ver(10, 5) |
|
70018
34871c3072c9
Issue #11888: skip some log2 tests on Mac OS X Tiger
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69979
diff
changeset
|
675 def testLog2Exact(self): |
|
34871c3072c9
Issue #11888: skip some log2 tests on Mac OS X Tiger
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69979
diff
changeset
|
676 # Check that we get exact equality for log2 of powers of 2. |
|
34871c3072c9
Issue #11888: skip some log2 tests on Mac OS X Tiger
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69979
diff
changeset
|
677 actual = [math.log2(math.ldexp(1.0, n)) for n in range(-1074, 1024)] |
|
34871c3072c9
Issue #11888: skip some log2 tests on Mac OS X Tiger
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69979
diff
changeset
|
678 expected = [float(n) for n in range(-1074, 1024)] |
|
34871c3072c9
Issue #11888: skip some log2 tests on Mac OS X Tiger
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69979
diff
changeset
|
679 self.assertEqual(actual, expected) |
|
34871c3072c9
Issue #11888: skip some log2 tests on Mac OS X Tiger
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69979
diff
changeset
|
680 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
681 def testLog10(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
682 self.assertRaises(TypeError, math.log10) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
683 self.ftest('log10(0.1)', math.log10(0.1), -1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
684 self.ftest('log10(1)', math.log10(1), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
685 self.ftest('log10(10)', math.log10(10), 1) |
|
65026
a9349fd3d0f7
Issue #9599: Further accuracy tweaks to loghelper. For an integer n that's small enough to be converted to a float without overflow, log(n) is now computed as log(float(n)), and similarly for log10.
Mark Dickinson <dickinsm@gmail.com>
parents:
62968
diff
changeset
|
686 self.ftest('log10(10**1000)', math.log10(10**1000), 1000.0) |
|
a9349fd3d0f7
Issue #9599: Further accuracy tweaks to loghelper. For an integer n that's small enough to be converted to a float without overflow, log(n) is now computed as log(float(n)), and similarly for log10.
Mark Dickinson <dickinsm@gmail.com>
parents:
62968
diff
changeset
|
687 self.assertRaises(ValueError, math.log10, -1.5) |
|
a9349fd3d0f7
Issue #9599: Further accuracy tweaks to loghelper. For an integer n that's small enough to be converted to a float without overflow, log(n) is now computed as log(float(n)), and similarly for log10.
Mark Dickinson <dickinsm@gmail.com>
parents:
62968
diff
changeset
|
688 self.assertRaises(ValueError, math.log10, -10**1000) |
|
a9349fd3d0f7
Issue #9599: Further accuracy tweaks to loghelper. For an integer n that's small enough to be converted to a float without overflow, log(n) is now computed as log(float(n)), and similarly for log10.
Mark Dickinson <dickinsm@gmail.com>
parents:
62968
diff
changeset
|
689 self.assertRaises(ValueError, math.log10, NINF) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
690 self.assertEqual(math.log(INF), INF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
691 self.assertTrue(math.isnan(math.log10(NAN))) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
692 |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
693 def testModf(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
694 self.assertRaises(TypeError, math.modf) |
| 3950 | 695 |
|
41717
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
696 def testmodf(name, result, expected): |
|
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
697 (v1, v2), (e1, e2) = result, expected |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
698 if abs(v1-e1) > eps or abs(v2-e2): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
699 self.fail('%s returned %r, expected %r'%\ |
|
41717
9ad84070b22d
Merged revisions 55328-55341 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
700 (name, result, expected)) |
| 3950 | 701 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
702 testmodf('modf(1.5)', math.modf(1.5), (0.5, 1.0)) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
703 testmodf('modf(-1.5)', math.modf(-1.5), (-0.5, -1.0)) |
| 3950 | 704 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
705 self.assertEqual(math.modf(INF), (0.0, INF)) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
706 self.assertEqual(math.modf(NINF), (-0.0, NINF)) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
707 |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
708 modf_nan = math.modf(NAN) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
709 self.assertTrue(math.isnan(modf_nan[0])) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
710 self.assertTrue(math.isnan(modf_nan[1])) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
711 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
712 def testPow(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
713 self.assertRaises(TypeError, math.pow) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
714 self.ftest('pow(0,1)', math.pow(0,1), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
715 self.ftest('pow(1,0)', math.pow(1,0), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
716 self.ftest('pow(2,1)', math.pow(2,1), 2) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
717 self.ftest('pow(2,-1)', math.pow(2,-1), 0.5) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
718 self.assertEqual(math.pow(INF, 1), INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
719 self.assertEqual(math.pow(NINF, 1), NINF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
720 self.assertEqual((math.pow(1, INF)), 1.) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
721 self.assertEqual((math.pow(1, NINF)), 1.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
722 self.assertTrue(math.isnan(math.pow(NAN, 1))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
723 self.assertTrue(math.isnan(math.pow(2, NAN))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
724 self.assertTrue(math.isnan(math.pow(0, NAN))) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
725 self.assertEqual(math.pow(1, NAN), 1) |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
726 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
727 # pow(0., x) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
728 self.assertEqual(math.pow(0., INF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
729 self.assertEqual(math.pow(0., 3.), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
730 self.assertEqual(math.pow(0., 2.3), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
731 self.assertEqual(math.pow(0., 2.), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
732 self.assertEqual(math.pow(0., 0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
733 self.assertEqual(math.pow(0., -0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
734 self.assertRaises(ValueError, math.pow, 0., -2.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
735 self.assertRaises(ValueError, math.pow, 0., -2.3) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
736 self.assertRaises(ValueError, math.pow, 0., -3.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
737 self.assertRaises(ValueError, math.pow, 0., NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
738 self.assertTrue(math.isnan(math.pow(0., NAN))) |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
739 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
740 # pow(INF, x) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
741 self.assertEqual(math.pow(INF, INF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
742 self.assertEqual(math.pow(INF, 3.), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
743 self.assertEqual(math.pow(INF, 2.3), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
744 self.assertEqual(math.pow(INF, 2.), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
745 self.assertEqual(math.pow(INF, 0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
746 self.assertEqual(math.pow(INF, -0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
747 self.assertEqual(math.pow(INF, -2.), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
748 self.assertEqual(math.pow(INF, -2.3), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
749 self.assertEqual(math.pow(INF, -3.), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
750 self.assertEqual(math.pow(INF, NINF), 0.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
751 self.assertTrue(math.isnan(math.pow(INF, NAN))) |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
752 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
753 # pow(-0., x) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
754 self.assertEqual(math.pow(-0., INF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
755 self.assertEqual(math.pow(-0., 3.), -0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
756 self.assertEqual(math.pow(-0., 2.3), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
757 self.assertEqual(math.pow(-0., 2.), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
758 self.assertEqual(math.pow(-0., 0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
759 self.assertEqual(math.pow(-0., -0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
760 self.assertRaises(ValueError, math.pow, -0., -2.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
761 self.assertRaises(ValueError, math.pow, -0., -2.3) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
762 self.assertRaises(ValueError, math.pow, -0., -3.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
763 self.assertRaises(ValueError, math.pow, -0., NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
764 self.assertTrue(math.isnan(math.pow(-0., NAN))) |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
765 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
766 # pow(NINF, x) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
767 self.assertEqual(math.pow(NINF, INF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
768 self.assertEqual(math.pow(NINF, 3.), NINF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
769 self.assertEqual(math.pow(NINF, 2.3), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
770 self.assertEqual(math.pow(NINF, 2.), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
771 self.assertEqual(math.pow(NINF, 0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
772 self.assertEqual(math.pow(NINF, -0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
773 self.assertEqual(math.pow(NINF, -2.), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
774 self.assertEqual(math.pow(NINF, -2.3), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
775 self.assertEqual(math.pow(NINF, -3.), -0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
776 self.assertEqual(math.pow(NINF, NINF), 0.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
777 self.assertTrue(math.isnan(math.pow(NINF, NAN))) |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
778 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
779 # pow(-1, x) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
780 self.assertEqual(math.pow(-1., INF), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
781 self.assertEqual(math.pow(-1., 3.), -1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
782 self.assertRaises(ValueError, math.pow, -1., 2.3) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
783 self.assertEqual(math.pow(-1., 2.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
784 self.assertEqual(math.pow(-1., 0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
785 self.assertEqual(math.pow(-1., -0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
786 self.assertEqual(math.pow(-1., -2.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
787 self.assertRaises(ValueError, math.pow, -1., -2.3) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
788 self.assertEqual(math.pow(-1., -3.), -1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
789 self.assertEqual(math.pow(-1., NINF), 1.) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
790 self.assertTrue(math.isnan(math.pow(-1., NAN))) |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
791 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
792 # pow(1, x) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
793 self.assertEqual(math.pow(1., INF), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
794 self.assertEqual(math.pow(1., 3.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
795 self.assertEqual(math.pow(1., 2.3), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
796 self.assertEqual(math.pow(1., 2.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
797 self.assertEqual(math.pow(1., 0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
798 self.assertEqual(math.pow(1., -0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
799 self.assertEqual(math.pow(1., -2.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
800 self.assertEqual(math.pow(1., -2.3), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
801 self.assertEqual(math.pow(1., -3.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
802 self.assertEqual(math.pow(1., NINF), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
803 self.assertEqual(math.pow(1., NAN), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
804 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
805 # pow(x, 0) should be 1 for any x |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
806 self.assertEqual(math.pow(2.3, 0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
807 self.assertEqual(math.pow(-2.3, 0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
808 self.assertEqual(math.pow(NAN, 0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
809 self.assertEqual(math.pow(2.3, -0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
810 self.assertEqual(math.pow(-2.3, -0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
811 self.assertEqual(math.pow(NAN, -0.), 1.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
812 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
813 # pow(x, y) is invalid if x is negative and y is not integral |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
814 self.assertRaises(ValueError, math.pow, -1., 2.3) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
815 self.assertRaises(ValueError, math.pow, -15., -3.1) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
816 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
817 # pow(x, NINF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
818 self.assertEqual(math.pow(1.9, NINF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
819 self.assertEqual(math.pow(1.1, NINF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
820 self.assertEqual(math.pow(0.9, NINF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
821 self.assertEqual(math.pow(0.1, NINF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
822 self.assertEqual(math.pow(-0.1, NINF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
823 self.assertEqual(math.pow(-0.9, NINF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
824 self.assertEqual(math.pow(-1.1, NINF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
825 self.assertEqual(math.pow(-1.9, NINF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
826 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
827 # pow(x, INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
828 self.assertEqual(math.pow(1.9, INF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
829 self.assertEqual(math.pow(1.1, INF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
830 self.assertEqual(math.pow(0.9, INF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
831 self.assertEqual(math.pow(0.1, INF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
832 self.assertEqual(math.pow(-0.1, INF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
833 self.assertEqual(math.pow(-0.9, INF), 0.) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
834 self.assertEqual(math.pow(-1.1, INF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
835 self.assertEqual(math.pow(-1.9, INF), INF) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
836 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
837 # pow(x, y) should work for x negative, y an integer |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
838 self.ftest('(-2.)**3.', math.pow(-2.0, 3.0), -8.0) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
839 self.ftest('(-2.)**2.', math.pow(-2.0, 2.0), 4.0) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
840 self.ftest('(-2.)**1.', math.pow(-2.0, 1.0), -2.0) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
841 self.ftest('(-2.)**0.', math.pow(-2.0, 0.0), 1.0) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
842 self.ftest('(-2.)**-0.', math.pow(-2.0, -0.0), 1.0) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
843 self.ftest('(-2.)**-1.', math.pow(-2.0, -1.0), -0.5) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
844 self.ftest('(-2.)**-2.', math.pow(-2.0, -2.0), 0.25) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
845 self.ftest('(-2.)**-3.', math.pow(-2.0, -3.0), -0.125) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
846 self.assertRaises(ValueError, math.pow, -2.0, -0.5) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
847 self.assertRaises(ValueError, math.pow, -2.0, 0.5) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
848 |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
849 # the following tests have been commented out since they don't |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
850 # really belong here: the implementation of ** for floats is |
|
68585
bf94b6a73fc8
#11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66340
diff
changeset
|
851 # independent of the implementation of math.pow |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
852 #self.assertEqual(1**NAN, 1) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
853 #self.assertEqual(1**INF, 1) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
854 #self.assertEqual(1**NINF, 1) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
855 #self.assertEqual(1**0, 1) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
856 #self.assertEqual(1.**NAN, 1) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
857 #self.assertEqual(1.**INF, 1) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
858 #self.assertEqual(1.**NINF, 1) |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
859 #self.assertEqual(1.**0, 1) |
| 3950 | 860 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
861 def testRadians(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
862 self.assertRaises(TypeError, math.radians) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
863 self.ftest('radians(180)', math.radians(180), math.pi) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
864 self.ftest('radians(90)', math.radians(90), math.pi/2) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
865 self.ftest('radians(-45)', math.radians(-45), -math.pi/4) |
|
23426
1157281f00a0
Adds tests for degrees() and radians() functions added to mathmodule.
Raymond Hettinger <python@rcn.com>
parents:
19750
diff
changeset
|
866 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
867 def testSin(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
868 self.assertRaises(TypeError, math.sin) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
869 self.ftest('sin(0)', math.sin(0), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
870 self.ftest('sin(pi/2)', math.sin(math.pi/2), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
871 self.ftest('sin(-pi/2)', math.sin(-math.pi/2), -1) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
872 try: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
873 self.assertTrue(math.isnan(math.sin(INF))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
874 self.assertTrue(math.isnan(math.sin(NINF))) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
875 except ValueError: |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
876 self.assertRaises(ValueError, math.sin, INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
877 self.assertRaises(ValueError, math.sin, NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
878 self.assertTrue(math.isnan(math.sin(NAN))) |
| 3950 | 879 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
880 def testSinh(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
881 self.assertRaises(TypeError, math.sinh) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
882 self.ftest('sinh(0)', math.sinh(0), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
883 self.ftest('sinh(1)**2-cosh(1)**2', math.sinh(1)**2-math.cosh(1)**2, -1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
884 self.ftest('sinh(1)+sinh(-1)', math.sinh(1)+math.sinh(-1), 0) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
885 self.assertEqual(math.sinh(INF), INF) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
886 self.assertEqual(math.sinh(NINF), NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
887 self.assertTrue(math.isnan(math.sinh(NAN))) |
| 3950 | 888 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
889 def testSqrt(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
890 self.assertRaises(TypeError, math.sqrt) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
891 self.ftest('sqrt(0)', math.sqrt(0), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
892 self.ftest('sqrt(1)', math.sqrt(1), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
893 self.ftest('sqrt(4)', math.sqrt(4), 2) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61542
diff
changeset
|
894 self.assertEqual(math.sqrt(INF), INF) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
895 self.assertRaises(ValueError, math.sqrt, NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
896 self.assertTrue(math.isnan(math.sqrt(NAN))) |
| 3950 | 897 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
898 def testTan(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
899 self.assertRaises(TypeError, math.tan) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
900 self.ftest('tan(0)', math.tan(0), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
901 self.ftest('tan(pi/4)', math.tan(math.pi/4), 1) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
902 self.ftest('tan(-pi/4)', math.tan(-math.pi/4), -1) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
903 try: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
904 self.assertTrue(math.isnan(math.tan(INF))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
905 self.assertTrue(math.isnan(math.tan(NINF))) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
906 except: |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
907 self.assertRaises(ValueError, math.tan, INF) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
908 self.assertRaises(ValueError, math.tan, NINF) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
909 self.assertTrue(math.isnan(math.tan(NAN))) |
|
15170
09c7ac188ce2
Stop raising OverflowError on underflows reported by libm (errno==ERANGE and
Tim Peters <tim.peters@gmail.com>
parents:
13912
diff
changeset
|
910 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
911 def testTanh(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
912 self.assertRaises(TypeError, math.tanh) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
913 self.ftest('tanh(0)', math.tanh(0), 0) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
914 self.ftest('tanh(1)+tanh(-1)', math.tanh(1)+math.tanh(-1), 0) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
915 self.ftest('tanh(inf)', math.tanh(INF), 1) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
916 self.ftest('tanh(-inf)', math.tanh(NINF), -1) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
917 self.assertTrue(math.isnan(math.tanh(NAN))) |
|
66064
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
918 |
|
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
919 @requires_IEEE_754 |
|
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
920 @unittest.skipIf(sysconfig.get_config_var('TANH_PRESERVES_ZERO_SIGN') == 0, |
|
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
921 "system tanh() function doesn't copy the sign") |
|
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
922 def testTanhSign(self): |
|
46516
ec48490b969a
Merged revisions 62420-62421,62423-62424 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46505
diff
changeset
|
923 # check that tanh(-0.) == -0. on IEEE 754 systems |
|
66064
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
924 self.assertEqual(math.tanh(-0.), -0.) |
|
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
925 self.assertEqual(math.copysign(1., math.tanh(-0.)), |
|
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
926 math.copysign(1., -0.)) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
927 |
|
45082
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
928 def test_trunc(self): |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
929 self.assertEqual(math.trunc(1), 1) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
930 self.assertEqual(math.trunc(-1), -1) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
931 self.assertEqual(type(math.trunc(1)), int) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
932 self.assertEqual(type(math.trunc(1.5)), int) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
933 self.assertEqual(math.trunc(1.5), 1) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
934 self.assertEqual(math.trunc(-1.5), -1) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
935 self.assertEqual(math.trunc(1.999999), 1) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
936 self.assertEqual(math.trunc(-1.999999), -1) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
937 self.assertEqual(math.trunc(-0.999999), -0) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
938 self.assertEqual(math.trunc(-100.999), -100) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
939 |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
940 class TestTrunc(object): |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
941 def __trunc__(self): |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
942 return 23 |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
943 |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
944 class TestNoTrunc(object): |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
945 pass |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
946 |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
947 self.assertEqual(math.trunc(TestTrunc()), 23) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
948 |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
949 self.assertRaises(TypeError, math.trunc) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
950 self.assertRaises(TypeError, math.trunc, 1, 2) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
951 self.assertRaises(TypeError, math.trunc, TestNoTrunc()) |
|
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
952 |
|
62968
53e7ae8ca039
Issue #9165: Add math.isfinite and cmath.isfinite.
Mark Dickinson <dickinsm@gmail.com>
parents:
62844
diff
changeset
|
953 def testIsfinite(self): |
|
53e7ae8ca039
Issue #9165: Add math.isfinite and cmath.isfinite.
Mark Dickinson <dickinsm@gmail.com>
parents:
62844
diff
changeset
|
954 self.assertTrue(math.isfinite(0.0)) |
|
53e7ae8ca039
Issue #9165: Add math.isfinite and cmath.isfinite.
Mark Dickinson <dickinsm@gmail.com>
parents:
62844
diff
changeset
|
955 self.assertTrue(math.isfinite(-0.0)) |
|
53e7ae8ca039
Issue #9165: Add math.isfinite and cmath.isfinite.
Mark Dickinson <dickinsm@gmail.com>
parents:
62844
diff
changeset
|
956 self.assertTrue(math.isfinite(1.0)) |
|
53e7ae8ca039
Issue #9165: Add math.isfinite and cmath.isfinite.
Mark Dickinson <dickinsm@gmail.com>
parents:
62844
diff
changeset
|
957 self.assertTrue(math.isfinite(-1.0)) |
|
53e7ae8ca039
Issue #9165: Add math.isfinite and cmath.isfinite.
Mark Dickinson <dickinsm@gmail.com>
parents:
62844
diff
changeset
|
958 self.assertFalse(math.isfinite(float("nan"))) |
|
53e7ae8ca039
Issue #9165: Add math.isfinite and cmath.isfinite.
Mark Dickinson <dickinsm@gmail.com>
parents:
62844
diff
changeset
|
959 self.assertFalse(math.isfinite(float("inf"))) |
|
53e7ae8ca039
Issue #9165: Add math.isfinite and cmath.isfinite.
Mark Dickinson <dickinsm@gmail.com>
parents:
62844
diff
changeset
|
960 self.assertFalse(math.isfinite(float("-inf"))) |
|
45082
d7540031b959
Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44499
diff
changeset
|
961 |
|
44441
b91ca87e6f32
Merged revisions 59666-59679 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42754
diff
changeset
|
962 def testIsnan(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
963 self.assertTrue(math.isnan(float("nan"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
964 self.assertTrue(math.isnan(float("inf")* 0.)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
965 self.assertFalse(math.isnan(float("inf"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
966 self.assertFalse(math.isnan(0.)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
967 self.assertFalse(math.isnan(1.)) |
|
44441
b91ca87e6f32
Merged revisions 59666-59679 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42754
diff
changeset
|
968 |
|
b91ca87e6f32
Merged revisions 59666-59679 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42754
diff
changeset
|
969 def testIsinf(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
970 self.assertTrue(math.isinf(float("inf"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
971 self.assertTrue(math.isinf(float("-inf"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
972 self.assertTrue(math.isinf(1E400)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
973 self.assertTrue(math.isinf(-1E400)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
974 self.assertFalse(math.isinf(float("nan"))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
975 self.assertFalse(math.isinf(0.)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53352
diff
changeset
|
976 self.assertFalse(math.isinf(1.)) |
|
44441
b91ca87e6f32
Merged revisions 59666-59679 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42754
diff
changeset
|
977 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
978 # RED_FLAG 16-Oct-2000 Tim |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
979 # While 2.0 is more consistent about exceptions than previous releases, it |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
980 # still fails this part of the test on some platforms. For now, we only |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
981 # *run* test_exceptions() in verbose mode, so that this isn't normally |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
982 # tested. |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
983 @unittest.skipUnless(verbose, 'requires verbose mode') |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
984 def test_exceptions(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
985 try: |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
986 x = math.exp(-1000000000) |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
987 except: |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
988 # mathmodule.c is failing to weed out underflows from libm, or |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
989 # we've got an fp format with huge dynamic range |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
990 self.fail("underflowing exp() should not have raised " |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
991 "an exception") |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
992 if x != 0: |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
993 self.fail("underflowing exp() should have returned 0") |
|
15170
09c7ac188ce2
Stop raising OverflowError on underflows reported by libm (errno==ERANGE and
Tim Peters <tim.peters@gmail.com>
parents:
13912
diff
changeset
|
994 |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
995 # If this fails, probably using a strict IEEE-754 conforming libm, and x |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
996 # is +Inf afterwards. But Python wants overflows detected by default. |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
997 try: |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
998 x = math.exp(1000000000) |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
999 except OverflowError: |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1000 pass |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1001 else: |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1002 self.fail("overflowing exp() didn't trigger OverflowError") |
|
15170
09c7ac188ce2
Stop raising OverflowError on underflows reported by libm (errno==ERANGE and
Tim Peters <tim.peters@gmail.com>
parents:
13912
diff
changeset
|
1003 |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1004 # If this fails, it could be a puzzle. One odd possibility is that |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1005 # mathmodule.c's macros are getting confused while comparing |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1006 # Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1007 # as a result (and so raising OverflowError instead). |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1008 try: |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1009 x = math.sqrt(-1.0) |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1010 except ValueError: |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1011 pass |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1012 else: |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
70576
diff
changeset
|
1013 self.fail("sqrt(-1) didn't raise ValueError") |
|
15247
dd0d199674f8
Test for math.* exceptional behavior only in verbose mode, so that the
Tim Peters <tim.peters@gmail.com>
parents:
15171
diff
changeset
|
1014 |
|
56091
b0e5105ff97b
Merged revisions 74925 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
55593
diff
changeset
|
1015 @requires_IEEE_754 |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1016 def test_testfile(self): |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1017 for id, fn, ar, ai, er, ei, flags in parse_testfile(test_file): |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1018 # Skip if either the input or result is complex, or if |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1019 # flags is nonempty |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1020 if ai != 0. or ei != 0. or flags: |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1021 continue |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1022 if fn in ['rect', 'polar']: |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1023 # no real versions of rect, polar |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1024 continue |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1025 func = getattr(math, fn) |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
1026 try: |
|
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
1027 result = func(ar) |
|
46616
3f2117d3271f
Make floating-point exception error messages slightly more verbose: in
Mark Dickinson <dickinsm@gmail.com>
parents:
46516
diff
changeset
|
1028 except ValueError as exc: |
|
3f2117d3271f
Make floating-point exception error messages slightly more verbose: in
Mark Dickinson <dickinsm@gmail.com>
parents:
46516
diff
changeset
|
1029 message = (("Unexpected ValueError: %s\n " + |
|
3f2117d3271f
Make floating-point exception error messages slightly more verbose: in
Mark Dickinson <dickinsm@gmail.com>
parents:
46516
diff
changeset
|
1030 "in test %s:%s(%r)\n") % (exc.args[0], id, fn, ar)) |
|
46505
63965327b3ef
Merged revisions 62386-62387,62389-62393,62396,62400-62402,62407,62409-62410,62412-62414,62418-62419 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46477
diff
changeset
|
1031 self.fail(message) |
|
47320
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
1032 except OverflowError: |
|
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
1033 message = ("Unexpected OverflowError in " + |
|
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
1034 "test %s:%s(%r)\n" % (id, fn, ar)) |
|
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
1035 self.fail(message) |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1036 self.ftest("%s:%s(%r)" % (id, fn, ar), result, er) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1037 |
|
66064
fdcaac0e010a
Issue #10337: skip tests of tanh() sign in test_math and test_cmath if tanh()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65026
diff
changeset
|
1038 @requires_IEEE_754 |
|
56270
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1039 def test_mtestfile(self): |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1040 fail_fmt = "{}:{}({!r}): expected {!r}, got {!r}" |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1041 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1042 failures = [] |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1043 for id, fn, arg, expected, flags in parse_mtestfile(math_testcases): |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1044 func = getattr(math, fn) |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1045 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1046 if 'invalid' in flags or 'divide-by-zero' in flags: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1047 expected = 'ValueError' |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1048 elif 'overflow' in flags: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1049 expected = 'OverflowError' |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1050 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1051 try: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1052 got = func(arg) |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1053 except ValueError: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1054 got = 'ValueError' |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1055 except OverflowError: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1056 got = 'OverflowError' |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1057 |
|
57660
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
1058 accuracy_failure = None |
|
56270
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1059 if isinstance(got, float) and isinstance(expected, float): |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1060 if math.isnan(expected) and math.isnan(got): |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1061 continue |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1062 if not math.isnan(expected) and not math.isnan(got): |
|
57758
b45ca11b9a3e
Merged revisions 76861 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57660
diff
changeset
|
1063 if fn == 'lgamma': |
|
b45ca11b9a3e
Merged revisions 76861 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57660
diff
changeset
|
1064 # we use a weaker accuracy test for lgamma; |
|
b45ca11b9a3e
Merged revisions 76861 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57660
diff
changeset
|
1065 # lgamma only achieves an absolute error of |
|
b45ca11b9a3e
Merged revisions 76861 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57660
diff
changeset
|
1066 # a few multiples of the machine accuracy, in |
|
b45ca11b9a3e
Merged revisions 76861 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57660
diff
changeset
|
1067 # general. |
|
57660
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
1068 accuracy_failure = acc_check(expected, got, |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
1069 rel_err = 5e-15, |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
1070 abs_err = 5e-15) |
|
62317
d064e8934f4d
Merged revisions 81967 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61599
diff
changeset
|
1071 elif fn == 'erfc': |
|
d064e8934f4d
Merged revisions 81967 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61599
diff
changeset
|
1072 # erfc has less-than-ideal accuracy for large |
|
d064e8934f4d
Merged revisions 81967 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61599
diff
changeset
|
1073 # arguments (x ~ 25 or so), mainly due to the |
|
d064e8934f4d
Merged revisions 81967 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61599
diff
changeset
|
1074 # error involved in computing exp(-x*x). |
|
d064e8934f4d
Merged revisions 81967 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61599
diff
changeset
|
1075 # |
|
d064e8934f4d
Merged revisions 81967 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61599
diff
changeset
|
1076 # XXX Would be better to weaken this test only |
|
d064e8934f4d
Merged revisions 81967 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61599
diff
changeset
|
1077 # for large x, instead of for all x. |
|
d064e8934f4d
Merged revisions 81967 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61599
diff
changeset
|
1078 accuracy_failure = ulps_check(expected, got, 2000) |
|
d064e8934f4d
Merged revisions 81967 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61599
diff
changeset
|
1079 |
|
57660
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
1080 else: |
|
57758
b45ca11b9a3e
Merged revisions 76861 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
57660
diff
changeset
|
1081 accuracy_failure = ulps_check(expected, got, 20) |
|
57660
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
1082 if accuracy_failure is None: |
|
56270
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1083 continue |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1084 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1085 if isinstance(got, str) and isinstance(expected, str): |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1086 if got == expected: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1087 continue |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1088 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1089 fail_msg = fail_fmt.format(id, fn, arg, expected, got) |
|
57660
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
1090 if accuracy_failure is not None: |
|
7cb73e7c176d
Merged revisions 76755 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56557
diff
changeset
|
1091 fail_msg += ' ({})'.format(accuracy_failure) |
|
56270
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1092 failures.append(fail_msg) |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1093 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1094 if failures: |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1095 self.fail('Failures in test_mtestfile:\n ' + |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1096 '\n '.join(failures)) |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1097 |
|
47b82fbdc2bb
Merged revisions 75117 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56091
diff
changeset
|
1098 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1099 def test_main(): |
|
46477
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1100 from doctest import DocFileSuite |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1101 suite = unittest.TestSuite() |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1102 suite.addTest(unittest.makeSuite(MathTests)) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1103 suite.addTest(DocFileSuite("ieee754.txt")) |
|
b69f443ef480
Merged revisions 62380,62382-62383 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45082
diff
changeset
|
1104 run_unittest(suite) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1105 |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1106 if __name__ == '__main__': |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1107 test_main() |
