37 lines
938 B
Python
37 lines
938 B
Python
# 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 = f(x)
|
|
print('%.4f' % ans)
|
|
except ValueError:
|
|
print(name, 'ValueError')
|
|
except OverflowError:
|
|
print(name, 'OverflowError')
|