scipy 1.15.3__cp313-cp313t-macosx_14_0_arm64.whl → 1.16.0rc2__cp313-cp313t-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scipy/__config__.py +3 -3
- scipy/__init__.py +3 -6
- scipy/_cyutility.cpython-313t-darwin.so +0 -0
- scipy/_lib/_array_api.py +486 -161
- scipy/_lib/_array_api_compat_vendor.py +9 -0
- scipy/_lib/_bunch.py +4 -0
- scipy/_lib/_ccallback_c.cpython-313t-darwin.so +0 -0
- scipy/_lib/_docscrape.py +1 -1
- scipy/_lib/_elementwise_iterative_method.py +15 -26
- scipy/_lib/_sparse.py +41 -0
- scipy/_lib/_test_deprecation_call.cpython-313t-darwin.so +0 -0
- scipy/_lib/_testutils.py +6 -2
- scipy/_lib/_util.py +222 -125
- scipy/_lib/array_api_compat/__init__.py +4 -4
- scipy/_lib/array_api_compat/_internal.py +19 -6
- scipy/_lib/array_api_compat/common/__init__.py +1 -1
- scipy/_lib/array_api_compat/common/_aliases.py +365 -193
- scipy/_lib/array_api_compat/common/_fft.py +94 -64
- scipy/_lib/array_api_compat/common/_helpers.py +413 -180
- scipy/_lib/array_api_compat/common/_linalg.py +116 -40
- scipy/_lib/array_api_compat/common/_typing.py +179 -10
- scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
- scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
- scipy/_lib/array_api_compat/cupy/_info.py +16 -6
- scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
- scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
- scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
- scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
- scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
- scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
- scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
- scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
- scipy/_lib/array_api_compat/numpy/_info.py +36 -16
- scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
- scipy/_lib/array_api_compat/numpy/fft.py +11 -5
- scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
- scipy/_lib/array_api_compat/torch/__init__.py +3 -5
- scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
- scipy/_lib/array_api_compat/torch/_info.py +27 -16
- scipy/_lib/array_api_compat/torch/_typing.py +3 -0
- scipy/_lib/array_api_compat/torch/fft.py +17 -18
- scipy/_lib/array_api_compat/torch/linalg.py +16 -16
- scipy/_lib/array_api_extra/__init__.py +26 -3
- scipy/_lib/array_api_extra/_delegation.py +171 -0
- scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_at.py +463 -0
- scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
- scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
- scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
- scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
- scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
- scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
- scipy/_lib/array_api_extra/testing.py +359 -0
- scipy/_lib/decorator.py +2 -2
- scipy/_lib/doccer.py +1 -7
- scipy/_lib/messagestream.cpython-313t-darwin.so +0 -0
- scipy/_lib/pyprima/__init__.py +212 -0
- scipy/_lib/pyprima/cobyla/__init__.py +0 -0
- scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
- scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
- scipy/_lib/pyprima/cobyla/geometry.py +226 -0
- scipy/_lib/pyprima/cobyla/initialize.py +215 -0
- scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
- scipy/_lib/pyprima/cobyla/update.py +289 -0
- scipy/_lib/pyprima/common/__init__.py +0 -0
- scipy/_lib/pyprima/common/_bounds.py +34 -0
- scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
- scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
- scipy/_lib/pyprima/common/_project.py +173 -0
- scipy/_lib/pyprima/common/checkbreak.py +93 -0
- scipy/_lib/pyprima/common/consts.py +47 -0
- scipy/_lib/pyprima/common/evaluate.py +99 -0
- scipy/_lib/pyprima/common/history.py +38 -0
- scipy/_lib/pyprima/common/infos.py +30 -0
- scipy/_lib/pyprima/common/linalg.py +435 -0
- scipy/_lib/pyprima/common/message.py +290 -0
- scipy/_lib/pyprima/common/powalg.py +131 -0
- scipy/_lib/pyprima/common/preproc.py +277 -0
- scipy/_lib/pyprima/common/present.py +5 -0
- scipy/_lib/pyprima/common/ratio.py +54 -0
- scipy/_lib/pyprima/common/redrho.py +47 -0
- scipy/_lib/pyprima/common/selectx.py +296 -0
- scipy/_lib/tests/test__util.py +105 -121
- scipy/_lib/tests/test_array_api.py +166 -35
- scipy/_lib/tests/test_bunch.py +7 -0
- scipy/_lib/tests/test_ccallback.py +2 -10
- scipy/_lib/tests/test_public_api.py +13 -0
- scipy/cluster/_hierarchy.cpython-313t-darwin.so +0 -0
- scipy/cluster/_optimal_leaf_ordering.cpython-313t-darwin.so +0 -0
- scipy/cluster/_vq.cpython-313t-darwin.so +0 -0
- scipy/cluster/hierarchy.py +393 -223
- scipy/cluster/tests/test_hierarchy.py +273 -335
- scipy/cluster/tests/test_vq.py +45 -61
- scipy/cluster/vq.py +39 -35
- scipy/conftest.py +263 -157
- scipy/constants/_constants.py +4 -1
- scipy/constants/tests/test_codata.py +2 -2
- scipy/constants/tests/test_constants.py +11 -18
- scipy/datasets/_download_all.py +15 -1
- scipy/datasets/_fetchers.py +7 -1
- scipy/datasets/_utils.py +1 -1
- scipy/differentiate/_differentiate.py +25 -25
- scipy/differentiate/tests/test_differentiate.py +24 -25
- scipy/fft/_basic.py +20 -0
- scipy/fft/_helper.py +3 -34
- scipy/fft/_pocketfft/helper.py +29 -1
- scipy/fft/_pocketfft/tests/test_basic.py +2 -4
- scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
- scipy/fft/_realtransforms.py +13 -0
- scipy/fft/tests/test_basic.py +27 -25
- scipy/fft/tests/test_fftlog.py +16 -7
- scipy/fft/tests/test_helper.py +18 -34
- scipy/fft/tests/test_real_transforms.py +8 -10
- scipy/fftpack/convolve.cpython-313t-darwin.so +0 -0
- scipy/fftpack/tests/test_basic.py +2 -4
- scipy/fftpack/tests/test_real_transforms.py +8 -9
- scipy/integrate/_bvp.py +9 -3
- scipy/integrate/_cubature.py +3 -2
- scipy/integrate/_dop.cpython-313t-darwin.so +0 -0
- scipy/integrate/_lsoda.cpython-313t-darwin.so +0 -0
- scipy/integrate/_ode.py +9 -2
- scipy/integrate/_odepack.cpython-313t-darwin.so +0 -0
- scipy/integrate/_quad_vec.py +21 -29
- scipy/integrate/_quadpack.cpython-313t-darwin.so +0 -0
- scipy/integrate/_quadpack_py.py +11 -7
- scipy/integrate/_quadrature.py +3 -3
- scipy/integrate/_rules/_base.py +2 -2
- scipy/integrate/_tanhsinh.py +48 -47
- scipy/integrate/_test_odeint_banded.cpython-313t-darwin.so +0 -0
- scipy/integrate/_vode.cpython-313t-darwin.so +0 -0
- scipy/integrate/tests/test__quad_vec.py +0 -6
- scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
- scipy/integrate/tests/test_cubature.py +21 -35
- scipy/integrate/tests/test_quadrature.py +6 -8
- scipy/integrate/tests/test_tanhsinh.py +56 -48
- scipy/interpolate/__init__.py +70 -58
- scipy/interpolate/_bary_rational.py +22 -22
- scipy/interpolate/_bsplines.py +119 -66
- scipy/interpolate/_cubic.py +65 -50
- scipy/interpolate/_dfitpack.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_dierckx.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_fitpack.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_fitpack2.py +9 -6
- scipy/interpolate/_fitpack_impl.py +32 -26
- scipy/interpolate/_fitpack_repro.py +23 -19
- scipy/interpolate/_interpnd.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_interpolate.py +30 -12
- scipy/interpolate/_ndbspline.py +13 -18
- scipy/interpolate/_ndgriddata.py +5 -8
- scipy/interpolate/_polyint.py +95 -31
- scipy/interpolate/_ppoly.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_rbf.py +2 -2
- scipy/interpolate/_rbfinterp.py +1 -1
- scipy/interpolate/_rbfinterp_pythran.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_rgi.py +31 -26
- scipy/interpolate/_rgi_cython.cpython-313t-darwin.so +0 -0
- scipy/interpolate/dfitpack.py +0 -20
- scipy/interpolate/interpnd.py +1 -2
- scipy/interpolate/tests/test_bary_rational.py +2 -2
- scipy/interpolate/tests/test_bsplines.py +97 -1
- scipy/interpolate/tests/test_fitpack2.py +39 -1
- scipy/interpolate/tests/test_interpnd.py +32 -20
- scipy/interpolate/tests/test_interpolate.py +48 -4
- scipy/interpolate/tests/test_rgi.py +2 -1
- scipy/io/_fast_matrix_market/__init__.py +2 -0
- scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
- scipy/io/_harwell_boeing/hb.py +7 -11
- scipy/io/_idl.py +5 -7
- scipy/io/_netcdf.py +15 -5
- scipy/io/_test_fortran.cpython-313t-darwin.so +0 -0
- scipy/io/arff/tests/test_arffread.py +3 -3
- scipy/io/matlab/__init__.py +5 -3
- scipy/io/matlab/_mio.py +4 -1
- scipy/io/matlab/_mio5.py +19 -13
- scipy/io/matlab/_mio5_utils.cpython-313t-darwin.so +0 -0
- scipy/io/matlab/_mio_utils.cpython-313t-darwin.so +0 -0
- scipy/io/matlab/_miobase.py +4 -1
- scipy/io/matlab/_streams.cpython-313t-darwin.so +0 -0
- scipy/io/matlab/tests/test_mio.py +46 -18
- scipy/io/matlab/tests/test_mio_funcs.py +1 -1
- scipy/io/tests/test_mmio.py +7 -1
- scipy/io/tests/test_wavfile.py +41 -0
- scipy/io/wavfile.py +57 -10
- scipy/linalg/_basic.py +113 -86
- scipy/linalg/_cythonized_array_utils.cpython-313t-darwin.so +0 -0
- scipy/linalg/_decomp.py +22 -9
- scipy/linalg/_decomp_cholesky.py +28 -13
- scipy/linalg/_decomp_cossin.py +45 -30
- scipy/linalg/_decomp_interpolative.cpython-313t-darwin.so +0 -0
- scipy/linalg/_decomp_ldl.py +4 -1
- scipy/linalg/_decomp_lu.py +18 -6
- scipy/linalg/_decomp_lu_cython.cpython-313t-darwin.so +0 -0
- scipy/linalg/_decomp_polar.py +2 -0
- scipy/linalg/_decomp_qr.py +6 -2
- scipy/linalg/_decomp_qz.py +3 -0
- scipy/linalg/_decomp_schur.py +3 -1
- scipy/linalg/_decomp_svd.py +13 -2
- scipy/linalg/_decomp_update.cpython-313t-darwin.so +0 -0
- scipy/linalg/_expm_frechet.py +4 -0
- scipy/linalg/_fblas.cpython-313t-darwin.so +0 -0
- scipy/linalg/_flapack.cpython-313t-darwin.so +0 -0
- scipy/linalg/_linalg_pythran.cpython-313t-darwin.so +0 -0
- scipy/linalg/_matfuncs.py +187 -4
- scipy/linalg/_matfuncs_expm.cpython-313t-darwin.so +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cpython-313t-darwin.so +0 -0
- scipy/linalg/_matfuncs_sqrtm.py +1 -99
- scipy/linalg/_matfuncs_sqrtm_triu.cpython-313t-darwin.so +0 -0
- scipy/linalg/_procrustes.py +2 -0
- scipy/linalg/_sketches.py +17 -6
- scipy/linalg/_solve_toeplitz.cpython-313t-darwin.so +0 -0
- scipy/linalg/_solvers.py +7 -2
- scipy/linalg/_special_matrices.py +26 -36
- scipy/linalg/cython_blas.cpython-313t-darwin.so +0 -0
- scipy/linalg/cython_lapack.cpython-313t-darwin.so +0 -0
- scipy/linalg/lapack.py +22 -2
- scipy/linalg/tests/_cython_examples/meson.build +7 -0
- scipy/linalg/tests/test_basic.py +31 -16
- scipy/linalg/tests/test_batch.py +588 -0
- scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
- scipy/linalg/tests/test_decomp.py +40 -3
- scipy/linalg/tests/test_decomp_cossin.py +14 -0
- scipy/linalg/tests/test_decomp_ldl.py +1 -1
- scipy/linalg/tests/test_lapack.py +115 -7
- scipy/linalg/tests/test_matfuncs.py +157 -102
- scipy/linalg/tests/test_procrustes.py +0 -7
- scipy/linalg/tests/test_solve_toeplitz.py +1 -1
- scipy/linalg/tests/test_special_matrices.py +1 -5
- scipy/ndimage/__init__.py +1 -0
- scipy/ndimage/_cytest.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_delegators.py +8 -2
- scipy/ndimage/_filters.py +453 -5
- scipy/ndimage/_interpolation.py +36 -6
- scipy/ndimage/_measurements.py +4 -2
- scipy/ndimage/_morphology.py +5 -0
- scipy/ndimage/_nd_image.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_ni_docstrings.py +5 -1
- scipy/ndimage/_ni_label.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_ni_support.py +1 -5
- scipy/ndimage/_rank_filter_1d.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_support_alternative_backends.py +18 -6
- scipy/ndimage/tests/test_filters.py +370 -259
- scipy/ndimage/tests/test_fourier.py +7 -9
- scipy/ndimage/tests/test_interpolation.py +68 -61
- scipy/ndimage/tests/test_measurements.py +18 -35
- scipy/ndimage/tests/test_morphology.py +143 -131
- scipy/ndimage/tests/test_splines.py +1 -3
- scipy/odr/__odrpack.cpython-313t-darwin.so +0 -0
- scipy/optimize/_basinhopping.py +13 -7
- scipy/optimize/_bglu_dense.cpython-313t-darwin.so +0 -0
- scipy/optimize/_bracket.py +17 -24
- scipy/optimize/_chandrupatla.py +9 -10
- scipy/optimize/_cobyla_py.py +104 -123
- scipy/optimize/_constraints.py +14 -10
- scipy/optimize/_differentiable_functions.py +371 -230
- scipy/optimize/_differentialevolution.py +4 -3
- scipy/optimize/_direct.cpython-313t-darwin.so +0 -0
- scipy/optimize/_dual_annealing.py +1 -1
- scipy/optimize/_elementwise.py +1 -4
- scipy/optimize/_group_columns.cpython-313t-darwin.so +0 -0
- scipy/optimize/_lbfgsb.cpython-313t-darwin.so +0 -0
- scipy/optimize/_lbfgsb_py.py +57 -16
- scipy/optimize/_linprog_doc.py +2 -2
- scipy/optimize/_linprog_highs.py +2 -2
- scipy/optimize/_linprog_ip.py +25 -10
- scipy/optimize/_linprog_util.py +14 -16
- scipy/optimize/_lsap.cpython-313t-darwin.so +0 -0
- scipy/optimize/_lsq/common.py +3 -3
- scipy/optimize/_lsq/dogbox.py +16 -2
- scipy/optimize/_lsq/givens_elimination.cpython-313t-darwin.so +0 -0
- scipy/optimize/_lsq/least_squares.py +198 -126
- scipy/optimize/_lsq/lsq_linear.py +6 -6
- scipy/optimize/_lsq/trf.py +35 -8
- scipy/optimize/_milp.py +3 -1
- scipy/optimize/_minimize.py +105 -36
- scipy/optimize/_minpack.cpython-313t-darwin.so +0 -0
- scipy/optimize/_minpack_py.py +21 -14
- scipy/optimize/_moduleTNC.cpython-313t-darwin.so +0 -0
- scipy/optimize/_nnls.py +20 -21
- scipy/optimize/_nonlin.py +34 -3
- scipy/optimize/_numdiff.py +288 -110
- scipy/optimize/_optimize.py +86 -48
- scipy/optimize/_pava_pybind.cpython-313t-darwin.so +0 -0
- scipy/optimize/_remove_redundancy.py +5 -5
- scipy/optimize/_root_scalar.py +1 -1
- scipy/optimize/_shgo.py +6 -0
- scipy/optimize/_shgo_lib/_complex.py +1 -1
- scipy/optimize/_slsqp_py.py +216 -124
- scipy/optimize/_slsqplib.cpython-313t-darwin.so +0 -0
- scipy/optimize/_spectral.py +1 -1
- scipy/optimize/_tnc.py +8 -1
- scipy/optimize/_trlib/_trlib.cpython-313t-darwin.so +0 -0
- scipy/optimize/_trustregion.py +20 -6
- scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
- scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
- scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
- scipy/optimize/_trustregion_constr/projections.py +12 -8
- scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
- scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
- scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
- scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
- scipy/optimize/_trustregion_exact.py +0 -1
- scipy/optimize/_zeros.cpython-313t-darwin.so +0 -0
- scipy/optimize/_zeros_py.py +97 -17
- scipy/optimize/cython_optimize/_zeros.cpython-313t-darwin.so +0 -0
- scipy/optimize/slsqp.py +0 -1
- scipy/optimize/tests/test__basinhopping.py +1 -1
- scipy/optimize/tests/test__differential_evolution.py +4 -4
- scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
- scipy/optimize/tests/test__numdiff.py +66 -22
- scipy/optimize/tests/test__remove_redundancy.py +2 -2
- scipy/optimize/tests/test__shgo.py +9 -1
- scipy/optimize/tests/test_bracket.py +36 -46
- scipy/optimize/tests/test_chandrupatla.py +133 -135
- scipy/optimize/tests/test_cobyla.py +74 -45
- scipy/optimize/tests/test_constraints.py +1 -1
- scipy/optimize/tests/test_differentiable_functions.py +226 -6
- scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
- scipy/optimize/tests/test_least_squares.py +125 -13
- scipy/optimize/tests/test_linear_assignment.py +3 -3
- scipy/optimize/tests/test_linprog.py +3 -3
- scipy/optimize/tests/test_lsq_linear.py +6 -6
- scipy/optimize/tests/test_minimize_constrained.py +2 -2
- scipy/optimize/tests/test_minpack.py +4 -4
- scipy/optimize/tests/test_nnls.py +43 -3
- scipy/optimize/tests/test_nonlin.py +36 -0
- scipy/optimize/tests/test_optimize.py +95 -17
- scipy/optimize/tests/test_slsqp.py +36 -4
- scipy/optimize/tests/test_zeros.py +34 -1
- scipy/signal/__init__.py +12 -23
- scipy/signal/_delegators.py +568 -0
- scipy/signal/_filter_design.py +459 -241
- scipy/signal/_fir_filter_design.py +262 -90
- scipy/signal/_lti_conversion.py +3 -2
- scipy/signal/_ltisys.py +118 -91
- scipy/signal/_max_len_seq_inner.cpython-313t-darwin.so +0 -0
- scipy/signal/_peak_finding_utils.cpython-313t-darwin.so +0 -0
- scipy/signal/_polyutils.py +172 -0
- scipy/signal/_short_time_fft.py +519 -70
- scipy/signal/_signal_api.py +30 -0
- scipy/signal/_signaltools.py +719 -399
- scipy/signal/_sigtools.cpython-313t-darwin.so +0 -0
- scipy/signal/_sosfilt.cpython-313t-darwin.so +0 -0
- scipy/signal/_spectral_py.py +230 -50
- scipy/signal/_spline.cpython-313t-darwin.so +0 -0
- scipy/signal/_spline_filters.py +108 -68
- scipy/signal/_support_alternative_backends.py +73 -0
- scipy/signal/_upfirdn.py +4 -1
- scipy/signal/_upfirdn_apply.cpython-313t-darwin.so +0 -0
- scipy/signal/_waveforms.py +2 -11
- scipy/signal/_wavelets.py +1 -1
- scipy/signal/fir_filter_design.py +1 -0
- scipy/signal/spline.py +4 -11
- scipy/signal/tests/_scipy_spectral_test_shim.py +2 -171
- scipy/signal/tests/test_bsplines.py +114 -79
- scipy/signal/tests/test_cont2discrete.py +9 -2
- scipy/signal/tests/test_filter_design.py +721 -481
- scipy/signal/tests/test_fir_filter_design.py +332 -140
- scipy/signal/tests/test_savitzky_golay.py +4 -3
- scipy/signal/tests/test_short_time_fft.py +221 -3
- scipy/signal/tests/test_signaltools.py +2144 -1348
- scipy/signal/tests/test_spectral.py +50 -6
- scipy/signal/tests/test_splines.py +161 -96
- scipy/signal/tests/test_upfirdn.py +84 -50
- scipy/signal/tests/test_waveforms.py +20 -0
- scipy/signal/tests/test_windows.py +607 -466
- scipy/signal/windows/_windows.py +287 -148
- scipy/sparse/__init__.py +23 -4
- scipy/sparse/_base.py +270 -108
- scipy/sparse/_bsr.py +7 -4
- scipy/sparse/_compressed.py +59 -231
- scipy/sparse/_construct.py +90 -38
- scipy/sparse/_coo.py +115 -181
- scipy/sparse/_csc.py +4 -4
- scipy/sparse/_csparsetools.cpython-313t-darwin.so +0 -0
- scipy/sparse/_csr.py +2 -2
- scipy/sparse/_data.py +48 -48
- scipy/sparse/_dia.py +105 -18
- scipy/sparse/_dok.py +0 -23
- scipy/sparse/_index.py +4 -4
- scipy/sparse/_matrix.py +23 -0
- scipy/sparse/_sparsetools.cpython-313t-darwin.so +0 -0
- scipy/sparse/_sputils.py +37 -22
- scipy/sparse/base.py +0 -9
- scipy/sparse/bsr.py +0 -14
- scipy/sparse/compressed.py +0 -23
- scipy/sparse/construct.py +0 -6
- scipy/sparse/coo.py +0 -14
- scipy/sparse/csc.py +0 -3
- scipy/sparse/csgraph/_flow.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_matching.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_reordering.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_shortest_path.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_tools.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_traversal.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/tests/test_matching.py +14 -2
- scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
- scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
- scipy/sparse/csr.py +0 -5
- scipy/sparse/data.py +1 -6
- scipy/sparse/dia.py +0 -7
- scipy/sparse/dok.py +0 -10
- scipy/sparse/linalg/_dsolve/_superlu.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
- scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
- scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_eigen/arpack/arpack.py +23 -17
- scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
- scipy/sparse/linalg/_interface.py +17 -18
- scipy/sparse/linalg/_isolve/_gcrotmk.py +4 -4
- scipy/sparse/linalg/_isolve/iterative.py +51 -45
- scipy/sparse/linalg/_isolve/lgmres.py +6 -6
- scipy/sparse/linalg/_isolve/minres.py +5 -5
- scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
- scipy/sparse/linalg/_isolve/utils.py +2 -8
- scipy/sparse/linalg/_matfuncs.py +1 -1
- scipy/sparse/linalg/_norm.py +1 -1
- scipy/sparse/linalg/_propack/_cpropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_spropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
- scipy/sparse/linalg/tests/test_pydata_sparse.py +14 -0
- scipy/sparse/tests/test_arithmetic1d.py +5 -2
- scipy/sparse/tests/test_base.py +214 -42
- scipy/sparse/tests/test_common1d.py +7 -7
- scipy/sparse/tests/test_construct.py +1 -1
- scipy/sparse/tests/test_coo.py +272 -4
- scipy/sparse/tests/test_sparsetools.py +5 -0
- scipy/sparse/tests/test_sputils.py +36 -7
- scipy/spatial/_ckdtree.cpython-313t-darwin.so +0 -0
- scipy/spatial/_distance_pybind.cpython-313t-darwin.so +0 -0
- scipy/spatial/_distance_wrap.cpython-313t-darwin.so +0 -0
- scipy/spatial/_hausdorff.cpython-313t-darwin.so +0 -0
- scipy/spatial/_qhull.cpython-313t-darwin.so +0 -0
- scipy/spatial/_voronoi.cpython-313t-darwin.so +0 -0
- scipy/spatial/distance.py +49 -42
- scipy/spatial/tests/test_distance.py +15 -1
- scipy/spatial/tests/test_kdtree.py +1 -0
- scipy/spatial/tests/test_qhull.py +7 -2
- scipy/spatial/transform/__init__.py +5 -3
- scipy/spatial/transform/_rigid_transform.cpython-313t-darwin.so +0 -0
- scipy/spatial/transform/_rotation.cpython-313t-darwin.so +0 -0
- scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
- scipy/spatial/transform/tests/test_rotation.py +1213 -832
- scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
- scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
- scipy/special/__init__.py +1 -47
- scipy/special/_add_newdocs.py +34 -772
- scipy/special/_basic.py +22 -25
- scipy/special/_comb.cpython-313t-darwin.so +0 -0
- scipy/special/_ellip_harm_2.cpython-313t-darwin.so +0 -0
- scipy/special/_gufuncs.cpython-313t-darwin.so +0 -0
- scipy/special/_logsumexp.py +67 -58
- scipy/special/_orthogonal.pyi +1 -1
- scipy/special/_specfun.cpython-313t-darwin.so +0 -0
- scipy/special/_special_ufuncs.cpython-313t-darwin.so +0 -0
- scipy/special/_spherical_bessel.py +4 -4
- scipy/special/_support_alternative_backends.py +212 -119
- scipy/special/_test_internal.cpython-313t-darwin.so +0 -0
- scipy/special/_testutils.py +4 -4
- scipy/special/_ufuncs.cpython-313t-darwin.so +0 -0
- scipy/special/_ufuncs.pyi +1 -0
- scipy/special/_ufuncs.pyx +215 -1400
- scipy/special/_ufuncs_cxx.cpython-313t-darwin.so +0 -0
- scipy/special/_ufuncs_cxx.pxd +2 -15
- scipy/special/_ufuncs_cxx.pyx +5 -44
- scipy/special/_ufuncs_cxx_defs.h +2 -16
- scipy/special/_ufuncs_defs.h +0 -8
- scipy/special/cython_special.cpython-313t-darwin.so +0 -0
- scipy/special/cython_special.pxd +1 -1
- scipy/special/tests/_cython_examples/meson.build +10 -1
- scipy/special/tests/test_basic.py +153 -20
- scipy/special/tests/test_boost_ufuncs.py +3 -0
- scipy/special/tests/test_cdflib.py +35 -11
- scipy/special/tests/test_gammainc.py +16 -0
- scipy/special/tests/test_hyp2f1.py +2 -2
- scipy/special/tests/test_log1mexp.py +85 -0
- scipy/special/tests/test_logsumexp.py +206 -64
- scipy/special/tests/test_mpmath.py +1 -0
- scipy/special/tests/test_nan_inputs.py +1 -1
- scipy/special/tests/test_orthogonal.py +17 -18
- scipy/special/tests/test_sf_error.py +3 -2
- scipy/special/tests/test_sph_harm.py +6 -7
- scipy/special/tests/test_support_alternative_backends.py +211 -76
- scipy/stats/__init__.py +4 -1
- scipy/stats/_ansari_swilk_statistics.cpython-313t-darwin.so +0 -0
- scipy/stats/_axis_nan_policy.py +5 -12
- scipy/stats/_biasedurn.cpython-313t-darwin.so +0 -0
- scipy/stats/_continued_fraction.py +387 -0
- scipy/stats/_continuous_distns.py +277 -310
- scipy/stats/_correlation.py +1 -1
- scipy/stats/_covariance.py +6 -3
- scipy/stats/_discrete_distns.py +39 -32
- scipy/stats/_distn_infrastructure.py +39 -12
- scipy/stats/_distribution_infrastructure.py +900 -238
- scipy/stats/_entropy.py +9 -10
- scipy/{_lib → stats}/_finite_differences.py +1 -1
- scipy/stats/_hypotests.py +83 -50
- scipy/stats/_kde.py +53 -49
- scipy/stats/_ksstats.py +1 -1
- scipy/stats/_levy_stable/__init__.py +7 -15
- scipy/stats/_levy_stable/levyst.cpython-313t-darwin.so +0 -0
- scipy/stats/_morestats.py +118 -73
- scipy/stats/_mstats_basic.py +13 -17
- scipy/stats/_mstats_extras.py +8 -8
- scipy/stats/_multivariate.py +89 -113
- scipy/stats/_new_distributions.py +97 -20
- scipy/stats/_page_trend_test.py +12 -5
- scipy/stats/_probability_distribution.py +265 -43
- scipy/stats/_qmc.py +14 -9
- scipy/stats/_qmc_cy.cpython-313t-darwin.so +0 -0
- scipy/stats/_qmvnt.py +16 -95
- scipy/stats/_qmvnt_cy.cpython-313t-darwin.so +0 -0
- scipy/stats/_quantile.py +335 -0
- scipy/stats/_rcont/rcont.cpython-313t-darwin.so +0 -0
- scipy/stats/_resampling.py +4 -29
- scipy/stats/_sampling.py +1 -1
- scipy/stats/_sobol.cpython-313t-darwin.so +0 -0
- scipy/stats/_stats.cpython-313t-darwin.so +0 -0
- scipy/stats/_stats_mstats_common.py +21 -2
- scipy/stats/_stats_py.py +550 -476
- scipy/stats/_stats_pythran.cpython-313t-darwin.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.cpython-313t-darwin.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
- scipy/stats/_variation.py +6 -8
- scipy/stats/_wilcoxon.py +13 -7
- scipy/stats/tests/common_tests.py +6 -4
- scipy/stats/tests/test_axis_nan_policy.py +62 -24
- scipy/stats/tests/test_continued_fraction.py +173 -0
- scipy/stats/tests/test_continuous.py +379 -60
- scipy/stats/tests/test_continuous_basic.py +18 -12
- scipy/stats/tests/test_discrete_basic.py +14 -8
- scipy/stats/tests/test_discrete_distns.py +16 -16
- scipy/stats/tests/test_distributions.py +95 -75
- scipy/stats/tests/test_entropy.py +40 -48
- scipy/stats/tests/test_fit.py +4 -3
- scipy/stats/tests/test_hypotests.py +153 -24
- scipy/stats/tests/test_kdeoth.py +109 -41
- scipy/stats/tests/test_marray.py +289 -0
- scipy/stats/tests/test_morestats.py +79 -47
- scipy/stats/tests/test_mstats_basic.py +3 -3
- scipy/stats/tests/test_multivariate.py +434 -83
- scipy/stats/tests/test_qmc.py +13 -10
- scipy/stats/tests/test_quantile.py +199 -0
- scipy/stats/tests/test_rank.py +119 -112
- scipy/stats/tests/test_resampling.py +47 -56
- scipy/stats/tests/test_sampling.py +9 -4
- scipy/stats/tests/test_stats.py +799 -939
- scipy/stats/tests/test_variation.py +8 -6
- scipy/version.py +2 -2
- {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/LICENSE.txt +4 -4
- {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/METADATA +11 -11
- {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/RECORD +559 -566
- scipy-1.16.0rc2.dist-info/WHEEL +6 -0
- scipy/_lib/array_api_extra/_funcs.py +0 -484
- scipy/_lib/array_api_extra/_typing.py +0 -8
- scipy/interpolate/_bspl.cpython-313t-darwin.so +0 -0
- scipy/optimize/_cobyla.cpython-313t-darwin.so +0 -0
- scipy/optimize/_cython_nnls.cpython-313t-darwin.so +0 -0
- scipy/optimize/_slsqp.cpython-313t-darwin.so +0 -0
- scipy/spatial/qhull_src/COPYING.txt +0 -38
- scipy/special/libsf_error_state.dylib +0 -0
- scipy/special/tests/test_log_softmax.py +0 -109
- scipy/special/tests/test_xsf_cuda.py +0 -114
- scipy/special/xsf/binom.h +0 -89
- scipy/special/xsf/cdflib.h +0 -100
- scipy/special/xsf/cephes/airy.h +0 -307
- scipy/special/xsf/cephes/besselpoly.h +0 -51
- scipy/special/xsf/cephes/beta.h +0 -257
- scipy/special/xsf/cephes/cbrt.h +0 -131
- scipy/special/xsf/cephes/chbevl.h +0 -85
- scipy/special/xsf/cephes/chdtr.h +0 -193
- scipy/special/xsf/cephes/const.h +0 -87
- scipy/special/xsf/cephes/ellie.h +0 -293
- scipy/special/xsf/cephes/ellik.h +0 -251
- scipy/special/xsf/cephes/ellpe.h +0 -107
- scipy/special/xsf/cephes/ellpk.h +0 -117
- scipy/special/xsf/cephes/expn.h +0 -260
- scipy/special/xsf/cephes/gamma.h +0 -398
- scipy/special/xsf/cephes/hyp2f1.h +0 -596
- scipy/special/xsf/cephes/hyperg.h +0 -361
- scipy/special/xsf/cephes/i0.h +0 -149
- scipy/special/xsf/cephes/i1.h +0 -158
- scipy/special/xsf/cephes/igam.h +0 -421
- scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
- scipy/special/xsf/cephes/igami.h +0 -313
- scipy/special/xsf/cephes/j0.h +0 -225
- scipy/special/xsf/cephes/j1.h +0 -198
- scipy/special/xsf/cephes/jv.h +0 -715
- scipy/special/xsf/cephes/k0.h +0 -164
- scipy/special/xsf/cephes/k1.h +0 -163
- scipy/special/xsf/cephes/kn.h +0 -243
- scipy/special/xsf/cephes/lanczos.h +0 -112
- scipy/special/xsf/cephes/ndtr.h +0 -275
- scipy/special/xsf/cephes/poch.h +0 -85
- scipy/special/xsf/cephes/polevl.h +0 -167
- scipy/special/xsf/cephes/psi.h +0 -194
- scipy/special/xsf/cephes/rgamma.h +0 -111
- scipy/special/xsf/cephes/scipy_iv.h +0 -811
- scipy/special/xsf/cephes/shichi.h +0 -248
- scipy/special/xsf/cephes/sici.h +0 -224
- scipy/special/xsf/cephes/sindg.h +0 -221
- scipy/special/xsf/cephes/tandg.h +0 -139
- scipy/special/xsf/cephes/trig.h +0 -58
- scipy/special/xsf/cephes/unity.h +0 -186
- scipy/special/xsf/cephes/zeta.h +0 -172
- scipy/special/xsf/config.h +0 -304
- scipy/special/xsf/digamma.h +0 -205
- scipy/special/xsf/error.h +0 -57
- scipy/special/xsf/evalpoly.h +0 -47
- scipy/special/xsf/expint.h +0 -266
- scipy/special/xsf/hyp2f1.h +0 -694
- scipy/special/xsf/iv_ratio.h +0 -173
- scipy/special/xsf/lambertw.h +0 -150
- scipy/special/xsf/loggamma.h +0 -163
- scipy/special/xsf/sici.h +0 -200
- scipy/special/xsf/tools.h +0 -427
- scipy/special/xsf/trig.h +0 -164
- scipy/special/xsf/wright_bessel.h +0 -843
- scipy/special/xsf/zlog1.h +0 -35
- scipy/stats/_mvn.cpython-313t-darwin.so +0 -0
- scipy-1.15.3.dist-info/WHEEL +0 -4
scipy/optimize/_optimize.py
CHANGED
@@ -41,7 +41,7 @@ from scipy._lib._util import getfullargspec_no_self as _getfullargspec
|
|
41
41
|
from scipy._lib._util import (MapWrapper, check_random_state, _RichResult,
|
42
42
|
_call_callback_maybe_halt, _transition_to_rng)
|
43
43
|
from scipy.optimize._differentiable_functions import ScalarFunction, FD_METHODS
|
44
|
-
from scipy._lib._array_api import array_namespace
|
44
|
+
from scipy._lib._array_api import array_namespace, xp_capabilities, xp_promote
|
45
45
|
from scipy._lib import array_api_extra as xpx
|
46
46
|
|
47
47
|
|
@@ -155,6 +155,7 @@ class OptimizeResult(_RichResult):
|
|
155
155
|
|
156
156
|
|
157
157
|
class OptimizeWarning(UserWarning):
|
158
|
+
"""General warning for :mod:`scipy.optimize`."""
|
158
159
|
pass
|
159
160
|
|
160
161
|
def _check_positive_definite(Hk):
|
@@ -202,7 +203,7 @@ def vecnorm(x, ord=2):
|
|
202
203
|
|
203
204
|
def _prepare_scalar_function(fun, x0, jac=None, args=(), bounds=None,
|
204
205
|
epsilon=None, finite_diff_rel_step=None,
|
205
|
-
hess=None):
|
206
|
+
hess=None, workers=None):
|
206
207
|
"""
|
207
208
|
Creates a ScalarFunction object for use with scalar minimizers
|
208
209
|
(BFGS/LBFGSB/SLSQP/TNC/CG/etc).
|
@@ -255,6 +256,21 @@ def _prepare_scalar_function(fun, x0, jac=None, args=(), bounds=None,
|
|
255
256
|
Whenever the gradient is estimated via finite-differences, the Hessian
|
256
257
|
cannot be estimated with options {'2-point', '3-point', 'cs'} and needs
|
257
258
|
to be estimated using one of the quasi-Newton strategies.
|
259
|
+
workers : int or map-like callable, optional
|
260
|
+
A map-like callable, such as `multiprocessing.Pool.map` for evaluating
|
261
|
+
any numerical differentiation in parallel.
|
262
|
+
This evaluation is carried out as ``workers(fun, iterable)``, or
|
263
|
+
``workers(grad, iterable)``, depending on what is being numerically
|
264
|
+
differentiated.
|
265
|
+
Alternatively, if `workers` is an int the task is subdivided into `workers`
|
266
|
+
sections and the function evaluated in parallel
|
267
|
+
(uses `multiprocessing.Pool <multiprocessing>`).
|
268
|
+
Supply -1 to use all available CPU cores.
|
269
|
+
It is recommended that a map-like be used instead of int, as repeated
|
270
|
+
calls to `approx_derivative` will incur large overhead from setting up
|
271
|
+
new processes.
|
272
|
+
|
273
|
+
.. versionadded:: 1.16.0
|
258
274
|
|
259
275
|
Returns
|
260
276
|
-------
|
@@ -286,10 +302,14 @@ def _prepare_scalar_function(fun, x0, jac=None, args=(), bounds=None,
|
|
286
302
|
if bounds is None:
|
287
303
|
bounds = (-np.inf, np.inf)
|
288
304
|
|
305
|
+
# normalize workers
|
306
|
+
workers = workers or map
|
307
|
+
|
289
308
|
# ScalarFunction caches. Reuse of fun(x) during grad
|
290
309
|
# calculation reduces overall function evaluations.
|
291
310
|
sf = ScalarFunction(fun, x0, args, grad, hess,
|
292
|
-
finite_diff_rel_step, bounds, epsilon=epsilon
|
311
|
+
finite_diff_rel_step, bounds, epsilon=epsilon,
|
312
|
+
workers=workers)
|
293
313
|
|
294
314
|
return sf
|
295
315
|
|
@@ -318,6 +338,7 @@ def _check_clip_x(x, bounds):
|
|
318
338
|
return x
|
319
339
|
|
320
340
|
|
341
|
+
@xp_capabilities()
|
321
342
|
def rosen(x):
|
322
343
|
"""
|
323
344
|
The Rosenbrock function.
|
@@ -361,14 +382,13 @@ def rosen(x):
|
|
361
382
|
>>> plt.show()
|
362
383
|
"""
|
363
384
|
xp = array_namespace(x)
|
364
|
-
x =
|
365
|
-
if xp.isdtype(x.dtype, 'integral'):
|
366
|
-
x = xp.astype(x, xp.asarray(1.).dtype)
|
385
|
+
x = xp_promote(x, force_floating=True, xp=xp)
|
367
386
|
r = xp.sum(100.0 * (x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0,
|
368
387
|
axis=0, dtype=x.dtype)
|
369
388
|
return r
|
370
389
|
|
371
390
|
|
391
|
+
@xp_capabilities(skip_backends=[('jax.numpy', "JAX doesn't allow item assignment.")])
|
372
392
|
def rosen_der(x):
|
373
393
|
"""
|
374
394
|
The derivative (i.e. gradient) of the Rosenbrock function.
|
@@ -397,9 +417,7 @@ def rosen_der(x):
|
|
397
417
|
|
398
418
|
"""
|
399
419
|
xp = array_namespace(x)
|
400
|
-
x =
|
401
|
-
if xp.isdtype(x.dtype, 'integral'):
|
402
|
-
x = xp.astype(x, xp.asarray(1.).dtype)
|
420
|
+
x = xp_promote(x, force_floating=True, xp=xp)
|
403
421
|
xm = x[1:-1]
|
404
422
|
xm_m1 = x[:-2]
|
405
423
|
xm_p1 = x[2:]
|
@@ -411,6 +429,7 @@ def rosen_der(x):
|
|
411
429
|
return der
|
412
430
|
|
413
431
|
|
432
|
+
@xp_capabilities(skip_backends=[('jax.numpy', "JAX doesn't allow item assignment.")])
|
414
433
|
def rosen_hess(x):
|
415
434
|
"""
|
416
435
|
The Hessian matrix of the Rosenbrock function.
|
@@ -442,18 +461,18 @@ def rosen_hess(x):
|
|
442
461
|
|
443
462
|
"""
|
444
463
|
xp = array_namespace(x)
|
445
|
-
x =
|
446
|
-
|
447
|
-
|
448
|
-
H = (xpx.create_diagonal(-400 * x[:-1], offset=1, xp=xp)
|
464
|
+
x = xp_promote(x, force_floating=True, xp=xp)
|
465
|
+
|
466
|
+
H = (xpx.create_diagonal(-400 * x[:-1], offset=1, xp=xp)
|
449
467
|
- xpx.create_diagonal(400 * x[:-1], offset=-1, xp=xp))
|
450
468
|
diagonal = xp.zeros(x.shape[0], dtype=x.dtype)
|
451
|
-
diagonal[0]
|
452
|
-
diagonal[-1]
|
453
|
-
diagonal[1:-1]
|
469
|
+
diagonal = xpx.at(diagonal)[0].set(1200 * x[0]**2 - 400 * x[1] + 2)
|
470
|
+
diagonal = xpx.at(diagonal)[-1].set(200)
|
471
|
+
diagonal = xpx.at(diagonal)[1:-1].set(202 + 1200 * x[1:-1]**2 - 400 * x[2:])
|
454
472
|
return H + xpx.create_diagonal(diagonal, xp=xp)
|
455
473
|
|
456
474
|
|
475
|
+
@xp_capabilities(skip_backends=[('jax.numpy', "JAX doesn't allow item assignment.")])
|
457
476
|
def rosen_hess_prod(x, p):
|
458
477
|
"""
|
459
478
|
Product of the Hessian matrix of the Rosenbrock function with a vector.
|
@@ -486,9 +505,8 @@ def rosen_hess_prod(x, p):
|
|
486
505
|
|
487
506
|
"""
|
488
507
|
xp = array_namespace(x, p)
|
508
|
+
x = xp_promote(x, force_floating=True, xp=xp)
|
489
509
|
x = xpx.atleast_nd(x, ndim=1, xp=xp)
|
490
|
-
if xp.isdtype(x.dtype, 'integral'):
|
491
|
-
x = xp.astype(x, xp.asarray(1.).dtype)
|
492
510
|
p = xp.asarray(p, dtype=x.dtype)
|
493
511
|
Hp = xp.zeros(x.shape[0], dtype=x.dtype)
|
494
512
|
Hp[0] = (1200 * x[0]**2 - 400 * x[1] + 2) * p[0] - 400 * x[0] * p[1]
|
@@ -910,15 +928,14 @@ def _minimize_neldermead(func, x0, args=(), callback=None,
|
|
910
928
|
iterations += 1
|
911
929
|
except _MaxFuncCallError:
|
912
930
|
pass
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
break
|
931
|
+
ind = np.argsort(fsim)
|
932
|
+
sim = np.take(sim, ind, 0)
|
933
|
+
fsim = np.take(fsim, ind, 0)
|
934
|
+
if retall:
|
935
|
+
allvecs.append(sim[0])
|
936
|
+
intermediate_result = OptimizeResult(x=sim[0], fun=fsim[0])
|
937
|
+
if _call_callback_maybe_halt(callback, intermediate_result):
|
938
|
+
break
|
922
939
|
|
923
940
|
x = sim[0]
|
924
941
|
fval = np.min(fsim)
|
@@ -939,8 +956,8 @@ def _minimize_neldermead(func, x0, args=(), callback=None,
|
|
939
956
|
if disp:
|
940
957
|
print(msg)
|
941
958
|
print(f" Current function value: {fval:f}")
|
942
|
-
print(" Iterations:
|
943
|
-
print(" Function evaluations:
|
959
|
+
print(f" Iterations: {iterations:d}")
|
960
|
+
print(f" Function evaluations: {fcalls[0]:d}")
|
944
961
|
|
945
962
|
result = OptimizeResult(fun=fval, nit=iterations, nfev=fcalls[0],
|
946
963
|
status=warnflag, success=(warnflag == 0),
|
@@ -1329,7 +1346,7 @@ def _minimize_bfgs(fun, x0, args=(), jac=None, callback=None,
|
|
1329
1346
|
gtol=1e-5, norm=np.inf, eps=_epsilon, maxiter=None,
|
1330
1347
|
disp=False, return_all=False, finite_diff_rel_step=None,
|
1331
1348
|
xrtol=0, c1=1e-4, c2=0.9,
|
1332
|
-
hess_inv0=None, **unknown_options):
|
1349
|
+
hess_inv0=None, workers=None, **unknown_options):
|
1333
1350
|
"""
|
1334
1351
|
Minimization of scalar function of one or more variables using the
|
1335
1352
|
BFGS algorithm.
|
@@ -1367,6 +1384,12 @@ def _minimize_bfgs(fun, x0, args=(), jac=None, callback=None,
|
|
1367
1384
|
hess_inv0 : None or ndarray, optional
|
1368
1385
|
Initial inverse hessian estimate, shape (n, n). If None (default) then
|
1369
1386
|
the identity matrix is used.
|
1387
|
+
workers : int, map-like callable, optional
|
1388
|
+
A map-like callable, such as `multiprocessing.Pool.map` for evaluating
|
1389
|
+
any numerical differentiation in parallel.
|
1390
|
+
This evaluation is carried out as ``workers(fun, iterable)``.
|
1391
|
+
|
1392
|
+
.. versionadded:: 1.16.0
|
1370
1393
|
|
1371
1394
|
Notes
|
1372
1395
|
-----
|
@@ -1391,7 +1414,8 @@ def _minimize_bfgs(fun, x0, args=(), jac=None, callback=None,
|
|
1391
1414
|
maxiter = len(x0) * 200
|
1392
1415
|
|
1393
1416
|
sf = _prepare_scalar_function(fun, x0, jac, args=args, epsilon=eps,
|
1394
|
-
finite_diff_rel_step=finite_diff_rel_step
|
1417
|
+
finite_diff_rel_step=finite_diff_rel_step,
|
1418
|
+
workers=workers)
|
1395
1419
|
|
1396
1420
|
f = sf.fun
|
1397
1421
|
myfprime = sf.grad
|
@@ -1489,9 +1513,9 @@ def _minimize_bfgs(fun, x0, args=(), jac=None, callback=None,
|
|
1489
1513
|
if disp:
|
1490
1514
|
_print_success_message_or_warn(warnflag, msg)
|
1491
1515
|
print(f" Current function value: {fval:f}")
|
1492
|
-
print(" Iterations:
|
1493
|
-
print(" Function evaluations:
|
1494
|
-
print(" Gradient evaluations:
|
1516
|
+
print(f" Iterations: {k:d}")
|
1517
|
+
print(f" Function evaluations: {sf.nfev:d}")
|
1518
|
+
print(f" Gradient evaluations: {sf.ngev:d}")
|
1495
1519
|
|
1496
1520
|
result = OptimizeResult(fun=fval, jac=gfk, hess_inv=Hk, nfev=sf.nfev,
|
1497
1521
|
njev=sf.ngev, status=warnflag,
|
@@ -1695,7 +1719,8 @@ def fmin_cg(f, x0, fprime=None, args=(), gtol=1e-5, norm=np.inf,
|
|
1695
1719
|
def _minimize_cg(fun, x0, args=(), jac=None, callback=None,
|
1696
1720
|
gtol=1e-5, norm=np.inf, eps=_epsilon, maxiter=None,
|
1697
1721
|
disp=False, return_all=False, finite_diff_rel_step=None,
|
1698
|
-
c1=1e-4, c2=0.4,
|
1722
|
+
c1=1e-4, c2=0.4, workers=None,
|
1723
|
+
**unknown_options):
|
1699
1724
|
"""
|
1700
1725
|
Minimization of scalar function of one or more variables using the
|
1701
1726
|
conjugate gradient algorithm.
|
@@ -1728,6 +1753,12 @@ def _minimize_cg(fun, x0, args=(), jac=None, callback=None,
|
|
1728
1753
|
Parameter for Armijo condition rule.
|
1729
1754
|
c2 : float, default: 0.4
|
1730
1755
|
Parameter for curvature condition rule.
|
1756
|
+
workers : int, map-like callable, optional
|
1757
|
+
A map-like callable, such as `multiprocessing.Pool.map` for evaluating
|
1758
|
+
any numerical differentiation in parallel.
|
1759
|
+
This evaluation is carried out as ``workers(fun, iterable)``.
|
1760
|
+
|
1761
|
+
.. versionadded:: 1.16.0
|
1731
1762
|
|
1732
1763
|
Notes
|
1733
1764
|
-----
|
@@ -1742,7 +1773,8 @@ def _minimize_cg(fun, x0, args=(), jac=None, callback=None,
|
|
1742
1773
|
maxiter = len(x0) * 200
|
1743
1774
|
|
1744
1775
|
sf = _prepare_scalar_function(fun, x0, jac=jac, args=args, epsilon=eps,
|
1745
|
-
finite_diff_rel_step=finite_diff_rel_step
|
1776
|
+
finite_diff_rel_step=finite_diff_rel_step,
|
1777
|
+
workers=workers)
|
1746
1778
|
|
1747
1779
|
f = sf.fun
|
1748
1780
|
myfprime = sf.grad
|
@@ -1833,9 +1865,9 @@ def _minimize_cg(fun, x0, args=(), jac=None, callback=None,
|
|
1833
1865
|
if disp:
|
1834
1866
|
_print_success_message_or_warn(warnflag, msg)
|
1835
1867
|
print(f" Current function value: {fval:f}")
|
1836
|
-
print(" Iterations:
|
1837
|
-
print(" Function evaluations:
|
1838
|
-
print(" Gradient evaluations:
|
1868
|
+
print(f" Iterations: {k:d}")
|
1869
|
+
print(f" Function evaluations: {sf.nfev:d}")
|
1870
|
+
print(f" Gradient evaluations: {sf.ngev:d}")
|
1839
1871
|
|
1840
1872
|
result = OptimizeResult(fun=fval, jac=gfk, nfev=sf.nfev,
|
1841
1873
|
njev=sf.ngev, status=warnflag,
|
@@ -1968,7 +2000,7 @@ def fmin_ncg(f, x0, fprime, fhess_p=None, fhess=None, args=(), avextol=1e-5,
|
|
1968
2000
|
|
1969
2001
|
def _minimize_newtoncg(fun, x0, args=(), jac=None, hess=None, hessp=None,
|
1970
2002
|
callback=None, xtol=1e-5, eps=_epsilon, maxiter=None,
|
1971
|
-
disp=False, return_all=False, c1=1e-4, c2=0.9,
|
2003
|
+
disp=False, return_all=False, c1=1e-4, c2=0.9, workers=None,
|
1972
2004
|
**unknown_options):
|
1973
2005
|
"""
|
1974
2006
|
Minimization of scalar function of one or more variables using the
|
@@ -1994,6 +2026,12 @@ def _minimize_newtoncg(fun, x0, args=(), jac=None, hess=None, hessp=None,
|
|
1994
2026
|
Parameter for Armijo condition rule.
|
1995
2027
|
c2 : float, default: 0.9
|
1996
2028
|
Parameter for curvature condition rule.
|
2029
|
+
workers : int, map-like callable, optional
|
2030
|
+
A map-like callable, such as `multiprocessing.Pool.map` for evaluating
|
2031
|
+
any numerical differentiation in parallel.
|
2032
|
+
This evaluation is carried out as ``workers(fun, iterable)``.
|
2033
|
+
|
2034
|
+
.. versionadded:: 1.16.0
|
1997
2035
|
|
1998
2036
|
Notes
|
1999
2037
|
-----
|
@@ -2011,7 +2049,7 @@ def _minimize_newtoncg(fun, x0, args=(), jac=None, hess=None, hessp=None,
|
|
2011
2049
|
x0 = asarray(x0).flatten()
|
2012
2050
|
# TODO: add hessp (callable or FD) to ScalarFunction?
|
2013
2051
|
sf = _prepare_scalar_function(
|
2014
|
-
fun, x0, jac, args=args, epsilon=eps, hess=hess
|
2052
|
+
fun, x0, jac, args=args, epsilon=eps, hess=hess, workers=workers
|
2015
2053
|
)
|
2016
2054
|
f = sf.fun
|
2017
2055
|
fprime = sf.grad
|
@@ -2036,10 +2074,10 @@ def _minimize_newtoncg(fun, x0, args=(), jac=None, hess=None, hessp=None,
|
|
2036
2074
|
if disp:
|
2037
2075
|
_print_success_message_or_warn(warnflag, msg)
|
2038
2076
|
print(f" Current function value: {old_fval:f}")
|
2039
|
-
print(" Iterations:
|
2040
|
-
print(" Function evaluations:
|
2041
|
-
print(" Gradient evaluations:
|
2042
|
-
print(" Hessian evaluations:
|
2077
|
+
print(f" Iterations: {k:d}")
|
2078
|
+
print(f" Function evaluations: {sf.nfev:d}")
|
2079
|
+
print(f" Gradient evaluations: {sf.ngev:d}")
|
2080
|
+
print(f" Hessian evaluations: {hcalls:d}")
|
2043
2081
|
fval = old_fval
|
2044
2082
|
result = OptimizeResult(fun=fval, jac=gfk, nfev=sf.nfev,
|
2045
2083
|
njev=sf.ngev, nhev=hcalls, status=warnflag,
|
@@ -2096,7 +2134,7 @@ def _minimize_newtoncg(fun, x0, args=(), jac=None, hess=None, hessp=None,
|
|
2096
2134
|
hcalls += 1
|
2097
2135
|
else:
|
2098
2136
|
# hess was supplied as a callable or hessian update strategy, so
|
2099
|
-
# A is a dense numpy array or sparse
|
2137
|
+
# A is a dense numpy array or sparse array
|
2100
2138
|
Ap = A.dot(psupi)
|
2101
2139
|
# check curvature
|
2102
2140
|
Ap = asarray(Ap).squeeze() # get rid of matrices...
|
@@ -3604,8 +3642,8 @@ def _minimize_powell(func, x0, args=(), callback=None, bounds=None,
|
|
3604
3642
|
if disp:
|
3605
3643
|
_print_success_message_or_warn(warnflag, msg, RuntimeWarning)
|
3606
3644
|
print(f" Current function value: {fval:f}")
|
3607
|
-
print(" Iterations:
|
3608
|
-
print(" Function evaluations:
|
3645
|
+
print(f" Iterations: {iter:d}")
|
3646
|
+
print(f" Function evaluations: {fcalls[0]:d}")
|
3609
3647
|
result = OptimizeResult(fun=fval, direc=direc, nit=iter, nfev=fcalls[0],
|
3610
3648
|
status=warnflag, success=(warnflag == 0),
|
3611
3649
|
message=msg, x=x)
|
Binary file
|
@@ -112,14 +112,14 @@ def _remove_redundancy_pivot_dense(A, rhs, true_rank=None):
|
|
112
112
|
|
113
113
|
Parameters
|
114
114
|
----------
|
115
|
-
A : 2-D
|
115
|
+
A : 2-D array
|
116
116
|
An matrix representing the left-hand side of a system of equations
|
117
117
|
rhs : 1-D array
|
118
118
|
An array representing the right-hand side of a system of equations
|
119
119
|
|
120
120
|
Returns
|
121
121
|
-------
|
122
|
-
A : 2-D
|
122
|
+
A : 2-D array
|
123
123
|
A matrix representing the left-hand side of a system of equations
|
124
124
|
rhs : 1-D array
|
125
125
|
An array representing the right-hand side of a system of equations
|
@@ -239,14 +239,14 @@ def _remove_redundancy_pivot_sparse(A, rhs):
|
|
239
239
|
|
240
240
|
Parameters
|
241
241
|
----------
|
242
|
-
A : 2-D sparse
|
242
|
+
A : 2-D sparse array
|
243
243
|
An matrix representing the left-hand side of a system of equations
|
244
244
|
rhs : 1-D array
|
245
245
|
An array representing the right-hand side of a system of equations
|
246
246
|
|
247
247
|
Returns
|
248
248
|
-------
|
249
|
-
A : 2-D sparse
|
249
|
+
A : 2-D sparse array
|
250
250
|
A matrix representing the left-hand side of a system of equations
|
251
251
|
rhs : 1-D array
|
252
252
|
An array representing the right-hand side of a system of equations
|
@@ -289,7 +289,7 @@ def _remove_redundancy_pivot_sparse(A, rhs):
|
|
289
289
|
d = [] # Indices of dependent rows
|
290
290
|
|
291
291
|
A_orig = A
|
292
|
-
A = scipy.sparse.hstack((scipy.sparse.
|
292
|
+
A = scipy.sparse.hstack((scipy.sparse.eye_array(m), A)).tocsc()
|
293
293
|
e = np.zeros(m)
|
294
294
|
|
295
295
|
# Implements basic algorithm from [2]
|
scipy/optimize/_root_scalar.py
CHANGED
@@ -278,7 +278,7 @@ def root_scalar(f, args=(), method=None, bracket=None,
|
|
278
278
|
raise ValueError(f'Unknown solver {meth}') from e
|
279
279
|
|
280
280
|
if meth in ['bisect', 'ridder', 'brentq', 'brenth', 'toms748']:
|
281
|
-
if not isinstance(bracket,
|
281
|
+
if not isinstance(bracket, list | tuple | np.ndarray):
|
282
282
|
raise ValueError(f'Bracket needed for {method}')
|
283
283
|
|
284
284
|
a, b = bracket[:2]
|
scipy/optimize/_shgo.py
CHANGED
@@ -496,6 +496,12 @@ class SHGO:
|
|
496
496
|
raise ValueError(("Unknown sampling_method specified."
|
497
497
|
" Valid methods: {}").format(', '.join(methods)))
|
498
498
|
|
499
|
+
if options is not None and options.get('jac', None) is True:
|
500
|
+
if minimizer_kwargs is None:
|
501
|
+
minimizer_kwargs = {}
|
502
|
+
minimizer_kwargs['jac'] = True
|
503
|
+
options.pop('jac')
|
504
|
+
|
499
505
|
# Split obj func if given with Jac
|
500
506
|
try:
|
501
507
|
if ((minimizer_kwargs['jac'] is True) and
|
@@ -137,7 +137,7 @@ class Complex:
|
|
137
137
|
self.min_cons = constraints
|
138
138
|
self.g_cons = []
|
139
139
|
self.g_args = []
|
140
|
-
if not isinstance(constraints,
|
140
|
+
if not isinstance(constraints, tuple | list):
|
141
141
|
constraints = (constraints,)
|
142
142
|
|
143
143
|
for cons in constraints:
|