scipy 1.15.3__cp311-cp311-win_amd64.whl → 1.16.0rc2__cp311-cp311-win_amd64.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 +8 -8
- scipy/__init__.py +3 -6
- scipy/_cyutility.cp311-win_amd64.dll.a +0 -0
- scipy/_cyutility.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/_lib/_ccallback_c.cp311-win_amd64.pyd +0 -0
- scipy/_lib/_docscrape.py +1 -1
- scipy/_lib/_elementwise_iterative_method.py +15 -26
- scipy/_lib/_fpumode.cp311-win_amd64.dll.a +0 -0
- scipy/_lib/_fpumode.cp311-win_amd64.pyd +0 -0
- scipy/_lib/_sparse.py +41 -0
- scipy/_lib/_test_ccallback.cp311-win_amd64.dll.a +0 -0
- scipy/_lib/_test_ccallback.cp311-win_amd64.pyd +0 -0
- scipy/_lib/_test_deprecation_call.cp311-win_amd64.dll.a +0 -0
- scipy/_lib/_test_deprecation_call.cp311-win_amd64.pyd +0 -0
- scipy/_lib/_test_deprecation_def.cp311-win_amd64.dll.a +0 -0
- scipy/_lib/_test_deprecation_def.cp311-win_amd64.pyd +0 -0
- scipy/_lib/_testutils.py +6 -2
- scipy/_lib/_uarray/_uarray.cp311-win_amd64.dll.a +0 -0
- scipy/_lib/_uarray/_uarray.cp311-win_amd64.pyd +0 -0
- 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.cp311-win_amd64.dll.a +0 -0
- scipy/_lib/messagestream.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/cluster/_hierarchy.cp311-win_amd64.pyd +0 -0
- scipy/cluster/_optimal_leaf_ordering.cp311-win_amd64.dll.a +0 -0
- scipy/cluster/_optimal_leaf_ordering.cp311-win_amd64.pyd +0 -0
- scipy/cluster/_vq.cp311-win_amd64.dll.a +0 -0
- scipy/cluster/_vq.cp311-win_amd64.pyd +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/pypocketfft.cp311-win_amd64.dll.a +0 -0
- scipy/fft/_pocketfft/pypocketfft.cp311-win_amd64.pyd +0 -0
- 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.cp311-win_amd64.dll.a +0 -0
- scipy/fftpack/convolve.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/integrate/_dop.cp311-win_amd64.pyd +0 -0
- scipy/integrate/_lsoda.cp311-win_amd64.dll.a +0 -0
- scipy/integrate/_lsoda.cp311-win_amd64.pyd +0 -0
- scipy/integrate/_ode.py +9 -2
- scipy/integrate/_odepack.cp311-win_amd64.dll.a +0 -0
- scipy/integrate/_odepack.cp311-win_amd64.pyd +0 -0
- scipy/integrate/_quad_vec.py +21 -29
- scipy/integrate/_quadpack.cp311-win_amd64.dll.a +0 -0
- scipy/integrate/_quadpack.cp311-win_amd64.pyd +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_multivariate.cp311-win_amd64.dll.a +0 -0
- scipy/integrate/_test_multivariate.cp311-win_amd64.pyd +0 -0
- scipy/integrate/_test_odeint_banded.cp311-win_amd64.dll.a +0 -0
- scipy/integrate/_test_odeint_banded.cp311-win_amd64.pyd +0 -0
- scipy/integrate/_vode.cp311-win_amd64.dll.a +0 -0
- scipy/integrate/_vode.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/interpolate/_dfitpack.cp311-win_amd64.pyd +0 -0
- scipy/interpolate/_dierckx.cp311-win_amd64.dll.a +0 -0
- scipy/interpolate/_dierckx.cp311-win_amd64.pyd +0 -0
- scipy/interpolate/_fitpack.cp311-win_amd64.dll.a +0 -0
- scipy/interpolate/_fitpack.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/interpolate/_interpnd.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/interpolate/_ppoly.cp311-win_amd64.pyd +0 -0
- scipy/interpolate/_rbf.py +2 -2
- scipy/interpolate/_rbfinterp.py +1 -1
- scipy/interpolate/_rbfinterp_pythran.cp311-win_amd64.dll.a +0 -0
- scipy/interpolate/_rbfinterp_pythran.cp311-win_amd64.pyd +0 -0
- scipy/interpolate/_rgi.py +31 -26
- scipy/interpolate/_rgi_cython.cp311-win_amd64.dll.a +0 -0
- scipy/interpolate/_rgi_cython.cp311-win_amd64.pyd +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/_fast_matrix_market/_fmm_core.cp311-win_amd64.dll.a +0 -0
- scipy/io/_fast_matrix_market/_fmm_core.cp311-win_amd64.pyd +0 -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.cp311-win_amd64.dll.a +0 -0
- scipy/io/_test_fortran.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/io/matlab/_mio5_utils.cp311-win_amd64.pyd +0 -0
- scipy/io/matlab/_mio_utils.cp311-win_amd64.dll.a +0 -0
- scipy/io/matlab/_mio_utils.cp311-win_amd64.pyd +0 -0
- scipy/io/matlab/_miobase.py +4 -1
- scipy/io/matlab/_streams.cp311-win_amd64.dll.a +0 -0
- scipy/io/matlab/_streams.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_cythonized_array_utils.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_decomp_interpolative.cp311-win_amd64.pyd +0 -0
- scipy/linalg/_decomp_ldl.py +4 -1
- scipy/linalg/_decomp_lu.py +18 -6
- scipy/linalg/_decomp_lu_cython.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_decomp_lu_cython.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_decomp_update.cp311-win_amd64.pyd +0 -0
- scipy/linalg/_expm_frechet.py +4 -0
- scipy/linalg/_fblas.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_fblas.cp311-win_amd64.pyd +0 -0
- scipy/linalg/_flapack.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_flapack.cp311-win_amd64.pyd +0 -0
- scipy/linalg/_linalg_pythran.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_linalg_pythran.cp311-win_amd64.pyd +0 -0
- scipy/linalg/_matfuncs.py +187 -4
- scipy/linalg/_matfuncs_expm.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_matfuncs_expm.cp311-win_amd64.pyd +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_amd64.pyd +0 -0
- scipy/linalg/_matfuncs_sqrtm.py +1 -99
- scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_amd64.pyd +0 -0
- scipy/linalg/_procrustes.py +2 -0
- scipy/linalg/_sketches.py +17 -6
- scipy/linalg/_solve_toeplitz.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/_solve_toeplitz.cp311-win_amd64.pyd +0 -0
- scipy/linalg/_solvers.py +7 -2
- scipy/linalg/_special_matrices.py +26 -36
- scipy/linalg/cython_blas.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/cython_blas.cp311-win_amd64.pyd +0 -0
- scipy/linalg/cython_lapack.cp311-win_amd64.dll.a +0 -0
- scipy/linalg/cython_lapack.cp311-win_amd64.pyd +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/_ctest.cp311-win_amd64.dll.a +0 -0
- scipy/ndimage/_ctest.cp311-win_amd64.pyd +0 -0
- scipy/ndimage/_cytest.cp311-win_amd64.dll.a +0 -0
- scipy/ndimage/_cytest.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/ndimage/_nd_image.cp311-win_amd64.pyd +0 -0
- scipy/ndimage/_ni_docstrings.py +5 -1
- scipy/ndimage/_ni_label.cp311-win_amd64.dll.a +0 -0
- scipy/ndimage/_ni_label.cp311-win_amd64.pyd +0 -0
- scipy/ndimage/_ni_support.py +1 -5
- scipy/ndimage/_rank_filter_1d.cp311-win_amd64.dll.a +0 -0
- scipy/ndimage/_rank_filter_1d.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/odr/__odrpack.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_basinhopping.py +13 -7
- scipy/optimize/_bglu_dense.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_bglu_dense.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_direct.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_dual_annealing.py +1 -1
- scipy/optimize/_elementwise.py +1 -4
- scipy/optimize/_group_columns.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_group_columns.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_highspy/_core.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_highspy/_core.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_highspy/_highs_options.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_highspy/_highs_options.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_lbfgsb.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_lbfgsb.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_lsap.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_lsq/common.py +3 -3
- scipy/optimize/_lsq/dogbox.py +16 -2
- scipy/optimize/_lsq/givens_elimination.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_lsq/givens_elimination.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_minpack.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_minpack_py.py +21 -14
- scipy/optimize/_moduleTNC.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_moduleTNC.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_pava_pybind.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_slsqplib.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_spectral.py +1 -1
- scipy/optimize/_tnc.py +8 -1
- scipy/optimize/_trlib/_trlib.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_trlib/_trlib.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_zeros.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_zeros_py.py +97 -17
- scipy/optimize/cython_optimize/_zeros.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/cython_optimize/_zeros.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/signal/_max_len_seq_inner.cp311-win_amd64.pyd +0 -0
- scipy/signal/_peak_finding_utils.cp311-win_amd64.dll.a +0 -0
- scipy/signal/_peak_finding_utils.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/signal/_sigtools.cp311-win_amd64.pyd +0 -0
- scipy/signal/_sosfilt.cp311-win_amd64.dll.a +0 -0
- scipy/signal/_sosfilt.cp311-win_amd64.pyd +0 -0
- scipy/signal/_spectral_py.py +230 -50
- scipy/signal/_spline.cp311-win_amd64.dll.a +0 -0
- scipy/signal/_spline.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/signal/_upfirdn_apply.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/_csparsetools.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/_sparsetools.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_flow.cp311-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_matching.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_matching.cp311-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cp311-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_reordering.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_reordering.cp311-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_shortest_path.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_shortest_path.cp311-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_tools.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_tools.cp311-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_traversal.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_traversal.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_dsolve/_superlu.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_eigen/arpack/_arpack.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_propack/_cpropack.cp311-win_amd64.pyd +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cp311-win_amd64.pyd +0 -0
- scipy/sparse/linalg/_propack/_spropack.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_propack/_spropack.cp311-win_amd64.pyd +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cp311-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/spatial/_ckdtree.cp311-win_amd64.pyd +0 -0
- scipy/spatial/_distance_pybind.cp311-win_amd64.dll.a +0 -0
- scipy/spatial/_distance_pybind.cp311-win_amd64.pyd +0 -0
- scipy/spatial/_distance_wrap.cp311-win_amd64.dll.a +0 -0
- scipy/spatial/_distance_wrap.cp311-win_amd64.pyd +0 -0
- scipy/spatial/_hausdorff.cp311-win_amd64.dll.a +0 -0
- scipy/spatial/_hausdorff.cp311-win_amd64.pyd +0 -0
- scipy/spatial/_qhull.cp311-win_amd64.dll.a +0 -0
- scipy/spatial/_qhull.cp311-win_amd64.pyd +0 -0
- scipy/spatial/_voronoi.cp311-win_amd64.dll.a +0 -0
- scipy/spatial/_voronoi.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/spatial/transform/_rigid_transform.cp311-win_amd64.pyd +0 -0
- scipy/spatial/transform/_rotation.cp311-win_amd64.dll.a +0 -0
- scipy/spatial/transform/_rotation.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/special/_comb.cp311-win_amd64.pyd +0 -0
- scipy/special/_ellip_harm_2.cp311-win_amd64.dll.a +0 -0
- scipy/special/_ellip_harm_2.cp311-win_amd64.pyd +0 -0
- scipy/special/_gufuncs.cp311-win_amd64.dll.a +0 -0
- scipy/special/_gufuncs.cp311-win_amd64.pyd +0 -0
- scipy/special/_logsumexp.py +67 -58
- scipy/special/_orthogonal.pyi +1 -1
- scipy/special/_specfun.cp311-win_amd64.dll.a +0 -0
- scipy/special/_specfun.cp311-win_amd64.pyd +0 -0
- scipy/special/_special_ufuncs.cp311-win_amd64.dll.a +0 -0
- scipy/special/_special_ufuncs.cp311-win_amd64.pyd +0 -0
- scipy/special/_spherical_bessel.py +4 -4
- scipy/special/_support_alternative_backends.py +212 -119
- scipy/special/_test_internal.cp311-win_amd64.dll.a +0 -0
- scipy/special/_test_internal.cp311-win_amd64.pyd +0 -0
- scipy/special/_testutils.py +4 -4
- scipy/special/_ufuncs.cp311-win_amd64.dll.a +0 -0
- scipy/special/_ufuncs.cp311-win_amd64.pyd +0 -0
- scipy/special/_ufuncs.pyi +1 -0
- scipy/special/_ufuncs.pyx +215 -1400
- scipy/special/_ufuncs_cxx.cp311-win_amd64.dll.a +0 -0
- scipy/special/_ufuncs_cxx.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/special/cython_special.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_ansari_swilk_statistics.cp311-win_amd64.pyd +0 -0
- scipy/stats/_axis_nan_policy.py +5 -12
- scipy/stats/_biasedurn.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_biasedurn.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_levy_stable/levyst.cp311-win_amd64.pyd +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.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_qmc_cy.cp311-win_amd64.pyd +0 -0
- scipy/stats/_qmvnt.py +16 -95
- scipy/stats/_qmvnt_cy.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_qmvnt_cy.cp311-win_amd64.pyd +0 -0
- scipy/stats/_quantile.py +335 -0
- scipy/stats/_rcont/rcont.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_rcont/rcont.cp311-win_amd64.pyd +0 -0
- scipy/stats/_resampling.py +4 -29
- scipy/stats/_sampling.py +1 -1
- scipy/stats/_sobol.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_sobol.cp311-win_amd64.pyd +0 -0
- scipy/stats/_stats.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_stats.cp311-win_amd64.pyd +0 -0
- scipy/stats/_stats_mstats_common.py +21 -2
- scipy/stats/_stats_py.py +550 -476
- scipy/stats/_stats_pythran.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_stats_pythran.cp311-win_amd64.pyd +0 -0
- scipy/stats/_unuran/unuran_wrapper.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_unuran/unuran_wrapper.cp311-win_amd64.pyd +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.16.0rc2.dist-info/DELVEWHEEL +2 -0
- {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 +685 -693
- scipy/_lib/array_api_extra/_funcs.py +0 -484
- scipy/_lib/array_api_extra/_typing.py +0 -8
- scipy/interpolate/_bspl.cp311-win_amd64.dll.a +0 -0
- scipy/interpolate/_bspl.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_cobyla.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_cobyla.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_cython_nnls.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_cython_nnls.cp311-win_amd64.pyd +0 -0
- scipy/optimize/_slsqp.cp311-win_amd64.dll.a +0 -0
- scipy/optimize/_slsqp.cp311-win_amd64.pyd +0 -0
- scipy/spatial/qhull_src/COPYING.txt +0 -38
- scipy/special/libsf_error_state.dll +0 -0
- scipy/special/libsf_error_state.dll.a +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.cp311-win_amd64.dll.a +0 -0
- scipy/stats/_mvn.cp311-win_amd64.pyd +0 -0
- scipy-1.15.3.dist-info/DELVEWHEEL +0 -2
- /scipy-1.15.3-cp311-cp311-win_amd64.whl → /scipy-1.16.0rc2-cp311-cp311-win_amd64.whl +0 -0
- {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/WHEEL +0 -0
scipy/optimize/_zeros_py.py
CHANGED
@@ -317,8 +317,9 @@ def newton(func, x0, fprime=None, args=(), tol=1.48e-8, maxiter=50,
|
|
317
317
|
msg = "Derivative was zero."
|
318
318
|
if disp:
|
319
319
|
msg += (
|
320
|
-
" Failed to converge after
|
321
|
-
|
320
|
+
f" Failed to converge after {itr + 1} iterations,"
|
321
|
+
f" value is {p0}."
|
322
|
+
)
|
322
323
|
raise RuntimeError(msg)
|
323
324
|
warnings.warn(msg, RuntimeWarning, stacklevel=2)
|
324
325
|
return _results_select(
|
@@ -365,8 +366,9 @@ def newton(func, x0, fprime=None, args=(), tol=1.48e-8, maxiter=50,
|
|
365
366
|
msg = f"Tolerance of {p1 - p0} reached."
|
366
367
|
if disp:
|
367
368
|
msg += (
|
368
|
-
" Failed to converge after
|
369
|
-
|
369
|
+
f" Failed to converge after {itr + 1} iterations,"
|
370
|
+
f" value is {p1}."
|
371
|
+
)
|
370
372
|
raise RuntimeError(msg)
|
371
373
|
warnings.warn(msg, RuntimeWarning, stacklevel=2)
|
372
374
|
p = (p1 + p0) / 2.0
|
@@ -386,8 +388,7 @@ def newton(func, x0, fprime=None, args=(), tol=1.48e-8, maxiter=50,
|
|
386
388
|
funcalls += 1
|
387
389
|
|
388
390
|
if disp:
|
389
|
-
msg =
|
390
|
-
% (itr + 1, p))
|
391
|
+
msg = f"Failed to converge after {itr + 1} iterations, value is {p}."
|
391
392
|
raise RuntimeError(msg)
|
392
393
|
|
393
394
|
return _results_select(full_output, (p, funcalls, itr + 1, _ECONVERR), method)
|
@@ -512,11 +513,11 @@ def bisect(f, a, b, args=(),
|
|
512
513
|
b : scalar
|
513
514
|
The other end of the bracketing interval [a,b].
|
514
515
|
xtol : number, optional
|
515
|
-
The computed root ``x0`` will satisfy ``np.
|
516
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
516
517
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root. The
|
517
518
|
parameter must be positive.
|
518
519
|
rtol : number, optional
|
519
|
-
The computed root ``x0`` will satisfy ``np.
|
520
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
520
521
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root. The
|
521
522
|
parameter cannot be smaller than its default value of
|
522
523
|
``4*np.finfo(float).eps``.
|
@@ -543,6 +544,22 @@ def bisect(f, a, b, args=(),
|
|
543
544
|
Object containing information about the convergence. In particular,
|
544
545
|
``r.converged`` is True if the routine converged.
|
545
546
|
|
547
|
+
Notes
|
548
|
+
-----
|
549
|
+
As mentioned in the parameter documentation, the computed root ``x0`` will
|
550
|
+
satisfy ``np.isclose(x, x0, atol=xtol, rtol=rtol)``, where ``x`` is the
|
551
|
+
exact root. In equation form, this terminating condition is ``abs(x - x0)
|
552
|
+
<= xtol + rtol * abs(x0)``.
|
553
|
+
|
554
|
+
The default value ``xtol=2e-12`` may lead to surprising behavior if one
|
555
|
+
expects `bisect` to always compute roots with relative error near machine
|
556
|
+
precision. Care should be taken to select `xtol` for the use case at hand.
|
557
|
+
Setting ``xtol=5e-324``, the smallest subnormal number, will ensure the
|
558
|
+
highest level of accuracy. Larger values of `xtol` may be useful for saving
|
559
|
+
function evaluations when a root is at or near zero in applications where
|
560
|
+
the tiny absolute differences available between floating point numbers near
|
561
|
+
zero are not meaningful.
|
562
|
+
|
546
563
|
Examples
|
547
564
|
--------
|
548
565
|
|
@@ -564,6 +581,7 @@ def bisect(f, a, b, args=(),
|
|
564
581
|
brentq, brenth, bisect, newton
|
565
582
|
fixed_point : scalar fixed-point finder
|
566
583
|
fsolve : n-dimensional root-finding
|
584
|
+
elementwise.find_root : efficient elementwise 1-D root-finder
|
567
585
|
|
568
586
|
"""
|
569
587
|
if not isinstance(args, tuple):
|
@@ -594,11 +612,11 @@ def ridder(f, a, b, args=(),
|
|
594
612
|
b : scalar
|
595
613
|
The other end of the bracketing interval [a,b].
|
596
614
|
xtol : number, optional
|
597
|
-
The computed root ``x0`` will satisfy ``np.
|
615
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
598
616
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root. The
|
599
617
|
parameter must be positive.
|
600
618
|
rtol : number, optional
|
601
|
-
The computed root ``x0`` will satisfy ``np.
|
619
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
602
620
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root. The
|
603
621
|
parameter cannot be smaller than its default value of
|
604
622
|
``4*np.finfo(float).eps``.
|
@@ -629,6 +647,7 @@ def ridder(f, a, b, args=(),
|
|
629
647
|
--------
|
630
648
|
brentq, brenth, bisect, newton : 1-D root-finding
|
631
649
|
fixed_point : scalar fixed-point finder
|
650
|
+
elementwise.find_root : efficient elementwise 1-D root-finder
|
632
651
|
|
633
652
|
Notes
|
634
653
|
-----
|
@@ -641,6 +660,20 @@ def ridder(f, a, b, args=(),
|
|
641
660
|
The routine used here diverges slightly from standard presentations in
|
642
661
|
order to be a bit more careful of tolerance.
|
643
662
|
|
663
|
+
As mentioned in the parameter documentation, the computed root ``x0`` will
|
664
|
+
satisfy ``np.isclose(x, x0, atol=xtol, rtol=rtol)``, where ``x`` is the
|
665
|
+
exact root. In equation form, this terminating condition is ``abs(x - x0)
|
666
|
+
<= xtol + rtol * abs(x0)``.
|
667
|
+
|
668
|
+
The default value ``xtol=2e-12`` may lead to surprising behavior if one
|
669
|
+
expects `ridder` to always compute roots with relative error near machine
|
670
|
+
precision. Care should be taken to select `xtol` for the use case at hand.
|
671
|
+
Setting ``xtol=5e-324``, the smallest subnormal number, will ensure the
|
672
|
+
highest level of accuracy. Larger values of `xtol` may be useful for saving
|
673
|
+
function evaluations when a root is at or near zero in applications where
|
674
|
+
the tiny absolute differences available between floating point numbers near
|
675
|
+
zero are not meaningful.
|
676
|
+
|
644
677
|
References
|
645
678
|
----------
|
646
679
|
.. [Ridders1979]
|
@@ -709,13 +742,13 @@ def brentq(f, a, b, args=(),
|
|
709
742
|
b : scalar
|
710
743
|
The other end of the bracketing interval :math:`[a, b]`.
|
711
744
|
xtol : number, optional
|
712
|
-
The computed root ``x0`` will satisfy ``np.
|
745
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
713
746
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root. The
|
714
747
|
parameter must be positive. For nice functions, Brent's
|
715
748
|
method will often satisfy the above condition with ``xtol/2``
|
716
749
|
and ``rtol/2``. [Brent1973]_
|
717
750
|
rtol : number, optional
|
718
|
-
The computed root ``x0`` will satisfy ``np.
|
751
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
719
752
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root. The
|
720
753
|
parameter cannot be smaller than its default value of
|
721
754
|
``4*np.finfo(float).eps``. For nice functions, Brent's
|
@@ -754,11 +787,26 @@ def brentq(f, a, b, args=(),
|
|
754
787
|
fsolve : N-D root-finding
|
755
788
|
brenth, ridder, bisect, newton : 1-D root-finding
|
756
789
|
fixed_point : scalar fixed-point finder
|
790
|
+
elementwise.find_root : efficient elementwise 1-D root-finder
|
757
791
|
|
758
792
|
Notes
|
759
793
|
-----
|
760
794
|
`f` must be continuous. f(a) and f(b) must have opposite signs.
|
761
795
|
|
796
|
+
As mentioned in the parameter documentation, the computed root ``x0`` will
|
797
|
+
satisfy ``np.isclose(x, x0, atol=xtol, rtol=rtol)``, where ``x`` is the
|
798
|
+
exact root. In equation form, this terminating condition is ``abs(x - x0)
|
799
|
+
<= xtol + rtol * abs(x0)``.
|
800
|
+
|
801
|
+
The default value ``xtol=2e-12`` may lead to surprising behavior if one
|
802
|
+
expects `brentq` to always compute roots with relative error near machine
|
803
|
+
precision. Care should be taken to select `xtol` for the use case at hand.
|
804
|
+
Setting ``xtol=5e-324``, the smallest subnormal number, will ensure the
|
805
|
+
highest level of accuracy. Larger values of `xtol` may be useful for saving
|
806
|
+
function evaluations when a root is at or near zero in applications where
|
807
|
+
the tiny absolute differences available between floating point numbers near
|
808
|
+
zero are not meaningful.
|
809
|
+
|
762
810
|
References
|
763
811
|
----------
|
764
812
|
.. [Brent1973]
|
@@ -827,13 +875,13 @@ def brenth(f, a, b, args=(),
|
|
827
875
|
b : scalar
|
828
876
|
The other end of the bracketing interval [a,b].
|
829
877
|
xtol : number, optional
|
830
|
-
The computed root ``x0`` will satisfy ``np.
|
878
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
831
879
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root. The
|
832
880
|
parameter must be positive. As with `brentq`, for nice
|
833
881
|
functions the method will often satisfy the above condition
|
834
882
|
with ``xtol/2`` and ``rtol/2``.
|
835
883
|
rtol : number, optional
|
836
|
-
The computed root ``x0`` will satisfy ``np.
|
884
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
837
885
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root. The
|
838
886
|
parameter cannot be smaller than its default value of
|
839
887
|
``4*np.finfo(float).eps``. As with `brentq`, for nice functions
|
@@ -872,6 +920,23 @@ def brenth(f, a, b, args=(),
|
|
872
920
|
fsolve : N-D root-finding
|
873
921
|
brentq, ridder, bisect, newton : 1-D root-finding
|
874
922
|
fixed_point : scalar fixed-point finder
|
923
|
+
elementwise.find_root : efficient elementwise 1-D root-finder
|
924
|
+
|
925
|
+
Notes
|
926
|
+
-----
|
927
|
+
As mentioned in the parameter documentation, the computed root ``x0`` will
|
928
|
+
satisfy ``np.isclose(x, x0, atol=xtol, rtol=rtol)``, where ``x`` is the
|
929
|
+
exact root. In equation form, this terminating condition is ``abs(x - x0)
|
930
|
+
<= xtol + rtol * abs(x0)``.
|
931
|
+
|
932
|
+
The default value ``xtol=2e-12`` may lead to surprising behavior if one
|
933
|
+
expects `brenth` to always compute roots with relative error near machine
|
934
|
+
precision. Care should be taken to select `xtol` for the use case at hand.
|
935
|
+
Setting ``xtol=5e-324``, the smallest subnormal number, will ensure the
|
936
|
+
highest level of accuracy. Larger values of `xtol` may be useful for saving
|
937
|
+
function evaluations when a root is at or near zero in applications where
|
938
|
+
the tiny absolute differences available between floating point numbers near
|
939
|
+
zero are not meaningful.
|
875
940
|
|
876
941
|
References
|
877
942
|
----------
|
@@ -1089,7 +1154,7 @@ class TOMS748Solver:
|
|
1089
1154
|
self.k = max(k, self._K_MIN)
|
1090
1155
|
# Noisily replace a high value of k with self._K_MAX
|
1091
1156
|
if self.k > self._K_MAX:
|
1092
|
-
msg = "toms748: Overriding k:
|
1157
|
+
msg = f"toms748: Overriding k: ->{self._K_MAX}"
|
1093
1158
|
warnings.warn(msg, RuntimeWarning, stacklevel=3)
|
1094
1159
|
self.k = self._K_MAX
|
1095
1160
|
|
@@ -1291,11 +1356,11 @@ def toms748(f, a, b, args=(), k=1,
|
|
1291
1356
|
The number of Newton quadratic steps to perform each
|
1292
1357
|
iteration. ``k>=1``.
|
1293
1358
|
xtol : scalar, optional
|
1294
|
-
The computed root ``x0`` will satisfy ``np.
|
1359
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
1295
1360
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root. The
|
1296
1361
|
parameter must be positive.
|
1297
1362
|
rtol : scalar, optional
|
1298
|
-
The computed root ``x0`` will satisfy ``np.
|
1363
|
+
The computed root ``x0`` will satisfy ``np.isclose(x, x0,
|
1299
1364
|
atol=xtol, rtol=rtol)``, where ``x`` is the exact root.
|
1300
1365
|
maxiter : int, optional
|
1301
1366
|
If convergence is not achieved in `maxiter` iterations, an error is
|
@@ -1321,6 +1386,7 @@ def toms748(f, a, b, args=(), k=1,
|
|
1321
1386
|
--------
|
1322
1387
|
brentq, brenth, ridder, bisect, newton
|
1323
1388
|
fsolve : find roots in N dimensions.
|
1389
|
+
elementwise.find_root : efficient elementwise 1-D root-finder
|
1324
1390
|
|
1325
1391
|
Notes
|
1326
1392
|
-----
|
@@ -1343,6 +1409,20 @@ def toms748(f, a, b, args=(), k=1,
|
|
1343
1409
|
the kth root of ``(3k-2)``, hence ``k=1`` or ``k=2`` are
|
1344
1410
|
usually appropriate.
|
1345
1411
|
|
1412
|
+
As mentioned in the parameter documentation, the computed root ``x0`` will
|
1413
|
+
satisfy ``np.isclose(x, x0, atol=xtol, rtol=rtol)``, where ``x`` is the
|
1414
|
+
exact root. In equation form, this terminating condition is ``abs(x - x0)
|
1415
|
+
<= xtol + rtol * abs(x0)``.
|
1416
|
+
|
1417
|
+
The default value ``xtol=2e-12`` may lead to surprising behavior if one
|
1418
|
+
expects `toms748` to always compute roots with relative error near machine
|
1419
|
+
precision. Care should be taken to select `xtol` for the use case at hand.
|
1420
|
+
Setting ``xtol=5e-324``, the smallest subnormal number, will ensure the
|
1421
|
+
highest level of accuracy. Larger values of `xtol` may be useful for saving
|
1422
|
+
function evaluations when a root is at or near zero in applications where
|
1423
|
+
the tiny absolute differences available between floating point numbers near
|
1424
|
+
zero are not meaningful.
|
1425
|
+
|
1346
1426
|
References
|
1347
1427
|
----------
|
1348
1428
|
.. [APS1995]
|
Binary file
|
Binary file
|
scipy/optimize/slsqp.py
CHANGED
@@ -210,7 +210,7 @@ class TestBasinHopping:
|
|
210
210
|
niter=self.niter, disp=self.disp)
|
211
211
|
assert_almost_equal(res.x, self.sol[i], self.tol)
|
212
212
|
|
213
|
-
@pytest.mark.fail_slow(
|
213
|
+
@pytest.mark.fail_slow(40)
|
214
214
|
def test_all_nograd_minimizers(self):
|
215
215
|
# Test 2-D minimizations without gradient. Newton-CG requires jac=True,
|
216
216
|
# so not included here.
|
@@ -11,7 +11,7 @@ from scipy.optimize import differential_evolution, OptimizeResult
|
|
11
11
|
from scipy.optimize._constraints import (Bounds, NonlinearConstraint,
|
12
12
|
LinearConstraint)
|
13
13
|
from scipy.optimize import rosen, minimize
|
14
|
-
from scipy.sparse import
|
14
|
+
from scipy.sparse import csr_array
|
15
15
|
from scipy import stats
|
16
16
|
|
17
17
|
import numpy as np
|
@@ -965,7 +965,7 @@ class TestDifferentialEvolutionSolver:
|
|
965
965
|
violations.append(pc.violation(x))
|
966
966
|
np.testing.assert_allclose(pc.violation(xs.T), np.array(violations).T)
|
967
967
|
|
968
|
-
pc = _ConstraintWrapper(LinearConstraint(
|
968
|
+
pc = _ConstraintWrapper(LinearConstraint(csr_array(A), -np.inf, 0),
|
969
969
|
x0)
|
970
970
|
assert (pc.violation(x0) > 0).any()
|
971
971
|
assert (pc.violation([-10, 2, -10, 4]) == 0).all()
|
@@ -1070,10 +1070,10 @@ class TestDifferentialEvolutionSolver:
|
|
1070
1070
|
assert_(np.all(res.x <= np.array(bounds)[:, 1]))
|
1071
1071
|
|
1072
1072
|
# now repeat the same solve, using the same overall constraints,
|
1073
|
-
# but using a sparse
|
1073
|
+
# but using a sparse array for the LinearConstraint instead of an
|
1074
1074
|
# array
|
1075
1075
|
|
1076
|
-
L = LinearConstraint(
|
1076
|
+
L = LinearConstraint(csr_array(A), -np.inf, b)
|
1077
1077
|
|
1078
1078
|
# using a lower popsize to speed the test up
|
1079
1079
|
res = differential_evolution(
|
@@ -1,13 +1,15 @@
|
|
1
1
|
"""
|
2
2
|
Unit test for Linear Programming via Simplex Algorithm.
|
3
3
|
"""
|
4
|
+
from copy import deepcopy
|
5
|
+
from datetime import date
|
6
|
+
|
4
7
|
import numpy as np
|
5
8
|
from numpy.testing import assert_, assert_allclose, assert_equal
|
9
|
+
from numpy.exceptions import VisibleDeprecationWarning
|
6
10
|
from pytest import raises as assert_raises
|
11
|
+
|
7
12
|
from scipy.optimize._linprog_util import _clean_inputs, _LPProblem
|
8
|
-
from scipy._lib._util import VisibleDeprecationWarning
|
9
|
-
from copy import deepcopy
|
10
|
-
from datetime import date
|
11
13
|
|
12
14
|
|
13
15
|
def test_aliasing():
|
@@ -3,13 +3,16 @@ from itertools import product
|
|
3
3
|
|
4
4
|
import numpy as np
|
5
5
|
from numpy.testing import assert_allclose, assert_equal, assert_
|
6
|
+
import pytest
|
6
7
|
from pytest import raises as assert_raises
|
7
8
|
|
8
|
-
from scipy.
|
9
|
+
from scipy._lib._util import MapWrapper, _ScalarFunctionWrapper
|
10
|
+
from scipy.sparse import csr_array, csc_array, lil_array
|
9
11
|
|
10
12
|
from scipy.optimize._numdiff import (
|
11
13
|
_adjust_scheme_to_bounds, approx_derivative, check_derivative,
|
12
14
|
group_columns, _eps_for_method, _compute_absolute_step)
|
15
|
+
from scipy.optimize import rosen
|
13
16
|
|
14
17
|
|
15
18
|
def test_group_columns():
|
@@ -22,7 +25,7 @@ def test_group_columns():
|
|
22
25
|
[0, 0, 0, 0, 1, 1],
|
23
26
|
[0, 0, 0, 0, 0, 0]
|
24
27
|
]
|
25
|
-
for transform in [np.asarray,
|
28
|
+
for transform in [np.asarray, csr_array, csc_array, lil_array]:
|
26
29
|
A = transform(structure)
|
27
30
|
order = np.arange(6)
|
28
31
|
groups_true = np.array([0, 1, 2, 0, 1, 2])
|
@@ -267,16 +270,52 @@ class TestApproxDerivativesDense:
|
|
267
270
|
|
268
271
|
def test_scalar_vector(self):
|
269
272
|
x0 = 0.5
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
+
with MapWrapper(2) as mapper:
|
274
|
+
jac_diff_2 = approx_derivative(self.fun_scalar_vector, x0,
|
275
|
+
method='2-point', workers=mapper)
|
276
|
+
jac_diff_3 = approx_derivative(self.fun_scalar_vector, x0, workers=map)
|
273
277
|
jac_diff_4 = approx_derivative(self.fun_scalar_vector, x0,
|
274
|
-
method='cs')
|
278
|
+
method='cs', workers=None)
|
275
279
|
jac_true = self.jac_scalar_vector(np.atleast_1d(x0))
|
276
280
|
assert_allclose(jac_diff_2, jac_true, rtol=1e-6)
|
277
281
|
assert_allclose(jac_diff_3, jac_true, rtol=1e-9)
|
278
282
|
assert_allclose(jac_diff_4, jac_true, rtol=1e-12)
|
279
283
|
|
284
|
+
@pytest.mark.fail_slow(5.0)
|
285
|
+
def test_workers_evaluations_and_nfev(self):
|
286
|
+
# check that nfev consumed by approx_derivative is tracked properly
|
287
|
+
# and that parallel evaluation is same as series
|
288
|
+
x0 = [0.5, 1.5, 2.0]
|
289
|
+
with MapWrapper(2) as mapper:
|
290
|
+
md2, mdct2 = approx_derivative(rosen, x0,
|
291
|
+
method='2-point', workers=mapper,
|
292
|
+
full_output=True)
|
293
|
+
md3, mdct3 = approx_derivative(rosen, x0,
|
294
|
+
workers=mapper, full_output=True)
|
295
|
+
# supply a number for workers. This is not normally recommended
|
296
|
+
# for upstream workers as setting up processes incurs a large overhead
|
297
|
+
md4, mdct4 = approx_derivative(rosen, x0,
|
298
|
+
method='cs', workers=2,
|
299
|
+
full_output=True)
|
300
|
+
|
301
|
+
sfr = _ScalarFunctionWrapper(rosen)
|
302
|
+
d2, dct2 = approx_derivative(sfr, x0, method='2-point', full_output=True)
|
303
|
+
assert_equal(dct2['nfev'], sfr.nfev)
|
304
|
+
sfr.nfev = 0
|
305
|
+
d3, dct3 = approx_derivative(sfr, x0, full_output=True)
|
306
|
+
assert_equal(dct3['nfev'], sfr.nfev)
|
307
|
+
sfr.nfev = 0
|
308
|
+
d4, dct4 = approx_derivative(sfr, x0, method='cs', full_output=True)
|
309
|
+
assert_equal(dct4['nfev'], sfr.nfev)
|
310
|
+
|
311
|
+
assert_equal(mdct2['nfev'], dct2['nfev'])
|
312
|
+
assert_equal(mdct3['nfev'], dct3['nfev'])
|
313
|
+
assert_equal(mdct4['nfev'], dct4['nfev'])
|
314
|
+
# also check that gradients are equivalent
|
315
|
+
assert_equal(md2, d2)
|
316
|
+
assert_equal(md3, d3)
|
317
|
+
assert_equal(md4, d4)
|
318
|
+
|
280
319
|
def test_vector_scalar(self):
|
281
320
|
x0 = np.array([100.0, -0.5])
|
282
321
|
jac_diff_2 = approx_derivative(self.fun_vector_scalar, x0,
|
@@ -308,8 +347,9 @@ class TestApproxDerivativesDense:
|
|
308
347
|
jac_diff_2 = approx_derivative(self.fun_vector_vector, x0,
|
309
348
|
method='2-point')
|
310
349
|
jac_diff_3 = approx_derivative(self.fun_vector_vector, x0)
|
311
|
-
|
312
|
-
|
350
|
+
with MapWrapper(2) as mapper:
|
351
|
+
jac_diff_4 = approx_derivative(self.fun_vector_vector, x0,
|
352
|
+
method='cs', workers=mapper)
|
313
353
|
jac_true = self.jac_vector_vector(x0)
|
314
354
|
assert_allclose(jac_diff_2, jac_true, rtol=1e-5)
|
315
355
|
assert_allclose(jac_diff_3, jac_true, rtol=1e-6)
|
@@ -569,6 +609,7 @@ class TestApproxDerivativeSparse:
|
|
569
609
|
|
570
610
|
return A
|
571
611
|
|
612
|
+
@pytest.mark.fail_slow(5)
|
572
613
|
def test_all(self):
|
573
614
|
A = self.structure(self.n)
|
574
615
|
order = np.arange(self.n)
|
@@ -576,19 +617,22 @@ class TestApproxDerivativeSparse:
|
|
576
617
|
np.random.shuffle(order)
|
577
618
|
groups_2 = group_columns(A, order)
|
578
619
|
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
620
|
+
with MapWrapper(2) as mapper:
|
621
|
+
for method, groups, l, u, mf in product(
|
622
|
+
['2-point', '3-point', 'cs'], [groups_1, groups_2],
|
623
|
+
[-np.inf, self.lb], [np.inf, self.ub], [map, mapper]):
|
624
|
+
J = approx_derivative(self.fun, self.x0, method=method,
|
625
|
+
bounds=(l, u), sparsity=(A, groups),
|
626
|
+
workers=mf)
|
627
|
+
assert_(isinstance(J, csr_array))
|
628
|
+
assert_allclose(J.toarray(), self.J_true, rtol=1e-6)
|
629
|
+
|
630
|
+
rel_step = np.full_like(self.x0, 1e-8)
|
631
|
+
rel_step[::2] *= -1
|
632
|
+
J = approx_derivative(self.fun, self.x0, method=method,
|
633
|
+
rel_step=rel_step, sparsity=(A, groups),
|
634
|
+
workers=mf)
|
635
|
+
assert_allclose(J.toarray(), self.J_true, rtol=1e-5)
|
592
636
|
|
593
637
|
def test_no_precomputed_groups(self):
|
594
638
|
A = self.structure(self.n)
|
@@ -607,7 +651,7 @@ class TestApproxDerivativeSparse:
|
|
607
651
|
|
608
652
|
def test_check_derivative(self):
|
609
653
|
def jac(x):
|
610
|
-
return
|
654
|
+
return csr_array(self.jac(x))
|
611
655
|
|
612
656
|
accuracy = check_derivative(self.fun, jac, self.x0,
|
613
657
|
bounds=(self.lb, self.ub))
|
@@ -18,7 +18,7 @@ from scipy.optimize._remove_redundancy import _remove_redundancy_pivot_dense
|
|
18
18
|
from scipy.optimize._remove_redundancy import _remove_redundancy_pivot_sparse
|
19
19
|
from scipy.optimize._remove_redundancy import _remove_redundancy_id
|
20
20
|
|
21
|
-
from scipy.sparse import
|
21
|
+
from scipy.sparse import csc_array
|
22
22
|
|
23
23
|
|
24
24
|
def setup_module():
|
@@ -223,6 +223,6 @@ class TestRRID(RRCommonTests):
|
|
223
223
|
|
224
224
|
class TestRRPivotSparse(RRCommonTests):
|
225
225
|
def rr(self, A, b):
|
226
|
-
rr_res = _remove_redundancy_pivot_sparse(
|
226
|
+
rr_res = _remove_redundancy_pivot_sparse(csc_array(A), b)
|
227
227
|
A1, b1, status, message = rr_res
|
228
228
|
return A1.toarray(), b1, status, message
|
@@ -26,7 +26,7 @@ class StructTestFunction:
|
|
26
26
|
def wrap_constraints(g):
|
27
27
|
cons = []
|
28
28
|
if g is not None:
|
29
|
-
if not isinstance(g,
|
29
|
+
if not isinstance(g, tuple | list):
|
30
30
|
g = (g,)
|
31
31
|
else:
|
32
32
|
pass
|
@@ -856,6 +856,14 @@ class TestShgoArguments:
|
|
856
856
|
assert_allclose(res.fun, ref.fun)
|
857
857
|
assert_allclose(res.x, ref.x, atol=1e-15)
|
858
858
|
|
859
|
+
# Testing the passing of jac via options dict
|
860
|
+
res = shgo(func, bounds=bounds, sampling_method="sobol",
|
861
|
+
minimizer_kwargs={'method': 'SLSQP'},
|
862
|
+
options={'jac': True})
|
863
|
+
assert res.success
|
864
|
+
assert_allclose(res.fun, ref.fun)
|
865
|
+
assert_allclose(res.x, ref.x, atol=1e-15)
|
866
|
+
|
859
867
|
@pytest.mark.parametrize('derivative', ['jac', 'hess', 'hessp'])
|
860
868
|
def test_21_2_derivative_options(self, derivative):
|
861
869
|
"""shgo used to raise an error when passing `options` with 'jac'
|