scipy 1.16.1__cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.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 +161 -0
- scipy/__init__.py +138 -0
- scipy/_cyutility.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/_distributor_init.py +18 -0
- scipy/_lib/__init__.py +14 -0
- scipy/_lib/_array_api.py +931 -0
- scipy/_lib/_array_api_compat_vendor.py +9 -0
- scipy/_lib/_array_api_no_0d.py +103 -0
- scipy/_lib/_bunch.py +229 -0
- scipy/_lib/_ccallback.py +251 -0
- scipy/_lib/_ccallback_c.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/_lib/_disjoint_set.py +254 -0
- scipy/_lib/_docscrape.py +761 -0
- scipy/_lib/_elementwise_iterative_method.py +346 -0
- scipy/_lib/_fpumode.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/_lib/_gcutils.py +105 -0
- scipy/_lib/_pep440.py +487 -0
- scipy/_lib/_sparse.py +41 -0
- scipy/_lib/_test_ccallback.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/_lib/_test_deprecation_call.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/_lib/_test_deprecation_def.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/_lib/_testutils.py +373 -0
- scipy/_lib/_threadsafety.py +58 -0
- scipy/_lib/_tmpdirs.py +86 -0
- scipy/_lib/_uarray/LICENSE +29 -0
- scipy/_lib/_uarray/__init__.py +116 -0
- scipy/_lib/_uarray/_backend.py +707 -0
- scipy/_lib/_uarray/_uarray.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/_lib/_util.py +1283 -0
- scipy/_lib/array_api_compat/__init__.py +22 -0
- scipy/_lib/array_api_compat/_internal.py +59 -0
- scipy/_lib/array_api_compat/common/__init__.py +1 -0
- scipy/_lib/array_api_compat/common/_aliases.py +727 -0
- scipy/_lib/array_api_compat/common/_fft.py +213 -0
- scipy/_lib/array_api_compat/common/_helpers.py +1058 -0
- scipy/_lib/array_api_compat/common/_linalg.py +232 -0
- scipy/_lib/array_api_compat/common/_typing.py +192 -0
- scipy/_lib/array_api_compat/cupy/__init__.py +13 -0
- scipy/_lib/array_api_compat/cupy/_aliases.py +156 -0
- scipy/_lib/array_api_compat/cupy/_info.py +336 -0
- scipy/_lib/array_api_compat/cupy/_typing.py +31 -0
- scipy/_lib/array_api_compat/cupy/fft.py +36 -0
- scipy/_lib/array_api_compat/cupy/linalg.py +49 -0
- scipy/_lib/array_api_compat/dask/__init__.py +0 -0
- scipy/_lib/array_api_compat/dask/array/__init__.py +12 -0
- scipy/_lib/array_api_compat/dask/array/_aliases.py +376 -0
- scipy/_lib/array_api_compat/dask/array/_info.py +416 -0
- scipy/_lib/array_api_compat/dask/array/fft.py +21 -0
- scipy/_lib/array_api_compat/dask/array/linalg.py +72 -0
- scipy/_lib/array_api_compat/numpy/__init__.py +28 -0
- scipy/_lib/array_api_compat/numpy/_aliases.py +190 -0
- scipy/_lib/array_api_compat/numpy/_info.py +366 -0
- scipy/_lib/array_api_compat/numpy/_typing.py +30 -0
- scipy/_lib/array_api_compat/numpy/fft.py +35 -0
- scipy/_lib/array_api_compat/numpy/linalg.py +143 -0
- scipy/_lib/array_api_compat/torch/__init__.py +22 -0
- scipy/_lib/array_api_compat/torch/_aliases.py +855 -0
- scipy/_lib/array_api_compat/torch/_info.py +369 -0
- scipy/_lib/array_api_compat/torch/_typing.py +3 -0
- scipy/_lib/array_api_compat/torch/fft.py +85 -0
- scipy/_lib/array_api_compat/torch/linalg.py +121 -0
- scipy/_lib/array_api_extra/__init__.py +38 -0
- 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/cobyqa/__init__.py +20 -0
- scipy/_lib/cobyqa/framework.py +1240 -0
- scipy/_lib/cobyqa/main.py +1506 -0
- scipy/_lib/cobyqa/models.py +1529 -0
- scipy/_lib/cobyqa/problem.py +1296 -0
- scipy/_lib/cobyqa/settings.py +132 -0
- scipy/_lib/cobyqa/subsolvers/__init__.py +14 -0
- scipy/_lib/cobyqa/subsolvers/geometry.py +387 -0
- scipy/_lib/cobyqa/subsolvers/optim.py +1203 -0
- scipy/_lib/cobyqa/utils/__init__.py +18 -0
- scipy/_lib/cobyqa/utils/exceptions.py +22 -0
- scipy/_lib/cobyqa/utils/math.py +77 -0
- scipy/_lib/cobyqa/utils/versions.py +67 -0
- scipy/_lib/decorator.py +399 -0
- scipy/_lib/deprecation.py +274 -0
- scipy/_lib/doccer.py +366 -0
- scipy/_lib/messagestream.cpython-314t-x86_64-linux-gnu.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/__init__.py +0 -0
- scipy/_lib/tests/test__gcutils.py +110 -0
- scipy/_lib/tests/test__pep440.py +67 -0
- scipy/_lib/tests/test__testutils.py +32 -0
- scipy/_lib/tests/test__threadsafety.py +51 -0
- scipy/_lib/tests/test__util.py +641 -0
- scipy/_lib/tests/test_array_api.py +322 -0
- scipy/_lib/tests/test_bunch.py +169 -0
- scipy/_lib/tests/test_ccallback.py +196 -0
- scipy/_lib/tests/test_config.py +45 -0
- scipy/_lib/tests/test_deprecation.py +10 -0
- scipy/_lib/tests/test_doccer.py +143 -0
- scipy/_lib/tests/test_import_cycles.py +18 -0
- scipy/_lib/tests/test_public_api.py +482 -0
- scipy/_lib/tests/test_scipy_version.py +28 -0
- scipy/_lib/tests/test_tmpdirs.py +48 -0
- scipy/_lib/tests/test_warnings.py +137 -0
- scipy/_lib/uarray.py +31 -0
- scipy/cluster/__init__.py +31 -0
- scipy/cluster/_hierarchy.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/cluster/_optimal_leaf_ordering.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/cluster/_vq.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/cluster/hierarchy.py +4348 -0
- scipy/cluster/tests/__init__.py +0 -0
- scipy/cluster/tests/hierarchy_test_data.py +145 -0
- scipy/cluster/tests/test_disjoint_set.py +202 -0
- scipy/cluster/tests/test_hierarchy.py +1238 -0
- scipy/cluster/tests/test_vq.py +434 -0
- scipy/cluster/vq.py +832 -0
- scipy/conftest.py +683 -0
- scipy/constants/__init__.py +358 -0
- scipy/constants/_codata.py +2266 -0
- scipy/constants/_constants.py +369 -0
- scipy/constants/codata.py +21 -0
- scipy/constants/constants.py +53 -0
- scipy/constants/tests/__init__.py +0 -0
- scipy/constants/tests/test_codata.py +78 -0
- scipy/constants/tests/test_constants.py +83 -0
- scipy/datasets/__init__.py +90 -0
- scipy/datasets/_download_all.py +71 -0
- scipy/datasets/_fetchers.py +225 -0
- scipy/datasets/_registry.py +26 -0
- scipy/datasets/_utils.py +81 -0
- scipy/datasets/tests/__init__.py +0 -0
- scipy/datasets/tests/test_data.py +128 -0
- scipy/differentiate/__init__.py +27 -0
- scipy/differentiate/_differentiate.py +1129 -0
- scipy/differentiate/tests/__init__.py +0 -0
- scipy/differentiate/tests/test_differentiate.py +694 -0
- scipy/fft/__init__.py +114 -0
- scipy/fft/_backend.py +196 -0
- scipy/fft/_basic.py +1650 -0
- scipy/fft/_basic_backend.py +197 -0
- scipy/fft/_debug_backends.py +22 -0
- scipy/fft/_fftlog.py +223 -0
- scipy/fft/_fftlog_backend.py +200 -0
- scipy/fft/_helper.py +348 -0
- scipy/fft/_pocketfft/LICENSE.md +25 -0
- scipy/fft/_pocketfft/__init__.py +9 -0
- scipy/fft/_pocketfft/basic.py +251 -0
- scipy/fft/_pocketfft/helper.py +249 -0
- scipy/fft/_pocketfft/pypocketfft.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/fft/_pocketfft/realtransforms.py +109 -0
- scipy/fft/_pocketfft/tests/__init__.py +0 -0
- scipy/fft/_pocketfft/tests/test_basic.py +1011 -0
- scipy/fft/_pocketfft/tests/test_real_transforms.py +505 -0
- scipy/fft/_realtransforms.py +706 -0
- scipy/fft/_realtransforms_backend.py +63 -0
- scipy/fft/tests/__init__.py +0 -0
- scipy/fft/tests/mock_backend.py +96 -0
- scipy/fft/tests/test_backend.py +98 -0
- scipy/fft/tests/test_basic.py +504 -0
- scipy/fft/tests/test_fftlog.py +215 -0
- scipy/fft/tests/test_helper.py +558 -0
- scipy/fft/tests/test_multithreading.py +84 -0
- scipy/fft/tests/test_real_transforms.py +247 -0
- scipy/fftpack/__init__.py +103 -0
- scipy/fftpack/_basic.py +428 -0
- scipy/fftpack/_helper.py +115 -0
- scipy/fftpack/_pseudo_diffs.py +554 -0
- scipy/fftpack/_realtransforms.py +598 -0
- scipy/fftpack/basic.py +20 -0
- scipy/fftpack/convolve.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/fftpack/helper.py +19 -0
- scipy/fftpack/pseudo_diffs.py +22 -0
- scipy/fftpack/realtransforms.py +19 -0
- scipy/fftpack/tests/__init__.py +0 -0
- scipy/fftpack/tests/fftw_double_ref.npz +0 -0
- scipy/fftpack/tests/fftw_longdouble_ref.npz +0 -0
- scipy/fftpack/tests/fftw_single_ref.npz +0 -0
- scipy/fftpack/tests/test.npz +0 -0
- scipy/fftpack/tests/test_basic.py +877 -0
- scipy/fftpack/tests/test_helper.py +54 -0
- scipy/fftpack/tests/test_import.py +33 -0
- scipy/fftpack/tests/test_pseudo_diffs.py +388 -0
- scipy/fftpack/tests/test_real_transforms.py +836 -0
- scipy/integrate/__init__.py +122 -0
- scipy/integrate/_bvp.py +1160 -0
- scipy/integrate/_cubature.py +729 -0
- scipy/integrate/_dop.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/integrate/_ivp/__init__.py +8 -0
- scipy/integrate/_ivp/base.py +290 -0
- scipy/integrate/_ivp/bdf.py +478 -0
- scipy/integrate/_ivp/common.py +451 -0
- scipy/integrate/_ivp/dop853_coefficients.py +193 -0
- scipy/integrate/_ivp/ivp.py +755 -0
- scipy/integrate/_ivp/lsoda.py +224 -0
- scipy/integrate/_ivp/radau.py +572 -0
- scipy/integrate/_ivp/rk.py +601 -0
- scipy/integrate/_ivp/tests/__init__.py +0 -0
- scipy/integrate/_ivp/tests/test_ivp.py +1287 -0
- scipy/integrate/_ivp/tests/test_rk.py +37 -0
- scipy/integrate/_lebedev.py +5450 -0
- scipy/integrate/_lsoda.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/integrate/_ode.py +1395 -0
- scipy/integrate/_odepack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/integrate/_odepack_py.py +273 -0
- scipy/integrate/_quad_vec.py +674 -0
- scipy/integrate/_quadpack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/integrate/_quadpack_py.py +1283 -0
- scipy/integrate/_quadrature.py +1336 -0
- scipy/integrate/_rules/__init__.py +12 -0
- scipy/integrate/_rules/_base.py +518 -0
- scipy/integrate/_rules/_gauss_kronrod.py +202 -0
- scipy/integrate/_rules/_gauss_legendre.py +62 -0
- scipy/integrate/_rules/_genz_malik.py +210 -0
- scipy/integrate/_tanhsinh.py +1385 -0
- scipy/integrate/_test_multivariate.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/integrate/_test_odeint_banded.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/integrate/_vode.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/integrate/dop.py +15 -0
- scipy/integrate/lsoda.py +15 -0
- scipy/integrate/odepack.py +17 -0
- scipy/integrate/quadpack.py +23 -0
- scipy/integrate/tests/__init__.py +0 -0
- scipy/integrate/tests/test__quad_vec.py +211 -0
- scipy/integrate/tests/test_banded_ode_solvers.py +305 -0
- scipy/integrate/tests/test_bvp.py +714 -0
- scipy/integrate/tests/test_cubature.py +1375 -0
- scipy/integrate/tests/test_integrate.py +840 -0
- scipy/integrate/tests/test_odeint_jac.py +74 -0
- scipy/integrate/tests/test_quadpack.py +680 -0
- scipy/integrate/tests/test_quadrature.py +730 -0
- scipy/integrate/tests/test_tanhsinh.py +1171 -0
- scipy/integrate/vode.py +15 -0
- scipy/interpolate/__init__.py +228 -0
- scipy/interpolate/_bary_rational.py +715 -0
- scipy/interpolate/_bsplines.py +2469 -0
- scipy/interpolate/_cubic.py +973 -0
- scipy/interpolate/_dfitpack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/interpolate/_dierckx.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/interpolate/_fitpack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/interpolate/_fitpack2.py +2397 -0
- scipy/interpolate/_fitpack_impl.py +811 -0
- scipy/interpolate/_fitpack_py.py +898 -0
- scipy/interpolate/_fitpack_repro.py +996 -0
- scipy/interpolate/_interpnd.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/interpolate/_interpolate.py +2266 -0
- scipy/interpolate/_ndbspline.py +415 -0
- scipy/interpolate/_ndgriddata.py +329 -0
- scipy/interpolate/_pade.py +67 -0
- scipy/interpolate/_polyint.py +1025 -0
- scipy/interpolate/_ppoly.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/interpolate/_rbf.py +290 -0
- scipy/interpolate/_rbfinterp.py +550 -0
- scipy/interpolate/_rbfinterp_pythran.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/interpolate/_rgi.py +764 -0
- scipy/interpolate/_rgi_cython.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/interpolate/dfitpack.py +24 -0
- scipy/interpolate/fitpack.py +31 -0
- scipy/interpolate/fitpack2.py +29 -0
- scipy/interpolate/interpnd.py +24 -0
- scipy/interpolate/interpolate.py +30 -0
- scipy/interpolate/ndgriddata.py +23 -0
- scipy/interpolate/polyint.py +24 -0
- scipy/interpolate/rbf.py +18 -0
- scipy/interpolate/tests/__init__.py +0 -0
- scipy/interpolate/tests/data/bug-1310.npz +0 -0
- scipy/interpolate/tests/data/estimate_gradients_hang.npy +0 -0
- scipy/interpolate/tests/data/gcvspl.npz +0 -0
- scipy/interpolate/tests/test_bary_rational.py +368 -0
- scipy/interpolate/tests/test_bsplines.py +3754 -0
- scipy/interpolate/tests/test_fitpack.py +519 -0
- scipy/interpolate/tests/test_fitpack2.py +1431 -0
- scipy/interpolate/tests/test_gil.py +64 -0
- scipy/interpolate/tests/test_interpnd.py +452 -0
- scipy/interpolate/tests/test_interpolate.py +2630 -0
- scipy/interpolate/tests/test_ndgriddata.py +308 -0
- scipy/interpolate/tests/test_pade.py +107 -0
- scipy/interpolate/tests/test_polyint.py +972 -0
- scipy/interpolate/tests/test_rbf.py +246 -0
- scipy/interpolate/tests/test_rbfinterp.py +534 -0
- scipy/interpolate/tests/test_rgi.py +1151 -0
- scipy/io/__init__.py +116 -0
- scipy/io/_fast_matrix_market/__init__.py +600 -0
- scipy/io/_fast_matrix_market/_fmm_core.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/io/_fortran.py +354 -0
- scipy/io/_harwell_boeing/__init__.py +7 -0
- scipy/io/_harwell_boeing/_fortran_format_parser.py +316 -0
- scipy/io/_harwell_boeing/hb.py +571 -0
- scipy/io/_harwell_boeing/tests/__init__.py +0 -0
- scipy/io/_harwell_boeing/tests/test_fortran_format.py +74 -0
- scipy/io/_harwell_boeing/tests/test_hb.py +70 -0
- scipy/io/_idl.py +917 -0
- scipy/io/_mmio.py +968 -0
- scipy/io/_netcdf.py +1104 -0
- scipy/io/_test_fortran.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/io/arff/__init__.py +28 -0
- scipy/io/arff/_arffread.py +873 -0
- scipy/io/arff/arffread.py +19 -0
- scipy/io/arff/tests/__init__.py +0 -0
- scipy/io/arff/tests/data/iris.arff +225 -0
- scipy/io/arff/tests/data/missing.arff +8 -0
- scipy/io/arff/tests/data/nodata.arff +11 -0
- scipy/io/arff/tests/data/quoted_nominal.arff +13 -0
- scipy/io/arff/tests/data/quoted_nominal_spaces.arff +13 -0
- scipy/io/arff/tests/data/test1.arff +10 -0
- scipy/io/arff/tests/data/test10.arff +8 -0
- scipy/io/arff/tests/data/test11.arff +11 -0
- scipy/io/arff/tests/data/test2.arff +15 -0
- scipy/io/arff/tests/data/test3.arff +6 -0
- scipy/io/arff/tests/data/test4.arff +11 -0
- scipy/io/arff/tests/data/test5.arff +26 -0
- scipy/io/arff/tests/data/test6.arff +12 -0
- scipy/io/arff/tests/data/test7.arff +15 -0
- scipy/io/arff/tests/data/test8.arff +12 -0
- scipy/io/arff/tests/data/test9.arff +14 -0
- scipy/io/arff/tests/test_arffread.py +421 -0
- scipy/io/harwell_boeing.py +17 -0
- scipy/io/idl.py +17 -0
- scipy/io/matlab/__init__.py +66 -0
- scipy/io/matlab/_byteordercodes.py +75 -0
- scipy/io/matlab/_mio.py +375 -0
- scipy/io/matlab/_mio4.py +632 -0
- scipy/io/matlab/_mio5.py +901 -0
- scipy/io/matlab/_mio5_params.py +281 -0
- scipy/io/matlab/_mio5_utils.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/io/matlab/_mio_utils.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/io/matlab/_miobase.py +435 -0
- scipy/io/matlab/_streams.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/io/matlab/byteordercodes.py +17 -0
- scipy/io/matlab/mio.py +16 -0
- scipy/io/matlab/mio4.py +17 -0
- scipy/io/matlab/mio5.py +19 -0
- scipy/io/matlab/mio5_params.py +18 -0
- scipy/io/matlab/mio5_utils.py +17 -0
- scipy/io/matlab/mio_utils.py +17 -0
- scipy/io/matlab/miobase.py +16 -0
- scipy/io/matlab/streams.py +16 -0
- scipy/io/matlab/tests/__init__.py +0 -0
- scipy/io/matlab/tests/data/bad_miuint32.mat +0 -0
- scipy/io/matlab/tests/data/bad_miutf8_array_name.mat +0 -0
- scipy/io/matlab/tests/data/big_endian.mat +0 -0
- scipy/io/matlab/tests/data/broken_utf8.mat +0 -0
- scipy/io/matlab/tests/data/corrupted_zlib_checksum.mat +0 -0
- scipy/io/matlab/tests/data/corrupted_zlib_data.mat +0 -0
- scipy/io/matlab/tests/data/debigged_m4.mat +0 -0
- scipy/io/matlab/tests/data/japanese_utf8.txt +5 -0
- scipy/io/matlab/tests/data/little_endian.mat +0 -0
- scipy/io/matlab/tests/data/logical_sparse.mat +0 -0
- scipy/io/matlab/tests/data/malformed1.mat +0 -0
- scipy/io/matlab/tests/data/miuint32_for_miint32.mat +0 -0
- scipy/io/matlab/tests/data/miutf8_array_name.mat +0 -0
- scipy/io/matlab/tests/data/nasty_duplicate_fieldnames.mat +0 -0
- scipy/io/matlab/tests/data/one_by_zero_char.mat +0 -0
- scipy/io/matlab/tests/data/parabola.mat +0 -0
- scipy/io/matlab/tests/data/single_empty_string.mat +0 -0
- scipy/io/matlab/tests/data/some_functions.mat +0 -0
- scipy/io/matlab/tests/data/sqr.mat +0 -0
- scipy/io/matlab/tests/data/test3dmatrix_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/test3dmatrix_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/test3dmatrix_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/test3dmatrix_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/test_empty_struct.mat +0 -0
- scipy/io/matlab/tests/data/test_mat4_le_floats.mat +0 -0
- scipy/io/matlab/tests/data/test_skip_variable.mat +0 -0
- scipy/io/matlab/tests/data/testbool_8_WIN64.mat +0 -0
- scipy/io/matlab/tests/data/testcell_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testcell_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testcell_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testcell_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testcellnest_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testcellnest_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testcellnest_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testcellnest_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testcomplex_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testcomplex_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testcomplex_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testcomplex_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testcomplex_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testdouble_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testdouble_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testdouble_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testdouble_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testdouble_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testemptycell_5.3_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testemptycell_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testemptycell_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testemptycell_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testfunc_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testhdf5_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testmatrix_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testmatrix_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testmatrix_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testmatrix_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testmatrix_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testminus_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testminus_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testminus_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testminus_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testminus_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testmulti_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testmulti_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testmulti_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testobject_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testobject_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testobject_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testobject_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testonechar_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testonechar_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testonechar_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testonechar_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testonechar_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testscalarcell_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testsimplecell.mat +0 -0
- scipy/io/matlab/tests/data/testsparse_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testsparse_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testsparse_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testsparse_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testsparse_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testsparsecomplex_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testsparsecomplex_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/testsparsecomplex_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testsparsecomplex_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testsparsecomplex_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testsparsefloat_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststring_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/teststring_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/teststring_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststring_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststring_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststringarray_4.2c_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/teststringarray_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/teststringarray_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststringarray_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststringarray_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststruct_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/teststruct_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststruct_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststruct_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststructarr_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/teststructarr_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststructarr_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststructarr_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststructnest_6.1_SOL2.mat +0 -0
- scipy/io/matlab/tests/data/teststructnest_6.5.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststructnest_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/teststructnest_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testunicode_7.1_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testunicode_7.4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/data/testvec_4_GLNX86.mat +0 -0
- scipy/io/matlab/tests/test_byteordercodes.py +29 -0
- scipy/io/matlab/tests/test_mio.py +1399 -0
- scipy/io/matlab/tests/test_mio5_utils.py +179 -0
- scipy/io/matlab/tests/test_mio_funcs.py +51 -0
- scipy/io/matlab/tests/test_mio_utils.py +45 -0
- scipy/io/matlab/tests/test_miobase.py +32 -0
- scipy/io/matlab/tests/test_pathological.py +33 -0
- scipy/io/matlab/tests/test_streams.py +241 -0
- scipy/io/mmio.py +17 -0
- scipy/io/netcdf.py +17 -0
- scipy/io/tests/__init__.py +0 -0
- scipy/io/tests/data/Transparent Busy.ani +0 -0
- scipy/io/tests/data/array_float32_1d.sav +0 -0
- scipy/io/tests/data/array_float32_2d.sav +0 -0
- scipy/io/tests/data/array_float32_3d.sav +0 -0
- scipy/io/tests/data/array_float32_4d.sav +0 -0
- scipy/io/tests/data/array_float32_5d.sav +0 -0
- scipy/io/tests/data/array_float32_6d.sav +0 -0
- scipy/io/tests/data/array_float32_7d.sav +0 -0
- scipy/io/tests/data/array_float32_8d.sav +0 -0
- scipy/io/tests/data/array_float32_pointer_1d.sav +0 -0
- scipy/io/tests/data/array_float32_pointer_2d.sav +0 -0
- scipy/io/tests/data/array_float32_pointer_3d.sav +0 -0
- scipy/io/tests/data/array_float32_pointer_4d.sav +0 -0
- scipy/io/tests/data/array_float32_pointer_5d.sav +0 -0
- scipy/io/tests/data/array_float32_pointer_6d.sav +0 -0
- scipy/io/tests/data/array_float32_pointer_7d.sav +0 -0
- scipy/io/tests/data/array_float32_pointer_8d.sav +0 -0
- scipy/io/tests/data/example_1.nc +0 -0
- scipy/io/tests/data/example_2.nc +0 -0
- scipy/io/tests/data/example_3_maskedvals.nc +0 -0
- scipy/io/tests/data/fortran-3x3d-2i.dat +0 -0
- scipy/io/tests/data/fortran-mixed.dat +0 -0
- scipy/io/tests/data/fortran-sf8-11x1x10.dat +0 -0
- scipy/io/tests/data/fortran-sf8-15x10x22.dat +0 -0
- scipy/io/tests/data/fortran-sf8-1x1x1.dat +0 -0
- scipy/io/tests/data/fortran-sf8-1x1x5.dat +0 -0
- scipy/io/tests/data/fortran-sf8-1x1x7.dat +0 -0
- scipy/io/tests/data/fortran-sf8-1x3x5.dat +0 -0
- scipy/io/tests/data/fortran-si4-11x1x10.dat +0 -0
- scipy/io/tests/data/fortran-si4-15x10x22.dat +0 -0
- scipy/io/tests/data/fortran-si4-1x1x1.dat +0 -0
- scipy/io/tests/data/fortran-si4-1x1x5.dat +0 -0
- scipy/io/tests/data/fortran-si4-1x1x7.dat +0 -0
- scipy/io/tests/data/fortran-si4-1x3x5.dat +0 -0
- scipy/io/tests/data/invalid_pointer.sav +0 -0
- scipy/io/tests/data/null_pointer.sav +0 -0
- scipy/io/tests/data/scalar_byte.sav +0 -0
- scipy/io/tests/data/scalar_byte_descr.sav +0 -0
- scipy/io/tests/data/scalar_complex32.sav +0 -0
- scipy/io/tests/data/scalar_complex64.sav +0 -0
- scipy/io/tests/data/scalar_float32.sav +0 -0
- scipy/io/tests/data/scalar_float64.sav +0 -0
- scipy/io/tests/data/scalar_heap_pointer.sav +0 -0
- scipy/io/tests/data/scalar_int16.sav +0 -0
- scipy/io/tests/data/scalar_int32.sav +0 -0
- scipy/io/tests/data/scalar_int64.sav +0 -0
- scipy/io/tests/data/scalar_string.sav +0 -0
- scipy/io/tests/data/scalar_uint16.sav +0 -0
- scipy/io/tests/data/scalar_uint32.sav +0 -0
- scipy/io/tests/data/scalar_uint64.sav +0 -0
- scipy/io/tests/data/struct_arrays.sav +0 -0
- scipy/io/tests/data/struct_arrays_byte_idl80.sav +0 -0
- scipy/io/tests/data/struct_arrays_replicated.sav +0 -0
- scipy/io/tests/data/struct_arrays_replicated_3d.sav +0 -0
- scipy/io/tests/data/struct_inherit.sav +0 -0
- scipy/io/tests/data/struct_pointer_arrays.sav +0 -0
- scipy/io/tests/data/struct_pointer_arrays_replicated.sav +0 -0
- scipy/io/tests/data/struct_pointer_arrays_replicated_3d.sav +0 -0
- scipy/io/tests/data/struct_pointers.sav +0 -0
- scipy/io/tests/data/struct_pointers_replicated.sav +0 -0
- scipy/io/tests/data/struct_pointers_replicated_3d.sav +0 -0
- scipy/io/tests/data/struct_scalars.sav +0 -0
- scipy/io/tests/data/struct_scalars_replicated.sav +0 -0
- scipy/io/tests/data/struct_scalars_replicated_3d.sav +0 -0
- scipy/io/tests/data/test-1234Hz-le-1ch-10S-20bit-extra.wav +0 -0
- scipy/io/tests/data/test-44100Hz-2ch-32bit-float-be.wav +0 -0
- scipy/io/tests/data/test-44100Hz-2ch-32bit-float-le.wav +0 -0
- scipy/io/tests/data/test-44100Hz-be-1ch-4bytes.wav +0 -0
- scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-early-eof-no-data.wav +0 -0
- scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-early-eof.wav +0 -0
- scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-incomplete-chunk.wav +0 -0
- scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-rf64.wav +0 -0
- scipy/io/tests/data/test-44100Hz-le-1ch-4bytes.wav +0 -0
- scipy/io/tests/data/test-48000Hz-2ch-64bit-float-le-wavex.wav +0 -0
- scipy/io/tests/data/test-8000Hz-be-3ch-5S-24bit.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-1ch-1byte-ulaw.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-2ch-1byteu.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-3ch-5S-24bit-inconsistent.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-3ch-5S-24bit-rf64.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-3ch-5S-24bit.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-3ch-5S-36bit.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-3ch-5S-45bit.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-3ch-5S-53bit.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-3ch-5S-64bit.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-4ch-9S-12bit.wav +0 -0
- scipy/io/tests/data/test-8000Hz-le-5ch-9S-5bit.wav +0 -0
- scipy/io/tests/data/various_compressed.sav +0 -0
- scipy/io/tests/test_fortran.py +264 -0
- scipy/io/tests/test_idl.py +483 -0
- scipy/io/tests/test_mmio.py +831 -0
- scipy/io/tests/test_netcdf.py +550 -0
- scipy/io/tests/test_paths.py +93 -0
- scipy/io/tests/test_wavfile.py +501 -0
- scipy/io/wavfile.py +938 -0
- scipy/linalg/__init__.pxd +1 -0
- scipy/linalg/__init__.py +236 -0
- scipy/linalg/_basic.py +2146 -0
- scipy/linalg/_blas_subroutines.h +164 -0
- scipy/linalg/_cythonized_array_utils.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_cythonized_array_utils.pxd +40 -0
- scipy/linalg/_cythonized_array_utils.pyi +16 -0
- scipy/linalg/_decomp.py +1645 -0
- scipy/linalg/_decomp_cholesky.py +413 -0
- scipy/linalg/_decomp_cossin.py +236 -0
- scipy/linalg/_decomp_interpolative.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_decomp_ldl.py +356 -0
- scipy/linalg/_decomp_lu.py +401 -0
- scipy/linalg/_decomp_lu_cython.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_decomp_lu_cython.pyi +6 -0
- scipy/linalg/_decomp_polar.py +113 -0
- scipy/linalg/_decomp_qr.py +494 -0
- scipy/linalg/_decomp_qz.py +452 -0
- scipy/linalg/_decomp_schur.py +336 -0
- scipy/linalg/_decomp_svd.py +545 -0
- scipy/linalg/_decomp_update.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_expm_frechet.py +417 -0
- scipy/linalg/_fblas.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_flapack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_lapack_subroutines.h +1521 -0
- scipy/linalg/_linalg_pythran.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_matfuncs.py +1050 -0
- scipy/linalg/_matfuncs_expm.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_matfuncs_expm.pyi +6 -0
- scipy/linalg/_matfuncs_inv_ssq.py +886 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_matfuncs_sqrtm.py +107 -0
- scipy/linalg/_matfuncs_sqrtm_triu.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_misc.py +191 -0
- scipy/linalg/_procrustes.py +113 -0
- scipy/linalg/_sketches.py +189 -0
- scipy/linalg/_solve_toeplitz.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/_solvers.py +862 -0
- scipy/linalg/_special_matrices.py +1322 -0
- scipy/linalg/_testutils.py +65 -0
- scipy/linalg/basic.py +23 -0
- scipy/linalg/blas.py +495 -0
- scipy/linalg/cython_blas.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/cython_blas.pxd +169 -0
- scipy/linalg/cython_blas.pyx +1432 -0
- scipy/linalg/cython_lapack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/linalg/cython_lapack.pxd +1528 -0
- scipy/linalg/cython_lapack.pyx +12045 -0
- scipy/linalg/decomp.py +23 -0
- scipy/linalg/decomp_cholesky.py +21 -0
- scipy/linalg/decomp_lu.py +21 -0
- scipy/linalg/decomp_qr.py +20 -0
- scipy/linalg/decomp_schur.py +21 -0
- scipy/linalg/decomp_svd.py +21 -0
- scipy/linalg/interpolative.py +989 -0
- scipy/linalg/lapack.py +1081 -0
- scipy/linalg/matfuncs.py +23 -0
- scipy/linalg/misc.py +21 -0
- scipy/linalg/special_matrices.py +22 -0
- scipy/linalg/tests/__init__.py +0 -0
- scipy/linalg/tests/_cython_examples/extending.pyx +23 -0
- scipy/linalg/tests/_cython_examples/meson.build +34 -0
- scipy/linalg/tests/data/carex_15_data.npz +0 -0
- scipy/linalg/tests/data/carex_18_data.npz +0 -0
- scipy/linalg/tests/data/carex_19_data.npz +0 -0
- scipy/linalg/tests/data/carex_20_data.npz +0 -0
- scipy/linalg/tests/data/carex_6_data.npz +0 -0
- scipy/linalg/tests/data/gendare_20170120_data.npz +0 -0
- scipy/linalg/tests/test_basic.py +2074 -0
- scipy/linalg/tests/test_batch.py +588 -0
- scipy/linalg/tests/test_blas.py +1127 -0
- scipy/linalg/tests/test_cython_blas.py +118 -0
- scipy/linalg/tests/test_cython_lapack.py +22 -0
- scipy/linalg/tests/test_cythonized_array_utils.py +130 -0
- scipy/linalg/tests/test_decomp.py +3189 -0
- scipy/linalg/tests/test_decomp_cholesky.py +268 -0
- scipy/linalg/tests/test_decomp_cossin.py +314 -0
- scipy/linalg/tests/test_decomp_ldl.py +137 -0
- scipy/linalg/tests/test_decomp_lu.py +308 -0
- scipy/linalg/tests/test_decomp_polar.py +110 -0
- scipy/linalg/tests/test_decomp_update.py +1701 -0
- scipy/linalg/tests/test_extending.py +46 -0
- scipy/linalg/tests/test_fblas.py +607 -0
- scipy/linalg/tests/test_interpolative.py +232 -0
- scipy/linalg/tests/test_lapack.py +3616 -0
- scipy/linalg/tests/test_matfuncs.py +1125 -0
- scipy/linalg/tests/test_matmul_toeplitz.py +136 -0
- scipy/linalg/tests/test_procrustes.py +214 -0
- scipy/linalg/tests/test_sketches.py +118 -0
- scipy/linalg/tests/test_solve_toeplitz.py +150 -0
- scipy/linalg/tests/test_solvers.py +844 -0
- scipy/linalg/tests/test_special_matrices.py +636 -0
- scipy/misc/__init__.py +6 -0
- scipy/misc/common.py +6 -0
- scipy/misc/doccer.py +6 -0
- scipy/ndimage/__init__.py +174 -0
- scipy/ndimage/_ctest.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/ndimage/_cytest.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/ndimage/_delegators.py +303 -0
- scipy/ndimage/_filters.py +2422 -0
- scipy/ndimage/_fourier.py +306 -0
- scipy/ndimage/_interpolation.py +1033 -0
- scipy/ndimage/_measurements.py +1689 -0
- scipy/ndimage/_morphology.py +2634 -0
- scipy/ndimage/_nd_image.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/ndimage/_ndimage_api.py +16 -0
- scipy/ndimage/_ni_docstrings.py +214 -0
- scipy/ndimage/_ni_label.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/ndimage/_ni_support.py +139 -0
- scipy/ndimage/_rank_filter_1d.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/ndimage/_support_alternative_backends.py +84 -0
- scipy/ndimage/filters.py +27 -0
- scipy/ndimage/fourier.py +21 -0
- scipy/ndimage/interpolation.py +22 -0
- scipy/ndimage/measurements.py +24 -0
- scipy/ndimage/morphology.py +27 -0
- scipy/ndimage/tests/__init__.py +12 -0
- scipy/ndimage/tests/data/label_inputs.txt +21 -0
- scipy/ndimage/tests/data/label_results.txt +294 -0
- scipy/ndimage/tests/data/label_strels.txt +42 -0
- scipy/ndimage/tests/dots.png +0 -0
- scipy/ndimage/tests/test_c_api.py +102 -0
- scipy/ndimage/tests/test_datatypes.py +67 -0
- scipy/ndimage/tests/test_filters.py +3083 -0
- scipy/ndimage/tests/test_fourier.py +187 -0
- scipy/ndimage/tests/test_interpolation.py +1491 -0
- scipy/ndimage/tests/test_measurements.py +1592 -0
- scipy/ndimage/tests/test_morphology.py +2950 -0
- scipy/ndimage/tests/test_ni_support.py +78 -0
- scipy/ndimage/tests/test_splines.py +70 -0
- scipy/odr/__init__.py +131 -0
- scipy/odr/__odrpack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/odr/_add_newdocs.py +34 -0
- scipy/odr/_models.py +315 -0
- scipy/odr/_odrpack.py +1154 -0
- scipy/odr/models.py +20 -0
- scipy/odr/odrpack.py +21 -0
- scipy/odr/tests/__init__.py +0 -0
- scipy/odr/tests/test_odr.py +607 -0
- scipy/optimize/__init__.pxd +1 -0
- scipy/optimize/__init__.py +460 -0
- scipy/optimize/_basinhopping.py +741 -0
- scipy/optimize/_bglu_dense.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_bracket.py +706 -0
- scipy/optimize/_chandrupatla.py +551 -0
- scipy/optimize/_cobyla_py.py +297 -0
- scipy/optimize/_cobyqa_py.py +72 -0
- scipy/optimize/_constraints.py +598 -0
- scipy/optimize/_dcsrch.py +728 -0
- scipy/optimize/_differentiable_functions.py +835 -0
- scipy/optimize/_differentialevolution.py +1970 -0
- scipy/optimize/_direct.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_direct_py.py +280 -0
- scipy/optimize/_dual_annealing.py +732 -0
- scipy/optimize/_elementwise.py +798 -0
- scipy/optimize/_group_columns.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_hessian_update_strategy.py +479 -0
- scipy/optimize/_highspy/__init__.py +0 -0
- scipy/optimize/_highspy/_core.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_highspy/_highs_options.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_highspy/_highs_wrapper.py +338 -0
- scipy/optimize/_isotonic.py +157 -0
- scipy/optimize/_lbfgsb.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_lbfgsb_py.py +634 -0
- scipy/optimize/_linesearch.py +896 -0
- scipy/optimize/_linprog.py +733 -0
- scipy/optimize/_linprog_doc.py +1434 -0
- scipy/optimize/_linprog_highs.py +422 -0
- scipy/optimize/_linprog_ip.py +1141 -0
- scipy/optimize/_linprog_rs.py +572 -0
- scipy/optimize/_linprog_simplex.py +663 -0
- scipy/optimize/_linprog_util.py +1521 -0
- scipy/optimize/_lsap.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_lsq/__init__.py +5 -0
- scipy/optimize/_lsq/bvls.py +183 -0
- scipy/optimize/_lsq/common.py +731 -0
- scipy/optimize/_lsq/dogbox.py +345 -0
- scipy/optimize/_lsq/givens_elimination.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_lsq/least_squares.py +1044 -0
- scipy/optimize/_lsq/lsq_linear.py +361 -0
- scipy/optimize/_lsq/trf.py +587 -0
- scipy/optimize/_lsq/trf_linear.py +249 -0
- scipy/optimize/_milp.py +394 -0
- scipy/optimize/_minimize.py +1199 -0
- scipy/optimize/_minpack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_minpack_py.py +1178 -0
- scipy/optimize/_moduleTNC.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_nnls.py +96 -0
- scipy/optimize/_nonlin.py +1634 -0
- scipy/optimize/_numdiff.py +963 -0
- scipy/optimize/_optimize.py +4169 -0
- scipy/optimize/_pava_pybind.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_qap.py +760 -0
- scipy/optimize/_remove_redundancy.py +522 -0
- scipy/optimize/_root.py +732 -0
- scipy/optimize/_root_scalar.py +538 -0
- scipy/optimize/_shgo.py +1606 -0
- scipy/optimize/_shgo_lib/__init__.py +0 -0
- scipy/optimize/_shgo_lib/_complex.py +1225 -0
- scipy/optimize/_shgo_lib/_vertex.py +460 -0
- scipy/optimize/_slsqp_py.py +603 -0
- scipy/optimize/_slsqplib.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_spectral.py +260 -0
- scipy/optimize/_tnc.py +438 -0
- scipy/optimize/_trlib/__init__.py +12 -0
- scipy/optimize/_trlib/_trlib.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_trustregion.py +318 -0
- scipy/optimize/_trustregion_constr/__init__.py +6 -0
- scipy/optimize/_trustregion_constr/canonical_constraint.py +390 -0
- scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +231 -0
- scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +584 -0
- scipy/optimize/_trustregion_constr/projections.py +411 -0
- scipy/optimize/_trustregion_constr/qp_subproblem.py +637 -0
- scipy/optimize/_trustregion_constr/report.py +49 -0
- scipy/optimize/_trustregion_constr/tests/__init__.py +0 -0
- scipy/optimize/_trustregion_constr/tests/test_canonical_constraint.py +296 -0
- scipy/optimize/_trustregion_constr/tests/test_nested_minimize.py +39 -0
- scipy/optimize/_trustregion_constr/tests/test_projections.py +214 -0
- scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +645 -0
- scipy/optimize/_trustregion_constr/tests/test_report.py +34 -0
- scipy/optimize/_trustregion_constr/tr_interior_point.py +361 -0
- scipy/optimize/_trustregion_dogleg.py +122 -0
- scipy/optimize/_trustregion_exact.py +437 -0
- scipy/optimize/_trustregion_krylov.py +65 -0
- scipy/optimize/_trustregion_ncg.py +126 -0
- scipy/optimize/_tstutils.py +972 -0
- scipy/optimize/_zeros.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/_zeros_py.py +1475 -0
- scipy/optimize/cobyla.py +19 -0
- scipy/optimize/cython_optimize/__init__.py +133 -0
- scipy/optimize/cython_optimize/_zeros.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/optimize/cython_optimize/_zeros.pxd +33 -0
- scipy/optimize/cython_optimize/c_zeros.pxd +26 -0
- scipy/optimize/cython_optimize.pxd +11 -0
- scipy/optimize/elementwise.py +38 -0
- scipy/optimize/lbfgsb.py +23 -0
- scipy/optimize/linesearch.py +18 -0
- scipy/optimize/minpack.py +27 -0
- scipy/optimize/minpack2.py +17 -0
- scipy/optimize/moduleTNC.py +19 -0
- scipy/optimize/nonlin.py +29 -0
- scipy/optimize/optimize.py +40 -0
- scipy/optimize/slsqp.py +22 -0
- scipy/optimize/tests/__init__.py +0 -0
- scipy/optimize/tests/_cython_examples/extending.pyx +43 -0
- scipy/optimize/tests/_cython_examples/meson.build +32 -0
- scipy/optimize/tests/test__basinhopping.py +535 -0
- scipy/optimize/tests/test__differential_evolution.py +1703 -0
- scipy/optimize/tests/test__dual_annealing.py +416 -0
- scipy/optimize/tests/test__linprog_clean_inputs.py +312 -0
- scipy/optimize/tests/test__numdiff.py +885 -0
- scipy/optimize/tests/test__remove_redundancy.py +228 -0
- scipy/optimize/tests/test__root.py +124 -0
- scipy/optimize/tests/test__shgo.py +1164 -0
- scipy/optimize/tests/test__spectral.py +226 -0
- scipy/optimize/tests/test_bracket.py +896 -0
- scipy/optimize/tests/test_chandrupatla.py +982 -0
- scipy/optimize/tests/test_cobyla.py +195 -0
- scipy/optimize/tests/test_cobyqa.py +252 -0
- scipy/optimize/tests/test_constraint_conversion.py +286 -0
- scipy/optimize/tests/test_constraints.py +255 -0
- scipy/optimize/tests/test_cython_optimize.py +92 -0
- scipy/optimize/tests/test_differentiable_functions.py +1025 -0
- scipy/optimize/tests/test_direct.py +321 -0
- scipy/optimize/tests/test_extending.py +28 -0
- scipy/optimize/tests/test_hessian_update_strategy.py +300 -0
- scipy/optimize/tests/test_isotonic_regression.py +167 -0
- scipy/optimize/tests/test_lbfgsb_hessinv.py +65 -0
- scipy/optimize/tests/test_lbfgsb_setulb.py +122 -0
- scipy/optimize/tests/test_least_squares.py +986 -0
- scipy/optimize/tests/test_linear_assignment.py +116 -0
- scipy/optimize/tests/test_linesearch.py +328 -0
- scipy/optimize/tests/test_linprog.py +2577 -0
- scipy/optimize/tests/test_lsq_common.py +297 -0
- scipy/optimize/tests/test_lsq_linear.py +287 -0
- scipy/optimize/tests/test_milp.py +459 -0
- scipy/optimize/tests/test_minimize_constrained.py +845 -0
- scipy/optimize/tests/test_minpack.py +1194 -0
- scipy/optimize/tests/test_nnls.py +469 -0
- scipy/optimize/tests/test_nonlin.py +572 -0
- scipy/optimize/tests/test_optimize.py +3335 -0
- scipy/optimize/tests/test_quadratic_assignment.py +455 -0
- scipy/optimize/tests/test_regression.py +40 -0
- scipy/optimize/tests/test_slsqp.py +645 -0
- scipy/optimize/tests/test_tnc.py +345 -0
- scipy/optimize/tests/test_trustregion.py +110 -0
- scipy/optimize/tests/test_trustregion_exact.py +351 -0
- scipy/optimize/tests/test_trustregion_krylov.py +170 -0
- scipy/optimize/tests/test_zeros.py +998 -0
- scipy/optimize/tnc.py +22 -0
- scipy/optimize/zeros.py +26 -0
- scipy/signal/__init__.py +316 -0
- scipy/signal/_arraytools.py +264 -0
- scipy/signal/_czt.py +575 -0
- scipy/signal/_delegators.py +568 -0
- scipy/signal/_filter_design.py +5893 -0
- scipy/signal/_fir_filter_design.py +1458 -0
- scipy/signal/_lti_conversion.py +534 -0
- scipy/signal/_ltisys.py +3546 -0
- scipy/signal/_max_len_seq.py +139 -0
- scipy/signal/_max_len_seq_inner.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/signal/_peak_finding.py +1310 -0
- scipy/signal/_peak_finding_utils.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/signal/_polyutils.py +172 -0
- scipy/signal/_savitzky_golay.py +357 -0
- scipy/signal/_short_time_fft.py +2187 -0
- scipy/signal/_signal_api.py +30 -0
- scipy/signal/_signaltools.py +5309 -0
- scipy/signal/_sigtools.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/signal/_sosfilt.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/signal/_spectral_py.py +2471 -0
- scipy/signal/_spline.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/signal/_spline.pyi +34 -0
- scipy/signal/_spline_filters.py +848 -0
- scipy/signal/_support_alternative_backends.py +73 -0
- scipy/signal/_upfirdn.py +219 -0
- scipy/signal/_upfirdn_apply.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/signal/_waveforms.py +687 -0
- scipy/signal/_wavelets.py +29 -0
- scipy/signal/bsplines.py +21 -0
- scipy/signal/filter_design.py +28 -0
- scipy/signal/fir_filter_design.py +21 -0
- scipy/signal/lti_conversion.py +20 -0
- scipy/signal/ltisys.py +25 -0
- scipy/signal/signaltools.py +27 -0
- scipy/signal/spectral.py +21 -0
- scipy/signal/spline.py +18 -0
- scipy/signal/tests/__init__.py +0 -0
- scipy/signal/tests/_scipy_spectral_test_shim.py +311 -0
- scipy/signal/tests/mpsig.py +122 -0
- scipy/signal/tests/test_array_tools.py +111 -0
- scipy/signal/tests/test_bsplines.py +365 -0
- scipy/signal/tests/test_cont2discrete.py +424 -0
- scipy/signal/tests/test_czt.py +221 -0
- scipy/signal/tests/test_dltisys.py +599 -0
- scipy/signal/tests/test_filter_design.py +4744 -0
- scipy/signal/tests/test_fir_filter_design.py +851 -0
- scipy/signal/tests/test_ltisys.py +1225 -0
- scipy/signal/tests/test_max_len_seq.py +71 -0
- scipy/signal/tests/test_peak_finding.py +915 -0
- scipy/signal/tests/test_result_type.py +51 -0
- scipy/signal/tests/test_savitzky_golay.py +363 -0
- scipy/signal/tests/test_short_time_fft.py +1098 -0
- scipy/signal/tests/test_signaltools.py +4729 -0
- scipy/signal/tests/test_spectral.py +2103 -0
- scipy/signal/tests/test_splines.py +427 -0
- scipy/signal/tests/test_upfirdn.py +322 -0
- scipy/signal/tests/test_waveforms.py +400 -0
- scipy/signal/tests/test_wavelets.py +59 -0
- scipy/signal/tests/test_windows.py +987 -0
- scipy/signal/waveforms.py +20 -0
- scipy/signal/wavelets.py +17 -0
- scipy/signal/windows/__init__.py +52 -0
- scipy/signal/windows/_windows.py +2513 -0
- scipy/signal/windows/windows.py +23 -0
- scipy/sparse/__init__.py +350 -0
- scipy/sparse/_base.py +1613 -0
- scipy/sparse/_bsr.py +880 -0
- scipy/sparse/_compressed.py +1328 -0
- scipy/sparse/_construct.py +1454 -0
- scipy/sparse/_coo.py +1581 -0
- scipy/sparse/_csc.py +367 -0
- scipy/sparse/_csparsetools.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/_csr.py +558 -0
- scipy/sparse/_data.py +569 -0
- scipy/sparse/_dia.py +677 -0
- scipy/sparse/_dok.py +669 -0
- scipy/sparse/_extract.py +178 -0
- scipy/sparse/_index.py +444 -0
- scipy/sparse/_lil.py +632 -0
- scipy/sparse/_matrix.py +169 -0
- scipy/sparse/_matrix_io.py +167 -0
- scipy/sparse/_sparsetools.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/_spfuncs.py +76 -0
- scipy/sparse/_sputils.py +632 -0
- scipy/sparse/base.py +24 -0
- scipy/sparse/bsr.py +22 -0
- scipy/sparse/compressed.py +20 -0
- scipy/sparse/construct.py +38 -0
- scipy/sparse/coo.py +23 -0
- scipy/sparse/csc.py +22 -0
- scipy/sparse/csgraph/__init__.py +210 -0
- scipy/sparse/csgraph/_flow.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/csgraph/_laplacian.py +563 -0
- scipy/sparse/csgraph/_matching.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/csgraph/_reordering.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/csgraph/_shortest_path.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/csgraph/_tools.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/csgraph/_traversal.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/csgraph/_validation.py +66 -0
- scipy/sparse/csgraph/tests/__init__.py +0 -0
- scipy/sparse/csgraph/tests/test_connected_components.py +119 -0
- scipy/sparse/csgraph/tests/test_conversions.py +61 -0
- scipy/sparse/csgraph/tests/test_flow.py +209 -0
- scipy/sparse/csgraph/tests/test_graph_laplacian.py +368 -0
- scipy/sparse/csgraph/tests/test_matching.py +307 -0
- scipy/sparse/csgraph/tests/test_pydata_sparse.py +197 -0
- scipy/sparse/csgraph/tests/test_reordering.py +70 -0
- scipy/sparse/csgraph/tests/test_shortest_path.py +540 -0
- scipy/sparse/csgraph/tests/test_spanning_tree.py +66 -0
- scipy/sparse/csgraph/tests/test_traversal.py +148 -0
- scipy/sparse/csr.py +22 -0
- scipy/sparse/data.py +18 -0
- scipy/sparse/dia.py +22 -0
- scipy/sparse/dok.py +22 -0
- scipy/sparse/extract.py +23 -0
- scipy/sparse/lil.py +22 -0
- scipy/sparse/linalg/__init__.py +148 -0
- scipy/sparse/linalg/_dsolve/__init__.py +71 -0
- scipy/sparse/linalg/_dsolve/_add_newdocs.py +147 -0
- scipy/sparse/linalg/_dsolve/_superlu.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/linalg/_dsolve/linsolve.py +882 -0
- scipy/sparse/linalg/_dsolve/tests/__init__.py +0 -0
- scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +928 -0
- scipy/sparse/linalg/_eigen/__init__.py +22 -0
- scipy/sparse/linalg/_eigen/_svds.py +540 -0
- scipy/sparse/linalg/_eigen/_svds_doc.py +382 -0
- scipy/sparse/linalg/_eigen/arpack/COPYING +45 -0
- scipy/sparse/linalg/_eigen/arpack/__init__.py +20 -0
- scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/linalg/_eigen/arpack/arpack.py +1706 -0
- scipy/sparse/linalg/_eigen/arpack/tests/__init__.py +0 -0
- scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py +717 -0
- scipy/sparse/linalg/_eigen/lobpcg/__init__.py +16 -0
- scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +1110 -0
- scipy/sparse/linalg/_eigen/lobpcg/tests/__init__.py +0 -0
- scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py +725 -0
- scipy/sparse/linalg/_eigen/tests/__init__.py +0 -0
- scipy/sparse/linalg/_eigen/tests/test_svds.py +886 -0
- scipy/sparse/linalg/_expm_multiply.py +816 -0
- scipy/sparse/linalg/_interface.py +920 -0
- scipy/sparse/linalg/_isolve/__init__.py +20 -0
- scipy/sparse/linalg/_isolve/_gcrotmk.py +503 -0
- scipy/sparse/linalg/_isolve/iterative.py +1051 -0
- scipy/sparse/linalg/_isolve/lgmres.py +230 -0
- scipy/sparse/linalg/_isolve/lsmr.py +486 -0
- scipy/sparse/linalg/_isolve/lsqr.py +589 -0
- scipy/sparse/linalg/_isolve/minres.py +372 -0
- scipy/sparse/linalg/_isolve/tests/__init__.py +0 -0
- scipy/sparse/linalg/_isolve/tests/test_gcrotmk.py +183 -0
- scipy/sparse/linalg/_isolve/tests/test_iterative.py +809 -0
- scipy/sparse/linalg/_isolve/tests/test_lgmres.py +225 -0
- scipy/sparse/linalg/_isolve/tests/test_lsmr.py +185 -0
- scipy/sparse/linalg/_isolve/tests/test_lsqr.py +120 -0
- scipy/sparse/linalg/_isolve/tests/test_minres.py +97 -0
- scipy/sparse/linalg/_isolve/tests/test_utils.py +9 -0
- scipy/sparse/linalg/_isolve/tfqmr.py +179 -0
- scipy/sparse/linalg/_isolve/utils.py +121 -0
- scipy/sparse/linalg/_matfuncs.py +940 -0
- scipy/sparse/linalg/_norm.py +195 -0
- scipy/sparse/linalg/_onenormest.py +467 -0
- scipy/sparse/linalg/_propack/_cpropack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/linalg/_propack/_spropack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/sparse/linalg/_special_sparse_arrays.py +949 -0
- scipy/sparse/linalg/_svdp.py +309 -0
- scipy/sparse/linalg/dsolve.py +22 -0
- scipy/sparse/linalg/eigen.py +21 -0
- scipy/sparse/linalg/interface.py +20 -0
- scipy/sparse/linalg/isolve.py +22 -0
- scipy/sparse/linalg/matfuncs.py +18 -0
- scipy/sparse/linalg/tests/__init__.py +0 -0
- scipy/sparse/linalg/tests/propack_test_data.npz +0 -0
- scipy/sparse/linalg/tests/test_expm_multiply.py +367 -0
- scipy/sparse/linalg/tests/test_interface.py +561 -0
- scipy/sparse/linalg/tests/test_matfuncs.py +592 -0
- scipy/sparse/linalg/tests/test_norm.py +154 -0
- scipy/sparse/linalg/tests/test_onenormest.py +252 -0
- scipy/sparse/linalg/tests/test_propack.py +165 -0
- scipy/sparse/linalg/tests/test_pydata_sparse.py +272 -0
- scipy/sparse/linalg/tests/test_special_sparse_arrays.py +337 -0
- scipy/sparse/sparsetools.py +17 -0
- scipy/sparse/spfuncs.py +17 -0
- scipy/sparse/sputils.py +17 -0
- scipy/sparse/tests/__init__.py +0 -0
- scipy/sparse/tests/data/csc_py2.npz +0 -0
- scipy/sparse/tests/data/csc_py3.npz +0 -0
- scipy/sparse/tests/test_arithmetic1d.py +341 -0
- scipy/sparse/tests/test_array_api.py +561 -0
- scipy/sparse/tests/test_base.py +5870 -0
- scipy/sparse/tests/test_common1d.py +447 -0
- scipy/sparse/tests/test_construct.py +872 -0
- scipy/sparse/tests/test_coo.py +1119 -0
- scipy/sparse/tests/test_csc.py +98 -0
- scipy/sparse/tests/test_csr.py +214 -0
- scipy/sparse/tests/test_dok.py +209 -0
- scipy/sparse/tests/test_extract.py +51 -0
- scipy/sparse/tests/test_indexing1d.py +603 -0
- scipy/sparse/tests/test_matrix_io.py +109 -0
- scipy/sparse/tests/test_minmax1d.py +128 -0
- scipy/sparse/tests/test_sparsetools.py +344 -0
- scipy/sparse/tests/test_spfuncs.py +97 -0
- scipy/sparse/tests/test_sputils.py +424 -0
- scipy/spatial/__init__.py +129 -0
- scipy/spatial/_ckdtree.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/spatial/_distance_pybind.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/spatial/_distance_wrap.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/spatial/_geometric_slerp.py +238 -0
- scipy/spatial/_hausdorff.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/spatial/_kdtree.py +920 -0
- scipy/spatial/_plotutils.py +274 -0
- scipy/spatial/_procrustes.py +132 -0
- scipy/spatial/_qhull.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/spatial/_qhull.pyi +213 -0
- scipy/spatial/_spherical_voronoi.py +341 -0
- scipy/spatial/_voronoi.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/spatial/_voronoi.pyi +4 -0
- scipy/spatial/ckdtree.py +18 -0
- scipy/spatial/distance.py +3147 -0
- scipy/spatial/distance.pyi +210 -0
- scipy/spatial/kdtree.py +25 -0
- scipy/spatial/qhull.py +25 -0
- scipy/spatial/tests/__init__.py +0 -0
- scipy/spatial/tests/data/cdist-X1.txt +10 -0
- scipy/spatial/tests/data/cdist-X2.txt +20 -0
- scipy/spatial/tests/data/degenerate_pointset.npz +0 -0
- scipy/spatial/tests/data/iris.txt +150 -0
- scipy/spatial/tests/data/pdist-boolean-inp.txt +20 -0
- scipy/spatial/tests/data/pdist-chebyshev-ml-iris.txt +1 -0
- scipy/spatial/tests/data/pdist-chebyshev-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-cityblock-ml-iris.txt +1 -0
- scipy/spatial/tests/data/pdist-cityblock-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-correlation-ml-iris.txt +1 -0
- scipy/spatial/tests/data/pdist-correlation-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-cosine-ml-iris.txt +1 -0
- scipy/spatial/tests/data/pdist-cosine-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-double-inp.txt +20 -0
- scipy/spatial/tests/data/pdist-euclidean-ml-iris.txt +1 -0
- scipy/spatial/tests/data/pdist-euclidean-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-hamming-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-jaccard-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-jensenshannon-ml-iris.txt +1 -0
- scipy/spatial/tests/data/pdist-jensenshannon-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-minkowski-3.2-ml-iris.txt +1 -0
- scipy/spatial/tests/data/pdist-minkowski-3.2-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-minkowski-5.8-ml-iris.txt +1 -0
- scipy/spatial/tests/data/pdist-seuclidean-ml-iris.txt +1 -0
- scipy/spatial/tests/data/pdist-seuclidean-ml.txt +1 -0
- scipy/spatial/tests/data/pdist-spearman-ml.txt +1 -0
- scipy/spatial/tests/data/random-bool-data.txt +100 -0
- scipy/spatial/tests/data/random-double-data.txt +100 -0
- scipy/spatial/tests/data/random-int-data.txt +100 -0
- scipy/spatial/tests/data/random-uint-data.txt +100 -0
- scipy/spatial/tests/data/selfdual-4d-polytope.txt +27 -0
- scipy/spatial/tests/test__plotutils.py +91 -0
- scipy/spatial/tests/test__procrustes.py +116 -0
- scipy/spatial/tests/test_distance.py +2388 -0
- scipy/spatial/tests/test_hausdorff.py +199 -0
- scipy/spatial/tests/test_kdtree.py +1536 -0
- scipy/spatial/tests/test_qhull.py +1313 -0
- scipy/spatial/tests/test_slerp.py +417 -0
- scipy/spatial/tests/test_spherical_voronoi.py +358 -0
- scipy/spatial/transform/__init__.py +31 -0
- scipy/spatial/transform/_rigid_transform.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/spatial/transform/_rotation.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/spatial/transform/_rotation_groups.py +140 -0
- scipy/spatial/transform/_rotation_spline.py +460 -0
- scipy/spatial/transform/rotation.py +21 -0
- scipy/spatial/transform/tests/__init__.py +0 -0
- scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
- scipy/spatial/transform/tests/test_rotation.py +2569 -0
- scipy/spatial/transform/tests/test_rotation_groups.py +169 -0
- scipy/spatial/transform/tests/test_rotation_spline.py +183 -0
- scipy/special/__init__.pxd +1 -0
- scipy/special/__init__.py +841 -0
- scipy/special/_add_newdocs.py +9961 -0
- scipy/special/_basic.py +3576 -0
- scipy/special/_comb.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/special/_ellip_harm.py +214 -0
- scipy/special/_ellip_harm_2.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/special/_gufuncs.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/special/_input_validation.py +17 -0
- scipy/special/_lambertw.py +149 -0
- scipy/special/_logsumexp.py +426 -0
- scipy/special/_mptestutils.py +453 -0
- scipy/special/_multiufuncs.py +610 -0
- scipy/special/_orthogonal.py +2592 -0
- scipy/special/_orthogonal.pyi +330 -0
- scipy/special/_precompute/__init__.py +0 -0
- scipy/special/_precompute/cosine_cdf.py +17 -0
- scipy/special/_precompute/expn_asy.py +54 -0
- scipy/special/_precompute/gammainc_asy.py +116 -0
- scipy/special/_precompute/gammainc_data.py +124 -0
- scipy/special/_precompute/hyp2f1_data.py +484 -0
- scipy/special/_precompute/lambertw.py +68 -0
- scipy/special/_precompute/loggamma.py +43 -0
- scipy/special/_precompute/struve_convergence.py +131 -0
- scipy/special/_precompute/utils.py +38 -0
- scipy/special/_precompute/wright_bessel.py +342 -0
- scipy/special/_precompute/wright_bessel_data.py +152 -0
- scipy/special/_precompute/wrightomega.py +41 -0
- scipy/special/_precompute/zetac.py +27 -0
- scipy/special/_sf_error.py +15 -0
- scipy/special/_specfun.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/special/_special_ufuncs.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/special/_spfun_stats.py +106 -0
- scipy/special/_spherical_bessel.py +397 -0
- scipy/special/_support_alternative_backends.py +295 -0
- scipy/special/_test_internal.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/special/_test_internal.pyi +9 -0
- scipy/special/_testutils.py +321 -0
- scipy/special/_ufuncs.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/special/_ufuncs.pyi +522 -0
- scipy/special/_ufuncs.pyx +13173 -0
- scipy/special/_ufuncs_cxx.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/special/_ufuncs_cxx.pxd +142 -0
- scipy/special/_ufuncs_cxx.pyx +427 -0
- scipy/special/_ufuncs_cxx_defs.h +147 -0
- scipy/special/_ufuncs_defs.h +57 -0
- scipy/special/add_newdocs.py +15 -0
- scipy/special/basic.py +87 -0
- scipy/special/cython_special.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/special/cython_special.pxd +259 -0
- scipy/special/cython_special.pyi +3 -0
- scipy/special/orthogonal.py +45 -0
- scipy/special/sf_error.py +20 -0
- scipy/special/specfun.py +24 -0
- scipy/special/spfun_stats.py +17 -0
- scipy/special/tests/__init__.py +0 -0
- scipy/special/tests/_cython_examples/extending.pyx +12 -0
- scipy/special/tests/_cython_examples/meson.build +34 -0
- scipy/special/tests/data/__init__.py +0 -0
- scipy/special/tests/data/boost.npz +0 -0
- scipy/special/tests/data/gsl.npz +0 -0
- scipy/special/tests/data/local.npz +0 -0
- scipy/special/tests/test_basic.py +4815 -0
- scipy/special/tests/test_bdtr.py +112 -0
- scipy/special/tests/test_boost_ufuncs.py +64 -0
- scipy/special/tests/test_boxcox.py +125 -0
- scipy/special/tests/test_cdflib.py +712 -0
- scipy/special/tests/test_cdft_asymptotic.py +49 -0
- scipy/special/tests/test_cephes_intp_cast.py +29 -0
- scipy/special/tests/test_cosine_distr.py +83 -0
- scipy/special/tests/test_cython_special.py +363 -0
- scipy/special/tests/test_data.py +719 -0
- scipy/special/tests/test_dd.py +42 -0
- scipy/special/tests/test_digamma.py +45 -0
- scipy/special/tests/test_ellip_harm.py +278 -0
- scipy/special/tests/test_erfinv.py +89 -0
- scipy/special/tests/test_exponential_integrals.py +118 -0
- scipy/special/tests/test_extending.py +28 -0
- scipy/special/tests/test_faddeeva.py +85 -0
- scipy/special/tests/test_gamma.py +12 -0
- scipy/special/tests/test_gammainc.py +152 -0
- scipy/special/tests/test_hyp2f1.py +2566 -0
- scipy/special/tests/test_hypergeometric.py +234 -0
- scipy/special/tests/test_iv_ratio.py +249 -0
- scipy/special/tests/test_kolmogorov.py +491 -0
- scipy/special/tests/test_lambertw.py +109 -0
- scipy/special/tests/test_legendre.py +1518 -0
- scipy/special/tests/test_log1mexp.py +85 -0
- scipy/special/tests/test_loggamma.py +70 -0
- scipy/special/tests/test_logit.py +162 -0
- scipy/special/tests/test_logsumexp.py +469 -0
- scipy/special/tests/test_mpmath.py +2293 -0
- scipy/special/tests/test_nan_inputs.py +65 -0
- scipy/special/tests/test_ndtr.py +77 -0
- scipy/special/tests/test_ndtri_exp.py +94 -0
- scipy/special/tests/test_orthogonal.py +821 -0
- scipy/special/tests/test_orthogonal_eval.py +275 -0
- scipy/special/tests/test_owens_t.py +53 -0
- scipy/special/tests/test_pcf.py +24 -0
- scipy/special/tests/test_pdtr.py +48 -0
- scipy/special/tests/test_powm1.py +65 -0
- scipy/special/tests/test_precompute_expn_asy.py +24 -0
- scipy/special/tests/test_precompute_gammainc.py +108 -0
- scipy/special/tests/test_precompute_utils.py +36 -0
- scipy/special/tests/test_round.py +18 -0
- scipy/special/tests/test_sf_error.py +146 -0
- scipy/special/tests/test_sici.py +36 -0
- scipy/special/tests/test_specfun.py +48 -0
- scipy/special/tests/test_spence.py +32 -0
- scipy/special/tests/test_spfun_stats.py +61 -0
- scipy/special/tests/test_sph_harm.py +85 -0
- scipy/special/tests/test_spherical_bessel.py +400 -0
- scipy/special/tests/test_support_alternative_backends.py +248 -0
- scipy/special/tests/test_trig.py +72 -0
- scipy/special/tests/test_ufunc_signatures.py +46 -0
- scipy/special/tests/test_wright_bessel.py +205 -0
- scipy/special/tests/test_wrightomega.py +117 -0
- scipy/special/tests/test_zeta.py +301 -0
- scipy/stats/__init__.py +670 -0
- scipy/stats/_ansari_swilk_statistics.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_axis_nan_policy.py +692 -0
- scipy/stats/_biasedurn.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_biasedurn.pxd +27 -0
- scipy/stats/_binned_statistic.py +795 -0
- scipy/stats/_binomtest.py +375 -0
- scipy/stats/_bws_test.py +177 -0
- scipy/stats/_censored_data.py +459 -0
- scipy/stats/_common.py +5 -0
- scipy/stats/_constants.py +42 -0
- scipy/stats/_continued_fraction.py +387 -0
- scipy/stats/_continuous_distns.py +12486 -0
- scipy/stats/_correlation.py +210 -0
- scipy/stats/_covariance.py +636 -0
- scipy/stats/_crosstab.py +204 -0
- scipy/stats/_discrete_distns.py +2098 -0
- scipy/stats/_distn_infrastructure.py +4201 -0
- scipy/stats/_distr_params.py +299 -0
- scipy/stats/_distribution_infrastructure.py +5750 -0
- scipy/stats/_entropy.py +428 -0
- scipy/stats/_finite_differences.py +145 -0
- scipy/stats/_fit.py +1351 -0
- scipy/stats/_hypotests.py +2060 -0
- scipy/stats/_kde.py +732 -0
- scipy/stats/_ksstats.py +600 -0
- scipy/stats/_levy_stable/__init__.py +1231 -0
- scipy/stats/_levy_stable/levyst.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_mannwhitneyu.py +492 -0
- scipy/stats/_mgc.py +550 -0
- scipy/stats/_morestats.py +4626 -0
- scipy/stats/_mstats_basic.py +3658 -0
- scipy/stats/_mstats_extras.py +521 -0
- scipy/stats/_multicomp.py +449 -0
- scipy/stats/_multivariate.py +7281 -0
- scipy/stats/_new_distributions.py +452 -0
- scipy/stats/_odds_ratio.py +466 -0
- scipy/stats/_page_trend_test.py +486 -0
- scipy/stats/_probability_distribution.py +1964 -0
- scipy/stats/_qmc.py +2956 -0
- scipy/stats/_qmc_cy.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_qmc_cy.pyi +54 -0
- scipy/stats/_qmvnt.py +454 -0
- scipy/stats/_qmvnt_cy.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_quantile.py +335 -0
- scipy/stats/_rcont/__init__.py +4 -0
- scipy/stats/_rcont/rcont.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_relative_risk.py +263 -0
- scipy/stats/_resampling.py +2352 -0
- scipy/stats/_result_classes.py +40 -0
- scipy/stats/_sampling.py +1314 -0
- scipy/stats/_sensitivity_analysis.py +713 -0
- scipy/stats/_sobol.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_sobol.pyi +54 -0
- scipy/stats/_sobol_direction_numbers.npz +0 -0
- scipy/stats/_stats.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_stats.pxd +10 -0
- scipy/stats/_stats_mstats_common.py +322 -0
- scipy/stats/_stats_py.py +11089 -0
- scipy/stats/_stats_pythran.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_survival.py +683 -0
- scipy/stats/_tukeylambda_stats.py +199 -0
- scipy/stats/_unuran/__init__.py +0 -0
- scipy/stats/_unuran/unuran_wrapper.cpython-314t-x86_64-linux-gnu.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.pyi +179 -0
- scipy/stats/_variation.py +126 -0
- scipy/stats/_warnings_errors.py +38 -0
- scipy/stats/_wilcoxon.py +265 -0
- scipy/stats/biasedurn.py +16 -0
- scipy/stats/contingency.py +521 -0
- scipy/stats/distributions.py +24 -0
- scipy/stats/kde.py +18 -0
- scipy/stats/morestats.py +27 -0
- scipy/stats/mstats.py +140 -0
- scipy/stats/mstats_basic.py +42 -0
- scipy/stats/mstats_extras.py +25 -0
- scipy/stats/mvn.py +17 -0
- scipy/stats/qmc.py +236 -0
- scipy/stats/sampling.py +73 -0
- scipy/stats/stats.py +41 -0
- scipy/stats/tests/__init__.py +0 -0
- scipy/stats/tests/common_tests.py +356 -0
- scipy/stats/tests/data/_mvt.py +171 -0
- scipy/stats/tests/data/fisher_exact_results_from_r.py +607 -0
- scipy/stats/tests/data/jf_skew_t_gamlss_pdf_data.npy +0 -0
- scipy/stats/tests/data/levy_stable/stable-Z1-cdf-sample-data.npy +0 -0
- scipy/stats/tests/data/levy_stable/stable-Z1-pdf-sample-data.npy +0 -0
- scipy/stats/tests/data/levy_stable/stable-loc-scale-sample-data.npy +0 -0
- scipy/stats/tests/data/nist_anova/AtmWtAg.dat +108 -0
- scipy/stats/tests/data/nist_anova/SiRstv.dat +85 -0
- scipy/stats/tests/data/nist_anova/SmLs01.dat +249 -0
- scipy/stats/tests/data/nist_anova/SmLs02.dat +1869 -0
- scipy/stats/tests/data/nist_anova/SmLs03.dat +18069 -0
- scipy/stats/tests/data/nist_anova/SmLs04.dat +249 -0
- scipy/stats/tests/data/nist_anova/SmLs05.dat +1869 -0
- scipy/stats/tests/data/nist_anova/SmLs06.dat +18069 -0
- scipy/stats/tests/data/nist_anova/SmLs07.dat +249 -0
- scipy/stats/tests/data/nist_anova/SmLs08.dat +1869 -0
- scipy/stats/tests/data/nist_anova/SmLs09.dat +18069 -0
- scipy/stats/tests/data/nist_linregress/Norris.dat +97 -0
- scipy/stats/tests/data/rel_breitwigner_pdf_sample_data_ROOT.npy +0 -0
- scipy/stats/tests/data/studentized_range_mpmath_ref.json +1499 -0
- scipy/stats/tests/test_axis_nan_policy.py +1388 -0
- scipy/stats/tests/test_binned_statistic.py +568 -0
- scipy/stats/tests/test_censored_data.py +152 -0
- scipy/stats/tests/test_contingency.py +294 -0
- scipy/stats/tests/test_continued_fraction.py +173 -0
- scipy/stats/tests/test_continuous.py +2198 -0
- scipy/stats/tests/test_continuous_basic.py +1053 -0
- scipy/stats/tests/test_continuous_fit_censored.py +683 -0
- scipy/stats/tests/test_correlation.py +80 -0
- scipy/stats/tests/test_crosstab.py +115 -0
- scipy/stats/tests/test_discrete_basic.py +580 -0
- scipy/stats/tests/test_discrete_distns.py +700 -0
- scipy/stats/tests/test_distributions.py +10413 -0
- scipy/stats/tests/test_entropy.py +322 -0
- scipy/stats/tests/test_fast_gen_inversion.py +435 -0
- scipy/stats/tests/test_fit.py +1090 -0
- scipy/stats/tests/test_hypotests.py +1991 -0
- scipy/stats/tests/test_kdeoth.py +676 -0
- scipy/stats/tests/test_marray.py +289 -0
- scipy/stats/tests/test_mgc.py +217 -0
- scipy/stats/tests/test_morestats.py +3259 -0
- scipy/stats/tests/test_mstats_basic.py +2071 -0
- scipy/stats/tests/test_mstats_extras.py +172 -0
- scipy/stats/tests/test_multicomp.py +405 -0
- scipy/stats/tests/test_multivariate.py +4381 -0
- scipy/stats/tests/test_odds_ratio.py +148 -0
- scipy/stats/tests/test_qmc.py +1492 -0
- scipy/stats/tests/test_quantile.py +199 -0
- scipy/stats/tests/test_rank.py +345 -0
- scipy/stats/tests/test_relative_risk.py +95 -0
- scipy/stats/tests/test_resampling.py +2000 -0
- scipy/stats/tests/test_sampling.py +1450 -0
- scipy/stats/tests/test_sensitivity_analysis.py +310 -0
- scipy/stats/tests/test_stats.py +9707 -0
- scipy/stats/tests/test_survival.py +466 -0
- scipy/stats/tests/test_tukeylambda_stats.py +85 -0
- scipy/stats/tests/test_variation.py +216 -0
- scipy/version.py +12 -0
- scipy-1.16.1.dist-info/LICENSE.txt +934 -0
- scipy-1.16.1.dist-info/METADATA +1083 -0
- scipy-1.16.1.dist-info/RECORD +1417 -0
- scipy-1.16.1.dist-info/WHEEL +6 -0
- scipy.libs/libgfortran-040039e1-0352e75f.so.5.0.0 +0 -0
- scipy.libs/libgfortran-040039e1.so.5.0.0 +0 -0
- scipy.libs/libquadmath-96973f99-934c22de.so.0.0.0 +0 -0
- scipy.libs/libquadmath-96973f99.so.0.0.0 +0 -0
- scipy.libs/libscipy_openblas-68440149.so +0 -0
@@ -0,0 +1,598 @@
|
|
1
|
+
"""Constraints definition for minimize."""
|
2
|
+
from warnings import warn, catch_warnings, simplefilter, filterwarnings
|
3
|
+
|
4
|
+
import numpy as np
|
5
|
+
|
6
|
+
from ._differentiable_functions import (
|
7
|
+
VectorFunction, LinearVectorFunction, IdentityVectorFunction
|
8
|
+
)
|
9
|
+
from ._hessian_update_strategy import BFGS
|
10
|
+
from ._optimize import OptimizeWarning
|
11
|
+
|
12
|
+
from scipy._lib._sparse import issparse
|
13
|
+
|
14
|
+
|
15
|
+
def _arr_to_scalar(x):
|
16
|
+
# If x is a numpy array, return x.item(). This will
|
17
|
+
# fail if the array has more than one element.
|
18
|
+
return x.item() if isinstance(x, np.ndarray) else x
|
19
|
+
|
20
|
+
|
21
|
+
class NonlinearConstraint:
|
22
|
+
"""Nonlinear constraint on the variables.
|
23
|
+
|
24
|
+
The constraint has the general inequality form::
|
25
|
+
|
26
|
+
lb <= fun(x) <= ub
|
27
|
+
|
28
|
+
Here the vector of independent variables x is passed as ndarray of shape
|
29
|
+
(n,) and ``fun`` returns a vector with m components.
|
30
|
+
|
31
|
+
It is possible to use equal bounds to represent an equality constraint or
|
32
|
+
infinite bounds to represent a one-sided constraint.
|
33
|
+
|
34
|
+
Parameters
|
35
|
+
----------
|
36
|
+
fun : callable
|
37
|
+
The function defining the constraint.
|
38
|
+
The signature is ``fun(x) -> array_like, shape (m,)``.
|
39
|
+
lb, ub : array_like
|
40
|
+
Lower and upper bounds on the constraint. Each array must have the
|
41
|
+
shape (m,) or be a scalar, in the latter case a bound will be the same
|
42
|
+
for all components of the constraint. Use ``np.inf`` with an
|
43
|
+
appropriate sign to specify a one-sided constraint.
|
44
|
+
Set components of `lb` and `ub` equal to represent an equality
|
45
|
+
constraint. Note that you can mix constraints of different types:
|
46
|
+
interval, one-sided or equality, by setting different components of
|
47
|
+
`lb` and `ub` as necessary.
|
48
|
+
jac : {callable, '2-point', '3-point', 'cs'}, optional
|
49
|
+
Method of computing the Jacobian matrix (an m-by-n matrix,
|
50
|
+
where element (i, j) is the partial derivative of f[i] with
|
51
|
+
respect to x[j]). The keywords {'2-point', '3-point',
|
52
|
+
'cs'} select a finite difference scheme for the numerical estimation.
|
53
|
+
A callable must have the following signature::
|
54
|
+
|
55
|
+
jac(x) -> {ndarray, sparse array}, shape (m, n)
|
56
|
+
|
57
|
+
Default is '2-point'.
|
58
|
+
hess : {callable, '2-point', '3-point', 'cs', HessianUpdateStrategy, None}, optional
|
59
|
+
Method for computing the Hessian matrix. The keywords
|
60
|
+
{'2-point', '3-point', 'cs'} select a finite difference scheme for
|
61
|
+
numerical estimation. Alternatively, objects implementing
|
62
|
+
`HessianUpdateStrategy` interface can be used to approximate the
|
63
|
+
Hessian. Currently available implementations are:
|
64
|
+
|
65
|
+
- `BFGS` (default option)
|
66
|
+
- `SR1`
|
67
|
+
|
68
|
+
A callable must return the Hessian matrix of ``dot(fun, v)`` and
|
69
|
+
must have the following signature:
|
70
|
+
``hess(x, v) -> {LinearOperator, sparse array, array_like}, shape (n, n)``.
|
71
|
+
Here ``v`` is ndarray with shape (m,) containing Lagrange multipliers.
|
72
|
+
keep_feasible : array_like of bool, optional
|
73
|
+
Whether to keep the constraint components feasible throughout
|
74
|
+
iterations. A single value set this property for all components.
|
75
|
+
Default is False. Has no effect for equality constraints.
|
76
|
+
finite_diff_rel_step: None or array_like, optional
|
77
|
+
Relative step size for the finite difference approximation. Default is
|
78
|
+
None, which will select a reasonable value automatically depending
|
79
|
+
on a finite difference scheme.
|
80
|
+
finite_diff_jac_sparsity: {None, array_like, sparse array}, optional
|
81
|
+
Defines the sparsity structure of the Jacobian matrix for finite
|
82
|
+
difference estimation, its shape must be (m, n). If the Jacobian has
|
83
|
+
only few non-zero elements in *each* row, providing the sparsity
|
84
|
+
structure will greatly speed up the computations. A zero entry means
|
85
|
+
that a corresponding element in the Jacobian is identically zero.
|
86
|
+
If provided, forces the use of 'lsmr' trust-region solver.
|
87
|
+
If None (default) then dense differencing will be used.
|
88
|
+
|
89
|
+
Notes
|
90
|
+
-----
|
91
|
+
Finite difference schemes {'2-point', '3-point', 'cs'} may be used for
|
92
|
+
approximating either the Jacobian or the Hessian. We, however, do not allow
|
93
|
+
its use for approximating both simultaneously. Hence whenever the Jacobian
|
94
|
+
is estimated via finite-differences, we require the Hessian to be estimated
|
95
|
+
using one of the quasi-Newton strategies.
|
96
|
+
|
97
|
+
The scheme 'cs' is potentially the most accurate, but requires the function
|
98
|
+
to correctly handles complex inputs and be analytically continuable to the
|
99
|
+
complex plane. The scheme '3-point' is more accurate than '2-point' but
|
100
|
+
requires twice as many operations.
|
101
|
+
|
102
|
+
Examples
|
103
|
+
--------
|
104
|
+
Constrain ``x[0] < sin(x[1]) + 1.9``
|
105
|
+
|
106
|
+
>>> from scipy.optimize import NonlinearConstraint
|
107
|
+
>>> import numpy as np
|
108
|
+
>>> con = lambda x: x[0] - np.sin(x[1])
|
109
|
+
>>> nlc = NonlinearConstraint(con, -np.inf, 1.9)
|
110
|
+
|
111
|
+
"""
|
112
|
+
def __init__(self, fun, lb, ub, jac='2-point', hess=None,
|
113
|
+
keep_feasible=False, finite_diff_rel_step=None,
|
114
|
+
finite_diff_jac_sparsity=None):
|
115
|
+
if hess is None:
|
116
|
+
hess = BFGS()
|
117
|
+
self.fun = fun
|
118
|
+
self.lb = lb
|
119
|
+
self.ub = ub
|
120
|
+
self.finite_diff_rel_step = finite_diff_rel_step
|
121
|
+
self.finite_diff_jac_sparsity = finite_diff_jac_sparsity
|
122
|
+
self.jac = jac
|
123
|
+
self.hess = hess
|
124
|
+
self.keep_feasible = keep_feasible
|
125
|
+
|
126
|
+
|
127
|
+
class LinearConstraint:
|
128
|
+
"""Linear constraint on the variables.
|
129
|
+
|
130
|
+
The constraint has the general inequality form::
|
131
|
+
|
132
|
+
lb <= A.dot(x) <= ub
|
133
|
+
|
134
|
+
Here the vector of independent variables x is passed as ndarray of shape
|
135
|
+
(n,) and the matrix A has shape (m, n).
|
136
|
+
|
137
|
+
It is possible to use equal bounds to represent an equality constraint or
|
138
|
+
infinite bounds to represent a one-sided constraint.
|
139
|
+
|
140
|
+
Parameters
|
141
|
+
----------
|
142
|
+
A : {array_like, sparse array}, shape (m, n)
|
143
|
+
Matrix defining the constraint.
|
144
|
+
lb, ub : dense array_like, optional
|
145
|
+
Lower and upper limits on the constraint. Each array must have the
|
146
|
+
shape (m,) or be a scalar, in the latter case a bound will be the same
|
147
|
+
for all components of the constraint. Use ``np.inf`` with an
|
148
|
+
appropriate sign to specify a one-sided constraint.
|
149
|
+
Set components of `lb` and `ub` equal to represent an equality
|
150
|
+
constraint. Note that you can mix constraints of different types:
|
151
|
+
interval, one-sided or equality, by setting different components of
|
152
|
+
`lb` and `ub` as necessary. Defaults to ``lb = -np.inf``
|
153
|
+
and ``ub = np.inf`` (no limits).
|
154
|
+
keep_feasible : dense array_like of bool, optional
|
155
|
+
Whether to keep the constraint components feasible throughout
|
156
|
+
iterations. A single value set this property for all components.
|
157
|
+
Default is False. Has no effect for equality constraints.
|
158
|
+
"""
|
159
|
+
def _input_validation(self):
|
160
|
+
if self.A.ndim != 2:
|
161
|
+
message = "`A` must have exactly two dimensions."
|
162
|
+
raise ValueError(message)
|
163
|
+
|
164
|
+
try:
|
165
|
+
shape = self.A.shape[0:1]
|
166
|
+
self.lb = np.broadcast_to(self.lb, shape)
|
167
|
+
self.ub = np.broadcast_to(self.ub, shape)
|
168
|
+
self.keep_feasible = np.broadcast_to(self.keep_feasible, shape)
|
169
|
+
except ValueError:
|
170
|
+
message = ("`lb`, `ub`, and `keep_feasible` must be broadcastable "
|
171
|
+
"to shape `A.shape[0:1]`")
|
172
|
+
raise ValueError(message)
|
173
|
+
|
174
|
+
def __init__(self, A, lb=-np.inf, ub=np.inf, keep_feasible=False):
|
175
|
+
if not issparse(A):
|
176
|
+
# In some cases, if the constraint is not valid, this emits a
|
177
|
+
# VisibleDeprecationWarning about ragged nested sequences
|
178
|
+
# before eventually causing an error. `scipy.optimize.milp` would
|
179
|
+
# prefer that this just error out immediately so it can handle it
|
180
|
+
# rather than concerning the user.
|
181
|
+
with catch_warnings():
|
182
|
+
simplefilter("error")
|
183
|
+
self.A = np.atleast_2d(A).astype(np.float64)
|
184
|
+
else:
|
185
|
+
self.A = A
|
186
|
+
if issparse(lb) or issparse(ub):
|
187
|
+
raise ValueError("Constraint limits must be dense arrays.")
|
188
|
+
self.lb = np.atleast_1d(lb).astype(np.float64)
|
189
|
+
self.ub = np.atleast_1d(ub).astype(np.float64)
|
190
|
+
|
191
|
+
if issparse(keep_feasible):
|
192
|
+
raise ValueError("`keep_feasible` must be a dense array.")
|
193
|
+
self.keep_feasible = np.atleast_1d(keep_feasible).astype(bool)
|
194
|
+
self._input_validation()
|
195
|
+
|
196
|
+
def residual(self, x):
|
197
|
+
"""
|
198
|
+
Calculate the residual between the constraint function and the limits
|
199
|
+
|
200
|
+
For a linear constraint of the form::
|
201
|
+
|
202
|
+
lb <= A@x <= ub
|
203
|
+
|
204
|
+
the lower and upper residuals between ``A@x`` and the limits are values
|
205
|
+
``sl`` and ``sb`` such that::
|
206
|
+
|
207
|
+
lb + sl == A@x == ub - sb
|
208
|
+
|
209
|
+
When all elements of ``sl`` and ``sb`` are positive, all elements of
|
210
|
+
the constraint are satisfied; a negative element in ``sl`` or ``sb``
|
211
|
+
indicates that the corresponding element of the constraint is not
|
212
|
+
satisfied.
|
213
|
+
|
214
|
+
Parameters
|
215
|
+
----------
|
216
|
+
x: array_like
|
217
|
+
Vector of independent variables
|
218
|
+
|
219
|
+
Returns
|
220
|
+
-------
|
221
|
+
sl, sb : array-like
|
222
|
+
The lower and upper residuals
|
223
|
+
"""
|
224
|
+
return self.A@x - self.lb, self.ub - self.A@x
|
225
|
+
|
226
|
+
|
227
|
+
class Bounds:
|
228
|
+
"""Bounds constraint on the variables.
|
229
|
+
|
230
|
+
The constraint has the general inequality form::
|
231
|
+
|
232
|
+
lb <= x <= ub
|
233
|
+
|
234
|
+
It is possible to use equal bounds to represent an equality constraint or
|
235
|
+
infinite bounds to represent a one-sided constraint.
|
236
|
+
|
237
|
+
Parameters
|
238
|
+
----------
|
239
|
+
lb, ub : dense array_like, optional
|
240
|
+
Lower and upper bounds on independent variables. `lb`, `ub`, and
|
241
|
+
`keep_feasible` must be the same shape or broadcastable.
|
242
|
+
Set components of `lb` and `ub` equal
|
243
|
+
to fix a variable. Use ``np.inf`` with an appropriate sign to disable
|
244
|
+
bounds on all or some variables. Note that you can mix constraints of
|
245
|
+
different types: interval, one-sided or equality, by setting different
|
246
|
+
components of `lb` and `ub` as necessary. Defaults to ``lb = -np.inf``
|
247
|
+
and ``ub = np.inf`` (no bounds).
|
248
|
+
keep_feasible : dense array_like of bool, optional
|
249
|
+
Whether to keep the constraint components feasible throughout
|
250
|
+
iterations. Must be broadcastable with `lb` and `ub`.
|
251
|
+
Default is False. Has no effect for equality constraints.
|
252
|
+
"""
|
253
|
+
def _input_validation(self):
|
254
|
+
try:
|
255
|
+
res = np.broadcast_arrays(self.lb, self.ub, self.keep_feasible)
|
256
|
+
self.lb, self.ub, self.keep_feasible = res
|
257
|
+
except ValueError:
|
258
|
+
message = "`lb`, `ub`, and `keep_feasible` must be broadcastable."
|
259
|
+
raise ValueError(message)
|
260
|
+
|
261
|
+
def __init__(self, lb=-np.inf, ub=np.inf, keep_feasible=False):
|
262
|
+
if issparse(lb) or issparse(ub):
|
263
|
+
raise ValueError("Lower and upper bounds must be dense arrays.")
|
264
|
+
self.lb = np.atleast_1d(lb)
|
265
|
+
self.ub = np.atleast_1d(ub)
|
266
|
+
|
267
|
+
if issparse(keep_feasible):
|
268
|
+
raise ValueError("`keep_feasible` must be a dense array.")
|
269
|
+
self.keep_feasible = np.atleast_1d(keep_feasible).astype(bool)
|
270
|
+
self._input_validation()
|
271
|
+
|
272
|
+
def __repr__(self):
|
273
|
+
start = f"{type(self).__name__}({self.lb!r}, {self.ub!r}"
|
274
|
+
if np.any(self.keep_feasible):
|
275
|
+
end = f", keep_feasible={self.keep_feasible!r})"
|
276
|
+
else:
|
277
|
+
end = ")"
|
278
|
+
return start + end
|
279
|
+
|
280
|
+
def residual(self, x):
|
281
|
+
"""Calculate the residual (slack) between the input and the bounds
|
282
|
+
|
283
|
+
For a bound constraint of the form::
|
284
|
+
|
285
|
+
lb <= x <= ub
|
286
|
+
|
287
|
+
the lower and upper residuals between `x` and the bounds are values
|
288
|
+
``sl`` and ``sb`` such that::
|
289
|
+
|
290
|
+
lb + sl == x == ub - sb
|
291
|
+
|
292
|
+
When all elements of ``sl`` and ``sb`` are positive, all elements of
|
293
|
+
``x`` lie within the bounds; a negative element in ``sl`` or ``sb``
|
294
|
+
indicates that the corresponding element of ``x`` is out of bounds.
|
295
|
+
|
296
|
+
Parameters
|
297
|
+
----------
|
298
|
+
x: array_like
|
299
|
+
Vector of independent variables
|
300
|
+
|
301
|
+
Returns
|
302
|
+
-------
|
303
|
+
sl, sb : array-like
|
304
|
+
The lower and upper residuals
|
305
|
+
"""
|
306
|
+
return x - self.lb, self.ub - x
|
307
|
+
|
308
|
+
|
309
|
+
class PreparedConstraint:
|
310
|
+
"""Constraint prepared from a user defined constraint.
|
311
|
+
|
312
|
+
On creation it will check whether a constraint definition is valid and
|
313
|
+
the initial point is feasible. If created successfully, it will contain
|
314
|
+
the attributes listed below.
|
315
|
+
|
316
|
+
Parameters
|
317
|
+
----------
|
318
|
+
constraint : {NonlinearConstraint, LinearConstraint`, Bounds}
|
319
|
+
Constraint to check and prepare.
|
320
|
+
x0 : array_like
|
321
|
+
Initial vector of independent variables.
|
322
|
+
sparse_jacobian : bool or None, optional
|
323
|
+
If bool, then the Jacobian of the constraint will be converted
|
324
|
+
to the corresponded format if necessary. If None (default), such
|
325
|
+
conversion is not made.
|
326
|
+
finite_diff_bounds : 2-tuple, optional
|
327
|
+
Lower and upper bounds on the independent variables for the finite
|
328
|
+
difference approximation, if applicable. Defaults to no bounds.
|
329
|
+
|
330
|
+
Attributes
|
331
|
+
----------
|
332
|
+
fun : {VectorFunction, LinearVectorFunction, IdentityVectorFunction}
|
333
|
+
Function defining the constraint wrapped by one of the convenience
|
334
|
+
classes.
|
335
|
+
bounds : 2-tuple
|
336
|
+
Contains lower and upper bounds for the constraints --- lb and ub.
|
337
|
+
These are converted to ndarray and have a size equal to the number of
|
338
|
+
the constraints.
|
339
|
+
keep_feasible : ndarray
|
340
|
+
Array indicating which components must be kept feasible with a size
|
341
|
+
equal to the number of the constraints.
|
342
|
+
"""
|
343
|
+
def __init__(self, constraint, x0, sparse_jacobian=None,
|
344
|
+
finite_diff_bounds=(-np.inf, np.inf)):
|
345
|
+
if isinstance(constraint, NonlinearConstraint):
|
346
|
+
fun = VectorFunction(constraint.fun, x0,
|
347
|
+
constraint.jac, constraint.hess,
|
348
|
+
constraint.finite_diff_rel_step,
|
349
|
+
constraint.finite_diff_jac_sparsity,
|
350
|
+
finite_diff_bounds, sparse_jacobian)
|
351
|
+
elif isinstance(constraint, LinearConstraint):
|
352
|
+
fun = LinearVectorFunction(constraint.A, x0, sparse_jacobian)
|
353
|
+
elif isinstance(constraint, Bounds):
|
354
|
+
fun = IdentityVectorFunction(x0, sparse_jacobian)
|
355
|
+
else:
|
356
|
+
raise ValueError("`constraint` of an unknown type is passed.")
|
357
|
+
|
358
|
+
m = fun.m
|
359
|
+
|
360
|
+
lb = np.asarray(constraint.lb, dtype=float)
|
361
|
+
ub = np.asarray(constraint.ub, dtype=float)
|
362
|
+
keep_feasible = np.asarray(constraint.keep_feasible, dtype=bool)
|
363
|
+
|
364
|
+
lb = np.broadcast_to(lb, m)
|
365
|
+
ub = np.broadcast_to(ub, m)
|
366
|
+
keep_feasible = np.broadcast_to(keep_feasible, m)
|
367
|
+
|
368
|
+
if keep_feasible.shape != (m,):
|
369
|
+
raise ValueError("`keep_feasible` has a wrong shape.")
|
370
|
+
|
371
|
+
mask = keep_feasible & (lb != ub)
|
372
|
+
f0 = fun.f
|
373
|
+
if np.any(f0[mask] < lb[mask]) or np.any(f0[mask] > ub[mask]):
|
374
|
+
raise ValueError("`x0` is infeasible with respect to some "
|
375
|
+
"inequality constraint with `keep_feasible` "
|
376
|
+
"set to True.")
|
377
|
+
|
378
|
+
self.fun = fun
|
379
|
+
self.bounds = (lb, ub)
|
380
|
+
self.keep_feasible = keep_feasible
|
381
|
+
|
382
|
+
def violation(self, x):
|
383
|
+
"""How much the constraint is exceeded by.
|
384
|
+
|
385
|
+
Parameters
|
386
|
+
----------
|
387
|
+
x : array-like
|
388
|
+
Vector of independent variables
|
389
|
+
|
390
|
+
Returns
|
391
|
+
-------
|
392
|
+
excess : array-like
|
393
|
+
How much the constraint is exceeded by, for each of the
|
394
|
+
constraints specified by `PreparedConstraint.fun`.
|
395
|
+
"""
|
396
|
+
with catch_warnings():
|
397
|
+
# Ignore the following warning, it's not important when
|
398
|
+
# figuring out total violation
|
399
|
+
# UserWarning: delta_grad == 0.0. Check if the approximated
|
400
|
+
# function is linear
|
401
|
+
filterwarnings("ignore", "delta_grad", UserWarning)
|
402
|
+
ev = self.fun.fun(np.asarray(x))
|
403
|
+
|
404
|
+
excess_lb = np.maximum(self.bounds[0] - ev, 0)
|
405
|
+
excess_ub = np.maximum(ev - self.bounds[1], 0)
|
406
|
+
|
407
|
+
return excess_lb + excess_ub
|
408
|
+
|
409
|
+
|
410
|
+
def new_bounds_to_old(lb, ub, n):
|
411
|
+
"""Convert the new bounds representation to the old one.
|
412
|
+
|
413
|
+
The new representation is a tuple (lb, ub) and the old one is a list
|
414
|
+
containing n tuples, ith containing lower and upper bound on a ith
|
415
|
+
variable.
|
416
|
+
If any of the entries in lb/ub are -np.inf/np.inf they are replaced by
|
417
|
+
None.
|
418
|
+
"""
|
419
|
+
lb = np.broadcast_to(lb, n)
|
420
|
+
ub = np.broadcast_to(ub, n)
|
421
|
+
|
422
|
+
lb = [float(x) if x > -np.inf else None for x in lb]
|
423
|
+
ub = [float(x) if x < np.inf else None for x in ub]
|
424
|
+
|
425
|
+
return list(zip(lb, ub))
|
426
|
+
|
427
|
+
|
428
|
+
def old_bound_to_new(bounds):
|
429
|
+
"""Convert the old bounds representation to the new one.
|
430
|
+
|
431
|
+
The new representation is a tuple (lb, ub) and the old one is a list
|
432
|
+
containing n tuples, ith containing lower and upper bound on a ith
|
433
|
+
variable.
|
434
|
+
If any of the entries in lb/ub are None they are replaced by
|
435
|
+
-np.inf/np.inf.
|
436
|
+
"""
|
437
|
+
lb, ub = zip(*bounds)
|
438
|
+
|
439
|
+
# Convert occurrences of None to -inf or inf, and replace occurrences of
|
440
|
+
# any numpy array x with x.item(). Then wrap the results in numpy arrays.
|
441
|
+
lb = np.array([float(_arr_to_scalar(x)) if x is not None else -np.inf
|
442
|
+
for x in lb])
|
443
|
+
ub = np.array([float(_arr_to_scalar(x)) if x is not None else np.inf
|
444
|
+
for x in ub])
|
445
|
+
|
446
|
+
return lb, ub
|
447
|
+
|
448
|
+
|
449
|
+
def strict_bounds(lb, ub, keep_feasible, n_vars):
|
450
|
+
"""Remove bounds which are not asked to be kept feasible."""
|
451
|
+
strict_lb = np.resize(lb, n_vars).astype(float)
|
452
|
+
strict_ub = np.resize(ub, n_vars).astype(float)
|
453
|
+
keep_feasible = np.resize(keep_feasible, n_vars)
|
454
|
+
strict_lb[~keep_feasible] = -np.inf
|
455
|
+
strict_ub[~keep_feasible] = np.inf
|
456
|
+
return strict_lb, strict_ub
|
457
|
+
|
458
|
+
|
459
|
+
def new_constraint_to_old(con, x0):
|
460
|
+
"""
|
461
|
+
Converts new-style constraint objects to old-style constraint dictionaries.
|
462
|
+
"""
|
463
|
+
if isinstance(con, NonlinearConstraint):
|
464
|
+
if (con.finite_diff_jac_sparsity is not None or
|
465
|
+
con.finite_diff_rel_step is not None or
|
466
|
+
not isinstance(con.hess, BFGS) or # misses user specified BFGS
|
467
|
+
con.keep_feasible):
|
468
|
+
warn("Constraint options `finite_diff_jac_sparsity`, "
|
469
|
+
"`finite_diff_rel_step`, `keep_feasible`, and `hess`"
|
470
|
+
"are ignored by this method.",
|
471
|
+
OptimizeWarning, stacklevel=3)
|
472
|
+
|
473
|
+
fun = con.fun
|
474
|
+
if callable(con.jac):
|
475
|
+
jac = con.jac
|
476
|
+
else:
|
477
|
+
jac = None
|
478
|
+
|
479
|
+
else: # LinearConstraint
|
480
|
+
if np.any(con.keep_feasible):
|
481
|
+
warn("Constraint option `keep_feasible` is ignored by this method.",
|
482
|
+
OptimizeWarning, stacklevel=3)
|
483
|
+
|
484
|
+
A = con.A
|
485
|
+
if issparse(A):
|
486
|
+
A = A.toarray()
|
487
|
+
def fun(x):
|
488
|
+
return np.dot(A, x)
|
489
|
+
def jac(x):
|
490
|
+
return A
|
491
|
+
|
492
|
+
# FIXME: when bugs in VectorFunction/LinearVectorFunction are worked out,
|
493
|
+
# use pcon.fun.fun and pcon.fun.jac. Until then, get fun/jac above.
|
494
|
+
pcon = PreparedConstraint(con, x0)
|
495
|
+
lb, ub = pcon.bounds
|
496
|
+
|
497
|
+
i_eq = lb == ub
|
498
|
+
i_bound_below = np.logical_xor(lb != -np.inf, i_eq)
|
499
|
+
i_bound_above = np.logical_xor(ub != np.inf, i_eq)
|
500
|
+
i_unbounded = np.logical_and(lb == -np.inf, ub == np.inf)
|
501
|
+
|
502
|
+
if np.any(i_unbounded):
|
503
|
+
warn("At least one constraint is unbounded above and below. Such "
|
504
|
+
"constraints are ignored.",
|
505
|
+
OptimizeWarning, stacklevel=3)
|
506
|
+
|
507
|
+
ceq = []
|
508
|
+
if np.any(i_eq):
|
509
|
+
def f_eq(x):
|
510
|
+
y = np.array(fun(x)).flatten()
|
511
|
+
return y[i_eq] - lb[i_eq]
|
512
|
+
ceq = [{"type": "eq", "fun": f_eq}]
|
513
|
+
|
514
|
+
if jac is not None:
|
515
|
+
def j_eq(x):
|
516
|
+
dy = jac(x)
|
517
|
+
if issparse(dy):
|
518
|
+
dy = dy.toarray()
|
519
|
+
dy = np.atleast_2d(dy)
|
520
|
+
return dy[i_eq, :]
|
521
|
+
ceq[0]["jac"] = j_eq
|
522
|
+
|
523
|
+
cineq = []
|
524
|
+
n_bound_below = np.sum(i_bound_below)
|
525
|
+
n_bound_above = np.sum(i_bound_above)
|
526
|
+
if n_bound_below + n_bound_above:
|
527
|
+
def f_ineq(x):
|
528
|
+
y = np.zeros(n_bound_below + n_bound_above)
|
529
|
+
y_all = np.array(fun(x)).flatten()
|
530
|
+
y[:n_bound_below] = y_all[i_bound_below] - lb[i_bound_below]
|
531
|
+
y[n_bound_below:] = -(y_all[i_bound_above] - ub[i_bound_above])
|
532
|
+
return y
|
533
|
+
cineq = [{"type": "ineq", "fun": f_ineq}]
|
534
|
+
|
535
|
+
if jac is not None:
|
536
|
+
def j_ineq(x):
|
537
|
+
dy = np.zeros((n_bound_below + n_bound_above, len(x0)))
|
538
|
+
dy_all = jac(x)
|
539
|
+
if issparse(dy_all):
|
540
|
+
dy_all = dy_all.toarray()
|
541
|
+
dy_all = np.atleast_2d(dy_all)
|
542
|
+
dy[:n_bound_below, :] = dy_all[i_bound_below]
|
543
|
+
dy[n_bound_below:, :] = -dy_all[i_bound_above]
|
544
|
+
return dy
|
545
|
+
cineq[0]["jac"] = j_ineq
|
546
|
+
|
547
|
+
old_constraints = ceq + cineq
|
548
|
+
|
549
|
+
if len(old_constraints) > 1:
|
550
|
+
warn("Equality and inequality constraints are specified in the same "
|
551
|
+
"element of the constraint list. For efficient use with this "
|
552
|
+
"method, equality and inequality constraints should be specified "
|
553
|
+
"in separate elements of the constraint list. ",
|
554
|
+
OptimizeWarning, stacklevel=3)
|
555
|
+
return old_constraints
|
556
|
+
|
557
|
+
|
558
|
+
def old_constraint_to_new(ic, con):
|
559
|
+
"""
|
560
|
+
Converts old-style constraint dictionaries to new-style constraint objects.
|
561
|
+
"""
|
562
|
+
# check type
|
563
|
+
try:
|
564
|
+
ctype = con['type'].lower()
|
565
|
+
except KeyError as e:
|
566
|
+
raise KeyError(f'Constraint {ic} has no type defined.') from e
|
567
|
+
except TypeError as e:
|
568
|
+
raise TypeError(
|
569
|
+
'Constraints must be a sequence of dictionaries.'
|
570
|
+
) from e
|
571
|
+
except AttributeError as e:
|
572
|
+
raise TypeError("Constraint's type must be a string.") from e
|
573
|
+
else:
|
574
|
+
if ctype not in ['eq', 'ineq']:
|
575
|
+
raise ValueError(f"Unknown constraint type '{con['type']}'.")
|
576
|
+
if 'fun' not in con:
|
577
|
+
raise ValueError(f'Constraint {ic} has no function defined.')
|
578
|
+
|
579
|
+
lb = 0
|
580
|
+
if ctype == 'eq':
|
581
|
+
ub = 0
|
582
|
+
else:
|
583
|
+
ub = np.inf
|
584
|
+
|
585
|
+
jac = '2-point'
|
586
|
+
if 'args' in con:
|
587
|
+
args = con['args']
|
588
|
+
def fun(x):
|
589
|
+
return con["fun"](x, *args)
|
590
|
+
if 'jac' in con:
|
591
|
+
def jac(x):
|
592
|
+
return con["jac"](x, *args)
|
593
|
+
else:
|
594
|
+
fun = con['fun']
|
595
|
+
if 'jac' in con:
|
596
|
+
jac = con['jac']
|
597
|
+
|
598
|
+
return NonlinearConstraint(fun, lb, ub, jac)
|