diff Modules/mathmodule.c @ 19730:2e6da2dd2ab8 legacy-trunk

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.
author Martin v. Löwis <martin@v.loewis.de>
date Wed, 05 Sep 2001 14:45:54 +0000
parents fb2d83aaff68
children 35b6a1d0b1e0
line wrap: on
line diff
--- a/Modules/mathmodule.c	Wed Sep 05 14:38:48 2001 +0000
+++ b/Modules/mathmodule.c	Wed Sep 05 14:45:54 2001 +0000
@@ -31,6 +31,22 @@
 #define CHECK(x) /* Don't know how to check */
 #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
+
 /* 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 +131,7 @@
       "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,