From: Lisandro Dalcin Date: Mon, 13 Dec 2010 23:10:55 +0000 (-0300) Subject: MSVC: fixes for complex types X-Git-Tag: 0.14.1rc0~13^2~31 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=29efcd449d933cab1405b98530e6272dea683987;p=cython.git MSVC: fixes for complex types --- diff --git a/Cython/Compiler/PyrexTypes.py b/Cython/Compiler/PyrexTypes.py index 38df20dd..bde73567 100755 --- a/Cython/Compiler/PyrexTypes.py +++ b/Cython/Compiler/PyrexTypes.py @@ -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) { diff --git a/tests/run/complex_numbers_T305.pyx b/tests/run/complex_numbers_T305.pyx index f743330d..9bcafe74 100644 --- a/tests/run/complex_numbers_T305.pyx +++ b/tests/run/complex_numbers_T305.pyx @@ -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: