1# ticket: 445 2 3def complex_double_cast(double x, double complex z): 4 """ 5 >>> complex_double_cast(1, 4-3j) 6 ((1+0j), (4-3j)) 7 """ 8 cdef double complex xx = <double complex>x 9 cdef double complex zz = <double complex>z 10 xx = x 11 return xx, zz 12 13def complex_double_int_cast(int x, int complex z): 14 """ 15 >>> complex_double_int_cast(2, 2 + 3j) 16 ((2+0j), (3+3j)) 17 """ 18 cdef double complex xx = <double complex>x 19 cdef double complex zz = <double complex>(z+1) 20 return xx, zz 21 22def complex_int_double_cast(double x, double complex z): 23 """ 24 >>> complex_int_double_cast(2.5, 2.5 + 3.5j) 25 ((2+0j), (2+3j)) 26 """ 27 cdef int complex xx = <int complex>x 28 cdef int complex zz = <int complex>z 29 return xx, zz 30 31cdef int side_effect_counter = 0 32 33cdef double complex side_effect(double complex z): 34 global side_effect_counter 35 side_effect_counter += 1 36 print "side effect", side_effect_counter, z 37 return z 38 39def test_side_effect(int complex z): 40 """ 41 >>> test_side_effect(5) 42 side effect 1 (5+0j) 43 (5+0j) 44 >>> test_side_effect(3-4j) 45 side effect 2 (3-4j) 46 (3-4j) 47 """ 48 cdef int complex zz = <int complex>side_effect(z) 49 return zz 50