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