scipy 1.15.3__cp311-cp311-win_amd64.whl → 1.16.0rc2__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (759) hide show
  1. scipy/__config__.py +8 -8
  2. scipy/__init__.py +3 -6
  3. scipy/_cyutility.cp311-win_amd64.dll.a +0 -0
  4. scipy/_cyutility.cp311-win_amd64.pyd +0 -0
  5. scipy/_lib/_array_api.py +486 -161
  6. scipy/_lib/_array_api_compat_vendor.py +9 -0
  7. scipy/_lib/_bunch.py +4 -0
  8. scipy/_lib/_ccallback_c.cp311-win_amd64.dll.a +0 -0
  9. scipy/_lib/_ccallback_c.cp311-win_amd64.pyd +0 -0
  10. scipy/_lib/_docscrape.py +1 -1
  11. scipy/_lib/_elementwise_iterative_method.py +15 -26
  12. scipy/_lib/_fpumode.cp311-win_amd64.dll.a +0 -0
  13. scipy/_lib/_fpumode.cp311-win_amd64.pyd +0 -0
  14. scipy/_lib/_sparse.py +41 -0
  15. scipy/_lib/_test_ccallback.cp311-win_amd64.dll.a +0 -0
  16. scipy/_lib/_test_ccallback.cp311-win_amd64.pyd +0 -0
  17. scipy/_lib/_test_deprecation_call.cp311-win_amd64.dll.a +0 -0
  18. scipy/_lib/_test_deprecation_call.cp311-win_amd64.pyd +0 -0
  19. scipy/_lib/_test_deprecation_def.cp311-win_amd64.dll.a +0 -0
  20. scipy/_lib/_test_deprecation_def.cp311-win_amd64.pyd +0 -0
  21. scipy/_lib/_testutils.py +6 -2
  22. scipy/_lib/_uarray/_uarray.cp311-win_amd64.dll.a +0 -0
  23. scipy/_lib/_uarray/_uarray.cp311-win_amd64.pyd +0 -0
  24. scipy/_lib/_util.py +222 -125
  25. scipy/_lib/array_api_compat/__init__.py +4 -4
  26. scipy/_lib/array_api_compat/_internal.py +19 -6
  27. scipy/_lib/array_api_compat/common/__init__.py +1 -1
  28. scipy/_lib/array_api_compat/common/_aliases.py +365 -193
  29. scipy/_lib/array_api_compat/common/_fft.py +94 -64
  30. scipy/_lib/array_api_compat/common/_helpers.py +413 -180
  31. scipy/_lib/array_api_compat/common/_linalg.py +116 -40
  32. scipy/_lib/array_api_compat/common/_typing.py +179 -10
  33. scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
  34. scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
  35. scipy/_lib/array_api_compat/cupy/_info.py +16 -6
  36. scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
  37. scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
  38. scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
  39. scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
  40. scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
  41. scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
  42. scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
  43. scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
  44. scipy/_lib/array_api_compat/numpy/_info.py +36 -16
  45. scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
  46. scipy/_lib/array_api_compat/numpy/fft.py +11 -5
  47. scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
  48. scipy/_lib/array_api_compat/torch/__init__.py +3 -5
  49. scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
  50. scipy/_lib/array_api_compat/torch/_info.py +27 -16
  51. scipy/_lib/array_api_compat/torch/_typing.py +3 -0
  52. scipy/_lib/array_api_compat/torch/fft.py +17 -18
  53. scipy/_lib/array_api_compat/torch/linalg.py +16 -16
  54. scipy/_lib/array_api_extra/__init__.py +26 -3
  55. scipy/_lib/array_api_extra/_delegation.py +171 -0
  56. scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
  57. scipy/_lib/array_api_extra/_lib/_at.py +463 -0
  58. scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
  59. scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
  60. scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
  61. scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
  62. scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
  63. scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
  64. scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
  65. scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
  66. scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
  67. scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
  68. scipy/_lib/array_api_extra/testing.py +359 -0
  69. scipy/_lib/decorator.py +2 -2
  70. scipy/_lib/doccer.py +1 -7
  71. scipy/_lib/messagestream.cp311-win_amd64.dll.a +0 -0
  72. scipy/_lib/messagestream.cp311-win_amd64.pyd +0 -0
  73. scipy/_lib/pyprima/__init__.py +212 -0
  74. scipy/_lib/pyprima/cobyla/__init__.py +0 -0
  75. scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
  76. scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
  77. scipy/_lib/pyprima/cobyla/geometry.py +226 -0
  78. scipy/_lib/pyprima/cobyla/initialize.py +215 -0
  79. scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
  80. scipy/_lib/pyprima/cobyla/update.py +289 -0
  81. scipy/_lib/pyprima/common/__init__.py +0 -0
  82. scipy/_lib/pyprima/common/_bounds.py +34 -0
  83. scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
  84. scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
  85. scipy/_lib/pyprima/common/_project.py +173 -0
  86. scipy/_lib/pyprima/common/checkbreak.py +93 -0
  87. scipy/_lib/pyprima/common/consts.py +47 -0
  88. scipy/_lib/pyprima/common/evaluate.py +99 -0
  89. scipy/_lib/pyprima/common/history.py +38 -0
  90. scipy/_lib/pyprima/common/infos.py +30 -0
  91. scipy/_lib/pyprima/common/linalg.py +435 -0
  92. scipy/_lib/pyprima/common/message.py +290 -0
  93. scipy/_lib/pyprima/common/powalg.py +131 -0
  94. scipy/_lib/pyprima/common/preproc.py +277 -0
  95. scipy/_lib/pyprima/common/present.py +5 -0
  96. scipy/_lib/pyprima/common/ratio.py +54 -0
  97. scipy/_lib/pyprima/common/redrho.py +47 -0
  98. scipy/_lib/pyprima/common/selectx.py +296 -0
  99. scipy/_lib/tests/test__util.py +105 -121
  100. scipy/_lib/tests/test_array_api.py +166 -35
  101. scipy/_lib/tests/test_bunch.py +7 -0
  102. scipy/_lib/tests/test_ccallback.py +2 -10
  103. scipy/_lib/tests/test_public_api.py +13 -0
  104. scipy/cluster/_hierarchy.cp311-win_amd64.dll.a +0 -0
  105. scipy/cluster/_hierarchy.cp311-win_amd64.pyd +0 -0
  106. scipy/cluster/_optimal_leaf_ordering.cp311-win_amd64.dll.a +0 -0
  107. scipy/cluster/_optimal_leaf_ordering.cp311-win_amd64.pyd +0 -0
  108. scipy/cluster/_vq.cp311-win_amd64.dll.a +0 -0
  109. scipy/cluster/_vq.cp311-win_amd64.pyd +0 -0
  110. scipy/cluster/hierarchy.py +393 -223
  111. scipy/cluster/tests/test_hierarchy.py +273 -335
  112. scipy/cluster/tests/test_vq.py +45 -61
  113. scipy/cluster/vq.py +39 -35
  114. scipy/conftest.py +263 -157
  115. scipy/constants/_constants.py +4 -1
  116. scipy/constants/tests/test_codata.py +2 -2
  117. scipy/constants/tests/test_constants.py +11 -18
  118. scipy/datasets/_download_all.py +15 -1
  119. scipy/datasets/_fetchers.py +7 -1
  120. scipy/datasets/_utils.py +1 -1
  121. scipy/differentiate/_differentiate.py +25 -25
  122. scipy/differentiate/tests/test_differentiate.py +24 -25
  123. scipy/fft/_basic.py +20 -0
  124. scipy/fft/_helper.py +3 -34
  125. scipy/fft/_pocketfft/helper.py +29 -1
  126. scipy/fft/_pocketfft/pypocketfft.cp311-win_amd64.dll.a +0 -0
  127. scipy/fft/_pocketfft/pypocketfft.cp311-win_amd64.pyd +0 -0
  128. scipy/fft/_pocketfft/tests/test_basic.py +2 -4
  129. scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
  130. scipy/fft/_realtransforms.py +13 -0
  131. scipy/fft/tests/test_basic.py +27 -25
  132. scipy/fft/tests/test_fftlog.py +16 -7
  133. scipy/fft/tests/test_helper.py +18 -34
  134. scipy/fft/tests/test_real_transforms.py +8 -10
  135. scipy/fftpack/convolve.cp311-win_amd64.dll.a +0 -0
  136. scipy/fftpack/convolve.cp311-win_amd64.pyd +0 -0
  137. scipy/fftpack/tests/test_basic.py +2 -4
  138. scipy/fftpack/tests/test_real_transforms.py +8 -9
  139. scipy/integrate/_bvp.py +9 -3
  140. scipy/integrate/_cubature.py +3 -2
  141. scipy/integrate/_dop.cp311-win_amd64.dll.a +0 -0
  142. scipy/integrate/_dop.cp311-win_amd64.pyd +0 -0
  143. scipy/integrate/_lsoda.cp311-win_amd64.dll.a +0 -0
  144. scipy/integrate/_lsoda.cp311-win_amd64.pyd +0 -0
  145. scipy/integrate/_ode.py +9 -2
  146. scipy/integrate/_odepack.cp311-win_amd64.dll.a +0 -0
  147. scipy/integrate/_odepack.cp311-win_amd64.pyd +0 -0
  148. scipy/integrate/_quad_vec.py +21 -29
  149. scipy/integrate/_quadpack.cp311-win_amd64.dll.a +0 -0
  150. scipy/integrate/_quadpack.cp311-win_amd64.pyd +0 -0
  151. scipy/integrate/_quadpack_py.py +11 -7
  152. scipy/integrate/_quadrature.py +3 -3
  153. scipy/integrate/_rules/_base.py +2 -2
  154. scipy/integrate/_tanhsinh.py +48 -47
  155. scipy/integrate/_test_multivariate.cp311-win_amd64.dll.a +0 -0
  156. scipy/integrate/_test_multivariate.cp311-win_amd64.pyd +0 -0
  157. scipy/integrate/_test_odeint_banded.cp311-win_amd64.dll.a +0 -0
  158. scipy/integrate/_test_odeint_banded.cp311-win_amd64.pyd +0 -0
  159. scipy/integrate/_vode.cp311-win_amd64.dll.a +0 -0
  160. scipy/integrate/_vode.cp311-win_amd64.pyd +0 -0
  161. scipy/integrate/tests/test__quad_vec.py +0 -6
  162. scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
  163. scipy/integrate/tests/test_cubature.py +21 -35
  164. scipy/integrate/tests/test_quadrature.py +6 -8
  165. scipy/integrate/tests/test_tanhsinh.py +56 -48
  166. scipy/interpolate/__init__.py +70 -58
  167. scipy/interpolate/_bary_rational.py +22 -22
  168. scipy/interpolate/_bsplines.py +119 -66
  169. scipy/interpolate/_cubic.py +65 -50
  170. scipy/interpolate/_dfitpack.cp311-win_amd64.dll.a +0 -0
  171. scipy/interpolate/_dfitpack.cp311-win_amd64.pyd +0 -0
  172. scipy/interpolate/_dierckx.cp311-win_amd64.dll.a +0 -0
  173. scipy/interpolate/_dierckx.cp311-win_amd64.pyd +0 -0
  174. scipy/interpolate/_fitpack.cp311-win_amd64.dll.a +0 -0
  175. scipy/interpolate/_fitpack.cp311-win_amd64.pyd +0 -0
  176. scipy/interpolate/_fitpack2.py +9 -6
  177. scipy/interpolate/_fitpack_impl.py +32 -26
  178. scipy/interpolate/_fitpack_repro.py +23 -19
  179. scipy/interpolate/_interpnd.cp311-win_amd64.dll.a +0 -0
  180. scipy/interpolate/_interpnd.cp311-win_amd64.pyd +0 -0
  181. scipy/interpolate/_interpolate.py +30 -12
  182. scipy/interpolate/_ndbspline.py +13 -18
  183. scipy/interpolate/_ndgriddata.py +5 -8
  184. scipy/interpolate/_polyint.py +95 -31
  185. scipy/interpolate/_ppoly.cp311-win_amd64.dll.a +0 -0
  186. scipy/interpolate/_ppoly.cp311-win_amd64.pyd +0 -0
  187. scipy/interpolate/_rbf.py +2 -2
  188. scipy/interpolate/_rbfinterp.py +1 -1
  189. scipy/interpolate/_rbfinterp_pythran.cp311-win_amd64.dll.a +0 -0
  190. scipy/interpolate/_rbfinterp_pythran.cp311-win_amd64.pyd +0 -0
  191. scipy/interpolate/_rgi.py +31 -26
  192. scipy/interpolate/_rgi_cython.cp311-win_amd64.dll.a +0 -0
  193. scipy/interpolate/_rgi_cython.cp311-win_amd64.pyd +0 -0
  194. scipy/interpolate/dfitpack.py +0 -20
  195. scipy/interpolate/interpnd.py +1 -2
  196. scipy/interpolate/tests/test_bary_rational.py +2 -2
  197. scipy/interpolate/tests/test_bsplines.py +97 -1
  198. scipy/interpolate/tests/test_fitpack2.py +39 -1
  199. scipy/interpolate/tests/test_interpnd.py +32 -20
  200. scipy/interpolate/tests/test_interpolate.py +48 -4
  201. scipy/interpolate/tests/test_rgi.py +2 -1
  202. scipy/io/_fast_matrix_market/__init__.py +2 -0
  203. scipy/io/_fast_matrix_market/_fmm_core.cp311-win_amd64.dll.a +0 -0
  204. scipy/io/_fast_matrix_market/_fmm_core.cp311-win_amd64.pyd +0 -0
  205. scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
  206. scipy/io/_harwell_boeing/hb.py +7 -11
  207. scipy/io/_idl.py +5 -7
  208. scipy/io/_netcdf.py +15 -5
  209. scipy/io/_test_fortran.cp311-win_amd64.dll.a +0 -0
  210. scipy/io/_test_fortran.cp311-win_amd64.pyd +0 -0
  211. scipy/io/arff/tests/test_arffread.py +3 -3
  212. scipy/io/matlab/__init__.py +5 -3
  213. scipy/io/matlab/_mio.py +4 -1
  214. scipy/io/matlab/_mio5.py +19 -13
  215. scipy/io/matlab/_mio5_utils.cp311-win_amd64.dll.a +0 -0
  216. scipy/io/matlab/_mio5_utils.cp311-win_amd64.pyd +0 -0
  217. scipy/io/matlab/_mio_utils.cp311-win_amd64.dll.a +0 -0
  218. scipy/io/matlab/_mio_utils.cp311-win_amd64.pyd +0 -0
  219. scipy/io/matlab/_miobase.py +4 -1
  220. scipy/io/matlab/_streams.cp311-win_amd64.dll.a +0 -0
  221. scipy/io/matlab/_streams.cp311-win_amd64.pyd +0 -0
  222. scipy/io/matlab/tests/test_mio.py +46 -18
  223. scipy/io/matlab/tests/test_mio_funcs.py +1 -1
  224. scipy/io/tests/test_mmio.py +7 -1
  225. scipy/io/tests/test_wavfile.py +41 -0
  226. scipy/io/wavfile.py +57 -10
  227. scipy/linalg/_basic.py +113 -86
  228. scipy/linalg/_cythonized_array_utils.cp311-win_amd64.dll.a +0 -0
  229. scipy/linalg/_cythonized_array_utils.cp311-win_amd64.pyd +0 -0
  230. scipy/linalg/_decomp.py +22 -9
  231. scipy/linalg/_decomp_cholesky.py +28 -13
  232. scipy/linalg/_decomp_cossin.py +45 -30
  233. scipy/linalg/_decomp_interpolative.cp311-win_amd64.dll.a +0 -0
  234. scipy/linalg/_decomp_interpolative.cp311-win_amd64.pyd +0 -0
  235. scipy/linalg/_decomp_ldl.py +4 -1
  236. scipy/linalg/_decomp_lu.py +18 -6
  237. scipy/linalg/_decomp_lu_cython.cp311-win_amd64.dll.a +0 -0
  238. scipy/linalg/_decomp_lu_cython.cp311-win_amd64.pyd +0 -0
  239. scipy/linalg/_decomp_polar.py +2 -0
  240. scipy/linalg/_decomp_qr.py +6 -2
  241. scipy/linalg/_decomp_qz.py +3 -0
  242. scipy/linalg/_decomp_schur.py +3 -1
  243. scipy/linalg/_decomp_svd.py +13 -2
  244. scipy/linalg/_decomp_update.cp311-win_amd64.dll.a +0 -0
  245. scipy/linalg/_decomp_update.cp311-win_amd64.pyd +0 -0
  246. scipy/linalg/_expm_frechet.py +4 -0
  247. scipy/linalg/_fblas.cp311-win_amd64.dll.a +0 -0
  248. scipy/linalg/_fblas.cp311-win_amd64.pyd +0 -0
  249. scipy/linalg/_flapack.cp311-win_amd64.dll.a +0 -0
  250. scipy/linalg/_flapack.cp311-win_amd64.pyd +0 -0
  251. scipy/linalg/_linalg_pythran.cp311-win_amd64.dll.a +0 -0
  252. scipy/linalg/_linalg_pythran.cp311-win_amd64.pyd +0 -0
  253. scipy/linalg/_matfuncs.py +187 -4
  254. scipy/linalg/_matfuncs_expm.cp311-win_amd64.dll.a +0 -0
  255. scipy/linalg/_matfuncs_expm.cp311-win_amd64.pyd +0 -0
  256. scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_amd64.dll.a +0 -0
  257. scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_amd64.pyd +0 -0
  258. scipy/linalg/_matfuncs_sqrtm.py +1 -99
  259. scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_amd64.dll.a +0 -0
  260. scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_amd64.pyd +0 -0
  261. scipy/linalg/_procrustes.py +2 -0
  262. scipy/linalg/_sketches.py +17 -6
  263. scipy/linalg/_solve_toeplitz.cp311-win_amd64.dll.a +0 -0
  264. scipy/linalg/_solve_toeplitz.cp311-win_amd64.pyd +0 -0
  265. scipy/linalg/_solvers.py +7 -2
  266. scipy/linalg/_special_matrices.py +26 -36
  267. scipy/linalg/cython_blas.cp311-win_amd64.dll.a +0 -0
  268. scipy/linalg/cython_blas.cp311-win_amd64.pyd +0 -0
  269. scipy/linalg/cython_lapack.cp311-win_amd64.dll.a +0 -0
  270. scipy/linalg/cython_lapack.cp311-win_amd64.pyd +0 -0
  271. scipy/linalg/lapack.py +22 -2
  272. scipy/linalg/tests/_cython_examples/meson.build +7 -0
  273. scipy/linalg/tests/test_basic.py +31 -16
  274. scipy/linalg/tests/test_batch.py +588 -0
  275. scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
  276. scipy/linalg/tests/test_decomp.py +40 -3
  277. scipy/linalg/tests/test_decomp_cossin.py +14 -0
  278. scipy/linalg/tests/test_decomp_ldl.py +1 -1
  279. scipy/linalg/tests/test_lapack.py +115 -7
  280. scipy/linalg/tests/test_matfuncs.py +157 -102
  281. scipy/linalg/tests/test_procrustes.py +0 -7
  282. scipy/linalg/tests/test_solve_toeplitz.py +1 -1
  283. scipy/linalg/tests/test_special_matrices.py +1 -5
  284. scipy/ndimage/__init__.py +1 -0
  285. scipy/ndimage/_ctest.cp311-win_amd64.dll.a +0 -0
  286. scipy/ndimage/_ctest.cp311-win_amd64.pyd +0 -0
  287. scipy/ndimage/_cytest.cp311-win_amd64.dll.a +0 -0
  288. scipy/ndimage/_cytest.cp311-win_amd64.pyd +0 -0
  289. scipy/ndimage/_delegators.py +8 -2
  290. scipy/ndimage/_filters.py +453 -5
  291. scipy/ndimage/_interpolation.py +36 -6
  292. scipy/ndimage/_measurements.py +4 -2
  293. scipy/ndimage/_morphology.py +5 -0
  294. scipy/ndimage/_nd_image.cp311-win_amd64.dll.a +0 -0
  295. scipy/ndimage/_nd_image.cp311-win_amd64.pyd +0 -0
  296. scipy/ndimage/_ni_docstrings.py +5 -1
  297. scipy/ndimage/_ni_label.cp311-win_amd64.dll.a +0 -0
  298. scipy/ndimage/_ni_label.cp311-win_amd64.pyd +0 -0
  299. scipy/ndimage/_ni_support.py +1 -5
  300. scipy/ndimage/_rank_filter_1d.cp311-win_amd64.dll.a +0 -0
  301. scipy/ndimage/_rank_filter_1d.cp311-win_amd64.pyd +0 -0
  302. scipy/ndimage/_support_alternative_backends.py +18 -6
  303. scipy/ndimage/tests/test_filters.py +370 -259
  304. scipy/ndimage/tests/test_fourier.py +7 -9
  305. scipy/ndimage/tests/test_interpolation.py +68 -61
  306. scipy/ndimage/tests/test_measurements.py +18 -35
  307. scipy/ndimage/tests/test_morphology.py +143 -131
  308. scipy/ndimage/tests/test_splines.py +1 -3
  309. scipy/odr/__odrpack.cp311-win_amd64.dll.a +0 -0
  310. scipy/odr/__odrpack.cp311-win_amd64.pyd +0 -0
  311. scipy/optimize/_basinhopping.py +13 -7
  312. scipy/optimize/_bglu_dense.cp311-win_amd64.dll.a +0 -0
  313. scipy/optimize/_bglu_dense.cp311-win_amd64.pyd +0 -0
  314. scipy/optimize/_bracket.py +17 -24
  315. scipy/optimize/_chandrupatla.py +9 -10
  316. scipy/optimize/_cobyla_py.py +104 -123
  317. scipy/optimize/_constraints.py +14 -10
  318. scipy/optimize/_differentiable_functions.py +371 -230
  319. scipy/optimize/_differentialevolution.py +4 -3
  320. scipy/optimize/_direct.cp311-win_amd64.dll.a +0 -0
  321. scipy/optimize/_direct.cp311-win_amd64.pyd +0 -0
  322. scipy/optimize/_dual_annealing.py +1 -1
  323. scipy/optimize/_elementwise.py +1 -4
  324. scipy/optimize/_group_columns.cp311-win_amd64.dll.a +0 -0
  325. scipy/optimize/_group_columns.cp311-win_amd64.pyd +0 -0
  326. scipy/optimize/_highspy/_core.cp311-win_amd64.dll.a +0 -0
  327. scipy/optimize/_highspy/_core.cp311-win_amd64.pyd +0 -0
  328. scipy/optimize/_highspy/_highs_options.cp311-win_amd64.dll.a +0 -0
  329. scipy/optimize/_highspy/_highs_options.cp311-win_amd64.pyd +0 -0
  330. scipy/optimize/_lbfgsb.cp311-win_amd64.dll.a +0 -0
  331. scipy/optimize/_lbfgsb.cp311-win_amd64.pyd +0 -0
  332. scipy/optimize/_lbfgsb_py.py +57 -16
  333. scipy/optimize/_linprog_doc.py +2 -2
  334. scipy/optimize/_linprog_highs.py +2 -2
  335. scipy/optimize/_linprog_ip.py +25 -10
  336. scipy/optimize/_linprog_util.py +14 -16
  337. scipy/optimize/_lsap.cp311-win_amd64.dll.a +0 -0
  338. scipy/optimize/_lsap.cp311-win_amd64.pyd +0 -0
  339. scipy/optimize/_lsq/common.py +3 -3
  340. scipy/optimize/_lsq/dogbox.py +16 -2
  341. scipy/optimize/_lsq/givens_elimination.cp311-win_amd64.dll.a +0 -0
  342. scipy/optimize/_lsq/givens_elimination.cp311-win_amd64.pyd +0 -0
  343. scipy/optimize/_lsq/least_squares.py +198 -126
  344. scipy/optimize/_lsq/lsq_linear.py +6 -6
  345. scipy/optimize/_lsq/trf.py +35 -8
  346. scipy/optimize/_milp.py +3 -1
  347. scipy/optimize/_minimize.py +105 -36
  348. scipy/optimize/_minpack.cp311-win_amd64.dll.a +0 -0
  349. scipy/optimize/_minpack.cp311-win_amd64.pyd +0 -0
  350. scipy/optimize/_minpack_py.py +21 -14
  351. scipy/optimize/_moduleTNC.cp311-win_amd64.dll.a +0 -0
  352. scipy/optimize/_moduleTNC.cp311-win_amd64.pyd +0 -0
  353. scipy/optimize/_nnls.py +20 -21
  354. scipy/optimize/_nonlin.py +34 -3
  355. scipy/optimize/_numdiff.py +288 -110
  356. scipy/optimize/_optimize.py +86 -48
  357. scipy/optimize/_pava_pybind.cp311-win_amd64.dll.a +0 -0
  358. scipy/optimize/_pava_pybind.cp311-win_amd64.pyd +0 -0
  359. scipy/optimize/_remove_redundancy.py +5 -5
  360. scipy/optimize/_root_scalar.py +1 -1
  361. scipy/optimize/_shgo.py +6 -0
  362. scipy/optimize/_shgo_lib/_complex.py +1 -1
  363. scipy/optimize/_slsqp_py.py +216 -124
  364. scipy/optimize/_slsqplib.cp311-win_amd64.dll.a +0 -0
  365. scipy/optimize/_slsqplib.cp311-win_amd64.pyd +0 -0
  366. scipy/optimize/_spectral.py +1 -1
  367. scipy/optimize/_tnc.py +8 -1
  368. scipy/optimize/_trlib/_trlib.cp311-win_amd64.dll.a +0 -0
  369. scipy/optimize/_trlib/_trlib.cp311-win_amd64.pyd +0 -0
  370. scipy/optimize/_trustregion.py +20 -6
  371. scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
  372. scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
  373. scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
  374. scipy/optimize/_trustregion_constr/projections.py +12 -8
  375. scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
  376. scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
  377. scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
  378. scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
  379. scipy/optimize/_trustregion_exact.py +0 -1
  380. scipy/optimize/_zeros.cp311-win_amd64.dll.a +0 -0
  381. scipy/optimize/_zeros.cp311-win_amd64.pyd +0 -0
  382. scipy/optimize/_zeros_py.py +97 -17
  383. scipy/optimize/cython_optimize/_zeros.cp311-win_amd64.dll.a +0 -0
  384. scipy/optimize/cython_optimize/_zeros.cp311-win_amd64.pyd +0 -0
  385. scipy/optimize/slsqp.py +0 -1
  386. scipy/optimize/tests/test__basinhopping.py +1 -1
  387. scipy/optimize/tests/test__differential_evolution.py +4 -4
  388. scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
  389. scipy/optimize/tests/test__numdiff.py +66 -22
  390. scipy/optimize/tests/test__remove_redundancy.py +2 -2
  391. scipy/optimize/tests/test__shgo.py +9 -1
  392. scipy/optimize/tests/test_bracket.py +36 -46
  393. scipy/optimize/tests/test_chandrupatla.py +133 -135
  394. scipy/optimize/tests/test_cobyla.py +74 -45
  395. scipy/optimize/tests/test_constraints.py +1 -1
  396. scipy/optimize/tests/test_differentiable_functions.py +226 -6
  397. scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
  398. scipy/optimize/tests/test_least_squares.py +125 -13
  399. scipy/optimize/tests/test_linear_assignment.py +3 -3
  400. scipy/optimize/tests/test_linprog.py +3 -3
  401. scipy/optimize/tests/test_lsq_linear.py +6 -6
  402. scipy/optimize/tests/test_minimize_constrained.py +2 -2
  403. scipy/optimize/tests/test_minpack.py +4 -4
  404. scipy/optimize/tests/test_nnls.py +43 -3
  405. scipy/optimize/tests/test_nonlin.py +36 -0
  406. scipy/optimize/tests/test_optimize.py +95 -17
  407. scipy/optimize/tests/test_slsqp.py +36 -4
  408. scipy/optimize/tests/test_zeros.py +34 -1
  409. scipy/signal/__init__.py +12 -23
  410. scipy/signal/_delegators.py +568 -0
  411. scipy/signal/_filter_design.py +459 -241
  412. scipy/signal/_fir_filter_design.py +262 -90
  413. scipy/signal/_lti_conversion.py +3 -2
  414. scipy/signal/_ltisys.py +118 -91
  415. scipy/signal/_max_len_seq_inner.cp311-win_amd64.dll.a +0 -0
  416. scipy/signal/_max_len_seq_inner.cp311-win_amd64.pyd +0 -0
  417. scipy/signal/_peak_finding_utils.cp311-win_amd64.dll.a +0 -0
  418. scipy/signal/_peak_finding_utils.cp311-win_amd64.pyd +0 -0
  419. scipy/signal/_polyutils.py +172 -0
  420. scipy/signal/_short_time_fft.py +519 -70
  421. scipy/signal/_signal_api.py +30 -0
  422. scipy/signal/_signaltools.py +719 -399
  423. scipy/signal/_sigtools.cp311-win_amd64.dll.a +0 -0
  424. scipy/signal/_sigtools.cp311-win_amd64.pyd +0 -0
  425. scipy/signal/_sosfilt.cp311-win_amd64.dll.a +0 -0
  426. scipy/signal/_sosfilt.cp311-win_amd64.pyd +0 -0
  427. scipy/signal/_spectral_py.py +230 -50
  428. scipy/signal/_spline.cp311-win_amd64.dll.a +0 -0
  429. scipy/signal/_spline.cp311-win_amd64.pyd +0 -0
  430. scipy/signal/_spline_filters.py +108 -68
  431. scipy/signal/_support_alternative_backends.py +73 -0
  432. scipy/signal/_upfirdn.py +4 -1
  433. scipy/signal/_upfirdn_apply.cp311-win_amd64.dll.a +0 -0
  434. scipy/signal/_upfirdn_apply.cp311-win_amd64.pyd +0 -0
  435. scipy/signal/_waveforms.py +2 -11
  436. scipy/signal/_wavelets.py +1 -1
  437. scipy/signal/fir_filter_design.py +1 -0
  438. scipy/signal/spline.py +4 -11
  439. scipy/signal/tests/_scipy_spectral_test_shim.py +2 -171
  440. scipy/signal/tests/test_bsplines.py +114 -79
  441. scipy/signal/tests/test_cont2discrete.py +9 -2
  442. scipy/signal/tests/test_filter_design.py +721 -481
  443. scipy/signal/tests/test_fir_filter_design.py +332 -140
  444. scipy/signal/tests/test_savitzky_golay.py +4 -3
  445. scipy/signal/tests/test_short_time_fft.py +221 -3
  446. scipy/signal/tests/test_signaltools.py +2144 -1348
  447. scipy/signal/tests/test_spectral.py +50 -6
  448. scipy/signal/tests/test_splines.py +161 -96
  449. scipy/signal/tests/test_upfirdn.py +84 -50
  450. scipy/signal/tests/test_waveforms.py +20 -0
  451. scipy/signal/tests/test_windows.py +607 -466
  452. scipy/signal/windows/_windows.py +287 -148
  453. scipy/sparse/__init__.py +23 -4
  454. scipy/sparse/_base.py +270 -108
  455. scipy/sparse/_bsr.py +7 -4
  456. scipy/sparse/_compressed.py +59 -231
  457. scipy/sparse/_construct.py +90 -38
  458. scipy/sparse/_coo.py +115 -181
  459. scipy/sparse/_csc.py +4 -4
  460. scipy/sparse/_csparsetools.cp311-win_amd64.dll.a +0 -0
  461. scipy/sparse/_csparsetools.cp311-win_amd64.pyd +0 -0
  462. scipy/sparse/_csr.py +2 -2
  463. scipy/sparse/_data.py +48 -48
  464. scipy/sparse/_dia.py +105 -18
  465. scipy/sparse/_dok.py +0 -23
  466. scipy/sparse/_index.py +4 -4
  467. scipy/sparse/_matrix.py +23 -0
  468. scipy/sparse/_sparsetools.cp311-win_amd64.dll.a +0 -0
  469. scipy/sparse/_sparsetools.cp311-win_amd64.pyd +0 -0
  470. scipy/sparse/_sputils.py +37 -22
  471. scipy/sparse/base.py +0 -9
  472. scipy/sparse/bsr.py +0 -14
  473. scipy/sparse/compressed.py +0 -23
  474. scipy/sparse/construct.py +0 -6
  475. scipy/sparse/coo.py +0 -14
  476. scipy/sparse/csc.py +0 -3
  477. scipy/sparse/csgraph/_flow.cp311-win_amd64.dll.a +0 -0
  478. scipy/sparse/csgraph/_flow.cp311-win_amd64.pyd +0 -0
  479. scipy/sparse/csgraph/_matching.cp311-win_amd64.dll.a +0 -0
  480. scipy/sparse/csgraph/_matching.cp311-win_amd64.pyd +0 -0
  481. scipy/sparse/csgraph/_min_spanning_tree.cp311-win_amd64.dll.a +0 -0
  482. scipy/sparse/csgraph/_min_spanning_tree.cp311-win_amd64.pyd +0 -0
  483. scipy/sparse/csgraph/_reordering.cp311-win_amd64.dll.a +0 -0
  484. scipy/sparse/csgraph/_reordering.cp311-win_amd64.pyd +0 -0
  485. scipy/sparse/csgraph/_shortest_path.cp311-win_amd64.dll.a +0 -0
  486. scipy/sparse/csgraph/_shortest_path.cp311-win_amd64.pyd +0 -0
  487. scipy/sparse/csgraph/_tools.cp311-win_amd64.dll.a +0 -0
  488. scipy/sparse/csgraph/_tools.cp311-win_amd64.pyd +0 -0
  489. scipy/sparse/csgraph/_traversal.cp311-win_amd64.dll.a +0 -0
  490. scipy/sparse/csgraph/_traversal.cp311-win_amd64.pyd +0 -0
  491. scipy/sparse/csgraph/tests/test_matching.py +14 -2
  492. scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
  493. scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
  494. scipy/sparse/csr.py +0 -5
  495. scipy/sparse/data.py +1 -6
  496. scipy/sparse/dia.py +0 -7
  497. scipy/sparse/dok.py +0 -10
  498. scipy/sparse/linalg/_dsolve/_superlu.cp311-win_amd64.dll.a +0 -0
  499. scipy/sparse/linalg/_dsolve/_superlu.cp311-win_amd64.pyd +0 -0
  500. scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
  501. scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
  502. scipy/sparse/linalg/_eigen/arpack/_arpack.cp311-win_amd64.dll.a +0 -0
  503. scipy/sparse/linalg/_eigen/arpack/_arpack.cp311-win_amd64.pyd +0 -0
  504. scipy/sparse/linalg/_eigen/arpack/arpack.py +23 -17
  505. scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
  506. scipy/sparse/linalg/_interface.py +17 -18
  507. scipy/sparse/linalg/_isolve/_gcrotmk.py +4 -4
  508. scipy/sparse/linalg/_isolve/iterative.py +51 -45
  509. scipy/sparse/linalg/_isolve/lgmres.py +6 -6
  510. scipy/sparse/linalg/_isolve/minres.py +5 -5
  511. scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
  512. scipy/sparse/linalg/_isolve/utils.py +2 -8
  513. scipy/sparse/linalg/_matfuncs.py +1 -1
  514. scipy/sparse/linalg/_norm.py +1 -1
  515. scipy/sparse/linalg/_propack/_cpropack.cp311-win_amd64.dll.a +0 -0
  516. scipy/sparse/linalg/_propack/_cpropack.cp311-win_amd64.pyd +0 -0
  517. scipy/sparse/linalg/_propack/_dpropack.cp311-win_amd64.dll.a +0 -0
  518. scipy/sparse/linalg/_propack/_dpropack.cp311-win_amd64.pyd +0 -0
  519. scipy/sparse/linalg/_propack/_spropack.cp311-win_amd64.dll.a +0 -0
  520. scipy/sparse/linalg/_propack/_spropack.cp311-win_amd64.pyd +0 -0
  521. scipy/sparse/linalg/_propack/_zpropack.cp311-win_amd64.dll.a +0 -0
  522. scipy/sparse/linalg/_propack/_zpropack.cp311-win_amd64.pyd +0 -0
  523. scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
  524. scipy/sparse/linalg/tests/test_pydata_sparse.py +14 -0
  525. scipy/sparse/tests/test_arithmetic1d.py +5 -2
  526. scipy/sparse/tests/test_base.py +214 -42
  527. scipy/sparse/tests/test_common1d.py +7 -7
  528. scipy/sparse/tests/test_construct.py +1 -1
  529. scipy/sparse/tests/test_coo.py +272 -4
  530. scipy/sparse/tests/test_sparsetools.py +5 -0
  531. scipy/sparse/tests/test_sputils.py +36 -7
  532. scipy/spatial/_ckdtree.cp311-win_amd64.dll.a +0 -0
  533. scipy/spatial/_ckdtree.cp311-win_amd64.pyd +0 -0
  534. scipy/spatial/_distance_pybind.cp311-win_amd64.dll.a +0 -0
  535. scipy/spatial/_distance_pybind.cp311-win_amd64.pyd +0 -0
  536. scipy/spatial/_distance_wrap.cp311-win_amd64.dll.a +0 -0
  537. scipy/spatial/_distance_wrap.cp311-win_amd64.pyd +0 -0
  538. scipy/spatial/_hausdorff.cp311-win_amd64.dll.a +0 -0
  539. scipy/spatial/_hausdorff.cp311-win_amd64.pyd +0 -0
  540. scipy/spatial/_qhull.cp311-win_amd64.dll.a +0 -0
  541. scipy/spatial/_qhull.cp311-win_amd64.pyd +0 -0
  542. scipy/spatial/_voronoi.cp311-win_amd64.dll.a +0 -0
  543. scipy/spatial/_voronoi.cp311-win_amd64.pyd +0 -0
  544. scipy/spatial/distance.py +49 -42
  545. scipy/spatial/tests/test_distance.py +15 -1
  546. scipy/spatial/tests/test_kdtree.py +1 -0
  547. scipy/spatial/tests/test_qhull.py +7 -2
  548. scipy/spatial/transform/__init__.py +5 -3
  549. scipy/spatial/transform/_rigid_transform.cp311-win_amd64.dll.a +0 -0
  550. scipy/spatial/transform/_rigid_transform.cp311-win_amd64.pyd +0 -0
  551. scipy/spatial/transform/_rotation.cp311-win_amd64.dll.a +0 -0
  552. scipy/spatial/transform/_rotation.cp311-win_amd64.pyd +0 -0
  553. scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
  554. scipy/spatial/transform/tests/test_rotation.py +1213 -832
  555. scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
  556. scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
  557. scipy/special/__init__.py +1 -47
  558. scipy/special/_add_newdocs.py +34 -772
  559. scipy/special/_basic.py +22 -25
  560. scipy/special/_comb.cp311-win_amd64.dll.a +0 -0
  561. scipy/special/_comb.cp311-win_amd64.pyd +0 -0
  562. scipy/special/_ellip_harm_2.cp311-win_amd64.dll.a +0 -0
  563. scipy/special/_ellip_harm_2.cp311-win_amd64.pyd +0 -0
  564. scipy/special/_gufuncs.cp311-win_amd64.dll.a +0 -0
  565. scipy/special/_gufuncs.cp311-win_amd64.pyd +0 -0
  566. scipy/special/_logsumexp.py +67 -58
  567. scipy/special/_orthogonal.pyi +1 -1
  568. scipy/special/_specfun.cp311-win_amd64.dll.a +0 -0
  569. scipy/special/_specfun.cp311-win_amd64.pyd +0 -0
  570. scipy/special/_special_ufuncs.cp311-win_amd64.dll.a +0 -0
  571. scipy/special/_special_ufuncs.cp311-win_amd64.pyd +0 -0
  572. scipy/special/_spherical_bessel.py +4 -4
  573. scipy/special/_support_alternative_backends.py +212 -119
  574. scipy/special/_test_internal.cp311-win_amd64.dll.a +0 -0
  575. scipy/special/_test_internal.cp311-win_amd64.pyd +0 -0
  576. scipy/special/_testutils.py +4 -4
  577. scipy/special/_ufuncs.cp311-win_amd64.dll.a +0 -0
  578. scipy/special/_ufuncs.cp311-win_amd64.pyd +0 -0
  579. scipy/special/_ufuncs.pyi +1 -0
  580. scipy/special/_ufuncs.pyx +215 -1400
  581. scipy/special/_ufuncs_cxx.cp311-win_amd64.dll.a +0 -0
  582. scipy/special/_ufuncs_cxx.cp311-win_amd64.pyd +0 -0
  583. scipy/special/_ufuncs_cxx.pxd +2 -15
  584. scipy/special/_ufuncs_cxx.pyx +5 -44
  585. scipy/special/_ufuncs_cxx_defs.h +2 -16
  586. scipy/special/_ufuncs_defs.h +0 -8
  587. scipy/special/cython_special.cp311-win_amd64.dll.a +0 -0
  588. scipy/special/cython_special.cp311-win_amd64.pyd +0 -0
  589. scipy/special/cython_special.pxd +1 -1
  590. scipy/special/tests/_cython_examples/meson.build +10 -1
  591. scipy/special/tests/test_basic.py +153 -20
  592. scipy/special/tests/test_boost_ufuncs.py +3 -0
  593. scipy/special/tests/test_cdflib.py +35 -11
  594. scipy/special/tests/test_gammainc.py +16 -0
  595. scipy/special/tests/test_hyp2f1.py +2 -2
  596. scipy/special/tests/test_log1mexp.py +85 -0
  597. scipy/special/tests/test_logsumexp.py +206 -64
  598. scipy/special/tests/test_mpmath.py +1 -0
  599. scipy/special/tests/test_nan_inputs.py +1 -1
  600. scipy/special/tests/test_orthogonal.py +17 -18
  601. scipy/special/tests/test_sf_error.py +3 -2
  602. scipy/special/tests/test_sph_harm.py +6 -7
  603. scipy/special/tests/test_support_alternative_backends.py +211 -76
  604. scipy/stats/__init__.py +4 -1
  605. scipy/stats/_ansari_swilk_statistics.cp311-win_amd64.dll.a +0 -0
  606. scipy/stats/_ansari_swilk_statistics.cp311-win_amd64.pyd +0 -0
  607. scipy/stats/_axis_nan_policy.py +5 -12
  608. scipy/stats/_biasedurn.cp311-win_amd64.dll.a +0 -0
  609. scipy/stats/_biasedurn.cp311-win_amd64.pyd +0 -0
  610. scipy/stats/_continued_fraction.py +387 -0
  611. scipy/stats/_continuous_distns.py +277 -310
  612. scipy/stats/_correlation.py +1 -1
  613. scipy/stats/_covariance.py +6 -3
  614. scipy/stats/_discrete_distns.py +39 -32
  615. scipy/stats/_distn_infrastructure.py +39 -12
  616. scipy/stats/_distribution_infrastructure.py +900 -238
  617. scipy/stats/_entropy.py +9 -10
  618. scipy/{_lib → stats}/_finite_differences.py +1 -1
  619. scipy/stats/_hypotests.py +83 -50
  620. scipy/stats/_kde.py +53 -49
  621. scipy/stats/_ksstats.py +1 -1
  622. scipy/stats/_levy_stable/__init__.py +7 -15
  623. scipy/stats/_levy_stable/levyst.cp311-win_amd64.dll.a +0 -0
  624. scipy/stats/_levy_stable/levyst.cp311-win_amd64.pyd +0 -0
  625. scipy/stats/_morestats.py +118 -73
  626. scipy/stats/_mstats_basic.py +13 -17
  627. scipy/stats/_mstats_extras.py +8 -8
  628. scipy/stats/_multivariate.py +89 -113
  629. scipy/stats/_new_distributions.py +97 -20
  630. scipy/stats/_page_trend_test.py +12 -5
  631. scipy/stats/_probability_distribution.py +265 -43
  632. scipy/stats/_qmc.py +14 -9
  633. scipy/stats/_qmc_cy.cp311-win_amd64.dll.a +0 -0
  634. scipy/stats/_qmc_cy.cp311-win_amd64.pyd +0 -0
  635. scipy/stats/_qmvnt.py +16 -95
  636. scipy/stats/_qmvnt_cy.cp311-win_amd64.dll.a +0 -0
  637. scipy/stats/_qmvnt_cy.cp311-win_amd64.pyd +0 -0
  638. scipy/stats/_quantile.py +335 -0
  639. scipy/stats/_rcont/rcont.cp311-win_amd64.dll.a +0 -0
  640. scipy/stats/_rcont/rcont.cp311-win_amd64.pyd +0 -0
  641. scipy/stats/_resampling.py +4 -29
  642. scipy/stats/_sampling.py +1 -1
  643. scipy/stats/_sobol.cp311-win_amd64.dll.a +0 -0
  644. scipy/stats/_sobol.cp311-win_amd64.pyd +0 -0
  645. scipy/stats/_stats.cp311-win_amd64.dll.a +0 -0
  646. scipy/stats/_stats.cp311-win_amd64.pyd +0 -0
  647. scipy/stats/_stats_mstats_common.py +21 -2
  648. scipy/stats/_stats_py.py +550 -476
  649. scipy/stats/_stats_pythran.cp311-win_amd64.dll.a +0 -0
  650. scipy/stats/_stats_pythran.cp311-win_amd64.pyd +0 -0
  651. scipy/stats/_unuran/unuran_wrapper.cp311-win_amd64.dll.a +0 -0
  652. scipy/stats/_unuran/unuran_wrapper.cp311-win_amd64.pyd +0 -0
  653. scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
  654. scipy/stats/_variation.py +6 -8
  655. scipy/stats/_wilcoxon.py +13 -7
  656. scipy/stats/tests/common_tests.py +6 -4
  657. scipy/stats/tests/test_axis_nan_policy.py +62 -24
  658. scipy/stats/tests/test_continued_fraction.py +173 -0
  659. scipy/stats/tests/test_continuous.py +379 -60
  660. scipy/stats/tests/test_continuous_basic.py +18 -12
  661. scipy/stats/tests/test_discrete_basic.py +14 -8
  662. scipy/stats/tests/test_discrete_distns.py +16 -16
  663. scipy/stats/tests/test_distributions.py +95 -75
  664. scipy/stats/tests/test_entropy.py +40 -48
  665. scipy/stats/tests/test_fit.py +4 -3
  666. scipy/stats/tests/test_hypotests.py +153 -24
  667. scipy/stats/tests/test_kdeoth.py +109 -41
  668. scipy/stats/tests/test_marray.py +289 -0
  669. scipy/stats/tests/test_morestats.py +79 -47
  670. scipy/stats/tests/test_mstats_basic.py +3 -3
  671. scipy/stats/tests/test_multivariate.py +434 -83
  672. scipy/stats/tests/test_qmc.py +13 -10
  673. scipy/stats/tests/test_quantile.py +199 -0
  674. scipy/stats/tests/test_rank.py +119 -112
  675. scipy/stats/tests/test_resampling.py +47 -56
  676. scipy/stats/tests/test_sampling.py +9 -4
  677. scipy/stats/tests/test_stats.py +799 -939
  678. scipy/stats/tests/test_variation.py +8 -6
  679. scipy/version.py +2 -2
  680. scipy-1.16.0rc2.dist-info/DELVEWHEEL +2 -0
  681. {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/LICENSE.txt +4 -4
  682. {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/METADATA +11 -11
  683. {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/RECORD +685 -693
  684. scipy/_lib/array_api_extra/_funcs.py +0 -484
  685. scipy/_lib/array_api_extra/_typing.py +0 -8
  686. scipy/interpolate/_bspl.cp311-win_amd64.dll.a +0 -0
  687. scipy/interpolate/_bspl.cp311-win_amd64.pyd +0 -0
  688. scipy/optimize/_cobyla.cp311-win_amd64.dll.a +0 -0
  689. scipy/optimize/_cobyla.cp311-win_amd64.pyd +0 -0
  690. scipy/optimize/_cython_nnls.cp311-win_amd64.dll.a +0 -0
  691. scipy/optimize/_cython_nnls.cp311-win_amd64.pyd +0 -0
  692. scipy/optimize/_slsqp.cp311-win_amd64.dll.a +0 -0
  693. scipy/optimize/_slsqp.cp311-win_amd64.pyd +0 -0
  694. scipy/spatial/qhull_src/COPYING.txt +0 -38
  695. scipy/special/libsf_error_state.dll +0 -0
  696. scipy/special/libsf_error_state.dll.a +0 -0
  697. scipy/special/tests/test_log_softmax.py +0 -109
  698. scipy/special/tests/test_xsf_cuda.py +0 -114
  699. scipy/special/xsf/binom.h +0 -89
  700. scipy/special/xsf/cdflib.h +0 -100
  701. scipy/special/xsf/cephes/airy.h +0 -307
  702. scipy/special/xsf/cephes/besselpoly.h +0 -51
  703. scipy/special/xsf/cephes/beta.h +0 -257
  704. scipy/special/xsf/cephes/cbrt.h +0 -131
  705. scipy/special/xsf/cephes/chbevl.h +0 -85
  706. scipy/special/xsf/cephes/chdtr.h +0 -193
  707. scipy/special/xsf/cephes/const.h +0 -87
  708. scipy/special/xsf/cephes/ellie.h +0 -293
  709. scipy/special/xsf/cephes/ellik.h +0 -251
  710. scipy/special/xsf/cephes/ellpe.h +0 -107
  711. scipy/special/xsf/cephes/ellpk.h +0 -117
  712. scipy/special/xsf/cephes/expn.h +0 -260
  713. scipy/special/xsf/cephes/gamma.h +0 -398
  714. scipy/special/xsf/cephes/hyp2f1.h +0 -596
  715. scipy/special/xsf/cephes/hyperg.h +0 -361
  716. scipy/special/xsf/cephes/i0.h +0 -149
  717. scipy/special/xsf/cephes/i1.h +0 -158
  718. scipy/special/xsf/cephes/igam.h +0 -421
  719. scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
  720. scipy/special/xsf/cephes/igami.h +0 -313
  721. scipy/special/xsf/cephes/j0.h +0 -225
  722. scipy/special/xsf/cephes/j1.h +0 -198
  723. scipy/special/xsf/cephes/jv.h +0 -715
  724. scipy/special/xsf/cephes/k0.h +0 -164
  725. scipy/special/xsf/cephes/k1.h +0 -163
  726. scipy/special/xsf/cephes/kn.h +0 -243
  727. scipy/special/xsf/cephes/lanczos.h +0 -112
  728. scipy/special/xsf/cephes/ndtr.h +0 -275
  729. scipy/special/xsf/cephes/poch.h +0 -85
  730. scipy/special/xsf/cephes/polevl.h +0 -167
  731. scipy/special/xsf/cephes/psi.h +0 -194
  732. scipy/special/xsf/cephes/rgamma.h +0 -111
  733. scipy/special/xsf/cephes/scipy_iv.h +0 -811
  734. scipy/special/xsf/cephes/shichi.h +0 -248
  735. scipy/special/xsf/cephes/sici.h +0 -224
  736. scipy/special/xsf/cephes/sindg.h +0 -221
  737. scipy/special/xsf/cephes/tandg.h +0 -139
  738. scipy/special/xsf/cephes/trig.h +0 -58
  739. scipy/special/xsf/cephes/unity.h +0 -186
  740. scipy/special/xsf/cephes/zeta.h +0 -172
  741. scipy/special/xsf/config.h +0 -304
  742. scipy/special/xsf/digamma.h +0 -205
  743. scipy/special/xsf/error.h +0 -57
  744. scipy/special/xsf/evalpoly.h +0 -47
  745. scipy/special/xsf/expint.h +0 -266
  746. scipy/special/xsf/hyp2f1.h +0 -694
  747. scipy/special/xsf/iv_ratio.h +0 -173
  748. scipy/special/xsf/lambertw.h +0 -150
  749. scipy/special/xsf/loggamma.h +0 -163
  750. scipy/special/xsf/sici.h +0 -200
  751. scipy/special/xsf/tools.h +0 -427
  752. scipy/special/xsf/trig.h +0 -164
  753. scipy/special/xsf/wright_bessel.h +0 -843
  754. scipy/special/xsf/zlog1.h +0 -35
  755. scipy/stats/_mvn.cp311-win_amd64.dll.a +0 -0
  756. scipy/stats/_mvn.cp311-win_amd64.pyd +0 -0
  757. scipy-1.15.3.dist-info/DELVEWHEEL +0 -2
  758. /scipy-1.15.3-cp311-cp311-win_amd64.whl → /scipy-1.16.0rc2-cp311-cp311-win_amd64.whl +0 -0
  759. {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/WHEEL +0 -0
@@ -6,7 +6,6 @@ import math
6
6
  import numpy as np
7
7
  from numpy.testing import assert_allclose
8
8
 
9
- from scipy.conftest import array_api_compatible
10
9
  import scipy._lib._elementwise_iterative_method as eim
11
10
  from scipy._lib._array_api_no_0d import xp_assert_close, xp_assert_equal
12
11
  from scipy._lib._array_api import array_namespace, xp_size, xp_ravel, xp_copy, is_numpy
@@ -20,6 +19,7 @@ def norm_pdf(x, xp=None):
20
19
  xp = array_namespace(x) if xp is None else xp
21
20
  return 1/(2*xp.pi)**0.5 * xp.exp(-x**2/2)
22
21
 
22
+
23
23
  def norm_logpdf(x, xp=None):
24
24
  xp = array_namespace(x) if xp is None else xp
25
25
  return -0.5*math.log(2*xp.pi) - x**2/2
@@ -43,11 +43,12 @@ def _vectorize(xp):
43
43
  return decorator
44
44
 
45
45
 
46
- @array_api_compatible
47
- @pytest.mark.usefixtures("skip_xp_backends")
48
46
  @pytest.mark.skip_xp_backends(
49
47
  'array_api_strict', reason='Currently uses fancy indexing assignment.'
50
48
  )
49
+ @pytest.mark.skip_xp_backends(
50
+ 'dask.array', reason='boolean indexing assignment'
51
+ )
51
52
  @pytest.mark.skip_xp_backends(
52
53
  'jax.numpy', reason='JAX arrays do not support item assignment.'
53
54
  )
@@ -233,11 +234,11 @@ class TestTanhSinh:
233
234
  logres = _tanhsinh(norm_logpdf, *limits, log=True)
234
235
  xp_assert_close(xp.exp(logres.integral), ref, check_dtype=False)
235
236
  # Transformation should not make the result complex unnecessarily
236
- xp_test = array_namespace(*limits) # we need xp.isdtype
237
- assert (xp_test.isdtype(logres.integral.dtype, "real floating") if ref > 0
238
- else xp_test.isdtype(logres.integral.dtype, "complex floating"))
237
+ assert (xp.isdtype(logres.integral.dtype, "real floating") if ref > 0
238
+ else xp.isdtype(logres.integral.dtype, "complex floating"))
239
239
 
240
- xp_assert_close(xp.exp(logres.error), res.error, atol=1e-16, check_dtype=False)
240
+ atol = 2 * xp.finfo(res.error.dtype).eps
241
+ xp_assert_close(xp.exp(logres.error), res.error, atol=atol, check_dtype=False)
241
242
 
242
243
  # 15 skipped intentionally; it's very difficult numerically
243
244
  @pytest.mark.skip_xp_backends(np_only=True,
@@ -248,7 +249,7 @@ class TestTanhSinh:
248
249
  rtol = 2e-8
249
250
  res = _tanhsinh(f, 0, f.b, rtol=rtol)
250
251
  assert_allclose(res.integral, f.ref, rtol=rtol)
251
- if f_number not in {14}: # mildly underestimates error here
252
+ if f_number not in {7, 12, 14}: # mildly underestimates error here
252
253
  true_error = abs(self.error(res.integral, f.ref)/res.integral)
253
254
  assert true_error < res.error
254
255
 
@@ -299,18 +300,17 @@ class TestTanhSinh:
299
300
  res = _tanhsinh(f, a, b, args=(p,))
300
301
  refs = _tanhsinh_single(a, b, p)
301
302
 
302
- xp_test = array_namespace(a) # need xp.stack, isdtype
303
303
  attrs = ['integral', 'error', 'success', 'status', 'nfev', 'maxlevel']
304
304
  for attr in attrs:
305
- ref_attr = xp_test.stack([getattr(ref, attr) for ref in refs])
305
+ ref_attr = xp.stack([getattr(ref, attr) for ref in refs])
306
306
  res_attr = xp_ravel(getattr(res, attr))
307
307
  xp_assert_close(res_attr, ref_attr, rtol=1e-15)
308
308
  assert getattr(res, attr).shape == shape
309
309
 
310
- assert xp_test.isdtype(res.success.dtype, 'bool')
311
- assert xp_test.isdtype(res.status.dtype, 'integral')
312
- assert xp_test.isdtype(res.nfev.dtype, 'integral')
313
- assert xp_test.isdtype(res.maxlevel.dtype, 'integral')
310
+ assert xp.isdtype(res.success.dtype, 'bool')
311
+ assert xp.isdtype(res.status.dtype, 'integral')
312
+ assert xp.isdtype(res.nfev.dtype, 'integral')
313
+ assert xp.isdtype(res.maxlevel.dtype, 'integral')
314
314
  assert xp.max(res.nfev) == f.feval
315
315
  # maxlevel = 2 -> 3 function calls (2 initialization, 1 work)
316
316
  assert xp.max(res.maxlevel) >= 2
@@ -383,12 +383,10 @@ class TestTanhSinh:
383
383
  def test_options_and_result_attributes(self, xp):
384
384
  # demonstrate that options are behaving as advertised and status
385
385
  # messages are as intended
386
- xp_test = array_namespace(xp.asarray(1.)) # need xp.atan
387
-
388
386
  def f(x):
389
387
  f.calls += 1
390
388
  f.feval += xp_size(xp.asarray(x))
391
- return x**2 * xp_test.atan(x)
389
+ return x**2 * xp.atan(x)
392
390
 
393
391
  f.ref = xp.asarray((math.pi - 2 + 2 * math.log(2)) / 12, dtype=xp.float64)
394
392
 
@@ -560,21 +558,18 @@ class TestTanhSinh:
560
558
  # integrand is evaluated or the integral/error estimates, only the
561
559
  # number of function calls
562
560
 
563
- # need `xp.concat`, `xp.atan`, and `xp.sort`
564
- xp_test = array_namespace(xp.asarray(1.))
565
-
566
561
  def f(x):
567
562
  f.calls += 1
568
563
  f.feval += xp_size(xp.asarray(x))
569
- f.x = xp_test.concat((f.x, xp_ravel(x)))
570
- return x**2 * xp_test.atan(x)
564
+ f.x = xp.concat((f.x, xp_ravel(x)))
565
+ return x**2 * xp.atan(x)
571
566
 
572
567
  f.feval, f.calls, f.x = 0, 0, xp.asarray([])
573
568
 
574
569
  a = xp.asarray(0, dtype=xp.float64)
575
570
  b = xp.asarray(1, dtype=xp.float64)
576
571
  ref = _tanhsinh(f, a, b, minlevel=0, maxlevel=maxlevel)
577
- ref_x = xp_test.sort(f.x)
572
+ ref_x = xp.sort(f.x)
578
573
 
579
574
  for minlevel in range(0, maxlevel + 1):
580
575
  f.feval, f.calls, f.x = 0, 0, xp.asarray([])
@@ -587,7 +582,7 @@ class TestTanhSinh:
587
582
  assert res.nfev == f.feval == f.x.shape[0]
588
583
  assert f.calls == maxlevel - minlevel + 1 + 1 # 1 validation call
589
584
  assert res.status == ref.status
590
- xp_assert_equal(ref_x, xp_test.sort(f.x))
585
+ xp_assert_equal(ref_x, xp.sort(f.x))
591
586
 
592
587
  def test_improper_integrals(self, xp):
593
588
  # Test handling of infinite limits of integration (mixed with finite limits)
@@ -679,10 +674,9 @@ class TestTanhSinh:
679
674
  def test_special_cases(self, xp):
680
675
  # Test edge cases and other special cases
681
676
  a, b = xp.asarray(0), xp.asarray(1)
682
- xp_test = array_namespace(a, b) # need `xp.isdtype`
683
677
 
684
678
  def f(x):
685
- assert xp_test.isdtype(x.dtype, "real floating")
679
+ assert xp.isdtype(x.dtype, "real floating")
686
680
  return x
687
681
 
688
682
  res = _tanhsinh(f, a, b)
@@ -756,18 +750,27 @@ class TestTanhSinh:
756
750
  def test_gh_22681_finite_error(self, xp):
757
751
  # gh-22681 noted a case in which the error was NaN on some platforms;
758
752
  # check that this does in fact fail in CI.
759
- a = complex(12, -10)
760
- b = complex(12, 39)
753
+ c1 = complex(12, -10)
754
+ c2 = complex(12, 39)
761
755
  def f(t):
762
- return xp.sin(a * (1 - t) + b * t)
763
- res = _tanhsinh(f, xp.asarray(0.), xp.asarray(1.), atol=0, rtol=0, maxlevel=10)
764
- assert xp.isfinite(res.error)
756
+ return xp.sin(c1 * (1 - t) + c2 * t)
757
+ a, b = xp.asarray(0., dtype=xp.float64), xp.asarray(1., dtype=xp.float64)
758
+ ref = _tanhsinh(f, a, b, atol=0, rtol=0, maxlevel=10)
759
+ assert xp.isfinite(ref.error)
760
+ # Previously, tanhsinh would not detect convergence
761
+ res = _tanhsinh(f, a, b, rtol=1e-14)
762
+ assert res.success
763
+ assert res.maxlevel < 5
764
+ xp_assert_close(res.integral, ref.integral, rtol=1e-15)
765
765
 
766
766
 
767
- @array_api_compatible
768
- @pytest.mark.usefixtures("skip_xp_backends")
767
+ @pytest.mark.skip_xp_backends('torch', reason='data-apis/array-api-compat#271')
769
768
  @pytest.mark.skip_xp_backends('array_api_strict', reason='No fancy indexing.')
770
769
  @pytest.mark.skip_xp_backends('jax.numpy', reason='No mutation.')
770
+ @pytest.mark.skip_xp_backends(
771
+ 'dask.array',
772
+ reason='Data-dependent shapes in boolean index assignment'
773
+ )
771
774
  class TestNSum:
772
775
  rng = np.random.default_rng(5895448232066142650)
773
776
  p = rng.uniform(1, 10, size=10).tolist()
@@ -822,13 +825,21 @@ class TestNSum:
822
825
  with pytest.raises(ValueError, match=message):
823
826
  nsum(f, a, b, tolerances=dict(rtol=pytest))
824
827
 
825
- with np.errstate(all='ignore'):
828
+ with (np.errstate(all='ignore')):
826
829
  res = nsum(f, xp.asarray([np.nan, np.inf]), xp.asarray(1.))
827
- assert xp.all((res.status == -1) & xp.isnan(res.sum)
828
- & xp.isnan(res.error) & ~res.success & res.nfev == 1)
830
+ assert (res.status[0] == -1) and not res.success[0]
831
+ assert xp.isnan(res.sum[0]) and xp.isnan(res.error[0])
832
+ assert (res.status[1] == 0) and res.success[1]
833
+ assert res.sum[1] == res.error[1]
834
+ assert xp.all(res.nfev[0] == 1)
835
+
829
836
  res = nsum(f, xp.asarray(10.), xp.asarray([np.nan, 1]))
830
- assert xp.all((res.status == -1) & xp.isnan(res.sum)
831
- & xp.isnan(res.error) & ~res.success & res.nfev == 1)
837
+ assert (res.status[0] == -1) and not res.success[0]
838
+ assert xp.isnan(res.sum[0]) and xp.isnan(res.error[0])
839
+ assert (res.status[1] == 0) and res.success[1]
840
+ assert res.sum[1] == res.error[1]
841
+ assert xp.all(res.nfev[0] == 1)
842
+
832
843
  res = nsum(f, xp.asarray(1.), xp.asarray(10.),
833
844
  step=xp.asarray([xp.nan, -xp.inf, xp.inf, -1, 0]))
834
845
  assert xp.all((res.status == -1) & xp.isnan(res.sum)
@@ -862,8 +873,7 @@ class TestNSum:
862
873
  res = nsum(f, a, b, args=args)
863
874
  xp_assert_close(res.sum, ref)
864
875
  xp_assert_equal(res.status, xp.zeros(ref.shape, dtype=xp.int32))
865
- xp_test = array_namespace(a) # CuPy doesn't have `bool`
866
- xp_assert_equal(res.success, xp.ones(ref.shape, dtype=xp_test.bool))
876
+ xp_assert_equal(res.success, xp.ones(ref.shape, dtype=xp.bool))
867
877
 
868
878
  with np.errstate(divide='ignore'):
869
879
  logres = nsum(lambda *args: xp.log(f(*args)),
@@ -901,8 +911,7 @@ class TestNSum:
901
911
  ref_err = (high - low)/2 # error (assuming perfect quadrature)
902
912
 
903
913
  # correct reference values where number of terms < maxterms
904
- xp_test = array_namespace(a) # torch needs broadcast_arrays
905
- a, b, step = xp_test.broadcast_arrays(a, b, step)
914
+ a, b, step = xp.broadcast_arrays(a, b, step)
906
915
  for i in np.ndindex(a.shape):
907
916
  ai, bi, stepi = float(a[i]), float(b[i]), float(step[i])
908
917
  if (bi - ai)/stepi + 1 <= maxterms:
@@ -959,10 +968,9 @@ class TestNSum:
959
968
  xp_assert_close(xp_ravel(res_attr), xp.asarray(ref_attr), rtol=1e-15)
960
969
  assert res_attr.shape == shape
961
970
 
962
- xp_test = array_namespace(xp.asarray(1.))
963
- assert xp_test.isdtype(res.success.dtype, 'bool')
964
- assert xp_test.isdtype(res.status.dtype, 'integral')
965
- assert xp_test.isdtype(res.nfev.dtype, 'integral')
971
+ assert xp.isdtype(res.success.dtype, 'bool')
972
+ assert xp.isdtype(res.status.dtype, 'integral')
973
+ assert xp.isdtype(res.nfev.dtype, 'integral')
966
974
  if is_numpy(xp): # other libraries might have different number
967
975
  assert int(xp.max(res.nfev)) == f.feval
968
976
 
@@ -1084,8 +1092,8 @@ class TestNSum:
1084
1092
  return 1 / x
1085
1093
 
1086
1094
  res = nsum(f, xp.asarray(0), xp.asarray(10), maxterms=0)
1087
- assert xp.isnan(res.sum)
1088
- assert xp.isnan(res.error)
1095
+ assert xp.isinf(res.sum)
1096
+ assert xp.isinf(res.error)
1089
1097
  assert res.status == -2
1090
1098
 
1091
1099
  res = nsum(f, xp.asarray(0), xp.asarray(10), maxterms=1)
@@ -5,13 +5,11 @@ Interpolation (:mod:`scipy.interpolate`)
5
5
 
6
6
  .. currentmodule:: scipy.interpolate
7
7
 
8
- Sub-package for objects used in interpolation.
8
+ Sub-package for functions and objects used in interpolation.
9
+
10
+ See the :ref:`user guide <tutorial-interpolate>` for recommendations on choosing a
11
+ routine, and other usage details.
9
12
 
10
- As listed below, this sub-package contains spline functions and classes,
11
- 1-D and multidimensional (univariate and multivariate)
12
- interpolation classes, Lagrange and Taylor polynomial interpolators, and
13
- wrappers for `FITPACK <http://www.netlib.org/dierckx/>`__
14
- and DFITPACK functions.
15
13
 
16
14
  Univariate interpolation
17
15
  ========================
@@ -19,51 +17,53 @@ Univariate interpolation
19
17
  .. autosummary::
20
18
  :toctree: generated/
21
19
 
22
- interp1d
20
+ make_interp_spline
21
+ CubicSpline
22
+ PchipInterpolator
23
+ Akima1DInterpolator
24
+ FloaterHormannInterpolator
23
25
  BarycentricInterpolator
24
26
  KroghInterpolator
25
- barycentric_interpolate
26
- krogh_interpolate
27
- pchip_interpolate
28
27
  CubicHermiteSpline
29
- PchipInterpolator
30
- Akima1DInterpolator
31
- CubicSpline
28
+
29
+ **Low-level data structures for univariate interpolation:**
30
+
31
+ .. autosummary::
32
+ :toctree: generated/
33
+
32
34
  PPoly
33
35
  BPoly
34
- FloaterHormannInterpolator
36
+ BSpline
35
37
 
36
38
 
37
39
  Multivariate interpolation
38
40
  ==========================
39
41
 
40
- Unstructured data:
42
+ **Unstructured data**
41
43
 
42
44
  .. autosummary::
43
45
  :toctree: generated/
44
46
 
45
- griddata
46
47
  LinearNDInterpolator
47
48
  NearestNDInterpolator
48
49
  CloughTocher2DInterpolator
49
50
  RBFInterpolator
50
- Rbf
51
- interp2d
52
51
 
53
- For data on a grid:
52
+ **For data on a grid:**
54
53
 
55
54
  .. autosummary::
56
55
  :toctree: generated/
57
56
 
58
- interpn
59
57
  RegularGridInterpolator
60
- RectBivariateSpline
61
58
 
62
59
  .. seealso::
63
60
 
64
- `scipy.ndimage.map_coordinates`
61
+ `scipy.ndimage.map_coordinates`,
62
+ :ref:`An example wrapper for map_coordinates <tutorial-interpolate_cartesian-grids>`
63
+
64
+
65
+ **Low-level data structures for tensor product polynomials and splines:**
65
66
 
66
- Tensor product polynomials:
67
67
 
68
68
  .. autosummary::
69
69
  :toctree: generated/
@@ -71,21 +71,44 @@ Tensor product polynomials:
71
71
  NdPPoly
72
72
  NdBSpline
73
73
 
74
- 1-D Splines
75
- ===========
74
+
75
+ 1-D spline smoothing and approximation
76
+ ======================================
76
77
 
77
78
  .. autosummary::
78
79
  :toctree: generated/
79
80
 
80
- BSpline
81
- make_interp_spline
82
81
  make_lsq_spline
83
82
  make_smoothing_spline
84
- generate_knots
85
83
  make_splrep
86
84
  make_splprep
85
+ generate_knots
86
+
87
+ Rational Approximation
88
+ ======================
89
+
90
+ .. autosummary::
91
+ :toctree: generated/
92
+
93
+ AAA
94
+
95
+
96
+ Interfaces to FITPACK routines for 1D and 2D spline fitting
97
+ ===========================================================
98
+
99
+ This section lists wrappers for `FITPACK <http://www.netlib.org/dierckx/>`__
100
+ functionality for 1D and 2D smoothing splines. In most cases, users are better off
101
+ using higher-level routines listed in previous sections.
102
+
103
+
104
+ 1D FITPACK splines
105
+ ------------------
106
+
107
+ This package provides two sets of functionally equivalent wrappers: object-oriented and
108
+ functional.
109
+
110
+ **Functional FITPACK interface:**
87
111
 
88
- Functional interface to FITPACK routines:
89
112
 
90
113
  .. autosummary::
91
114
  :toctree: generated/
@@ -100,7 +123,7 @@ Functional interface to FITPACK routines:
100
123
  splantider
101
124
  insert
102
125
 
103
- Object-oriented FITPACK interface:
126
+ **Object-oriented FITPACK interface:**
104
127
 
105
128
  .. autosummary::
106
129
  :toctree: generated/
@@ -110,11 +133,10 @@ Object-oriented FITPACK interface:
110
133
  LSQUnivariateSpline
111
134
 
112
135
 
136
+ 2D FITPACK splines
137
+ ------------------
113
138
 
114
- 2-D Splines
115
- ===========
116
-
117
- For data on a grid:
139
+ **For data on a grid:**
118
140
 
119
141
  .. autosummary::
120
142
  :toctree: generated/
@@ -122,7 +144,7 @@ For data on a grid:
122
144
  RectBivariateSpline
123
145
  RectSphereBivariateSpline
124
146
 
125
- For unstructured data:
147
+ **For unstructured data (OOP interface):**
126
148
 
127
149
  .. autosummary::
128
150
  :toctree: generated/
@@ -133,7 +155,7 @@ For unstructured data:
133
155
  LSQBivariateSpline
134
156
  LSQSphereBivariateSpline
135
157
 
136
- Low-level interface to FITPACK functions:
158
+ **For unstructured data (functional interface):**
137
159
 
138
160
  .. autosummary::
139
161
  :toctree: generated/
@@ -141,14 +163,6 @@ Low-level interface to FITPACK functions:
141
163
  bisplrep
142
164
  bisplev
143
165
 
144
- Rational Approximation
145
- ======================
146
-
147
- .. autosummary::
148
- :toctree: generated/
149
-
150
- pade
151
- AAA
152
166
 
153
167
  Additional tools
154
168
  ================
@@ -158,28 +172,26 @@ Additional tools
158
172
 
159
173
  lagrange
160
174
  approximate_taylor_polynomial
175
+ pade
176
+
177
+ interpn
178
+ griddata
179
+ barycentric_interpolate
180
+ krogh_interpolate
181
+ pchip_interpolate
182
+ Rbf
183
+ interp1d
184
+ interp2d
161
185
 
162
186
  .. seealso::
163
187
 
164
188
  `scipy.ndimage.map_coordinates`,
165
189
  `scipy.ndimage.spline_filter`,
166
- `scipy.signal.resample`,
167
- `scipy.signal.bspline`,
168
- `scipy.signal.gauss_spline`,
169
- `scipy.signal.qspline1d`,
170
- `scipy.signal.cspline1d`,
171
- `scipy.signal.qspline1d_eval`,
172
- `scipy.signal.cspline1d_eval`,
173
- `scipy.signal.qspline2d`,
174
- `scipy.signal.cspline2d`.
175
-
176
- ``pchip`` is an alias of `PchipInterpolator` for backward compatibility
177
- (should not be used in new code).
178
- """
190
+
191
+ """ # noqa: E501
179
192
  from ._interpolate import *
180
193
  from ._fitpack_py import *
181
194
 
182
- # New interface to fitpack library:
183
195
  from ._fitpack2 import *
184
196
 
185
197
  from ._rbf import Rbf
@@ -34,7 +34,7 @@ __all__ = ["AAA", "FloaterHormannInterpolator"]
34
34
 
35
35
 
36
36
  class _BarycentricRational:
37
- """Base class for Barycentric representation of a rational function."""
37
+ """Base class for barycentric representation of a rational function."""
38
38
  def __init__(self, x, y, **kwargs):
39
39
  # input validation
40
40
  z = np.asarray(x)
@@ -399,7 +399,7 @@ class AAA(_BarycentricRational):
399
399
  >>> with warnings.catch_warnings():
400
400
  ... warnings.simplefilter('ignore', RuntimeWarning)
401
401
  ... r.clean_up()
402
- 4
402
+ 4 # may vary
403
403
  >>> mask = np.abs(r.residues()) < 1e-13
404
404
  >>> axs[1].plot(r.poles().real[~mask], r.poles().imag[~mask], '.')
405
405
  >>> axs[1].plot(r.poles().real[mask], r.poles().imag[mask], 'r.')
@@ -597,11 +597,10 @@ class AAA(_BarycentricRational):
597
597
 
598
598
 
599
599
  class FloaterHormannInterpolator(_BarycentricRational):
600
- r"""
601
- Floater-Hormann barycentric rational interpolation.
600
+ r"""Floater-Hormann barycentric rational interpolator (C∞ smooth on real axis).
602
601
 
603
602
  As described in [1]_, the method of Floater and Hormann computes weights for a
604
- Barycentric rational interpolant with no poles on the real axis.
603
+ barycentric rational interpolant with no poles on the real axis.
605
604
 
606
605
  Parameters
607
606
  ----------
@@ -610,11 +609,11 @@ class FloaterHormannInterpolator(_BarycentricRational):
610
609
  complex but must be finite.
611
610
  y : array_like, shape (n, ...)
612
611
  Array containing values of the dependent variable. Infinite and NaN values
613
- of `values` and corresponding values of `x` will be discarded.
614
- d : int, optional
615
- Blends ``n - d`` degree `d` polynomials together. For ``d = n - 1`` it is
616
- equivalent to polynomial interpolation. Must satisfy ``0 <= d < n``,
617
- defaults to 3.
612
+ of `y` and corresponding values of `x` will be discarded.
613
+ d : int, default: 3
614
+ Integer satisfying ``0 <= d < n``. Floater-Hormann interpolation blends
615
+ ``n - d`` polynomials of degree `d` together; for ``d = n - 1``, this is
616
+ equivalent to polynomial interpolation.
618
617
 
619
618
  Attributes
620
619
  ----------
@@ -639,8 +638,8 @@ class FloaterHormannInterpolator(_BarycentricRational):
639
638
  r(x) = \frac{\sum_{i=0}^{n-d} \lambda_i(x) p_i(x)}
640
639
  {\sum_{i=0}^{n-d} \lambda_i(x)},
641
640
 
642
- where :math:`p_i(x)` is an interpolating polynomials of at most degree `d` through
643
- the points :math:`(x_i,y_i),\dots,(x_{i+d},y_{i+d}), and :math:`\lambda_i(z)` are
641
+ where :math:`p_i(x)` is an interpolating polynomial of at most degree `d` through
642
+ the points :math:`(x_i,y_i),\dots,(x_{i+d},y_{i+d})`, and :math:`\lambda_i(z)` are
644
643
  blending functions defined by
645
644
 
646
645
  .. math::
@@ -649,8 +648,8 @@ class FloaterHormannInterpolator(_BarycentricRational):
649
648
 
650
649
  When ``d = n - 1`` this reduces to polynomial interpolation.
651
650
 
652
- Due to its stability following barycentric representation of the above equation
653
- is used instead for computation
651
+ Due to its stability, the following barycentric representation of the above equation
652
+ is used for computation
654
653
 
655
654
  .. math::
656
655
 
@@ -680,16 +679,17 @@ class FloaterHormannInterpolator(_BarycentricRational):
680
679
  >>> import numpy as np
681
680
  >>> from scipy.interpolate import (FloaterHormannInterpolator,
682
681
  ... BarycentricInterpolator)
683
- >>> def f(z):
684
- ... return 1/(1 + z**2)
685
- >>> z = np.linspace(-5, 5, num=15)
686
- >>> r = FloaterHormannInterpolator(z, f(z))
687
- >>> p = BarycentricInterpolator(z, f(z))
688
- >>> zz = np.linspace(-5, 5, num=1000)
682
+ >>> def f(x):
683
+ ... return 1/(1 + x**2)
684
+ >>> x = np.linspace(-5, 5, num=15)
685
+ >>> r = FloaterHormannInterpolator(x, f(x))
686
+ >>> p = BarycentricInterpolator(x, f(x))
687
+ >>> xx = np.linspace(-5, 5, num=1000)
689
688
  >>> import matplotlib.pyplot as plt
690
689
  >>> fig, ax = plt.subplots()
691
- >>> ax.plot(zz, r(zz), label="Floater=Hormann")
692
- >>> ax.plot(zz, p(zz), label="Polynomial")
690
+ >>> ax.plot(xx, f(xx), label="f(x)")
691
+ >>> ax.plot(xx, r(xx), "--", label="Floater-Hormann")
692
+ >>> ax.plot(xx, p(xx), "--", label="Polynomial")
693
693
  >>> ax.legend()
694
694
  >>> plt.show()
695
695
  """