cython
1# ticket: t446
2
3import cython
4
5cdef extern from *:
6"""
7#if defined _MSC_VER && defined __cplusplus
8#define CYTHON_CCOMPLEX 0
9#endif
10"""
11
12
13def test_arith(int complex a, int complex b):
14"""
15>>> test_arith(4, 2)
16((-4+0j), (6+0j), (2+0j), (8+0j))
17>>> test_arith(6+9j, 3j)
18((-6-9j), (6+12j), (6+6j), (-27+18j))
19>>> test_arith(29+11j, 5+7j)
20((-29-11j), (34+18j), (24+4j), (68+258j))
21"""
22return -a, a+b, a-b, a*b
23
24@cython.cdivision(False)
25def test_div_by_zero(long complex z):
26"""
27>>> test_div_by_zero(4j)
28-25j
29>>> test_div_by_zero(0)
30Traceback (most recent call last):
31...
32ZeroDivisionError: float division
33"""
34return 100/z
35
36def test_coercion(int a, long b, int complex c):
37"""
38>>> test_coercion(1, -2, 3-3j)
39(1+0j)
40(-2+0j)
41(3-3j)
42(5-6j)
43"""
44cdef double complex z
45z = a; print z
46z = b; print z
47z = c; print z
48return z + a + b + c
49
50
51def test_conjugate(long complex z):
52"""
53>>> test_conjugate(2+3j)
54(2-3j)
55"""
56return z.conjugate()
57
58def test_conjugate2(short complex z):
59"""
60>>> test_conjugate2(2+3j)
61(2-3j)
62"""
63return z.conjugate()
64
65def test_conjugate3(long long complex z):
66"""
67>>> test_conjugate3(2+3j)
68(2-3j)
69"""
70return z.conjugate()
71