summaryrefslogtreecommitdiffstatshomepage
path: root/tests/float/complex1.py
blob: a6038de04a7d302b44e3d2541905a388eda483c6 (plain) (blame)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# test basic complex number functionality

# constructor
print(complex(1))
print(complex(1.2))
print(complex(1.2j))
print(complex("1"))
print(complex("1.2"))
print(complex("1.2j"))
print(complex(1, 2))
print(complex(1j, 2j))

# unary ops
print(bool(1j))
print(+(1j))
print(-(1 + 2j))

# binary ops
print(1j + False)
print(1j + True)
print(1j + 2)
print(1j + 2j)
print(1j - 2)
print(1j - 2j)
print(1j * 2)
print(1j * 2j)
print(1j / 2)
print((1j / 2j).real)
print(1j / (1 + 2j))
ans = 0j ** 0; print("%.5g %.5g" % (ans.real, ans.imag))
ans = 0j ** 1; print("%.5g %.5g" % (ans.real, ans.imag))
ans = 0j ** 0j; print("%.5g %.5g" % (ans.real, ans.imag))
ans = 1j ** 2.5; print("%.5g %.5g" % (ans.real, ans.imag))
ans = 1j ** 2.5j; print("%.5g %.5g" % (ans.real, ans.imag))

# comparison
print(1j == 1)
print(1j == 1j)

# builtin abs
print(abs(1j))
print("%.5g" % abs(1j + 2))

# builtin hash
print(hash(1 + 0j))
print(type(hash(1j)))

# float on lhs should delegate to complex
print(1.2 + 3j)

# check printing of inf/nan
print(float('nan') * 1j)
print(float('inf') * (1 + 1j))
print(float('-inf') * (1 + 1j))

# can't assign to attributes
try:
    (1j).imag = 0
except AttributeError:
    print('AttributeError')

# can't convert rhs to complex
try:
    1j + []
except TypeError:
    print("TypeError")

# unsupported unary op
try:
    ~(1j)
except TypeError:
    print("TypeError")

# unsupported binary op
try:
    1j // 2
except TypeError:
    print("TypeError")

# unsupported binary op
try:
    1j < 2j
except TypeError:
    print("TypeError")

#small int on LHS, complex on RHS, unsupported op
try:
    print(1 | 1j)
except TypeError:
    print('TypeError')

# zero division
try:
    1j / 0
except ZeroDivisionError:
    print("ZeroDivisionError")

# zero division via power
try:
    0j ** -1
except ZeroDivisionError:
    print("ZeroDivisionError")
try:
    0j ** 1j
except ZeroDivisionError:
    print("ZeroDivisionError")