[Python-checkins] Statistics inv_cdf sync with corresponding random module normal distributions (#95265)

rhettinger webhook-mailer at python.org
Tue Jul 26 03:23:43 EDT 2022


https://github.com/python/cpython/commit/4395ff1e6a18fb26c7a66b1c29b34ed60ddd001c
commit: 4395ff1e6a18fb26c7a66b1c29b34ed60ddd001c
branch: main
author: Raymond Hettinger <rhettinger at users.noreply.github.com>
committer: rhettinger <rhettinger at users.noreply.github.com>
date: 2022-07-26T02:23:33-05:00
summary:

Statistics inv_cdf sync with corresponding random module normal distributions (#95265)

files:
M Lib/statistics.py
M Lib/test/test_statistics.py
M Modules/_statisticsmodule.c

diff --git a/Lib/statistics.py b/Lib/statistics.py
index 9d775e74f81c6..c78d64518853e 100644
--- a/Lib/statistics.py
+++ b/Lib/statistics.py
@@ -1221,8 +1221,6 @@ def inv_cdf(self, p):
         """
         if p <= 0.0 or p >= 1.0:
             raise StatisticsError('p must be in the range 0.0 < p < 1.0')
-        if self._sigma <= 0.0:
-            raise StatisticsError('cdf() not defined when sigma at or below zero')
         return _normal_dist_inv_cdf(p, self._mu, self._sigma)
 
     def quantiles(self, n=4):
diff --git a/Lib/test/test_statistics.py b/Lib/test/test_statistics.py
index 6de98241c294d..bf85525dd129a 100644
--- a/Lib/test/test_statistics.py
+++ b/Lib/test/test_statistics.py
@@ -2801,9 +2801,10 @@ def test_inv_cdf(self):
             iq.inv_cdf(1.0)                         # p is one
         with self.assertRaises(self.module.StatisticsError):
             iq.inv_cdf(1.1)                         # p over one
-        with self.assertRaises(self.module.StatisticsError):
-            iq = NormalDist(100, 0)                 # sigma is zero
-            iq.inv_cdf(0.5)
+
+        # Supported case:
+        iq = NormalDist(100, 0)                     # sigma is zero
+        self.assertEqual(iq.inv_cdf(0.5), 100)
 
         # Special values
         self.assertTrue(math.isnan(Z.inv_cdf(float('NaN'))))
diff --git a/Modules/_statisticsmodule.c b/Modules/_statisticsmodule.c
index 78c0676a01f02..b9d1e4f161603 100644
--- a/Modules/_statisticsmodule.c
+++ b/Modules/_statisticsmodule.c
@@ -31,7 +31,7 @@ _statistics__normal_dist_inv_cdf_impl(PyObject *module, double p, double mu,
 /*[clinic end generated code: output=02fd19ddaab36602 input=24715a74be15296a]*/
 {
     double q, num, den, r, x;
-    if (p <= 0.0 || p >= 1.0 || sigma <= 0.0) {
+    if (p <= 0.0 || p >= 1.0) {
         goto error;
     }
 



More information about the Python-checkins mailing list