mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
gh-121268: Remove workarounds for non-IEEE 754 systems in cmath (#122716)
As now building Python now requires support of IEEE 754 floating point numbers.
This commit is contained in:
parent
2f5c3b09e4
commit
b6e745a27e
2 changed files with 4 additions and 14 deletions
|
@ -0,0 +1 @@
|
||||||
|
Remove workarounds for non-IEEE 754 systems in :mod:`cmath`.
|
|
@ -185,15 +185,8 @@ cmath_acos_impl(PyObject *module, Py_complex z)
|
||||||
if (fabs(z.real) > CM_LARGE_DOUBLE || fabs(z.imag) > CM_LARGE_DOUBLE) {
|
if (fabs(z.real) > CM_LARGE_DOUBLE || fabs(z.imag) > CM_LARGE_DOUBLE) {
|
||||||
/* avoid unnecessary overflow for large arguments */
|
/* avoid unnecessary overflow for large arguments */
|
||||||
r.real = atan2(fabs(z.imag), z.real);
|
r.real = atan2(fabs(z.imag), z.real);
|
||||||
/* split into cases to make sure that the branch cut has the
|
|
||||||
correct continuity on systems with unsigned zeros */
|
|
||||||
if (z.real < 0.) {
|
|
||||||
r.imag = -copysign(log(hypot(z.real/2., z.imag/2.)) +
|
r.imag = -copysign(log(hypot(z.real/2., z.imag/2.)) +
|
||||||
M_LN2*2., z.imag);
|
M_LN2*2., z.imag);
|
||||||
} else {
|
|
||||||
r.imag = copysign(log(hypot(z.real/2., z.imag/2.)) +
|
|
||||||
M_LN2*2., -z.imag);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
s1.real = 1.-z.real;
|
s1.real = 1.-z.real;
|
||||||
s1.imag = -z.imag;
|
s1.imag = -z.imag;
|
||||||
|
@ -356,11 +349,7 @@ cmath_atanh_impl(PyObject *module, Py_complex z)
|
||||||
*/
|
*/
|
||||||
h = hypot(z.real/2., z.imag/2.); /* safe from overflow */
|
h = hypot(z.real/2., z.imag/2.); /* safe from overflow */
|
||||||
r.real = z.real/4./h/h;
|
r.real = z.real/4./h/h;
|
||||||
/* the two negations in the next line cancel each other out
|
r.imag = copysign(Py_MATH_PI/2., z.imag);
|
||||||
except when working with unsigned zeros: they're there to
|
|
||||||
ensure that the branch cut has the correct continuity on
|
|
||||||
systems that don't support signed zeros */
|
|
||||||
r.imag = -copysign(Py_MATH_PI/2., -z.imag);
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
} else if (z.real == 1. && ay < CM_SQRT_DBL_MIN) {
|
} else if (z.real == 1. && ay < CM_SQRT_DBL_MIN) {
|
||||||
/* C99 standard says: atanh(1+/-0.) should be inf +/- 0i */
|
/* C99 standard says: atanh(1+/-0.) should be inf +/- 0i */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue