MSVC: fixes for complex types
authorLisandro Dalcin <dalcinl@gmail.com>
Mon, 13 Dec 2010 23:10:55 +0000 (20:10 -0300)
committerLisandro Dalcin <dalcinl@gmail.com>
Mon, 13 Dec 2010 23:10:55 +0000 (20:10 -0300)
Cython/Compiler/PyrexTypes.py
tests/run/complex_numbers_T305.pyx

index 38df20ddf4dd55353f1cfeab2a4f411b505e4b6b..bde735672781587aad47243c8d703258c62256a0 100755 (executable)
@@ -1371,10 +1371,10 @@ impl="""
     }
     #if %(is_float)s
         static CYTHON_INLINE %(real_type)s __Pyx_c_abs%(m)s(%(type)s z) {
-          #if HAVE_HYPOT
-            return hypot%(m)s(z.real, z.imag);
-          #else
+          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
             return sqrt%(m)s(z.real*z.real + z.imag*z.imag);
+          #else
+            return hypot%(m)s(z.real, z.imag);
           #endif
         }
         static CYTHON_INLINE %(type)s __Pyx_c_pow%(m)s(%(type)s a, %(type)s b) {
index f743330dca571b16a4d9a30e25ae92d8c8ed14a6..9bcafe74dc12035819e0139ba157143ba21a6539 100644 (file)
@@ -28,8 +28,8 @@ def test_pow(double complex z, double complex w, tol=None):
     Various implementations produce slightly different results...
 
     >>> a = complex(3, 1)
-    >>> test_pow(a, 1)
-    (3+1j)
+    >>> test_pow(a, 1, 1e-15)
+    True
     >>> test_pow(a, 2, 1e-15)
     True
     >>> test_pow(a, a, 1e-15)
@@ -48,7 +48,7 @@ def test_int_pow(double complex z, int n, tol=None):
     [True, True, True, True, True, True, True, True, True]
     >>> [test_int_pow(complex(0, 2), k, 1e-15) for k in range(-4, 5)]
     [True, True, True, True, True, True, True, True, True]
-    >>> [test_int_pow(complex(2, 0.5), k, 1e-15) for k in range(0, 10)]
+    >>> [test_int_pow(complex(2, 0.5), k, 1e-14) for k in range(0, 10)]
     [True, True, True, True, True, True, True, True, True, True]
     """
     if tol is None: