#347 fix: Make numpy.complexX_t use Cython complex
authorDag Sverre Seljebotn <dagss@student.matnat.uio.no>
Wed, 29 Jul 2009 20:10:31 +0000 (22:10 +0200)
committerDag Sverre Seljebotn <dagss@student.matnat.uio.no>
Wed, 29 Jul 2009 20:10:31 +0000 (22:10 +0200)
Cython/Includes/numpy.pxd
tests/run/numpy_test.pyx

index ea8cde1861b899836f7d2f315e005d2447648d34..3fb343d8dafa7d2f134e2e2023d3a39ca1ae8157 100644 (file)
@@ -665,8 +665,8 @@ ctypedef npy_float64    float64_t
 #ctypedef npy_float80    float80_t
 #ctypedef npy_float128   float128_t
 
-ctypedef npy_complex64    complex64_t
-ctypedef npy_complex128   complex128_t
+ctypedef float complex  complex64_t
+ctypedef double complex complex128_t
 
 # The int types are mapped a bit surprising --
 # numpy.int corresponds to 'l' and numpy.long to 'q'
index a5cf19d0de11747f4b36dd78b1d5d4c39fbf4c60..ec3909c40a5d0f54d1575a7049b25025ab4aab74 100644 (file)
@@ -194,6 +194,11 @@ try:
     Traceback (most recent call last):
         ...
     ValueError: Item size of buffer (1 byte) does not match size of 'int' (4 bytes)
+
+    >>> test_complextypes()
+    1,1
+    1,1
+    8,16
     
 """
 except:
@@ -376,3 +381,15 @@ def test_unpacked_align(np.ndarray[UnpackedStruct] arr):
     arr[0].a = 22
     arr[0].b = 23    
     return repr(arr).replace('<', '!').replace('>', '!')
+
+def test_complextypes():
+    cdef np.complex64_t x64 = 1, y64 = 1j
+    cdef np.complex128_t x128 = 1, y128 = 1j
+    x64 = x64 + y64
+    print "%.0f,%.0f" % (x64.real, x64.imag)
+    x128 = x128 + y128
+    print "%.0f,%.0f" % (x128.real, x128.imag)
+    print "%d,%d" % (sizeof(x64), sizeof(x128))
+
+
+