scipy 1.15.2__cp313-cp313t-macosx_12_0_arm64.whl → 1.16.0rc1__cp313-cp313t-macosx_12_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 (638) hide show
  1. scipy/.dylibs/libscipy_openblas.dylib +0 -0
  2. scipy/__config__.py +7 -7
  3. scipy/__init__.py +3 -6
  4. scipy/_cyutility.cpython-313t-darwin.so +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.cpython-313t-darwin.so +0 -0
  9. scipy/_lib/_docscrape.py +1 -1
  10. scipy/_lib/_elementwise_iterative_method.py +15 -26
  11. scipy/_lib/_sparse.py +41 -0
  12. scipy/_lib/_test_ccallback.cpython-313t-darwin.so +0 -0
  13. scipy/_lib/_test_deprecation_call.cpython-313t-darwin.so +0 -0
  14. scipy/_lib/_test_deprecation_def.cpython-313t-darwin.so +0 -0
  15. scipy/_lib/_testutils.py +6 -2
  16. scipy/_lib/_util.py +222 -125
  17. scipy/_lib/array_api_compat/__init__.py +4 -4
  18. scipy/_lib/array_api_compat/_internal.py +19 -6
  19. scipy/_lib/array_api_compat/common/__init__.py +1 -1
  20. scipy/_lib/array_api_compat/common/_aliases.py +365 -193
  21. scipy/_lib/array_api_compat/common/_fft.py +94 -64
  22. scipy/_lib/array_api_compat/common/_helpers.py +413 -180
  23. scipy/_lib/array_api_compat/common/_linalg.py +116 -40
  24. scipy/_lib/array_api_compat/common/_typing.py +179 -10
  25. scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
  26. scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
  27. scipy/_lib/array_api_compat/cupy/_info.py +16 -6
  28. scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
  29. scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
  30. scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
  31. scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
  32. scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
  33. scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
  34. scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
  35. scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
  36. scipy/_lib/array_api_compat/numpy/_info.py +36 -16
  37. scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
  38. scipy/_lib/array_api_compat/numpy/fft.py +11 -5
  39. scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
  40. scipy/_lib/array_api_compat/torch/__init__.py +3 -5
  41. scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
  42. scipy/_lib/array_api_compat/torch/_info.py +27 -16
  43. scipy/_lib/array_api_compat/torch/_typing.py +3 -0
  44. scipy/_lib/array_api_compat/torch/fft.py +17 -18
  45. scipy/_lib/array_api_compat/torch/linalg.py +16 -16
  46. scipy/_lib/array_api_extra/__init__.py +26 -3
  47. scipy/_lib/array_api_extra/_delegation.py +171 -0
  48. scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
  49. scipy/_lib/array_api_extra/_lib/_at.py +463 -0
  50. scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
  51. scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
  52. scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
  53. scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
  54. scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
  55. scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
  56. scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
  57. scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
  58. scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
  59. scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
  60. scipy/_lib/array_api_extra/testing.py +359 -0
  61. scipy/_lib/decorator.py +2 -2
  62. scipy/_lib/doccer.py +1 -7
  63. scipy/_lib/messagestream.cpython-313t-darwin.so +0 -0
  64. scipy/_lib/pyprima/__init__.py +212 -0
  65. scipy/_lib/pyprima/cobyla/__init__.py +0 -0
  66. scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
  67. scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
  68. scipy/_lib/pyprima/cobyla/geometry.py +226 -0
  69. scipy/_lib/pyprima/cobyla/initialize.py +215 -0
  70. scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
  71. scipy/_lib/pyprima/cobyla/update.py +289 -0
  72. scipy/_lib/pyprima/common/__init__.py +0 -0
  73. scipy/_lib/pyprima/common/_bounds.py +34 -0
  74. scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
  75. scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
  76. scipy/_lib/pyprima/common/_project.py +173 -0
  77. scipy/_lib/pyprima/common/checkbreak.py +93 -0
  78. scipy/_lib/pyprima/common/consts.py +47 -0
  79. scipy/_lib/pyprima/common/evaluate.py +99 -0
  80. scipy/_lib/pyprima/common/history.py +38 -0
  81. scipy/_lib/pyprima/common/infos.py +30 -0
  82. scipy/_lib/pyprima/common/linalg.py +435 -0
  83. scipy/_lib/pyprima/common/message.py +290 -0
  84. scipy/_lib/pyprima/common/powalg.py +131 -0
  85. scipy/_lib/pyprima/common/preproc.py +277 -0
  86. scipy/_lib/pyprima/common/present.py +5 -0
  87. scipy/_lib/pyprima/common/ratio.py +54 -0
  88. scipy/_lib/pyprima/common/redrho.py +47 -0
  89. scipy/_lib/pyprima/common/selectx.py +296 -0
  90. scipy/_lib/tests/test__util.py +105 -121
  91. scipy/_lib/tests/test_array_api.py +169 -34
  92. scipy/_lib/tests/test_bunch.py +7 -0
  93. scipy/_lib/tests/test_ccallback.py +2 -10
  94. scipy/_lib/tests/test_public_api.py +13 -0
  95. scipy/cluster/_hierarchy.cpython-313t-darwin.so +0 -0
  96. scipy/cluster/_optimal_leaf_ordering.cpython-313t-darwin.so +0 -0
  97. scipy/cluster/_vq.cpython-313t-darwin.so +0 -0
  98. scipy/cluster/hierarchy.py +393 -223
  99. scipy/cluster/tests/test_hierarchy.py +273 -335
  100. scipy/cluster/tests/test_vq.py +45 -61
  101. scipy/cluster/vq.py +39 -35
  102. scipy/conftest.py +263 -157
  103. scipy/constants/_constants.py +4 -1
  104. scipy/constants/tests/test_codata.py +2 -2
  105. scipy/constants/tests/test_constants.py +11 -18
  106. scipy/datasets/_download_all.py +15 -1
  107. scipy/datasets/_fetchers.py +7 -1
  108. scipy/datasets/_utils.py +1 -1
  109. scipy/differentiate/_differentiate.py +25 -25
  110. scipy/differentiate/tests/test_differentiate.py +24 -25
  111. scipy/fft/_basic.py +20 -0
  112. scipy/fft/_helper.py +3 -34
  113. scipy/fft/_pocketfft/helper.py +29 -1
  114. scipy/fft/_pocketfft/tests/test_basic.py +2 -4
  115. scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
  116. scipy/fft/_realtransforms.py +13 -0
  117. scipy/fft/tests/test_basic.py +27 -25
  118. scipy/fft/tests/test_fftlog.py +16 -7
  119. scipy/fft/tests/test_helper.py +18 -34
  120. scipy/fft/tests/test_real_transforms.py +8 -10
  121. scipy/fftpack/convolve.cpython-313t-darwin.so +0 -0
  122. scipy/fftpack/tests/test_basic.py +2 -4
  123. scipy/fftpack/tests/test_real_transforms.py +8 -9
  124. scipy/integrate/_bvp.py +9 -3
  125. scipy/integrate/_cubature.py +3 -2
  126. scipy/integrate/_dop.cpython-313t-darwin.so +0 -0
  127. scipy/integrate/_ivp/common.py +3 -3
  128. scipy/integrate/_ivp/ivp.py +9 -2
  129. scipy/integrate/_ivp/tests/test_ivp.py +19 -0
  130. scipy/integrate/_lsoda.cpython-313t-darwin.so +0 -0
  131. scipy/integrate/_ode.py +9 -2
  132. scipy/integrate/_odepack.cpython-313t-darwin.so +0 -0
  133. scipy/integrate/_quad_vec.py +21 -29
  134. scipy/integrate/_quadpack.cpython-313t-darwin.so +0 -0
  135. scipy/integrate/_quadpack_py.py +11 -7
  136. scipy/integrate/_quadrature.py +3 -3
  137. scipy/integrate/_rules/_base.py +2 -2
  138. scipy/integrate/_tanhsinh.py +57 -54
  139. scipy/integrate/_test_odeint_banded.cpython-313t-darwin.so +0 -0
  140. scipy/integrate/_vode.cpython-313t-darwin.so +0 -0
  141. scipy/integrate/tests/test__quad_vec.py +0 -6
  142. scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
  143. scipy/integrate/tests/test_cubature.py +21 -35
  144. scipy/integrate/tests/test_quadrature.py +6 -8
  145. scipy/integrate/tests/test_tanhsinh.py +61 -43
  146. scipy/interpolate/__init__.py +70 -58
  147. scipy/interpolate/_bary_rational.py +22 -22
  148. scipy/interpolate/_bsplines.py +119 -66
  149. scipy/interpolate/_cubic.py +65 -50
  150. scipy/interpolate/_dfitpack.cpython-313t-darwin.so +0 -0
  151. scipy/interpolate/_dierckx.cpython-313t-darwin.so +0 -0
  152. scipy/interpolate/_fitpack.cpython-313t-darwin.so +0 -0
  153. scipy/interpolate/_fitpack2.py +9 -6
  154. scipy/interpolate/_fitpack_impl.py +32 -26
  155. scipy/interpolate/_fitpack_repro.py +23 -19
  156. scipy/interpolate/_interpnd.cpython-313t-darwin.so +0 -0
  157. scipy/interpolate/_interpolate.py +30 -12
  158. scipy/interpolate/_ndbspline.py +13 -18
  159. scipy/interpolate/_ndgriddata.py +5 -8
  160. scipy/interpolate/_polyint.py +95 -31
  161. scipy/interpolate/_ppoly.cpython-313t-darwin.so +0 -0
  162. scipy/interpolate/_rbf.py +2 -2
  163. scipy/interpolate/_rbfinterp.py +1 -1
  164. scipy/interpolate/_rbfinterp_pythran.cpython-313t-darwin.so +0 -0
  165. scipy/interpolate/_rgi.py +31 -26
  166. scipy/interpolate/_rgi_cython.cpython-313t-darwin.so +0 -0
  167. scipy/interpolate/dfitpack.py +0 -20
  168. scipy/interpolate/interpnd.py +1 -2
  169. scipy/interpolate/tests/test_bary_rational.py +2 -2
  170. scipy/interpolate/tests/test_bsplines.py +97 -1
  171. scipy/interpolate/tests/test_fitpack2.py +39 -1
  172. scipy/interpolate/tests/test_interpnd.py +32 -20
  173. scipy/interpolate/tests/test_interpolate.py +48 -4
  174. scipy/interpolate/tests/test_rgi.py +2 -1
  175. scipy/io/_fast_matrix_market/__init__.py +2 -0
  176. scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
  177. scipy/io/_harwell_boeing/hb.py +7 -11
  178. scipy/io/_idl.py +5 -7
  179. scipy/io/_netcdf.py +15 -5
  180. scipy/io/_test_fortran.cpython-313t-darwin.so +0 -0
  181. scipy/io/arff/tests/test_arffread.py +3 -3
  182. scipy/io/matlab/__init__.py +5 -3
  183. scipy/io/matlab/_mio.py +4 -1
  184. scipy/io/matlab/_mio5.py +19 -13
  185. scipy/io/matlab/_mio5_utils.cpython-313t-darwin.so +0 -0
  186. scipy/io/matlab/_mio_utils.cpython-313t-darwin.so +0 -0
  187. scipy/io/matlab/_miobase.py +4 -1
  188. scipy/io/matlab/_streams.cpython-313t-darwin.so +0 -0
  189. scipy/io/matlab/tests/test_mio.py +46 -18
  190. scipy/io/matlab/tests/test_mio_funcs.py +1 -1
  191. scipy/io/tests/test_mmio.py +7 -1
  192. scipy/io/tests/test_wavfile.py +41 -0
  193. scipy/io/wavfile.py +57 -10
  194. scipy/linalg/_basic.py +113 -86
  195. scipy/linalg/_cythonized_array_utils.cpython-313t-darwin.so +0 -0
  196. scipy/linalg/_decomp.py +22 -9
  197. scipy/linalg/_decomp_cholesky.py +28 -13
  198. scipy/linalg/_decomp_cossin.py +45 -30
  199. scipy/linalg/_decomp_interpolative.cpython-313t-darwin.so +0 -0
  200. scipy/linalg/_decomp_ldl.py +4 -1
  201. scipy/linalg/_decomp_lu.py +18 -6
  202. scipy/linalg/_decomp_lu_cython.cpython-313t-darwin.so +0 -0
  203. scipy/linalg/_decomp_polar.py +2 -0
  204. scipy/linalg/_decomp_qr.py +6 -2
  205. scipy/linalg/_decomp_qz.py +3 -0
  206. scipy/linalg/_decomp_schur.py +3 -1
  207. scipy/linalg/_decomp_svd.py +13 -2
  208. scipy/linalg/_decomp_update.cpython-313t-darwin.so +0 -0
  209. scipy/linalg/_expm_frechet.py +4 -0
  210. scipy/linalg/_fblas.cpython-313t-darwin.so +0 -0
  211. scipy/linalg/_flapack.cpython-313t-darwin.so +0 -0
  212. scipy/linalg/_linalg_pythran.cpython-313t-darwin.so +0 -0
  213. scipy/linalg/_matfuncs.py +187 -4
  214. scipy/linalg/_matfuncs_expm.cpython-313t-darwin.so +0 -0
  215. scipy/linalg/_matfuncs_schur_sqrtm.cpython-313t-darwin.so +0 -0
  216. scipy/linalg/_matfuncs_sqrtm.py +1 -99
  217. scipy/linalg/_matfuncs_sqrtm_triu.cpython-313t-darwin.so +0 -0
  218. scipy/linalg/_procrustes.py +2 -0
  219. scipy/linalg/_sketches.py +17 -6
  220. scipy/linalg/_solve_toeplitz.cpython-313t-darwin.so +0 -0
  221. scipy/linalg/_solvers.py +7 -2
  222. scipy/linalg/_special_matrices.py +26 -36
  223. scipy/linalg/cython_blas.cpython-313t-darwin.so +0 -0
  224. scipy/linalg/cython_lapack.cpython-313t-darwin.so +0 -0
  225. scipy/linalg/lapack.py +22 -2
  226. scipy/linalg/tests/_cython_examples/meson.build +7 -0
  227. scipy/linalg/tests/test_basic.py +31 -16
  228. scipy/linalg/tests/test_batch.py +588 -0
  229. scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
  230. scipy/linalg/tests/test_decomp.py +40 -3
  231. scipy/linalg/tests/test_decomp_cossin.py +14 -0
  232. scipy/linalg/tests/test_decomp_ldl.py +1 -1
  233. scipy/linalg/tests/test_interpolative.py +17 -0
  234. scipy/linalg/tests/test_lapack.py +115 -7
  235. scipy/linalg/tests/test_matfuncs.py +157 -102
  236. scipy/linalg/tests/test_procrustes.py +0 -7
  237. scipy/linalg/tests/test_solve_toeplitz.py +1 -1
  238. scipy/linalg/tests/test_special_matrices.py +1 -5
  239. scipy/ndimage/__init__.py +1 -0
  240. scipy/ndimage/_cytest.cpython-313t-darwin.so +0 -0
  241. scipy/ndimage/_delegators.py +8 -2
  242. scipy/ndimage/_filters.py +433 -5
  243. scipy/ndimage/_interpolation.py +36 -6
  244. scipy/ndimage/_measurements.py +4 -2
  245. scipy/ndimage/_morphology.py +5 -0
  246. scipy/ndimage/_nd_image.cpython-313t-darwin.so +0 -0
  247. scipy/ndimage/_ndimage_api.py +2 -1
  248. scipy/ndimage/_ni_docstrings.py +5 -1
  249. scipy/ndimage/_ni_label.cpython-313t-darwin.so +0 -0
  250. scipy/ndimage/_ni_support.py +1 -5
  251. scipy/ndimage/_rank_filter_1d.cpython-313t-darwin.so +0 -0
  252. scipy/ndimage/_support_alternative_backends.py +18 -6
  253. scipy/ndimage/tests/test_filters.py +351 -259
  254. scipy/ndimage/tests/test_fourier.py +7 -9
  255. scipy/ndimage/tests/test_interpolation.py +68 -61
  256. scipy/ndimage/tests/test_measurements.py +18 -35
  257. scipy/ndimage/tests/test_morphology.py +143 -131
  258. scipy/ndimage/tests/test_splines.py +1 -3
  259. scipy/odr/__odrpack.cpython-313t-darwin.so +0 -0
  260. scipy/optimize/_basinhopping.py +13 -7
  261. scipy/optimize/_bglu_dense.cpython-313t-darwin.so +0 -0
  262. scipy/optimize/_bracket.py +46 -26
  263. scipy/optimize/_chandrupatla.py +9 -10
  264. scipy/optimize/_cobyla_py.py +104 -123
  265. scipy/optimize/_constraints.py +14 -10
  266. scipy/optimize/_differentiable_functions.py +371 -230
  267. scipy/optimize/_differentialevolution.py +4 -3
  268. scipy/optimize/_direct.cpython-313t-darwin.so +0 -0
  269. scipy/optimize/_dual_annealing.py +1 -1
  270. scipy/optimize/_elementwise.py +1 -4
  271. scipy/optimize/_group_columns.cpython-313t-darwin.so +0 -0
  272. scipy/optimize/_highspy/_highs_wrapper.py +6 -4
  273. scipy/optimize/_lbfgsb.cpython-313t-darwin.so +0 -0
  274. scipy/optimize/_lbfgsb_py.py +57 -16
  275. scipy/optimize/_linprog_doc.py +2 -2
  276. scipy/optimize/_linprog_highs.py +11 -11
  277. scipy/optimize/_linprog_ip.py +25 -10
  278. scipy/optimize/_linprog_util.py +18 -19
  279. scipy/optimize/_lsap.cpython-313t-darwin.so +0 -0
  280. scipy/optimize/_lsq/common.py +3 -3
  281. scipy/optimize/_lsq/dogbox.py +16 -2
  282. scipy/optimize/_lsq/givens_elimination.cpython-313t-darwin.so +0 -0
  283. scipy/optimize/_lsq/least_squares.py +198 -126
  284. scipy/optimize/_lsq/lsq_linear.py +6 -6
  285. scipy/optimize/_lsq/trf.py +35 -8
  286. scipy/optimize/_milp.py +3 -1
  287. scipy/optimize/_minimize.py +105 -36
  288. scipy/optimize/_minpack.cpython-313t-darwin.so +0 -0
  289. scipy/optimize/_minpack_py.py +21 -14
  290. scipy/optimize/_moduleTNC.cpython-313t-darwin.so +0 -0
  291. scipy/optimize/_nnls.py +20 -21
  292. scipy/optimize/_nonlin.py +34 -3
  293. scipy/optimize/_numdiff.py +288 -110
  294. scipy/optimize/_optimize.py +86 -48
  295. scipy/optimize/_pava_pybind.cpython-313t-darwin.so +0 -0
  296. scipy/optimize/_remove_redundancy.py +5 -5
  297. scipy/optimize/_root_scalar.py +1 -1
  298. scipy/optimize/_shgo.py +6 -0
  299. scipy/optimize/_shgo_lib/_complex.py +1 -1
  300. scipy/optimize/_slsqp_py.py +216 -124
  301. scipy/optimize/_slsqplib.cpython-313t-darwin.so +0 -0
  302. scipy/optimize/_spectral.py +1 -1
  303. scipy/optimize/_tnc.py +8 -1
  304. scipy/optimize/_trlib/_trlib.cpython-313t-darwin.so +0 -0
  305. scipy/optimize/_trustregion.py +20 -6
  306. scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
  307. scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
  308. scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
  309. scipy/optimize/_trustregion_constr/projections.py +12 -8
  310. scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
  311. scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
  312. scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
  313. scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
  314. scipy/optimize/_trustregion_exact.py +0 -1
  315. scipy/optimize/_zeros.cpython-313t-darwin.so +0 -0
  316. scipy/optimize/_zeros_py.py +97 -17
  317. scipy/optimize/cython_optimize/_zeros.cpython-313t-darwin.so +0 -0
  318. scipy/optimize/slsqp.py +0 -1
  319. scipy/optimize/tests/test__basinhopping.py +1 -1
  320. scipy/optimize/tests/test__differential_evolution.py +4 -4
  321. scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
  322. scipy/optimize/tests/test__numdiff.py +66 -22
  323. scipy/optimize/tests/test__remove_redundancy.py +2 -2
  324. scipy/optimize/tests/test__shgo.py +9 -1
  325. scipy/optimize/tests/test_bracket.py +71 -46
  326. scipy/optimize/tests/test_chandrupatla.py +133 -135
  327. scipy/optimize/tests/test_cobyla.py +74 -45
  328. scipy/optimize/tests/test_constraints.py +1 -1
  329. scipy/optimize/tests/test_differentiable_functions.py +226 -6
  330. scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
  331. scipy/optimize/tests/test_least_squares.py +125 -13
  332. scipy/optimize/tests/test_linear_assignment.py +3 -3
  333. scipy/optimize/tests/test_linprog.py +3 -3
  334. scipy/optimize/tests/test_lsq_linear.py +5 -5
  335. scipy/optimize/tests/test_minimize_constrained.py +2 -2
  336. scipy/optimize/tests/test_minpack.py +4 -4
  337. scipy/optimize/tests/test_nnls.py +43 -3
  338. scipy/optimize/tests/test_nonlin.py +36 -0
  339. scipy/optimize/tests/test_optimize.py +95 -17
  340. scipy/optimize/tests/test_slsqp.py +36 -4
  341. scipy/optimize/tests/test_zeros.py +34 -1
  342. scipy/signal/__init__.py +12 -23
  343. scipy/signal/_delegators.py +568 -0
  344. scipy/signal/_filter_design.py +459 -241
  345. scipy/signal/_fir_filter_design.py +262 -90
  346. scipy/signal/_lti_conversion.py +3 -2
  347. scipy/signal/_ltisys.py +118 -91
  348. scipy/signal/_max_len_seq_inner.cpython-313t-darwin.so +0 -0
  349. scipy/signal/_peak_finding_utils.cpython-313t-darwin.so +0 -0
  350. scipy/signal/_polyutils.py +172 -0
  351. scipy/signal/_short_time_fft.py +553 -76
  352. scipy/signal/_signal_api.py +30 -0
  353. scipy/signal/_signaltools.py +719 -396
  354. scipy/signal/_sigtools.cpython-313t-darwin.so +0 -0
  355. scipy/signal/_sosfilt.cpython-313t-darwin.so +0 -0
  356. scipy/signal/_spectral_py.py +221 -50
  357. scipy/signal/_spline.cpython-313t-darwin.so +0 -0
  358. scipy/signal/_spline_filters.py +108 -68
  359. scipy/signal/_support_alternative_backends.py +73 -0
  360. scipy/signal/_upfirdn.py +4 -1
  361. scipy/signal/_upfirdn_apply.cpython-313t-darwin.so +0 -0
  362. scipy/signal/_waveforms.py +2 -11
  363. scipy/signal/_wavelets.py +1 -1
  364. scipy/signal/fir_filter_design.py +1 -0
  365. scipy/signal/spline.py +4 -11
  366. scipy/signal/tests/_scipy_spectral_test_shim.py +5 -182
  367. scipy/signal/tests/test_bsplines.py +114 -79
  368. scipy/signal/tests/test_cont2discrete.py +9 -2
  369. scipy/signal/tests/test_filter_design.py +721 -481
  370. scipy/signal/tests/test_fir_filter_design.py +332 -140
  371. scipy/signal/tests/test_savitzky_golay.py +4 -3
  372. scipy/signal/tests/test_short_time_fft.py +231 -5
  373. scipy/signal/tests/test_signaltools.py +2149 -1348
  374. scipy/signal/tests/test_spectral.py +19 -6
  375. scipy/signal/tests/test_splines.py +161 -96
  376. scipy/signal/tests/test_upfirdn.py +84 -50
  377. scipy/signal/tests/test_waveforms.py +20 -0
  378. scipy/signal/tests/test_windows.py +607 -466
  379. scipy/signal/windows/_windows.py +287 -148
  380. scipy/sparse/__init__.py +23 -4
  381. scipy/sparse/_base.py +269 -120
  382. scipy/sparse/_bsr.py +7 -4
  383. scipy/sparse/_compressed.py +59 -234
  384. scipy/sparse/_construct.py +90 -38
  385. scipy/sparse/_coo.py +115 -181
  386. scipy/sparse/_csc.py +4 -4
  387. scipy/sparse/_csparsetools.cpython-313t-darwin.so +0 -0
  388. scipy/sparse/_csr.py +2 -2
  389. scipy/sparse/_data.py +48 -48
  390. scipy/sparse/_dia.py +105 -21
  391. scipy/sparse/_dok.py +0 -23
  392. scipy/sparse/_index.py +4 -4
  393. scipy/sparse/_matrix.py +23 -0
  394. scipy/sparse/_sparsetools.cpython-313t-darwin.so +0 -0
  395. scipy/sparse/_sputils.py +37 -22
  396. scipy/sparse/base.py +0 -9
  397. scipy/sparse/bsr.py +0 -14
  398. scipy/sparse/compressed.py +0 -23
  399. scipy/sparse/construct.py +0 -6
  400. scipy/sparse/coo.py +0 -14
  401. scipy/sparse/csc.py +0 -3
  402. scipy/sparse/csgraph/_flow.cpython-313t-darwin.so +0 -0
  403. scipy/sparse/csgraph/_matching.cpython-313t-darwin.so +0 -0
  404. scipy/sparse/csgraph/_min_spanning_tree.cpython-313t-darwin.so +0 -0
  405. scipy/sparse/csgraph/_reordering.cpython-313t-darwin.so +0 -0
  406. scipy/sparse/csgraph/_shortest_path.cpython-313t-darwin.so +0 -0
  407. scipy/sparse/csgraph/_tools.cpython-313t-darwin.so +0 -0
  408. scipy/sparse/csgraph/_traversal.cpython-313t-darwin.so +0 -0
  409. scipy/sparse/csgraph/tests/test_matching.py +14 -2
  410. scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
  411. scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
  412. scipy/sparse/csr.py +0 -5
  413. scipy/sparse/data.py +1 -6
  414. scipy/sparse/dia.py +0 -7
  415. scipy/sparse/dok.py +0 -10
  416. scipy/sparse/linalg/_dsolve/_superlu.cpython-313t-darwin.so +0 -0
  417. scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
  418. scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
  419. scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-313t-darwin.so +0 -0
  420. scipy/sparse/linalg/_eigen/arpack/arpack.py +28 -20
  421. scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
  422. scipy/sparse/linalg/_expm_multiply.py +8 -3
  423. scipy/sparse/linalg/_interface.py +29 -26
  424. scipy/sparse/linalg/_isolve/_gcrotmk.py +6 -5
  425. scipy/sparse/linalg/_isolve/iterative.py +51 -45
  426. scipy/sparse/linalg/_isolve/lgmres.py +6 -6
  427. scipy/sparse/linalg/_isolve/minres.py +5 -5
  428. scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
  429. scipy/sparse/linalg/_isolve/utils.py +2 -8
  430. scipy/sparse/linalg/_matfuncs.py +1 -1
  431. scipy/sparse/linalg/_norm.py +1 -1
  432. scipy/sparse/linalg/_propack/_cpropack.cpython-313t-darwin.so +0 -0
  433. scipy/sparse/linalg/_propack/_dpropack.cpython-313t-darwin.so +0 -0
  434. scipy/sparse/linalg/_propack/_spropack.cpython-313t-darwin.so +0 -0
  435. scipy/sparse/linalg/_propack/_zpropack.cpython-313t-darwin.so +0 -0
  436. scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
  437. scipy/sparse/linalg/tests/test_expm_multiply.py +10 -0
  438. scipy/sparse/linalg/tests/test_interface.py +35 -0
  439. scipy/sparse/linalg/tests/test_pydata_sparse.py +18 -0
  440. scipy/sparse/tests/test_arithmetic1d.py +5 -2
  441. scipy/sparse/tests/test_base.py +217 -40
  442. scipy/sparse/tests/test_common1d.py +17 -12
  443. scipy/sparse/tests/test_construct.py +1 -1
  444. scipy/sparse/tests/test_coo.py +272 -4
  445. scipy/sparse/tests/test_sparsetools.py +5 -0
  446. scipy/sparse/tests/test_sputils.py +36 -7
  447. scipy/spatial/_ckdtree.cpython-313t-darwin.so +0 -0
  448. scipy/spatial/_distance_pybind.cpython-313t-darwin.so +0 -0
  449. scipy/spatial/_distance_wrap.cpython-313t-darwin.so +0 -0
  450. scipy/spatial/_hausdorff.cpython-313t-darwin.so +0 -0
  451. scipy/spatial/_qhull.cpython-313t-darwin.so +0 -0
  452. scipy/spatial/_voronoi.cpython-313t-darwin.so +0 -0
  453. scipy/spatial/distance.py +49 -42
  454. scipy/spatial/tests/test_distance.py +3 -1
  455. scipy/spatial/tests/test_kdtree.py +1 -0
  456. scipy/spatial/tests/test_qhull.py +106 -2
  457. scipy/spatial/transform/__init__.py +5 -3
  458. scipy/spatial/transform/_rigid_transform.cpython-313t-darwin.so +0 -0
  459. scipy/spatial/transform/_rotation.cpython-313t-darwin.so +0 -0
  460. scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
  461. scipy/spatial/transform/tests/test_rotation.py +1342 -790
  462. scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
  463. scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
  464. scipy/special/__init__.py +1 -47
  465. scipy/special/_add_newdocs.py +34 -772
  466. scipy/special/_basic.py +22 -25
  467. scipy/special/_comb.cpython-313t-darwin.so +0 -0
  468. scipy/special/_ellip_harm_2.cpython-313t-darwin.so +0 -0
  469. scipy/special/_gufuncs.cpython-313t-darwin.so +0 -0
  470. scipy/special/_logsumexp.py +83 -69
  471. scipy/special/_orthogonal.pyi +1 -1
  472. scipy/special/_specfun.cpython-313t-darwin.so +0 -0
  473. scipy/special/_special_ufuncs.cpython-313t-darwin.so +0 -0
  474. scipy/special/_spherical_bessel.py +4 -4
  475. scipy/special/_support_alternative_backends.py +212 -119
  476. scipy/special/_test_internal.cpython-313t-darwin.so +0 -0
  477. scipy/special/_testutils.py +4 -4
  478. scipy/special/_ufuncs.cpython-313t-darwin.so +0 -0
  479. scipy/special/_ufuncs.pyi +1 -0
  480. scipy/special/_ufuncs.pyx +215 -1400
  481. scipy/special/_ufuncs_cxx.cpython-313t-darwin.so +0 -0
  482. scipy/special/_ufuncs_cxx.pxd +2 -15
  483. scipy/special/_ufuncs_cxx.pyx +5 -44
  484. scipy/special/_ufuncs_cxx_defs.h +2 -16
  485. scipy/special/_ufuncs_defs.h +0 -8
  486. scipy/special/cython_special.cpython-313t-darwin.so +0 -0
  487. scipy/special/cython_special.pxd +1 -1
  488. scipy/special/tests/_cython_examples/meson.build +10 -1
  489. scipy/special/tests/test_basic.py +153 -20
  490. scipy/special/tests/test_boost_ufuncs.py +3 -0
  491. scipy/special/tests/test_cdflib.py +35 -11
  492. scipy/special/tests/test_gammainc.py +16 -0
  493. scipy/special/tests/test_hyp2f1.py +23 -2
  494. scipy/special/tests/test_log1mexp.py +85 -0
  495. scipy/special/tests/test_logsumexp.py +220 -64
  496. scipy/special/tests/test_mpmath.py +1 -0
  497. scipy/special/tests/test_nan_inputs.py +1 -1
  498. scipy/special/tests/test_orthogonal.py +17 -18
  499. scipy/special/tests/test_sf_error.py +3 -2
  500. scipy/special/tests/test_sph_harm.py +6 -7
  501. scipy/special/tests/test_support_alternative_backends.py +211 -76
  502. scipy/stats/__init__.py +4 -1
  503. scipy/stats/_ansari_swilk_statistics.cpython-313t-darwin.so +0 -0
  504. scipy/stats/_axis_nan_policy.py +4 -3
  505. scipy/stats/_biasedurn.cpython-313t-darwin.so +0 -0
  506. scipy/stats/_continued_fraction.py +387 -0
  507. scipy/stats/_continuous_distns.py +296 -319
  508. scipy/stats/_covariance.py +6 -3
  509. scipy/stats/_discrete_distns.py +39 -32
  510. scipy/stats/_distn_infrastructure.py +39 -12
  511. scipy/stats/_distribution_infrastructure.py +900 -238
  512. scipy/stats/_entropy.py +7 -8
  513. scipy/{_lib → stats}/_finite_differences.py +1 -1
  514. scipy/stats/_hypotests.py +82 -49
  515. scipy/stats/_kde.py +53 -49
  516. scipy/stats/_ksstats.py +1 -1
  517. scipy/stats/_levy_stable/__init__.py +7 -15
  518. scipy/stats/_levy_stable/levyst.cpython-313t-darwin.so +0 -0
  519. scipy/stats/_morestats.py +112 -67
  520. scipy/stats/_mstats_basic.py +13 -17
  521. scipy/stats/_mstats_extras.py +8 -8
  522. scipy/stats/_multivariate.py +89 -113
  523. scipy/stats/_new_distributions.py +97 -20
  524. scipy/stats/_page_trend_test.py +12 -5
  525. scipy/stats/_probability_distribution.py +265 -43
  526. scipy/stats/_qmc.py +14 -9
  527. scipy/stats/_qmc_cy.cpython-313t-darwin.so +0 -0
  528. scipy/stats/_qmvnt.py +16 -95
  529. scipy/stats/_qmvnt_cy.cpython-313t-darwin.so +0 -0
  530. scipy/stats/_quantile.py +335 -0
  531. scipy/stats/_rcont/rcont.cpython-313t-darwin.so +0 -0
  532. scipy/stats/_resampling.py +4 -29
  533. scipy/stats/_sampling.py +1 -1
  534. scipy/stats/_sobol.cpython-313t-darwin.so +0 -0
  535. scipy/stats/_stats.cpython-313t-darwin.so +0 -0
  536. scipy/stats/_stats_mstats_common.py +19 -2
  537. scipy/stats/_stats_py.py +534 -460
  538. scipy/stats/_stats_pythran.cpython-313t-darwin.so +0 -0
  539. scipy/stats/_unuran/unuran_wrapper.cpython-313t-darwin.so +0 -0
  540. scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
  541. scipy/stats/_variation.py +5 -7
  542. scipy/stats/_wilcoxon.py +13 -7
  543. scipy/stats/tests/common_tests.py +6 -4
  544. scipy/stats/tests/test_axis_nan_policy.py +62 -24
  545. scipy/stats/tests/test_continued_fraction.py +173 -0
  546. scipy/stats/tests/test_continuous.py +379 -60
  547. scipy/stats/tests/test_continuous_basic.py +18 -12
  548. scipy/stats/tests/test_discrete_basic.py +14 -8
  549. scipy/stats/tests/test_discrete_distns.py +16 -16
  550. scipy/stats/tests/test_distributions.py +117 -75
  551. scipy/stats/tests/test_entropy.py +40 -48
  552. scipy/stats/tests/test_fit.py +4 -3
  553. scipy/stats/tests/test_hypotests.py +153 -24
  554. scipy/stats/tests/test_kdeoth.py +109 -41
  555. scipy/stats/tests/test_marray.py +289 -0
  556. scipy/stats/tests/test_morestats.py +79 -47
  557. scipy/stats/tests/test_mstats_basic.py +3 -3
  558. scipy/stats/tests/test_multivariate.py +434 -83
  559. scipy/stats/tests/test_qmc.py +13 -10
  560. scipy/stats/tests/test_quantile.py +199 -0
  561. scipy/stats/tests/test_rank.py +119 -112
  562. scipy/stats/tests/test_resampling.py +47 -56
  563. scipy/stats/tests/test_sampling.py +9 -4
  564. scipy/stats/tests/test_stats.py +799 -939
  565. scipy/stats/tests/test_variation.py +8 -6
  566. scipy/version.py +2 -2
  567. {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/LICENSE.txt +1 -1
  568. {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/METADATA +9 -9
  569. {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/RECORD +570 -577
  570. scipy-1.16.0rc1.dist-info/WHEEL +6 -0
  571. scipy/_lib/array_api_extra/_funcs.py +0 -484
  572. scipy/_lib/array_api_extra/_typing.py +0 -8
  573. scipy/interpolate/_bspl.cpython-313t-darwin.so +0 -0
  574. scipy/optimize/_cobyla.cpython-313t-darwin.so +0 -0
  575. scipy/optimize/_cython_nnls.cpython-313t-darwin.so +0 -0
  576. scipy/optimize/_slsqp.cpython-313t-darwin.so +0 -0
  577. scipy/spatial/qhull_src/COPYING.txt +0 -38
  578. scipy/special/libsf_error_state.dylib +0 -0
  579. scipy/special/tests/test_log_softmax.py +0 -109
  580. scipy/special/tests/test_xsf_cuda.py +0 -114
  581. scipy/special/xsf/binom.h +0 -89
  582. scipy/special/xsf/cdflib.h +0 -100
  583. scipy/special/xsf/cephes/airy.h +0 -307
  584. scipy/special/xsf/cephes/besselpoly.h +0 -51
  585. scipy/special/xsf/cephes/beta.h +0 -257
  586. scipy/special/xsf/cephes/cbrt.h +0 -131
  587. scipy/special/xsf/cephes/chbevl.h +0 -85
  588. scipy/special/xsf/cephes/chdtr.h +0 -193
  589. scipy/special/xsf/cephes/const.h +0 -87
  590. scipy/special/xsf/cephes/ellie.h +0 -293
  591. scipy/special/xsf/cephes/ellik.h +0 -251
  592. scipy/special/xsf/cephes/ellpe.h +0 -107
  593. scipy/special/xsf/cephes/ellpk.h +0 -117
  594. scipy/special/xsf/cephes/expn.h +0 -260
  595. scipy/special/xsf/cephes/gamma.h +0 -398
  596. scipy/special/xsf/cephes/hyp2f1.h +0 -596
  597. scipy/special/xsf/cephes/hyperg.h +0 -361
  598. scipy/special/xsf/cephes/i0.h +0 -149
  599. scipy/special/xsf/cephes/i1.h +0 -158
  600. scipy/special/xsf/cephes/igam.h +0 -421
  601. scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
  602. scipy/special/xsf/cephes/igami.h +0 -313
  603. scipy/special/xsf/cephes/j0.h +0 -225
  604. scipy/special/xsf/cephes/j1.h +0 -198
  605. scipy/special/xsf/cephes/jv.h +0 -715
  606. scipy/special/xsf/cephes/k0.h +0 -164
  607. scipy/special/xsf/cephes/k1.h +0 -163
  608. scipy/special/xsf/cephes/kn.h +0 -243
  609. scipy/special/xsf/cephes/lanczos.h +0 -112
  610. scipy/special/xsf/cephes/ndtr.h +0 -275
  611. scipy/special/xsf/cephes/poch.h +0 -85
  612. scipy/special/xsf/cephes/polevl.h +0 -167
  613. scipy/special/xsf/cephes/psi.h +0 -194
  614. scipy/special/xsf/cephes/rgamma.h +0 -111
  615. scipy/special/xsf/cephes/scipy_iv.h +0 -811
  616. scipy/special/xsf/cephes/shichi.h +0 -248
  617. scipy/special/xsf/cephes/sici.h +0 -224
  618. scipy/special/xsf/cephes/sindg.h +0 -221
  619. scipy/special/xsf/cephes/tandg.h +0 -139
  620. scipy/special/xsf/cephes/trig.h +0 -58
  621. scipy/special/xsf/cephes/unity.h +0 -186
  622. scipy/special/xsf/cephes/zeta.h +0 -172
  623. scipy/special/xsf/config.h +0 -304
  624. scipy/special/xsf/digamma.h +0 -205
  625. scipy/special/xsf/error.h +0 -57
  626. scipy/special/xsf/evalpoly.h +0 -47
  627. scipy/special/xsf/expint.h +0 -266
  628. scipy/special/xsf/hyp2f1.h +0 -694
  629. scipy/special/xsf/iv_ratio.h +0 -173
  630. scipy/special/xsf/lambertw.h +0 -150
  631. scipy/special/xsf/loggamma.h +0 -163
  632. scipy/special/xsf/sici.h +0 -200
  633. scipy/special/xsf/tools.h +0 -427
  634. scipy/special/xsf/trig.h +0 -164
  635. scipy/special/xsf/wright_bessel.h +0 -843
  636. scipy/special/xsf/zlog1.h +0 -35
  637. scipy/stats/_mvn.cpython-313t-darwin.so +0 -0
  638. 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.')