mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-45412: Add _PY_SHORT_FLOAT_REPR macro (GH-31171)
Remove the HAVE_PY_SET_53BIT_PRECISION macro (moved to the internal C API). * Move HAVE_PY_SET_53BIT_PRECISION macro to pycore_pymath.h. * Replace PY_NO_SHORT_FLOAT_REPR macro with _PY_SHORT_FLOAT_REPR macro which is always defined. gcc -Wundef emits a warning when using _PY_SHORT_FLOAT_REPR but the macro is not defined, if pycore_pymath.h include was forgotten.
This commit is contained in:
parent
375a56bd40
commit
9bbdde2180
11 changed files with 104 additions and 96 deletions
|
@ -7,7 +7,8 @@
|
|||
#endif
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_dtoa.h"
|
||||
#include "pycore_pymath.h" // _PY_SHORT_FLOAT_REPR
|
||||
#include "pycore_dtoa.h" // _Py_dg_stdnan()
|
||||
/* we need DBL_MAX, DBL_MIN, DBL_EPSILON, DBL_MANT_DIG and FLT_RADIX from
|
||||
float.h. We assume that FLT_RADIX is either 2 or 16. */
|
||||
#include <float.h>
|
||||
|
@ -89,14 +90,14 @@ else {
|
|||
|
||||
/* Constants cmath.inf, cmath.infj, cmath.nan, cmath.nanj.
|
||||
cmath.nan and cmath.nanj are defined only when either
|
||||
PY_NO_SHORT_FLOAT_REPR is *not* defined (which should be
|
||||
_PY_SHORT_FLOAT_REPR is 1 (which should be
|
||||
the most common situation on machines using an IEEE 754
|
||||
representation), or Py_NAN is defined. */
|
||||
|
||||
static double
|
||||
m_inf(void)
|
||||
{
|
||||
#ifndef PY_NO_SHORT_FLOAT_REPR
|
||||
#if _PY_SHORT_FLOAT_REPR == 1
|
||||
return _Py_dg_infinity(0);
|
||||
#else
|
||||
return Py_HUGE_VAL;
|
||||
|
@ -112,12 +113,12 @@ c_infj(void)
|
|||
return r;
|
||||
}
|
||||
|
||||
#if !defined(PY_NO_SHORT_FLOAT_REPR) || defined(Py_NAN)
|
||||
#if _PY_SHORT_FLOAT_REPR == 1 || defined(Py_NAN)
|
||||
|
||||
static double
|
||||
m_nan(void)
|
||||
{
|
||||
#ifndef PY_NO_SHORT_FLOAT_REPR
|
||||
#if _PY_SHORT_FLOAT_REPR == 1
|
||||
return _Py_dg_stdnan(0);
|
||||
#else
|
||||
return Py_NAN;
|
||||
|
@ -1281,7 +1282,7 @@ cmath_exec(PyObject *mod)
|
|||
PyComplex_FromCComplex(c_infj())) < 0) {
|
||||
return -1;
|
||||
}
|
||||
#if !defined(PY_NO_SHORT_FLOAT_REPR) || defined(Py_NAN)
|
||||
#if _PY_SHORT_FLOAT_REPR == 1 || defined(Py_NAN)
|
||||
if (PyModule_AddObject(mod, "nan", PyFloat_FromDouble(m_nan())) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
@ -1426,4 +1427,4 @@ PyMODINIT_FUNC
|
|||
PyInit_cmath(void)
|
||||
{
|
||||
return PyModuleDef_Init(&cmathmodule);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue