scipy 1.15.3__cp312-cp312-win_amd64.whl → 1.16.0rc2__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scipy/__config__.py +8 -8
- scipy/__init__.py +3 -6
- scipy/_cyutility.cp312-win_amd64.dll.a +0 -0
- scipy/_cyutility.cp312-win_amd64.pyd +0 -0
- scipy/_lib/_array_api.py +486 -161
- scipy/_lib/_array_api_compat_vendor.py +9 -0
- scipy/_lib/_bunch.py +4 -0
- scipy/_lib/_ccallback_c.cp312-win_amd64.dll.a +0 -0
- scipy/_lib/_ccallback_c.cp312-win_amd64.pyd +0 -0
- scipy/_lib/_docscrape.py +1 -1
- scipy/_lib/_elementwise_iterative_method.py +15 -26
- scipy/_lib/_fpumode.cp312-win_amd64.dll.a +0 -0
- scipy/_lib/_fpumode.cp312-win_amd64.pyd +0 -0
- scipy/_lib/_sparse.py +41 -0
- scipy/_lib/_test_ccallback.cp312-win_amd64.dll.a +0 -0
- scipy/_lib/_test_ccallback.cp312-win_amd64.pyd +0 -0
- scipy/_lib/_test_deprecation_call.cp312-win_amd64.dll.a +0 -0
- scipy/_lib/_test_deprecation_call.cp312-win_amd64.pyd +0 -0
- scipy/_lib/_test_deprecation_def.cp312-win_amd64.dll.a +0 -0
- scipy/_lib/_test_deprecation_def.cp312-win_amd64.pyd +0 -0
- scipy/_lib/_testutils.py +6 -2
- scipy/_lib/_uarray/_uarray.cp312-win_amd64.dll.a +0 -0
- scipy/_lib/_uarray/_uarray.cp312-win_amd64.pyd +0 -0
- scipy/_lib/_util.py +222 -125
- scipy/_lib/array_api_compat/__init__.py +4 -4
- scipy/_lib/array_api_compat/_internal.py +19 -6
- scipy/_lib/array_api_compat/common/__init__.py +1 -1
- scipy/_lib/array_api_compat/common/_aliases.py +365 -193
- scipy/_lib/array_api_compat/common/_fft.py +94 -64
- scipy/_lib/array_api_compat/common/_helpers.py +413 -180
- scipy/_lib/array_api_compat/common/_linalg.py +116 -40
- scipy/_lib/array_api_compat/common/_typing.py +179 -10
- scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
- scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
- scipy/_lib/array_api_compat/cupy/_info.py +16 -6
- scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
- scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
- scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
- scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
- scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
- scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
- scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
- scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
- scipy/_lib/array_api_compat/numpy/_info.py +36 -16
- scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
- scipy/_lib/array_api_compat/numpy/fft.py +11 -5
- scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
- scipy/_lib/array_api_compat/torch/__init__.py +3 -5
- scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
- scipy/_lib/array_api_compat/torch/_info.py +27 -16
- scipy/_lib/array_api_compat/torch/_typing.py +3 -0
- scipy/_lib/array_api_compat/torch/fft.py +17 -18
- scipy/_lib/array_api_compat/torch/linalg.py +16 -16
- scipy/_lib/array_api_extra/__init__.py +26 -3
- scipy/_lib/array_api_extra/_delegation.py +171 -0
- scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_at.py +463 -0
- scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
- scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
- scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
- scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
- scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
- scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
- scipy/_lib/array_api_extra/testing.py +359 -0
- scipy/_lib/decorator.py +2 -2
- scipy/_lib/doccer.py +1 -7
- scipy/_lib/messagestream.cp312-win_amd64.dll.a +0 -0
- scipy/_lib/messagestream.cp312-win_amd64.pyd +0 -0
- scipy/_lib/pyprima/__init__.py +212 -0
- scipy/_lib/pyprima/cobyla/__init__.py +0 -0
- scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
- scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
- scipy/_lib/pyprima/cobyla/geometry.py +226 -0
- scipy/_lib/pyprima/cobyla/initialize.py +215 -0
- scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
- scipy/_lib/pyprima/cobyla/update.py +289 -0
- scipy/_lib/pyprima/common/__init__.py +0 -0
- scipy/_lib/pyprima/common/_bounds.py +34 -0
- scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
- scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
- scipy/_lib/pyprima/common/_project.py +173 -0
- scipy/_lib/pyprima/common/checkbreak.py +93 -0
- scipy/_lib/pyprima/common/consts.py +47 -0
- scipy/_lib/pyprima/common/evaluate.py +99 -0
- scipy/_lib/pyprima/common/history.py +38 -0
- scipy/_lib/pyprima/common/infos.py +30 -0
- scipy/_lib/pyprima/common/linalg.py +435 -0
- scipy/_lib/pyprima/common/message.py +290 -0
- scipy/_lib/pyprima/common/powalg.py +131 -0
- scipy/_lib/pyprima/common/preproc.py +277 -0
- scipy/_lib/pyprima/common/present.py +5 -0
- scipy/_lib/pyprima/common/ratio.py +54 -0
- scipy/_lib/pyprima/common/redrho.py +47 -0
- scipy/_lib/pyprima/common/selectx.py +296 -0
- scipy/_lib/tests/test__util.py +105 -121
- scipy/_lib/tests/test_array_api.py +166 -35
- scipy/_lib/tests/test_bunch.py +7 -0
- scipy/_lib/tests/test_ccallback.py +2 -10
- scipy/_lib/tests/test_public_api.py +13 -0
- scipy/cluster/_hierarchy.cp312-win_amd64.dll.a +0 -0
- scipy/cluster/_hierarchy.cp312-win_amd64.pyd +0 -0
- scipy/cluster/_optimal_leaf_ordering.cp312-win_amd64.dll.a +0 -0
- scipy/cluster/_optimal_leaf_ordering.cp312-win_amd64.pyd +0 -0
- scipy/cluster/_vq.cp312-win_amd64.dll.a +0 -0
- scipy/cluster/_vq.cp312-win_amd64.pyd +0 -0
- scipy/cluster/hierarchy.py +393 -223
- scipy/cluster/tests/test_hierarchy.py +273 -335
- scipy/cluster/tests/test_vq.py +45 -61
- scipy/cluster/vq.py +39 -35
- scipy/conftest.py +263 -157
- scipy/constants/_constants.py +4 -1
- scipy/constants/tests/test_codata.py +2 -2
- scipy/constants/tests/test_constants.py +11 -18
- scipy/datasets/_download_all.py +15 -1
- scipy/datasets/_fetchers.py +7 -1
- scipy/datasets/_utils.py +1 -1
- scipy/differentiate/_differentiate.py +25 -25
- scipy/differentiate/tests/test_differentiate.py +24 -25
- scipy/fft/_basic.py +20 -0
- scipy/fft/_helper.py +3 -34
- scipy/fft/_pocketfft/helper.py +29 -1
- scipy/fft/_pocketfft/pypocketfft.cp312-win_amd64.dll.a +0 -0
- scipy/fft/_pocketfft/pypocketfft.cp312-win_amd64.pyd +0 -0
- scipy/fft/_pocketfft/tests/test_basic.py +2 -4
- scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
- scipy/fft/_realtransforms.py +13 -0
- scipy/fft/tests/test_basic.py +27 -25
- scipy/fft/tests/test_fftlog.py +16 -7
- scipy/fft/tests/test_helper.py +18 -34
- scipy/fft/tests/test_real_transforms.py +8 -10
- scipy/fftpack/convolve.cp312-win_amd64.dll.a +0 -0
- scipy/fftpack/convolve.cp312-win_amd64.pyd +0 -0
- scipy/fftpack/tests/test_basic.py +2 -4
- scipy/fftpack/tests/test_real_transforms.py +8 -9
- scipy/integrate/_bvp.py +9 -3
- scipy/integrate/_cubature.py +3 -2
- scipy/integrate/_dop.cp312-win_amd64.dll.a +0 -0
- scipy/integrate/_dop.cp312-win_amd64.pyd +0 -0
- scipy/integrate/_lsoda.cp312-win_amd64.dll.a +0 -0
- scipy/integrate/_lsoda.cp312-win_amd64.pyd +0 -0
- scipy/integrate/_ode.py +9 -2
- scipy/integrate/_odepack.cp312-win_amd64.dll.a +0 -0
- scipy/integrate/_odepack.cp312-win_amd64.pyd +0 -0
- scipy/integrate/_quad_vec.py +21 -29
- scipy/integrate/_quadpack.cp312-win_amd64.dll.a +0 -0
- scipy/integrate/_quadpack.cp312-win_amd64.pyd +0 -0
- scipy/integrate/_quadpack_py.py +11 -7
- scipy/integrate/_quadrature.py +3 -3
- scipy/integrate/_rules/_base.py +2 -2
- scipy/integrate/_tanhsinh.py +48 -47
- scipy/integrate/_test_multivariate.cp312-win_amd64.dll.a +0 -0
- scipy/integrate/_test_multivariate.cp312-win_amd64.pyd +0 -0
- scipy/integrate/_test_odeint_banded.cp312-win_amd64.dll.a +0 -0
- scipy/integrate/_test_odeint_banded.cp312-win_amd64.pyd +0 -0
- scipy/integrate/_vode.cp312-win_amd64.dll.a +0 -0
- scipy/integrate/_vode.cp312-win_amd64.pyd +0 -0
- scipy/integrate/tests/test__quad_vec.py +0 -6
- scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
- scipy/integrate/tests/test_cubature.py +21 -35
- scipy/integrate/tests/test_quadrature.py +6 -8
- scipy/integrate/tests/test_tanhsinh.py +56 -48
- scipy/interpolate/__init__.py +70 -58
- scipy/interpolate/_bary_rational.py +22 -22
- scipy/interpolate/_bsplines.py +119 -66
- scipy/interpolate/_cubic.py +65 -50
- scipy/interpolate/_dfitpack.cp312-win_amd64.dll.a +0 -0
- scipy/interpolate/_dfitpack.cp312-win_amd64.pyd +0 -0
- scipy/interpolate/_dierckx.cp312-win_amd64.dll.a +0 -0
- scipy/interpolate/_dierckx.cp312-win_amd64.pyd +0 -0
- scipy/interpolate/_fitpack.cp312-win_amd64.dll.a +0 -0
- scipy/interpolate/_fitpack.cp312-win_amd64.pyd +0 -0
- scipy/interpolate/_fitpack2.py +9 -6
- scipy/interpolate/_fitpack_impl.py +32 -26
- scipy/interpolate/_fitpack_repro.py +23 -19
- scipy/interpolate/_interpnd.cp312-win_amd64.dll.a +0 -0
- scipy/interpolate/_interpnd.cp312-win_amd64.pyd +0 -0
- scipy/interpolate/_interpolate.py +30 -12
- scipy/interpolate/_ndbspline.py +13 -18
- scipy/interpolate/_ndgriddata.py +5 -8
- scipy/interpolate/_polyint.py +95 -31
- scipy/interpolate/_ppoly.cp312-win_amd64.dll.a +0 -0
- scipy/interpolate/_ppoly.cp312-win_amd64.pyd +0 -0
- scipy/interpolate/_rbf.py +2 -2
- scipy/interpolate/_rbfinterp.py +1 -1
- scipy/interpolate/_rbfinterp_pythran.cp312-win_amd64.dll.a +0 -0
- scipy/interpolate/_rbfinterp_pythran.cp312-win_amd64.pyd +0 -0
- scipy/interpolate/_rgi.py +31 -26
- scipy/interpolate/_rgi_cython.cp312-win_amd64.dll.a +0 -0
- scipy/interpolate/_rgi_cython.cp312-win_amd64.pyd +0 -0
- scipy/interpolate/dfitpack.py +0 -20
- scipy/interpolate/interpnd.py +1 -2
- scipy/interpolate/tests/test_bary_rational.py +2 -2
- scipy/interpolate/tests/test_bsplines.py +97 -1
- scipy/interpolate/tests/test_fitpack2.py +39 -1
- scipy/interpolate/tests/test_interpnd.py +32 -20
- scipy/interpolate/tests/test_interpolate.py +48 -4
- scipy/interpolate/tests/test_rgi.py +2 -1
- scipy/io/_fast_matrix_market/__init__.py +2 -0
- scipy/io/_fast_matrix_market/_fmm_core.cp312-win_amd64.dll.a +0 -0
- scipy/io/_fast_matrix_market/_fmm_core.cp312-win_amd64.pyd +0 -0
- scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
- scipy/io/_harwell_boeing/hb.py +7 -11
- scipy/io/_idl.py +5 -7
- scipy/io/_netcdf.py +15 -5
- scipy/io/_test_fortran.cp312-win_amd64.dll.a +0 -0
- scipy/io/_test_fortran.cp312-win_amd64.pyd +0 -0
- scipy/io/arff/tests/test_arffread.py +3 -3
- scipy/io/matlab/__init__.py +5 -3
- scipy/io/matlab/_mio.py +4 -1
- scipy/io/matlab/_mio5.py +19 -13
- scipy/io/matlab/_mio5_utils.cp312-win_amd64.dll.a +0 -0
- scipy/io/matlab/_mio5_utils.cp312-win_amd64.pyd +0 -0
- scipy/io/matlab/_mio_utils.cp312-win_amd64.dll.a +0 -0
- scipy/io/matlab/_mio_utils.cp312-win_amd64.pyd +0 -0
- scipy/io/matlab/_miobase.py +4 -1
- scipy/io/matlab/_streams.cp312-win_amd64.dll.a +0 -0
- scipy/io/matlab/_streams.cp312-win_amd64.pyd +0 -0
- scipy/io/matlab/tests/test_mio.py +46 -18
- scipy/io/matlab/tests/test_mio_funcs.py +1 -1
- scipy/io/tests/test_mmio.py +7 -1
- scipy/io/tests/test_wavfile.py +41 -0
- scipy/io/wavfile.py +57 -10
- scipy/linalg/_basic.py +113 -86
- scipy/linalg/_cythonized_array_utils.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_cythonized_array_utils.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_decomp.py +22 -9
- scipy/linalg/_decomp_cholesky.py +28 -13
- scipy/linalg/_decomp_cossin.py +45 -30
- scipy/linalg/_decomp_interpolative.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_decomp_interpolative.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_decomp_ldl.py +4 -1
- scipy/linalg/_decomp_lu.py +18 -6
- scipy/linalg/_decomp_lu_cython.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_decomp_lu_cython.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_decomp_polar.py +2 -0
- scipy/linalg/_decomp_qr.py +6 -2
- scipy/linalg/_decomp_qz.py +3 -0
- scipy/linalg/_decomp_schur.py +3 -1
- scipy/linalg/_decomp_svd.py +13 -2
- scipy/linalg/_decomp_update.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_decomp_update.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_expm_frechet.py +4 -0
- scipy/linalg/_fblas.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_fblas.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_flapack.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_flapack.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_linalg_pythran.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_linalg_pythran.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_matfuncs.py +187 -4
- scipy/linalg/_matfuncs_expm.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_matfuncs_expm.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_matfuncs_sqrtm.py +1 -99
- scipy/linalg/_matfuncs_sqrtm_triu.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_matfuncs_sqrtm_triu.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_procrustes.py +2 -0
- scipy/linalg/_sketches.py +17 -6
- scipy/linalg/_solve_toeplitz.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/_solve_toeplitz.cp312-win_amd64.pyd +0 -0
- scipy/linalg/_solvers.py +7 -2
- scipy/linalg/_special_matrices.py +26 -36
- scipy/linalg/cython_blas.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/cython_blas.cp312-win_amd64.pyd +0 -0
- scipy/linalg/cython_lapack.cp312-win_amd64.dll.a +0 -0
- scipy/linalg/cython_lapack.cp312-win_amd64.pyd +0 -0
- scipy/linalg/lapack.py +22 -2
- scipy/linalg/tests/_cython_examples/meson.build +7 -0
- scipy/linalg/tests/test_basic.py +31 -16
- scipy/linalg/tests/test_batch.py +588 -0
- scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
- scipy/linalg/tests/test_decomp.py +40 -3
- scipy/linalg/tests/test_decomp_cossin.py +14 -0
- scipy/linalg/tests/test_decomp_ldl.py +1 -1
- scipy/linalg/tests/test_lapack.py +115 -7
- scipy/linalg/tests/test_matfuncs.py +157 -102
- scipy/linalg/tests/test_procrustes.py +0 -7
- scipy/linalg/tests/test_solve_toeplitz.py +1 -1
- scipy/linalg/tests/test_special_matrices.py +1 -5
- scipy/ndimage/__init__.py +1 -0
- scipy/ndimage/_ctest.cp312-win_amd64.dll.a +0 -0
- scipy/ndimage/_ctest.cp312-win_amd64.pyd +0 -0
- scipy/ndimage/_cytest.cp312-win_amd64.dll.a +0 -0
- scipy/ndimage/_cytest.cp312-win_amd64.pyd +0 -0
- scipy/ndimage/_delegators.py +8 -2
- scipy/ndimage/_filters.py +453 -5
- scipy/ndimage/_interpolation.py +36 -6
- scipy/ndimage/_measurements.py +4 -2
- scipy/ndimage/_morphology.py +5 -0
- scipy/ndimage/_nd_image.cp312-win_amd64.dll.a +0 -0
- scipy/ndimage/_nd_image.cp312-win_amd64.pyd +0 -0
- scipy/ndimage/_ni_docstrings.py +5 -1
- scipy/ndimage/_ni_label.cp312-win_amd64.dll.a +0 -0
- scipy/ndimage/_ni_label.cp312-win_amd64.pyd +0 -0
- scipy/ndimage/_ni_support.py +1 -5
- scipy/ndimage/_rank_filter_1d.cp312-win_amd64.dll.a +0 -0
- scipy/ndimage/_rank_filter_1d.cp312-win_amd64.pyd +0 -0
- scipy/ndimage/_support_alternative_backends.py +18 -6
- scipy/ndimage/tests/test_filters.py +370 -259
- scipy/ndimage/tests/test_fourier.py +7 -9
- scipy/ndimage/tests/test_interpolation.py +68 -61
- scipy/ndimage/tests/test_measurements.py +18 -35
- scipy/ndimage/tests/test_morphology.py +143 -131
- scipy/ndimage/tests/test_splines.py +1 -3
- scipy/odr/__odrpack.cp312-win_amd64.dll.a +0 -0
- scipy/odr/__odrpack.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_basinhopping.py +13 -7
- scipy/optimize/_bglu_dense.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_bglu_dense.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_bracket.py +17 -24
- scipy/optimize/_chandrupatla.py +9 -10
- scipy/optimize/_cobyla_py.py +104 -123
- scipy/optimize/_constraints.py +14 -10
- scipy/optimize/_differentiable_functions.py +371 -230
- scipy/optimize/_differentialevolution.py +4 -3
- scipy/optimize/_direct.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_direct.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_dual_annealing.py +1 -1
- scipy/optimize/_elementwise.py +1 -4
- scipy/optimize/_group_columns.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_group_columns.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_highspy/_core.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_highspy/_core.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_highspy/_highs_options.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_highspy/_highs_options.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_lbfgsb.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_lbfgsb.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_lbfgsb_py.py +57 -16
- scipy/optimize/_linprog_doc.py +2 -2
- scipy/optimize/_linprog_highs.py +2 -2
- scipy/optimize/_linprog_ip.py +25 -10
- scipy/optimize/_linprog_util.py +14 -16
- scipy/optimize/_lsap.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_lsap.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_lsq/common.py +3 -3
- scipy/optimize/_lsq/dogbox.py +16 -2
- scipy/optimize/_lsq/givens_elimination.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_lsq/givens_elimination.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_lsq/least_squares.py +198 -126
- scipy/optimize/_lsq/lsq_linear.py +6 -6
- scipy/optimize/_lsq/trf.py +35 -8
- scipy/optimize/_milp.py +3 -1
- scipy/optimize/_minimize.py +105 -36
- scipy/optimize/_minpack.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_minpack.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_minpack_py.py +21 -14
- scipy/optimize/_moduleTNC.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_moduleTNC.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_nnls.py +20 -21
- scipy/optimize/_nonlin.py +34 -3
- scipy/optimize/_numdiff.py +288 -110
- scipy/optimize/_optimize.py +86 -48
- scipy/optimize/_pava_pybind.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_pava_pybind.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_remove_redundancy.py +5 -5
- scipy/optimize/_root_scalar.py +1 -1
- scipy/optimize/_shgo.py +6 -0
- scipy/optimize/_shgo_lib/_complex.py +1 -1
- scipy/optimize/_slsqp_py.py +216 -124
- scipy/optimize/_slsqplib.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_slsqplib.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_spectral.py +1 -1
- scipy/optimize/_tnc.py +8 -1
- scipy/optimize/_trlib/_trlib.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_trlib/_trlib.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_trustregion.py +20 -6
- scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
- scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
- scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
- scipy/optimize/_trustregion_constr/projections.py +12 -8
- scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
- scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
- scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
- scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
- scipy/optimize/_trustregion_exact.py +0 -1
- scipy/optimize/_zeros.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_zeros.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_zeros_py.py +97 -17
- scipy/optimize/cython_optimize/_zeros.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/cython_optimize/_zeros.cp312-win_amd64.pyd +0 -0
- scipy/optimize/slsqp.py +0 -1
- scipy/optimize/tests/test__basinhopping.py +1 -1
- scipy/optimize/tests/test__differential_evolution.py +4 -4
- scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
- scipy/optimize/tests/test__numdiff.py +66 -22
- scipy/optimize/tests/test__remove_redundancy.py +2 -2
- scipy/optimize/tests/test__shgo.py +9 -1
- scipy/optimize/tests/test_bracket.py +36 -46
- scipy/optimize/tests/test_chandrupatla.py +133 -135
- scipy/optimize/tests/test_cobyla.py +74 -45
- scipy/optimize/tests/test_constraints.py +1 -1
- scipy/optimize/tests/test_differentiable_functions.py +226 -6
- scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
- scipy/optimize/tests/test_least_squares.py +125 -13
- scipy/optimize/tests/test_linear_assignment.py +3 -3
- scipy/optimize/tests/test_linprog.py +3 -3
- scipy/optimize/tests/test_lsq_linear.py +6 -6
- scipy/optimize/tests/test_minimize_constrained.py +2 -2
- scipy/optimize/tests/test_minpack.py +4 -4
- scipy/optimize/tests/test_nnls.py +43 -3
- scipy/optimize/tests/test_nonlin.py +36 -0
- scipy/optimize/tests/test_optimize.py +95 -17
- scipy/optimize/tests/test_slsqp.py +36 -4
- scipy/optimize/tests/test_zeros.py +34 -1
- scipy/signal/__init__.py +12 -23
- scipy/signal/_delegators.py +568 -0
- scipy/signal/_filter_design.py +459 -241
- scipy/signal/_fir_filter_design.py +262 -90
- scipy/signal/_lti_conversion.py +3 -2
- scipy/signal/_ltisys.py +118 -91
- scipy/signal/_max_len_seq_inner.cp312-win_amd64.dll.a +0 -0
- scipy/signal/_max_len_seq_inner.cp312-win_amd64.pyd +0 -0
- scipy/signal/_peak_finding_utils.cp312-win_amd64.dll.a +0 -0
- scipy/signal/_peak_finding_utils.cp312-win_amd64.pyd +0 -0
- scipy/signal/_polyutils.py +172 -0
- scipy/signal/_short_time_fft.py +519 -70
- scipy/signal/_signal_api.py +30 -0
- scipy/signal/_signaltools.py +719 -399
- scipy/signal/_sigtools.cp312-win_amd64.dll.a +0 -0
- scipy/signal/_sigtools.cp312-win_amd64.pyd +0 -0
- scipy/signal/_sosfilt.cp312-win_amd64.dll.a +0 -0
- scipy/signal/_sosfilt.cp312-win_amd64.pyd +0 -0
- scipy/signal/_spectral_py.py +230 -50
- scipy/signal/_spline.cp312-win_amd64.dll.a +0 -0
- scipy/signal/_spline.cp312-win_amd64.pyd +0 -0
- scipy/signal/_spline_filters.py +108 -68
- scipy/signal/_support_alternative_backends.py +73 -0
- scipy/signal/_upfirdn.py +4 -1
- scipy/signal/_upfirdn_apply.cp312-win_amd64.dll.a +0 -0
- scipy/signal/_upfirdn_apply.cp312-win_amd64.pyd +0 -0
- scipy/signal/_waveforms.py +2 -11
- scipy/signal/_wavelets.py +1 -1
- scipy/signal/fir_filter_design.py +1 -0
- scipy/signal/spline.py +4 -11
- scipy/signal/tests/_scipy_spectral_test_shim.py +2 -171
- scipy/signal/tests/test_bsplines.py +114 -79
- scipy/signal/tests/test_cont2discrete.py +9 -2
- scipy/signal/tests/test_filter_design.py +721 -481
- scipy/signal/tests/test_fir_filter_design.py +332 -140
- scipy/signal/tests/test_savitzky_golay.py +4 -3
- scipy/signal/tests/test_short_time_fft.py +221 -3
- scipy/signal/tests/test_signaltools.py +2144 -1348
- scipy/signal/tests/test_spectral.py +50 -6
- scipy/signal/tests/test_splines.py +161 -96
- scipy/signal/tests/test_upfirdn.py +84 -50
- scipy/signal/tests/test_waveforms.py +20 -0
- scipy/signal/tests/test_windows.py +607 -466
- scipy/signal/windows/_windows.py +287 -148
- scipy/sparse/__init__.py +23 -4
- scipy/sparse/_base.py +270 -108
- scipy/sparse/_bsr.py +7 -4
- scipy/sparse/_compressed.py +59 -231
- scipy/sparse/_construct.py +90 -38
- scipy/sparse/_coo.py +115 -181
- scipy/sparse/_csc.py +4 -4
- scipy/sparse/_csparsetools.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/_csparsetools.cp312-win_amd64.pyd +0 -0
- scipy/sparse/_csr.py +2 -2
- scipy/sparse/_data.py +48 -48
- scipy/sparse/_dia.py +105 -18
- scipy/sparse/_dok.py +0 -23
- scipy/sparse/_index.py +4 -4
- scipy/sparse/_matrix.py +23 -0
- scipy/sparse/_sparsetools.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/_sparsetools.cp312-win_amd64.pyd +0 -0
- scipy/sparse/_sputils.py +37 -22
- scipy/sparse/base.py +0 -9
- scipy/sparse/bsr.py +0 -14
- scipy/sparse/compressed.py +0 -23
- scipy/sparse/construct.py +0 -6
- scipy/sparse/coo.py +0 -14
- scipy/sparse/csc.py +0 -3
- scipy/sparse/csgraph/_flow.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_flow.cp312-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_matching.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_matching.cp312-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cp312-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_reordering.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_reordering.cp312-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_shortest_path.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_shortest_path.cp312-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_tools.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_tools.cp312-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/_traversal.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/csgraph/_traversal.cp312-win_amd64.pyd +0 -0
- scipy/sparse/csgraph/tests/test_matching.py +14 -2
- scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
- scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
- scipy/sparse/csr.py +0 -5
- scipy/sparse/data.py +1 -6
- scipy/sparse/dia.py +0 -7
- scipy/sparse/dok.py +0 -10
- scipy/sparse/linalg/_dsolve/_superlu.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_dsolve/_superlu.cp312-win_amd64.pyd +0 -0
- scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
- scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
- scipy/sparse/linalg/_eigen/arpack/_arpack.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_eigen/arpack/_arpack.cp312-win_amd64.pyd +0 -0
- scipy/sparse/linalg/_eigen/arpack/arpack.py +23 -17
- scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
- scipy/sparse/linalg/_interface.py +17 -18
- scipy/sparse/linalg/_isolve/_gcrotmk.py +4 -4
- scipy/sparse/linalg/_isolve/iterative.py +51 -45
- scipy/sparse/linalg/_isolve/lgmres.py +6 -6
- scipy/sparse/linalg/_isolve/minres.py +5 -5
- scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
- scipy/sparse/linalg/_isolve/utils.py +2 -8
- scipy/sparse/linalg/_matfuncs.py +1 -1
- scipy/sparse/linalg/_norm.py +1 -1
- scipy/sparse/linalg/_propack/_cpropack.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_propack/_cpropack.cp312-win_amd64.pyd +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cp312-win_amd64.pyd +0 -0
- scipy/sparse/linalg/_propack/_spropack.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_propack/_spropack.cp312-win_amd64.pyd +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cp312-win_amd64.dll.a +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cp312-win_amd64.pyd +0 -0
- scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
- scipy/sparse/linalg/tests/test_pydata_sparse.py +14 -0
- scipy/sparse/tests/test_arithmetic1d.py +5 -2
- scipy/sparse/tests/test_base.py +214 -42
- scipy/sparse/tests/test_common1d.py +7 -7
- scipy/sparse/tests/test_construct.py +1 -1
- scipy/sparse/tests/test_coo.py +272 -4
- scipy/sparse/tests/test_sparsetools.py +5 -0
- scipy/sparse/tests/test_sputils.py +36 -7
- scipy/spatial/_ckdtree.cp312-win_amd64.dll.a +0 -0
- scipy/spatial/_ckdtree.cp312-win_amd64.pyd +0 -0
- scipy/spatial/_distance_pybind.cp312-win_amd64.dll.a +0 -0
- scipy/spatial/_distance_pybind.cp312-win_amd64.pyd +0 -0
- scipy/spatial/_distance_wrap.cp312-win_amd64.dll.a +0 -0
- scipy/spatial/_distance_wrap.cp312-win_amd64.pyd +0 -0
- scipy/spatial/_hausdorff.cp312-win_amd64.dll.a +0 -0
- scipy/spatial/_hausdorff.cp312-win_amd64.pyd +0 -0
- scipy/spatial/_qhull.cp312-win_amd64.dll.a +0 -0
- scipy/spatial/_qhull.cp312-win_amd64.pyd +0 -0
- scipy/spatial/_voronoi.cp312-win_amd64.dll.a +0 -0
- scipy/spatial/_voronoi.cp312-win_amd64.pyd +0 -0
- scipy/spatial/distance.py +49 -42
- scipy/spatial/tests/test_distance.py +15 -1
- scipy/spatial/tests/test_kdtree.py +1 -0
- scipy/spatial/tests/test_qhull.py +7 -2
- scipy/spatial/transform/__init__.py +5 -3
- scipy/spatial/transform/_rigid_transform.cp312-win_amd64.dll.a +0 -0
- scipy/spatial/transform/_rigid_transform.cp312-win_amd64.pyd +0 -0
- scipy/spatial/transform/_rotation.cp312-win_amd64.dll.a +0 -0
- scipy/spatial/transform/_rotation.cp312-win_amd64.pyd +0 -0
- scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
- scipy/spatial/transform/tests/test_rotation.py +1213 -832
- scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
- scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
- scipy/special/__init__.py +1 -47
- scipy/special/_add_newdocs.py +34 -772
- scipy/special/_basic.py +22 -25
- scipy/special/_comb.cp312-win_amd64.dll.a +0 -0
- scipy/special/_comb.cp312-win_amd64.pyd +0 -0
- scipy/special/_ellip_harm_2.cp312-win_amd64.dll.a +0 -0
- scipy/special/_ellip_harm_2.cp312-win_amd64.pyd +0 -0
- scipy/special/_gufuncs.cp312-win_amd64.dll.a +0 -0
- scipy/special/_gufuncs.cp312-win_amd64.pyd +0 -0
- scipy/special/_logsumexp.py +67 -58
- scipy/special/_orthogonal.pyi +1 -1
- scipy/special/_specfun.cp312-win_amd64.dll.a +0 -0
- scipy/special/_specfun.cp312-win_amd64.pyd +0 -0
- scipy/special/_special_ufuncs.cp312-win_amd64.dll.a +0 -0
- scipy/special/_special_ufuncs.cp312-win_amd64.pyd +0 -0
- scipy/special/_spherical_bessel.py +4 -4
- scipy/special/_support_alternative_backends.py +212 -119
- scipy/special/_test_internal.cp312-win_amd64.dll.a +0 -0
- scipy/special/_test_internal.cp312-win_amd64.pyd +0 -0
- scipy/special/_testutils.py +4 -4
- scipy/special/_ufuncs.cp312-win_amd64.dll.a +0 -0
- scipy/special/_ufuncs.cp312-win_amd64.pyd +0 -0
- scipy/special/_ufuncs.pyi +1 -0
- scipy/special/_ufuncs.pyx +215 -1400
- scipy/special/_ufuncs_cxx.cp312-win_amd64.dll.a +0 -0
- scipy/special/_ufuncs_cxx.cp312-win_amd64.pyd +0 -0
- scipy/special/_ufuncs_cxx.pxd +2 -15
- scipy/special/_ufuncs_cxx.pyx +5 -44
- scipy/special/_ufuncs_cxx_defs.h +2 -16
- scipy/special/_ufuncs_defs.h +0 -8
- scipy/special/cython_special.cp312-win_amd64.dll.a +0 -0
- scipy/special/cython_special.cp312-win_amd64.pyd +0 -0
- scipy/special/cython_special.pxd +1 -1
- scipy/special/tests/_cython_examples/meson.build +10 -1
- scipy/special/tests/test_basic.py +153 -20
- scipy/special/tests/test_boost_ufuncs.py +3 -0
- scipy/special/tests/test_cdflib.py +35 -11
- scipy/special/tests/test_gammainc.py +16 -0
- scipy/special/tests/test_hyp2f1.py +2 -2
- scipy/special/tests/test_log1mexp.py +85 -0
- scipy/special/tests/test_logsumexp.py +206 -64
- scipy/special/tests/test_mpmath.py +1 -0
- scipy/special/tests/test_nan_inputs.py +1 -1
- scipy/special/tests/test_orthogonal.py +17 -18
- scipy/special/tests/test_sf_error.py +3 -2
- scipy/special/tests/test_sph_harm.py +6 -7
- scipy/special/tests/test_support_alternative_backends.py +211 -76
- scipy/stats/__init__.py +4 -1
- scipy/stats/_ansari_swilk_statistics.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_ansari_swilk_statistics.cp312-win_amd64.pyd +0 -0
- scipy/stats/_axis_nan_policy.py +5 -12
- scipy/stats/_biasedurn.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_biasedurn.cp312-win_amd64.pyd +0 -0
- scipy/stats/_continued_fraction.py +387 -0
- scipy/stats/_continuous_distns.py +277 -310
- scipy/stats/_correlation.py +1 -1
- scipy/stats/_covariance.py +6 -3
- scipy/stats/_discrete_distns.py +39 -32
- scipy/stats/_distn_infrastructure.py +39 -12
- scipy/stats/_distribution_infrastructure.py +900 -238
- scipy/stats/_entropy.py +9 -10
- scipy/{_lib → stats}/_finite_differences.py +1 -1
- scipy/stats/_hypotests.py +83 -50
- scipy/stats/_kde.py +53 -49
- scipy/stats/_ksstats.py +1 -1
- scipy/stats/_levy_stable/__init__.py +7 -15
- scipy/stats/_levy_stable/levyst.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_levy_stable/levyst.cp312-win_amd64.pyd +0 -0
- scipy/stats/_morestats.py +118 -73
- scipy/stats/_mstats_basic.py +13 -17
- scipy/stats/_mstats_extras.py +8 -8
- scipy/stats/_multivariate.py +89 -113
- scipy/stats/_new_distributions.py +97 -20
- scipy/stats/_page_trend_test.py +12 -5
- scipy/stats/_probability_distribution.py +265 -43
- scipy/stats/_qmc.py +14 -9
- scipy/stats/_qmc_cy.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_qmc_cy.cp312-win_amd64.pyd +0 -0
- scipy/stats/_qmvnt.py +16 -95
- scipy/stats/_qmvnt_cy.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_qmvnt_cy.cp312-win_amd64.pyd +0 -0
- scipy/stats/_quantile.py +335 -0
- scipy/stats/_rcont/rcont.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_rcont/rcont.cp312-win_amd64.pyd +0 -0
- scipy/stats/_resampling.py +4 -29
- scipy/stats/_sampling.py +1 -1
- scipy/stats/_sobol.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_sobol.cp312-win_amd64.pyd +0 -0
- scipy/stats/_stats.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_stats.cp312-win_amd64.pyd +0 -0
- scipy/stats/_stats_mstats_common.py +21 -2
- scipy/stats/_stats_py.py +550 -476
- scipy/stats/_stats_pythran.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_stats_pythran.cp312-win_amd64.pyd +0 -0
- scipy/stats/_unuran/unuran_wrapper.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_unuran/unuran_wrapper.cp312-win_amd64.pyd +0 -0
- scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
- scipy/stats/_variation.py +6 -8
- scipy/stats/_wilcoxon.py +13 -7
- scipy/stats/tests/common_tests.py +6 -4
- scipy/stats/tests/test_axis_nan_policy.py +62 -24
- scipy/stats/tests/test_continued_fraction.py +173 -0
- scipy/stats/tests/test_continuous.py +379 -60
- scipy/stats/tests/test_continuous_basic.py +18 -12
- scipy/stats/tests/test_discrete_basic.py +14 -8
- scipy/stats/tests/test_discrete_distns.py +16 -16
- scipy/stats/tests/test_distributions.py +95 -75
- scipy/stats/tests/test_entropy.py +40 -48
- scipy/stats/tests/test_fit.py +4 -3
- scipy/stats/tests/test_hypotests.py +153 -24
- scipy/stats/tests/test_kdeoth.py +109 -41
- scipy/stats/tests/test_marray.py +289 -0
- scipy/stats/tests/test_morestats.py +79 -47
- scipy/stats/tests/test_mstats_basic.py +3 -3
- scipy/stats/tests/test_multivariate.py +434 -83
- scipy/stats/tests/test_qmc.py +13 -10
- scipy/stats/tests/test_quantile.py +199 -0
- scipy/stats/tests/test_rank.py +119 -112
- scipy/stats/tests/test_resampling.py +47 -56
- scipy/stats/tests/test_sampling.py +9 -4
- scipy/stats/tests/test_stats.py +799 -939
- scipy/stats/tests/test_variation.py +8 -6
- scipy/version.py +2 -2
- scipy-1.16.0rc2.dist-info/DELVEWHEEL +2 -0
- {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/LICENSE.txt +4 -4
- {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/METADATA +11 -11
- {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/RECORD +685 -693
- scipy/_lib/array_api_extra/_funcs.py +0 -484
- scipy/_lib/array_api_extra/_typing.py +0 -8
- scipy/interpolate/_bspl.cp312-win_amd64.dll.a +0 -0
- scipy/interpolate/_bspl.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_cobyla.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_cobyla.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_cython_nnls.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_cython_nnls.cp312-win_amd64.pyd +0 -0
- scipy/optimize/_slsqp.cp312-win_amd64.dll.a +0 -0
- scipy/optimize/_slsqp.cp312-win_amd64.pyd +0 -0
- scipy/spatial/qhull_src/COPYING.txt +0 -38
- scipy/special/libsf_error_state.dll +0 -0
- scipy/special/libsf_error_state.dll.a +0 -0
- scipy/special/tests/test_log_softmax.py +0 -109
- scipy/special/tests/test_xsf_cuda.py +0 -114
- scipy/special/xsf/binom.h +0 -89
- scipy/special/xsf/cdflib.h +0 -100
- scipy/special/xsf/cephes/airy.h +0 -307
- scipy/special/xsf/cephes/besselpoly.h +0 -51
- scipy/special/xsf/cephes/beta.h +0 -257
- scipy/special/xsf/cephes/cbrt.h +0 -131
- scipy/special/xsf/cephes/chbevl.h +0 -85
- scipy/special/xsf/cephes/chdtr.h +0 -193
- scipy/special/xsf/cephes/const.h +0 -87
- scipy/special/xsf/cephes/ellie.h +0 -293
- scipy/special/xsf/cephes/ellik.h +0 -251
- scipy/special/xsf/cephes/ellpe.h +0 -107
- scipy/special/xsf/cephes/ellpk.h +0 -117
- scipy/special/xsf/cephes/expn.h +0 -260
- scipy/special/xsf/cephes/gamma.h +0 -398
- scipy/special/xsf/cephes/hyp2f1.h +0 -596
- scipy/special/xsf/cephes/hyperg.h +0 -361
- scipy/special/xsf/cephes/i0.h +0 -149
- scipy/special/xsf/cephes/i1.h +0 -158
- scipy/special/xsf/cephes/igam.h +0 -421
- scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
- scipy/special/xsf/cephes/igami.h +0 -313
- scipy/special/xsf/cephes/j0.h +0 -225
- scipy/special/xsf/cephes/j1.h +0 -198
- scipy/special/xsf/cephes/jv.h +0 -715
- scipy/special/xsf/cephes/k0.h +0 -164
- scipy/special/xsf/cephes/k1.h +0 -163
- scipy/special/xsf/cephes/kn.h +0 -243
- scipy/special/xsf/cephes/lanczos.h +0 -112
- scipy/special/xsf/cephes/ndtr.h +0 -275
- scipy/special/xsf/cephes/poch.h +0 -85
- scipy/special/xsf/cephes/polevl.h +0 -167
- scipy/special/xsf/cephes/psi.h +0 -194
- scipy/special/xsf/cephes/rgamma.h +0 -111
- scipy/special/xsf/cephes/scipy_iv.h +0 -811
- scipy/special/xsf/cephes/shichi.h +0 -248
- scipy/special/xsf/cephes/sici.h +0 -224
- scipy/special/xsf/cephes/sindg.h +0 -221
- scipy/special/xsf/cephes/tandg.h +0 -139
- scipy/special/xsf/cephes/trig.h +0 -58
- scipy/special/xsf/cephes/unity.h +0 -186
- scipy/special/xsf/cephes/zeta.h +0 -172
- scipy/special/xsf/config.h +0 -304
- scipy/special/xsf/digamma.h +0 -205
- scipy/special/xsf/error.h +0 -57
- scipy/special/xsf/evalpoly.h +0 -47
- scipy/special/xsf/expint.h +0 -266
- scipy/special/xsf/hyp2f1.h +0 -694
- scipy/special/xsf/iv_ratio.h +0 -173
- scipy/special/xsf/lambertw.h +0 -150
- scipy/special/xsf/loggamma.h +0 -163
- scipy/special/xsf/sici.h +0 -200
- scipy/special/xsf/tools.h +0 -427
- scipy/special/xsf/trig.h +0 -164
- scipy/special/xsf/wright_bessel.h +0 -843
- scipy/special/xsf/zlog1.h +0 -35
- scipy/stats/_mvn.cp312-win_amd64.dll.a +0 -0
- scipy/stats/_mvn.cp312-win_amd64.pyd +0 -0
- scipy-1.15.3.dist-info/DELVEWHEEL +0 -2
- /scipy-1.15.3-cp312-cp312-win_amd64.whl → /scipy-1.16.0rc2-cp312-cp312-win_amd64.whl +0 -0
- {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/WHEEL +0 -0
scipy/linalg/_decomp_cholesky.py
CHANGED
@@ -4,6 +4,7 @@ import numpy as np
|
|
4
4
|
from numpy import asarray_chkfinite, asarray, atleast_2d, empty_like
|
5
5
|
|
6
6
|
# Local imports
|
7
|
+
from scipy._lib._util import _apply_over_batch
|
7
8
|
from ._misc import LinAlgError, _datacopied
|
8
9
|
from .lapack import get_lapack_funcs
|
9
10
|
|
@@ -35,14 +36,18 @@ def _cholesky(a, lower=False, overwrite_a=False, clean=True,
|
|
35
36
|
potrf, = get_lapack_funcs(('potrf',), (a1,))
|
36
37
|
c, info = potrf(a1, lower=lower, overwrite_a=overwrite_a, clean=clean)
|
37
38
|
if info > 0:
|
38
|
-
raise LinAlgError(
|
39
|
-
|
39
|
+
raise LinAlgError(
|
40
|
+
f"{info}-th leading minor of the array is not positive definite"
|
41
|
+
)
|
40
42
|
if info < 0:
|
41
|
-
raise ValueError(
|
42
|
-
|
43
|
+
raise ValueError(
|
44
|
+
f'LAPACK reported an illegal value in {-info}-th argument '
|
45
|
+
f'on entry to "POTRF".'
|
46
|
+
)
|
43
47
|
return c, lower
|
44
48
|
|
45
49
|
|
50
|
+
@_apply_over_batch(('a', 2))
|
46
51
|
def cholesky(a, lower=False, overwrite_a=False, check_finite=True):
|
47
52
|
"""
|
48
53
|
Compute the Cholesky decomposition of a matrix.
|
@@ -103,6 +108,7 @@ def cholesky(a, lower=False, overwrite_a=False, check_finite=True):
|
|
103
108
|
return c
|
104
109
|
|
105
110
|
|
111
|
+
@_apply_over_batch(("a", 2))
|
106
112
|
def cho_factor(a, lower=False, overwrite_a=False, check_finite=True):
|
107
113
|
"""
|
108
114
|
Compute the Cholesky decomposition of a matrix, to use in cho_solve
|
@@ -215,7 +221,12 @@ def cho_solve(c_and_lower, b, overwrite_b=False, check_finite=True):
|
|
215
221
|
True
|
216
222
|
|
217
223
|
"""
|
218
|
-
|
224
|
+
c, lower = c_and_lower
|
225
|
+
return _cho_solve(c, b, lower, overwrite_b=overwrite_b, check_finite=check_finite)
|
226
|
+
|
227
|
+
|
228
|
+
@_apply_over_batch(('c', 2), ('b', '1|2'))
|
229
|
+
def _cho_solve(c, b, lower, overwrite_b, check_finite):
|
219
230
|
if check_finite:
|
220
231
|
b1 = asarray_chkfinite(b)
|
221
232
|
c = asarray_chkfinite(c)
|
@@ -239,11 +250,11 @@ def cho_solve(c_and_lower, b, overwrite_b=False, check_finite=True):
|
|
239
250
|
potrs, = get_lapack_funcs(('potrs',), (c, b1))
|
240
251
|
x, info = potrs(c, b1, lower=lower, overwrite_b=overwrite_b)
|
241
252
|
if info != 0:
|
242
|
-
raise ValueError('illegal value in
|
243
|
-
% -info)
|
253
|
+
raise ValueError(f'illegal value in {-info}th argument of internal potrs')
|
244
254
|
return x
|
245
255
|
|
246
256
|
|
257
|
+
@_apply_over_batch(("ab", 2))
|
247
258
|
def cholesky_banded(ab, overwrite_ab=False, lower=False, check_finite=True):
|
248
259
|
"""
|
249
260
|
Cholesky decompose a banded Hermitian positive-definite matrix
|
@@ -317,10 +328,9 @@ def cholesky_banded(ab, overwrite_ab=False, lower=False, check_finite=True):
|
|
317
328
|
pbtrf, = get_lapack_funcs(('pbtrf',), (ab,))
|
318
329
|
c, info = pbtrf(ab, lower=lower, overwrite_ab=overwrite_ab)
|
319
330
|
if info > 0:
|
320
|
-
raise LinAlgError("
|
331
|
+
raise LinAlgError(f"{info}-th leading minor not positive definite")
|
321
332
|
if info < 0:
|
322
|
-
raise ValueError('illegal value in
|
323
|
-
% -info)
|
333
|
+
raise ValueError(f'illegal value in {info}-th argument of internal pbtrf')
|
324
334
|
return c
|
325
335
|
|
326
336
|
|
@@ -371,6 +381,12 @@ def cho_solve_banded(cb_and_lower, b, overwrite_b=False, check_finite=True):
|
|
371
381
|
|
372
382
|
"""
|
373
383
|
(cb, lower) = cb_and_lower
|
384
|
+
return _cho_solve_banded(cb, b, lower, overwrite_b=overwrite_b,
|
385
|
+
check_finite=check_finite)
|
386
|
+
|
387
|
+
|
388
|
+
@_apply_over_batch(('cb', 2), ('b', '1|2'))
|
389
|
+
def _cho_solve_banded(cb, b, lower, overwrite_b, check_finite):
|
374
390
|
if check_finite:
|
375
391
|
cb = asarray_chkfinite(cb)
|
376
392
|
b = asarray_chkfinite(b)
|
@@ -391,8 +407,7 @@ def cho_solve_banded(cb_and_lower, b, overwrite_b=False, check_finite=True):
|
|
391
407
|
pbtrs, = get_lapack_funcs(('pbtrs',), (cb, b))
|
392
408
|
x, info = pbtrs(cb, b, lower=lower, overwrite_b=overwrite_b)
|
393
409
|
if info > 0:
|
394
|
-
raise LinAlgError("
|
410
|
+
raise LinAlgError(f"{info}th leading minor not positive definite")
|
395
411
|
if info < 0:
|
396
|
-
raise ValueError('illegal value in
|
397
|
-
% -info)
|
412
|
+
raise ValueError(f'illegal value in {-info}th argument of internal pbtrs')
|
398
413
|
return x
|
scipy/linalg/_decomp_cossin.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
from collections.abc import Iterable
|
2
2
|
import numpy as np
|
3
3
|
|
4
|
-
from scipy._lib._util import _asarray_validated
|
4
|
+
from scipy._lib._util import _asarray_validated, _apply_over_batch
|
5
5
|
from scipy.linalg import block_diag, LinAlgError
|
6
6
|
from .lapack import _compute_lwork, get_lapack_funcs
|
7
7
|
|
@@ -80,6 +80,13 @@ def cossin(X, p=None, q=None, separate=False,
|
|
80
80
|
(``m-q`` x ``m-q``) orthogonal/unitary matrices. If ``separate=True``,
|
81
81
|
this contains the tuple of ``(V1H, V2H)``.
|
82
82
|
|
83
|
+
Notes
|
84
|
+
-----
|
85
|
+
The documentation is written assuming array arguments are of specified
|
86
|
+
"core" shapes. However, array argument(s) of this function may have additional
|
87
|
+
"batch" dimensions prepended to the core shape. In this case, the array is treated
|
88
|
+
as a batch of lower-dimensional slices; see :ref:`linalg_batch` for details.
|
89
|
+
|
83
90
|
References
|
84
91
|
----------
|
85
92
|
.. [1] Brian D. Sutton. Computing the complete CS decomposition. Numer.
|
@@ -111,16 +118,17 @@ def cossin(X, p=None, q=None, separate=False,
|
|
111
118
|
p = 1 if p is None else int(p)
|
112
119
|
q = 1 if q is None else int(q)
|
113
120
|
X = _asarray_validated(X, check_finite=True)
|
114
|
-
if not np.equal(*X.shape):
|
121
|
+
if not np.equal(*X.shape[-2:]):
|
115
122
|
raise ValueError("Cosine Sine decomposition only supports square"
|
116
|
-
f" matrices, got {X.shape}")
|
117
|
-
m = X.shape[
|
123
|
+
f" matrices, got {X.shape[-2:]}")
|
124
|
+
m = X.shape[-2]
|
118
125
|
if p >= m or p <= 0:
|
119
|
-
raise ValueError(f"invalid p={p}, 0<p<{X.shape[
|
126
|
+
raise ValueError(f"invalid p={p}, 0<p<{X.shape[-2]} must hold")
|
120
127
|
if q >= m or q <= 0:
|
121
|
-
raise ValueError(f"invalid q={q}, 0<q<{X.shape[
|
128
|
+
raise ValueError(f"invalid q={q}, 0<q<{X.shape[-2]} must hold")
|
122
129
|
|
123
|
-
x11, x12, x21, x22 = X[:p, :q], X[:p, q:],
|
130
|
+
x11, x12, x21, x22 = (X[..., :p, :q], X[..., :p, q:],
|
131
|
+
X[..., p:, :q], X[..., p:, q:])
|
124
132
|
elif not isinstance(X, Iterable):
|
125
133
|
raise ValueError("When p and q are None, X must be an Iterable"
|
126
134
|
" containing the subblocks of X")
|
@@ -128,30 +136,37 @@ def cossin(X, p=None, q=None, separate=False,
|
|
128
136
|
if len(X) != 4:
|
129
137
|
raise ValueError("When p and q are None, exactly four arrays"
|
130
138
|
f" should be in X, got {len(X)}")
|
131
|
-
|
132
139
|
x11, x12, x21, x22 = (np.atleast_2d(x) for x in X)
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
140
|
+
|
141
|
+
return _cossin(x11, x12, x21, x22, separate=separate, swap_sign=swap_sign,
|
142
|
+
compute_u=compute_u, compute_vh=compute_vh)
|
143
|
+
|
144
|
+
|
145
|
+
@_apply_over_batch(('x11', 2), ('x12', 2), ('x21', 2), ('x22', 2))
|
146
|
+
def _cossin(x11, x12, x21, x22, separate, swap_sign, compute_u, compute_vh):
|
147
|
+
|
148
|
+
for name, block in zip(["x11", "x12", "x21", "x22"],
|
149
|
+
[x11, x12, x21, x22]):
|
150
|
+
if block.shape[1] == 0:
|
151
|
+
raise ValueError(f"{name} can't be empty")
|
152
|
+
p, q = x11.shape
|
153
|
+
mmp, mmq = x22.shape
|
154
|
+
|
155
|
+
if x12.shape != (p, mmq):
|
156
|
+
raise ValueError(f"Invalid x12 dimensions: desired {(p, mmq)}, "
|
157
|
+
f"got {x12.shape}")
|
158
|
+
|
159
|
+
if x21.shape != (mmp, q):
|
160
|
+
raise ValueError(f"Invalid x21 dimensions: desired {(mmp, q)}, "
|
161
|
+
f"got {x21.shape}")
|
162
|
+
|
163
|
+
if p + mmp != q + mmq:
|
164
|
+
raise ValueError("The subblocks have compatible sizes but "
|
165
|
+
"don't form a square array (instead they form a"
|
166
|
+
f" {p + mmp}x{q + mmq} array). This might be "
|
167
|
+
"due to missing p, q arguments.")
|
168
|
+
|
169
|
+
m = p + mmp
|
155
170
|
|
156
171
|
cplx = any([np.iscomplexobj(x) for x in [x11, x12, x21, x22]])
|
157
172
|
driver = "uncsd" if cplx else "orcsd"
|
Binary file
|
Binary file
|
scipy/linalg/_decomp_ldl.py
CHANGED
@@ -3,13 +3,16 @@ from warnings import warn
|
|
3
3
|
import numpy as np
|
4
4
|
from numpy import (atleast_2d, arange, zeros_like, imag, diag,
|
5
5
|
iscomplexobj, tril, triu, argsort, empty_like)
|
6
|
-
from
|
6
|
+
from numpy.exceptions import ComplexWarning
|
7
|
+
|
8
|
+
from scipy._lib._util import _apply_over_batch
|
7
9
|
from ._decomp import _asarray_validated
|
8
10
|
from .lapack import get_lapack_funcs, _compute_lwork
|
9
11
|
|
10
12
|
__all__ = ['ldl']
|
11
13
|
|
12
14
|
|
15
|
+
@_apply_over_batch(('A', 2))
|
13
16
|
def ldl(A, lower=True, hermitian=True, overwrite_a=False, check_finite=True):
|
14
17
|
""" Computes the LDLt or Bunch-Kaufman factorization of a symmetric/
|
15
18
|
hermitian matrix.
|
scipy/linalg/_decomp_lu.py
CHANGED
@@ -6,6 +6,8 @@ from numpy import asarray, asarray_chkfinite
|
|
6
6
|
import numpy as np
|
7
7
|
from itertools import product
|
8
8
|
|
9
|
+
from scipy._lib._util import _apply_over_batch
|
10
|
+
|
9
11
|
# Local imports
|
10
12
|
from ._misc import _datacopied, LinAlgWarning
|
11
13
|
from .lapack import get_lapack_funcs
|
@@ -17,6 +19,7 @@ lapack_cast_dict = {x: ''.join([y for y in 'fdFD' if np.can_cast(x, y)])
|
|
17
19
|
__all__ = ['lu', 'lu_solve', 'lu_factor']
|
18
20
|
|
19
21
|
|
22
|
+
@_apply_over_batch(('a', 2))
|
20
23
|
def lu_factor(a, overwrite_a=False, check_finite=True):
|
21
24
|
"""
|
22
25
|
Compute pivoted LU decomposition of a matrix.
|
@@ -118,11 +121,15 @@ def lu_factor(a, overwrite_a=False, check_finite=True):
|
|
118
121
|
getrf, = get_lapack_funcs(('getrf',), (a1,))
|
119
122
|
lu, piv, info = getrf(a1, overwrite_a=overwrite_a)
|
120
123
|
if info < 0:
|
121
|
-
raise ValueError(
|
122
|
-
|
124
|
+
raise ValueError(
|
125
|
+
f'illegal value in {-info}th argument of internal getrf (lu_factor)'
|
126
|
+
)
|
123
127
|
if info > 0:
|
124
|
-
warn(
|
125
|
-
|
128
|
+
warn(
|
129
|
+
f"Diagonal number {info} is exactly zero. Singular matrix.",
|
130
|
+
LinAlgWarning,
|
131
|
+
stacklevel=2
|
132
|
+
)
|
126
133
|
return lu, piv
|
127
134
|
|
128
135
|
|
@@ -175,6 +182,12 @@ def lu_solve(lu_and_piv, b, trans=0, overwrite_b=False, check_finite=True):
|
|
175
182
|
|
176
183
|
"""
|
177
184
|
(lu, piv) = lu_and_piv
|
185
|
+
return _lu_solve(lu, piv, b, trans=trans, overwrite_b=overwrite_b,
|
186
|
+
check_finite=check_finite)
|
187
|
+
|
188
|
+
|
189
|
+
@_apply_over_batch(('lu', 2), ('piv', 1), ('b', '1|2'))
|
190
|
+
def _lu_solve(lu, piv, b, trans, overwrite_b, check_finite):
|
178
191
|
if check_finite:
|
179
192
|
b1 = asarray_chkfinite(b)
|
180
193
|
else:
|
@@ -194,8 +207,7 @@ def lu_solve(lu_and_piv, b, trans=0, overwrite_b=False, check_finite=True):
|
|
194
207
|
x, info = getrs(lu, piv, b1, trans=trans, overwrite_b=overwrite_b)
|
195
208
|
if info == 0:
|
196
209
|
return x
|
197
|
-
raise ValueError('illegal value in
|
198
|
-
% -info)
|
210
|
+
raise ValueError(f'illegal value in {-info}th argument of internal gesv|posv')
|
199
211
|
|
200
212
|
|
201
213
|
def lu(a, permute_l=False, overwrite_a=False, check_finite=True,
|
Binary file
|
Binary file
|
scipy/linalg/_decomp_polar.py
CHANGED
scipy/linalg/_decomp_qr.py
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
"""QR decomposition functions."""
|
2
2
|
import numpy as np
|
3
3
|
|
4
|
+
from scipy._lib._util import _apply_over_batch
|
5
|
+
|
4
6
|
# Local imports
|
5
7
|
from .lapack import get_lapack_funcs
|
6
8
|
from ._misc import _datacopied
|
@@ -18,11 +20,11 @@ def safecall(f, name, *args, **kwargs):
|
|
18
20
|
kwargs['lwork'] = ret[-2][0].real.astype(np.int_)
|
19
21
|
ret = f(*args, **kwargs)
|
20
22
|
if ret[-1] < 0:
|
21
|
-
raise ValueError("illegal value in
|
22
|
-
% (-ret[-1], name))
|
23
|
+
raise ValueError(f"illegal value in {-ret[-1]}th argument of internal {name}")
|
23
24
|
return ret[:-2]
|
24
25
|
|
25
26
|
|
27
|
+
@_apply_over_batch(('a', 2))
|
26
28
|
def qr(a, overwrite_a=False, lwork=None, mode='full', pivoting=False,
|
27
29
|
check_finite=True):
|
28
30
|
"""
|
@@ -214,6 +216,7 @@ def qr(a, overwrite_a=False, lwork=None, mode='full', pivoting=False,
|
|
214
216
|
return (Q,) + Rj
|
215
217
|
|
216
218
|
|
219
|
+
@_apply_over_batch(('a', 2), ('c', '1|2'))
|
217
220
|
def qr_multiply(a, c, mode='right', pivoting=False, conjugate=False,
|
218
221
|
overwrite_a=False, overwrite_c=False):
|
219
222
|
"""
|
@@ -366,6 +369,7 @@ def qr_multiply(a, c, mode='right', pivoting=False, conjugate=False,
|
|
366
369
|
return (cQ,) + raw[1:]
|
367
370
|
|
368
371
|
|
372
|
+
@_apply_over_batch(('a', 2))
|
369
373
|
def rq(a, overwrite_a=False, lwork=None, mode='full', check_finite=True):
|
370
374
|
"""
|
371
375
|
Compute RQ decomposition of a matrix.
|
scipy/linalg/_decomp_qz.py
CHANGED
@@ -2,6 +2,7 @@ import warnings
|
|
2
2
|
|
3
3
|
import numpy as np
|
4
4
|
from numpy import asarray_chkfinite
|
5
|
+
from scipy._lib._util import _apply_over_batch
|
5
6
|
from ._misc import LinAlgError, _datacopied, LinAlgWarning
|
6
7
|
from .lapack import get_lapack_funcs
|
7
8
|
|
@@ -142,6 +143,7 @@ def _qz(A, B, output='real', lwork=None, sort=None, overwrite_a=False,
|
|
142
143
|
return result, gges.typecode
|
143
144
|
|
144
145
|
|
146
|
+
@_apply_over_batch(('A', 2), ('B', 2))
|
145
147
|
def qz(A, B, output='real', lwork=None, sort=None, overwrite_a=False,
|
146
148
|
overwrite_b=False, check_finite=True):
|
147
149
|
"""
|
@@ -317,6 +319,7 @@ def qz(A, B, output='real', lwork=None, sort=None, overwrite_a=False,
|
|
317
319
|
return result[0], result[1], result[-4], result[-3]
|
318
320
|
|
319
321
|
|
322
|
+
@_apply_over_batch(('A', 2), ('B', 2))
|
320
323
|
def ordqz(A, B, sort='lhp', output='real', overwrite_a=False,
|
321
324
|
overwrite_b=False, check_finite=True):
|
322
325
|
"""QZ decomposition for a pair of matrices with reordering.
|
scipy/linalg/_decomp_schur.py
CHANGED
@@ -3,7 +3,7 @@ import numpy as np
|
|
3
3
|
from numpy import asarray_chkfinite, single, asarray, array
|
4
4
|
from numpy.linalg import norm
|
5
5
|
|
6
|
-
|
6
|
+
from scipy._lib._util import _apply_over_batch
|
7
7
|
# Local imports.
|
8
8
|
from ._misc import LinAlgError, _datacopied
|
9
9
|
from .lapack import get_lapack_funcs
|
@@ -14,6 +14,7 @@ __all__ = ['schur', 'rsf2csf']
|
|
14
14
|
_double_precision = ['i', 'l', 'd']
|
15
15
|
|
16
16
|
|
17
|
+
@_apply_over_batch(('a', 2))
|
17
18
|
def schur(a, output='real', lwork=None, overwrite_a=False, sort=None,
|
18
19
|
check_finite=True):
|
19
20
|
"""
|
@@ -248,6 +249,7 @@ def _castCopy(type, *arrays):
|
|
248
249
|
return cast_arrays
|
249
250
|
|
250
251
|
|
252
|
+
@_apply_over_batch(('T', 2), ('Z', 2))
|
251
253
|
def rsf2csf(T, Z, check_finite=True):
|
252
254
|
"""
|
253
255
|
Convert real Schur form to complex Schur form.
|
scipy/linalg/_decomp_svd.py
CHANGED
@@ -2,14 +2,18 @@
|
|
2
2
|
import numpy as np
|
3
3
|
from numpy import zeros, r_, diag, dot, arccos, arcsin, where, clip
|
4
4
|
|
5
|
+
from scipy._lib._util import _apply_over_batch
|
6
|
+
|
5
7
|
# Local imports.
|
6
8
|
from ._misc import LinAlgError, _datacopied
|
7
9
|
from .lapack import get_lapack_funcs, _compute_lwork
|
8
10
|
from ._decomp import _asarray_validated
|
9
11
|
|
12
|
+
|
10
13
|
__all__ = ['svd', 'svdvals', 'diagsvd', 'orth', 'subspace_angles', 'null_space']
|
11
14
|
|
12
15
|
|
16
|
+
@_apply_over_batch(('a', 2))
|
13
17
|
def svd(a, full_matrices=True, compute_uv=True, overwrite_a=False,
|
14
18
|
check_finite=True, lapack_driver='gesdd'):
|
15
19
|
"""
|
@@ -165,14 +169,17 @@ def svd(a, full_matrices=True, compute_uv=True, overwrite_a=False,
|
|
165
169
|
if info > 0:
|
166
170
|
raise LinAlgError("SVD did not converge")
|
167
171
|
if info < 0:
|
168
|
-
|
169
|
-
|
172
|
+
if lapack_driver == "gesdd" and info == -4:
|
173
|
+
msg = "A has a NaN entry"
|
174
|
+
raise ValueError(msg)
|
175
|
+
raise ValueError(f'illegal value in {-info}th argument of internal gesdd')
|
170
176
|
if compute_uv:
|
171
177
|
return u, s, v
|
172
178
|
else:
|
173
179
|
return s
|
174
180
|
|
175
181
|
|
182
|
+
@_apply_over_batch(('a', 2))
|
176
183
|
def svdvals(a, overwrite_a=False, check_finite=True):
|
177
184
|
"""
|
178
185
|
Compute singular values of a matrix.
|
@@ -249,6 +256,7 @@ def svdvals(a, overwrite_a=False, check_finite=True):
|
|
249
256
|
check_finite=check_finite)
|
250
257
|
|
251
258
|
|
259
|
+
@_apply_over_batch(('s', 1))
|
252
260
|
def diagsvd(s, M, N):
|
253
261
|
"""
|
254
262
|
Construct the sigma matrix in SVD from singular values and size M, N.
|
@@ -301,6 +309,7 @@ def diagsvd(s, M, N):
|
|
301
309
|
|
302
310
|
# Orthonormal decomposition
|
303
311
|
|
312
|
+
@_apply_over_batch(('A', 2))
|
304
313
|
def orth(A, rcond=None):
|
305
314
|
"""
|
306
315
|
Construct an orthonormal basis for the range of A using SVD
|
@@ -349,6 +358,7 @@ def orth(A, rcond=None):
|
|
349
358
|
return Q
|
350
359
|
|
351
360
|
|
361
|
+
@_apply_over_batch(('A', 2))
|
352
362
|
def null_space(A, rcond=None, *, overwrite_a=False, check_finite=True,
|
353
363
|
lapack_driver='gesdd'):
|
354
364
|
"""
|
@@ -427,6 +437,7 @@ def null_space(A, rcond=None, *, overwrite_a=False, check_finite=True,
|
|
427
437
|
return Q
|
428
438
|
|
429
439
|
|
440
|
+
@_apply_over_batch(('A', 2), ('B', 2))
|
430
441
|
def subspace_angles(A, B):
|
431
442
|
r"""
|
432
443
|
Compute the subspace angles between two matrices.
|
Binary file
|
Binary file
|
scipy/linalg/_expm_frechet.py
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
"""Frechet derivative of the matrix exponential."""
|
2
2
|
import numpy as np
|
3
3
|
import scipy.linalg
|
4
|
+
from scipy._lib._util import _apply_over_batch
|
5
|
+
|
4
6
|
|
5
7
|
__all__ = ['expm_frechet', 'expm_cond']
|
6
8
|
|
7
9
|
|
10
|
+
@_apply_over_batch(('A', 2), ('E', 2))
|
8
11
|
def expm_frechet(A, E, method=None, compute_expm=True, check_finite=True):
|
9
12
|
"""
|
10
13
|
Frechet derivative of the matrix exponential of A in the direction E.
|
@@ -351,6 +354,7 @@ def expm_frechet_kronform(A, method=None, check_finite=True):
|
|
351
354
|
return np.vstack(cols).T
|
352
355
|
|
353
356
|
|
357
|
+
@_apply_over_batch(('A', 2))
|
354
358
|
def expm_cond(A, check_finite=True):
|
355
359
|
"""
|
356
360
|
Relative condition number of the matrix exponential in the Frobenius norm.
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|