mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Patch #871657: Set EDOM for `nan' return values on FreeBSD and OpenBSD.
This fixes a problem that math.sqrt(-1) doesn't raise math.error.
This commit is contained in:
parent
39a0f04421
commit
77d9a3effa
2 changed files with 25 additions and 12 deletions
|
@ -57,7 +57,7 @@ math_1(PyObject *args, double (*func) (double), char *argsfmt)
|
|||
PyFPE_START_PROTECT("in math_1", return 0)
|
||||
x = (*func)(x);
|
||||
PyFPE_END_PROTECT(x)
|
||||
Py_SET_ERANGE_IF_OVERFLOW(x);
|
||||
Py_SET_ERRNO_ON_MATH_ERROR(x);
|
||||
if (errno && is_error(x))
|
||||
return NULL;
|
||||
else
|
||||
|
@ -74,7 +74,7 @@ math_2(PyObject *args, double (*func) (double, double), char *argsfmt)
|
|||
PyFPE_START_PROTECT("in math_2", return 0)
|
||||
x = (*func)(x, y);
|
||||
PyFPE_END_PROTECT(x)
|
||||
Py_SET_ERANGE_IF_OVERFLOW(x);
|
||||
Py_SET_ERRNO_ON_MATH_ERROR(x);
|
||||
if (errno && is_error(x))
|
||||
return NULL;
|
||||
else
|
||||
|
@ -143,7 +143,7 @@ math_frexp(PyObject *self, PyObject *args)
|
|||
return NULL;
|
||||
errno = 0;
|
||||
x = frexp(x, &i);
|
||||
Py_SET_ERANGE_IF_OVERFLOW(x);
|
||||
Py_SET_ERRNO_ON_MATH_ERROR(x);
|
||||
if (errno && is_error(x))
|
||||
return NULL;
|
||||
else
|
||||
|
@ -168,7 +168,7 @@ math_ldexp(PyObject *self, PyObject *args)
|
|||
PyFPE_START_PROTECT("ldexp", return 0)
|
||||
x = ldexp(x, exp);
|
||||
PyFPE_END_PROTECT(x)
|
||||
Py_SET_ERANGE_IF_OVERFLOW(x);
|
||||
Py_SET_ERRNO_ON_MATH_ERROR(x);
|
||||
if (errno && is_error(x))
|
||||
return NULL;
|
||||
else
|
||||
|
@ -186,7 +186,7 @@ math_modf(PyObject *self, PyObject *args)
|
|||
return NULL;
|
||||
errno = 0;
|
||||
x = modf(x, &y);
|
||||
Py_SET_ERANGE_IF_OVERFLOW(x);
|
||||
Py_SET_ERRNO_ON_MATH_ERROR(x);
|
||||
if (errno && is_error(x))
|
||||
return NULL;
|
||||
else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue