scipy 1.15.2__cp311-cp311-win_amd64.whl → 1.16.0__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 (769) hide show
  1. scipy/__config__.py +8 -8
  2. scipy/__init__.py +6 -9
  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 +497 -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 +169 -34
  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 +282 -151
  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/_ivp/common.py +3 -3
  144. scipy/integrate/_ivp/ivp.py +9 -2
  145. scipy/integrate/_ivp/tests/test_ivp.py +19 -0
  146. scipy/integrate/_lsoda.cp311-win_amd64.dll.a +0 -0
  147. scipy/integrate/_lsoda.cp311-win_amd64.pyd +0 -0
  148. scipy/integrate/_ode.py +9 -2
  149. scipy/integrate/_odepack.cp311-win_amd64.dll.a +0 -0
  150. scipy/integrate/_odepack.cp311-win_amd64.pyd +0 -0
  151. scipy/integrate/_quad_vec.py +21 -29
  152. scipy/integrate/_quadpack.cp311-win_amd64.dll.a +0 -0
  153. scipy/integrate/_quadpack.cp311-win_amd64.pyd +0 -0
  154. scipy/integrate/_quadpack_py.py +11 -7
  155. scipy/integrate/_quadrature.py +3 -3
  156. scipy/integrate/_rules/_base.py +2 -2
  157. scipy/integrate/_tanhsinh.py +57 -54
  158. scipy/integrate/_test_multivariate.cp311-win_amd64.dll.a +0 -0
  159. scipy/integrate/_test_multivariate.cp311-win_amd64.pyd +0 -0
  160. scipy/integrate/_test_odeint_banded.cp311-win_amd64.dll.a +0 -0
  161. scipy/integrate/_test_odeint_banded.cp311-win_amd64.pyd +0 -0
  162. scipy/integrate/_vode.cp311-win_amd64.dll.a +0 -0
  163. scipy/integrate/_vode.cp311-win_amd64.pyd +0 -0
  164. scipy/integrate/tests/test__quad_vec.py +0 -6
  165. scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
  166. scipy/integrate/tests/test_cubature.py +21 -35
  167. scipy/integrate/tests/test_quadrature.py +6 -8
  168. scipy/integrate/tests/test_tanhsinh.py +61 -43
  169. scipy/interpolate/__init__.py +70 -58
  170. scipy/interpolate/_bary_rational.py +22 -22
  171. scipy/interpolate/_bsplines.py +119 -66
  172. scipy/interpolate/_cubic.py +65 -50
  173. scipy/interpolate/_dfitpack.cp311-win_amd64.dll.a +0 -0
  174. scipy/interpolate/_dfitpack.cp311-win_amd64.pyd +0 -0
  175. scipy/interpolate/_dierckx.cp311-win_amd64.dll.a +0 -0
  176. scipy/interpolate/_dierckx.cp311-win_amd64.pyd +0 -0
  177. scipy/interpolate/_fitpack.cp311-win_amd64.dll.a +0 -0
  178. scipy/interpolate/_fitpack.cp311-win_amd64.pyd +0 -0
  179. scipy/interpolate/_fitpack2.py +9 -6
  180. scipy/interpolate/_fitpack_impl.py +32 -26
  181. scipy/interpolate/_fitpack_repro.py +23 -19
  182. scipy/interpolate/_interpnd.cp311-win_amd64.dll.a +0 -0
  183. scipy/interpolate/_interpnd.cp311-win_amd64.pyd +0 -0
  184. scipy/interpolate/_interpolate.py +30 -12
  185. scipy/interpolate/_ndbspline.py +13 -18
  186. scipy/interpolate/_ndgriddata.py +5 -8
  187. scipy/interpolate/_polyint.py +95 -31
  188. scipy/interpolate/_ppoly.cp311-win_amd64.dll.a +0 -0
  189. scipy/interpolate/_ppoly.cp311-win_amd64.pyd +0 -0
  190. scipy/interpolate/_rbf.py +2 -2
  191. scipy/interpolate/_rbfinterp.py +1 -1
  192. scipy/interpolate/_rbfinterp_pythran.cp311-win_amd64.dll.a +0 -0
  193. scipy/interpolate/_rbfinterp_pythran.cp311-win_amd64.pyd +0 -0
  194. scipy/interpolate/_rgi.py +31 -26
  195. scipy/interpolate/_rgi_cython.cp311-win_amd64.dll.a +0 -0
  196. scipy/interpolate/_rgi_cython.cp311-win_amd64.pyd +0 -0
  197. scipy/interpolate/dfitpack.py +0 -20
  198. scipy/interpolate/interpnd.py +1 -2
  199. scipy/interpolate/tests/test_bary_rational.py +2 -2
  200. scipy/interpolate/tests/test_bsplines.py +97 -1
  201. scipy/interpolate/tests/test_fitpack2.py +39 -1
  202. scipy/interpolate/tests/test_interpnd.py +32 -20
  203. scipy/interpolate/tests/test_interpolate.py +48 -4
  204. scipy/interpolate/tests/test_rgi.py +2 -1
  205. scipy/io/_fast_matrix_market/__init__.py +2 -0
  206. scipy/io/_fast_matrix_market/_fmm_core.cp311-win_amd64.dll.a +0 -0
  207. scipy/io/_fast_matrix_market/_fmm_core.cp311-win_amd64.pyd +0 -0
  208. scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
  209. scipy/io/_harwell_boeing/hb.py +7 -11
  210. scipy/io/_idl.py +5 -7
  211. scipy/io/_netcdf.py +15 -5
  212. scipy/io/_test_fortran.cp311-win_amd64.dll.a +0 -0
  213. scipy/io/_test_fortran.cp311-win_amd64.pyd +0 -0
  214. scipy/io/arff/tests/test_arffread.py +3 -3
  215. scipy/io/matlab/__init__.py +5 -3
  216. scipy/io/matlab/_mio.py +4 -1
  217. scipy/io/matlab/_mio5.py +19 -13
  218. scipy/io/matlab/_mio5_utils.cp311-win_amd64.dll.a +0 -0
  219. scipy/io/matlab/_mio5_utils.cp311-win_amd64.pyd +0 -0
  220. scipy/io/matlab/_mio_utils.cp311-win_amd64.dll.a +0 -0
  221. scipy/io/matlab/_mio_utils.cp311-win_amd64.pyd +0 -0
  222. scipy/io/matlab/_miobase.py +4 -1
  223. scipy/io/matlab/_streams.cp311-win_amd64.dll.a +0 -0
  224. scipy/io/matlab/_streams.cp311-win_amd64.pyd +0 -0
  225. scipy/io/matlab/tests/test_mio.py +46 -18
  226. scipy/io/matlab/tests/test_mio_funcs.py +1 -1
  227. scipy/io/tests/test_mmio.py +7 -1
  228. scipy/io/tests/test_wavfile.py +41 -0
  229. scipy/io/wavfile.py +57 -10
  230. scipy/linalg/_basic.py +113 -86
  231. scipy/linalg/_cythonized_array_utils.cp311-win_amd64.dll.a +0 -0
  232. scipy/linalg/_cythonized_array_utils.cp311-win_amd64.pyd +0 -0
  233. scipy/linalg/_decomp.py +22 -9
  234. scipy/linalg/_decomp_cholesky.py +28 -13
  235. scipy/linalg/_decomp_cossin.py +45 -30
  236. scipy/linalg/_decomp_interpolative.cp311-win_amd64.dll.a +0 -0
  237. scipy/linalg/_decomp_interpolative.cp311-win_amd64.pyd +0 -0
  238. scipy/linalg/_decomp_ldl.py +4 -1
  239. scipy/linalg/_decomp_lu.py +18 -6
  240. scipy/linalg/_decomp_lu_cython.cp311-win_amd64.dll.a +0 -0
  241. scipy/linalg/_decomp_lu_cython.cp311-win_amd64.pyd +0 -0
  242. scipy/linalg/_decomp_polar.py +2 -0
  243. scipy/linalg/_decomp_qr.py +6 -2
  244. scipy/linalg/_decomp_qz.py +3 -0
  245. scipy/linalg/_decomp_schur.py +3 -1
  246. scipy/linalg/_decomp_svd.py +13 -2
  247. scipy/linalg/_decomp_update.cp311-win_amd64.dll.a +0 -0
  248. scipy/linalg/_decomp_update.cp311-win_amd64.pyd +0 -0
  249. scipy/linalg/_expm_frechet.py +4 -0
  250. scipy/linalg/_fblas.cp311-win_amd64.dll.a +0 -0
  251. scipy/linalg/_fblas.cp311-win_amd64.pyd +0 -0
  252. scipy/linalg/_flapack.cp311-win_amd64.dll.a +0 -0
  253. scipy/linalg/_flapack.cp311-win_amd64.pyd +0 -0
  254. scipy/linalg/_linalg_pythran.cp311-win_amd64.dll.a +0 -0
  255. scipy/linalg/_linalg_pythran.cp311-win_amd64.pyd +0 -0
  256. scipy/linalg/_matfuncs.py +187 -4
  257. scipy/linalg/_matfuncs_expm.cp311-win_amd64.dll.a +0 -0
  258. scipy/linalg/_matfuncs_expm.cp311-win_amd64.pyd +0 -0
  259. scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_amd64.dll.a +0 -0
  260. scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_amd64.pyd +0 -0
  261. scipy/linalg/_matfuncs_sqrtm.py +1 -99
  262. scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_amd64.dll.a +0 -0
  263. scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_amd64.pyd +0 -0
  264. scipy/linalg/_procrustes.py +2 -0
  265. scipy/linalg/_sketches.py +17 -6
  266. scipy/linalg/_solve_toeplitz.cp311-win_amd64.dll.a +0 -0
  267. scipy/linalg/_solve_toeplitz.cp311-win_amd64.pyd +0 -0
  268. scipy/linalg/_solvers.py +7 -2
  269. scipy/linalg/_special_matrices.py +26 -36
  270. scipy/linalg/blas.py +35 -24
  271. scipy/linalg/cython_blas.cp311-win_amd64.dll.a +0 -0
  272. scipy/linalg/cython_blas.cp311-win_amd64.pyd +0 -0
  273. scipy/linalg/cython_lapack.cp311-win_amd64.dll.a +0 -0
  274. scipy/linalg/cython_lapack.cp311-win_amd64.pyd +0 -0
  275. scipy/linalg/lapack.py +22 -2
  276. scipy/linalg/tests/_cython_examples/meson.build +7 -0
  277. scipy/linalg/tests/test_basic.py +31 -16
  278. scipy/linalg/tests/test_batch.py +588 -0
  279. scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
  280. scipy/linalg/tests/test_decomp.py +40 -3
  281. scipy/linalg/tests/test_decomp_cossin.py +14 -0
  282. scipy/linalg/tests/test_decomp_ldl.py +1 -1
  283. scipy/linalg/tests/test_interpolative.py +17 -0
  284. scipy/linalg/tests/test_lapack.py +115 -7
  285. scipy/linalg/tests/test_matfuncs.py +157 -102
  286. scipy/linalg/tests/test_procrustes.py +0 -7
  287. scipy/linalg/tests/test_solve_toeplitz.py +1 -1
  288. scipy/linalg/tests/test_special_matrices.py +1 -5
  289. scipy/ndimage/__init__.py +1 -0
  290. scipy/ndimage/_ctest.cp311-win_amd64.dll.a +0 -0
  291. scipy/ndimage/_ctest.cp311-win_amd64.pyd +0 -0
  292. scipy/ndimage/_cytest.cp311-win_amd64.dll.a +0 -0
  293. scipy/ndimage/_cytest.cp311-win_amd64.pyd +0 -0
  294. scipy/ndimage/_delegators.py +8 -2
  295. scipy/ndimage/_filters.py +453 -5
  296. scipy/ndimage/_interpolation.py +36 -6
  297. scipy/ndimage/_measurements.py +4 -2
  298. scipy/ndimage/_morphology.py +5 -0
  299. scipy/ndimage/_nd_image.cp311-win_amd64.dll.a +0 -0
  300. scipy/ndimage/_nd_image.cp311-win_amd64.pyd +0 -0
  301. scipy/ndimage/_ndimage_api.py +2 -1
  302. scipy/ndimage/_ni_docstrings.py +5 -1
  303. scipy/ndimage/_ni_label.cp311-win_amd64.dll.a +0 -0
  304. scipy/ndimage/_ni_label.cp311-win_amd64.pyd +0 -0
  305. scipy/ndimage/_ni_support.py +1 -5
  306. scipy/ndimage/_rank_filter_1d.cp311-win_amd64.dll.a +0 -0
  307. scipy/ndimage/_rank_filter_1d.cp311-win_amd64.pyd +0 -0
  308. scipy/ndimage/_support_alternative_backends.py +18 -6
  309. scipy/ndimage/tests/test_filters.py +384 -259
  310. scipy/ndimage/tests/test_fourier.py +7 -9
  311. scipy/ndimage/tests/test_interpolation.py +68 -61
  312. scipy/ndimage/tests/test_measurements.py +18 -35
  313. scipy/ndimage/tests/test_morphology.py +143 -131
  314. scipy/ndimage/tests/test_splines.py +1 -3
  315. scipy/odr/__odrpack.cp311-win_amd64.dll.a +0 -0
  316. scipy/odr/__odrpack.cp311-win_amd64.pyd +0 -0
  317. scipy/optimize/_basinhopping.py +13 -7
  318. scipy/optimize/_bglu_dense.cp311-win_amd64.dll.a +0 -0
  319. scipy/optimize/_bglu_dense.cp311-win_amd64.pyd +0 -0
  320. scipy/optimize/_bracket.py +46 -26
  321. scipy/optimize/_chandrupatla.py +9 -10
  322. scipy/optimize/_cobyla_py.py +104 -123
  323. scipy/optimize/_constraints.py +14 -10
  324. scipy/optimize/_differentiable_functions.py +371 -230
  325. scipy/optimize/_differentialevolution.py +4 -3
  326. scipy/optimize/_direct.cp311-win_amd64.dll.a +0 -0
  327. scipy/optimize/_direct.cp311-win_amd64.pyd +0 -0
  328. scipy/optimize/_dual_annealing.py +1 -1
  329. scipy/optimize/_elementwise.py +1 -4
  330. scipy/optimize/_group_columns.cp311-win_amd64.dll.a +0 -0
  331. scipy/optimize/_group_columns.cp311-win_amd64.pyd +0 -0
  332. scipy/optimize/_highspy/_core.cp311-win_amd64.dll.a +0 -0
  333. scipy/optimize/_highspy/_core.cp311-win_amd64.pyd +0 -0
  334. scipy/optimize/_highspy/_highs_options.cp311-win_amd64.dll.a +0 -0
  335. scipy/optimize/_highspy/_highs_options.cp311-win_amd64.pyd +0 -0
  336. scipy/optimize/_highspy/_highs_wrapper.py +6 -4
  337. scipy/optimize/_lbfgsb.cp311-win_amd64.dll.a +0 -0
  338. scipy/optimize/_lbfgsb.cp311-win_amd64.pyd +0 -0
  339. scipy/optimize/_lbfgsb_py.py +80 -24
  340. scipy/optimize/_linprog_doc.py +2 -2
  341. scipy/optimize/_linprog_highs.py +11 -11
  342. scipy/optimize/_linprog_ip.py +25 -10
  343. scipy/optimize/_linprog_util.py +18 -19
  344. scipy/optimize/_lsap.cp311-win_amd64.dll.a +0 -0
  345. scipy/optimize/_lsap.cp311-win_amd64.pyd +0 -0
  346. scipy/optimize/_lsq/common.py +3 -3
  347. scipy/optimize/_lsq/dogbox.py +16 -2
  348. scipy/optimize/_lsq/givens_elimination.cp311-win_amd64.dll.a +0 -0
  349. scipy/optimize/_lsq/givens_elimination.cp311-win_amd64.pyd +0 -0
  350. scipy/optimize/_lsq/least_squares.py +198 -126
  351. scipy/optimize/_lsq/lsq_linear.py +6 -6
  352. scipy/optimize/_lsq/trf.py +35 -8
  353. scipy/optimize/_milp.py +3 -1
  354. scipy/optimize/_minimize.py +105 -36
  355. scipy/optimize/_minpack.cp311-win_amd64.dll.a +0 -0
  356. scipy/optimize/_minpack.cp311-win_amd64.pyd +0 -0
  357. scipy/optimize/_minpack_py.py +21 -14
  358. scipy/optimize/_moduleTNC.cp311-win_amd64.dll.a +0 -0
  359. scipy/optimize/_moduleTNC.cp311-win_amd64.pyd +0 -0
  360. scipy/optimize/_nnls.py +20 -21
  361. scipy/optimize/_nonlin.py +34 -3
  362. scipy/optimize/_numdiff.py +288 -110
  363. scipy/optimize/_optimize.py +86 -48
  364. scipy/optimize/_pava_pybind.cp311-win_amd64.dll.a +0 -0
  365. scipy/optimize/_pava_pybind.cp311-win_amd64.pyd +0 -0
  366. scipy/optimize/_remove_redundancy.py +5 -5
  367. scipy/optimize/_root_scalar.py +1 -1
  368. scipy/optimize/_shgo.py +6 -0
  369. scipy/optimize/_shgo_lib/_complex.py +1 -1
  370. scipy/optimize/_slsqp_py.py +216 -124
  371. scipy/optimize/_slsqplib.cp311-win_amd64.dll.a +0 -0
  372. scipy/optimize/_slsqplib.cp311-win_amd64.pyd +0 -0
  373. scipy/optimize/_spectral.py +1 -1
  374. scipy/optimize/_tnc.py +8 -1
  375. scipy/optimize/_trlib/_trlib.cp311-win_amd64.dll.a +0 -0
  376. scipy/optimize/_trlib/_trlib.cp311-win_amd64.pyd +0 -0
  377. scipy/optimize/_trustregion.py +20 -6
  378. scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
  379. scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
  380. scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
  381. scipy/optimize/_trustregion_constr/projections.py +12 -8
  382. scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
  383. scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
  384. scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
  385. scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
  386. scipy/optimize/_trustregion_exact.py +0 -1
  387. scipy/optimize/_zeros.cp311-win_amd64.dll.a +0 -0
  388. scipy/optimize/_zeros.cp311-win_amd64.pyd +0 -0
  389. scipy/optimize/_zeros_py.py +97 -17
  390. scipy/optimize/cython_optimize/_zeros.cp311-win_amd64.dll.a +0 -0
  391. scipy/optimize/cython_optimize/_zeros.cp311-win_amd64.pyd +0 -0
  392. scipy/optimize/slsqp.py +0 -1
  393. scipy/optimize/tests/test__basinhopping.py +1 -1
  394. scipy/optimize/tests/test__differential_evolution.py +4 -4
  395. scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
  396. scipy/optimize/tests/test__numdiff.py +66 -22
  397. scipy/optimize/tests/test__remove_redundancy.py +2 -2
  398. scipy/optimize/tests/test__shgo.py +9 -1
  399. scipy/optimize/tests/test_bracket.py +71 -46
  400. scipy/optimize/tests/test_chandrupatla.py +133 -135
  401. scipy/optimize/tests/test_cobyla.py +74 -45
  402. scipy/optimize/tests/test_constraints.py +1 -1
  403. scipy/optimize/tests/test_differentiable_functions.py +226 -6
  404. scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
  405. scipy/optimize/tests/test_least_squares.py +125 -13
  406. scipy/optimize/tests/test_linear_assignment.py +3 -3
  407. scipy/optimize/tests/test_linprog.py +3 -3
  408. scipy/optimize/tests/test_lsq_linear.py +6 -6
  409. scipy/optimize/tests/test_minimize_constrained.py +2 -2
  410. scipy/optimize/tests/test_minpack.py +4 -4
  411. scipy/optimize/tests/test_nnls.py +43 -3
  412. scipy/optimize/tests/test_nonlin.py +36 -0
  413. scipy/optimize/tests/test_optimize.py +98 -20
  414. scipy/optimize/tests/test_slsqp.py +36 -4
  415. scipy/optimize/tests/test_zeros.py +34 -1
  416. scipy/signal/__init__.py +12 -23
  417. scipy/signal/_delegators.py +568 -0
  418. scipy/signal/_filter_design.py +459 -241
  419. scipy/signal/_fir_filter_design.py +262 -90
  420. scipy/signal/_lti_conversion.py +3 -2
  421. scipy/signal/_ltisys.py +118 -91
  422. scipy/signal/_max_len_seq_inner.cp311-win_amd64.dll.a +0 -0
  423. scipy/signal/_max_len_seq_inner.cp311-win_amd64.pyd +0 -0
  424. scipy/signal/_peak_finding_utils.cp311-win_amd64.dll.a +0 -0
  425. scipy/signal/_peak_finding_utils.cp311-win_amd64.pyd +0 -0
  426. scipy/signal/_polyutils.py +172 -0
  427. scipy/signal/_short_time_fft.py +553 -76
  428. scipy/signal/_signal_api.py +30 -0
  429. scipy/signal/_signaltools.py +719 -396
  430. scipy/signal/_sigtools.cp311-win_amd64.dll.a +0 -0
  431. scipy/signal/_sigtools.cp311-win_amd64.pyd +0 -0
  432. scipy/signal/_sosfilt.cp311-win_amd64.dll.a +0 -0
  433. scipy/signal/_sosfilt.cp311-win_amd64.pyd +0 -0
  434. scipy/signal/_spectral_py.py +230 -50
  435. scipy/signal/_spline.cp311-win_amd64.dll.a +0 -0
  436. scipy/signal/_spline.cp311-win_amd64.pyd +0 -0
  437. scipy/signal/_spline_filters.py +108 -68
  438. scipy/signal/_support_alternative_backends.py +73 -0
  439. scipy/signal/_upfirdn.py +4 -1
  440. scipy/signal/_upfirdn_apply.cp311-win_amd64.dll.a +0 -0
  441. scipy/signal/_upfirdn_apply.cp311-win_amd64.pyd +0 -0
  442. scipy/signal/_waveforms.py +2 -11
  443. scipy/signal/_wavelets.py +1 -1
  444. scipy/signal/fir_filter_design.py +1 -0
  445. scipy/signal/spline.py +4 -11
  446. scipy/signal/tests/_scipy_spectral_test_shim.py +5 -182
  447. scipy/signal/tests/test_bsplines.py +114 -79
  448. scipy/signal/tests/test_cont2discrete.py +9 -2
  449. scipy/signal/tests/test_filter_design.py +721 -481
  450. scipy/signal/tests/test_fir_filter_design.py +332 -140
  451. scipy/signal/tests/test_savitzky_golay.py +4 -3
  452. scipy/signal/tests/test_short_time_fft.py +231 -5
  453. scipy/signal/tests/test_signaltools.py +2150 -1349
  454. scipy/signal/tests/test_spectral.py +50 -6
  455. scipy/signal/tests/test_splines.py +161 -96
  456. scipy/signal/tests/test_upfirdn.py +84 -50
  457. scipy/signal/tests/test_waveforms.py +20 -0
  458. scipy/signal/tests/test_windows.py +607 -466
  459. scipy/signal/windows/_windows.py +287 -148
  460. scipy/sparse/__init__.py +23 -4
  461. scipy/sparse/_base.py +269 -120
  462. scipy/sparse/_bsr.py +7 -4
  463. scipy/sparse/_compressed.py +59 -234
  464. scipy/sparse/_construct.py +90 -38
  465. scipy/sparse/_coo.py +115 -181
  466. scipy/sparse/_csc.py +4 -4
  467. scipy/sparse/_csparsetools.cp311-win_amd64.dll.a +0 -0
  468. scipy/sparse/_csparsetools.cp311-win_amd64.pyd +0 -0
  469. scipy/sparse/_csr.py +2 -2
  470. scipy/sparse/_data.py +48 -48
  471. scipy/sparse/_dia.py +105 -21
  472. scipy/sparse/_dok.py +0 -23
  473. scipy/sparse/_index.py +4 -4
  474. scipy/sparse/_matrix.py +23 -0
  475. scipy/sparse/_sparsetools.cp311-win_amd64.dll.a +0 -0
  476. scipy/sparse/_sparsetools.cp311-win_amd64.pyd +0 -0
  477. scipy/sparse/_sputils.py +37 -22
  478. scipy/sparse/base.py +0 -9
  479. scipy/sparse/bsr.py +0 -14
  480. scipy/sparse/compressed.py +0 -23
  481. scipy/sparse/construct.py +0 -6
  482. scipy/sparse/coo.py +0 -14
  483. scipy/sparse/csc.py +0 -3
  484. scipy/sparse/csgraph/_flow.cp311-win_amd64.dll.a +0 -0
  485. scipy/sparse/csgraph/_flow.cp311-win_amd64.pyd +0 -0
  486. scipy/sparse/csgraph/_matching.cp311-win_amd64.dll.a +0 -0
  487. scipy/sparse/csgraph/_matching.cp311-win_amd64.pyd +0 -0
  488. scipy/sparse/csgraph/_min_spanning_tree.cp311-win_amd64.dll.a +0 -0
  489. scipy/sparse/csgraph/_min_spanning_tree.cp311-win_amd64.pyd +0 -0
  490. scipy/sparse/csgraph/_reordering.cp311-win_amd64.dll.a +0 -0
  491. scipy/sparse/csgraph/_reordering.cp311-win_amd64.pyd +0 -0
  492. scipy/sparse/csgraph/_shortest_path.cp311-win_amd64.dll.a +0 -0
  493. scipy/sparse/csgraph/_shortest_path.cp311-win_amd64.pyd +0 -0
  494. scipy/sparse/csgraph/_tools.cp311-win_amd64.dll.a +0 -0
  495. scipy/sparse/csgraph/_tools.cp311-win_amd64.pyd +0 -0
  496. scipy/sparse/csgraph/_traversal.cp311-win_amd64.dll.a +0 -0
  497. scipy/sparse/csgraph/_traversal.cp311-win_amd64.pyd +0 -0
  498. scipy/sparse/csgraph/tests/test_matching.py +14 -2
  499. scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
  500. scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
  501. scipy/sparse/csr.py +0 -5
  502. scipy/sparse/data.py +1 -6
  503. scipy/sparse/dia.py +0 -7
  504. scipy/sparse/dok.py +0 -10
  505. scipy/sparse/linalg/_dsolve/_superlu.cp311-win_amd64.dll.a +0 -0
  506. scipy/sparse/linalg/_dsolve/_superlu.cp311-win_amd64.pyd +0 -0
  507. scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
  508. scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
  509. scipy/sparse/linalg/_eigen/arpack/_arpack.cp311-win_amd64.dll.a +0 -0
  510. scipy/sparse/linalg/_eigen/arpack/_arpack.cp311-win_amd64.pyd +0 -0
  511. scipy/sparse/linalg/_eigen/arpack/arpack.py +28 -20
  512. scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
  513. scipy/sparse/linalg/_expm_multiply.py +8 -3
  514. scipy/sparse/linalg/_interface.py +29 -26
  515. scipy/sparse/linalg/_isolve/_gcrotmk.py +6 -5
  516. scipy/sparse/linalg/_isolve/iterative.py +51 -45
  517. scipy/sparse/linalg/_isolve/lgmres.py +6 -6
  518. scipy/sparse/linalg/_isolve/minres.py +5 -5
  519. scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
  520. scipy/sparse/linalg/_isolve/utils.py +2 -8
  521. scipy/sparse/linalg/_matfuncs.py +1 -1
  522. scipy/sparse/linalg/_norm.py +1 -1
  523. scipy/sparse/linalg/_propack/_cpropack.cp311-win_amd64.dll.a +0 -0
  524. scipy/sparse/linalg/_propack/_cpropack.cp311-win_amd64.pyd +0 -0
  525. scipy/sparse/linalg/_propack/_dpropack.cp311-win_amd64.dll.a +0 -0
  526. scipy/sparse/linalg/_propack/_dpropack.cp311-win_amd64.pyd +0 -0
  527. scipy/sparse/linalg/_propack/_spropack.cp311-win_amd64.dll.a +0 -0
  528. scipy/sparse/linalg/_propack/_spropack.cp311-win_amd64.pyd +0 -0
  529. scipy/sparse/linalg/_propack/_zpropack.cp311-win_amd64.dll.a +0 -0
  530. scipy/sparse/linalg/_propack/_zpropack.cp311-win_amd64.pyd +0 -0
  531. scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
  532. scipy/sparse/linalg/tests/test_expm_multiply.py +10 -0
  533. scipy/sparse/linalg/tests/test_interface.py +35 -0
  534. scipy/sparse/linalg/tests/test_pydata_sparse.py +18 -0
  535. scipy/sparse/tests/test_arithmetic1d.py +5 -2
  536. scipy/sparse/tests/test_base.py +224 -40
  537. scipy/sparse/tests/test_common1d.py +17 -12
  538. scipy/sparse/tests/test_construct.py +1 -1
  539. scipy/sparse/tests/test_coo.py +272 -4
  540. scipy/sparse/tests/test_sparsetools.py +5 -0
  541. scipy/sparse/tests/test_sputils.py +36 -7
  542. scipy/spatial/_ckdtree.cp311-win_amd64.dll.a +0 -0
  543. scipy/spatial/_ckdtree.cp311-win_amd64.pyd +0 -0
  544. scipy/spatial/_distance_pybind.cp311-win_amd64.dll.a +0 -0
  545. scipy/spatial/_distance_pybind.cp311-win_amd64.pyd +0 -0
  546. scipy/spatial/_distance_wrap.cp311-win_amd64.dll.a +0 -0
  547. scipy/spatial/_distance_wrap.cp311-win_amd64.pyd +0 -0
  548. scipy/spatial/_hausdorff.cp311-win_amd64.dll.a +0 -0
  549. scipy/spatial/_hausdorff.cp311-win_amd64.pyd +0 -0
  550. scipy/spatial/_qhull.cp311-win_amd64.dll.a +0 -0
  551. scipy/spatial/_qhull.cp311-win_amd64.pyd +0 -0
  552. scipy/spatial/_voronoi.cp311-win_amd64.dll.a +0 -0
  553. scipy/spatial/_voronoi.cp311-win_amd64.pyd +0 -0
  554. scipy/spatial/distance.py +49 -42
  555. scipy/spatial/tests/test_distance.py +15 -1
  556. scipy/spatial/tests/test_kdtree.py +1 -0
  557. scipy/spatial/tests/test_qhull.py +106 -2
  558. scipy/spatial/transform/__init__.py +5 -3
  559. scipy/spatial/transform/_rigid_transform.cp311-win_amd64.dll.a +0 -0
  560. scipy/spatial/transform/_rigid_transform.cp311-win_amd64.pyd +0 -0
  561. scipy/spatial/transform/_rotation.cp311-win_amd64.dll.a +0 -0
  562. scipy/spatial/transform/_rotation.cp311-win_amd64.pyd +0 -0
  563. scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
  564. scipy/spatial/transform/tests/test_rotation.py +1342 -790
  565. scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
  566. scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
  567. scipy/special/__init__.py +1 -47
  568. scipy/special/_add_newdocs.py +34 -772
  569. scipy/special/_basic.py +22 -25
  570. scipy/special/_comb.cp311-win_amd64.dll.a +0 -0
  571. scipy/special/_comb.cp311-win_amd64.pyd +0 -0
  572. scipy/special/_ellip_harm_2.cp311-win_amd64.dll.a +0 -0
  573. scipy/special/_ellip_harm_2.cp311-win_amd64.pyd +0 -0
  574. scipy/special/_gufuncs.cp311-win_amd64.dll.a +0 -0
  575. scipy/special/_gufuncs.cp311-win_amd64.pyd +0 -0
  576. scipy/special/_logsumexp.py +83 -69
  577. scipy/special/_orthogonal.pyi +1 -1
  578. scipy/special/_specfun.cp311-win_amd64.dll.a +0 -0
  579. scipy/special/_specfun.cp311-win_amd64.pyd +0 -0
  580. scipy/special/_special_ufuncs.cp311-win_amd64.dll.a +0 -0
  581. scipy/special/_special_ufuncs.cp311-win_amd64.pyd +0 -0
  582. scipy/special/_spherical_bessel.py +4 -4
  583. scipy/special/_support_alternative_backends.py +212 -119
  584. scipy/special/_test_internal.cp311-win_amd64.dll.a +0 -0
  585. scipy/special/_test_internal.cp311-win_amd64.pyd +0 -0
  586. scipy/special/_testutils.py +4 -4
  587. scipy/special/_ufuncs.cp311-win_amd64.dll.a +0 -0
  588. scipy/special/_ufuncs.cp311-win_amd64.pyd +0 -0
  589. scipy/special/_ufuncs.pyi +1 -0
  590. scipy/special/_ufuncs.pyx +215 -1400
  591. scipy/special/_ufuncs_cxx.cp311-win_amd64.dll.a +0 -0
  592. scipy/special/_ufuncs_cxx.cp311-win_amd64.pyd +0 -0
  593. scipy/special/_ufuncs_cxx.pxd +2 -15
  594. scipy/special/_ufuncs_cxx.pyx +5 -44
  595. scipy/special/_ufuncs_cxx_defs.h +2 -16
  596. scipy/special/_ufuncs_defs.h +0 -8
  597. scipy/special/cython_special.cp311-win_amd64.dll.a +0 -0
  598. scipy/special/cython_special.cp311-win_amd64.pyd +0 -0
  599. scipy/special/cython_special.pxd +1 -1
  600. scipy/special/tests/_cython_examples/meson.build +10 -1
  601. scipy/special/tests/test_basic.py +153 -20
  602. scipy/special/tests/test_boost_ufuncs.py +3 -0
  603. scipy/special/tests/test_cdflib.py +35 -11
  604. scipy/special/tests/test_gammainc.py +16 -0
  605. scipy/special/tests/test_hyp2f1.py +23 -2
  606. scipy/special/tests/test_log1mexp.py +85 -0
  607. scipy/special/tests/test_logsumexp.py +220 -64
  608. scipy/special/tests/test_mpmath.py +1 -0
  609. scipy/special/tests/test_nan_inputs.py +1 -1
  610. scipy/special/tests/test_orthogonal.py +17 -18
  611. scipy/special/tests/test_sf_error.py +3 -2
  612. scipy/special/tests/test_sph_harm.py +6 -7
  613. scipy/special/tests/test_support_alternative_backends.py +211 -76
  614. scipy/stats/__init__.py +4 -1
  615. scipy/stats/_ansari_swilk_statistics.cp311-win_amd64.dll.a +0 -0
  616. scipy/stats/_ansari_swilk_statistics.cp311-win_amd64.pyd +0 -0
  617. scipy/stats/_axis_nan_policy.py +5 -12
  618. scipy/stats/_biasedurn.cp311-win_amd64.dll.a +0 -0
  619. scipy/stats/_biasedurn.cp311-win_amd64.pyd +0 -0
  620. scipy/stats/_continued_fraction.py +387 -0
  621. scipy/stats/_continuous_distns.py +296 -319
  622. scipy/stats/_correlation.py +1 -1
  623. scipy/stats/_covariance.py +6 -3
  624. scipy/stats/_discrete_distns.py +39 -32
  625. scipy/stats/_distn_infrastructure.py +39 -12
  626. scipy/stats/_distribution_infrastructure.py +920 -238
  627. scipy/stats/_entropy.py +9 -10
  628. scipy/{_lib → stats}/_finite_differences.py +1 -1
  629. scipy/stats/_hypotests.py +83 -50
  630. scipy/stats/_kde.py +53 -49
  631. scipy/stats/_ksstats.py +1 -1
  632. scipy/stats/_levy_stable/__init__.py +7 -15
  633. scipy/stats/_levy_stable/levyst.cp311-win_amd64.dll.a +0 -0
  634. scipy/stats/_levy_stable/levyst.cp311-win_amd64.pyd +0 -0
  635. scipy/stats/_morestats.py +118 -73
  636. scipy/stats/_mstats_basic.py +13 -17
  637. scipy/stats/_mstats_extras.py +8 -8
  638. scipy/stats/_multivariate.py +89 -113
  639. scipy/stats/_new_distributions.py +97 -20
  640. scipy/stats/_page_trend_test.py +12 -5
  641. scipy/stats/_probability_distribution.py +265 -43
  642. scipy/stats/_qmc.py +14 -9
  643. scipy/stats/_qmc_cy.cp311-win_amd64.dll.a +0 -0
  644. scipy/stats/_qmc_cy.cp311-win_amd64.pyd +0 -0
  645. scipy/stats/_qmvnt.py +16 -95
  646. scipy/stats/_qmvnt_cy.cp311-win_amd64.dll.a +0 -0
  647. scipy/stats/_qmvnt_cy.cp311-win_amd64.pyd +0 -0
  648. scipy/stats/_quantile.py +335 -0
  649. scipy/stats/_rcont/rcont.cp311-win_amd64.dll.a +0 -0
  650. scipy/stats/_rcont/rcont.cp311-win_amd64.pyd +0 -0
  651. scipy/stats/_resampling.py +5 -30
  652. scipy/stats/_sampling.py +1 -1
  653. scipy/stats/_sobol.cp311-win_amd64.dll.a +0 -0
  654. scipy/stats/_sobol.cp311-win_amd64.pyd +0 -0
  655. scipy/stats/_stats.cp311-win_amd64.dll.a +0 -0
  656. scipy/stats/_stats.cp311-win_amd64.pyd +0 -0
  657. scipy/stats/_stats_mstats_common.py +21 -2
  658. scipy/stats/_stats_py.py +551 -477
  659. scipy/stats/_stats_pythran.cp311-win_amd64.dll.a +0 -0
  660. scipy/stats/_stats_pythran.cp311-win_amd64.pyd +0 -0
  661. scipy/stats/_unuran/unuran_wrapper.cp311-win_amd64.dll.a +0 -0
  662. scipy/stats/_unuran/unuran_wrapper.cp311-win_amd64.pyd +0 -0
  663. scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
  664. scipy/stats/_variation.py +6 -8
  665. scipy/stats/_wilcoxon.py +13 -7
  666. scipy/stats/tests/common_tests.py +6 -4
  667. scipy/stats/tests/test_axis_nan_policy.py +62 -24
  668. scipy/stats/tests/test_continued_fraction.py +173 -0
  669. scipy/stats/tests/test_continuous.py +379 -60
  670. scipy/stats/tests/test_continuous_basic.py +18 -12
  671. scipy/stats/tests/test_discrete_basic.py +14 -8
  672. scipy/stats/tests/test_discrete_distns.py +16 -16
  673. scipy/stats/tests/test_distributions.py +117 -75
  674. scipy/stats/tests/test_entropy.py +40 -48
  675. scipy/stats/tests/test_fit.py +4 -3
  676. scipy/stats/tests/test_hypotests.py +153 -24
  677. scipy/stats/tests/test_kdeoth.py +109 -41
  678. scipy/stats/tests/test_marray.py +289 -0
  679. scipy/stats/tests/test_morestats.py +81 -49
  680. scipy/stats/tests/test_mstats_basic.py +3 -3
  681. scipy/stats/tests/test_multivariate.py +434 -83
  682. scipy/stats/tests/test_qmc.py +13 -10
  683. scipy/stats/tests/test_quantile.py +199 -0
  684. scipy/stats/tests/test_rank.py +119 -112
  685. scipy/stats/tests/test_resampling.py +47 -56
  686. scipy/stats/tests/test_sampling.py +9 -4
  687. scipy/stats/tests/test_stats.py +799 -939
  688. scipy/stats/tests/test_variation.py +8 -6
  689. scipy/version.py +2 -2
  690. scipy-1.16.0.dist-info/DELVEWHEEL +2 -0
  691. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/LICENSE.txt +4 -4
  692. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/METADATA +12 -12
  693. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/RECORD +695 -703
  694. scipy/_lib/array_api_extra/_funcs.py +0 -484
  695. scipy/_lib/array_api_extra/_typing.py +0 -8
  696. scipy/interpolate/_bspl.cp311-win_amd64.dll.a +0 -0
  697. scipy/interpolate/_bspl.cp311-win_amd64.pyd +0 -0
  698. scipy/optimize/_cobyla.cp311-win_amd64.dll.a +0 -0
  699. scipy/optimize/_cobyla.cp311-win_amd64.pyd +0 -0
  700. scipy/optimize/_cython_nnls.cp311-win_amd64.dll.a +0 -0
  701. scipy/optimize/_cython_nnls.cp311-win_amd64.pyd +0 -0
  702. scipy/optimize/_slsqp.cp311-win_amd64.dll.a +0 -0
  703. scipy/optimize/_slsqp.cp311-win_amd64.pyd +0 -0
  704. scipy/spatial/qhull_src/COPYING.txt +0 -38
  705. scipy/special/libsf_error_state.dll +0 -0
  706. scipy/special/libsf_error_state.dll.a +0 -0
  707. scipy/special/tests/test_log_softmax.py +0 -109
  708. scipy/special/tests/test_xsf_cuda.py +0 -114
  709. scipy/special/xsf/binom.h +0 -89
  710. scipy/special/xsf/cdflib.h +0 -100
  711. scipy/special/xsf/cephes/airy.h +0 -307
  712. scipy/special/xsf/cephes/besselpoly.h +0 -51
  713. scipy/special/xsf/cephes/beta.h +0 -257
  714. scipy/special/xsf/cephes/cbrt.h +0 -131
  715. scipy/special/xsf/cephes/chbevl.h +0 -85
  716. scipy/special/xsf/cephes/chdtr.h +0 -193
  717. scipy/special/xsf/cephes/const.h +0 -87
  718. scipy/special/xsf/cephes/ellie.h +0 -293
  719. scipy/special/xsf/cephes/ellik.h +0 -251
  720. scipy/special/xsf/cephes/ellpe.h +0 -107
  721. scipy/special/xsf/cephes/ellpk.h +0 -117
  722. scipy/special/xsf/cephes/expn.h +0 -260
  723. scipy/special/xsf/cephes/gamma.h +0 -398
  724. scipy/special/xsf/cephes/hyp2f1.h +0 -596
  725. scipy/special/xsf/cephes/hyperg.h +0 -361
  726. scipy/special/xsf/cephes/i0.h +0 -149
  727. scipy/special/xsf/cephes/i1.h +0 -158
  728. scipy/special/xsf/cephes/igam.h +0 -421
  729. scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
  730. scipy/special/xsf/cephes/igami.h +0 -313
  731. scipy/special/xsf/cephes/j0.h +0 -225
  732. scipy/special/xsf/cephes/j1.h +0 -198
  733. scipy/special/xsf/cephes/jv.h +0 -715
  734. scipy/special/xsf/cephes/k0.h +0 -164
  735. scipy/special/xsf/cephes/k1.h +0 -163
  736. scipy/special/xsf/cephes/kn.h +0 -243
  737. scipy/special/xsf/cephes/lanczos.h +0 -112
  738. scipy/special/xsf/cephes/ndtr.h +0 -275
  739. scipy/special/xsf/cephes/poch.h +0 -85
  740. scipy/special/xsf/cephes/polevl.h +0 -167
  741. scipy/special/xsf/cephes/psi.h +0 -194
  742. scipy/special/xsf/cephes/rgamma.h +0 -111
  743. scipy/special/xsf/cephes/scipy_iv.h +0 -811
  744. scipy/special/xsf/cephes/shichi.h +0 -248
  745. scipy/special/xsf/cephes/sici.h +0 -224
  746. scipy/special/xsf/cephes/sindg.h +0 -221
  747. scipy/special/xsf/cephes/tandg.h +0 -139
  748. scipy/special/xsf/cephes/trig.h +0 -58
  749. scipy/special/xsf/cephes/unity.h +0 -186
  750. scipy/special/xsf/cephes/zeta.h +0 -172
  751. scipy/special/xsf/config.h +0 -304
  752. scipy/special/xsf/digamma.h +0 -205
  753. scipy/special/xsf/error.h +0 -57
  754. scipy/special/xsf/evalpoly.h +0 -47
  755. scipy/special/xsf/expint.h +0 -266
  756. scipy/special/xsf/hyp2f1.h +0 -694
  757. scipy/special/xsf/iv_ratio.h +0 -173
  758. scipy/special/xsf/lambertw.h +0 -150
  759. scipy/special/xsf/loggamma.h +0 -163
  760. scipy/special/xsf/sici.h +0 -200
  761. scipy/special/xsf/tools.h +0 -427
  762. scipy/special/xsf/trig.h +0 -164
  763. scipy/special/xsf/wright_bessel.h +0 -843
  764. scipy/special/xsf/zlog1.h +0 -35
  765. scipy/stats/_mvn.cp311-win_amd64.dll.a +0 -0
  766. scipy/stats/_mvn.cp311-win_amd64.pyd +0 -0
  767. scipy-1.15.2.dist-info/DELVEWHEEL +0 -2
  768. /scipy-1.15.2-cp311-cp311-win_amd64.whl → /scipy-1.16.0-cp311-cp311-win_amd64.whl +0 -0
  769. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,212 @@
1
+ # Bounds may appear unused in this file but we need to import it to make it available to the user
2
+ from scipy.optimize import NonlinearConstraint, LinearConstraint, Bounds
3
+ from .common._nonlinear_constraints import process_nl_constraints
4
+ from .common._linear_constraints import (
5
+ combine_multiple_linear_constraints,
6
+ separate_LC_into_eq_and_ineq,
7
+ )
8
+ from .common._bounds import process_bounds
9
+ from enum import Enum
10
+ from .common._project import _project
11
+ from .common.linalg import get_arrays_tol
12
+ from .cobyla.cobyla import cobyla
13
+ import numpy as np
14
+ from collections.abc import Iterable
15
+
16
+
17
+ class ConstraintType(Enum):
18
+ LINEAR_OBJECT = 5
19
+ NONLINEAR_OBJECT = 10
20
+ LINEAR_DICT = 15
21
+ NONLINEAR_DICT = 20
22
+
23
+
24
+ def get_constraint_type(constraint):
25
+ if isinstance(constraint, dict) and ("A" in constraint) and ("lb" in constraint) and ("ub" in constraint):
26
+ return ConstraintType.LINEAR_DICT
27
+ elif isinstance(constraint, dict) and ("fun" in constraint) and ("lb" in constraint) and ("ub" in constraint):
28
+ return ConstraintType.NONLINEAR_DICT
29
+ elif hasattr(constraint, "A") and hasattr(constraint, "lb") and hasattr(constraint, "ub"):
30
+ return ConstraintType.LINEAR_OBJECT
31
+ elif hasattr(constraint, "fun") and hasattr(constraint, "lb") and hasattr(constraint, "ub"):
32
+ return ConstraintType.NONLINEAR_OBJECT
33
+ else:
34
+ raise ValueError(f"Constraint type {type(constraint)} not recognized")
35
+
36
+
37
+ def process_constraints(constraints):
38
+ # First throw it back if it's an empty tuple
39
+ if not constraints:
40
+ return None, None
41
+ # Next figure out if it's a list of constraints or a single constraint
42
+ # If it's a single constraint, make it a list, and then the remaining logic
43
+ # doesn't have to change
44
+ if not isinstance(constraints, Iterable):
45
+ constraints = [constraints]
46
+
47
+ # Separate out the linear and nonlinear constraints
48
+ linear_constraints = []
49
+ nonlinear_constraints = []
50
+ for constraint in constraints:
51
+ constraint_type = get_constraint_type(constraint)
52
+ if constraint_type is ConstraintType.LINEAR_OBJECT:
53
+ linear_constraints.append(constraint)
54
+ elif constraint_type is ConstraintType.NONLINEAR_OBJECT:
55
+ nonlinear_constraints.append(constraint)
56
+ elif constraint_type == ConstraintType.LINEAR_DICT:
57
+ linear_constraints.append(LinearConstraint(constraint["A"], constraint["lb"], constraint["ub"]))
58
+ elif constraint_type == ConstraintType.NONLINEAR_DICT:
59
+ nonlinear_constraints.append(NonlinearConstraint(constraint["fun"], constraint["lb"], constraint["ub"]))
60
+ else:
61
+ raise ValueError("Constraint type not recognized")
62
+
63
+ if len(nonlinear_constraints) > 0:
64
+ nonlinear_constraint_function = process_nl_constraints(nonlinear_constraints)
65
+ else:
66
+ nonlinear_constraint_function = None
67
+
68
+ # Determine if we have multiple linear constraints, just 1, or none, and process accordingly
69
+ if len(linear_constraints) > 1:
70
+ linear_constraint = combine_multiple_linear_constraints(linear_constraints)
71
+ elif len(linear_constraints) == 1:
72
+ linear_constraint = linear_constraints[0]
73
+ else:
74
+ linear_constraint = None
75
+
76
+ return linear_constraint, nonlinear_constraint_function
77
+
78
+
79
+ def minimize(fun, x0, args=(), method=None, bounds=None, constraints=(), callback=None, options=None):
80
+
81
+ linear_constraint, nonlinear_constraint_function = process_constraints(constraints)
82
+
83
+ options = {'quiet': True} if options is None else options
84
+ quiet = options.get("quiet", True)
85
+
86
+ if method is None:
87
+ if nonlinear_constraint_function is not None:
88
+ if not quiet: print("Nonlinear constraints detected, applying COBYLA")
89
+ method = "cobyla"
90
+ elif linear_constraint is not None:
91
+ if not quiet: print("Linear constraints detected without nonlinear constraints, applying LINCOA")
92
+ method = "lincoa"
93
+ elif bounds is not None:
94
+ if not quiet: print("Bounds without linear or nonlinear constraints detected, applying BOBYQA")
95
+ method = "bobyqa"
96
+ else:
97
+ if not quiet: print("No bounds or constraints detected, applying NEWUOA")
98
+ method = "newuoa"
99
+ else:
100
+ # Raise some errors if methods were called with inappropriate options
101
+ method = method.lower()
102
+ if method not in ('newuoa', 'uobyqa', 'bobyqa', 'cobyla', 'lincoa'):
103
+ raise ValueError(f"Method must be one of NEWUOA, UOBYQA, BOBYQA, COBYLA, or LINCOA, not '{method}'")
104
+ if method != "cobyla" and nonlinear_constraint_function is not None:
105
+ raise ValueError("Nonlinear constraints were provided for an algorithm that cannot handle them")
106
+ if method not in ("cobyla", "lincoa") and linear_constraint is not None:
107
+ raise ValueError("Linear constraints were provided for an algorithm that cannot handle them")
108
+ if method not in ("cobyla", "bobyqa", "lincoa") and bounds is not None:
109
+ raise ValueError("Bounds were provided for an algorithm that cannot handle them")
110
+
111
+ # Try to get the length of x0. If we can't that likely means it's a scalar, and
112
+ # in that case we turn it into an array and wrap the original function so that it
113
+ # can accept an array and return a scalar.
114
+ try:
115
+ lenx0 = len(x0)
116
+ except TypeError:
117
+ x0 = np.array([x0])
118
+ original_scalar_fun = fun
119
+ def scalar_fun(x):
120
+ return original_scalar_fun(x[0], *args)
121
+ fun = scalar_fun
122
+ lenx0 = 1
123
+
124
+ lb, ub = process_bounds(bounds, lenx0)
125
+
126
+ # Check which variables are fixed and eliminate them from the problem.
127
+ # Save the indices and values so that we can call the original function with
128
+ # an array of the appropriate size, and so that we can add the fixed values to the
129
+ # result when COBYLA returns.
130
+ tol = get_arrays_tol(lb, ub)
131
+ _fixed_idx = (
132
+ (lb <= ub)
133
+ & (np.abs(lb - ub) < tol)
134
+ )
135
+ if any(_fixed_idx):
136
+ _fixed_values = 0.5 * (
137
+ lb[_fixed_idx] + ub[_fixed_idx]
138
+ )
139
+ _fixed_values = np.clip(
140
+ _fixed_values,
141
+ lb[_fixed_idx],
142
+ ub[_fixed_idx],
143
+ )
144
+ x0 = x0[~_fixed_idx]
145
+ lb = lb[~_fixed_idx]
146
+ ub = ub[~_fixed_idx]
147
+ original_fun = fun
148
+ def fixed_fun(x):
149
+ newx = np.zeros(lenx0)
150
+ newx[_fixed_idx] = _fixed_values
151
+ newx[~_fixed_idx] = x
152
+ return original_fun(newx, *args)
153
+ fun = fixed_fun
154
+
155
+
156
+ # Project x0 onto the feasible set
157
+ if nonlinear_constraint_function is None:
158
+ result = _project(x0, lb, ub, {"linear": linear_constraint, "nonlinear": None})
159
+ x0 = result.x
160
+
161
+ if linear_constraint is not None:
162
+ A_eq, b_eq, A_ineq, b_ineq = separate_LC_into_eq_and_ineq(linear_constraint)
163
+ else:
164
+ A_eq, b_eq, A_ineq, b_ineq = None, None, None, None
165
+
166
+ if nonlinear_constraint_function is not None:
167
+ # If there is a nonlinear constraint function, we will call COBYLA, which needs the number of nonlinear
168
+ # constraints (m_nlcon). In order to get this number we need to evaluate the constraint function at x0.
169
+ # The constraint value at x0 (nlconstr0) is not discarded but passed down to the Fortran backend, as its
170
+ # evaluation is assumed to be expensive. We also evaluate the objective function at x0 and pass the result
171
+ # (f0) down to the Fortran backend, which expects nlconstr0 and f0 to be provided in sync.
172
+ def calcfc(x):
173
+ f = fun(x, *args)
174
+ nlconstr = nonlinear_constraint_function(x)
175
+ return f, nlconstr
176
+ else:
177
+ def calcfc(x):
178
+ f = fun(x, *args)
179
+ constr = np.zeros(0)
180
+ return f, constr
181
+
182
+ f0, nlconstr0 = calcfc(x0)
183
+
184
+ if 'quiet' in options:
185
+ del options['quiet']
186
+
187
+ if 'maxfev' in options:
188
+ options['maxfun'] = options['maxfev']
189
+ del options['maxfev']
190
+
191
+ result = cobyla(
192
+ calcfc,
193
+ len(nlconstr0),
194
+ x0,
195
+ A_ineq,
196
+ b_ineq,
197
+ A_eq,
198
+ b_eq,
199
+ lb,
200
+ ub,
201
+ f0=f0,
202
+ nlconstr0=nlconstr0,
203
+ callback=callback,
204
+ **options
205
+ )
206
+
207
+ if any(_fixed_idx):
208
+ newx = np.zeros(lenx0)
209
+ newx[_fixed_idx] = _fixed_values
210
+ newx[~_fixed_idx] = result.x
211
+ result.x = newx
212
+ return result
File without changes