diff options
-rw-r--r-- | Modules/cmathmodule.c | 20 | ||||
-rw-r--r-- | Modules/mathmodule.c | 18 | ||||
-rw-r--r-- | Objects/complexobject.c | 18 | ||||
-rw-r--r-- | README | 5 | ||||
-rw-r--r-- | acconfig.h | 2 | ||||
-rw-r--r-- | pyconfig.h.in | 2 |
6 files changed, 9 insertions, 56 deletions
diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c index 34b0ce8..adf76b8 100644 --- a/Modules/cmathmodule.c +++ b/Modules/cmathmodule.c @@ -8,22 +8,6 @@ #define M_PI (3.141592653589793239) #endif -#ifdef SCO_ATAN2_BUG -/* - * UnixWare 7+ is known to have a bug in atan2 that will return PI instead - * of ZERO (0) if the first argument is ZERO(0). - */ -static double atan2_sco(double x, double y) -{ - if (x == 0.0) - return (double)0.0; - return atan2(x, y); -} -#define ATAN2 atan2_sco -#else -#define ATAN2 atan2 -#endif - /* First, the C functions that do the real work */ /* constants */ @@ -175,7 +159,7 @@ c_log(Py_complex x) { Py_complex r; double l = hypot(x.real,x.imag); - r.imag = ATAN2(x.imag, x.real); + r.imag = atan2(x.imag, x.real); r.real = log(l); return r; } @@ -191,7 +175,7 @@ c_log10(Py_complex x) { Py_complex r; double l = hypot(x.real,x.imag); - r.imag = ATAN2(x.imag, x.real)/log(10.); + r.imag = atan2(x.imag, x.real)/log(10.); r.real = log10(l); return r; } diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index 379fecb..4609f60 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -12,22 +12,6 @@ extern double modf (double, double *); #endif /* __STDC__ */ #endif /* _MSC_VER */ -#ifdef SCO_ATAN2_BUG -/* - * UnixWare 7+ is known to have a bug in atan2 that will return PI instead - * of ZERO (0) if the first argument is ZERO(0). - */ -static double atan2_sco(double x, double y) -{ - if (x == 0.0) - return (double)0.0; - return atan2(x, y); -} -#define ATAN2 atan2_sco -#else -#define ATAN2 atan2 -#endif - /* Call is_error when errno != 0, and where x is the result libm * returned. is_error will usually set up an exception and return * true (1), but may return false (0) without setting up an exception. @@ -115,7 +99,7 @@ FUNC1(asin, asin, "asin(x)\n\nReturn the arc sine (measured in radians) of x.") FUNC1(atan, atan, "atan(x)\n\nReturn the arc tangent (measured in radians) of x.") -FUNC2(atan2, ATAN2, +FUNC2(atan2, atan2, "atan2(y, x)\n\nReturn the arc tangent (measured in radians) of y/x.\n" "Unlike atan(y/x), the signs of both x and y are considered.") FUNC1(ceil, ceil, diff --git a/Objects/complexobject.c b/Objects/complexobject.c index dde6449..7404993 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -26,22 +26,6 @@ #define PREC_REPR 17 #define PREC_STR 12 -#ifdef SCO_ATAN2_BUG -/* - * UnixWare 7+ is known to have a bug in atan2 that will return PI instead - * of ZERO (0) if the first argument is ZERO(0). - */ -static double atan2_sco(double x, double y) -{ - if (x == 0.0) - return (double)0.0; - return atan2(x, y); -} -#define ATAN2 atan2_sco -#else -#define ATAN2 atan2 -#endif - /* elementary operations on complex numbers */ static Py_complex c_1 = {1., 0.}; @@ -154,7 +138,7 @@ c_pow(Py_complex a, Py_complex b) else { vabs = hypot(a.real,a.imag); len = pow(vabs,b.real); - at = ATAN2(a.imag, a.real); + at = atan2(a.imag, a.real); phase = at*b.real; if (b.imag != 0.0) { len /= exp(at*b.imag); @@ -296,6 +296,11 @@ SCO: The following apply to SCO 3 only; Python builds out of the box LIBS=' -lsocket -lcrypt_i' +UnixWare: There are known bugs in the math library of the system, as well as + problems in the handling of threads (calling fork in one + thread may interrupt system calls in others). Therefore, test_math and + tests involving threads will fail until those problems are fixed. + SunOS 4.x: When using the SunPro C compiler, you may want to use the '-Xa' option instead of '-Xc', to enable some needed non-ANSI Sunisms. @@ -245,8 +245,6 @@ /* Define the macros needed if on a UnixWare 7.x system. */ #if defined(__USLC__) && defined(__SCO_VERSION__) -#define SCO_ACCEPT_BUG /* Use workaround for UnixWare accept() bug */ -#define SCO_ATAN2_BUG /* Use workaround for UnixWare atan2() bug */ #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ #endif diff --git a/pyconfig.h.in b/pyconfig.h.in index 662955f..4ed22eb 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -725,8 +725,6 @@ /* Define the macros needed if on a UnixWare 7.x system. */ #if defined(__USLC__) && defined(__SCO_VERSION__) -#define SCO_ACCEPT_BUG /* Use workaround for UnixWare accept() bug */ -#define SCO_ATAN2_BUG /* Use workaround for UnixWare atan2() bug */ #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ #endif |