scipy 1.15.2__cp313-cp313t-macosx_14_0_arm64.whl → 1.16.0__cp313-cp313t-macosx_14_0_arm64.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 (642) hide show
  1. scipy/.dylibs/libgcc_s.1.1.dylib +0 -0
  2. scipy/.dylibs/libgfortran.5.dylib +0 -0
  3. scipy/.dylibs/libquadmath.0.dylib +0 -0
  4. scipy/__config__.py +5 -5
  5. scipy/__init__.py +3 -6
  6. scipy/_cyutility.cpython-313t-darwin.so +0 -0
  7. scipy/_lib/_array_api.py +497 -161
  8. scipy/_lib/_array_api_compat_vendor.py +9 -0
  9. scipy/_lib/_bunch.py +4 -0
  10. scipy/_lib/_ccallback_c.cpython-313t-darwin.so +0 -0
  11. scipy/_lib/_docscrape.py +1 -1
  12. scipy/_lib/_elementwise_iterative_method.py +15 -26
  13. scipy/_lib/_sparse.py +41 -0
  14. scipy/_lib/_test_ccallback.cpython-313t-darwin.so +0 -0
  15. scipy/_lib/_test_deprecation_call.cpython-313t-darwin.so +0 -0
  16. scipy/_lib/_test_deprecation_def.cpython-313t-darwin.so +0 -0
  17. scipy/_lib/_testutils.py +6 -2
  18. scipy/_lib/_util.py +222 -125
  19. scipy/_lib/array_api_compat/__init__.py +4 -4
  20. scipy/_lib/array_api_compat/_internal.py +19 -6
  21. scipy/_lib/array_api_compat/common/__init__.py +1 -1
  22. scipy/_lib/array_api_compat/common/_aliases.py +365 -193
  23. scipy/_lib/array_api_compat/common/_fft.py +94 -64
  24. scipy/_lib/array_api_compat/common/_helpers.py +413 -180
  25. scipy/_lib/array_api_compat/common/_linalg.py +116 -40
  26. scipy/_lib/array_api_compat/common/_typing.py +179 -10
  27. scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
  28. scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
  29. scipy/_lib/array_api_compat/cupy/_info.py +16 -6
  30. scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
  31. scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
  32. scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
  33. scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
  34. scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
  35. scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
  36. scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
  37. scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
  38. scipy/_lib/array_api_compat/numpy/_info.py +36 -16
  39. scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
  40. scipy/_lib/array_api_compat/numpy/fft.py +11 -5
  41. scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
  42. scipy/_lib/array_api_compat/torch/__init__.py +3 -5
  43. scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
  44. scipy/_lib/array_api_compat/torch/_info.py +27 -16
  45. scipy/_lib/array_api_compat/torch/_typing.py +3 -0
  46. scipy/_lib/array_api_compat/torch/fft.py +17 -18
  47. scipy/_lib/array_api_compat/torch/linalg.py +16 -16
  48. scipy/_lib/array_api_extra/__init__.py +26 -3
  49. scipy/_lib/array_api_extra/_delegation.py +171 -0
  50. scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
  51. scipy/_lib/array_api_extra/_lib/_at.py +463 -0
  52. scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
  53. scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
  54. scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
  55. scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
  56. scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
  57. scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
  58. scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
  59. scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
  60. scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
  61. scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
  62. scipy/_lib/array_api_extra/testing.py +359 -0
  63. scipy/_lib/decorator.py +2 -2
  64. scipy/_lib/doccer.py +1 -7
  65. scipy/_lib/messagestream.cpython-313t-darwin.so +0 -0
  66. scipy/_lib/pyprima/__init__.py +212 -0
  67. scipy/_lib/pyprima/cobyla/__init__.py +0 -0
  68. scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
  69. scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
  70. scipy/_lib/pyprima/cobyla/geometry.py +226 -0
  71. scipy/_lib/pyprima/cobyla/initialize.py +215 -0
  72. scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
  73. scipy/_lib/pyprima/cobyla/update.py +289 -0
  74. scipy/_lib/pyprima/common/__init__.py +0 -0
  75. scipy/_lib/pyprima/common/_bounds.py +34 -0
  76. scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
  77. scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
  78. scipy/_lib/pyprima/common/_project.py +173 -0
  79. scipy/_lib/pyprima/common/checkbreak.py +93 -0
  80. scipy/_lib/pyprima/common/consts.py +47 -0
  81. scipy/_lib/pyprima/common/evaluate.py +99 -0
  82. scipy/_lib/pyprima/common/history.py +38 -0
  83. scipy/_lib/pyprima/common/infos.py +30 -0
  84. scipy/_lib/pyprima/common/linalg.py +435 -0
  85. scipy/_lib/pyprima/common/message.py +290 -0
  86. scipy/_lib/pyprima/common/powalg.py +131 -0
  87. scipy/_lib/pyprima/common/preproc.py +277 -0
  88. scipy/_lib/pyprima/common/present.py +5 -0
  89. scipy/_lib/pyprima/common/ratio.py +54 -0
  90. scipy/_lib/pyprima/common/redrho.py +47 -0
  91. scipy/_lib/pyprima/common/selectx.py +296 -0
  92. scipy/_lib/tests/test__util.py +105 -121
  93. scipy/_lib/tests/test_array_api.py +169 -34
  94. scipy/_lib/tests/test_bunch.py +7 -0
  95. scipy/_lib/tests/test_ccallback.py +2 -10
  96. scipy/_lib/tests/test_public_api.py +13 -0
  97. scipy/cluster/_hierarchy.cpython-313t-darwin.so +0 -0
  98. scipy/cluster/_optimal_leaf_ordering.cpython-313t-darwin.so +0 -0
  99. scipy/cluster/_vq.cpython-313t-darwin.so +0 -0
  100. scipy/cluster/hierarchy.py +393 -223
  101. scipy/cluster/tests/test_hierarchy.py +273 -335
  102. scipy/cluster/tests/test_vq.py +45 -61
  103. scipy/cluster/vq.py +39 -35
  104. scipy/conftest.py +282 -151
  105. scipy/constants/_constants.py +4 -1
  106. scipy/constants/tests/test_codata.py +2 -2
  107. scipy/constants/tests/test_constants.py +11 -18
  108. scipy/datasets/_download_all.py +15 -1
  109. scipy/datasets/_fetchers.py +7 -1
  110. scipy/datasets/_utils.py +1 -1
  111. scipy/differentiate/_differentiate.py +25 -25
  112. scipy/differentiate/tests/test_differentiate.py +24 -25
  113. scipy/fft/_basic.py +20 -0
  114. scipy/fft/_helper.py +3 -34
  115. scipy/fft/_pocketfft/helper.py +29 -1
  116. scipy/fft/_pocketfft/tests/test_basic.py +2 -4
  117. scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
  118. scipy/fft/_realtransforms.py +13 -0
  119. scipy/fft/tests/test_basic.py +27 -25
  120. scipy/fft/tests/test_fftlog.py +16 -7
  121. scipy/fft/tests/test_helper.py +18 -34
  122. scipy/fft/tests/test_real_transforms.py +8 -10
  123. scipy/fftpack/convolve.cpython-313t-darwin.so +0 -0
  124. scipy/fftpack/tests/test_basic.py +2 -4
  125. scipy/fftpack/tests/test_real_transforms.py +8 -9
  126. scipy/integrate/_bvp.py +9 -3
  127. scipy/integrate/_cubature.py +3 -2
  128. scipy/integrate/_dop.cpython-313t-darwin.so +0 -0
  129. scipy/integrate/_ivp/common.py +3 -3
  130. scipy/integrate/_ivp/ivp.py +9 -2
  131. scipy/integrate/_ivp/tests/test_ivp.py +19 -0
  132. scipy/integrate/_lsoda.cpython-313t-darwin.so +0 -0
  133. scipy/integrate/_ode.py +9 -2
  134. scipy/integrate/_odepack.cpython-313t-darwin.so +0 -0
  135. scipy/integrate/_quad_vec.py +21 -29
  136. scipy/integrate/_quadpack.cpython-313t-darwin.so +0 -0
  137. scipy/integrate/_quadpack_py.py +11 -7
  138. scipy/integrate/_quadrature.py +3 -3
  139. scipy/integrate/_rules/_base.py +2 -2
  140. scipy/integrate/_tanhsinh.py +57 -54
  141. scipy/integrate/_test_odeint_banded.cpython-313t-darwin.so +0 -0
  142. scipy/integrate/_vode.cpython-313t-darwin.so +0 -0
  143. scipy/integrate/tests/test__quad_vec.py +0 -6
  144. scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
  145. scipy/integrate/tests/test_cubature.py +21 -35
  146. scipy/integrate/tests/test_quadrature.py +6 -8
  147. scipy/integrate/tests/test_tanhsinh.py +61 -43
  148. scipy/interpolate/__init__.py +70 -58
  149. scipy/interpolate/_bary_rational.py +22 -22
  150. scipy/interpolate/_bsplines.py +119 -66
  151. scipy/interpolate/_cubic.py +65 -50
  152. scipy/interpolate/_dfitpack.cpython-313t-darwin.so +0 -0
  153. scipy/interpolate/_dierckx.cpython-313t-darwin.so +0 -0
  154. scipy/interpolate/_fitpack.cpython-313t-darwin.so +0 -0
  155. scipy/interpolate/_fitpack2.py +9 -6
  156. scipy/interpolate/_fitpack_impl.py +32 -26
  157. scipy/interpolate/_fitpack_repro.py +23 -19
  158. scipy/interpolate/_interpnd.cpython-313t-darwin.so +0 -0
  159. scipy/interpolate/_interpolate.py +30 -12
  160. scipy/interpolate/_ndbspline.py +13 -18
  161. scipy/interpolate/_ndgriddata.py +5 -8
  162. scipy/interpolate/_polyint.py +95 -31
  163. scipy/interpolate/_ppoly.cpython-313t-darwin.so +0 -0
  164. scipy/interpolate/_rbf.py +2 -2
  165. scipy/interpolate/_rbfinterp.py +1 -1
  166. scipy/interpolate/_rbfinterp_pythran.cpython-313t-darwin.so +0 -0
  167. scipy/interpolate/_rgi.py +31 -26
  168. scipy/interpolate/_rgi_cython.cpython-313t-darwin.so +0 -0
  169. scipy/interpolate/dfitpack.py +0 -20
  170. scipy/interpolate/interpnd.py +1 -2
  171. scipy/interpolate/tests/test_bary_rational.py +2 -2
  172. scipy/interpolate/tests/test_bsplines.py +97 -1
  173. scipy/interpolate/tests/test_fitpack2.py +39 -1
  174. scipy/interpolate/tests/test_interpnd.py +32 -20
  175. scipy/interpolate/tests/test_interpolate.py +48 -4
  176. scipy/interpolate/tests/test_rgi.py +2 -1
  177. scipy/io/_fast_matrix_market/__init__.py +2 -0
  178. scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
  179. scipy/io/_harwell_boeing/hb.py +7 -11
  180. scipy/io/_idl.py +5 -7
  181. scipy/io/_netcdf.py +15 -5
  182. scipy/io/_test_fortran.cpython-313t-darwin.so +0 -0
  183. scipy/io/arff/tests/test_arffread.py +3 -3
  184. scipy/io/matlab/__init__.py +5 -3
  185. scipy/io/matlab/_mio.py +4 -1
  186. scipy/io/matlab/_mio5.py +19 -13
  187. scipy/io/matlab/_mio5_utils.cpython-313t-darwin.so +0 -0
  188. scipy/io/matlab/_mio_utils.cpython-313t-darwin.so +0 -0
  189. scipy/io/matlab/_miobase.py +4 -1
  190. scipy/io/matlab/_streams.cpython-313t-darwin.so +0 -0
  191. scipy/io/matlab/tests/test_mio.py +46 -18
  192. scipy/io/matlab/tests/test_mio_funcs.py +1 -1
  193. scipy/io/tests/test_mmio.py +7 -1
  194. scipy/io/tests/test_wavfile.py +41 -0
  195. scipy/io/wavfile.py +57 -10
  196. scipy/linalg/_basic.py +113 -86
  197. scipy/linalg/_cythonized_array_utils.cpython-313t-darwin.so +0 -0
  198. scipy/linalg/_decomp.py +22 -9
  199. scipy/linalg/_decomp_cholesky.py +28 -13
  200. scipy/linalg/_decomp_cossin.py +45 -30
  201. scipy/linalg/_decomp_interpolative.cpython-313t-darwin.so +0 -0
  202. scipy/linalg/_decomp_ldl.py +4 -1
  203. scipy/linalg/_decomp_lu.py +18 -6
  204. scipy/linalg/_decomp_lu_cython.cpython-313t-darwin.so +0 -0
  205. scipy/linalg/_decomp_polar.py +2 -0
  206. scipy/linalg/_decomp_qr.py +6 -2
  207. scipy/linalg/_decomp_qz.py +3 -0
  208. scipy/linalg/_decomp_schur.py +3 -1
  209. scipy/linalg/_decomp_svd.py +13 -2
  210. scipy/linalg/_decomp_update.cpython-313t-darwin.so +0 -0
  211. scipy/linalg/_expm_frechet.py +4 -0
  212. scipy/linalg/_fblas.cpython-313t-darwin.so +0 -0
  213. scipy/linalg/_flapack.cpython-313t-darwin.so +0 -0
  214. scipy/linalg/_linalg_pythran.cpython-313t-darwin.so +0 -0
  215. scipy/linalg/_matfuncs.py +187 -4
  216. scipy/linalg/_matfuncs_expm.cpython-313t-darwin.so +0 -0
  217. scipy/linalg/_matfuncs_schur_sqrtm.cpython-313t-darwin.so +0 -0
  218. scipy/linalg/_matfuncs_sqrtm.py +1 -99
  219. scipy/linalg/_matfuncs_sqrtm_triu.cpython-313t-darwin.so +0 -0
  220. scipy/linalg/_procrustes.py +2 -0
  221. scipy/linalg/_sketches.py +17 -6
  222. scipy/linalg/_solve_toeplitz.cpython-313t-darwin.so +0 -0
  223. scipy/linalg/_solvers.py +7 -2
  224. scipy/linalg/_special_matrices.py +26 -36
  225. scipy/linalg/blas.py +35 -24
  226. scipy/linalg/cython_blas.cpython-313t-darwin.so +0 -0
  227. scipy/linalg/cython_lapack.cpython-313t-darwin.so +0 -0
  228. scipy/linalg/lapack.py +22 -2
  229. scipy/linalg/tests/_cython_examples/meson.build +7 -0
  230. scipy/linalg/tests/test_basic.py +31 -16
  231. scipy/linalg/tests/test_batch.py +588 -0
  232. scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
  233. scipy/linalg/tests/test_decomp.py +40 -3
  234. scipy/linalg/tests/test_decomp_cossin.py +14 -0
  235. scipy/linalg/tests/test_decomp_ldl.py +1 -1
  236. scipy/linalg/tests/test_interpolative.py +17 -0
  237. scipy/linalg/tests/test_lapack.py +115 -7
  238. scipy/linalg/tests/test_matfuncs.py +157 -102
  239. scipy/linalg/tests/test_procrustes.py +0 -7
  240. scipy/linalg/tests/test_solve_toeplitz.py +1 -1
  241. scipy/linalg/tests/test_special_matrices.py +1 -5
  242. scipy/ndimage/__init__.py +1 -0
  243. scipy/ndimage/_cytest.cpython-313t-darwin.so +0 -0
  244. scipy/ndimage/_delegators.py +8 -2
  245. scipy/ndimage/_filters.py +453 -5
  246. scipy/ndimage/_interpolation.py +36 -6
  247. scipy/ndimage/_measurements.py +4 -2
  248. scipy/ndimage/_morphology.py +5 -0
  249. scipy/ndimage/_nd_image.cpython-313t-darwin.so +0 -0
  250. scipy/ndimage/_ndimage_api.py +2 -1
  251. scipy/ndimage/_ni_docstrings.py +5 -1
  252. scipy/ndimage/_ni_label.cpython-313t-darwin.so +0 -0
  253. scipy/ndimage/_ni_support.py +1 -5
  254. scipy/ndimage/_rank_filter_1d.cpython-313t-darwin.so +0 -0
  255. scipy/ndimage/_support_alternative_backends.py +18 -6
  256. scipy/ndimage/tests/test_filters.py +384 -259
  257. scipy/ndimage/tests/test_fourier.py +7 -9
  258. scipy/ndimage/tests/test_interpolation.py +68 -61
  259. scipy/ndimage/tests/test_measurements.py +18 -35
  260. scipy/ndimage/tests/test_morphology.py +143 -131
  261. scipy/ndimage/tests/test_splines.py +1 -3
  262. scipy/odr/__odrpack.cpython-313t-darwin.so +0 -0
  263. scipy/optimize/_basinhopping.py +13 -7
  264. scipy/optimize/_bglu_dense.cpython-313t-darwin.so +0 -0
  265. scipy/optimize/_bracket.py +46 -26
  266. scipy/optimize/_chandrupatla.py +9 -10
  267. scipy/optimize/_cobyla_py.py +104 -123
  268. scipy/optimize/_constraints.py +14 -10
  269. scipy/optimize/_differentiable_functions.py +371 -230
  270. scipy/optimize/_differentialevolution.py +4 -3
  271. scipy/optimize/_direct.cpython-313t-darwin.so +0 -0
  272. scipy/optimize/_dual_annealing.py +1 -1
  273. scipy/optimize/_elementwise.py +1 -4
  274. scipy/optimize/_group_columns.cpython-313t-darwin.so +0 -0
  275. scipy/optimize/_highspy/_highs_wrapper.py +6 -4
  276. scipy/optimize/_lbfgsb.cpython-313t-darwin.so +0 -0
  277. scipy/optimize/_lbfgsb_py.py +80 -24
  278. scipy/optimize/_linprog_doc.py +2 -2
  279. scipy/optimize/_linprog_highs.py +11 -11
  280. scipy/optimize/_linprog_ip.py +25 -10
  281. scipy/optimize/_linprog_util.py +18 -19
  282. scipy/optimize/_lsap.cpython-313t-darwin.so +0 -0
  283. scipy/optimize/_lsq/common.py +3 -3
  284. scipy/optimize/_lsq/dogbox.py +16 -2
  285. scipy/optimize/_lsq/givens_elimination.cpython-313t-darwin.so +0 -0
  286. scipy/optimize/_lsq/least_squares.py +198 -126
  287. scipy/optimize/_lsq/lsq_linear.py +6 -6
  288. scipy/optimize/_lsq/trf.py +35 -8
  289. scipy/optimize/_milp.py +3 -1
  290. scipy/optimize/_minimize.py +105 -36
  291. scipy/optimize/_minpack.cpython-313t-darwin.so +0 -0
  292. scipy/optimize/_minpack_py.py +21 -14
  293. scipy/optimize/_moduleTNC.cpython-313t-darwin.so +0 -0
  294. scipy/optimize/_nnls.py +20 -21
  295. scipy/optimize/_nonlin.py +34 -3
  296. scipy/optimize/_numdiff.py +288 -110
  297. scipy/optimize/_optimize.py +86 -48
  298. scipy/optimize/_pava_pybind.cpython-313t-darwin.so +0 -0
  299. scipy/optimize/_remove_redundancy.py +5 -5
  300. scipy/optimize/_root_scalar.py +1 -1
  301. scipy/optimize/_shgo.py +6 -0
  302. scipy/optimize/_shgo_lib/_complex.py +1 -1
  303. scipy/optimize/_slsqp_py.py +216 -124
  304. scipy/optimize/_slsqplib.cpython-313t-darwin.so +0 -0
  305. scipy/optimize/_spectral.py +1 -1
  306. scipy/optimize/_tnc.py +8 -1
  307. scipy/optimize/_trlib/_trlib.cpython-313t-darwin.so +0 -0
  308. scipy/optimize/_trustregion.py +20 -6
  309. scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
  310. scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
  311. scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
  312. scipy/optimize/_trustregion_constr/projections.py +12 -8
  313. scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
  314. scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
  315. scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
  316. scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
  317. scipy/optimize/_trustregion_exact.py +0 -1
  318. scipy/optimize/_zeros.cpython-313t-darwin.so +0 -0
  319. scipy/optimize/_zeros_py.py +97 -17
  320. scipy/optimize/cython_optimize/_zeros.cpython-313t-darwin.so +0 -0
  321. scipy/optimize/slsqp.py +0 -1
  322. scipy/optimize/tests/test__basinhopping.py +1 -1
  323. scipy/optimize/tests/test__differential_evolution.py +4 -4
  324. scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
  325. scipy/optimize/tests/test__numdiff.py +66 -22
  326. scipy/optimize/tests/test__remove_redundancy.py +2 -2
  327. scipy/optimize/tests/test__shgo.py +9 -1
  328. scipy/optimize/tests/test_bracket.py +71 -46
  329. scipy/optimize/tests/test_chandrupatla.py +133 -135
  330. scipy/optimize/tests/test_cobyla.py +74 -45
  331. scipy/optimize/tests/test_constraints.py +1 -1
  332. scipy/optimize/tests/test_differentiable_functions.py +226 -6
  333. scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
  334. scipy/optimize/tests/test_least_squares.py +125 -13
  335. scipy/optimize/tests/test_linear_assignment.py +3 -3
  336. scipy/optimize/tests/test_linprog.py +3 -3
  337. scipy/optimize/tests/test_lsq_linear.py +6 -6
  338. scipy/optimize/tests/test_minimize_constrained.py +2 -2
  339. scipy/optimize/tests/test_minpack.py +4 -4
  340. scipy/optimize/tests/test_nnls.py +43 -3
  341. scipy/optimize/tests/test_nonlin.py +36 -0
  342. scipy/optimize/tests/test_optimize.py +98 -20
  343. scipy/optimize/tests/test_slsqp.py +36 -4
  344. scipy/optimize/tests/test_zeros.py +34 -1
  345. scipy/signal/__init__.py +12 -23
  346. scipy/signal/_delegators.py +568 -0
  347. scipy/signal/_filter_design.py +459 -241
  348. scipy/signal/_fir_filter_design.py +262 -90
  349. scipy/signal/_lti_conversion.py +3 -2
  350. scipy/signal/_ltisys.py +118 -91
  351. scipy/signal/_max_len_seq_inner.cpython-313t-darwin.so +0 -0
  352. scipy/signal/_peak_finding_utils.cpython-313t-darwin.so +0 -0
  353. scipy/signal/_polyutils.py +172 -0
  354. scipy/signal/_short_time_fft.py +553 -76
  355. scipy/signal/_signal_api.py +30 -0
  356. scipy/signal/_signaltools.py +719 -396
  357. scipy/signal/_sigtools.cpython-313t-darwin.so +0 -0
  358. scipy/signal/_sosfilt.cpython-313t-darwin.so +0 -0
  359. scipy/signal/_spectral_py.py +230 -50
  360. scipy/signal/_spline.cpython-313t-darwin.so +0 -0
  361. scipy/signal/_spline_filters.py +108 -68
  362. scipy/signal/_support_alternative_backends.py +73 -0
  363. scipy/signal/_upfirdn.py +4 -1
  364. scipy/signal/_upfirdn_apply.cpython-313t-darwin.so +0 -0
  365. scipy/signal/_waveforms.py +2 -11
  366. scipy/signal/_wavelets.py +1 -1
  367. scipy/signal/fir_filter_design.py +1 -0
  368. scipy/signal/spline.py +4 -11
  369. scipy/signal/tests/_scipy_spectral_test_shim.py +5 -182
  370. scipy/signal/tests/test_bsplines.py +114 -79
  371. scipy/signal/tests/test_cont2discrete.py +9 -2
  372. scipy/signal/tests/test_filter_design.py +721 -481
  373. scipy/signal/tests/test_fir_filter_design.py +332 -140
  374. scipy/signal/tests/test_savitzky_golay.py +4 -3
  375. scipy/signal/tests/test_short_time_fft.py +231 -5
  376. scipy/signal/tests/test_signaltools.py +2150 -1349
  377. scipy/signal/tests/test_spectral.py +50 -6
  378. scipy/signal/tests/test_splines.py +161 -96
  379. scipy/signal/tests/test_upfirdn.py +84 -50
  380. scipy/signal/tests/test_waveforms.py +20 -0
  381. scipy/signal/tests/test_windows.py +607 -466
  382. scipy/signal/windows/_windows.py +287 -148
  383. scipy/sparse/__init__.py +23 -4
  384. scipy/sparse/_base.py +269 -120
  385. scipy/sparse/_bsr.py +7 -4
  386. scipy/sparse/_compressed.py +59 -234
  387. scipy/sparse/_construct.py +90 -38
  388. scipy/sparse/_coo.py +115 -181
  389. scipy/sparse/_csc.py +4 -4
  390. scipy/sparse/_csparsetools.cpython-313t-darwin.so +0 -0
  391. scipy/sparse/_csr.py +2 -2
  392. scipy/sparse/_data.py +48 -48
  393. scipy/sparse/_dia.py +105 -21
  394. scipy/sparse/_dok.py +0 -23
  395. scipy/sparse/_index.py +4 -4
  396. scipy/sparse/_matrix.py +23 -0
  397. scipy/sparse/_sparsetools.cpython-313t-darwin.so +0 -0
  398. scipy/sparse/_sputils.py +37 -22
  399. scipy/sparse/base.py +0 -9
  400. scipy/sparse/bsr.py +0 -14
  401. scipy/sparse/compressed.py +0 -23
  402. scipy/sparse/construct.py +0 -6
  403. scipy/sparse/coo.py +0 -14
  404. scipy/sparse/csc.py +0 -3
  405. scipy/sparse/csgraph/_flow.cpython-313t-darwin.so +0 -0
  406. scipy/sparse/csgraph/_matching.cpython-313t-darwin.so +0 -0
  407. scipy/sparse/csgraph/_min_spanning_tree.cpython-313t-darwin.so +0 -0
  408. scipy/sparse/csgraph/_reordering.cpython-313t-darwin.so +0 -0
  409. scipy/sparse/csgraph/_shortest_path.cpython-313t-darwin.so +0 -0
  410. scipy/sparse/csgraph/_tools.cpython-313t-darwin.so +0 -0
  411. scipy/sparse/csgraph/_traversal.cpython-313t-darwin.so +0 -0
  412. scipy/sparse/csgraph/tests/test_matching.py +14 -2
  413. scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
  414. scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
  415. scipy/sparse/csr.py +0 -5
  416. scipy/sparse/data.py +1 -6
  417. scipy/sparse/dia.py +0 -7
  418. scipy/sparse/dok.py +0 -10
  419. scipy/sparse/linalg/_dsolve/_superlu.cpython-313t-darwin.so +0 -0
  420. scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
  421. scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
  422. scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-313t-darwin.so +0 -0
  423. scipy/sparse/linalg/_eigen/arpack/arpack.py +28 -20
  424. scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
  425. scipy/sparse/linalg/_expm_multiply.py +8 -3
  426. scipy/sparse/linalg/_interface.py +29 -26
  427. scipy/sparse/linalg/_isolve/_gcrotmk.py +6 -5
  428. scipy/sparse/linalg/_isolve/iterative.py +51 -45
  429. scipy/sparse/linalg/_isolve/lgmres.py +6 -6
  430. scipy/sparse/linalg/_isolve/minres.py +5 -5
  431. scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
  432. scipy/sparse/linalg/_isolve/utils.py +2 -8
  433. scipy/sparse/linalg/_matfuncs.py +1 -1
  434. scipy/sparse/linalg/_norm.py +1 -1
  435. scipy/sparse/linalg/_propack/_cpropack.cpython-313t-darwin.so +0 -0
  436. scipy/sparse/linalg/_propack/_dpropack.cpython-313t-darwin.so +0 -0
  437. scipy/sparse/linalg/_propack/_spropack.cpython-313t-darwin.so +0 -0
  438. scipy/sparse/linalg/_propack/_zpropack.cpython-313t-darwin.so +0 -0
  439. scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
  440. scipy/sparse/linalg/tests/test_expm_multiply.py +10 -0
  441. scipy/sparse/linalg/tests/test_interface.py +35 -0
  442. scipy/sparse/linalg/tests/test_pydata_sparse.py +18 -0
  443. scipy/sparse/tests/test_arithmetic1d.py +5 -2
  444. scipy/sparse/tests/test_base.py +224 -40
  445. scipy/sparse/tests/test_common1d.py +17 -12
  446. scipy/sparse/tests/test_construct.py +1 -1
  447. scipy/sparse/tests/test_coo.py +272 -4
  448. scipy/sparse/tests/test_sparsetools.py +5 -0
  449. scipy/sparse/tests/test_sputils.py +36 -7
  450. scipy/spatial/_ckdtree.cpython-313t-darwin.so +0 -0
  451. scipy/spatial/_distance_pybind.cpython-313t-darwin.so +0 -0
  452. scipy/spatial/_distance_wrap.cpython-313t-darwin.so +0 -0
  453. scipy/spatial/_hausdorff.cpython-313t-darwin.so +0 -0
  454. scipy/spatial/_qhull.cpython-313t-darwin.so +0 -0
  455. scipy/spatial/_voronoi.cpython-313t-darwin.so +0 -0
  456. scipy/spatial/distance.py +49 -42
  457. scipy/spatial/tests/test_distance.py +15 -1
  458. scipy/spatial/tests/test_kdtree.py +1 -0
  459. scipy/spatial/tests/test_qhull.py +106 -2
  460. scipy/spatial/transform/__init__.py +5 -3
  461. scipy/spatial/transform/_rigid_transform.cpython-313t-darwin.so +0 -0
  462. scipy/spatial/transform/_rotation.cpython-313t-darwin.so +0 -0
  463. scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
  464. scipy/spatial/transform/tests/test_rotation.py +1342 -790
  465. scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
  466. scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
  467. scipy/special/__init__.py +1 -47
  468. scipy/special/_add_newdocs.py +34 -772
  469. scipy/special/_basic.py +22 -25
  470. scipy/special/_comb.cpython-313t-darwin.so +0 -0
  471. scipy/special/_ellip_harm_2.cpython-313t-darwin.so +0 -0
  472. scipy/special/_gufuncs.cpython-313t-darwin.so +0 -0
  473. scipy/special/_logsumexp.py +83 -69
  474. scipy/special/_orthogonal.pyi +1 -1
  475. scipy/special/_specfun.cpython-313t-darwin.so +0 -0
  476. scipy/special/_special_ufuncs.cpython-313t-darwin.so +0 -0
  477. scipy/special/_spherical_bessel.py +4 -4
  478. scipy/special/_support_alternative_backends.py +212 -119
  479. scipy/special/_test_internal.cpython-313t-darwin.so +0 -0
  480. scipy/special/_testutils.py +4 -4
  481. scipy/special/_ufuncs.cpython-313t-darwin.so +0 -0
  482. scipy/special/_ufuncs.pyi +1 -0
  483. scipy/special/_ufuncs.pyx +215 -1400
  484. scipy/special/_ufuncs_cxx.cpython-313t-darwin.so +0 -0
  485. scipy/special/_ufuncs_cxx.pxd +2 -15
  486. scipy/special/_ufuncs_cxx.pyx +5 -44
  487. scipy/special/_ufuncs_cxx_defs.h +2 -16
  488. scipy/special/_ufuncs_defs.h +0 -8
  489. scipy/special/cython_special.cpython-313t-darwin.so +0 -0
  490. scipy/special/cython_special.pxd +1 -1
  491. scipy/special/tests/_cython_examples/meson.build +10 -1
  492. scipy/special/tests/test_basic.py +153 -20
  493. scipy/special/tests/test_boost_ufuncs.py +3 -0
  494. scipy/special/tests/test_cdflib.py +35 -11
  495. scipy/special/tests/test_gammainc.py +16 -0
  496. scipy/special/tests/test_hyp2f1.py +23 -2
  497. scipy/special/tests/test_log1mexp.py +85 -0
  498. scipy/special/tests/test_logsumexp.py +220 -64
  499. scipy/special/tests/test_mpmath.py +1 -0
  500. scipy/special/tests/test_nan_inputs.py +1 -1
  501. scipy/special/tests/test_orthogonal.py +17 -18
  502. scipy/special/tests/test_sf_error.py +3 -2
  503. scipy/special/tests/test_sph_harm.py +6 -7
  504. scipy/special/tests/test_support_alternative_backends.py +211 -76
  505. scipy/stats/__init__.py +4 -1
  506. scipy/stats/_ansari_swilk_statistics.cpython-313t-darwin.so +0 -0
  507. scipy/stats/_axis_nan_policy.py +5 -12
  508. scipy/stats/_biasedurn.cpython-313t-darwin.so +0 -0
  509. scipy/stats/_continued_fraction.py +387 -0
  510. scipy/stats/_continuous_distns.py +296 -319
  511. scipy/stats/_correlation.py +1 -1
  512. scipy/stats/_covariance.py +6 -3
  513. scipy/stats/_discrete_distns.py +39 -32
  514. scipy/stats/_distn_infrastructure.py +39 -12
  515. scipy/stats/_distribution_infrastructure.py +920 -238
  516. scipy/stats/_entropy.py +9 -10
  517. scipy/{_lib → stats}/_finite_differences.py +1 -1
  518. scipy/stats/_hypotests.py +83 -50
  519. scipy/stats/_kde.py +53 -49
  520. scipy/stats/_ksstats.py +1 -1
  521. scipy/stats/_levy_stable/__init__.py +7 -15
  522. scipy/stats/_levy_stable/levyst.cpython-313t-darwin.so +0 -0
  523. scipy/stats/_morestats.py +118 -73
  524. scipy/stats/_mstats_basic.py +13 -17
  525. scipy/stats/_mstats_extras.py +8 -8
  526. scipy/stats/_multivariate.py +89 -113
  527. scipy/stats/_new_distributions.py +97 -20
  528. scipy/stats/_page_trend_test.py +12 -5
  529. scipy/stats/_probability_distribution.py +265 -43
  530. scipy/stats/_qmc.py +14 -9
  531. scipy/stats/_qmc_cy.cpython-313t-darwin.so +0 -0
  532. scipy/stats/_qmvnt.py +16 -95
  533. scipy/stats/_qmvnt_cy.cpython-313t-darwin.so +0 -0
  534. scipy/stats/_quantile.py +335 -0
  535. scipy/stats/_rcont/rcont.cpython-313t-darwin.so +0 -0
  536. scipy/stats/_resampling.py +5 -30
  537. scipy/stats/_sampling.py +1 -1
  538. scipy/stats/_sobol.cpython-313t-darwin.so +0 -0
  539. scipy/stats/_stats.cpython-313t-darwin.so +0 -0
  540. scipy/stats/_stats_mstats_common.py +21 -2
  541. scipy/stats/_stats_py.py +551 -477
  542. scipy/stats/_stats_pythran.cpython-313t-darwin.so +0 -0
  543. scipy/stats/_unuran/unuran_wrapper.cpython-313t-darwin.so +0 -0
  544. scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
  545. scipy/stats/_variation.py +6 -8
  546. scipy/stats/_wilcoxon.py +13 -7
  547. scipy/stats/tests/common_tests.py +6 -4
  548. scipy/stats/tests/test_axis_nan_policy.py +62 -24
  549. scipy/stats/tests/test_continued_fraction.py +173 -0
  550. scipy/stats/tests/test_continuous.py +379 -60
  551. scipy/stats/tests/test_continuous_basic.py +18 -12
  552. scipy/stats/tests/test_discrete_basic.py +14 -8
  553. scipy/stats/tests/test_discrete_distns.py +16 -16
  554. scipy/stats/tests/test_distributions.py +117 -75
  555. scipy/stats/tests/test_entropy.py +40 -48
  556. scipy/stats/tests/test_fit.py +4 -3
  557. scipy/stats/tests/test_hypotests.py +153 -24
  558. scipy/stats/tests/test_kdeoth.py +109 -41
  559. scipy/stats/tests/test_marray.py +289 -0
  560. scipy/stats/tests/test_morestats.py +81 -49
  561. scipy/stats/tests/test_mstats_basic.py +3 -3
  562. scipy/stats/tests/test_multivariate.py +434 -83
  563. scipy/stats/tests/test_qmc.py +13 -10
  564. scipy/stats/tests/test_quantile.py +199 -0
  565. scipy/stats/tests/test_rank.py +119 -112
  566. scipy/stats/tests/test_resampling.py +47 -56
  567. scipy/stats/tests/test_sampling.py +9 -4
  568. scipy/stats/tests/test_stats.py +799 -939
  569. scipy/stats/tests/test_variation.py +8 -6
  570. scipy/version.py +2 -2
  571. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/LICENSE.txt +4 -4
  572. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/METADATA +12 -12
  573. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/RECORD +574 -581
  574. scipy-1.16.0.dist-info/WHEEL +6 -0
  575. scipy/_lib/array_api_extra/_funcs.py +0 -484
  576. scipy/_lib/array_api_extra/_typing.py +0 -8
  577. scipy/interpolate/_bspl.cpython-313t-darwin.so +0 -0
  578. scipy/optimize/_cobyla.cpython-313t-darwin.so +0 -0
  579. scipy/optimize/_cython_nnls.cpython-313t-darwin.so +0 -0
  580. scipy/optimize/_slsqp.cpython-313t-darwin.so +0 -0
  581. scipy/spatial/qhull_src/COPYING.txt +0 -38
  582. scipy/special/libsf_error_state.dylib +0 -0
  583. scipy/special/tests/test_log_softmax.py +0 -109
  584. scipy/special/tests/test_xsf_cuda.py +0 -114
  585. scipy/special/xsf/binom.h +0 -89
  586. scipy/special/xsf/cdflib.h +0 -100
  587. scipy/special/xsf/cephes/airy.h +0 -307
  588. scipy/special/xsf/cephes/besselpoly.h +0 -51
  589. scipy/special/xsf/cephes/beta.h +0 -257
  590. scipy/special/xsf/cephes/cbrt.h +0 -131
  591. scipy/special/xsf/cephes/chbevl.h +0 -85
  592. scipy/special/xsf/cephes/chdtr.h +0 -193
  593. scipy/special/xsf/cephes/const.h +0 -87
  594. scipy/special/xsf/cephes/ellie.h +0 -293
  595. scipy/special/xsf/cephes/ellik.h +0 -251
  596. scipy/special/xsf/cephes/ellpe.h +0 -107
  597. scipy/special/xsf/cephes/ellpk.h +0 -117
  598. scipy/special/xsf/cephes/expn.h +0 -260
  599. scipy/special/xsf/cephes/gamma.h +0 -398
  600. scipy/special/xsf/cephes/hyp2f1.h +0 -596
  601. scipy/special/xsf/cephes/hyperg.h +0 -361
  602. scipy/special/xsf/cephes/i0.h +0 -149
  603. scipy/special/xsf/cephes/i1.h +0 -158
  604. scipy/special/xsf/cephes/igam.h +0 -421
  605. scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
  606. scipy/special/xsf/cephes/igami.h +0 -313
  607. scipy/special/xsf/cephes/j0.h +0 -225
  608. scipy/special/xsf/cephes/j1.h +0 -198
  609. scipy/special/xsf/cephes/jv.h +0 -715
  610. scipy/special/xsf/cephes/k0.h +0 -164
  611. scipy/special/xsf/cephes/k1.h +0 -163
  612. scipy/special/xsf/cephes/kn.h +0 -243
  613. scipy/special/xsf/cephes/lanczos.h +0 -112
  614. scipy/special/xsf/cephes/ndtr.h +0 -275
  615. scipy/special/xsf/cephes/poch.h +0 -85
  616. scipy/special/xsf/cephes/polevl.h +0 -167
  617. scipy/special/xsf/cephes/psi.h +0 -194
  618. scipy/special/xsf/cephes/rgamma.h +0 -111
  619. scipy/special/xsf/cephes/scipy_iv.h +0 -811
  620. scipy/special/xsf/cephes/shichi.h +0 -248
  621. scipy/special/xsf/cephes/sici.h +0 -224
  622. scipy/special/xsf/cephes/sindg.h +0 -221
  623. scipy/special/xsf/cephes/tandg.h +0 -139
  624. scipy/special/xsf/cephes/trig.h +0 -58
  625. scipy/special/xsf/cephes/unity.h +0 -186
  626. scipy/special/xsf/cephes/zeta.h +0 -172
  627. scipy/special/xsf/config.h +0 -304
  628. scipy/special/xsf/digamma.h +0 -205
  629. scipy/special/xsf/error.h +0 -57
  630. scipy/special/xsf/evalpoly.h +0 -47
  631. scipy/special/xsf/expint.h +0 -266
  632. scipy/special/xsf/hyp2f1.h +0 -694
  633. scipy/special/xsf/iv_ratio.h +0 -173
  634. scipy/special/xsf/lambertw.h +0 -150
  635. scipy/special/xsf/loggamma.h +0 -163
  636. scipy/special/xsf/sici.h +0 -200
  637. scipy/special/xsf/tools.h +0 -427
  638. scipy/special/xsf/trig.h +0 -164
  639. scipy/special/xsf/wright_bessel.h +0 -843
  640. scipy/special/xsf/zlog1.h +0 -35
  641. scipy/stats/_mvn.cpython-313t-darwin.so +0 -0
  642. scipy-1.15.2.dist-info/WHEEL +0 -4
@@ -125,7 +125,8 @@ def _minimize_trustregion_constr(fun, x0, args, grad,
125
125
  initial_barrier_parameter=0.1,
126
126
  initial_barrier_tolerance=0.1,
127
127
  factorization_method=None,
128
- disp=False):
128
+ disp=False,
129
+ workers=None):
129
130
  """Minimize a scalar function subject to constraints.
130
131
 
131
132
  Parameters
@@ -224,6 +225,12 @@ def _minimize_trustregion_constr(fun, x0, args, grad,
224
225
 
225
226
  disp : bool, optional
226
227
  If True (default), then `verbose` will be set to 1 if it was 0.
228
+ workers : int, map-like callable, optional
229
+ A map-like callable, such as `multiprocessing.Pool.map` for evaluating
230
+ any numerical differentiation in parallel.
231
+ This evaluation is carried out as ``workers(fun, iterable)``.
232
+
233
+ .. versionadded:: 1.16.0
227
234
 
228
235
  Returns
229
236
  -------
@@ -265,7 +272,7 @@ def _minimize_trustregion_constr(fun, x0, args, grad,
265
272
  Optimization method used.
266
273
  constr : list of ndarray
267
274
  List of constraint values at the solution.
268
- jac : list of {ndarray, sparse matrix}
275
+ jac : list of {ndarray, sparse array}
269
276
  List of the Jacobian matrices of the constraints at the solution.
270
277
  v : list of ndarray
271
278
  List of the Lagrange multipliers for the constraints at the solution.
@@ -343,7 +350,8 @@ def _minimize_trustregion_constr(fun, x0, args, grad,
343
350
 
344
351
  # Define Objective Function
345
352
  objective = ScalarFunction(fun, x0, args, grad, hess,
346
- finite_diff_rel_step, finite_diff_bounds)
353
+ finite_diff_rel_step, finite_diff_bounds,
354
+ workers=workers)
347
355
 
348
356
  # Put constraints in list format when needed.
349
357
  if isinstance(constraints, (NonlinearConstraint | LinearConstraint)):
@@ -1,17 +1,17 @@
1
1
  """Basic linear factorizations needed by the solver."""
2
2
 
3
- from scipy.sparse import (bmat, csc_matrix, eye, issparse)
3
+ from scipy.sparse import block_array, csc_array, eye_array, issparse
4
4
  from scipy.sparse.linalg import LinearOperator
5
5
  import scipy.linalg
6
6
  import scipy.sparse.linalg
7
7
  try:
8
- from sksparse.cholmod import cholesky_AAt
8
+ from sksparse.cholmod import cholesky_AAt, CholmodTypeConversionWarning
9
9
  sksparse_available = True
10
10
  except ImportError:
11
11
  import warnings
12
12
  sksparse_available = False
13
13
  import numpy as np
14
- from warnings import warn
14
+ from warnings import warn, catch_warnings
15
15
 
16
16
  __all__ = [
17
17
  'orthogonality',
@@ -58,7 +58,11 @@ def normal_equation_projections(A, m, n, orth_tol, max_refin, tol):
58
58
  """Return linear operators for matrix A using ``NormalEquation`` approach.
59
59
  """
60
60
  # Cholesky factorization
61
- factor = cholesky_AAt(A)
61
+ # TODO: revert this once the warning bug fix in sksparse is merged/released
62
+ # Add suppression of spurious warning bug from sksparse with csc_array gh-22089
63
+ # factor = cholesky_AAt(A)
64
+ with catch_warnings(action='ignore', category=CholmodTypeConversionWarning):
65
+ factor = cholesky_AAt(A)
62
66
 
63
67
  # z = x - A.T inv(A A.T) A x
64
68
  def null_space(x):
@@ -92,7 +96,7 @@ def normal_equation_projections(A, m, n, orth_tol, max_refin, tol):
92
96
  def augmented_system_projections(A, m, n, orth_tol, max_refin, tol):
93
97
  """Return linear operators for matrix A - ``AugmentedSystem``."""
94
98
  # Form augmented system
95
- K = csc_matrix(bmat([[eye(n), A.T], [A, None]]))
99
+ K = block_array([[eye_array(n), A.T], [A, None]], format="csc")
96
100
  # LU factorization
97
101
  # TODO: Use a symmetric indefinite factorization
98
102
  # to solve the system twice as fast (because
@@ -293,7 +297,7 @@ def projections(A, method=None, orth_tol=1e-12, max_refin=3, tol=1e-15):
293
297
 
294
298
  Parameters
295
299
  ----------
296
- A : sparse matrix (or ndarray), shape (m, n)
300
+ A : sparse array (or ndarray), shape (m, n)
297
301
  Matrix ``A`` used in the projection.
298
302
  method : string, optional
299
303
  Method used for compute the given linear
@@ -367,14 +371,14 @@ def projections(A, method=None, orth_tol=1e-12, max_refin=3, tol=1e-15):
367
371
  # The factorization of an empty matrix
368
372
  # only works for the sparse representation.
369
373
  if m*n == 0:
370
- A = csc_matrix(A)
374
+ A = csc_array(A)
371
375
 
372
376
  # Check Argument
373
377
  if issparse(A):
374
378
  if method is None:
375
379
  method = "AugmentedSystem"
376
380
  if method not in ("NormalEquation", "AugmentedSystem"):
377
- raise ValueError("Method not allowed for sparse matrix.")
381
+ raise ValueError("Method not allowed for sparse array.")
378
382
  if method == "NormalEquation" and not sksparse_available:
379
383
  warnings.warn("Only accepts 'NormalEquation' option when "
380
384
  "scikit-sparse is available. Using "
@@ -1,6 +1,6 @@
1
1
  """Equality-constrained quadratic programming solvers."""
2
2
 
3
- from scipy.sparse import (linalg, bmat, csc_matrix)
3
+ from scipy.sparse import linalg, block_array
4
4
  from math import copysign
5
5
  import numpy as np
6
6
  from numpy.linalg import norm
@@ -25,11 +25,11 @@ def eqp_kktfact(H, c, A, b):
25
25
 
26
26
  Parameters
27
27
  ----------
28
- H : sparse matrix, shape (n, n)
28
+ H : sparse array, shape (n, n)
29
29
  Hessian matrix of the EQP problem.
30
30
  c : array_like, shape (n,)
31
31
  Gradient of the quadratic objective function.
32
- A : sparse matrix
32
+ A : sparse array
33
33
  Jacobian matrix of the EQP problem.
34
34
  b : array_like, shape (m,)
35
35
  Right-hand side of the constraint equation.
@@ -47,7 +47,7 @@ def eqp_kktfact(H, c, A, b):
47
47
  # Karush-Kuhn-Tucker matrix of coefficients.
48
48
  # Defined as in Nocedal/Wright "Numerical
49
49
  # Optimization" p.452 in Eq. (16.4).
50
- kkt_matrix = csc_matrix(bmat([[H, A.T], [A, None]]))
50
+ kkt_matrix = block_array([[H, A.T], [A, None]], format="csc")
51
51
  # Vector of coefficients.
52
52
  kkt_vec = np.hstack([-c, -b])
53
53
 
@@ -321,10 +321,10 @@ def modified_dogleg(A, Y, b, trust_radius, lb, ub):
321
321
 
322
322
  Parameters
323
323
  ----------
324
- A : LinearOperator (or sparse matrix or ndarray), shape (m, n)
324
+ A : LinearOperator (or sparse array or ndarray), shape (m, n)
325
325
  Matrix ``A`` in the minimization problem. It should have
326
326
  dimension ``(m, n)`` such that ``m < n``.
327
- Y : LinearOperator (or sparse matrix or ndarray), shape (n, m)
327
+ Y : LinearOperator (or sparse array or ndarray), shape (n, m)
328
328
  LinearOperator that apply the projection matrix
329
329
  ``Q = A.T inv(A A.T)`` to the vector. The obtained vector
330
330
  ``y = Q x`` being the minimum norm solution of ``A y = x``.
@@ -421,13 +421,13 @@ def projected_cg(H, c, Z, Y, b, trust_radius=np.inf,
421
421
 
422
422
  Parameters
423
423
  ----------
424
- H : LinearOperator (or sparse matrix or ndarray), shape (n, n)
424
+ H : LinearOperator (or sparse array or ndarray), shape (n, n)
425
425
  Operator for computing ``H v``.
426
426
  c : array_like, shape (n,)
427
427
  Gradient of the quadratic objective function.
428
- Z : LinearOperator (or sparse matrix or ndarray), shape (n, n)
428
+ Z : LinearOperator (or sparse array or ndarray), shape (n, n)
429
429
  Operator for projecting ``x`` into the null space of A.
430
- Y : LinearOperator, sparse matrix, ndarray, shape (n, m)
430
+ Y : LinearOperator, sparse array, ndarray, shape (n, m)
431
431
  Operator that, for a given a vector ``b``, compute smallest
432
432
  norm solution of ``A x + b = 0``.
433
433
  b : array_like, shape (m,)
@@ -1,6 +1,6 @@
1
1
  import numpy as np
2
2
  import scipy.linalg
3
- from scipy.sparse import csc_matrix
3
+ from scipy.sparse import csc_array
4
4
  from scipy.optimize._trustregion_constr.projections \
5
5
  import projections, orthogonality
6
6
  from numpy.testing import (TestCase, assert_array_almost_equal,
@@ -23,7 +23,7 @@ class TestProjections(TestCase):
23
23
  [0, 8, 7, 0, 1, 5, 9, 0],
24
24
  [1, 0, 0, 0, 0, 1, 2, 3]])
25
25
  At_dense = A_dense.T
26
- A = csc_matrix(A_dense)
26
+ A = csc_array(A_dense)
27
27
  test_points = ([1, 2, 3, 4, 5, 6, 7, 8],
28
28
  [1, 10, 3, 0, 1, 6, 7, 8],
29
29
  [1.12, 10, 0, 0, 100000, 6, 0.7, 8])
@@ -45,7 +45,7 @@ class TestProjections(TestCase):
45
45
  A_dense = np.array([[1, 2, 3, 4, 0, 5, 0, 7],
46
46
  [0, 8, 7, 0, 1, 5, 9, 0],
47
47
  [1, 0, 0, 0, 0, 1, 2, 3]])
48
- A = csc_matrix(A_dense)
48
+ A = csc_array(A_dense)
49
49
  test_points = ([1, 2, 3, 4, 5, 6, 7, 8],
50
50
  [1, 10, 3, 0, 1, 6, 7, 8],
51
51
  [1.12, 10, 0, 0, 100000, 6, 0.7, 8],
@@ -65,7 +65,7 @@ class TestProjections(TestCase):
65
65
  A_dense = np.array([[1, 2, 3, 4, 0, 5, 0, 7],
66
66
  [0, 8, 7, 0, 1, 5, 9, 0],
67
67
  [1, 0, 0, 0, 0, 1, 2, 3]])
68
- A = csc_matrix(A_dense)
68
+ A = csc_array(A_dense)
69
69
  test_points = ([1, 2, 3],
70
70
  [1, 10, 3],
71
71
  [1.12, 10, 0])
@@ -106,7 +106,7 @@ class TestProjections(TestCase):
106
106
  def test_compare_dense_and_sparse(self):
107
107
  D = np.diag(range(1, 101))
108
108
  A = np.hstack([D, D, D, D])
109
- A_sparse = csc_matrix(A)
109
+ A_sparse = csc_array(A)
110
110
  np.random.seed(0)
111
111
 
112
112
  Z, LS, Y = projections(A)
@@ -123,7 +123,7 @@ class TestProjections(TestCase):
123
123
  D2 = np.diag([1, -0.6, -0.3])
124
124
  D3 = np.diag([-0.3, -1.5, 2])
125
125
  A = np.hstack([D1, D2, D3])
126
- A_sparse = csc_matrix(A)
126
+ A_sparse = csc_array(A)
127
127
  np.random.seed(0)
128
128
 
129
129
  Z, LS, Y = projections(A)
@@ -197,7 +197,7 @@ class TestOrthogonality(TestCase):
197
197
  A = np.array([[1, 2, 3, 4, 0, 5, 0, 7],
198
198
  [0, 8, 7, 0, 1, 5, 9, 0],
199
199
  [1, 0, 0, 0, 0, 1, 2, 3]])
200
- A = csc_matrix(A)
200
+ A = csc_array(A)
201
201
  test_vectors = ([-1.98931144, -1.56363389,
202
202
  -0.84115584, 2.2864762,
203
203
  5.599141, 0.09286976,
@@ -1,5 +1,5 @@
1
1
  import numpy as np
2
- from scipy.sparse import csc_matrix
2
+ from scipy.sparse import csc_array
3
3
  from scipy.optimize._trustregion_constr.qp_subproblem \
4
4
  import (eqp_kktfact,
5
5
  projected_cg,
@@ -18,11 +18,11 @@ class TestEQPDirectFactorization(TestCase):
18
18
  # From Example 16.2 Nocedal/Wright "Numerical
19
19
  # Optimization" p.452.
20
20
  def test_nocedal_example(self):
21
- H = csc_matrix([[6, 2, 1],
22
- [2, 5, 2],
23
- [1, 2, 4]])
24
- A = csc_matrix([[1, 0, 1],
25
- [0, 1, 1]])
21
+ H = csc_array([[6, 2, 1],
22
+ [2, 5, 2],
23
+ [1, 2, 4]])
24
+ A = csc_array([[1, 0, 1],
25
+ [0, 1, 1]])
26
26
  c = np.array([-8, -3, -3])
27
27
  b = -np.array([3, 0])
28
28
  x, lagrange_multipliers = eqp_kktfact(H, c, A, b)
@@ -424,11 +424,11 @@ class TestProjectCG(TestCase):
424
424
  # From Example 16.2 Nocedal/Wright "Numerical
425
425
  # Optimization" p.452.
426
426
  def test_nocedal_example(self):
427
- H = csc_matrix([[6, 2, 1],
428
- [2, 5, 2],
429
- [1, 2, 4]])
430
- A = csc_matrix([[1, 0, 1],
431
- [0, 1, 1]])
427
+ H = csc_array([[6, 2, 1],
428
+ [2, 5, 2],
429
+ [1, 2, 4]])
430
+ A = csc_array([[1, 0, 1],
431
+ [0, 1, 1]])
432
432
  c = np.array([-8, -3, -3])
433
433
  b = -np.array([3, 0])
434
434
  Z, _, Y = projections(A)
@@ -438,12 +438,12 @@ class TestProjectCG(TestCase):
438
438
  assert_array_almost_equal(x, [2, -1, 1])
439
439
 
440
440
  def test_compare_with_direct_fact(self):
441
- H = csc_matrix([[6, 2, 1, 3],
442
- [2, 5, 2, 4],
443
- [1, 2, 4, 5],
444
- [3, 4, 5, 7]])
445
- A = csc_matrix([[1, 0, 1, 0],
446
- [0, 1, 1, 1]])
441
+ H = csc_array([[6, 2, 1, 3],
442
+ [2, 5, 2, 4],
443
+ [1, 2, 4, 5],
444
+ [3, 4, 5, 7]])
445
+ A = csc_array([[1, 0, 1, 0],
446
+ [0, 1, 1, 1]])
447
447
  c = np.array([-2, -3, -3, 1])
448
448
  b = -np.array([3, 0])
449
449
  Z, _, Y = projections(A)
@@ -454,12 +454,12 @@ class TestProjectCG(TestCase):
454
454
  assert_array_almost_equal(x, x_kkt)
455
455
 
456
456
  def test_trust_region_infeasible(self):
457
- H = csc_matrix([[6, 2, 1, 3],
458
- [2, 5, 2, 4],
459
- [1, 2, 4, 5],
460
- [3, 4, 5, 7]])
461
- A = csc_matrix([[1, 0, 1, 0],
462
- [0, 1, 1, 1]])
457
+ H = csc_array([[6, 2, 1, 3],
458
+ [2, 5, 2, 4],
459
+ [1, 2, 4, 5],
460
+ [3, 4, 5, 7]])
461
+ A = csc_array([[1, 0, 1, 0],
462
+ [0, 1, 1, 1]])
463
463
  c = np.array([-2, -3, -3, 1])
464
464
  b = -np.array([3, 0])
465
465
  trust_radius = 1
@@ -468,12 +468,12 @@ class TestProjectCG(TestCase):
468
468
  projected_cg(H, c, Z, Y, b, trust_radius=trust_radius)
469
469
 
470
470
  def test_trust_region_barely_feasible(self):
471
- H = csc_matrix([[6, 2, 1, 3],
472
- [2, 5, 2, 4],
473
- [1, 2, 4, 5],
474
- [3, 4, 5, 7]])
475
- A = csc_matrix([[1, 0, 1, 0],
476
- [0, 1, 1, 1]])
471
+ H = csc_array([[6, 2, 1, 3],
472
+ [2, 5, 2, 4],
473
+ [1, 2, 4, 5],
474
+ [3, 4, 5, 7]])
475
+ A = csc_array([[1, 0, 1, 0],
476
+ [0, 1, 1, 1]])
477
477
  c = np.array([-2, -3, -3, 1])
478
478
  b = -np.array([3, 0])
479
479
  trust_radius = 2.32379000772445021283
@@ -487,12 +487,12 @@ class TestProjectCG(TestCase):
487
487
  assert_array_almost_equal(x, -Y.dot(b))
488
488
 
489
489
  def test_hits_boundary(self):
490
- H = csc_matrix([[6, 2, 1, 3],
491
- [2, 5, 2, 4],
492
- [1, 2, 4, 5],
493
- [3, 4, 5, 7]])
494
- A = csc_matrix([[1, 0, 1, 0],
495
- [0, 1, 1, 1]])
490
+ H = csc_array([[6, 2, 1, 3],
491
+ [2, 5, 2, 4],
492
+ [1, 2, 4, 5],
493
+ [3, 4, 5, 7]])
494
+ A = csc_array([[1, 0, 1, 0],
495
+ [0, 1, 1, 1]])
496
496
  c = np.array([-2, -3, -3, 1])
497
497
  b = -np.array([3, 0])
498
498
  trust_radius = 3
@@ -505,12 +505,12 @@ class TestProjectCG(TestCase):
505
505
  assert_array_almost_equal(np.linalg.norm(x), trust_radius)
506
506
 
507
507
  def test_negative_curvature_unconstrained(self):
508
- H = csc_matrix([[1, 2, 1, 3],
509
- [2, 0, 2, 4],
510
- [1, 2, 0, 2],
511
- [3, 4, 2, 0]])
512
- A = csc_matrix([[1, 0, 1, 0],
513
- [0, 1, 0, 1]])
508
+ H = csc_array([[1, 2, 1, 3],
509
+ [2, 0, 2, 4],
510
+ [1, 2, 0, 2],
511
+ [3, 4, 2, 0]])
512
+ A = csc_array([[1, 0, 1, 0],
513
+ [0, 1, 0, 1]])
514
514
  c = np.array([-2, -3, -3, 1])
515
515
  b = -np.array([3, 0])
516
516
  Z, _, Y = projections(A)
@@ -518,12 +518,12 @@ class TestProjectCG(TestCase):
518
518
  projected_cg(H, c, Z, Y, b, tol=0)
519
519
 
520
520
  def test_negative_curvature(self):
521
- H = csc_matrix([[1, 2, 1, 3],
522
- [2, 0, 2, 4],
523
- [1, 2, 0, 2],
524
- [3, 4, 2, 0]])
525
- A = csc_matrix([[1, 0, 1, 0],
526
- [0, 1, 0, 1]])
521
+ H = csc_array([[1, 2, 1, 3],
522
+ [2, 0, 2, 4],
523
+ [1, 2, 0, 2],
524
+ [3, 4, 2, 0]])
525
+ A = csc_array([[1, 0, 1, 0],
526
+ [0, 1, 0, 1]])
527
527
  c = np.array([-2, -3, -3, 1])
528
528
  b = -np.array([3, 0])
529
529
  Z, _, Y = projections(A)
@@ -538,12 +538,12 @@ class TestProjectCG(TestCase):
538
538
  # The box constraints are inactive at the solution but
539
539
  # are active during the iterations.
540
540
  def test_inactive_box_constraints(self):
541
- H = csc_matrix([[6, 2, 1, 3],
542
- [2, 5, 2, 4],
543
- [1, 2, 4, 5],
544
- [3, 4, 5, 7]])
545
- A = csc_matrix([[1, 0, 1, 0],
546
- [0, 1, 1, 1]])
541
+ H = csc_array([[6, 2, 1, 3],
542
+ [2, 5, 2, 4],
543
+ [1, 2, 4, 5],
544
+ [3, 4, 5, 7]])
545
+ A = csc_array([[1, 0, 1, 0],
546
+ [0, 1, 1, 1]])
547
547
  c = np.array([-2, -3, -3, 1])
548
548
  b = -np.array([3, 0])
549
549
  Z, _, Y = projections(A)
@@ -560,12 +560,12 @@ class TestProjectCG(TestCase):
560
560
  # The box constraints active and the termination is
561
561
  # by maximum iterations (infeasible interaction).
562
562
  def test_active_box_constraints_maximum_iterations_reached(self):
563
- H = csc_matrix([[6, 2, 1, 3],
564
- [2, 5, 2, 4],
565
- [1, 2, 4, 5],
566
- [3, 4, 5, 7]])
567
- A = csc_matrix([[1, 0, 1, 0],
568
- [0, 1, 1, 1]])
563
+ H = csc_array([[6, 2, 1, 3],
564
+ [2, 5, 2, 4],
565
+ [1, 2, 4, 5],
566
+ [3, 4, 5, 7]])
567
+ A = csc_array([[1, 0, 1, 0],
568
+ [0, 1, 1, 1]])
569
569
  c = np.array([-2, -3, -3, 1])
570
570
  b = -np.array([3, 0])
571
571
  Z, _, Y = projections(A)
@@ -582,12 +582,12 @@ class TestProjectCG(TestCase):
582
582
  # The box constraints are active and the termination is
583
583
  # because it hits boundary (without infeasible interaction).
584
584
  def test_active_box_constraints_hits_boundaries(self):
585
- H = csc_matrix([[6, 2, 1, 3],
586
- [2, 5, 2, 4],
587
- [1, 2, 4, 5],
588
- [3, 4, 5, 7]])
589
- A = csc_matrix([[1, 0, 1, 0],
590
- [0, 1, 1, 1]])
585
+ H = csc_array([[6, 2, 1, 3],
586
+ [2, 5, 2, 4],
587
+ [1, 2, 4, 5],
588
+ [3, 4, 5, 7]])
589
+ A = csc_array([[1, 0, 1, 0],
590
+ [0, 1, 1, 1]])
591
591
  c = np.array([-2, -3, -3, 1])
592
592
  b = -np.array([3, 0])
593
593
  trust_radius = 3
@@ -604,12 +604,12 @@ class TestProjectCG(TestCase):
604
604
  # The box constraints are active and the termination is
605
605
  # because it hits boundary (infeasible interaction).
606
606
  def test_active_box_constraints_hits_boundaries_infeasible_iter(self):
607
- H = csc_matrix([[6, 2, 1, 3],
608
- [2, 5, 2, 4],
609
- [1, 2, 4, 5],
610
- [3, 4, 5, 7]])
611
- A = csc_matrix([[1, 0, 1, 0],
612
- [0, 1, 1, 1]])
607
+ H = csc_array([[6, 2, 1, 3],
608
+ [2, 5, 2, 4],
609
+ [1, 2, 4, 5],
610
+ [3, 4, 5, 7]])
611
+ A = csc_array([[1, 0, 1, 0],
612
+ [0, 1, 1, 1]])
613
613
  c = np.array([-2, -3, -3, 1])
614
614
  b = -np.array([3, 0])
615
615
  trust_radius = 4
@@ -626,12 +626,12 @@ class TestProjectCG(TestCase):
626
626
  # The box constraints are active and the termination is
627
627
  # because it hits boundary (no infeasible interaction).
628
628
  def test_active_box_constraints_negative_curvature(self):
629
- H = csc_matrix([[1, 2, 1, 3],
630
- [2, 0, 2, 4],
631
- [1, 2, 0, 2],
632
- [3, 4, 2, 0]])
633
- A = csc_matrix([[1, 0, 1, 0],
634
- [0, 1, 0, 1]])
629
+ H = csc_array([[1, 2, 1, 3],
630
+ [2, 0, 2, 4],
631
+ [1, 2, 0, 2],
632
+ [3, 4, 2, 0]])
633
+ A = csc_array([[1, 0, 1, 0],
634
+ [0, 1, 0, 1]])
635
635
  c = np.array([-2, -3, -3, 1])
636
636
  b = -np.array([3, 0])
637
637
  Z, _, Y = projections(A)
@@ -158,11 +158,11 @@ class BarrierSubproblem:
158
158
  else:
159
159
  if sps.issparse(J_eq) or sps.issparse(J_ineq):
160
160
  # It is expected that J_eq and J_ineq
161
- # are already `csr_matrix` because of
161
+ # are already `csr_array` because of
162
162
  # the way ``BoxConstraint``, ``NonlinearConstraint``
163
163
  # and ``LinearConstraint`` are defined.
164
- J_eq = sps.csr_matrix(J_eq)
165
- J_ineq = sps.csr_matrix(J_ineq)
164
+ J_eq = sps.csr_array(J_eq)
165
+ J_ineq = sps.csr_array(J_ineq)
166
166
  return self._assemble_sparse_jacobian(J_eq, J_ineq, s)
167
167
  else:
168
168
  S = np.diag(s)
@@ -203,8 +203,8 @@ class BarrierSubproblem:
203
203
  new_indices[~mask] = indices
204
204
  new_data[mask] = s
205
205
  new_data[~mask] = data
206
- J = sps.csr_matrix((new_data, new_indices, new_indptr),
207
- (n_eq + n_ineq, n_vars + n_ineq))
206
+ J = sps.csr_array((new_data, new_indices, new_indptr),
207
+ (n_eq + n_ineq, n_vars + n_ineq))
208
208
  return J
209
209
 
210
210
  def lagrangian_hessian_x(self, z, v):
@@ -29,7 +29,6 @@ def _minimize_trustregion_exact(fun, x0, args=(), jac=None, hess=None,
29
29
  Gradient norm must be less than ``gtol`` before successful
30
30
  termination.
31
31
  """
32
-
33
32
  if jac is None:
34
33
  raise ValueError('Jacobian is required for trust region '
35
34
  'exact minimization.')