Skip to content

Commit 4079776

Browse files
Add kde function and tests to RustPython statistics module (#6030)
* Copy CPython 3.13 statistics module into RustPython * Adjust CPython "magic constants" in KDE tests ## test_kde I'm not too sure why but this one takes a few seconds to run the second for loop which calculates the cumulative distribution and does a rough calculation of the area under the curve. ## test_kde_random I have a lower bound for RustPython to sort a random list of 1_000_000 numbers on my laptop of > 1 hour. By dropping n to 30_000 sort will not take an egregious amount of time to run. It is then necessary to lower the tolerance for the math.isclose check, or the computed values may **randomly** fail due to the higher variance caused by the smaller sample size. * Reintroduce expected failure in test_statistics.TestNormalDict.test_slots * Sync Rust `normal_dist_inv_cdf` with Python equivalent See python/cpython#95265. To quote: > Restores alignment with random.gauss(mu, sigma) and random.normalvariate(mu, sigma) both. of which are equivalent to sampling from NormalDist(mu, sigma).inv_cdf(random()). The two functions in the random module happy accept sigma=0 and give a well-defined result. > This also lets the function gently handle a sigma getting smaller, eventually becoming zero. As sigma decrease, NormalDist(mu, sigma).inv_cdf(p) forms a tighter and tighter internal around mu and becoming exactly mu in the limit. For example, NormalDist(100, 1E-300).inv_cdf(0.3) cleanly evaluates to 100.0but withsigma=1e-500`` the function previously would raised an unexpected error.
1 parent c232b7f commit 4079776

File tree

3 files changed

+1193
-252
lines changed

3 files changed

+1193
-252
lines changed

0 commit comments

Comments
 (0)