From bd98e232eda1d8acfa5f6400025438b2dc660c00 Mon Sep 17 00:00:00 2001 From: Alex Herbert Date: Fri, 13 Jan 2023 16:49:41 +0000 Subject: [PATCH 01/11] BUG: Correct intermediate overflow in KS one asymptotic in SciPy.stats (#17783) Closes https://github.com/scipy/scipy/issues/17775 --- scipy/special/cephes/kolmogorov.c | 14 +++++--- scipy/stats/tests/test_continuous_basic.py | 40 ++++++++++++++++++++++ 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/scipy/special/cephes/kolmogorov.c b/scipy/special/cephes/kolmogorov.c index 633d36d8f2d8..019d224123ed 100644 --- a/scipy/special/cephes/kolmogorov.c +++ b/scipy/special/cephes/kolmogorov.c @@ -774,10 +774,16 @@ _smirnov(int n, double x) /* Special case: n is so big, take too long to compute */ if (n > SMIRNOV_MAX_COMPUTE_N) { /* p ~ e^(-(6nx+1)^2 / 18n) */ - double logp = -pow(6*n*x+1.0, 2)/18.0/n; - sf = exp(logp); - cdf = 1 - sf; - pdf = (6 * nx + 1) * 2 * sf/3; + double logp = -pow(6.0*n*x+1, 2)/18.0/n; + /* Maximise precision for small p-value. */ + if (logp < -M_LN2) { + sf = exp(logp); + cdf = 1 - sf; + } else { + cdf = -expm1(logp); + sf = 1 - cdf; + } + pdf = (6.0*n*x+1) * 2 * sf/3; RETURN_3PROBS(sf, cdf, pdf); } { diff --git a/scipy/stats/tests/test_continuous_basic.py b/scipy/stats/tests/test_continuous_basic.py index f8c3628470ac..d0873deabea6 100644 --- a/scipy/stats/tests/test_continuous_basic.py +++ b/scipy/stats/tests/test_continuous_basic.py @@ -362,6 +362,46 @@ def test_rvs_broadcast(dist, shape_args): check_rvs_broadcast(distfunc, dist, allargs, bshape, shape_only, 'd') +# Expected values of the SF, CDF, PDF were computed using +# mpmath with mpmath.mp.dps = 50 and output at 20: +# +# def ks(x, n): +# x = mpmath.mpf(x) +# logp = -mpmath.power(6.0*n*x+1.0, 2)/18.0/n +# sf, cdf = mpmath.exp(logp), -mpmath.expm1(logp) +# pdf = (6.0*n*x+1.0) * 2 * sf/3 +# print(mpmath.nstr(sf, 20), mpmath.nstr(cdf, 20), mpmath.nstr(pdf, 20)) +# +# Tests use 1/n < x < 1-1/n and n > 1e6 to use the asymptotic computation. +# Larger x has a smaller sf. +@pytest.mark.parametrize('x,n,sf,cdf,pdf,rtol', + [(2.0e-5, 1000000000, + 0.44932297307934442379, 0.55067702692065557621, + 35946.137394996276407, 5e-15), + (2.0e-9, 1000000000, + 0.99999999061111115519, 9.3888888448132728224e-9, + 8.6666665852962971765, 5e-14), + (5.0e-4, 1000000000, + 7.1222019433090374624e-218, 1.0, + 1.4244408634752704094e-211, 5e-14)]) +def test_gh17775_regression(x, n, sf, cdf, pdf, rtol): + # Regression test for gh-17775. In scipy 1.9.3 and earlier, + # these test would fail. + # + # KS one asymptotic sf ~ e^(-(6nx+1)^2 / 18n) + # Given a large 32-bit integer n, 6n will overflow in the c implementation. + # Example of broken behaviour: + # ksone.sf(2.0e-5, 1000000000) == 0.9374359693473666 + ks = stats.ksone + vals = np.array([ks.sf(x, n), ks.cdf(x, n), ks.pdf(x, n)]) + expected = np.array([sf, cdf, pdf]) + npt.assert_allclose(vals, expected, rtol=rtol) + # The sf+cdf must sum to 1.0. + npt.assert_equal(vals[0] + vals[1], 1.0) + # Check inverting the (potentially very small) sf (uses a lower tolerance) + npt.assert_allclose([ks.isf(sf, n)], [x], rtol=1e-8) + + def test_rvs_gh2069_regression(): # Regression tests for gh-2069. In scipy 0.17 and earlier, # these tests would fail. From 2eb9b963cdb9c70f619391ea13fffda6cf93d9fb Mon Sep 17 00:00:00 2001 From: alice Date: Sun, 15 Jan 2023 21:19:16 +0100 Subject: [PATCH 02/11] BUG: signal: fix check_malloc extern declaration type (#17790) The definition of check_malloc takes a size_t argument. Fixes a lto-type-mistatch warning. Related to #16098 --- scipy/signal/_medianfilter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/signal/_medianfilter.c b/scipy/signal/_medianfilter.c index 90d66c59dd56..e49964d46c64 100644 --- a/scipy/signal/_medianfilter.c +++ b/scipy/signal/_medianfilter.c @@ -10,7 +10,7 @@ void f_medfilt2(float*,float*,npy_intp*,npy_intp*); void d_medfilt2(double*,double*,npy_intp*,npy_intp*); void b_medfilt2(unsigned char*,unsigned char*,npy_intp*,npy_intp*); -extern char *check_malloc (int); +extern char *check_malloc (size_t); /* The QUICK_SELECT routine is based on Hoare's Quickselect algorithm, From 69313755dd297597670bb2aa7b893f4318ab5043 Mon Sep 17 00:00:00 2001 From: windows-server-2003 <31173797+windows-server-2003@users.noreply.github.com> Date: Tue, 14 Feb 2023 06:18:52 +0900 Subject: [PATCH 03/11] BUG: [sparse.csgraph] Fix a bug in dijkstra and johnson algorithm (#17800) * MAINT: Fix wrong 'directed' being passed in the tests for shortest path algorithms * BUG: scipy.sparse.csgraph: Fix a bug in FibonacciHeap used for the dijkstra function * TST: PR 17800 revisions to pin down exact test cases --------- Co-authored-by: Tyler Reddy Co-authored-by: CJ Carey Co-authored-by: Kai Striega --- scipy/sparse/csgraph/_shortest_path.pyx | 2 +- .../csgraph/tests/test_shortest_path.py | 48 ++++++++++++++++++- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/scipy/sparse/csgraph/_shortest_path.pyx b/scipy/sparse/csgraph/_shortest_path.pyx index 0d20388e6bcd..9997a0ea50ba 100644 --- a/scipy/sparse/csgraph/_shortest_path.pyx +++ b/scipy/sparse/csgraph/_shortest_path.pyx @@ -1556,7 +1556,7 @@ cdef void decrease_val(FibonacciHeap* heap, # at the leftmost end of the roots' linked-list. remove(node) node.right_sibling = heap.min_node - heap.min_node.left_sibling = node.right_sibling + heap.min_node.left_sibling = node heap.min_node = node diff --git a/scipy/sparse/csgraph/tests/test_shortest_path.py b/scipy/sparse/csgraph/tests/test_shortest_path.py index 2e55ca156e3a..adfeb5dd217d 100644 --- a/scipy/sparse/csgraph/tests/test_shortest_path.py +++ b/scipy/sparse/csgraph/tests/test_shortest_path.py @@ -1,3 +1,4 @@ +from io import StringIO import warnings import numpy as np from numpy.testing import assert_array_almost_equal, assert_array_equal @@ -6,6 +7,7 @@ bellman_ford, construct_dist_matrix, NegativeCycleError) import scipy.sparse +from scipy.io import mmread import pytest directed_G = np.array([[0, 3, 3, 0, 0], @@ -176,7 +178,7 @@ def test_dijkstra_indices_min_only(directed, SP_ans, indices): @pytest.mark.parametrize('n', (10, 100, 1000)) -def test_shortest_path_min_only_random(n): +def test_dijkstra_min_only_random(n): np.random.seed(1234) data = scipy.sparse.rand(n, n, density=0.5, format='lil', random_state=42, dtype=np.float64) @@ -186,7 +188,7 @@ def test_shortest_path_min_only_random(n): np.random.shuffle(v) indices = v[:int(n*.1)] ds, pred, sources = dijkstra(data, - directed=False, + directed=True, indices=indices, min_only=True, return_predecessors=True) @@ -198,6 +200,48 @@ def test_shortest_path_min_only_random(n): p = pred[p] +def test_dijkstra_random(): + # reproduces the hang observed in gh-17782 + n = 10 + indices = [0, 4, 4, 5, 7, 9, 0, 6, 2, 3, 7, 9, 1, 2, 9, 2, 5, 6] + indptr = [0, 0, 2, 5, 6, 7, 8, 12, 15, 18, 18] + data = [0.33629, 0.40458, 0.47493, 0.42757, 0.11497, 0.91653, 0.69084, + 0.64979, 0.62555, 0.743, 0.01724, 0.99945, 0.31095, 0.15557, + 0.02439, 0.65814, 0.23478, 0.24072] + graph = scipy.sparse.csr_matrix((data, indices, indptr), shape=(n, n)) + dijkstra(graph, directed=True, return_predecessors=True) + + +def test_gh_17782_segfault(): + text = """%%MatrixMarket matrix coordinate real general + 84 84 22 + 2 1 4.699999809265137e+00 + 6 14 1.199999973177910e-01 + 9 6 1.199999973177910e-01 + 10 16 2.012000083923340e+01 + 11 10 1.422000026702881e+01 + 12 1 9.645999908447266e+01 + 13 18 2.012000083923340e+01 + 14 13 4.679999828338623e+00 + 15 11 1.199999973177910e-01 + 16 12 1.199999973177910e-01 + 18 15 1.199999973177910e-01 + 32 2 2.299999952316284e+00 + 33 20 6.000000000000000e+00 + 33 32 5.000000000000000e+00 + 36 9 3.720000028610229e+00 + 36 37 3.720000028610229e+00 + 36 38 3.720000028610229e+00 + 37 44 8.159999847412109e+00 + 38 32 7.903999328613281e+01 + 43 20 2.400000000000000e+01 + 43 33 4.000000000000000e+00 + 44 43 6.028000259399414e+01 + """ + data = mmread(StringIO(text)) + dijkstra(data, directed=True, return_predecessors=True) + + def test_shortest_path_indices(): indices = np.arange(4) From 04e26b6ca442373af664c3a84864c68db9902478 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Wed, 25 Jan 2023 20:28:53 -0800 Subject: [PATCH 04/11] BUG: special: Fix handling of `powm1` overflow errors (#17855) --- scipy/special/boost_special_functions.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scipy/special/boost_special_functions.h b/scipy/special/boost_special_functions.h index ae825e5de388..835ccb9af2b6 100644 --- a/scipy/special/boost_special_functions.h +++ b/scipy/special/boost_special_functions.h @@ -90,7 +90,12 @@ Real powm1_wrap(Real x, Real y) z = NAN; } catch (const std::overflow_error& e) { sf_error("powm1", SF_ERROR_OVERFLOW, NULL); - z = INFINITY; + if (x > 0) { + z = INFINITY; + } + else { + z = -INFINITY; + } } catch (const std::underflow_error& e) { sf_error("powm1", SF_ERROR_UNDERFLOW, NULL); z = 0; From a225f2ba526570d3dd6fb096417174c4e9f40787 Mon Sep 17 00:00:00 2001 From: "Tomer.Sery" Date: Thu, 26 Jan 2023 14:03:31 +0200 Subject: [PATCH 05/11] BUG: fix Johnson's algorithm. Remove unnecessary reset of dist_array during Bellman-Ford weight updates. Add unit test for negative weighted shortest paths. See #14980 --- scipy/sparse/csgraph/_shortest_path.pyx | 10 ++-------- scipy/sparse/csgraph/tests/test_shortest_path.py | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/scipy/sparse/csgraph/_shortest_path.pyx b/scipy/sparse/csgraph/_shortest_path.pyx index 9997a0ea50ba..459672ca2715 100644 --- a/scipy/sparse/csgraph/_shortest_path.pyx +++ b/scipy/sparse/csgraph/_shortest_path.pyx @@ -1337,6 +1337,7 @@ cdef int _johnson_directed( const int[:] csr_indices, const int[:] csr_indptr, double[:] dist_array): + # Note: The contents of dist_array must be initialized to zero on entry cdef: unsigned int N = dist_array.shape[0] unsigned int j, k, count @@ -1344,10 +1345,6 @@ cdef int _johnson_directed( # relax all edges (N+1) - 1 times for count in range(N): - for k in range(N): - if dist_array[k] < 0: - dist_array[k] = 0 - for j in range(N): d1 = dist_array[j] for k in range(csr_indptr[j], csr_indptr[j + 1]): @@ -1373,6 +1370,7 @@ cdef int _johnson_undirected( const int[:] csr_indices, const int[:] csr_indptr, double[:] dist_array): + # Note: The contents of dist_array must be initialized to zero on entry cdef: unsigned int N = dist_array.shape[0] unsigned int j, k, ind_k, count @@ -1380,10 +1378,6 @@ cdef int _johnson_undirected( # relax all edges (N+1) - 1 times for count in range(N): - for k in range(N): - if dist_array[k] < 0: - dist_array[k] = 0 - for j in range(N): d1 = dist_array[j] for k in range(csr_indptr[j], csr_indptr[j + 1]): diff --git a/scipy/sparse/csgraph/tests/test_shortest_path.py b/scipy/sparse/csgraph/tests/test_shortest_path.py index adfeb5dd217d..f745e0fbba31 100644 --- a/scipy/sparse/csgraph/tests/test_shortest_path.py +++ b/scipy/sparse/csgraph/tests/test_shortest_path.py @@ -1,7 +1,7 @@ from io import StringIO import warnings import numpy as np -from numpy.testing import assert_array_almost_equal, assert_array_equal +from numpy.testing import assert_array_almost_equal, assert_array_equal, assert_allclose from pytest import raises as assert_raises from scipy.sparse.csgraph import (shortest_path, dijkstra, johnson, bellman_ford, construct_dist_matrix, @@ -79,6 +79,14 @@ [3, 3, 0, -9999, 3], [4, 4, 0, 4, -9999]], dtype=float) +directed_negative_weighted_G = np.array([[0, 0, 0], + [-1, 0, 0], + [0, -1, 0]], dtype=float) + +directed_negative_weighted_SP = np.array([[0, np.inf, np.inf], + [-1, 0, np.inf], + [-2, -1, 0]], dtype=float) + methods = ['auto', 'FW', 'D', 'BF', 'J'] @@ -323,6 +331,12 @@ def check(method, directed): check(method, directed) +@pytest.mark.parametrize("method", ['FW', 'J', 'BF']) +def test_negative_weights(method): + SP = shortest_path(directed_negative_weighted_G, method, directed=True) + assert_allclose(SP, directed_negative_weighted_SP, atol=1e-10) + + def test_masked_input(): np.ma.masked_equal(directed_G, 0) From 78e790cf763e62014a9605ac31eeea19deccece7 Mon Sep 17 00:00:00 2001 From: Matt Borland Date: Fri, 27 Jan 2023 15:52:40 -0800 Subject: [PATCH 06/11] Fix powm1 overflow handling --- scipy/special/boost_special_functions.h | 33 ++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/scipy/special/boost_special_functions.h b/scipy/special/boost_special_functions.h index 835ccb9af2b6..69ea2856237a 100644 --- a/scipy/special/boost_special_functions.h +++ b/scipy/special/boost_special_functions.h @@ -90,11 +90,42 @@ Real powm1_wrap(Real x, Real y) z = NAN; } catch (const std::overflow_error& e) { sf_error("powm1", SF_ERROR_OVERFLOW, NULL); + + // See: https://en.cppreference.com/w/cpp/numeric/math/pow if (x > 0) { + if (y < 0) { + z = 0; + } + else if (y == 0) { + z = 1; + } + else { + z = INFINITY; + } + } + else if (x == 0) { z = INFINITY; } else { - z = -INFINITY; + if (y < 0) { + if (std::fmod(y, 2) == 0) { + z = 0; + } + else { + z = -0; + } + } + else if (y == 0) { + z = 1; + } + else { + if (std::fmod(y, 2) == 0) { + z = INFINITY; + } + else { + z = -INFINITY; + } + } } } catch (const std::underflow_error& e) { sf_error("powm1", SF_ERROR_UNDERFLOW, NULL); From c33c67926faa54f925c2a89e74549c3327787c83 Mon Sep 17 00:00:00 2001 From: ganesh-k13 Date: Mon, 6 Feb 2023 18:58:52 +0530 Subject: [PATCH 07/11] BUG: Use raw strings for paths * `\U` leads to strings being treated as unicode, hence we escape it with raw strings * Changed bool parameters real bools instead of string `"True"` and `"False"` [wheel build] --- scipy/__config__.py.in | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/scipy/__config__.py.in b/scipy/__config__.py.in index 3c915d1f69fd..61482faafa5a 100644 --- a/scipy/__config__.py.in +++ b/scipy/__config__.py.in @@ -17,7 +17,7 @@ def _cleanup(d): This ensures we remove values that Meson could not provide to CONFIG """ if isinstance(d, dict): - return { k: _cleanup(v) for k, v in d.items() if v and _cleanup(v) } + return { k: _cleanup(v) for k, v in d.items() if v != '' and _cleanup(v) != '' } else: return d @@ -51,7 +51,7 @@ CONFIG = _cleanup( }, "pythran": { "version": "@PYTHRAN_VERSION@", - "include directory": "@PYTHRAN_INCDIR@" + "include directory": r"@PYTHRAN_INCDIR@" }, }, "Machine Information": { @@ -67,32 +67,32 @@ CONFIG = _cleanup( "endian": "@BUILD_CPU_ENDIAN@", "system": "@BUILD_CPU_SYSTEM@", }, - "cross-compiled": "@CROSS_COMPILED@", + "cross-compiled": bool("@CROSS_COMPILED@".lower().replace('false', '')), }, "Build Dependencies": { "blas": { "name": "@BLAS_NAME@", - "found": "@BLAS_FOUND@", + "found": bool("@BLAS_FOUND@".lower().replace('false', '')), "version": "@BLAS_VERSION@", "detection method": "@BLAS_TYPE_NAME@", - "include directory": "@BLAS_INCLUDEDIR@", - "lib directory": "@BLAS_LIBDIR@", + "include directory": r"@BLAS_INCLUDEDIR@", + "lib directory": r"@BLAS_LIBDIR@", "openblas configuration": "@BLAS_OPENBLAS_CONFIG@", - "pc file directory": "@BLAS_PCFILEDIR@", + "pc file directory": r"@BLAS_PCFILEDIR@", }, "lapack": { "name": "@LAPACK_NAME@", - "found": "@LAPACK_FOUND@", + "found": bool("@LAPACK_FOUND@".lower().replace('false', '')), "version": "@LAPACK_VERSION@", "detection method": "@LAPACK_TYPE_NAME@", - "include directory": "@LAPACK_INCLUDEDIR@", - "lib directory": "@LAPACK_LIBDIR@", + "include directory": r"@LAPACK_INCLUDEDIR@", + "lib directory": r"@LAPACK_LIBDIR@", "openblas configuration": "@LAPACK_OPENBLAS_CONFIG@", - "pc file directory": "@LAPACK_PCFILEDIR@", + "pc file directory": r"@LAPACK_PCFILEDIR@", }, }, "Python Information": { - "path": "@PYTHON_PATH@", + "path": r"@PYTHON_PATH@", "version": "@PYTHON_VERSION@", }, } From 9bb12cd08786a323f5b3dbd57061047d971eae58 Mon Sep 17 00:00:00 2001 From: Pamphile Roy Date: Thu, 16 Feb 2023 20:30:44 +0100 Subject: [PATCH 08/11] DOC: update link of the logo in the readme [skip ci] --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 27f872630bfc..bd1060393692 100644 --- a/README.rst +++ b/README.rst @@ -1,7 +1,7 @@ -.. image:: doc/source/_static/logo.svg +.. image:: https://github.com/scipy/scipy/blob/main/doc/source/_static/logo.svg :target: https://scipy.org - :width: 100 - :height: 100 + :width: 110 + :height: 110 :align: left .. image:: https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A From 6abc551721757b197b5465fc2e639098a8fc9e2c Mon Sep 17 00:00:00 2001 From: Andrew Nelson Date: Sat, 18 Feb 2023 16:46:08 +1100 Subject: [PATCH 09/11] BUG: diffev exponential crossover --- scipy/optimize/_differentialevolution.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scipy/optimize/_differentialevolution.py b/scipy/optimize/_differentialevolution.py index ad1f8ae7ca39..151b43fde947 100644 --- a/scipy/optimize/_differentialevolution.py +++ b/scipy/optimize/_differentialevolution.py @@ -1497,6 +1497,7 @@ def _mutate(self, candidate): i = 0 crossovers = rng.uniform(size=self.parameter_count) crossovers = crossovers < self.cross_over_probability + crossovers[0] = True while (i < self.parameter_count and crossovers[i]): trial[fill_point] = bprime[fill_point] fill_point = (fill_point + 1) % self.parameter_count From 79bc9c3a0efedee65e17b4a4df917a47150b9af2 Mon Sep 17 00:00:00 2001 From: Tyler Reddy Date: Sat, 18 Feb 2023 16:32:44 -0700 Subject: [PATCH 10/11] DOC: update relnotes/mailmap --- .mailmap | 4 ++++ doc/release/1.10.1-notes.rst | 37 +++++++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/.mailmap b/.mailmap index af11468a0a04..9cdd5f715d18 100644 --- a/.mailmap +++ b/.mailmap @@ -94,6 +94,7 @@ Bhavika Tekwani bhavikat Blair Azzopardi bsdz Blair Azzopardi Blair Azzopardi Brandon David brandondavid +Brett Graham Brett Brett R. Murphy brettrmurphy Brian Hawthorne brian.hawthorne Brian Newsom Brian Newsom @@ -193,6 +194,7 @@ Fukumu Tsutsumi levelfour G Young gfyoung G Young gfyoung Gagandeep Singh czgdp1807 +Ganesh Kathiresan ganesh-k13 Garrett Reynolds Garrett-R Gaël Varoquaux Gael varoquaux Gavin Zhang GavinZhang @@ -231,6 +233,7 @@ Jacob Vanderplas Jake Vanderplas Jacob Vanderplas Jake Vanderplas Jacob Vanderplas Jake Vanderplas Jacob Vanderplas Jacob Vanderplas +Jacopo Tissino Jacopo Jaime Fernandez del Rio jaimefrio Jaime Fernandez del Rio Jaime Jaime Fernandez del Rio Jaime Fernandez @@ -483,6 +486,7 @@ Todd Goodall Todd Todd Jennings Todd Tom Waite tom.waite Tom Donoghue TomDonoghue +Tomer Sery Tomer.Sery Tony S. Yu tonysyu Tony S. Yu Tony S Yu Toshiki Kataoka Toshiki Kataoka diff --git a/doc/release/1.10.1-notes.rst b/doc/release/1.10.1-notes.rst index 5573a86ca478..7d47ef54e093 100644 --- a/doc/release/1.10.1-notes.rst +++ b/doc/release/1.10.1-notes.rst @@ -12,22 +12,29 @@ compared to 1.10.0. Authors ======= * Name (commits) -* Brett (1) + +* alice (1) + +* Matt Borland (2) + * Evgeni Burovski (2) +* CJ Carey (1) * Ralf Gommers (9) +* Brett Graham (1) + * Matt Haberland (5) -* Jacopo (1) + -* Ganesh Kathiresan (1) + +* Alex Herbert (1) + +* Ganesh Kathiresan (2) + * Rishi Kulkarni (1) + * Loïc Estève (1) * Michał Górny (1) + * Jarrod Millman (1) -* Andrew Nelson (1) -* Tyler Reddy (36) -* Pamphile Roy (1) +* Andrew Nelson (4) +* Tyler Reddy (50) +* Pamphile Roy (2) * Eli Schwartz (2) +* Tomer Sery (1) + +* Kai Striega (1) +* Jacopo Tissino (1) + +* windows-server-2003 (1) -A total of 14 people contributed to this release. +A total of 21 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete. @@ -35,17 +42,22 @@ This list of names is automatically generated, and may not be fully complete. Issues closed for 1.10.1 ------------------------ +* `#14980 `__: BUG: Johnson's algorithm fails without negative cycles * `#17670 `__: Failed to install on Raspberry Pi (ARM) 32bit in 3.11.1 * `#17715 `__: scipy.stats.bootstrap broke with statistic returning multiple... * `#17716 `__: BUG: interpolate.interpn fails with read only input * `#17718 `__: BUG: RegularGridInterpolator 2D mixed precision crashes * `#17727 `__: BUG: RegularGridInterpolator does not work on non-native byteorder... * `#17736 `__: BUG: SciPy requires OpenBLAS even when building against a different... +* `#17775 `__: BUG: Asymptotic computation of ksone.sf has intermediate overflow +* `#17782 `__: BUG: Segfault in scipy.sparse.csgraph.shortest_path() with v1.10.0 * `#17795 `__: BUG: stats.pearsonr one-sided hypothesis yields incorrect p-value... * `#17801 `__: BUG: stats.powerlaw.fit: raises OverflowError * `#17808 `__: BUG: name of cython executable is hardcoded in _build_utils/cythoner.py * `#17811 `__: CI job with numpy nightly build failing on missing \`_ArrayFunctionDispatcher.__code__\` +* `#17839 `__: BUG: 1.10.0 tests fail on i386 and other less common arches * `#17896 `__: DOC: publicly expose \`multivariate_normal\` attributes \`mean\`... +* `#17934 `__: BUG: meson \`__config__\` generation - truncated unicode characters * `#17938 `__: BUG: \`scipy.stats.qmc.LatinHypercube\` with \`optimization="random-cd"\`... @@ -59,18 +71,29 @@ Pull requests for 1.10.1 * `#17735 `__: MAINT: stats.bootstrap: fix BCa with vector-valued statistics * `#17743 `__: DOC: improve the docs on using BLAS/LAPACK libraries with Meson * `#17777 `__: BLD: link to libatomic if necessary +* `#17783 `__: BUG: Correct intermediate overflow in KS one asymptotic in SciPy.stats +* `#17790 `__: BUG: signal: fix check_malloc extern declaration type * `#17797 `__: MAINT: stats.pearsonr: correct p-value with negative correlation... +* `#17800 `__: [sparse.csgraph] Fix a bug in dijkstra and johnson algorithm * `#17803 `__: MAINT: add missing \`__init__.py\` in test folder * `#17806 `__: MAINT: stats.powerlaw.fit: fix overflow when np.min(data)==0 * `#17810 `__: BLD: use Meson's found cython instead of a wrapper script * `#17831 `__: MAINT, CI: GHA MacOS setup.py update * `#17850 `__: MAINT: remove use of \`__code__\` in \`scipy.integrate\` * `#17854 `__: TST: mark test for \`stats.kde.marginal\` as xslow +* `#17855 `__: BUG: Fix handling of \`powm1\` overflow errors * `#17859 `__: TST: fix test failures on i386, s390x, ppc64, riscv64 (Debian) * `#17862 `__: BLD: Meson \`__config__\` generation +* `#17863 `__: BUG: fix Johnson's algorithm +* `#17872 `__: BUG: fix powm1 overflow handling * `#17904 `__: ENH: \`multivariate_normal_frozen\`: restore \`cov\` attribute * `#17910 `__: CI: use nightly numpy musllinux_x86_64 wheel * `#17931 `__: TST: test_location_scale proper 32bit Linux skip * `#17932 `__: TST: 32-bit tol for test_pdist_jensenshannon_iris +* `#17936 `__: BUG: Use raw strings for paths in \`__config__.py.in\` * `#17940 `__: BUG: \`rng_integers\` in \`_random_cd\` now samples on a closed... * `#17942 `__: BLD: update classifiers for Python 3.11 +* `#17963 `__: MAINT: backports/prep for SciPy 1.10.1 +* `#17981 `__: BLD: make sure macosx_x86_64 10.9 tags are being made on maintenance/1.10.x +* `#17984 `__: DOC: update link of the logo in the readme +* `#17997 `__: BUG: at least one entry from trial should be used in exponential... From 5789a76941463338cea7c3824bbe2424cb1b3bd2 Mon Sep 17 00:00:00 2001 From: Tyler Reddy Date: Sat, 18 Feb 2023 19:24:41 -0700 Subject: [PATCH 11/11] MAINT: test wheel builds [wheel build] * test wheel builds in gh-18001 [wheel build]