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