gh-122681: remove m_atan2()/c_atan2() helpers (#122715)

This commit is contained in:
Sergey B Kirpichev 2024-08-17 11:18:16 +03:00 committed by GitHub
parent e6d5ff55d0
commit 19be0ee931
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 3 additions and 42 deletions

View File

@ -23,42 +23,3 @@ _Py_log1p(double x)
}
#define m_log1p _Py_log1p
/*
wrapper for atan2 that deals directly with special cases before
delegating to the platform libm for the remaining cases. This
is necessary to get consistent behaviour across platforms.
Windows, FreeBSD and alpha Tru64 are amongst platforms that don't
always follow C99. Windows screws up atan2 for inf and nan, and
alpha Tru64 5.1 doesn't follow C99 for atan2(0., 0.).
*/
static double
_Py_atan2(double y, double x)
{
if (isnan(x) || isnan(y))
return Py_NAN;
if (isinf(y)) {
if (isinf(x)) {
if (copysign(1., x) == 1.)
/* atan2(+-inf, +inf) == +-pi/4 */
return copysign(0.25*Py_MATH_PI, y);
else
/* atan2(+-inf, -inf) == +-pi*3/4 */
return copysign(0.75*Py_MATH_PI, y);
}
/* atan2(+-inf, x) == +-pi/2 for finite x */
return copysign(0.5*Py_MATH_PI, y);
}
if (isinf(x) || y == 0.) {
if (copysign(1., x) == 1.)
/* atan2(+-y, +inf) = atan2(+-0, +x) = +-0. */
return copysign(0., y);
else
/* atan2(+-y, -inf) = atan2(+-0., -x) = +-pi. */
return copysign(Py_MATH_PI, y);
}
return atan2(y, x);
}
#define m_atan2 _Py_atan2

View File

@ -925,7 +925,7 @@ cmath_phase_impl(PyObject *module, Py_complex z)
double phi;
errno = 0;
phi = m_atan2(z.imag, z.real); /* should not cause any exception */
phi = atan2(z.imag, z.real); /* should not cause any exception */
if (errno != 0)
return math_error();
else
@ -950,7 +950,7 @@ cmath_polar_impl(PyObject *module, Py_complex z)
double r, phi;
errno = 0;
phi = m_atan2(z.imag, z.real); /* should not cause any exception */
phi = atan2(z.imag, z.real); /* should not cause any exception */
r = _Py_c_abs(z); /* sets errno to ERANGE on overflow */
if (errno != 0)
return math_error();

View File

@ -1066,7 +1066,7 @@ FUNC1(atan, atan, 0,
"atan($module, x, /)\n--\n\n"
"Return the arc tangent (measured in radians) of x.\n\n"
"The result is between -pi/2 and pi/2.")
FUNC2(atan2, m_atan2,
FUNC2(atan2, atan2,
"atan2($module, y, x, /)\n--\n\n"
"Return the arc tangent (measured in radians) of y/x.\n\n"
"Unlike atan(y/x), the signs of both x and y are considered.")