File: math_domain.py

package info (click to toggle)
giac 1.9.0.93%2Bdfsg2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 117,732 kB
  • sloc: cpp: 404,272; ansic: 205,462; python: 30,548; javascript: 28,788; makefile: 17,997; yacc: 2,690; lex: 2,464; sh: 705; perl: 314; lisp: 216; asm: 62; java: 41; xml: 36; sed: 16; csh: 7; pascal: 6
file content (51 lines) | stat: -rw-r--r-- 1,426 bytes parent folder | download | duplicates (3)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Tests domain errors in math functions

try:
    import math
except ImportError:
    print("SKIP")
    raise SystemExit

inf = float('inf')
nan = float('nan')

# single argument functions
for name, f, args in (
    ('fabs', math.fabs, ()),
    ('ceil', math.ceil, ()),
    ('floor', math.floor, ()),
    ('trunc', math.trunc, ()),
    ('sqrt', math.sqrt, (-1, 0)),
    ('exp', math.exp, ()),
    ('sin', math.sin, ()),
    ('cos', math.cos, ()),
    ('tan', math.tan, ()),
    ('asin', math.asin, (-1.1, 1, 1.1)),
    ('acos', math.acos, (-1.1, 1, 1.1)),
    ('atan', math.atan, ()),
    ('ldexp', lambda x: math.ldexp(x, 0), ()),
    ('radians', math.radians, ()),
    ('degrees', math.degrees, ()),
    ):
    for x in args + (inf, nan):
        try:
            ans = f(x)
            print('%.4f' % ans)
        except ValueError:
            print(name, 'ValueError')
        except OverflowError:
            print(name, 'OverflowError')

# double argument functions
for name, f, args in (
    ('pow', math.pow, ((0, 2), (-1, 2), (0, -1), (-1, 2.3))),
    ('fmod', math.fmod, ((1.2, inf), (1.2, 0), (inf, 1.2))),
    ('atan2', math.atan2, ((0, 0),)),
    ('copysign', math.copysign, ()),
    ):
    for x in args + ((0, inf), (inf, 0), (inf, inf), (inf, nan), (nan, inf), (nan, nan)):
        try:
            ans = f(*x)
            print('%.4f' % ans)
        except ValueError:
            print(name, 'ValueError')