scipy 1.16.2__cp311-cp311-win_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scipy/__config__.py +161 -0
- scipy/__init__.py +150 -0
- scipy/_cyutility.cp311-win_arm64.lib +0 -0
- scipy/_cyutility.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/_lib/_ccallback_c.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/_lib/_fpumode.cp311-win_arm64.pyd +0 -0
- scipy/_lib/_gcutils.py +105 -0
- scipy/_lib/_pep440.py +487 -0
- scipy/_lib/_sparse.py +41 -0
- scipy/_lib/_test_ccallback.cp311-win_arm64.lib +0 -0
- scipy/_lib/_test_ccallback.cp311-win_arm64.pyd +0 -0
- scipy/_lib/_test_deprecation_call.cp311-win_arm64.lib +0 -0
- scipy/_lib/_test_deprecation_call.cp311-win_arm64.pyd +0 -0
- scipy/_lib/_test_deprecation_def.cp311-win_arm64.lib +0 -0
- scipy/_lib/_test_deprecation_def.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/_lib/_uarray/_uarray.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/_lib/messagestream.cp311-win_arm64.pyd +0 -0
- scipy/_lib/pyprima/__init__.py +212 -0
- scipy/_lib/pyprima/cobyla/__init__.py +0 -0
- scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
- scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
- scipy/_lib/pyprima/cobyla/geometry.py +226 -0
- scipy/_lib/pyprima/cobyla/initialize.py +215 -0
- scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
- scipy/_lib/pyprima/cobyla/update.py +289 -0
- scipy/_lib/pyprima/common/__init__.py +0 -0
- scipy/_lib/pyprima/common/_bounds.py +34 -0
- scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
- scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
- scipy/_lib/pyprima/common/_project.py +173 -0
- scipy/_lib/pyprima/common/checkbreak.py +93 -0
- scipy/_lib/pyprima/common/consts.py +47 -0
- scipy/_lib/pyprima/common/evaluate.py +99 -0
- scipy/_lib/pyprima/common/history.py +38 -0
- scipy/_lib/pyprima/common/infos.py +30 -0
- scipy/_lib/pyprima/common/linalg.py +435 -0
- scipy/_lib/pyprima/common/message.py +290 -0
- scipy/_lib/pyprima/common/powalg.py +131 -0
- scipy/_lib/pyprima/common/preproc.py +277 -0
- scipy/_lib/pyprima/common/present.py +5 -0
- scipy/_lib/pyprima/common/ratio.py +54 -0
- scipy/_lib/pyprima/common/redrho.py +47 -0
- scipy/_lib/pyprima/common/selectx.py +296 -0
- scipy/_lib/tests/__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.cp311-win_arm64.lib +0 -0
- scipy/cluster/_hierarchy.cp311-win_arm64.pyd +0 -0
- scipy/cluster/_optimal_leaf_ordering.cp311-win_arm64.lib +0 -0
- scipy/cluster/_optimal_leaf_ordering.cp311-win_arm64.pyd +0 -0
- scipy/cluster/_vq.cp311-win_arm64.lib +0 -0
- scipy/cluster/_vq.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/fft/_pocketfft/pypocketfft.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/fftpack/convolve.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/integrate/_dop.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/integrate/_lsoda.cp311-win_arm64.pyd +0 -0
- scipy/integrate/_ode.py +1395 -0
- scipy/integrate/_odepack.cp311-win_arm64.lib +0 -0
- scipy/integrate/_odepack.cp311-win_arm64.pyd +0 -0
- scipy/integrate/_odepack_py.py +273 -0
- scipy/integrate/_quad_vec.py +674 -0
- scipy/integrate/_quadpack.cp311-win_arm64.lib +0 -0
- scipy/integrate/_quadpack.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/integrate/_test_multivariate.cp311-win_arm64.pyd +0 -0
- scipy/integrate/_test_odeint_banded.cp311-win_arm64.lib +0 -0
- scipy/integrate/_test_odeint_banded.cp311-win_arm64.pyd +0 -0
- scipy/integrate/_vode.cp311-win_arm64.lib +0 -0
- scipy/integrate/_vode.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/interpolate/_dfitpack.cp311-win_arm64.pyd +0 -0
- scipy/interpolate/_dierckx.cp311-win_arm64.lib +0 -0
- scipy/interpolate/_dierckx.cp311-win_arm64.pyd +0 -0
- scipy/interpolate/_fitpack.cp311-win_arm64.lib +0 -0
- scipy/interpolate/_fitpack.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/interpolate/_interpnd.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/interpolate/_ppoly.cp311-win_arm64.pyd +0 -0
- scipy/interpolate/_rbf.py +290 -0
- scipy/interpolate/_rbfinterp.py +550 -0
- scipy/interpolate/_rbfinterp_pythran.cp311-win_arm64.lib +0 -0
- scipy/interpolate/_rbfinterp_pythran.cp311-win_arm64.pyd +0 -0
- scipy/interpolate/_rgi.py +764 -0
- scipy/interpolate/_rgi_cython.cp311-win_arm64.lib +0 -0
- scipy/interpolate/_rgi_cython.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/io/_fast_matrix_market/_fmm_core.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/io/_test_fortran.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/io/matlab/_mio5_utils.cp311-win_arm64.pyd +0 -0
- scipy/io/matlab/_mio_utils.cp311-win_arm64.lib +0 -0
- scipy/io/matlab/_mio_utils.cp311-win_arm64.pyd +0 -0
- scipy/io/matlab/_miobase.py +435 -0
- scipy/io/matlab/_streams.cp311-win_arm64.lib +0 -0
- scipy/io/matlab/_streams.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/linalg/_cythonized_array_utils.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/linalg/_decomp_interpolative.cp311-win_arm64.pyd +0 -0
- scipy/linalg/_decomp_ldl.py +356 -0
- scipy/linalg/_decomp_lu.py +401 -0
- scipy/linalg/_decomp_lu_cython.cp311-win_arm64.lib +0 -0
- scipy/linalg/_decomp_lu_cython.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/linalg/_decomp_update.cp311-win_arm64.pyd +0 -0
- scipy/linalg/_expm_frechet.py +417 -0
- scipy/linalg/_fblas.cp311-win_arm64.lib +0 -0
- scipy/linalg/_fblas.cp311-win_arm64.pyd +0 -0
- scipy/linalg/_flapack.cp311-win_arm64.lib +0 -0
- scipy/linalg/_flapack.cp311-win_arm64.pyd +0 -0
- scipy/linalg/_lapack_subroutines.h +1521 -0
- scipy/linalg/_linalg_pythran.cp311-win_arm64.lib +0 -0
- scipy/linalg/_linalg_pythran.cp311-win_arm64.pyd +0 -0
- scipy/linalg/_matfuncs.py +1050 -0
- scipy/linalg/_matfuncs_expm.cp311-win_arm64.lib +0 -0
- scipy/linalg/_matfuncs_expm.cp311-win_arm64.pyd +0 -0
- scipy/linalg/_matfuncs_expm.pyi +6 -0
- scipy/linalg/_matfuncs_inv_ssq.py +886 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_arm64.lib +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_arm64.pyd +0 -0
- scipy/linalg/_matfuncs_sqrtm.py +107 -0
- scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_arm64.lib +0 -0
- scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_arm64.pyd +0 -0
- scipy/linalg/_misc.py +191 -0
- scipy/linalg/_procrustes.py +113 -0
- scipy/linalg/_sketches.py +189 -0
- scipy/linalg/_solve_toeplitz.cp311-win_arm64.lib +0 -0
- scipy/linalg/_solve_toeplitz.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/linalg/cython_blas.cp311-win_arm64.pyd +0 -0
- scipy/linalg/cython_blas.pxd +169 -0
- scipy/linalg/cython_blas.pyx +1432 -0
- scipy/linalg/cython_lapack.cp311-win_arm64.lib +0 -0
- scipy/linalg/cython_lapack.cp311-win_arm64.pyd +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 +3620 -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.cp311-win_arm64.lib +0 -0
- scipy/ndimage/_ctest.cp311-win_arm64.pyd +0 -0
- scipy/ndimage/_cytest.cp311-win_arm64.lib +0 -0
- scipy/ndimage/_cytest.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/ndimage/_nd_image.cp311-win_arm64.pyd +0 -0
- scipy/ndimage/_ndimage_api.py +16 -0
- scipy/ndimage/_ni_docstrings.py +214 -0
- scipy/ndimage/_ni_label.cp311-win_arm64.lib +0 -0
- scipy/ndimage/_ni_label.cp311-win_arm64.pyd +0 -0
- scipy/ndimage/_ni_support.py +139 -0
- scipy/ndimage/_rank_filter_1d.cp311-win_arm64.lib +0 -0
- scipy/ndimage/_rank_filter_1d.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/odr/__odrpack.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_bglu_dense.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_direct.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_group_columns.cp311-win_arm64.pyd +0 -0
- scipy/optimize/_hessian_update_strategy.py +479 -0
- scipy/optimize/_highspy/__init__.py +0 -0
- scipy/optimize/_highspy/_core.cp311-win_arm64.lib +0 -0
- scipy/optimize/_highspy/_core.cp311-win_arm64.pyd +0 -0
- scipy/optimize/_highspy/_highs_options.cp311-win_arm64.lib +0 -0
- scipy/optimize/_highspy/_highs_options.cp311-win_arm64.pyd +0 -0
- scipy/optimize/_highspy/_highs_wrapper.py +338 -0
- scipy/optimize/_isotonic.py +157 -0
- scipy/optimize/_lbfgsb.cp311-win_arm64.lib +0 -0
- scipy/optimize/_lbfgsb.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_lsap.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_lsq/givens_elimination.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_minpack.cp311-win_arm64.pyd +0 -0
- scipy/optimize/_minpack_py.py +1178 -0
- scipy/optimize/_moduleTNC.cp311-win_arm64.lib +0 -0
- scipy/optimize/_moduleTNC.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_pava_pybind.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_slsqplib.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_trlib/_trlib.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/_zeros.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/optimize/cython_optimize/_zeros.cp311-win_arm64.pyd +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 +3344 -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.cp311-win_arm64.lib +0 -0
- scipy/signal/_max_len_seq_inner.cp311-win_arm64.pyd +0 -0
- scipy/signal/_peak_finding.py +1310 -0
- scipy/signal/_peak_finding_utils.cp311-win_arm64.lib +0 -0
- scipy/signal/_peak_finding_utils.cp311-win_arm64.pyd +0 -0
- scipy/signal/_polyutils.py +172 -0
- scipy/signal/_savitzky_golay.py +357 -0
- scipy/signal/_short_time_fft.py +2228 -0
- scipy/signal/_signal_api.py +30 -0
- scipy/signal/_signaltools.py +5309 -0
- scipy/signal/_sigtools.cp311-win_arm64.lib +0 -0
- scipy/signal/_sigtools.cp311-win_arm64.pyd +0 -0
- scipy/signal/_sosfilt.cp311-win_arm64.lib +0 -0
- scipy/signal/_sosfilt.cp311-win_arm64.pyd +0 -0
- scipy/signal/_spectral_py.py +2471 -0
- scipy/signal/_spline.cp311-win_arm64.lib +0 -0
- scipy/signal/_spline.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/signal/_upfirdn_apply.cp311-win_arm64.pyd +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 +1107 -0
- scipy/signal/tests/test_signaltools.py +4735 -0
- scipy/signal/tests/test_spectral.py +2141 -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.cp311-win_arm64.lib +0 -0
- scipy/sparse/_csparsetools.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/sparse/_sparsetools.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/sparse/csgraph/_flow.cp311-win_arm64.pyd +0 -0
- scipy/sparse/csgraph/_laplacian.py +563 -0
- scipy/sparse/csgraph/_matching.cp311-win_arm64.lib +0 -0
- scipy/sparse/csgraph/_matching.cp311-win_arm64.pyd +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cp311-win_arm64.lib +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cp311-win_arm64.pyd +0 -0
- scipy/sparse/csgraph/_reordering.cp311-win_arm64.lib +0 -0
- scipy/sparse/csgraph/_reordering.cp311-win_arm64.pyd +0 -0
- scipy/sparse/csgraph/_shortest_path.cp311-win_arm64.lib +0 -0
- scipy/sparse/csgraph/_shortest_path.cp311-win_arm64.pyd +0 -0
- scipy/sparse/csgraph/_tools.cp311-win_arm64.lib +0 -0
- scipy/sparse/csgraph/_tools.cp311-win_arm64.pyd +0 -0
- scipy/sparse/csgraph/_traversal.cp311-win_arm64.lib +0 -0
- scipy/sparse/csgraph/_traversal.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/sparse/linalg/_dsolve/_superlu.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/sparse/linalg/_eigen/arpack/_arpack.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/sparse/linalg/_propack/_cpropack.cp311-win_arm64.pyd +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cp311-win_arm64.lib +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cp311-win_arm64.pyd +0 -0
- scipy/sparse/linalg/_propack/_spropack.cp311-win_arm64.lib +0 -0
- scipy/sparse/linalg/_propack/_spropack.cp311-win_arm64.pyd +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cp311-win_arm64.lib +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/spatial/_ckdtree.cp311-win_arm64.pyd +0 -0
- scipy/spatial/_distance_pybind.cp311-win_arm64.lib +0 -0
- scipy/spatial/_distance_pybind.cp311-win_arm64.pyd +0 -0
- scipy/spatial/_distance_wrap.cp311-win_arm64.lib +0 -0
- scipy/spatial/_distance_wrap.cp311-win_arm64.pyd +0 -0
- scipy/spatial/_geometric_slerp.py +238 -0
- scipy/spatial/_hausdorff.cp311-win_arm64.lib +0 -0
- scipy/spatial/_hausdorff.cp311-win_arm64.pyd +0 -0
- scipy/spatial/_kdtree.py +920 -0
- scipy/spatial/_plotutils.py +274 -0
- scipy/spatial/_procrustes.py +132 -0
- scipy/spatial/_qhull.cp311-win_arm64.lib +0 -0
- scipy/spatial/_qhull.cp311-win_arm64.pyd +0 -0
- scipy/spatial/_qhull.pyi +213 -0
- scipy/spatial/_spherical_voronoi.py +341 -0
- scipy/spatial/_voronoi.cp311-win_arm64.lib +0 -0
- scipy/spatial/_voronoi.cp311-win_arm64.pyd +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/qhull_src/COPYING_QHULL.txt +39 -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 +2389 -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.cp311-win_arm64.lib +0 -0
- scipy/spatial/transform/_rigid_transform.cp311-win_arm64.pyd +0 -0
- scipy/spatial/transform/_rotation.cp311-win_arm64.lib +0 -0
- scipy/spatial/transform/_rotation.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/special/_comb.cp311-win_arm64.pyd +0 -0
- scipy/special/_ellip_harm.py +214 -0
- scipy/special/_ellip_harm_2.cp311-win_arm64.lib +0 -0
- scipy/special/_ellip_harm_2.cp311-win_arm64.pyd +0 -0
- scipy/special/_gufuncs.cp311-win_arm64.lib +0 -0
- scipy/special/_gufuncs.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/special/_specfun.cp311-win_arm64.pyd +0 -0
- scipy/special/_special_ufuncs.cp311-win_arm64.lib +0 -0
- scipy/special/_special_ufuncs.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/special/_test_internal.cp311-win_arm64.pyd +0 -0
- scipy/special/_test_internal.pyi +9 -0
- scipy/special/_testutils.py +321 -0
- scipy/special/_ufuncs.cp311-win_arm64.lib +0 -0
- scipy/special/_ufuncs.cp311-win_arm64.pyd +0 -0
- scipy/special/_ufuncs.pyi +522 -0
- scipy/special/_ufuncs.pyx +13173 -0
- scipy/special/_ufuncs_cxx.cp311-win_arm64.lib +0 -0
- scipy/special/_ufuncs_cxx.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/special/cython_special.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/stats/_ansari_swilk_statistics.cp311-win_arm64.pyd +0 -0
- scipy/stats/_axis_nan_policy.py +692 -0
- scipy/stats/_biasedurn.cp311-win_arm64.lib +0 -0
- scipy/stats/_biasedurn.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/stats/_levy_stable/levyst.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/stats/_qmc_cy.cp311-win_arm64.pyd +0 -0
- scipy/stats/_qmc_cy.pyi +54 -0
- scipy/stats/_qmvnt.py +454 -0
- scipy/stats/_qmvnt_cy.cp311-win_arm64.lib +0 -0
- scipy/stats/_qmvnt_cy.cp311-win_arm64.pyd +0 -0
- scipy/stats/_quantile.py +335 -0
- scipy/stats/_rcont/__init__.py +4 -0
- scipy/stats/_rcont/rcont.cp311-win_arm64.lib +0 -0
- scipy/stats/_rcont/rcont.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/stats/_sobol.cp311-win_arm64.pyd +0 -0
- scipy/stats/_sobol.pyi +54 -0
- scipy/stats/_sobol_direction_numbers.npz +0 -0
- scipy/stats/_stats.cp311-win_arm64.lib +0 -0
- scipy/stats/_stats.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/stats/_stats_pythran.cp311-win_arm64.pyd +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.cp311-win_arm64.lib +0 -0
- scipy/stats/_unuran/unuran_wrapper.cp311-win_arm64.pyd +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.2.dist-info/DELVEWHEEL +2 -0
- scipy-1.16.2.dist-info/LICENSE.txt +912 -0
- scipy-1.16.2.dist-info/METADATA +1061 -0
- scipy-1.16.2.dist-info/RECORD +1530 -0
- scipy-1.16.2.dist-info/WHEEL +4 -0
- scipy.libs/msvcp140-5f1c5dd31916990d94181e07bc3afb32.dll +0 -0
- scipy.libs/scipy_openblas-f3ac85b1f412f7e86514c923dc4058d1.dll +0 -0
@@ -0,0 +1,1050 @@
|
|
1
|
+
#
|
2
|
+
# Author: Travis Oliphant, March 2002
|
3
|
+
#
|
4
|
+
import warnings
|
5
|
+
from itertools import product
|
6
|
+
|
7
|
+
import numpy as np
|
8
|
+
from numpy import (dot, diag, prod, logical_not, ravel, transpose,
|
9
|
+
conjugate, absolute, amax, sign, isfinite, triu)
|
10
|
+
|
11
|
+
from scipy._lib._util import _apply_over_batch
|
12
|
+
from scipy._lib.deprecation import _NoValue
|
13
|
+
|
14
|
+
# Local imports
|
15
|
+
from scipy.linalg import LinAlgError, bandwidth, LinAlgWarning
|
16
|
+
from ._misc import norm
|
17
|
+
from ._basic import solve, inv
|
18
|
+
from ._decomp_svd import svd
|
19
|
+
from ._decomp_schur import schur, rsf2csf
|
20
|
+
from ._expm_frechet import expm_frechet, expm_cond
|
21
|
+
from ._matfuncs_schur_sqrtm import recursive_schur_sqrtm
|
22
|
+
from ._matfuncs_expm import pick_pade_structure, pade_UV_calc
|
23
|
+
from ._linalg_pythran import _funm_loops # type: ignore[import-not-found]
|
24
|
+
|
25
|
+
__all__ = ['expm', 'cosm', 'sinm', 'tanm', 'coshm', 'sinhm', 'tanhm', 'logm',
|
26
|
+
'funm', 'signm', 'sqrtm', 'fractional_matrix_power', 'expm_frechet',
|
27
|
+
'expm_cond', 'khatri_rao']
|
28
|
+
|
29
|
+
eps = np.finfo('d').eps
|
30
|
+
feps = np.finfo('f').eps
|
31
|
+
|
32
|
+
_array_precision = {'i': 1, 'l': 1, 'f': 0, 'd': 1, 'F': 0, 'D': 1}
|
33
|
+
|
34
|
+
|
35
|
+
###############################################################################
|
36
|
+
# Utility functions.
|
37
|
+
|
38
|
+
|
39
|
+
def _asarray_square(A):
|
40
|
+
"""
|
41
|
+
Wraps asarray with the extra requirement that the input be a square matrix.
|
42
|
+
|
43
|
+
The motivation is that the matfuncs module has real functions that have
|
44
|
+
been lifted to square matrix functions.
|
45
|
+
|
46
|
+
Parameters
|
47
|
+
----------
|
48
|
+
A : array_like
|
49
|
+
A square matrix.
|
50
|
+
|
51
|
+
Returns
|
52
|
+
-------
|
53
|
+
out : ndarray
|
54
|
+
An ndarray copy or view or other representation of A.
|
55
|
+
|
56
|
+
"""
|
57
|
+
A = np.asarray(A)
|
58
|
+
if len(A.shape) != 2 or A.shape[0] != A.shape[1]:
|
59
|
+
raise ValueError('expected square array_like input')
|
60
|
+
return A
|
61
|
+
|
62
|
+
|
63
|
+
def _maybe_real(A, B, tol=None):
|
64
|
+
"""
|
65
|
+
Return either B or the real part of B, depending on properties of A and B.
|
66
|
+
|
67
|
+
The motivation is that B has been computed as a complicated function of A,
|
68
|
+
and B may be perturbed by negligible imaginary components.
|
69
|
+
If A is real and B is complex with small imaginary components,
|
70
|
+
then return a real copy of B. The assumption in that case would be that
|
71
|
+
the imaginary components of B are numerical artifacts.
|
72
|
+
|
73
|
+
Parameters
|
74
|
+
----------
|
75
|
+
A : ndarray
|
76
|
+
Input array whose type is to be checked as real vs. complex.
|
77
|
+
B : ndarray
|
78
|
+
Array to be returned, possibly without its imaginary part.
|
79
|
+
tol : float
|
80
|
+
Absolute tolerance.
|
81
|
+
|
82
|
+
Returns
|
83
|
+
-------
|
84
|
+
out : real or complex array
|
85
|
+
Either the input array B or only the real part of the input array B.
|
86
|
+
|
87
|
+
"""
|
88
|
+
# Note that booleans and integers compare as real.
|
89
|
+
if np.isrealobj(A) and np.iscomplexobj(B):
|
90
|
+
if tol is None:
|
91
|
+
tol = {0: feps*1e3, 1: eps*1e6}[_array_precision[B.dtype.char]]
|
92
|
+
if np.allclose(B.imag, 0.0, atol=tol):
|
93
|
+
B = B.real
|
94
|
+
return B
|
95
|
+
|
96
|
+
|
97
|
+
###############################################################################
|
98
|
+
# Matrix functions.
|
99
|
+
|
100
|
+
|
101
|
+
@_apply_over_batch(('A', 2))
|
102
|
+
def fractional_matrix_power(A, t):
|
103
|
+
"""
|
104
|
+
Compute the fractional power of a matrix.
|
105
|
+
|
106
|
+
Proceeds according to the discussion in section (6) of [1]_.
|
107
|
+
|
108
|
+
Parameters
|
109
|
+
----------
|
110
|
+
A : (N, N) array_like
|
111
|
+
Matrix whose fractional power to evaluate.
|
112
|
+
t : float
|
113
|
+
Fractional power.
|
114
|
+
|
115
|
+
Returns
|
116
|
+
-------
|
117
|
+
X : (N, N) array_like
|
118
|
+
The fractional power of the matrix.
|
119
|
+
|
120
|
+
References
|
121
|
+
----------
|
122
|
+
.. [1] Nicholas J. Higham and Lijing lin (2011)
|
123
|
+
"A Schur-Pade Algorithm for Fractional Powers of a Matrix."
|
124
|
+
SIAM Journal on Matrix Analysis and Applications,
|
125
|
+
32 (3). pp. 1056-1078. ISSN 0895-4798
|
126
|
+
|
127
|
+
Examples
|
128
|
+
--------
|
129
|
+
>>> import numpy as np
|
130
|
+
>>> from scipy.linalg import fractional_matrix_power
|
131
|
+
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
|
132
|
+
>>> b = fractional_matrix_power(a, 0.5)
|
133
|
+
>>> b
|
134
|
+
array([[ 0.75592895, 1.13389342],
|
135
|
+
[ 0.37796447, 1.88982237]])
|
136
|
+
>>> np.dot(b, b) # Verify square root
|
137
|
+
array([[ 1., 3.],
|
138
|
+
[ 1., 4.]])
|
139
|
+
|
140
|
+
"""
|
141
|
+
# This fixes some issue with imports;
|
142
|
+
# this function calls onenormest which is in scipy.sparse.
|
143
|
+
A = _asarray_square(A)
|
144
|
+
import scipy.linalg._matfuncs_inv_ssq
|
145
|
+
return scipy.linalg._matfuncs_inv_ssq._fractional_matrix_power(A, t)
|
146
|
+
|
147
|
+
|
148
|
+
@_apply_over_batch(('A', 2))
|
149
|
+
def logm(A, disp=_NoValue):
|
150
|
+
"""
|
151
|
+
Compute matrix logarithm.
|
152
|
+
|
153
|
+
The matrix logarithm is the inverse of
|
154
|
+
expm: expm(logm(`A`)) == `A`
|
155
|
+
|
156
|
+
Parameters
|
157
|
+
----------
|
158
|
+
A : (N, N) array_like
|
159
|
+
Matrix whose logarithm to evaluate
|
160
|
+
disp : bool, optional
|
161
|
+
Emit warning if error in the result is estimated large
|
162
|
+
instead of returning estimated error. (Default: True)
|
163
|
+
|
164
|
+
.. deprecated:: 1.16.0
|
165
|
+
The `disp` argument is deprecated and will be
|
166
|
+
removed in SciPy 1.18.0. The previously returned error estimate
|
167
|
+
can be computed as ``norm(expm(logm(A)) - A, 1) / norm(A, 1)``.
|
168
|
+
|
169
|
+
Returns
|
170
|
+
-------
|
171
|
+
logm : (N, N) ndarray
|
172
|
+
Matrix logarithm of `A`
|
173
|
+
errest : float
|
174
|
+
(if disp == False)
|
175
|
+
|
176
|
+
1-norm of the estimated error, ||err||_1 / ||A||_1
|
177
|
+
|
178
|
+
References
|
179
|
+
----------
|
180
|
+
.. [1] Awad H. Al-Mohy and Nicholas J. Higham (2012)
|
181
|
+
"Improved Inverse Scaling and Squaring Algorithms
|
182
|
+
for the Matrix Logarithm."
|
183
|
+
SIAM Journal on Scientific Computing, 34 (4). C152-C169.
|
184
|
+
ISSN 1095-7197
|
185
|
+
|
186
|
+
.. [2] Nicholas J. Higham (2008)
|
187
|
+
"Functions of Matrices: Theory and Computation"
|
188
|
+
ISBN 978-0-898716-46-7
|
189
|
+
|
190
|
+
.. [3] Nicholas J. Higham and Lijing lin (2011)
|
191
|
+
"A Schur-Pade Algorithm for Fractional Powers of a Matrix."
|
192
|
+
SIAM Journal on Matrix Analysis and Applications,
|
193
|
+
32 (3). pp. 1056-1078. ISSN 0895-4798
|
194
|
+
|
195
|
+
Examples
|
196
|
+
--------
|
197
|
+
>>> import numpy as np
|
198
|
+
>>> from scipy.linalg import logm, expm
|
199
|
+
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
|
200
|
+
>>> b = logm(a)
|
201
|
+
>>> b
|
202
|
+
array([[-1.02571087, 2.05142174],
|
203
|
+
[ 0.68380725, 1.02571087]])
|
204
|
+
>>> expm(b) # Verify expm(logm(a)) returns a
|
205
|
+
array([[ 1., 3.],
|
206
|
+
[ 1., 4.]])
|
207
|
+
|
208
|
+
"""
|
209
|
+
if disp is _NoValue:
|
210
|
+
disp = True
|
211
|
+
else:
|
212
|
+
warnings.warn("The `disp` argument is deprecated "
|
213
|
+
"and will be removed in SciPy 1.18.0.",
|
214
|
+
DeprecationWarning, stacklevel=2)
|
215
|
+
A = np.asarray(A) # squareness checked in `_logm`
|
216
|
+
# Avoid circular import ... this is OK, right?
|
217
|
+
import scipy.linalg._matfuncs_inv_ssq
|
218
|
+
F = scipy.linalg._matfuncs_inv_ssq._logm(A)
|
219
|
+
F = _maybe_real(A, F)
|
220
|
+
errtol = 1000*eps
|
221
|
+
# TODO use a better error approximation
|
222
|
+
with np.errstate(divide='ignore', invalid='ignore'):
|
223
|
+
errest = norm(expm(F)-A, 1) / np.asarray(norm(A, 1), dtype=A.dtype).real[()]
|
224
|
+
if disp:
|
225
|
+
if not isfinite(errest) or errest >= errtol:
|
226
|
+
message = f"logm result may be inaccurate, approximate err = {errest}"
|
227
|
+
warnings.warn(message, RuntimeWarning, stacklevel=2)
|
228
|
+
return F
|
229
|
+
else:
|
230
|
+
return F, errest
|
231
|
+
|
232
|
+
|
233
|
+
def expm(A):
|
234
|
+
"""Compute the matrix exponential of an array.
|
235
|
+
|
236
|
+
Parameters
|
237
|
+
----------
|
238
|
+
A : ndarray
|
239
|
+
Input with last two dimensions are square ``(..., n, n)``.
|
240
|
+
|
241
|
+
Returns
|
242
|
+
-------
|
243
|
+
eA : ndarray
|
244
|
+
The resulting matrix exponential with the same shape of ``A``
|
245
|
+
|
246
|
+
Notes
|
247
|
+
-----
|
248
|
+
Implements the algorithm given in [1], which is essentially a Pade
|
249
|
+
approximation with a variable order that is decided based on the array
|
250
|
+
data.
|
251
|
+
|
252
|
+
For input with size ``n``, the memory usage is in the worst case in the
|
253
|
+
order of ``8*(n**2)``. If the input data is not of single and double
|
254
|
+
precision of real and complex dtypes, it is copied to a new array.
|
255
|
+
|
256
|
+
For cases ``n >= 400``, the exact 1-norm computation cost, breaks even with
|
257
|
+
1-norm estimation and from that point on the estimation scheme given in
|
258
|
+
[2] is used to decide on the approximation order.
|
259
|
+
|
260
|
+
References
|
261
|
+
----------
|
262
|
+
.. [1] Awad H. Al-Mohy and Nicholas J. Higham, (2009), "A New Scaling
|
263
|
+
and Squaring Algorithm for the Matrix Exponential", SIAM J. Matrix
|
264
|
+
Anal. Appl. 31(3):970-989, :doi:`10.1137/09074721X`
|
265
|
+
|
266
|
+
.. [2] Nicholas J. Higham and Francoise Tisseur (2000), "A Block Algorithm
|
267
|
+
for Matrix 1-Norm Estimation, with an Application to 1-Norm
|
268
|
+
Pseudospectra." SIAM J. Matrix Anal. Appl. 21(4):1185-1201,
|
269
|
+
:doi:`10.1137/S0895479899356080`
|
270
|
+
|
271
|
+
Examples
|
272
|
+
--------
|
273
|
+
>>> import numpy as np
|
274
|
+
>>> from scipy.linalg import expm, sinm, cosm
|
275
|
+
|
276
|
+
Matrix version of the formula exp(0) = 1:
|
277
|
+
|
278
|
+
>>> expm(np.zeros((3, 2, 2)))
|
279
|
+
array([[[1., 0.],
|
280
|
+
[0., 1.]],
|
281
|
+
<BLANKLINE>
|
282
|
+
[[1., 0.],
|
283
|
+
[0., 1.]],
|
284
|
+
<BLANKLINE>
|
285
|
+
[[1., 0.],
|
286
|
+
[0., 1.]]])
|
287
|
+
|
288
|
+
Euler's identity (exp(i*theta) = cos(theta) + i*sin(theta))
|
289
|
+
applied to a matrix:
|
290
|
+
|
291
|
+
>>> a = np.array([[1.0, 2.0], [-1.0, 3.0]])
|
292
|
+
>>> expm(1j*a)
|
293
|
+
array([[ 0.42645930+1.89217551j, -2.13721484-0.97811252j],
|
294
|
+
[ 1.06860742+0.48905626j, -1.71075555+0.91406299j]])
|
295
|
+
>>> cosm(a) + 1j*sinm(a)
|
296
|
+
array([[ 0.42645930+1.89217551j, -2.13721484-0.97811252j],
|
297
|
+
[ 1.06860742+0.48905626j, -1.71075555+0.91406299j]])
|
298
|
+
|
299
|
+
"""
|
300
|
+
a = np.asarray(A)
|
301
|
+
if a.size == 1 and a.ndim < 2:
|
302
|
+
return np.array([[np.exp(a.item())]])
|
303
|
+
|
304
|
+
if a.ndim < 2:
|
305
|
+
raise LinAlgError('The input array must be at least two-dimensional')
|
306
|
+
if a.shape[-1] != a.shape[-2]:
|
307
|
+
raise LinAlgError('Last 2 dimensions of the array must be square')
|
308
|
+
|
309
|
+
# Empty array
|
310
|
+
if min(*a.shape) == 0:
|
311
|
+
dtype = expm(np.eye(2, dtype=a.dtype)).dtype
|
312
|
+
return np.empty_like(a, dtype=dtype)
|
313
|
+
|
314
|
+
# Scalar case
|
315
|
+
if a.shape[-2:] == (1, 1):
|
316
|
+
return np.exp(a)
|
317
|
+
|
318
|
+
if not np.issubdtype(a.dtype, np.inexact):
|
319
|
+
a = a.astype(np.float64)
|
320
|
+
elif a.dtype == np.float16:
|
321
|
+
a = a.astype(np.float32)
|
322
|
+
|
323
|
+
# An explicit formula for 2x2 case exists (formula (2.2) in [1]). However, without
|
324
|
+
# Kahan's method, numerical instabilities can occur (See gh-19584). Hence removed
|
325
|
+
# here until we have a more stable implementation.
|
326
|
+
|
327
|
+
n = a.shape[-1]
|
328
|
+
eA = np.empty(a.shape, dtype=a.dtype)
|
329
|
+
# working memory to hold intermediate arrays
|
330
|
+
Am = np.empty((5, n, n), dtype=a.dtype)
|
331
|
+
|
332
|
+
# Main loop to go through the slices of an ndarray and passing to expm
|
333
|
+
for ind in product(*[range(x) for x in a.shape[:-2]]):
|
334
|
+
aw = a[ind]
|
335
|
+
|
336
|
+
lu = bandwidth(aw)
|
337
|
+
if not any(lu): # a is diagonal?
|
338
|
+
eA[ind] = np.diag(np.exp(np.diag(aw)))
|
339
|
+
continue
|
340
|
+
|
341
|
+
# Generic/triangular case; copy the slice into scratch and send.
|
342
|
+
# Am will be mutated by pick_pade_structure
|
343
|
+
# If s != 0, scaled Am will be returned from pick_pade_structure.
|
344
|
+
Am[0, :, :] = aw
|
345
|
+
m, s = pick_pade_structure(Am)
|
346
|
+
if (m < 0):
|
347
|
+
raise MemoryError("scipy.linalg.expm could not allocate sufficient"
|
348
|
+
" memory while trying to compute the Pade "
|
349
|
+
f"structure (error code {m}).")
|
350
|
+
info = pade_UV_calc(Am, m)
|
351
|
+
if info != 0:
|
352
|
+
if info <= -11:
|
353
|
+
# We raise it from failed mallocs; negative LAPACK codes > -7
|
354
|
+
raise MemoryError("scipy.linalg.expm could not allocate "
|
355
|
+
"sufficient memory while trying to compute the "
|
356
|
+
f"exponential (error code {info}).")
|
357
|
+
else:
|
358
|
+
# LAPACK wrong argument error or exact singularity.
|
359
|
+
# Neither should happen.
|
360
|
+
raise RuntimeError("scipy.linalg.expm got an internal LAPACK "
|
361
|
+
"error during the exponential computation "
|
362
|
+
f"(error code {info})")
|
363
|
+
eAw = Am[0]
|
364
|
+
|
365
|
+
if s != 0: # squaring needed
|
366
|
+
|
367
|
+
if (lu[1] == 0) or (lu[0] == 0): # lower/upper triangular
|
368
|
+
# This branch implements Code Fragment 2.1 of [1]
|
369
|
+
|
370
|
+
diag_aw = np.diag(aw)
|
371
|
+
# einsum returns a writable view
|
372
|
+
np.einsum('ii->i', eAw)[:] = np.exp(diag_aw * 2**(-s))
|
373
|
+
# super/sub diagonal
|
374
|
+
sd = np.diag(aw, k=-1 if lu[1] == 0 else 1)
|
375
|
+
|
376
|
+
for i in range(s-1, -1, -1):
|
377
|
+
eAw = eAw @ eAw
|
378
|
+
|
379
|
+
# diagonal
|
380
|
+
np.einsum('ii->i', eAw)[:] = np.exp(diag_aw * 2.**(-i))
|
381
|
+
exp_sd = _exp_sinch(diag_aw * (2.**(-i))) * (sd * 2**(-i))
|
382
|
+
if lu[1] == 0: # lower
|
383
|
+
np.einsum('ii->i', eAw[1:, :-1])[:] = exp_sd
|
384
|
+
else: # upper
|
385
|
+
np.einsum('ii->i', eAw[:-1, 1:])[:] = exp_sd
|
386
|
+
|
387
|
+
else: # generic
|
388
|
+
for _ in range(s):
|
389
|
+
eAw = eAw @ eAw
|
390
|
+
|
391
|
+
# Zero out the entries from np.empty in case of triangular input
|
392
|
+
if (lu[0] == 0) or (lu[1] == 0):
|
393
|
+
eA[ind] = np.triu(eAw) if lu[0] == 0 else np.tril(eAw)
|
394
|
+
else:
|
395
|
+
eA[ind] = eAw
|
396
|
+
|
397
|
+
return eA
|
398
|
+
|
399
|
+
|
400
|
+
def _exp_sinch(x):
|
401
|
+
# Higham's formula (10.42), might overflow, see GH-11839
|
402
|
+
lexp_diff = np.diff(np.exp(x))
|
403
|
+
l_diff = np.diff(x)
|
404
|
+
mask_z = l_diff == 0.
|
405
|
+
lexp_diff[~mask_z] /= l_diff[~mask_z]
|
406
|
+
lexp_diff[mask_z] = np.exp(x[:-1][mask_z])
|
407
|
+
return lexp_diff
|
408
|
+
|
409
|
+
|
410
|
+
def sqrtm(A, disp=_NoValue, blocksize=_NoValue):
|
411
|
+
"""
|
412
|
+
Compute, if exists, the matrix square root.
|
413
|
+
|
414
|
+
The matrix square root of ``A`` is a matrix ``X`` such that ``X @ X = A``.
|
415
|
+
Every square matrix is not guaranteed to have a matrix square root, for
|
416
|
+
example, the array ``[[0, 1], [0, 0]]`` does not have a square root.
|
417
|
+
|
418
|
+
Moreover, not every real matrix has a real square root. Hence, for
|
419
|
+
real-valued matrices the return type can be complex if, numerically, there
|
420
|
+
is an eigenvalue on the negative real axis.
|
421
|
+
|
422
|
+
Parameters
|
423
|
+
----------
|
424
|
+
A : ndarray
|
425
|
+
Input with last two dimensions are square ``(..., n, n)``.
|
426
|
+
disp : bool, optional
|
427
|
+
Print warning if error in the result is estimated large
|
428
|
+
instead of returning estimated error. (Default: True)
|
429
|
+
|
430
|
+
.. deprecated:: 1.16.0
|
431
|
+
The `disp` argument is deprecated and will be
|
432
|
+
removed in SciPy 1.18.0. The previously returned error estimate
|
433
|
+
can be computed as ``norm(X @ X - A, 'fro')**2 / norm(A, 'fro')``
|
434
|
+
|
435
|
+
blocksize : integer, optional
|
436
|
+
|
437
|
+
.. deprecated:: 1.16.0
|
438
|
+
The `blocksize` argument is deprecated as it is unused by the algorithm
|
439
|
+
and will be removed in SciPy 1.18.0.
|
440
|
+
|
441
|
+
Returns
|
442
|
+
-------
|
443
|
+
sqrtm : ndarray
|
444
|
+
Computed matrix squareroot of `A` with same size ``(..., n, n)``.
|
445
|
+
|
446
|
+
errest : float
|
447
|
+
Frobenius norm of the estimated error, ||err||_F / ||A||_F. Only
|
448
|
+
returned, if ``disp`` is set to ``False``. This return argument will be
|
449
|
+
removed in version 1.20.0 and only the sqrtm result will be returned.
|
450
|
+
|
451
|
+
.. deprecated:: 1.16.0
|
452
|
+
|
453
|
+
Notes
|
454
|
+
-----
|
455
|
+
This function uses the Schur decomposition method to compute the matrix
|
456
|
+
square root following [1]_ and for real matrices [2]_. Moreover, note
|
457
|
+
that, there exist matrices that have square roots that are not polynomials
|
458
|
+
in ``A``. For a classical example from [2]_, the matrix satisfies::
|
459
|
+
|
460
|
+
[ a, a**2 + 1]**2 [-1, 0]
|
461
|
+
[-1, -a] = [ 0, -1]
|
462
|
+
|
463
|
+
for any scalar ``a`` but it is not a polynomial in ``-I``. Thus, they will
|
464
|
+
not be found by this function.
|
465
|
+
|
466
|
+
References
|
467
|
+
----------
|
468
|
+
.. [1] Edvin Deadman, Nicholas J. Higham, Rui Ralha (2013)
|
469
|
+
"Blocked Schur Algorithms for Computing the Matrix Square Root,
|
470
|
+
Lecture Notes in Computer Science, 7782. pp. 171-182.
|
471
|
+
:doi:`10.1016/0024-3795(87)90118-2`
|
472
|
+
.. [2] Nicholas J. Higham (1987) "Computing real square roots of a real
|
473
|
+
matrix", Linear Algebra and its Applications, 88/89:405-430.
|
474
|
+
:doi:`10.1016/0024-3795(87)90118-2`
|
475
|
+
|
476
|
+
Examples
|
477
|
+
--------
|
478
|
+
>>> import numpy as np
|
479
|
+
>>> from scipy.linalg import sqrtm
|
480
|
+
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
|
481
|
+
>>> r = sqrtm(a)
|
482
|
+
>>> r
|
483
|
+
array([[ 0.75592895, 1.13389342],
|
484
|
+
[ 0.37796447, 1.88982237]])
|
485
|
+
>>> r.dot(r)
|
486
|
+
array([[ 1., 3.],
|
487
|
+
[ 1., 4.]])
|
488
|
+
|
489
|
+
"""
|
490
|
+
if disp is _NoValue:
|
491
|
+
disp = True
|
492
|
+
else:
|
493
|
+
warnings.warn("The `disp` argument is deprecated and will be removed in SciPy "
|
494
|
+
"1.18.0.",
|
495
|
+
DeprecationWarning, stacklevel=2)
|
496
|
+
if blocksize is not _NoValue:
|
497
|
+
warnings.warn("The `blocksize` argument is deprecated and will be removed in "
|
498
|
+
"SciPy 1.18.0.",
|
499
|
+
DeprecationWarning, stacklevel=2)
|
500
|
+
|
501
|
+
a = np.asarray(A)
|
502
|
+
if a.size == 1 and a.ndim < 2:
|
503
|
+
return np.array([[np.exp(a.item())]])
|
504
|
+
|
505
|
+
if a.ndim < 2:
|
506
|
+
raise LinAlgError('The input array must be at least two-dimensional')
|
507
|
+
if a.shape[-1] != a.shape[-2]:
|
508
|
+
raise LinAlgError('Last 2 dimensions of the array must be square')
|
509
|
+
|
510
|
+
# Empty array
|
511
|
+
if min(*a.shape) == 0:
|
512
|
+
dtype = sqrtm(np.eye(2, dtype=a.dtype)).dtype
|
513
|
+
return np.empty_like(a, dtype=dtype)
|
514
|
+
|
515
|
+
# Scalar case
|
516
|
+
if a.shape[-2:] == (1, 1):
|
517
|
+
return np.emath.sqrt(a)
|
518
|
+
|
519
|
+
if not np.issubdtype(a.dtype, np.inexact):
|
520
|
+
a = a.astype(np.float64)
|
521
|
+
elif a.dtype == np.float16:
|
522
|
+
a = a.astype(np.float32)
|
523
|
+
elif a.dtype.char in 'G':
|
524
|
+
a = a.astype(np.complex128)
|
525
|
+
elif a.dtype.char in 'g':
|
526
|
+
a = a.astype(np.float64)
|
527
|
+
|
528
|
+
if a.dtype.char not in 'fdFD':
|
529
|
+
raise TypeError("scipy.linalg.sqrtm is not supported for the data type"
|
530
|
+
f" {a.dtype}")
|
531
|
+
|
532
|
+
res, isIllconditioned, isSingular, info = recursive_schur_sqrtm(a)
|
533
|
+
if info < 0:
|
534
|
+
raise LinAlgError(f"Internal error in scipy.linalg.sqrtm: {info}")
|
535
|
+
|
536
|
+
if isSingular or isIllconditioned:
|
537
|
+
if isSingular:
|
538
|
+
msg = ("Matrix is singular. The result might be inaccurate or the"
|
539
|
+
" array might not have a square root.")
|
540
|
+
else:
|
541
|
+
msg = ("Matrix is ill-conditioned. The result might be inaccurate"
|
542
|
+
" or the array might not have a square root.")
|
543
|
+
warnings.warn(msg, LinAlgWarning, stacklevel=2)
|
544
|
+
|
545
|
+
if disp is False:
|
546
|
+
try:
|
547
|
+
arg2 = norm(res @ res - A, 'fro')**2 / norm(A, 'fro')
|
548
|
+
except ValueError:
|
549
|
+
# NaNs in matrix
|
550
|
+
arg2 = np.inf
|
551
|
+
return res, arg2
|
552
|
+
else:
|
553
|
+
return res
|
554
|
+
|
555
|
+
|
556
|
+
@_apply_over_batch(('A', 2))
|
557
|
+
def cosm(A):
|
558
|
+
"""
|
559
|
+
Compute the matrix cosine.
|
560
|
+
|
561
|
+
This routine uses expm to compute the matrix exponentials.
|
562
|
+
|
563
|
+
Parameters
|
564
|
+
----------
|
565
|
+
A : (N, N) array_like
|
566
|
+
Input array
|
567
|
+
|
568
|
+
Returns
|
569
|
+
-------
|
570
|
+
cosm : (N, N) ndarray
|
571
|
+
Matrix cosine of A
|
572
|
+
|
573
|
+
Examples
|
574
|
+
--------
|
575
|
+
>>> import numpy as np
|
576
|
+
>>> from scipy.linalg import expm, sinm, cosm
|
577
|
+
|
578
|
+
Euler's identity (exp(i*theta) = cos(theta) + i*sin(theta))
|
579
|
+
applied to a matrix:
|
580
|
+
|
581
|
+
>>> a = np.array([[1.0, 2.0], [-1.0, 3.0]])
|
582
|
+
>>> expm(1j*a)
|
583
|
+
array([[ 0.42645930+1.89217551j, -2.13721484-0.97811252j],
|
584
|
+
[ 1.06860742+0.48905626j, -1.71075555+0.91406299j]])
|
585
|
+
>>> cosm(a) + 1j*sinm(a)
|
586
|
+
array([[ 0.42645930+1.89217551j, -2.13721484-0.97811252j],
|
587
|
+
[ 1.06860742+0.48905626j, -1.71075555+0.91406299j]])
|
588
|
+
|
589
|
+
"""
|
590
|
+
A = _asarray_square(A)
|
591
|
+
if np.iscomplexobj(A):
|
592
|
+
return 0.5*(expm(1j*A) + expm(-1j*A))
|
593
|
+
else:
|
594
|
+
return expm(1j*A).real
|
595
|
+
|
596
|
+
|
597
|
+
@_apply_over_batch(('A', 2))
|
598
|
+
def sinm(A):
|
599
|
+
"""
|
600
|
+
Compute the matrix sine.
|
601
|
+
|
602
|
+
This routine uses expm to compute the matrix exponentials.
|
603
|
+
|
604
|
+
Parameters
|
605
|
+
----------
|
606
|
+
A : (N, N) array_like
|
607
|
+
Input array.
|
608
|
+
|
609
|
+
Returns
|
610
|
+
-------
|
611
|
+
sinm : (N, N) ndarray
|
612
|
+
Matrix sine of `A`
|
613
|
+
|
614
|
+
Examples
|
615
|
+
--------
|
616
|
+
>>> import numpy as np
|
617
|
+
>>> from scipy.linalg import expm, sinm, cosm
|
618
|
+
|
619
|
+
Euler's identity (exp(i*theta) = cos(theta) + i*sin(theta))
|
620
|
+
applied to a matrix:
|
621
|
+
|
622
|
+
>>> a = np.array([[1.0, 2.0], [-1.0, 3.0]])
|
623
|
+
>>> expm(1j*a)
|
624
|
+
array([[ 0.42645930+1.89217551j, -2.13721484-0.97811252j],
|
625
|
+
[ 1.06860742+0.48905626j, -1.71075555+0.91406299j]])
|
626
|
+
>>> cosm(a) + 1j*sinm(a)
|
627
|
+
array([[ 0.42645930+1.89217551j, -2.13721484-0.97811252j],
|
628
|
+
[ 1.06860742+0.48905626j, -1.71075555+0.91406299j]])
|
629
|
+
|
630
|
+
"""
|
631
|
+
A = _asarray_square(A)
|
632
|
+
if np.iscomplexobj(A):
|
633
|
+
return -0.5j*(expm(1j*A) - expm(-1j*A))
|
634
|
+
else:
|
635
|
+
return expm(1j*A).imag
|
636
|
+
|
637
|
+
|
638
|
+
@_apply_over_batch(('A', 2))
|
639
|
+
def tanm(A):
|
640
|
+
"""
|
641
|
+
Compute the matrix tangent.
|
642
|
+
|
643
|
+
This routine uses expm to compute the matrix exponentials.
|
644
|
+
|
645
|
+
Parameters
|
646
|
+
----------
|
647
|
+
A : (N, N) array_like
|
648
|
+
Input array.
|
649
|
+
|
650
|
+
Returns
|
651
|
+
-------
|
652
|
+
tanm : (N, N) ndarray
|
653
|
+
Matrix tangent of `A`
|
654
|
+
|
655
|
+
Examples
|
656
|
+
--------
|
657
|
+
>>> import numpy as np
|
658
|
+
>>> from scipy.linalg import tanm, sinm, cosm
|
659
|
+
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
|
660
|
+
>>> t = tanm(a)
|
661
|
+
>>> t
|
662
|
+
array([[ -2.00876993, -8.41880636],
|
663
|
+
[ -2.80626879, -10.42757629]])
|
664
|
+
|
665
|
+
Verify tanm(a) = sinm(a).dot(inv(cosm(a)))
|
666
|
+
|
667
|
+
>>> s = sinm(a)
|
668
|
+
>>> c = cosm(a)
|
669
|
+
>>> s.dot(np.linalg.inv(c))
|
670
|
+
array([[ -2.00876993, -8.41880636],
|
671
|
+
[ -2.80626879, -10.42757629]])
|
672
|
+
|
673
|
+
"""
|
674
|
+
A = _asarray_square(A)
|
675
|
+
return _maybe_real(A, solve(cosm(A), sinm(A)))
|
676
|
+
|
677
|
+
|
678
|
+
@_apply_over_batch(('A', 2))
|
679
|
+
def coshm(A):
|
680
|
+
"""
|
681
|
+
Compute the hyperbolic matrix cosine.
|
682
|
+
|
683
|
+
This routine uses expm to compute the matrix exponentials.
|
684
|
+
|
685
|
+
Parameters
|
686
|
+
----------
|
687
|
+
A : (N, N) array_like
|
688
|
+
Input array.
|
689
|
+
|
690
|
+
Returns
|
691
|
+
-------
|
692
|
+
coshm : (N, N) ndarray
|
693
|
+
Hyperbolic matrix cosine of `A`
|
694
|
+
|
695
|
+
Examples
|
696
|
+
--------
|
697
|
+
>>> import numpy as np
|
698
|
+
>>> from scipy.linalg import tanhm, sinhm, coshm
|
699
|
+
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
|
700
|
+
>>> c = coshm(a)
|
701
|
+
>>> c
|
702
|
+
array([[ 11.24592233, 38.76236492],
|
703
|
+
[ 12.92078831, 50.00828725]])
|
704
|
+
|
705
|
+
Verify tanhm(a) = sinhm(a).dot(inv(coshm(a)))
|
706
|
+
|
707
|
+
>>> t = tanhm(a)
|
708
|
+
>>> s = sinhm(a)
|
709
|
+
>>> t - s.dot(np.linalg.inv(c))
|
710
|
+
array([[ 2.72004641e-15, 4.55191440e-15],
|
711
|
+
[ 0.00000000e+00, -5.55111512e-16]])
|
712
|
+
|
713
|
+
"""
|
714
|
+
A = _asarray_square(A)
|
715
|
+
return _maybe_real(A, 0.5 * (expm(A) + expm(-A)))
|
716
|
+
|
717
|
+
|
718
|
+
@_apply_over_batch(('A', 2))
|
719
|
+
def sinhm(A):
|
720
|
+
"""
|
721
|
+
Compute the hyperbolic matrix sine.
|
722
|
+
|
723
|
+
This routine uses expm to compute the matrix exponentials.
|
724
|
+
|
725
|
+
Parameters
|
726
|
+
----------
|
727
|
+
A : (N, N) array_like
|
728
|
+
Input array.
|
729
|
+
|
730
|
+
Returns
|
731
|
+
-------
|
732
|
+
sinhm : (N, N) ndarray
|
733
|
+
Hyperbolic matrix sine of `A`
|
734
|
+
|
735
|
+
Examples
|
736
|
+
--------
|
737
|
+
>>> import numpy as np
|
738
|
+
>>> from scipy.linalg import tanhm, sinhm, coshm
|
739
|
+
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
|
740
|
+
>>> s = sinhm(a)
|
741
|
+
>>> s
|
742
|
+
array([[ 10.57300653, 39.28826594],
|
743
|
+
[ 13.09608865, 49.86127247]])
|
744
|
+
|
745
|
+
Verify tanhm(a) = sinhm(a).dot(inv(coshm(a)))
|
746
|
+
|
747
|
+
>>> t = tanhm(a)
|
748
|
+
>>> c = coshm(a)
|
749
|
+
>>> t - s.dot(np.linalg.inv(c))
|
750
|
+
array([[ 2.72004641e-15, 4.55191440e-15],
|
751
|
+
[ 0.00000000e+00, -5.55111512e-16]])
|
752
|
+
|
753
|
+
"""
|
754
|
+
A = _asarray_square(A)
|
755
|
+
return _maybe_real(A, 0.5 * (expm(A) - expm(-A)))
|
756
|
+
|
757
|
+
|
758
|
+
@_apply_over_batch(('A', 2))
|
759
|
+
def tanhm(A):
|
760
|
+
"""
|
761
|
+
Compute the hyperbolic matrix tangent.
|
762
|
+
|
763
|
+
This routine uses expm to compute the matrix exponentials.
|
764
|
+
|
765
|
+
Parameters
|
766
|
+
----------
|
767
|
+
A : (N, N) array_like
|
768
|
+
Input array
|
769
|
+
|
770
|
+
Returns
|
771
|
+
-------
|
772
|
+
tanhm : (N, N) ndarray
|
773
|
+
Hyperbolic matrix tangent of `A`
|
774
|
+
|
775
|
+
Examples
|
776
|
+
--------
|
777
|
+
>>> import numpy as np
|
778
|
+
>>> from scipy.linalg import tanhm, sinhm, coshm
|
779
|
+
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
|
780
|
+
>>> t = tanhm(a)
|
781
|
+
>>> t
|
782
|
+
array([[ 0.3428582 , 0.51987926],
|
783
|
+
[ 0.17329309, 0.86273746]])
|
784
|
+
|
785
|
+
Verify tanhm(a) = sinhm(a).dot(inv(coshm(a)))
|
786
|
+
|
787
|
+
>>> s = sinhm(a)
|
788
|
+
>>> c = coshm(a)
|
789
|
+
>>> t - s.dot(np.linalg.inv(c))
|
790
|
+
array([[ 2.72004641e-15, 4.55191440e-15],
|
791
|
+
[ 0.00000000e+00, -5.55111512e-16]])
|
792
|
+
|
793
|
+
"""
|
794
|
+
A = _asarray_square(A)
|
795
|
+
return _maybe_real(A, solve(coshm(A), sinhm(A)))
|
796
|
+
|
797
|
+
|
798
|
+
@_apply_over_batch(('A', 2))
|
799
|
+
def funm(A, func, disp=True):
|
800
|
+
"""
|
801
|
+
Evaluate a matrix function specified by a callable.
|
802
|
+
|
803
|
+
Returns the value of matrix-valued function ``f`` at `A`. The
|
804
|
+
function ``f`` is an extension of the scalar-valued function `func`
|
805
|
+
to matrices.
|
806
|
+
|
807
|
+
Parameters
|
808
|
+
----------
|
809
|
+
A : (N, N) array_like
|
810
|
+
Matrix at which to evaluate the function
|
811
|
+
func : callable
|
812
|
+
Callable object that evaluates a scalar function f.
|
813
|
+
Must be vectorized (eg. using vectorize).
|
814
|
+
disp : bool, optional
|
815
|
+
Print warning if error in the result is estimated large
|
816
|
+
instead of returning estimated error. (Default: True)
|
817
|
+
|
818
|
+
Returns
|
819
|
+
-------
|
820
|
+
funm : (N, N) ndarray
|
821
|
+
Value of the matrix function specified by func evaluated at `A`
|
822
|
+
errest : float
|
823
|
+
(if disp == False)
|
824
|
+
|
825
|
+
1-norm of the estimated error, ||err||_1 / ||A||_1
|
826
|
+
|
827
|
+
Notes
|
828
|
+
-----
|
829
|
+
This function implements the general algorithm based on Schur decomposition
|
830
|
+
(Algorithm 9.1.1. in [1]_).
|
831
|
+
|
832
|
+
If the input matrix is known to be diagonalizable, then relying on the
|
833
|
+
eigendecomposition is likely to be faster. For example, if your matrix is
|
834
|
+
Hermitian, you can do
|
835
|
+
|
836
|
+
>>> from scipy.linalg import eigh
|
837
|
+
>>> def funm_herm(a, func, check_finite=False):
|
838
|
+
... w, v = eigh(a, check_finite=check_finite)
|
839
|
+
... ## if you further know that your matrix is positive semidefinite,
|
840
|
+
... ## you can optionally guard against precision errors by doing
|
841
|
+
... # w = np.maximum(w, 0)
|
842
|
+
... w = func(w)
|
843
|
+
... return (v * w).dot(v.conj().T)
|
844
|
+
|
845
|
+
References
|
846
|
+
----------
|
847
|
+
.. [1] Gene H. Golub, Charles F. van Loan, Matrix Computations 4th ed.
|
848
|
+
|
849
|
+
Examples
|
850
|
+
--------
|
851
|
+
>>> import numpy as np
|
852
|
+
>>> from scipy.linalg import funm
|
853
|
+
>>> a = np.array([[1.0, 3.0], [1.0, 4.0]])
|
854
|
+
>>> funm(a, lambda x: x*x)
|
855
|
+
array([[ 4., 15.],
|
856
|
+
[ 5., 19.]])
|
857
|
+
>>> a.dot(a)
|
858
|
+
array([[ 4., 15.],
|
859
|
+
[ 5., 19.]])
|
860
|
+
|
861
|
+
"""
|
862
|
+
A = _asarray_square(A)
|
863
|
+
# Perform Shur decomposition (lapack ?gees)
|
864
|
+
T, Z = schur(A)
|
865
|
+
T, Z = rsf2csf(T, Z)
|
866
|
+
n, n = T.shape
|
867
|
+
F = diag(func(diag(T))) # apply function to diagonal elements
|
868
|
+
F = F.astype(T.dtype.char) # e.g., when F is real but T is complex
|
869
|
+
|
870
|
+
minden = abs(T[0, 0])
|
871
|
+
|
872
|
+
# implement Algorithm 11.1.1 from Golub and Van Loan
|
873
|
+
# "matrix Computations."
|
874
|
+
F, minden = _funm_loops(F, T, n, minden)
|
875
|
+
|
876
|
+
F = dot(dot(Z, F), transpose(conjugate(Z)))
|
877
|
+
F = _maybe_real(A, F)
|
878
|
+
|
879
|
+
tol = {0: feps, 1: eps}[_array_precision[F.dtype.char]]
|
880
|
+
if minden == 0.0:
|
881
|
+
minden = tol
|
882
|
+
err = min(1, max(tol, (tol/minden)*norm(triu(T, 1), 1)))
|
883
|
+
if prod(ravel(logical_not(isfinite(F))), axis=0):
|
884
|
+
err = np.inf
|
885
|
+
if disp:
|
886
|
+
if err > 1000*tol:
|
887
|
+
print("funm result may be inaccurate, approximate err =", err)
|
888
|
+
return F
|
889
|
+
else:
|
890
|
+
return F, err
|
891
|
+
|
892
|
+
|
893
|
+
@_apply_over_batch(('A', 2))
|
894
|
+
def signm(A, disp=_NoValue):
|
895
|
+
"""
|
896
|
+
Matrix sign function.
|
897
|
+
|
898
|
+
Extension of the scalar sign(x) to matrices.
|
899
|
+
|
900
|
+
Parameters
|
901
|
+
----------
|
902
|
+
A : (N, N) array_like
|
903
|
+
Matrix at which to evaluate the sign function
|
904
|
+
disp : bool, optional
|
905
|
+
Print warning if error in the result is estimated large
|
906
|
+
instead of returning estimated error. (Default: True)
|
907
|
+
|
908
|
+
.. deprecated:: 1.16.0
|
909
|
+
The `disp` argument is deprecated and will be
|
910
|
+
removed in SciPy 1.18.0. The previously returned error estimate
|
911
|
+
can be computed as ``norm(signm @ signm - signm, 1)``.
|
912
|
+
|
913
|
+
Returns
|
914
|
+
-------
|
915
|
+
signm : (N, N) ndarray
|
916
|
+
Value of the sign function at `A`
|
917
|
+
errest : float
|
918
|
+
(if disp == False)
|
919
|
+
|
920
|
+
1-norm of the estimated error, ||err||_1 / ||A||_1
|
921
|
+
|
922
|
+
Examples
|
923
|
+
--------
|
924
|
+
>>> from scipy.linalg import signm, eigvals
|
925
|
+
>>> a = [[1,2,3], [1,2,1], [1,1,1]]
|
926
|
+
>>> eigvals(a)
|
927
|
+
array([ 4.12488542+0.j, -0.76155718+0.j, 0.63667176+0.j])
|
928
|
+
>>> eigvals(signm(a))
|
929
|
+
array([-1.+0.j, 1.+0.j, 1.+0.j])
|
930
|
+
|
931
|
+
"""
|
932
|
+
if disp is _NoValue:
|
933
|
+
disp = True
|
934
|
+
else:
|
935
|
+
warnings.warn("The `disp` argument is deprecated "
|
936
|
+
"and will be removed in SciPy 1.18.0.",
|
937
|
+
DeprecationWarning, stacklevel=2)
|
938
|
+
|
939
|
+
A = _asarray_square(A)
|
940
|
+
|
941
|
+
def rounded_sign(x):
|
942
|
+
rx = np.real(x)
|
943
|
+
if rx.dtype.char == 'f':
|
944
|
+
c = 1e3*feps*amax(x)
|
945
|
+
else:
|
946
|
+
c = 1e3*eps*amax(x)
|
947
|
+
return sign((absolute(rx) > c) * rx)
|
948
|
+
result, errest = funm(A, rounded_sign, disp=0)
|
949
|
+
errtol = {0: 1e3*feps, 1: 1e3*eps}[_array_precision[result.dtype.char]]
|
950
|
+
if errest < errtol:
|
951
|
+
return result
|
952
|
+
|
953
|
+
# Handle signm of defective matrices:
|
954
|
+
|
955
|
+
# See "E.D.Denman and J.Leyva-Ramos, Appl.Math.Comp.,
|
956
|
+
# 8:237-250,1981" for how to improve the following (currently a
|
957
|
+
# rather naive) iteration process:
|
958
|
+
|
959
|
+
# a = result # sometimes iteration converges faster but where??
|
960
|
+
|
961
|
+
# Shifting to avoid zero eigenvalues. How to ensure that shifting does
|
962
|
+
# not change the spectrum too much?
|
963
|
+
vals = svd(A, compute_uv=False)
|
964
|
+
max_sv = np.amax(vals)
|
965
|
+
# min_nonzero_sv = vals[(vals>max_sv*errtol).tolist().count(1)-1]
|
966
|
+
# c = 0.5/min_nonzero_sv
|
967
|
+
c = 0.5/max_sv
|
968
|
+
S0 = A + c*np.identity(A.shape[0])
|
969
|
+
prev_errest = errest
|
970
|
+
for i in range(100):
|
971
|
+
iS0 = inv(S0)
|
972
|
+
S0 = 0.5*(S0 + iS0)
|
973
|
+
Pp = 0.5*(dot(S0, S0)+S0)
|
974
|
+
errest = norm(dot(Pp, Pp)-Pp, 1)
|
975
|
+
if errest < errtol or prev_errest == errest:
|
976
|
+
break
|
977
|
+
prev_errest = errest
|
978
|
+
if disp:
|
979
|
+
if not isfinite(errest) or errest >= errtol:
|
980
|
+
print("signm result may be inaccurate, approximate err =", errest)
|
981
|
+
return S0
|
982
|
+
else:
|
983
|
+
return S0, errest
|
984
|
+
|
985
|
+
|
986
|
+
@_apply_over_batch(('a', 2), ('b', 2))
|
987
|
+
def khatri_rao(a, b):
|
988
|
+
r"""
|
989
|
+
Khatri-rao product
|
990
|
+
|
991
|
+
A column-wise Kronecker product of two matrices
|
992
|
+
|
993
|
+
Parameters
|
994
|
+
----------
|
995
|
+
a : (n, k) array_like
|
996
|
+
Input array
|
997
|
+
b : (m, k) array_like
|
998
|
+
Input array
|
999
|
+
|
1000
|
+
Returns
|
1001
|
+
-------
|
1002
|
+
c: (n*m, k) ndarray
|
1003
|
+
Khatri-rao product of `a` and `b`.
|
1004
|
+
|
1005
|
+
Notes
|
1006
|
+
-----
|
1007
|
+
The mathematical definition of the Khatri-Rao product is:
|
1008
|
+
|
1009
|
+
.. math::
|
1010
|
+
|
1011
|
+
(A_{ij} \bigotimes B_{ij})_{ij}
|
1012
|
+
|
1013
|
+
which is the Kronecker product of every column of A and B, e.g.::
|
1014
|
+
|
1015
|
+
c = np.vstack([np.kron(a[:, k], b[:, k]) for k in range(b.shape[1])]).T
|
1016
|
+
|
1017
|
+
Examples
|
1018
|
+
--------
|
1019
|
+
>>> import numpy as np
|
1020
|
+
>>> from scipy import linalg
|
1021
|
+
>>> a = np.array([[1, 2, 3], [4, 5, 6]])
|
1022
|
+
>>> b = np.array([[3, 4, 5], [6, 7, 8], [2, 3, 9]])
|
1023
|
+
>>> linalg.khatri_rao(a, b)
|
1024
|
+
array([[ 3, 8, 15],
|
1025
|
+
[ 6, 14, 24],
|
1026
|
+
[ 2, 6, 27],
|
1027
|
+
[12, 20, 30],
|
1028
|
+
[24, 35, 48],
|
1029
|
+
[ 8, 15, 54]])
|
1030
|
+
|
1031
|
+
"""
|
1032
|
+
a = np.asarray(a)
|
1033
|
+
b = np.asarray(b)
|
1034
|
+
|
1035
|
+
if not (a.ndim == 2 and b.ndim == 2):
|
1036
|
+
raise ValueError("The both arrays should be 2-dimensional.")
|
1037
|
+
|
1038
|
+
if not a.shape[1] == b.shape[1]:
|
1039
|
+
raise ValueError("The number of columns for both arrays "
|
1040
|
+
"should be equal.")
|
1041
|
+
|
1042
|
+
# accommodate empty arrays
|
1043
|
+
if a.size == 0 or b.size == 0:
|
1044
|
+
m = a.shape[0] * b.shape[0]
|
1045
|
+
n = a.shape[1]
|
1046
|
+
return np.empty_like(a, shape=(m, n))
|
1047
|
+
|
1048
|
+
# c = np.vstack([np.kron(a[:, k], b[:, k]) for k in range(b.shape[1])]).T
|
1049
|
+
c = a[..., :, np.newaxis, :] * b[..., np.newaxis, :, :]
|
1050
|
+
return c.reshape((-1,) + c.shape[2:])
|