Skip to main content
`Ctrl`+`K`

# SciPy 1.14.0 Release Notes

SciPy 1.14.0 is the culmination of 3 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with `python -Wd` and check for `DeprecationWarning` s). Our development attention will now shift to bug-fix releases on the 1.14.x branch, and on adding new features on the main branch.

This release requires Python 3.10+ and NumPy 1.23.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

## Highlights of this release

- SciPy now supports the new Accelerate library introduced in macOS 13.3, and has wheels built against Accelerate for macOS >=14 resulting in significant performance improvements for many linear algebra operations.

- A new method, `cobyqa`, has been added to `scipy.optimize.minimize` - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University.

- `scipy.sparse.linalg.spsolve_triangular` is now more than an order of magnitude faster in many cases.

## New features

### `scipy.fft` improvements

- A new function, `scipy.fft.prev_fast_len`, has been added. This function finds the largest composite of FFT radices that is less than the target length. It is useful for discarding a minimal number of samples before FFT.

### `scipy.io` improvements

- `wavfile` now supports reading and writing of `wav` files in the RF64 format, allowing files greater than 4 GB in size to be handled.

### `scipy.constants` improvements

- Experimental support for the array API standard has been added.

### `scipy.interpolate` improvements

- `scipy.interpolate.Akima1DInterpolator` now supports extrapolation via the `extrapolate` argument.

### `scipy.optimize` improvements

- `scipy.optimize.HessianUpdateStrategy` now also accepts square arrays for `init_scale`.

- A new method, `cobyqa`, has been added to `scipy.optimize.minimize` - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University.

- There are some performance improvements in `scipy.optimize.differential_evolution`.

- `scipy.optimize.approx_fprime` now has linear space complexity.

### `scipy.signal` improvements

- `scipy.signal.minimum_phase` has a new argument `half`, allowing the provision of a filter of the same length as the linear-phase FIR filter coefficients and with the same magnitude spectrum.

### `scipy.sparse` improvements

- Sparse arrays now support 1D shapes in COO, DOK and CSR formats. These are all the formats we currently intend to support 1D shapes. Other sparse array formats raise an exception for 1D input.

- Sparse array methods min/nanmin/argmin and max analogs now return 1D arrays. Results are still COO format sparse arrays for min/nanmin and dense `np.ndarray` for argmin.

- Iterating over `csr_array` or `csc_array` yields 1D (CSC) arrays.

- Sparse matrix and array objects improve their `repr` and `str` output.

- A special case has been added to handle multiplying a `dia_array` by a scalar, which avoids a potentially costly conversion to CSR format.

- `scipy.sparse.csgraph.yen` has been added, allowing usage of Yen’s K-Shortest Paths algorithm on a directed on undirected graph.

- Addition between DIA-format sparse arrays and matrices is now faster.

- `scipy.sparse.linalg.spsolve_triangular` is now more than an order of magnitude faster in many cases.

### `scipy.spatial` improvements

- `Rotation` supports an alternative “scalar-first” convention of quaternion component ordering. It is available via the keyword argument `scalar_first` of `from_quat` and `as_quat` methods.

- Some minor performance improvements for inverting of `Rotation` objects.

### `scipy.special` improvements

- Added `scipy.special.log_wright_bessel`, for calculation of the logarithm of Wright’s Bessel function.

- The relative error in `scipy.special.hyp2f1` calculations has improved substantially.

- Improved behavior of `boxcox`, `inv_boxcox`, `boxcox1p`, and `inv_boxcox1p` by preventing premature overflow.

### `scipy.stats` improvements

- A new function `scipy.stats.power` can be used for simulating the power of a hypothesis test with respect to a specified alternative.

- The Irwin-Hall (AKA Uniform Sum) distribution has been added as `scipy.stats.irwinhall`.

- Exact p-value calculations of `scipy.stats.mannwhitneyu` are much faster and use less memory.

- `scipy.stats.pearsonr` now accepts n-D arrays and computes the statistic along a specified `axis`.

- `scipy.stats.kstat`, `scipy.stats.kstatvar`, and `scipy.stats.bartlett` are faster at performing calculations along an axis of a large n-D array.

## Array API Standard Support

Experimental support for array libraries other than NumPy has been added to existing sub-packages in recent versions of SciPy. Please consider testing these features by setting an environment variable `SCIPY_ARRAY_API=1` and providing PyTorch, JAX, or CuPy arrays as array arguments.

As of 1.14.0, there is support for

- `scipy.cluster`

- `scipy.fft`

- `scipy.constants`

- `scipy.special`: (select functions)

  - `scipy.special.log_ndtr`

  - `scipy.special.ndtr`

  - `scipy.special.ndtri`

  - `scipy.special.erf`

  - `scipy.special.erfc`

  - `scipy.special.i0`

  - `scipy.special.i0e`

  - `scipy.special.i1`

  - `scipy.special.i1e`

  - `scipy.special.gammaln`

  - `scipy.special.gammainc`

  - `scipy.special.gammaincc`

  - `scipy.special.logit`

  - `scipy.special.expit`

  - `scipy.special.entr`

  - `scipy.special.rel_entr`

  - `scipy.special.xlogy`

  - `scipy.special.chdtrc`

- `scipy.stats`: (select functions)

  - `scipy.stats.describe`

  - `scipy.stats.moment`

  - `scipy.stats.skew`

  - `scipy.stats.kurtosis`

  - `scipy.stats.kstat`

  - `scipy.stats.kstatvar`

  - `scipy.stats.circmean`

  - `scipy.stats.circvar`

  - `scipy.stats.circstd`

  - `scipy.stats.entropy`

  - `scipy.stats.variation`

  - `scipy.stats.sem`

  - `scipy.stats.ttest_1samp`

  - `scipy.stats.pearsonr`

  - `scipy.stats.chisquare`

  - `scipy.stats.skewtest`

  - `scipy.stats.kurtosistest`

  - `scipy.stats.normaltest`

  - `scipy.stats.jarque_bera`

  - `scipy.stats.bartlett`

  - `scipy.stats.power_divergence`

  - `scipy.stats.monte_carlo_test`

## Deprecated features

- `scipy.stats.gstd`, `scipy.stats.chisquare`, and `scipy.stats.power_divergence` have deprecated support for masked array input.

- `scipy.stats.linregress` has deprecated support for specifying both samples in one argument; `x` and `y` are to be provided as separate arguments.

- The `conjtransp` method for `scipy.sparse.dok_array` and `scipy.sparse.dok_matrix` has been deprecated and will be removed in SciPy 1.16.0.

- The option `quadrature="trapz"` in `scipy.integrate.quad_vec` has been deprecated in favour of `quadrature="trapezoid"` and will be removed in SciPy 1.16.0.

- `scipy.special.{comb,perm}` have deprecated support for use of `exact=True` in conjunction with non-integral `N` and/or `k`.

## Backwards incompatible changes

- Many `scipy.stats` functions now produce a standardized warning message when an input sample is too small (e.g. zero size). Previously, these functions may have raised an error, emitted one or more less informative warnings, or emitted no warnings. In most cases, returned results are unchanged; in almost all cases the correct result is `NaN`.

### Expired deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

- Several previously deprecated methods for sparse arrays were removed: `asfptype`, `getrow`, `getcol`, `get_shape`, `getmaxprint`, `set_shape`, `getnnz`, and `getformat`. Additionally, the `.A` and `.H` attributes were removed.

- `scipy.integrate.{simps,trapz,cumtrapz}` have been removed in favour of `simpson`, `trapezoid`, and `cumulative_trapezoid`.

- The `tol` argument of `scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk, mres,lgmres,minres,qmr,tfqmr}` has been removed in favour of `rtol`. Furthermore, the default value of `atol` for these functions has changed to `0.0`.

- The `restrt` argument of `scipy.sparse.linalg.gmres` has been removed in favour of `restart`.

- The `initial_lexsort` argument of `scipy.stats.kendalltau` has been removed.

- The `cond` and `rcond` arguments of `scipy.linalg.pinv` have been removed.

- The `even` argument of `scipy.integrate.simpson` has been removed.

- The `turbo` and `eigvals` arguments from `scipy.linalg.{eigh,eigvalsh}` have been removed.

- The `legacy` argument of `scipy.special.comb` has been removed.

- The `hz`/`nyq` argument of `signal.{firls, firwin, firwin2, remez}` has been removed.

- Objects that weren’t part of the public interface but were accessible through deprecated submodules have been removed.

- `float128`, `float96`, and object arrays now raise an error in `scipy.signal.medfilt` and `scipy.signal.order_filter`.

- `scipy.interpolate.interp2d` has been replaced by an empty stub (to be removed completely in the future).

- Coinciding with changes to function signatures (e.g. removal of a deprecated keyword), we had deprecated positional use of keyword arguments for the affected functions, which will now raise an error. Affected functions are:

  - `sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}`

  - `stats.kendalltau`

  - `linalg.pinv`

  - `integrate.simpson`

  - `linalg.{eigh,eigvalsh}`

  - `special.comb`

  - `signal.{firls, firwin, firwin2, remez}`

## Other changes

- SciPy now uses C17 as the C standard to build with, instead of C99. The C++ standard remains C++17.

- macOS Accelerate, which got a major upgrade in macOS 13.3, is now supported. This results in significant performance improvements for linear algebra operations, as well as smaller binary wheels.

- Cross-compilation should be smoother and QEMU or similar is no longer needed to run the cross interpreter.

- Experimental array API support for the JAX backend has been added to several parts of SciPy.

## Authors

- Name (commits)

- h-vetinari (34)

- Steven Adams (1) +

- Max Aehle (1) +

- Ataf Fazledin Ahamed (2) +

- Luiz Eduardo Amaral (1) +

- Trinh Quoc Anh (1) +

- Miguel A. Batalla (7) +

- Tim Beyer (1) +

- Andrea Blengino (1) +

- boatwrong (1)

- Jake Bowhay (51)

- Dietrich Brunn (2)

- Evgeni Burovski (177)

- Tim Butters (7) +

- CJ Carey (5)

- Sean Cheah (46)

- Lucas Colley (73)

- Giuseppe “Peppe” Dilillo (1) +

- DWesl (2)

- Pieter Eendebak (5)

- Kenji S Emerson (1) +

- Jonas Eschle (1)

- fancidev (2)

- Anthony Frazier (1) +

- Ilan Gold (1) +

- Ralf Gommers (125)

- Rohit Goswami (28)

- Ben Greiner (1) +

- Lorenzo Gualniera (1) +

- Matt Haberland (260)

- Shawn Hsu (1) +

- Budjen Jovan (3) +

- Jozsef Kutas (1)

- Eric Larson (3)

- Gregory R. Lee (4)

- Philip Loche (1) +

- Christian Lorentzen (5)

- Sijo Valayakkad Manikandan (2) +

- marinelay (2) +

- Nikolay Mayorov (1)

- Nicholas McKibben (2)

- Melissa Weber Mendonça (7)

- João Mendes (1) +

- Samuel Le Meur-Diebolt (1) +

- Tomiță Militaru (2) +

- Andrew Nelson (35)

- Lysandros Nikolaou (1)

- Nick ODell (5) +

- Jacob Ogle (1) +

- Pearu Peterson (1)

- Matti Picus (5)

- Ilhan Polat (9)

- pwcnorthrop (3) +

- Bharat Raghunathan (1)

- Tom M. Ragonneau (2) +

- Tyler Reddy (101)

- Pamphile Roy (18)

- Atsushi Sakai (9)

- Daniel Schmitz (5)

- Julien Schueller (2) +

- Dan Schult (13)

- Tomer Sery (7)

- Scott Shambaugh (4)

- Tuhin Sharma (1) +

- Sheila-nk (4)

- Skylake (1) +

- Albert Steppi (215)

- Kai Striega (6)

- Zhibing Sun (2) +

- Nimish Telang (1) +

- toofooboo (1) +

- tpl2go (1) +

- Edgar Andrés Margffoy Tuay (44)

- Andrew Valentine (1)

- Valerix (1) +

- Christian Veenhuis (1)

- void (2) +

- Warren Weckesser (3)

- Xuefeng Xu (1)

- Rory Yorke (1)

- Xiao Yuan (1)

- Irwin Zaid (35)

- Elmar Zander (1) +

- Zaikun ZHANG (1)

- ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (4) +

A total of 85 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.

## Issues closed for 1.14.0

- #5369: fsolve & root incorrect function-call count

- #7203: vtk incompatibility with scipy.interpolate (and mvpoly.rbf)

- #8056: cho_factor and cho_solve don’t support (0,0)-shape matrices

- #8083: special.hyp2f1 returns the wrong values when c-a-b is an integer…

- #8510: ValueError: failed to create intent(cache|hide)|optional array–…

- #8848: `integrate.solve_ivp` try to evaluate the function with much…

- #8856: LinearNDInterpolator not thread safe

- #9198: `solve_ivp` RK45 can evaluate the function at times later than…

- #9307: feature request: make `scipy.stats.pearsonr` accept 2-D arrays

- #9459: BUG: linalg: lu and decompositions don’t support (0, 1) or (0,…

- #12515: scipy.linalg.pinvh gives incorrect results

- #14244: ValueError: On entry to DGESDD parameter number 10 had an illegal…

- #14389: `linalg.inv` fails for arrays of shape (0, 0)

- #14806: ENH: Add the Irwin-Hall (Uniform Sum) and Bates (Uniform Mean)…

- #15722: DEP: special.comb: deprecate `exact=True` for non-integers

- #16131: BUG: spsolve_triangular is way slower than spsolve

- #16583: Combining extensions in `stats._boost` into one

- #16748: None of the `cython_*` APIs have any tests using Cython

- #16926: TEST/BUG: Tolerance violation in test_solvers::test_solve_discrete_are

- #17084: ENH: Exporting the removed component of detrend()

- #17341: BUG: `solve_ivp` evaluates outside the requested interval for…

- #17559: ENH: _mannwhitneyu.py computation of exact MWU statistics may…

- #17658: Inconsistent support for empty matrices in linalg

- #19322: BUG: `rv_discrete.expect` fails when duplicate positions

- #19348: BUG: stats.nct.pdf inconsistent behavior when compared to MATLAB…

- #19586: BUG: scipy.signal.group_delay not correct for complex coefficients

- #19598: BUG: Bug in `scipy.sparse.linalg.svds` for large sparse matrices…

- #19649: ENH: as_quat() and from_quat() seams to be reverse x,y,z,w vs…

- #19734: Build warnings from HiGHS

- #19872: BUG: error in calculation of p-values in sp.stats.wilcoxon when…

- #19905: DEP: remove deprecated imports from privatized modules

- #19918: ENH: Adding COBYQA to `scipy.optimize`?

- #19921: BUG: Inconsistent Output from BenchGlobal Compared to BenchLeastSquares…

- #19964: MAINT:BLD:special:Overhaul _ufuncs and cython_special machinery

- #20124: BUG: stats.skewnorm.ppf returns wrong values with moderately…

- #20128: BUG: `csr_array(int())` errors

- #20208: BUG: Test failures due to `invalid value encountered in _beta_ppf`…

- #20247: ENH: Akima1DInterpolator Extrapolation

- #20256: MAINT, BLD: symbol visibility warnings on MacOS ARM static lib…

- #20277: Very noisy doc builds after jupyterlite-sphinx integration

- #20296: CI: jupyterlite-shpinx pin breaks recent doc builds

- #20324: MAINT, BUG (?): pearsonr statistic return type change

- #20357: BUG: Memory usage in griddata function in version 1.12

- #20358: TST, MAINT: failure in TestGroupDelay::test_singular against…

- #20377: ENH: sparse: Update str dunder to handle 1D (and 2D better)

- #20378: ENH: sparse: Update repr dunder to handle 1D (and maybe 2D better)

- #20385: MAINT: special version hex cleanup

- #20386: BUG: scipy.stats.kstest returns NaN starting in scipy 1.12

- #20388: DOC: Version switcher is not vertically centred on mobile

- #20394: BUG: unnecessary computations in iirpeak/iirnotch/iircomb filter…

- #20399: BUG: scipy.special.logsumexp raises ValueError for a zero-size…

- #20419: BUG: nightly: .special.jv now promotes float32 inputs to float64

- #20434: BUG: sparse dia_array changes to csr after multiplication

- #20455: BUG: signal.iirfilter: overflow for integer input

- #20458: MAINT: more potential cleanups related to version bumps

- #20461: DOC: some likely changes to release process docs

- #20466: BUG: scipy.linalg.bandwidth returns incorrect upper bandwidth

- #20470: BUG: `TestNNLS.test_nnls_inner_loop_case1` fails with MKL

- #20486: DEP: deprecate and remove remaining usages of slur-adjacent “trapz”

- #20488: BUG: When given invalid bounds, `_minimize_neldermead` raises…

- #20492: DOC: linalg.solve_discrete_lyapunov: dead reference link

- #20502: BUG: special.hyp2f1: local test failure

- #20509: DOC: Clarify behavior of `sparse.csgraph.dijkstra` for `directed=False`

- #20523: CI/BLD: Nightly wheel builds failing for macOS x86_64

- #20535: BUG: generate_f2py mod is called by the wrong interpreter

- #20540: BUG: pytest scipy/linalg/tests/test_extending.py fails with Cython…

- #20551: DOC/DEV: clearly document which code has an active upstream repo

- #20562: BUG: Invalid default bracket selection in _bracket_minimum.

- #20564: TST: stats array API failure for test_skew_constant_value[torch]…

- #20584: BUG: `optimize.linprog` fails with `list` type `integrality`…

- #20587: BLD: warning from `scipy/special/special/gamma.h`

- #20598: ENH: special: add log of wright_bessel

- #20603: DOC: document switch from mailing list to discourse

- #20614: DOC: dual_annealing optimizer does not pass bounds to minimizer…

- #20618: BUG: scipy ‘minimize’ with method=’trust-constr’ with equality…

- #20620: DOC: Suggested improvement to interp2d transition guide

- #20641: BUG: stats: Two new XSLOW test failures

- #20661: MAINT, TST: failure in test_axis_nan_policy_decorated_positional_args…

- #20662: DOC: Missing blankspace in error message raised by cont2discrete()

- #20674: DOC: A typo in authors name in signal.ellipap reference

- #20683: DOC: A typo in ValueError raised by signal.iirdesign

- #20691: ENH: Reintroduce Apple Accelerate support

- #20697: BUG: special: algorithmic Error in `ratevl` in `cephes/polevl.h`

- #20755: BUG: stats: Two new test failures

- #20768: BUG: optimize.minimize: garbage collection in `lbfgs`

- #20783: BUG: Build failure on PyPy3.10 7.3.16: `error: ‘Py_Initialize’…

- #20797: BUG: special.hyp1f1: broken for complex argument

- #20802: MAINT, TST: pytest-fail-slow and local concurrent runs/variability

- #20840: BUG: first shared library in scipy fails to be consumed by MSVC

- #20850: DOC: stats.bootstrap: improve documentation multidimensional…

- #20852: BUG: Library not loaded: @rpath/libgfortran.5.dylib for scipy…

- #20860: BUG/BLD: scipy-1.13.1 fails to build with msvc

- #20901: BUG: `zsh: abort python` after `scipy.linalg.sqrtm` on empty…

- #20911: TST: TestEig.test_singular failing tolerance with generic BLAS…

- #20921: DOC: stats: wrong docstrings of `*Result` classes

- #20938: TST: tolerance violations with SciPy 1.14.0rc1 on linux-{aarch64,ppc64le}

- #20943: TST: test failures on windows with SciPy 1.14.0rc1

## Pull requests for 1.14.0

- #13534: ENH: Add more initialization methods for HessianUpdateStrategy

- #15321: ENH: fft: Add `prev_fast_len` to complement `next_fast_len`

- #17348: BUG: integrate: make `select_initial_step` aware of integration…

- #17924: ENH: sparse.linalg: speed up `spsolve_triangular`

- #18926: ENH: Move symiirorder1/2, cspline2d, qspline2d and spline_filter…

- #19561: ENH: stats.power: add function to simulate hypothesis test power

- #19627: FIX: correctly compute group_delay for complex-coefficient TFs

- #19673: DEP: signal: raise error using medfilt and order_filter with…

- #19706: ENH: Add half=True kwarg to minimum_phase

- #19816: BLD: Add Accelerate support for macOS 13.3+

- #19900: MAINT/TST: fft: remove xp backend skips, test `fftfreq` `device`

- #19904: MAINT: remove incidental imports from private modules

- #19923: ENH: stats.mannwhitneyu: replace exact p-value calculation

- #19954: MAINT: Translate wright_bessel function to C++

- #19960: DOC: Add examples to `scipy.interpolate.spalde`

- #19994: ENH: add cobyqa to scipy.optimize.

- #20073: ENH: special: fix premature overflow in `boxcox`

- #20079: ENH: io: Read and write wav files of size > 4GB

- #20085: ENH: array types: add JAX support

- #20089: ENH: Translate complex valued hyp2f1 to C++ and make improvements

- #20127: ENH/TST: Refactor refguide-check, take 3

- #20137: ENH: stats.pearsonr: add support for `axis` argument

- #20187: ENH: sparse.csgraph: Yen K-shortest paths

- #20199: DOC/DEV/MAINT: update core-dev guide

- #20202: DOC: Reorganize contents of stats User Guide section

- #20255: TST: linalg: reenable gges[float32] tests

- #20257: BUG: prevent file descriptor leak in `openblas_support.py`…

- #20260: ENH: Begin overhaul of ufunc machinery

- #20265: ENH: optimize: const qualify Cython array arguments

- #20269: REL: set version to 1.14.0dev0

- #20273: MAINT/DEV: enforce minimum `ruff` version

- #20275: MAINT/DEV: add auto-fix to `dev.py lint`

- #20278: DEP: integrate: remove simps,trapz,cumtrapz

- #20281: BUG: optimize: correct `nfev` values

- #20283: DEP: sparse: deprecate conjtransp() method for dok_array/matrix…

- #20284: ENH: stats.pearsonr: add array API support

- #20289: DOC: Pin Jupyterlite Sphinx to avoid noisy doc builds

- #20292: ENH: stats.moment: add array API support

- #20295: BUG: linalg: support empty arrays

- #20297: BUG: linalg: use SYEV not SYEVR for pinvh

- #20298: DOC: linalg: mention that eigenvalues_only=True/False may change…

- #20304: ENH: interpolate: allow Akima extrapolation

- #20310: MAINT: Pin jupyterlite-sphinx to >=0.13.1

- #20315: DOC: add docs on how to debug linear algebra related issues

- #20317: MAINT/DEV: rename `skip_if_array_api` to `skip_xp_backends`

- #20320: ENH: Generalised ufuncs in special

- #20321: BUG: Fix for scipy.special seterr, geterr, errstate

- #20325: MAINT: Improve performance of ndimage.binary_erosion

- #20326: MAINT: Replace usage of np.prod

- #20328: DOC: fix small typo in odds_ratio

- #20329: MAINT: update `array_api_compat` to v1.5.1

- #20331: MAINT: Fix Cythonize bug in optimize with const view

- #20335: TST: linalg: undo xfails of QZ and DARE

- #20342: BLD: linalg: fix rebuild dependencies for .pyf.src files

- #20354: MAINT: unpin pytest for wheels

- #20355: TST: signal: bump tolerance for new `signal.group_delay` test

- #20356: BLD: update numpy build dependency in pyproject.toml for numpy…

- #20367: STY: always `import numpy as np`

- #20373: MAINT: drop Python 3.9 and NumPy 1.22.x

- #20380: MAINT: forward port 1.13.0 relnotes

- #20382: MAINT: lint: enforce `numpy as np` alias

- #20384: ENH:special:Re-rewrite cdflib in C

- #20390: MAINT:Translate the entirety of cephes into C++

- #20393: MAINT/BLD: Remove `stats._boost` and add the distribution related…

- #20397: ENH: Support scalar-first order of quaternion components in Rotation

- #20403: ENH: special: add ufuncs for amos

- #20404: BUG: interpolate: fix high memory usage for 2 classes

- #20405: BUG: Fix pair of bugs in Amos and Cephes yv which masked each…

- #20413: MAINT: Vendor npyrandom instead of using static library

- #20416: ENH: optimize._chandrupatla: allow infinite function value at…

- #20417: ENH: Make cython_special actual code, not autogenerated

- #20418: BUG: signal: corrections to `iir{peak,notch,comb}` filter gain

- #20420: DOC: stats: speed up the very slow `bootstrap` examples

- #20421: Added float32 overloads for amos functions

- #20422: TST: Test cimporting Cython APIs

- #20424: MAINT:special: Add license to cdflib and remove old pxd file

- #20425: MAINT: Fix DOI visibility badge in README

- #20426: DOC: add hints on how to debug linalg issues with gdb

- #20427: DOC: speed up some examples

- #20438: ENH: Translate `sph_harm` Cython->C++, add `sph_harm_all`…

- #20441: BLD: Install cython_special.pxd

- #20443: MAINT: sparse: Update EfficiencyWarning message to reflect array/matrix

- #20445: ENH: sparse: special-case DIA * scalar

- #20446: MAINT: remove repetitive word typos

- #20450: BLD: avoid setting an environment variable in a meson.build file

- #20453: DOC: special: add examples for pdtrc, pdtri, pdtrik

- #20454: DOC: Update toolchain roadmap (1/N)

- #20456: BUG: signal.iirfilter: avoid integer overflow

- #20457: ENH: Add `scipy.special._ufuncs._iv_ratio`

- #20460: DOC: Remove extra css colors and settings

- #20462: DOC: update readme with link to new forum

- #20463: MAINT: Refactor special function ufunc generation and consolidate…

- #20465: MAINT: special: fix compiler warning for unused variable

- #20467: MAINT: stats._contains_nan: fix bug when -inf and inf are in…

- #20468: TST: stats: mark tests slow/xslow

- #20469: MAINT/CI: Remove doctesting from refguide-check

- #20477: BLD: ensure all static libraries use hidden visibility

- #20478: CI/MAINT: Increase minimum required compiler versions to GCC…

- #20480: CI: fail slow tests

- #20481: ENH: stats: Add the Irwin-Hall distribution

- #20482: CI: standardize job names

- #20483: ENH: special: translate `sph_bessel` to C++, refactor `cyl_bessel`

- #20487: TST: adjust other very slow tests

- #20490: BUG: sparse: raise error for array classes, document/test old…

- #20494: BUG: _qmc.py::_random_oa_lhs produces correlated samples

- #20495: BUG: Remove keyword argument from ValueError in SciPy.optimize

- #20497: DEP: interpolate: replace interp2d by stub

- #20498: DEP: switch sparse methods to kwarg-only; remove tol/restrt kwargs

- #20499: DEP: execute sparse array API deprecations

- #20500: DOC: Update dead reference link in `Scipy.linalg._solvers.py`:…

- #20501: MAINT: optimize._chandrupatla: reduce xatol

- #20503: MAINT: spatial: Fix type annotation of `query_ball_point`

- #20508: DOC: Fix legacy admonition styling

- #20510: BLD: Accelerate wheels for macOS 14+

- #20511: BUG: Fix raising ValueError on a zero-size array for SciPy.special.logsumexp

- #20515: BLD: default to C17 rather than C99

- #20522: TST: Skip or fix some failing tests on certain macOS builds

- #20526: BLD: adjust lower bound on Clang/LLVM from 14.0 to 12.0

- #20529: MAINT: remove repeated “is” typos

- #20534: BUG: Fixes incorrect upper_band value for scipy.linalg.bandwidth

- #20536: CI: Check whether Python.h is included first in a file

- #20538: TST: _lib: remove redundant test for missing `stacklevel`

- #20541: ENH: stats.skew: add array-API support

- #20542: BLD: Accelerate builds should not define `NO_APPEND_FORTRAN`

- #20545: ENH: stats.ttest_1samp: add array-API support

- #20546: DOC: use more correct and inclusive pronouns

- #20547: DOC: stats.linregress: split stats/mstats documentation

- #20548: TST: Skip Cython tests for editable installs

- #20550: DEP: stats: switch kendalltau to kwarg-only, remove initial_lexsort…

- #20554: DEP: integrate: switch simpson to kwarg-only, remove even kwarg

- #20556: DOC: release process updates

- #20559: DOC/DEV: add core-dev page on vendored code

- #20560: DEP: linalg: remove turbo / eigvals kwargs from linalg.{eigh,eigvalsh}…

- #20563: BUG: Fix invalid default bracket selection in _bracket_minimum

- #20565: DEP: linalg: remove cond / rcond kwargs from linalg.pinv and…

- #20568: DOC: change approx_fprime doctest

- #20572: MAINT: vendor Tempita in `scipy/_build_utils`

- #20575: TST: stats.skew: assert_equal -> xp_assert_equal as appropriate

- #20577: DEV: add unicode check to pre-commit-hook

- #20578: DEP: signal: remove nyq / Hz kwargs in firwin* and switch to…

- #20582: MAINT: optimize.isotonic_regression: remove unnecessary copies

- #20583: TST: stats.rv_continuous.fit: adjust fit XSLOW/XFAIL/skip sets

- #20585: CI/BLD: use scipy-openblas wheel when building

- #20588: DEP: special: remove legacy kwarg from special.comb and switch…

- #20590: Revert “ENH: Use `highspy` in `linprog`”

- #20593: ENH: constants: add array api support

- #20595: ENH: `stats.circ___`: add array-API support

- #20597: ENH: stats.skewtest: add array-API support

- #20600: TYP: update supported Mypy version from 1.0.0 to 1.10.0

- #20604: ENH: stats.monte_carlo_test: add array API support

- #20612: BLD: fix use of non-default interpreter, improve f2py handling

- #20615: ENH: stats: Implement _isf for burr12

- #20616: DOC: integrate: remove references to deprecated and legacy functions

- #20619: ENH: spatial: serialize concurrent calls to QHull

- #20621: TYP: add type annotations to `scipy/_lib/_array_api.py`

- #20625: TST: add dtype dependent default rtol to xp_assert_close

- #20627: MAINT: special: Drop unused function_calls variable in kolmogorov.h

- #20628: TST: integrate.tanhsinh: make test case XSLOW

- #20630: ENH: optimize._jacobian: use _differentiate to compute accurate…

- #20631: ENH: stats.sem: add array-API support

- #20634: ENH: stats: add array-API support to kstat/kstatvar

- #20637: MAINT: Fix broken links in `datasets._fetchers` module

- #20640: TST: adjust new array API test, slow tests

- #20642: TST: stats.ttest_1samp: fix xslow test

- #20643: MAINT:update boost to fix `skewnorm.ppf`

- #20645: ENH: optimize.approx_fprime: avoid quadratic memory usage

- #20646: ENH: special: add `log_wright_bessel`

- #20647: ENH: stats.variation: add array-API support

- #20649: MAINT: sparse: reformat str and repr for sparse arrays, correct…

- #20651: ENH: stats.kstat/kstatvar: add native support for `axis`

- #20656: ENH: Micro-optimizations for spatial.transform.Rotation methods

- #20657: MAINT: remove unused variable in special

- #20658: ENH: stats.kurtosis: add array API support

- #20663: MAINT: stats.kruskal: fix no-arg behavior w/ SCIPY_ARRAY_API=1

- #20664: Fix typo in cont2discrete

- #20665: trust-constr make origin of error message clearer when there…

- #20667: ENH: stats.describe: add array API support

- #20673: ENH: stats.entropy, special.{entr, rel_entr}: add array API support

- #20675: DOC: Fixed typo in signal.ellipap

- #20676: MAINT: clarify dual_annealing-minimizer_kwargs docstring. Closes…

- #20677: TST: test__differential_evolution tweaks for speed

- #20679: MAINT: special.wright_bessel: add comment about reference text

- #20684: MAINT: Fix missing whitespace in signal.iirdesign, spacing consistency…

- #20685: MAINT: Add graceful handling of invalid initial brackets to elementwise…

- #20689: ENH: optimize._chandrupatla: add array API support

- #20694: MAINT: stats: make reducing functions emit consistent warning…

- #20696: MAINT: stats.gstd: return result rather than raising

- #20698: DEV/BLD: add –with-accelerate flag to `dev.py build`

- #20705: MAINT: Add missing whitespace

- #20711: MAINT: numpy cleanup version bumps: fixes issue #20458

- #20712: ENH/BLD: Add install tags for `tests`

- #20715: ENH: stats.kurtosistest: add array API support

- #20716: DEP: integrate.quad_vec: deprecate `quadrature=”trapz”`

- #20722: ENH: sparse: Speed up `_add_sparse` for DIA format

- #20726: DOC: stats.{circmean, circvar, circstd}: improve accuracy/clarity

- #20730: BUG: special: fix algorithmic error in `ratevl` in `cephes/polevl.h`

- #20732: BUG: interpolate: do not segfault on bad boundary conditions

- #20734: BUG: stats.ttest_1samp: fix use of `keepdims`

- #20736: ENH: stats.normaltest/jarque_bera: add array-API support

- #20737: TST, MAINT: run optimize array API tests and fix `chandrupatla`

- #20738: DOC: sparse.csgraph.dijkstra: add warning for `directed=False`…

- #20741: MAINT: optimize: another fail_slow exception for COBYQA

- #20744: MAINT: use PyTorch 2.3 in CI, fix CuPy failures, more type annotations…

- #20745: BUG: Fix incorrect brackets in cephes hyperg.h

- #20746: DOC: stats: update formulas given for kstat/kstatvar to reflect…

- #20748: TST: bump tolerance to address local `test_axis_nan_policy`…

- #20750: ENH: some micro-optimisations for differential_evolution

- #20751: ENH: stats.bartlett: add native `axis` and array API support

- #20753: ENH: stats.chisquare/power_divergence: add array API support

- #20756: TST: stats: refactor tests of normality tests

- #20764: TST: stats.fit: address xslow test failures

- #20765: MAINT: stats.wilcoxon: make `method=’exact’` symmetric w/ ties

- #20769: MAINT: stats: move `multiscale_graphcorr` tests to save time

- #20770: MAINT: optimize: remove circular reference in `ScalarFunction`

- #20775: MAINT: forward port 1.13.1 relnotes

- #20777: ENH: stats: end-to-end array-API support for normality tests

- #20778: DOC: signal: Documentation improvements of `detrend` function

- #20780: DEP: special.comb: deprecate `exact=True` for non-integer intputs

- #20781: TST: stats: remove overhead of array_namespace in calls to _get_pvalue

- #20782: ENH: stats: end-to-end array-API support for NHSTs with chi-squared…

- #20784: DOC: SciPy 1.14.0 relnotes

- #20787: DOC: interpolate: mention default kinds in interp2d transition…

- #20788: ENH: optimize: improve `cobyqa` performance by reducing overhead…

- #20789: DEP: stats.linregress: deprecate one-arg use

- #20790: BUG: special: remove redundant `Py_Initialize`

- #20791: TST: optimize: fix failing tests for `_bracket_minimum`

- #20792: BUG: sparse: Fix argmin/max shape diff between axis 0/1. And…

- #20795: MAINT: fix warnings about `noexcept` and `except *` in Cython…

- #20796: BLD: optimize: silence build warnings coming from HiGHS

- #20798: MAINT: special: fix numpy initialization, avoid build warnings

- #20799: DOC: ndimage: improve grayscale morphology docstrings

- #20804: MAINT: remove pytest-fail-slow from pyproject.toml

- #20805: BUG: special: Restore missing line of code in the function cchg().

- #20807: TST: stats.nbinom: adjust cdf-ppf roundtrip test

- #20812: DOC: extend “building reproducible binaries” page

- #20815: DOC: integrate: odeint user functions must not modify y.

- #20819: REV: revert accidental `cobyqa` update in gh-17924

- #20820: BLD: Warning fix from ``scipy/special/special/gamma.h``

- #20828: DEP: deprecate trapz alias of `stats.trapezoid` distribution

- #20831: MAINT: version pins/prep for 1.14.0rc1

- #20838: DOC: sparse: 1.14.0 release notes additions

- #20839: REL: set 1.14.0rc2 unreleased

- #20841: DOC: add cobyqa website reference

- #20851: DOC: add cobyqa website reference (#20841)

- #20858: MAINT: `stats.bootstrap`: emit `FutureWarning` about broadcasting

- #20870: BLD: test delocate works by removing original lib [wheel build]

- #20881: DOC: mailing list to forum

- #20890: DOC: Write API reference titles in monospace font

- #20909: DEP: special.perm: deprecate non-integer `N` and `k` with…

- #20914: TST: linalg: bump tolerance in `TestEig::test_singular`

- #20919: BLD: optimize: use hidden visibility for static HiGHS libraries

- #20920: MAINT: special: fix msvc build by using `new` and `delete`…

- #20923: DOC: update doctests to satisfy scipy-doctests==1.2.0

- #20927: MAINT: adapt to a scipy-doctests change

- #20933: MAINT: 1.14.0rc2 backports

- #20936: DOC: `array_api.rst`: update 1.14 functions with array API…

- #20937: BUG/BLD: special: Ensure symbols in `sf_error_state` shared…

- #20945: TST: address tolerance violations with SciPy 1.14.0rc1 on linux-{aarch64,ppc64le}

- #20952: TST: loosen tolerance in test_x0_working to pass with alternate…

- #20953: TST: loosen tolerance in test_krandinit slightly to pass with…

- #20961: TST: robustify test_nnls_inner_loop_case1

- #20970: REL: set 1.14.0 rc3 unreleased

- #20973: TST:sparse.linalg: Skip test due to sensitivity to numerical…

- #20979: STY: `_lib._util`: address new mypy complaint in main