mirror of
https://github.com/python/cpython.git
synced 2025-10-18 04:38:07 +00:00
Issue #23185: add math.inf and math.nan constants.
This commit is contained in:
parent
845b14cc8e
commit
a5d0c7c2fd
5 changed files with 69 additions and 1 deletions
|
@ -383,6 +383,22 @@ Constants
|
||||||
The mathematical constant e = 2.718281..., to available precision.
|
The mathematical constant e = 2.718281..., to available precision.
|
||||||
|
|
||||||
|
|
||||||
|
.. data:: inf
|
||||||
|
|
||||||
|
A floating-point positive infinity. (For negative infinity, use
|
||||||
|
``-math.inf``.) Equivalent to the output of ``float('inf')``.
|
||||||
|
|
||||||
|
.. versionadded:: 3.5
|
||||||
|
|
||||||
|
|
||||||
|
.. data:: nan
|
||||||
|
|
||||||
|
A floating-point "not a number" (NaN) value. Equivalent to the output of
|
||||||
|
``float('nan')``.
|
||||||
|
|
||||||
|
.. versionadded:: 3.5
|
||||||
|
|
||||||
|
|
||||||
.. impl-detail::
|
.. impl-detail::
|
||||||
|
|
||||||
The :mod:`math` module consists mostly of thin wrappers around the platform C
|
The :mod:`math` module consists mostly of thin wrappers around the platform C
|
||||||
|
|
|
@ -243,6 +243,12 @@ re
|
||||||
* Now unmatched groups are replaced with empty strings in :func:`re.sub`
|
* Now unmatched groups are replaced with empty strings in :func:`re.sub`
|
||||||
and :func:`re.subn`. (Contributed by Serhiy Storchaka in :issue:`1519638`.)
|
and :func:`re.subn`. (Contributed by Serhiy Storchaka in :issue:`1519638`.)
|
||||||
|
|
||||||
|
math
|
||||||
|
----
|
||||||
|
|
||||||
|
* :data:`math.inf` and :data:`math.nan` constants added. (Contributed by Mark
|
||||||
|
Dickinson in :issue:`23185`.)
|
||||||
|
|
||||||
shutil
|
shutil
|
||||||
------
|
------
|
||||||
|
|
||||||
|
|
|
@ -983,6 +983,17 @@ class MathTests(unittest.TestCase):
|
||||||
self.assertFalse(math.isinf(0.))
|
self.assertFalse(math.isinf(0.))
|
||||||
self.assertFalse(math.isinf(1.))
|
self.assertFalse(math.isinf(1.))
|
||||||
|
|
||||||
|
@requires_IEEE_754
|
||||||
|
def test_nan_constant(self):
|
||||||
|
self.assertTrue(math.isnan(math.nan))
|
||||||
|
|
||||||
|
@requires_IEEE_754
|
||||||
|
def test_inf_constant(self):
|
||||||
|
self.assertTrue(math.isinf(math.inf))
|
||||||
|
self.assertGreater(math.inf, 0.0)
|
||||||
|
self.assertEqual(math.inf, float("inf"))
|
||||||
|
self.assertEqual(-math.inf, float("-inf"))
|
||||||
|
|
||||||
# RED_FLAG 16-Oct-2000 Tim
|
# RED_FLAG 16-Oct-2000 Tim
|
||||||
# While 2.0 is more consistent about exceptions than previous releases, it
|
# While 2.0 is more consistent about exceptions than previous releases, it
|
||||||
# still fails this part of the test on some platforms. For now, we only
|
# still fails this part of the test on some platforms. For now, we only
|
||||||
|
|
|
@ -203,6 +203,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #23185: Add math.inf and math.nan constants.
|
||||||
|
|
||||||
- Issue #23186: Add ssl.SSLObject.shared_ciphers() and
|
- Issue #23186: Add ssl.SSLObject.shared_ciphers() and
|
||||||
ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at
|
ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at
|
||||||
handshake.
|
handshake.
|
||||||
|
|
|
@ -223,6 +223,35 @@ lanczos_sum(double x)
|
||||||
return num/den;
|
return num/den;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Constant for +infinity, generated in the same way as float('inf'). */
|
||||||
|
|
||||||
|
static double
|
||||||
|
m_inf(void)
|
||||||
|
{
|
||||||
|
#ifndef PY_NO_SHORT_FLOAT_REPR
|
||||||
|
return _Py_dg_infinity(0);
|
||||||
|
#else
|
||||||
|
return Py_HUGE_VAL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Constant nan value, generated in the same way as float('nan'). */
|
||||||
|
/* We don't currently assume that Py_NAN is defined everywhere. */
|
||||||
|
|
||||||
|
#if !defined(PY_NO_SHORT_FLOAT_REPR) || defined(Py_NAN)
|
||||||
|
|
||||||
|
static double
|
||||||
|
m_nan(void)
|
||||||
|
{
|
||||||
|
#ifndef PY_NO_SHORT_FLOAT_REPR
|
||||||
|
return _Py_dg_stdnan(0);
|
||||||
|
#else
|
||||||
|
return Py_NAN;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static double
|
static double
|
||||||
m_tgamma(double x)
|
m_tgamma(double x)
|
||||||
{
|
{
|
||||||
|
@ -2009,7 +2038,11 @@ PyInit_math(void)
|
||||||
|
|
||||||
PyModule_AddObject(m, "pi", PyFloat_FromDouble(Py_MATH_PI));
|
PyModule_AddObject(m, "pi", PyFloat_FromDouble(Py_MATH_PI));
|
||||||
PyModule_AddObject(m, "e", PyFloat_FromDouble(Py_MATH_E));
|
PyModule_AddObject(m, "e", PyFloat_FromDouble(Py_MATH_E));
|
||||||
|
PyModule_AddObject(m, "inf", PyFloat_FromDouble(m_inf()));
|
||||||
|
#if !defined(PY_NO_SHORT_FLOAT_REPR) || defined(Py_NAN)
|
||||||
|
PyModule_AddObject(m, "nan", PyFloat_FromDouble(m_nan()));
|
||||||
|
#endif
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue