mirror of https://github.com/python/cpython
Statistics inv_cdf sync with corresponding random module normal distributions (#95265)
This commit is contained in:
parent
b7ce4625fe
commit
4395ff1e6a
|
@ -1221,8 +1221,6 @@ class NormalDist:
|
||||||
"""
|
"""
|
||||||
if p <= 0.0 or p >= 1.0:
|
if p <= 0.0 or p >= 1.0:
|
||||||
raise StatisticsError('p must be in the range 0.0 < 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)
|
return _normal_dist_inv_cdf(p, self._mu, self._sigma)
|
||||||
|
|
||||||
def quantiles(self, n=4):
|
def quantiles(self, n=4):
|
||||||
|
|
|
@ -2801,9 +2801,10 @@ class TestNormalDist:
|
||||||
iq.inv_cdf(1.0) # p is one
|
iq.inv_cdf(1.0) # p is one
|
||||||
with self.assertRaises(self.module.StatisticsError):
|
with self.assertRaises(self.module.StatisticsError):
|
||||||
iq.inv_cdf(1.1) # p over one
|
iq.inv_cdf(1.1) # p over one
|
||||||
with self.assertRaises(self.module.StatisticsError):
|
|
||||||
|
# Supported case:
|
||||||
iq = NormalDist(100, 0) # sigma is zero
|
iq = NormalDist(100, 0) # sigma is zero
|
||||||
iq.inv_cdf(0.5)
|
self.assertEqual(iq.inv_cdf(0.5), 100)
|
||||||
|
|
||||||
# Special values
|
# Special values
|
||||||
self.assertTrue(math.isnan(Z.inv_cdf(float('NaN'))))
|
self.assertTrue(math.isnan(Z.inv_cdf(float('NaN'))))
|
||||||
|
|
|
@ -31,7 +31,7 @@ _statistics__normal_dist_inv_cdf_impl(PyObject *module, double p, double mu,
|
||||||
/*[clinic end generated code: output=02fd19ddaab36602 input=24715a74be15296a]*/
|
/*[clinic end generated code: output=02fd19ddaab36602 input=24715a74be15296a]*/
|
||||||
{
|
{
|
||||||
double q, num, den, r, x;
|
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;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue