diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2001-09-05 14:45:54 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2001-09-05 14:45:54 (GMT) |
commit | 655c9557f6e0da64527cb6f97da65d4b59232c29 (patch) | |
tree | 1687a38473130b51b1e762a50fea8104c69461f5 /Modules/cmathmodule.c | |
parent | 0ace326ed2ec73dfa515c89ad06fcddd6fafa4ce (diff) | |
download | cpython-655c9557f6e0da64527cb6f97da65d4b59232c29.zip cpython-655c9557f6e0da64527cb6f97da65d4b59232c29.tar.gz cpython-655c9557f6e0da64527cb6f97da65d4b59232c29.tar.bz2 |
Patch #453627: Define the following macros when compiling on a UnixWare 7.x system:
SCO_ATAN2_BUG, SCO_ACCEPT_BUG, and STRICT_SYSV_CURSES.
Work aroudn a bug in the SCO UnixWare atan2() implementation.
Diffstat (limited to 'Modules/cmathmodule.c')
-rw-r--r-- | Modules/cmathmodule.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c index 521d3aa..2cef27c 100644 --- a/Modules/cmathmodule.c +++ b/Modules/cmathmodule.c @@ -21,6 +21,22 @@ #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 */ @@ -172,7 +188,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; } @@ -188,7 +204,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; } |