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
@@ -4,6 +4,7 @@ import numpy as np
4
4
  from numpy import asarray_chkfinite, asarray, atleast_2d, empty_like
5
5
 
6
6
  # Local imports
7
+ from scipy._lib._util import _apply_over_batch
7
8
  from ._misc import LinAlgError, _datacopied
8
9
  from .lapack import get_lapack_funcs
9
10
 
@@ -35,14 +36,18 @@ def _cholesky(a, lower=False, overwrite_a=False, clean=True,
35
36
  potrf, = get_lapack_funcs(('potrf',), (a1,))
36
37
  c, info = potrf(a1, lower=lower, overwrite_a=overwrite_a, clean=clean)
37
38
  if info > 0:
38
- raise LinAlgError("%d-th leading minor of the array is not positive "
39
- "definite" % info)
39
+ raise LinAlgError(
40
+ f"{info}-th leading minor of the array is not positive definite"
41
+ )
40
42
  if info < 0:
41
- raise ValueError(f'LAPACK reported an illegal value in {-info}-th argument'
42
- 'on entry to "POTRF".')
43
+ raise ValueError(
44
+ f'LAPACK reported an illegal value in {-info}-th argument '
45
+ f'on entry to "POTRF".'
46
+ )
43
47
  return c, lower
44
48
 
45
49
 
50
+ @_apply_over_batch(('a', 2))
46
51
  def cholesky(a, lower=False, overwrite_a=False, check_finite=True):
47
52
  """
48
53
  Compute the Cholesky decomposition of a matrix.
@@ -103,6 +108,7 @@ def cholesky(a, lower=False, overwrite_a=False, check_finite=True):
103
108
  return c
104
109
 
105
110
 
111
+ @_apply_over_batch(("a", 2))
106
112
  def cho_factor(a, lower=False, overwrite_a=False, check_finite=True):
107
113
  """
108
114
  Compute the Cholesky decomposition of a matrix, to use in cho_solve
@@ -215,7 +221,12 @@ def cho_solve(c_and_lower, b, overwrite_b=False, check_finite=True):
215
221
  True
216
222
 
217
223
  """
218
- (c, lower) = c_and_lower
224
+ c, lower = c_and_lower
225
+ return _cho_solve(c, b, lower, overwrite_b=overwrite_b, check_finite=check_finite)
226
+
227
+
228
+ @_apply_over_batch(('c', 2), ('b', '1|2'))
229
+ def _cho_solve(c, b, lower, overwrite_b, check_finite):
219
230
  if check_finite:
220
231
  b1 = asarray_chkfinite(b)
221
232
  c = asarray_chkfinite(c)
@@ -239,11 +250,11 @@ def cho_solve(c_and_lower, b, overwrite_b=False, check_finite=True):
239
250
  potrs, = get_lapack_funcs(('potrs',), (c, b1))
240
251
  x, info = potrs(c, b1, lower=lower, overwrite_b=overwrite_b)
241
252
  if info != 0:
242
- raise ValueError('illegal value in %dth argument of internal potrs'
243
- % -info)
253
+ raise ValueError(f'illegal value in {-info}th argument of internal potrs')
244
254
  return x
245
255
 
246
256
 
257
+ @_apply_over_batch(("ab", 2))
247
258
  def cholesky_banded(ab, overwrite_ab=False, lower=False, check_finite=True):
248
259
  """
249
260
  Cholesky decompose a banded Hermitian positive-definite matrix
@@ -317,10 +328,9 @@ def cholesky_banded(ab, overwrite_ab=False, lower=False, check_finite=True):
317
328
  pbtrf, = get_lapack_funcs(('pbtrf',), (ab,))
318
329
  c, info = pbtrf(ab, lower=lower, overwrite_ab=overwrite_ab)
319
330
  if info > 0:
320
- raise LinAlgError("%d-th leading minor not positive definite" % info)
331
+ raise LinAlgError(f"{info}-th leading minor not positive definite")
321
332
  if info < 0:
322
- raise ValueError('illegal value in %d-th argument of internal pbtrf'
323
- % -info)
333
+ raise ValueError(f'illegal value in {info}-th argument of internal pbtrf')
324
334
  return c
325
335
 
326
336
 
@@ -371,6 +381,12 @@ def cho_solve_banded(cb_and_lower, b, overwrite_b=False, check_finite=True):
371
381
 
372
382
  """
373
383
  (cb, lower) = cb_and_lower
384
+ return _cho_solve_banded(cb, b, lower, overwrite_b=overwrite_b,
385
+ check_finite=check_finite)
386
+
387
+
388
+ @_apply_over_batch(('cb', 2), ('b', '1|2'))
389
+ def _cho_solve_banded(cb, b, lower, overwrite_b, check_finite):
374
390
  if check_finite:
375
391
  cb = asarray_chkfinite(cb)
376
392
  b = asarray_chkfinite(b)
@@ -391,8 +407,7 @@ def cho_solve_banded(cb_and_lower, b, overwrite_b=False, check_finite=True):
391
407
  pbtrs, = get_lapack_funcs(('pbtrs',), (cb, b))
392
408
  x, info = pbtrs(cb, b, lower=lower, overwrite_b=overwrite_b)
393
409
  if info > 0:
394
- raise LinAlgError("%dth leading minor not positive definite" % info)
410
+ raise LinAlgError(f"{info}th leading minor not positive definite")
395
411
  if info < 0:
396
- raise ValueError('illegal value in %dth argument of internal pbtrs'
397
- % -info)
412
+ raise ValueError(f'illegal value in {-info}th argument of internal pbtrs')
398
413
  return x
@@ -1,7 +1,7 @@
1
1
  from collections.abc import Iterable
2
2
  import numpy as np
3
3
 
4
- from scipy._lib._util import _asarray_validated
4
+ from scipy._lib._util import _asarray_validated, _apply_over_batch
5
5
  from scipy.linalg import block_diag, LinAlgError
6
6
  from .lapack import _compute_lwork, get_lapack_funcs
7
7
 
@@ -80,6 +80,13 @@ def cossin(X, p=None, q=None, separate=False,
80
80
  (``m-q`` x ``m-q``) orthogonal/unitary matrices. If ``separate=True``,
81
81
  this contains the tuple of ``(V1H, V2H)``.
82
82
 
83
+ Notes
84
+ -----
85
+ The documentation is written assuming array arguments are of specified
86
+ "core" shapes. However, array argument(s) of this function may have additional
87
+ "batch" dimensions prepended to the core shape. In this case, the array is treated
88
+ as a batch of lower-dimensional slices; see :ref:`linalg_batch` for details.
89
+
83
90
  References
84
91
  ----------
85
92
  .. [1] Brian D. Sutton. Computing the complete CS decomposition. Numer.
@@ -111,16 +118,17 @@ def cossin(X, p=None, q=None, separate=False,
111
118
  p = 1 if p is None else int(p)
112
119
  q = 1 if q is None else int(q)
113
120
  X = _asarray_validated(X, check_finite=True)
114
- if not np.equal(*X.shape):
121
+ if not np.equal(*X.shape[-2:]):
115
122
  raise ValueError("Cosine Sine decomposition only supports square"
116
- f" matrices, got {X.shape}")
117
- m = X.shape[0]
123
+ f" matrices, got {X.shape[-2:]}")
124
+ m = X.shape[-2]
118
125
  if p >= m or p <= 0:
119
- raise ValueError(f"invalid p={p}, 0<p<{X.shape[0]} must hold")
126
+ raise ValueError(f"invalid p={p}, 0<p<{X.shape[-2]} must hold")
120
127
  if q >= m or q <= 0:
121
- raise ValueError(f"invalid q={q}, 0<q<{X.shape[0]} must hold")
128
+ raise ValueError(f"invalid q={q}, 0<q<{X.shape[-2]} must hold")
122
129
 
123
- x11, x12, x21, x22 = X[:p, :q], X[:p, q:], X[p:, :q], X[p:, q:]
130
+ x11, x12, x21, x22 = (X[..., :p, :q], X[..., :p, q:],
131
+ X[..., p:, :q], X[..., p:, q:])
124
132
  elif not isinstance(X, Iterable):
125
133
  raise ValueError("When p and q are None, X must be an Iterable"
126
134
  " containing the subblocks of X")
@@ -128,30 +136,37 @@ def cossin(X, p=None, q=None, separate=False,
128
136
  if len(X) != 4:
129
137
  raise ValueError("When p and q are None, exactly four arrays"
130
138
  f" should be in X, got {len(X)}")
131
-
132
139
  x11, x12, x21, x22 = (np.atleast_2d(x) for x in X)
133
- for name, block in zip(["x11", "x12", "x21", "x22"],
134
- [x11, x12, x21, x22]):
135
- if block.shape[1] == 0:
136
- raise ValueError(f"{name} can't be empty")
137
- p, q = x11.shape
138
- mmp, mmq = x22.shape
139
-
140
- if x12.shape != (p, mmq):
141
- raise ValueError(f"Invalid x12 dimensions: desired {(p, mmq)}, "
142
- f"got {x12.shape}")
143
-
144
- if x21.shape != (mmp, q):
145
- raise ValueError(f"Invalid x21 dimensions: desired {(mmp, q)}, "
146
- f"got {x21.shape}")
147
-
148
- if p + mmp != q + mmq:
149
- raise ValueError("The subblocks have compatible sizes but "
150
- "don't form a square array (instead they form a"
151
- f" {p + mmp}x{q + mmq} array). This might be "
152
- "due to missing p, q arguments.")
153
-
154
- m = p + mmp
140
+
141
+ return _cossin(x11, x12, x21, x22, separate=separate, swap_sign=swap_sign,
142
+ compute_u=compute_u, compute_vh=compute_vh)
143
+
144
+
145
+ @_apply_over_batch(('x11', 2), ('x12', 2), ('x21', 2), ('x22', 2))
146
+ def _cossin(x11, x12, x21, x22, separate, swap_sign, compute_u, compute_vh):
147
+
148
+ for name, block in zip(["x11", "x12", "x21", "x22"],
149
+ [x11, x12, x21, x22]):
150
+ if block.shape[1] == 0:
151
+ raise ValueError(f"{name} can't be empty")
152
+ p, q = x11.shape
153
+ mmp, mmq = x22.shape
154
+
155
+ if x12.shape != (p, mmq):
156
+ raise ValueError(f"Invalid x12 dimensions: desired {(p, mmq)}, "
157
+ f"got {x12.shape}")
158
+
159
+ if x21.shape != (mmp, q):
160
+ raise ValueError(f"Invalid x21 dimensions: desired {(mmp, q)}, "
161
+ f"got {x21.shape}")
162
+
163
+ if p + mmp != q + mmq:
164
+ raise ValueError("The subblocks have compatible sizes but "
165
+ "don't form a square array (instead they form a"
166
+ f" {p + mmp}x{q + mmq} array). This might be "
167
+ "due to missing p, q arguments.")
168
+
169
+ m = p + mmp
155
170
 
156
171
  cplx = any([np.iscomplexobj(x) for x in [x11, x12, x21, x22]])
157
172
  driver = "uncsd" if cplx else "orcsd"
@@ -3,13 +3,16 @@ from warnings import warn
3
3
  import numpy as np
4
4
  from numpy import (atleast_2d, arange, zeros_like, imag, diag,
5
5
  iscomplexobj, tril, triu, argsort, empty_like)
6
- from scipy._lib._util import ComplexWarning
6
+ from numpy.exceptions import ComplexWarning
7
+
8
+ from scipy._lib._util import _apply_over_batch
7
9
  from ._decomp import _asarray_validated
8
10
  from .lapack import get_lapack_funcs, _compute_lwork
9
11
 
10
12
  __all__ = ['ldl']
11
13
 
12
14
 
15
+ @_apply_over_batch(('A', 2))
13
16
  def ldl(A, lower=True, hermitian=True, overwrite_a=False, check_finite=True):
14
17
  """ Computes the LDLt or Bunch-Kaufman factorization of a symmetric/
15
18
  hermitian matrix.
@@ -6,6 +6,8 @@ from numpy import asarray, asarray_chkfinite
6
6
  import numpy as np
7
7
  from itertools import product
8
8
 
9
+ from scipy._lib._util import _apply_over_batch
10
+
9
11
  # Local imports
10
12
  from ._misc import _datacopied, LinAlgWarning
11
13
  from .lapack import get_lapack_funcs
@@ -17,6 +19,7 @@ lapack_cast_dict = {x: ''.join([y for y in 'fdFD' if np.can_cast(x, y)])
17
19
  __all__ = ['lu', 'lu_solve', 'lu_factor']
18
20
 
19
21
 
22
+ @_apply_over_batch(('a', 2))
20
23
  def lu_factor(a, overwrite_a=False, check_finite=True):
21
24
  """
22
25
  Compute pivoted LU decomposition of a matrix.
@@ -118,11 +121,15 @@ def lu_factor(a, overwrite_a=False, check_finite=True):
118
121
  getrf, = get_lapack_funcs(('getrf',), (a1,))
119
122
  lu, piv, info = getrf(a1, overwrite_a=overwrite_a)
120
123
  if info < 0:
121
- raise ValueError('illegal value in %dth argument of '
122
- 'internal getrf (lu_factor)' % -info)
124
+ raise ValueError(
125
+ f'illegal value in {-info}th argument of internal getrf (lu_factor)'
126
+ )
123
127
  if info > 0:
124
- warn("Diagonal number %d is exactly zero. Singular matrix." % info,
125
- LinAlgWarning, stacklevel=2)
128
+ warn(
129
+ f"Diagonal number {info} is exactly zero. Singular matrix.",
130
+ LinAlgWarning,
131
+ stacklevel=2
132
+ )
126
133
  return lu, piv
127
134
 
128
135
 
@@ -175,6 +182,12 @@ def lu_solve(lu_and_piv, b, trans=0, overwrite_b=False, check_finite=True):
175
182
 
176
183
  """
177
184
  (lu, piv) = lu_and_piv
185
+ return _lu_solve(lu, piv, b, trans=trans, overwrite_b=overwrite_b,
186
+ check_finite=check_finite)
187
+
188
+
189
+ @_apply_over_batch(('lu', 2), ('piv', 1), ('b', '1|2'))
190
+ def _lu_solve(lu, piv, b, trans, overwrite_b, check_finite):
178
191
  if check_finite:
179
192
  b1 = asarray_chkfinite(b)
180
193
  else:
@@ -194,8 +207,7 @@ def lu_solve(lu_and_piv, b, trans=0, overwrite_b=False, check_finite=True):
194
207
  x, info = getrs(lu, piv, b1, trans=trans, overwrite_b=overwrite_b)
195
208
  if info == 0:
196
209
  return x
197
- raise ValueError('illegal value in %dth argument of internal gesv|posv'
198
- % -info)
210
+ raise ValueError(f'illegal value in {-info}th argument of internal gesv|posv')
199
211
 
200
212
 
201
213
  def lu(a, permute_l=False, overwrite_a=False, check_finite=True,
@@ -1,10 +1,12 @@
1
1
  import numpy as np
2
+ from scipy._lib._util import _apply_over_batch
2
3
  from scipy.linalg import svd
3
4
 
4
5
 
5
6
  __all__ = ['polar']
6
7
 
7
8
 
9
+ @_apply_over_batch(('a', 2))
8
10
  def polar(a, side="right"):
9
11
  """
10
12
  Compute the polar decomposition.
@@ -1,6 +1,8 @@
1
1
  """QR decomposition functions."""
2
2
  import numpy as np
3
3
 
4
+ from scipy._lib._util import _apply_over_batch
5
+
4
6
  # Local imports
5
7
  from .lapack import get_lapack_funcs
6
8
  from ._misc import _datacopied
@@ -18,11 +20,11 @@ def safecall(f, name, *args, **kwargs):
18
20
  kwargs['lwork'] = ret[-2][0].real.astype(np.int_)
19
21
  ret = f(*args, **kwargs)
20
22
  if ret[-1] < 0:
21
- raise ValueError("illegal value in %dth argument of internal %s"
22
- % (-ret[-1], name))
23
+ raise ValueError(f"illegal value in {-ret[-1]}th argument of internal {name}")
23
24
  return ret[:-2]
24
25
 
25
26
 
27
+ @_apply_over_batch(('a', 2))
26
28
  def qr(a, overwrite_a=False, lwork=None, mode='full', pivoting=False,
27
29
  check_finite=True):
28
30
  """
@@ -214,6 +216,7 @@ def qr(a, overwrite_a=False, lwork=None, mode='full', pivoting=False,
214
216
  return (Q,) + Rj
215
217
 
216
218
 
219
+ @_apply_over_batch(('a', 2), ('c', '1|2'))
217
220
  def qr_multiply(a, c, mode='right', pivoting=False, conjugate=False,
218
221
  overwrite_a=False, overwrite_c=False):
219
222
  """
@@ -366,6 +369,7 @@ def qr_multiply(a, c, mode='right', pivoting=False, conjugate=False,
366
369
  return (cQ,) + raw[1:]
367
370
 
368
371
 
372
+ @_apply_over_batch(('a', 2))
369
373
  def rq(a, overwrite_a=False, lwork=None, mode='full', check_finite=True):
370
374
  """
371
375
  Compute RQ decomposition of a matrix.
@@ -2,6 +2,7 @@ import warnings
2
2
 
3
3
  import numpy as np
4
4
  from numpy import asarray_chkfinite
5
+ from scipy._lib._util import _apply_over_batch
5
6
  from ._misc import LinAlgError, _datacopied, LinAlgWarning
6
7
  from .lapack import get_lapack_funcs
7
8
 
@@ -142,6 +143,7 @@ def _qz(A, B, output='real', lwork=None, sort=None, overwrite_a=False,
142
143
  return result, gges.typecode
143
144
 
144
145
 
146
+ @_apply_over_batch(('A', 2), ('B', 2))
145
147
  def qz(A, B, output='real', lwork=None, sort=None, overwrite_a=False,
146
148
  overwrite_b=False, check_finite=True):
147
149
  """
@@ -317,6 +319,7 @@ def qz(A, B, output='real', lwork=None, sort=None, overwrite_a=False,
317
319
  return result[0], result[1], result[-4], result[-3]
318
320
 
319
321
 
322
+ @_apply_over_batch(('A', 2), ('B', 2))
320
323
  def ordqz(A, B, sort='lhp', output='real', overwrite_a=False,
321
324
  overwrite_b=False, check_finite=True):
322
325
  """QZ decomposition for a pair of matrices with reordering.
@@ -3,7 +3,7 @@ import numpy as np
3
3
  from numpy import asarray_chkfinite, single, asarray, array
4
4
  from numpy.linalg import norm
5
5
 
6
-
6
+ from scipy._lib._util import _apply_over_batch
7
7
  # Local imports.
8
8
  from ._misc import LinAlgError, _datacopied
9
9
  from .lapack import get_lapack_funcs
@@ -14,6 +14,7 @@ __all__ = ['schur', 'rsf2csf']
14
14
  _double_precision = ['i', 'l', 'd']
15
15
 
16
16
 
17
+ @_apply_over_batch(('a', 2))
17
18
  def schur(a, output='real', lwork=None, overwrite_a=False, sort=None,
18
19
  check_finite=True):
19
20
  """
@@ -248,6 +249,7 @@ def _castCopy(type, *arrays):
248
249
  return cast_arrays
249
250
 
250
251
 
252
+ @_apply_over_batch(('T', 2), ('Z', 2))
251
253
  def rsf2csf(T, Z, check_finite=True):
252
254
  """
253
255
  Convert real Schur form to complex Schur form.
@@ -2,14 +2,18 @@
2
2
  import numpy as np
3
3
  from numpy import zeros, r_, diag, dot, arccos, arcsin, where, clip
4
4
 
5
+ from scipy._lib._util import _apply_over_batch
6
+
5
7
  # Local imports.
6
8
  from ._misc import LinAlgError, _datacopied
7
9
  from .lapack import get_lapack_funcs, _compute_lwork
8
10
  from ._decomp import _asarray_validated
9
11
 
12
+
10
13
  __all__ = ['svd', 'svdvals', 'diagsvd', 'orth', 'subspace_angles', 'null_space']
11
14
 
12
15
 
16
+ @_apply_over_batch(('a', 2))
13
17
  def svd(a, full_matrices=True, compute_uv=True, overwrite_a=False,
14
18
  check_finite=True, lapack_driver='gesdd'):
15
19
  """
@@ -165,14 +169,17 @@ def svd(a, full_matrices=True, compute_uv=True, overwrite_a=False,
165
169
  if info > 0:
166
170
  raise LinAlgError("SVD did not converge")
167
171
  if info < 0:
168
- raise ValueError('illegal value in %dth argument of internal gesdd'
169
- % -info)
172
+ if lapack_driver == "gesdd" and info == -4:
173
+ msg = "A has a NaN entry"
174
+ raise ValueError(msg)
175
+ raise ValueError(f'illegal value in {-info}th argument of internal gesdd')
170
176
  if compute_uv:
171
177
  return u, s, v
172
178
  else:
173
179
  return s
174
180
 
175
181
 
182
+ @_apply_over_batch(('a', 2))
176
183
  def svdvals(a, overwrite_a=False, check_finite=True):
177
184
  """
178
185
  Compute singular values of a matrix.
@@ -249,6 +256,7 @@ def svdvals(a, overwrite_a=False, check_finite=True):
249
256
  check_finite=check_finite)
250
257
 
251
258
 
259
+ @_apply_over_batch(('s', 1))
252
260
  def diagsvd(s, M, N):
253
261
  """
254
262
  Construct the sigma matrix in SVD from singular values and size M, N.
@@ -301,6 +309,7 @@ def diagsvd(s, M, N):
301
309
 
302
310
  # Orthonormal decomposition
303
311
 
312
+ @_apply_over_batch(('A', 2))
304
313
  def orth(A, rcond=None):
305
314
  """
306
315
  Construct an orthonormal basis for the range of A using SVD
@@ -349,6 +358,7 @@ def orth(A, rcond=None):
349
358
  return Q
350
359
 
351
360
 
361
+ @_apply_over_batch(('A', 2))
352
362
  def null_space(A, rcond=None, *, overwrite_a=False, check_finite=True,
353
363
  lapack_driver='gesdd'):
354
364
  """
@@ -427,6 +437,7 @@ def null_space(A, rcond=None, *, overwrite_a=False, check_finite=True,
427
437
  return Q
428
438
 
429
439
 
440
+ @_apply_over_batch(('A', 2), ('B', 2))
430
441
  def subspace_angles(A, B):
431
442
  r"""
432
443
  Compute the subspace angles between two matrices.
@@ -1,10 +1,13 @@
1
1
  """Frechet derivative of the matrix exponential."""
2
2
  import numpy as np
3
3
  import scipy.linalg
4
+ from scipy._lib._util import _apply_over_batch
5
+
4
6
 
5
7
  __all__ = ['expm_frechet', 'expm_cond']
6
8
 
7
9
 
10
+ @_apply_over_batch(('A', 2), ('E', 2))
8
11
  def expm_frechet(A, E, method=None, compute_expm=True, check_finite=True):
9
12
  """
10
13
  Frechet derivative of the matrix exponential of A in the direction E.
@@ -351,6 +354,7 @@ def expm_frechet_kronform(A, method=None, check_finite=True):
351
354
  return np.vstack(cols).T
352
355
 
353
356
 
357
+ @_apply_over_batch(('A', 2))
354
358
  def expm_cond(A, check_finite=True):
355
359
  """
356
360
  Relative condition number of the matrix exponential in the Frobenius norm.
Binary file
Binary file
Binary file
Binary file