forked from adafruit/circuitpython
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmath_domain_special.py
37 lines (33 loc) · 946 Bytes
/
math_domain_special.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Tests domain errors in special math functions
try:
import math
math.erf
except (ImportError, AttributeError):
print("SKIP")
raise SystemExit
inf = float("inf")
nan = float("nan")
# single argument functions
for name, f, args in (
("expm1", math.exp, ()),
("log2", math.log2, (-1, 0)),
("log10", math.log10, (-1, 0)),
("sinh", math.sinh, ()),
("cosh", math.cosh, ()),
("tanh", math.tanh, ()),
("asinh", math.asinh, ()),
("acosh", math.acosh, (-1, 0.9, 1)),
("atanh", math.atanh, (-1, 1)),
("erf", math.erf, ()),
("erfc", math.erfc, ()),
("gamma", math.gamma, (-2, -1, 0, 1)),
("lgamma", math.lgamma, (-2, -1, 0, 1)),
):
for x in args + (inf, -inf, nan):
try:
ans = "%.4f" % f(x)
except ValueError:
ans = "ValueError"
except OverflowError:
ans = "OverflowError"
print("%s(%.4f) = %s" % (name, x, ans))