scipy 1.15.2__cp313-cp313t-macosx_14_0_arm64.whl → 1.16.0__cp313-cp313t-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scipy/.dylibs/libgcc_s.1.1.dylib +0 -0
- scipy/.dylibs/libgfortran.5.dylib +0 -0
- scipy/.dylibs/libquadmath.0.dylib +0 -0
- scipy/__config__.py +5 -5
- scipy/__init__.py +3 -6
- scipy/_cyutility.cpython-313t-darwin.so +0 -0
- scipy/_lib/_array_api.py +497 -161
- scipy/_lib/_array_api_compat_vendor.py +9 -0
- scipy/_lib/_bunch.py +4 -0
- scipy/_lib/_ccallback_c.cpython-313t-darwin.so +0 -0
- scipy/_lib/_docscrape.py +1 -1
- scipy/_lib/_elementwise_iterative_method.py +15 -26
- scipy/_lib/_sparse.py +41 -0
- scipy/_lib/_test_ccallback.cpython-313t-darwin.so +0 -0
- scipy/_lib/_test_deprecation_call.cpython-313t-darwin.so +0 -0
- scipy/_lib/_test_deprecation_def.cpython-313t-darwin.so +0 -0
- scipy/_lib/_testutils.py +6 -2
- scipy/_lib/_util.py +222 -125
- scipy/_lib/array_api_compat/__init__.py +4 -4
- scipy/_lib/array_api_compat/_internal.py +19 -6
- scipy/_lib/array_api_compat/common/__init__.py +1 -1
- scipy/_lib/array_api_compat/common/_aliases.py +365 -193
- scipy/_lib/array_api_compat/common/_fft.py +94 -64
- scipy/_lib/array_api_compat/common/_helpers.py +413 -180
- scipy/_lib/array_api_compat/common/_linalg.py +116 -40
- scipy/_lib/array_api_compat/common/_typing.py +179 -10
- scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
- scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
- scipy/_lib/array_api_compat/cupy/_info.py +16 -6
- scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
- scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
- scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
- scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
- scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
- scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
- scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
- scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
- scipy/_lib/array_api_compat/numpy/_info.py +36 -16
- scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
- scipy/_lib/array_api_compat/numpy/fft.py +11 -5
- scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
- scipy/_lib/array_api_compat/torch/__init__.py +3 -5
- scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
- scipy/_lib/array_api_compat/torch/_info.py +27 -16
- scipy/_lib/array_api_compat/torch/_typing.py +3 -0
- scipy/_lib/array_api_compat/torch/fft.py +17 -18
- scipy/_lib/array_api_compat/torch/linalg.py +16 -16
- scipy/_lib/array_api_extra/__init__.py +26 -3
- scipy/_lib/array_api_extra/_delegation.py +171 -0
- scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_at.py +463 -0
- scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
- scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
- scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
- scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
- scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
- scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
- scipy/_lib/array_api_extra/testing.py +359 -0
- scipy/_lib/decorator.py +2 -2
- scipy/_lib/doccer.py +1 -7
- scipy/_lib/messagestream.cpython-313t-darwin.so +0 -0
- scipy/_lib/pyprima/__init__.py +212 -0
- scipy/_lib/pyprima/cobyla/__init__.py +0 -0
- scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
- scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
- scipy/_lib/pyprima/cobyla/geometry.py +226 -0
- scipy/_lib/pyprima/cobyla/initialize.py +215 -0
- scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
- scipy/_lib/pyprima/cobyla/update.py +289 -0
- scipy/_lib/pyprima/common/__init__.py +0 -0
- scipy/_lib/pyprima/common/_bounds.py +34 -0
- scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
- scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
- scipy/_lib/pyprima/common/_project.py +173 -0
- scipy/_lib/pyprima/common/checkbreak.py +93 -0
- scipy/_lib/pyprima/common/consts.py +47 -0
- scipy/_lib/pyprima/common/evaluate.py +99 -0
- scipy/_lib/pyprima/common/history.py +38 -0
- scipy/_lib/pyprima/common/infos.py +30 -0
- scipy/_lib/pyprima/common/linalg.py +435 -0
- scipy/_lib/pyprima/common/message.py +290 -0
- scipy/_lib/pyprima/common/powalg.py +131 -0
- scipy/_lib/pyprima/common/preproc.py +277 -0
- scipy/_lib/pyprima/common/present.py +5 -0
- scipy/_lib/pyprima/common/ratio.py +54 -0
- scipy/_lib/pyprima/common/redrho.py +47 -0
- scipy/_lib/pyprima/common/selectx.py +296 -0
- scipy/_lib/tests/test__util.py +105 -121
- scipy/_lib/tests/test_array_api.py +169 -34
- scipy/_lib/tests/test_bunch.py +7 -0
- scipy/_lib/tests/test_ccallback.py +2 -10
- scipy/_lib/tests/test_public_api.py +13 -0
- scipy/cluster/_hierarchy.cpython-313t-darwin.so +0 -0
- scipy/cluster/_optimal_leaf_ordering.cpython-313t-darwin.so +0 -0
- scipy/cluster/_vq.cpython-313t-darwin.so +0 -0
- scipy/cluster/hierarchy.py +393 -223
- scipy/cluster/tests/test_hierarchy.py +273 -335
- scipy/cluster/tests/test_vq.py +45 -61
- scipy/cluster/vq.py +39 -35
- scipy/conftest.py +282 -151
- scipy/constants/_constants.py +4 -1
- scipy/constants/tests/test_codata.py +2 -2
- scipy/constants/tests/test_constants.py +11 -18
- scipy/datasets/_download_all.py +15 -1
- scipy/datasets/_fetchers.py +7 -1
- scipy/datasets/_utils.py +1 -1
- scipy/differentiate/_differentiate.py +25 -25
- scipy/differentiate/tests/test_differentiate.py +24 -25
- scipy/fft/_basic.py +20 -0
- scipy/fft/_helper.py +3 -34
- scipy/fft/_pocketfft/helper.py +29 -1
- scipy/fft/_pocketfft/tests/test_basic.py +2 -4
- scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
- scipy/fft/_realtransforms.py +13 -0
- scipy/fft/tests/test_basic.py +27 -25
- scipy/fft/tests/test_fftlog.py +16 -7
- scipy/fft/tests/test_helper.py +18 -34
- scipy/fft/tests/test_real_transforms.py +8 -10
- scipy/fftpack/convolve.cpython-313t-darwin.so +0 -0
- scipy/fftpack/tests/test_basic.py +2 -4
- scipy/fftpack/tests/test_real_transforms.py +8 -9
- scipy/integrate/_bvp.py +9 -3
- scipy/integrate/_cubature.py +3 -2
- scipy/integrate/_dop.cpython-313t-darwin.so +0 -0
- scipy/integrate/_ivp/common.py +3 -3
- scipy/integrate/_ivp/ivp.py +9 -2
- scipy/integrate/_ivp/tests/test_ivp.py +19 -0
- scipy/integrate/_lsoda.cpython-313t-darwin.so +0 -0
- scipy/integrate/_ode.py +9 -2
- scipy/integrate/_odepack.cpython-313t-darwin.so +0 -0
- scipy/integrate/_quad_vec.py +21 -29
- scipy/integrate/_quadpack.cpython-313t-darwin.so +0 -0
- scipy/integrate/_quadpack_py.py +11 -7
- scipy/integrate/_quadrature.py +3 -3
- scipy/integrate/_rules/_base.py +2 -2
- scipy/integrate/_tanhsinh.py +57 -54
- scipy/integrate/_test_odeint_banded.cpython-313t-darwin.so +0 -0
- scipy/integrate/_vode.cpython-313t-darwin.so +0 -0
- scipy/integrate/tests/test__quad_vec.py +0 -6
- scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
- scipy/integrate/tests/test_cubature.py +21 -35
- scipy/integrate/tests/test_quadrature.py +6 -8
- scipy/integrate/tests/test_tanhsinh.py +61 -43
- scipy/interpolate/__init__.py +70 -58
- scipy/interpolate/_bary_rational.py +22 -22
- scipy/interpolate/_bsplines.py +119 -66
- scipy/interpolate/_cubic.py +65 -50
- scipy/interpolate/_dfitpack.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_dierckx.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_fitpack.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_fitpack2.py +9 -6
- scipy/interpolate/_fitpack_impl.py +32 -26
- scipy/interpolate/_fitpack_repro.py +23 -19
- scipy/interpolate/_interpnd.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_interpolate.py +30 -12
- scipy/interpolate/_ndbspline.py +13 -18
- scipy/interpolate/_ndgriddata.py +5 -8
- scipy/interpolate/_polyint.py +95 -31
- scipy/interpolate/_ppoly.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_rbf.py +2 -2
- scipy/interpolate/_rbfinterp.py +1 -1
- scipy/interpolate/_rbfinterp_pythran.cpython-313t-darwin.so +0 -0
- scipy/interpolate/_rgi.py +31 -26
- scipy/interpolate/_rgi_cython.cpython-313t-darwin.so +0 -0
- scipy/interpolate/dfitpack.py +0 -20
- scipy/interpolate/interpnd.py +1 -2
- scipy/interpolate/tests/test_bary_rational.py +2 -2
- scipy/interpolate/tests/test_bsplines.py +97 -1
- scipy/interpolate/tests/test_fitpack2.py +39 -1
- scipy/interpolate/tests/test_interpnd.py +32 -20
- scipy/interpolate/tests/test_interpolate.py +48 -4
- scipy/interpolate/tests/test_rgi.py +2 -1
- scipy/io/_fast_matrix_market/__init__.py +2 -0
- scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
- scipy/io/_harwell_boeing/hb.py +7 -11
- scipy/io/_idl.py +5 -7
- scipy/io/_netcdf.py +15 -5
- scipy/io/_test_fortran.cpython-313t-darwin.so +0 -0
- scipy/io/arff/tests/test_arffread.py +3 -3
- scipy/io/matlab/__init__.py +5 -3
- scipy/io/matlab/_mio.py +4 -1
- scipy/io/matlab/_mio5.py +19 -13
- scipy/io/matlab/_mio5_utils.cpython-313t-darwin.so +0 -0
- scipy/io/matlab/_mio_utils.cpython-313t-darwin.so +0 -0
- scipy/io/matlab/_miobase.py +4 -1
- scipy/io/matlab/_streams.cpython-313t-darwin.so +0 -0
- scipy/io/matlab/tests/test_mio.py +46 -18
- scipy/io/matlab/tests/test_mio_funcs.py +1 -1
- scipy/io/tests/test_mmio.py +7 -1
- scipy/io/tests/test_wavfile.py +41 -0
- scipy/io/wavfile.py +57 -10
- scipy/linalg/_basic.py +113 -86
- scipy/linalg/_cythonized_array_utils.cpython-313t-darwin.so +0 -0
- scipy/linalg/_decomp.py +22 -9
- scipy/linalg/_decomp_cholesky.py +28 -13
- scipy/linalg/_decomp_cossin.py +45 -30
- scipy/linalg/_decomp_interpolative.cpython-313t-darwin.so +0 -0
- scipy/linalg/_decomp_ldl.py +4 -1
- scipy/linalg/_decomp_lu.py +18 -6
- scipy/linalg/_decomp_lu_cython.cpython-313t-darwin.so +0 -0
- scipy/linalg/_decomp_polar.py +2 -0
- scipy/linalg/_decomp_qr.py +6 -2
- scipy/linalg/_decomp_qz.py +3 -0
- scipy/linalg/_decomp_schur.py +3 -1
- scipy/linalg/_decomp_svd.py +13 -2
- scipy/linalg/_decomp_update.cpython-313t-darwin.so +0 -0
- scipy/linalg/_expm_frechet.py +4 -0
- scipy/linalg/_fblas.cpython-313t-darwin.so +0 -0
- scipy/linalg/_flapack.cpython-313t-darwin.so +0 -0
- scipy/linalg/_linalg_pythran.cpython-313t-darwin.so +0 -0
- scipy/linalg/_matfuncs.py +187 -4
- scipy/linalg/_matfuncs_expm.cpython-313t-darwin.so +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cpython-313t-darwin.so +0 -0
- scipy/linalg/_matfuncs_sqrtm.py +1 -99
- scipy/linalg/_matfuncs_sqrtm_triu.cpython-313t-darwin.so +0 -0
- scipy/linalg/_procrustes.py +2 -0
- scipy/linalg/_sketches.py +17 -6
- scipy/linalg/_solve_toeplitz.cpython-313t-darwin.so +0 -0
- scipy/linalg/_solvers.py +7 -2
- scipy/linalg/_special_matrices.py +26 -36
- scipy/linalg/blas.py +35 -24
- scipy/linalg/cython_blas.cpython-313t-darwin.so +0 -0
- scipy/linalg/cython_lapack.cpython-313t-darwin.so +0 -0
- scipy/linalg/lapack.py +22 -2
- scipy/linalg/tests/_cython_examples/meson.build +7 -0
- scipy/linalg/tests/test_basic.py +31 -16
- scipy/linalg/tests/test_batch.py +588 -0
- scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
- scipy/linalg/tests/test_decomp.py +40 -3
- scipy/linalg/tests/test_decomp_cossin.py +14 -0
- scipy/linalg/tests/test_decomp_ldl.py +1 -1
- scipy/linalg/tests/test_interpolative.py +17 -0
- scipy/linalg/tests/test_lapack.py +115 -7
- scipy/linalg/tests/test_matfuncs.py +157 -102
- scipy/linalg/tests/test_procrustes.py +0 -7
- scipy/linalg/tests/test_solve_toeplitz.py +1 -1
- scipy/linalg/tests/test_special_matrices.py +1 -5
- scipy/ndimage/__init__.py +1 -0
- scipy/ndimage/_cytest.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_delegators.py +8 -2
- scipy/ndimage/_filters.py +453 -5
- scipy/ndimage/_interpolation.py +36 -6
- scipy/ndimage/_measurements.py +4 -2
- scipy/ndimage/_morphology.py +5 -0
- scipy/ndimage/_nd_image.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_ndimage_api.py +2 -1
- scipy/ndimage/_ni_docstrings.py +5 -1
- scipy/ndimage/_ni_label.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_ni_support.py +1 -5
- scipy/ndimage/_rank_filter_1d.cpython-313t-darwin.so +0 -0
- scipy/ndimage/_support_alternative_backends.py +18 -6
- scipy/ndimage/tests/test_filters.py +384 -259
- scipy/ndimage/tests/test_fourier.py +7 -9
- scipy/ndimage/tests/test_interpolation.py +68 -61
- scipy/ndimage/tests/test_measurements.py +18 -35
- scipy/ndimage/tests/test_morphology.py +143 -131
- scipy/ndimage/tests/test_splines.py +1 -3
- scipy/odr/__odrpack.cpython-313t-darwin.so +0 -0
- scipy/optimize/_basinhopping.py +13 -7
- scipy/optimize/_bglu_dense.cpython-313t-darwin.so +0 -0
- scipy/optimize/_bracket.py +46 -26
- scipy/optimize/_chandrupatla.py +9 -10
- scipy/optimize/_cobyla_py.py +104 -123
- scipy/optimize/_constraints.py +14 -10
- scipy/optimize/_differentiable_functions.py +371 -230
- scipy/optimize/_differentialevolution.py +4 -3
- scipy/optimize/_direct.cpython-313t-darwin.so +0 -0
- scipy/optimize/_dual_annealing.py +1 -1
- scipy/optimize/_elementwise.py +1 -4
- scipy/optimize/_group_columns.cpython-313t-darwin.so +0 -0
- scipy/optimize/_highspy/_highs_wrapper.py +6 -4
- scipy/optimize/_lbfgsb.cpython-313t-darwin.so +0 -0
- scipy/optimize/_lbfgsb_py.py +80 -24
- scipy/optimize/_linprog_doc.py +2 -2
- scipy/optimize/_linprog_highs.py +11 -11
- scipy/optimize/_linprog_ip.py +25 -10
- scipy/optimize/_linprog_util.py +18 -19
- scipy/optimize/_lsap.cpython-313t-darwin.so +0 -0
- scipy/optimize/_lsq/common.py +3 -3
- scipy/optimize/_lsq/dogbox.py +16 -2
- scipy/optimize/_lsq/givens_elimination.cpython-313t-darwin.so +0 -0
- scipy/optimize/_lsq/least_squares.py +198 -126
- scipy/optimize/_lsq/lsq_linear.py +6 -6
- scipy/optimize/_lsq/trf.py +35 -8
- scipy/optimize/_milp.py +3 -1
- scipy/optimize/_minimize.py +105 -36
- scipy/optimize/_minpack.cpython-313t-darwin.so +0 -0
- scipy/optimize/_minpack_py.py +21 -14
- scipy/optimize/_moduleTNC.cpython-313t-darwin.so +0 -0
- scipy/optimize/_nnls.py +20 -21
- scipy/optimize/_nonlin.py +34 -3
- scipy/optimize/_numdiff.py +288 -110
- scipy/optimize/_optimize.py +86 -48
- scipy/optimize/_pava_pybind.cpython-313t-darwin.so +0 -0
- scipy/optimize/_remove_redundancy.py +5 -5
- scipy/optimize/_root_scalar.py +1 -1
- scipy/optimize/_shgo.py +6 -0
- scipy/optimize/_shgo_lib/_complex.py +1 -1
- scipy/optimize/_slsqp_py.py +216 -124
- scipy/optimize/_slsqplib.cpython-313t-darwin.so +0 -0
- scipy/optimize/_spectral.py +1 -1
- scipy/optimize/_tnc.py +8 -1
- scipy/optimize/_trlib/_trlib.cpython-313t-darwin.so +0 -0
- scipy/optimize/_trustregion.py +20 -6
- scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
- scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
- scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
- scipy/optimize/_trustregion_constr/projections.py +12 -8
- scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
- scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
- scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
- scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
- scipy/optimize/_trustregion_exact.py +0 -1
- scipy/optimize/_zeros.cpython-313t-darwin.so +0 -0
- scipy/optimize/_zeros_py.py +97 -17
- scipy/optimize/cython_optimize/_zeros.cpython-313t-darwin.so +0 -0
- scipy/optimize/slsqp.py +0 -1
- scipy/optimize/tests/test__basinhopping.py +1 -1
- scipy/optimize/tests/test__differential_evolution.py +4 -4
- scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
- scipy/optimize/tests/test__numdiff.py +66 -22
- scipy/optimize/tests/test__remove_redundancy.py +2 -2
- scipy/optimize/tests/test__shgo.py +9 -1
- scipy/optimize/tests/test_bracket.py +71 -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 +98 -20
- scipy/optimize/tests/test_slsqp.py +36 -4
- scipy/optimize/tests/test_zeros.py +34 -1
- scipy/signal/__init__.py +12 -23
- scipy/signal/_delegators.py +568 -0
- scipy/signal/_filter_design.py +459 -241
- scipy/signal/_fir_filter_design.py +262 -90
- scipy/signal/_lti_conversion.py +3 -2
- scipy/signal/_ltisys.py +118 -91
- scipy/signal/_max_len_seq_inner.cpython-313t-darwin.so +0 -0
- scipy/signal/_peak_finding_utils.cpython-313t-darwin.so +0 -0
- scipy/signal/_polyutils.py +172 -0
- scipy/signal/_short_time_fft.py +553 -76
- scipy/signal/_signal_api.py +30 -0
- scipy/signal/_signaltools.py +719 -396
- scipy/signal/_sigtools.cpython-313t-darwin.so +0 -0
- scipy/signal/_sosfilt.cpython-313t-darwin.so +0 -0
- scipy/signal/_spectral_py.py +230 -50
- scipy/signal/_spline.cpython-313t-darwin.so +0 -0
- scipy/signal/_spline_filters.py +108 -68
- scipy/signal/_support_alternative_backends.py +73 -0
- scipy/signal/_upfirdn.py +4 -1
- scipy/signal/_upfirdn_apply.cpython-313t-darwin.so +0 -0
- scipy/signal/_waveforms.py +2 -11
- scipy/signal/_wavelets.py +1 -1
- scipy/signal/fir_filter_design.py +1 -0
- scipy/signal/spline.py +4 -11
- scipy/signal/tests/_scipy_spectral_test_shim.py +5 -182
- 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 +231 -5
- scipy/signal/tests/test_signaltools.py +2150 -1349
- 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 +269 -120
- scipy/sparse/_bsr.py +7 -4
- scipy/sparse/_compressed.py +59 -234
- scipy/sparse/_construct.py +90 -38
- scipy/sparse/_coo.py +115 -181
- scipy/sparse/_csc.py +4 -4
- scipy/sparse/_csparsetools.cpython-313t-darwin.so +0 -0
- scipy/sparse/_csr.py +2 -2
- scipy/sparse/_data.py +48 -48
- scipy/sparse/_dia.py +105 -21
- scipy/sparse/_dok.py +0 -23
- scipy/sparse/_index.py +4 -4
- scipy/sparse/_matrix.py +23 -0
- scipy/sparse/_sparsetools.cpython-313t-darwin.so +0 -0
- scipy/sparse/_sputils.py +37 -22
- scipy/sparse/base.py +0 -9
- scipy/sparse/bsr.py +0 -14
- scipy/sparse/compressed.py +0 -23
- scipy/sparse/construct.py +0 -6
- scipy/sparse/coo.py +0 -14
- scipy/sparse/csc.py +0 -3
- scipy/sparse/csgraph/_flow.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_matching.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_reordering.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_shortest_path.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_tools.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/_traversal.cpython-313t-darwin.so +0 -0
- scipy/sparse/csgraph/tests/test_matching.py +14 -2
- scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
- scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
- scipy/sparse/csr.py +0 -5
- scipy/sparse/data.py +1 -6
- scipy/sparse/dia.py +0 -7
- scipy/sparse/dok.py +0 -10
- scipy/sparse/linalg/_dsolve/_superlu.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
- scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
- scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_eigen/arpack/arpack.py +28 -20
- scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
- scipy/sparse/linalg/_expm_multiply.py +8 -3
- scipy/sparse/linalg/_interface.py +29 -26
- scipy/sparse/linalg/_isolve/_gcrotmk.py +6 -5
- scipy/sparse/linalg/_isolve/iterative.py +51 -45
- scipy/sparse/linalg/_isolve/lgmres.py +6 -6
- scipy/sparse/linalg/_isolve/minres.py +5 -5
- scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
- scipy/sparse/linalg/_isolve/utils.py +2 -8
- scipy/sparse/linalg/_matfuncs.py +1 -1
- scipy/sparse/linalg/_norm.py +1 -1
- scipy/sparse/linalg/_propack/_cpropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_spropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cpython-313t-darwin.so +0 -0
- scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
- scipy/sparse/linalg/tests/test_expm_multiply.py +10 -0
- scipy/sparse/linalg/tests/test_interface.py +35 -0
- scipy/sparse/linalg/tests/test_pydata_sparse.py +18 -0
- scipy/sparse/tests/test_arithmetic1d.py +5 -2
- scipy/sparse/tests/test_base.py +224 -40
- scipy/sparse/tests/test_common1d.py +17 -12
- scipy/sparse/tests/test_construct.py +1 -1
- scipy/sparse/tests/test_coo.py +272 -4
- scipy/sparse/tests/test_sparsetools.py +5 -0
- scipy/sparse/tests/test_sputils.py +36 -7
- scipy/spatial/_ckdtree.cpython-313t-darwin.so +0 -0
- scipy/spatial/_distance_pybind.cpython-313t-darwin.so +0 -0
- scipy/spatial/_distance_wrap.cpython-313t-darwin.so +0 -0
- scipy/spatial/_hausdorff.cpython-313t-darwin.so +0 -0
- scipy/spatial/_qhull.cpython-313t-darwin.so +0 -0
- scipy/spatial/_voronoi.cpython-313t-darwin.so +0 -0
- scipy/spatial/distance.py +49 -42
- scipy/spatial/tests/test_distance.py +15 -1
- scipy/spatial/tests/test_kdtree.py +1 -0
- scipy/spatial/tests/test_qhull.py +106 -2
- scipy/spatial/transform/__init__.py +5 -3
- scipy/spatial/transform/_rigid_transform.cpython-313t-darwin.so +0 -0
- scipy/spatial/transform/_rotation.cpython-313t-darwin.so +0 -0
- scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
- scipy/spatial/transform/tests/test_rotation.py +1342 -790
- scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
- scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
- scipy/special/__init__.py +1 -47
- scipy/special/_add_newdocs.py +34 -772
- scipy/special/_basic.py +22 -25
- scipy/special/_comb.cpython-313t-darwin.so +0 -0
- scipy/special/_ellip_harm_2.cpython-313t-darwin.so +0 -0
- scipy/special/_gufuncs.cpython-313t-darwin.so +0 -0
- scipy/special/_logsumexp.py +83 -69
- scipy/special/_orthogonal.pyi +1 -1
- scipy/special/_specfun.cpython-313t-darwin.so +0 -0
- scipy/special/_special_ufuncs.cpython-313t-darwin.so +0 -0
- scipy/special/_spherical_bessel.py +4 -4
- scipy/special/_support_alternative_backends.py +212 -119
- scipy/special/_test_internal.cpython-313t-darwin.so +0 -0
- scipy/special/_testutils.py +4 -4
- scipy/special/_ufuncs.cpython-313t-darwin.so +0 -0
- scipy/special/_ufuncs.pyi +1 -0
- scipy/special/_ufuncs.pyx +215 -1400
- scipy/special/_ufuncs_cxx.cpython-313t-darwin.so +0 -0
- scipy/special/_ufuncs_cxx.pxd +2 -15
- scipy/special/_ufuncs_cxx.pyx +5 -44
- scipy/special/_ufuncs_cxx_defs.h +2 -16
- scipy/special/_ufuncs_defs.h +0 -8
- scipy/special/cython_special.cpython-313t-darwin.so +0 -0
- scipy/special/cython_special.pxd +1 -1
- scipy/special/tests/_cython_examples/meson.build +10 -1
- scipy/special/tests/test_basic.py +153 -20
- scipy/special/tests/test_boost_ufuncs.py +3 -0
- scipy/special/tests/test_cdflib.py +35 -11
- scipy/special/tests/test_gammainc.py +16 -0
- scipy/special/tests/test_hyp2f1.py +23 -2
- scipy/special/tests/test_log1mexp.py +85 -0
- scipy/special/tests/test_logsumexp.py +220 -64
- scipy/special/tests/test_mpmath.py +1 -0
- scipy/special/tests/test_nan_inputs.py +1 -1
- scipy/special/tests/test_orthogonal.py +17 -18
- scipy/special/tests/test_sf_error.py +3 -2
- scipy/special/tests/test_sph_harm.py +6 -7
- scipy/special/tests/test_support_alternative_backends.py +211 -76
- scipy/stats/__init__.py +4 -1
- scipy/stats/_ansari_swilk_statistics.cpython-313t-darwin.so +0 -0
- scipy/stats/_axis_nan_policy.py +5 -12
- scipy/stats/_biasedurn.cpython-313t-darwin.so +0 -0
- scipy/stats/_continued_fraction.py +387 -0
- scipy/stats/_continuous_distns.py +296 -319
- 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 +920 -238
- scipy/stats/_entropy.py +9 -10
- scipy/{_lib → stats}/_finite_differences.py +1 -1
- scipy/stats/_hypotests.py +83 -50
- scipy/stats/_kde.py +53 -49
- scipy/stats/_ksstats.py +1 -1
- scipy/stats/_levy_stable/__init__.py +7 -15
- scipy/stats/_levy_stable/levyst.cpython-313t-darwin.so +0 -0
- scipy/stats/_morestats.py +118 -73
- scipy/stats/_mstats_basic.py +13 -17
- scipy/stats/_mstats_extras.py +8 -8
- scipy/stats/_multivariate.py +89 -113
- scipy/stats/_new_distributions.py +97 -20
- scipy/stats/_page_trend_test.py +12 -5
- scipy/stats/_probability_distribution.py +265 -43
- scipy/stats/_qmc.py +14 -9
- scipy/stats/_qmc_cy.cpython-313t-darwin.so +0 -0
- scipy/stats/_qmvnt.py +16 -95
- scipy/stats/_qmvnt_cy.cpython-313t-darwin.so +0 -0
- scipy/stats/_quantile.py +335 -0
- scipy/stats/_rcont/rcont.cpython-313t-darwin.so +0 -0
- scipy/stats/_resampling.py +5 -30
- scipy/stats/_sampling.py +1 -1
- scipy/stats/_sobol.cpython-313t-darwin.so +0 -0
- scipy/stats/_stats.cpython-313t-darwin.so +0 -0
- scipy/stats/_stats_mstats_common.py +21 -2
- scipy/stats/_stats_py.py +551 -477
- scipy/stats/_stats_pythran.cpython-313t-darwin.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.cpython-313t-darwin.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
- scipy/stats/_variation.py +6 -8
- scipy/stats/_wilcoxon.py +13 -7
- scipy/stats/tests/common_tests.py +6 -4
- scipy/stats/tests/test_axis_nan_policy.py +62 -24
- scipy/stats/tests/test_continued_fraction.py +173 -0
- scipy/stats/tests/test_continuous.py +379 -60
- scipy/stats/tests/test_continuous_basic.py +18 -12
- scipy/stats/tests/test_discrete_basic.py +14 -8
- scipy/stats/tests/test_discrete_distns.py +16 -16
- scipy/stats/tests/test_distributions.py +117 -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 +81 -49
- scipy/stats/tests/test_mstats_basic.py +3 -3
- scipy/stats/tests/test_multivariate.py +434 -83
- scipy/stats/tests/test_qmc.py +13 -10
- scipy/stats/tests/test_quantile.py +199 -0
- scipy/stats/tests/test_rank.py +119 -112
- scipy/stats/tests/test_resampling.py +47 -56
- scipy/stats/tests/test_sampling.py +9 -4
- scipy/stats/tests/test_stats.py +799 -939
- scipy/stats/tests/test_variation.py +8 -6
- scipy/version.py +2 -2
- {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/LICENSE.txt +4 -4
- {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/METADATA +12 -12
- {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/RECORD +574 -581
- scipy-1.16.0.dist-info/WHEEL +6 -0
- scipy/_lib/array_api_extra/_funcs.py +0 -484
- scipy/_lib/array_api_extra/_typing.py +0 -8
- scipy/interpolate/_bspl.cpython-313t-darwin.so +0 -0
- scipy/optimize/_cobyla.cpython-313t-darwin.so +0 -0
- scipy/optimize/_cython_nnls.cpython-313t-darwin.so +0 -0
- scipy/optimize/_slsqp.cpython-313t-darwin.so +0 -0
- scipy/spatial/qhull_src/COPYING.txt +0 -38
- scipy/special/libsf_error_state.dylib +0 -0
- scipy/special/tests/test_log_softmax.py +0 -109
- scipy/special/tests/test_xsf_cuda.py +0 -114
- scipy/special/xsf/binom.h +0 -89
- scipy/special/xsf/cdflib.h +0 -100
- scipy/special/xsf/cephes/airy.h +0 -307
- scipy/special/xsf/cephes/besselpoly.h +0 -51
- scipy/special/xsf/cephes/beta.h +0 -257
- scipy/special/xsf/cephes/cbrt.h +0 -131
- scipy/special/xsf/cephes/chbevl.h +0 -85
- scipy/special/xsf/cephes/chdtr.h +0 -193
- scipy/special/xsf/cephes/const.h +0 -87
- scipy/special/xsf/cephes/ellie.h +0 -293
- scipy/special/xsf/cephes/ellik.h +0 -251
- scipy/special/xsf/cephes/ellpe.h +0 -107
- scipy/special/xsf/cephes/ellpk.h +0 -117
- scipy/special/xsf/cephes/expn.h +0 -260
- scipy/special/xsf/cephes/gamma.h +0 -398
- scipy/special/xsf/cephes/hyp2f1.h +0 -596
- scipy/special/xsf/cephes/hyperg.h +0 -361
- scipy/special/xsf/cephes/i0.h +0 -149
- scipy/special/xsf/cephes/i1.h +0 -158
- scipy/special/xsf/cephes/igam.h +0 -421
- scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
- scipy/special/xsf/cephes/igami.h +0 -313
- scipy/special/xsf/cephes/j0.h +0 -225
- scipy/special/xsf/cephes/j1.h +0 -198
- scipy/special/xsf/cephes/jv.h +0 -715
- scipy/special/xsf/cephes/k0.h +0 -164
- scipy/special/xsf/cephes/k1.h +0 -163
- scipy/special/xsf/cephes/kn.h +0 -243
- scipy/special/xsf/cephes/lanczos.h +0 -112
- scipy/special/xsf/cephes/ndtr.h +0 -275
- scipy/special/xsf/cephes/poch.h +0 -85
- scipy/special/xsf/cephes/polevl.h +0 -167
- scipy/special/xsf/cephes/psi.h +0 -194
- scipy/special/xsf/cephes/rgamma.h +0 -111
- scipy/special/xsf/cephes/scipy_iv.h +0 -811
- scipy/special/xsf/cephes/shichi.h +0 -248
- scipy/special/xsf/cephes/sici.h +0 -224
- scipy/special/xsf/cephes/sindg.h +0 -221
- scipy/special/xsf/cephes/tandg.h +0 -139
- scipy/special/xsf/cephes/trig.h +0 -58
- scipy/special/xsf/cephes/unity.h +0 -186
- scipy/special/xsf/cephes/zeta.h +0 -172
- scipy/special/xsf/config.h +0 -304
- scipy/special/xsf/digamma.h +0 -205
- scipy/special/xsf/error.h +0 -57
- scipy/special/xsf/evalpoly.h +0 -47
- scipy/special/xsf/expint.h +0 -266
- scipy/special/xsf/hyp2f1.h +0 -694
- scipy/special/xsf/iv_ratio.h +0 -173
- scipy/special/xsf/lambertw.h +0 -150
- scipy/special/xsf/loggamma.h +0 -163
- scipy/special/xsf/sici.h +0 -200
- scipy/special/xsf/tools.h +0 -427
- scipy/special/xsf/trig.h +0 -164
- scipy/special/xsf/wright_bessel.h +0 -843
- scipy/special/xsf/zlog1.h +0 -35
- scipy/stats/_mvn.cpython-313t-darwin.so +0 -0
- scipy-1.15.2.dist-info/WHEEL +0 -4
@@ -46,7 +46,6 @@ from scipy.sparse._sputils import (
|
|
46
46
|
from scipy.sparse.linalg import gmres, splu
|
47
47
|
from scipy._lib._util import _aligned_zeros
|
48
48
|
from scipy._lib._threadsafety import ReentrancyLock
|
49
|
-
|
50
49
|
from . import _arpack
|
51
50
|
arpack_int = _arpack.timing.nbx.dtype
|
52
51
|
|
@@ -277,9 +276,13 @@ class ArpackError(RuntimeError):
|
|
277
276
|
ARPACK error
|
278
277
|
"""
|
279
278
|
|
280
|
-
def __init__(self, info, infodict=
|
279
|
+
def __init__(self, info, infodict=None):
|
280
|
+
if infodict is None:
|
281
|
+
infodict = _NAUPD_ERRORS
|
282
|
+
|
281
283
|
msg = infodict.get(info, "Unknown error")
|
282
|
-
|
284
|
+
super().__init__(f"ARPACK error {info}: {msg}")
|
285
|
+
|
283
286
|
|
284
287
|
|
285
288
|
class ArpackNoConvergence(ArpackError):
|
@@ -313,12 +316,12 @@ class _ArpackParams:
|
|
313
316
|
def __init__(self, n, k, tp, mode=1, sigma=None,
|
314
317
|
ncv=None, v0=None, maxiter=None, which="LM", tol=0):
|
315
318
|
if k <= 0:
|
316
|
-
raise ValueError("k must be positive, k
|
319
|
+
raise ValueError(f"k must be positive, k={k}")
|
317
320
|
|
318
321
|
if maxiter is None:
|
319
322
|
maxiter = n * 10
|
320
323
|
if maxiter <= 0:
|
321
|
-
raise ValueError("maxiter must be positive, maxiter
|
324
|
+
raise ValueError(f"maxiter must be positive, maxiter={maxiter}")
|
322
325
|
|
323
326
|
if tp not in 'fdFD':
|
324
327
|
# Use `float64` libraries from integer dtypes.
|
@@ -508,12 +511,12 @@ class _SymmetricArpackParams(_ArpackParams):
|
|
508
511
|
self.B = M_matvec
|
509
512
|
self.bmat = 'G'
|
510
513
|
else:
|
511
|
-
raise ValueError("mode
|
514
|
+
raise ValueError(f"mode={mode} not implemented")
|
512
515
|
|
513
516
|
if which not in _SEUPD_WHICH:
|
514
517
|
raise ValueError(f"which must be one of {' '.join(_SEUPD_WHICH)}")
|
515
518
|
if k >= n:
|
516
|
-
raise ValueError("k must be less than ndim(A), k
|
519
|
+
raise ValueError(f"k must be less than ndim(A), k={k}")
|
517
520
|
|
518
521
|
_ArpackParams.__init__(self, n, k, tp, mode, sigma,
|
519
522
|
ncv, v0, maxiter, which, tol)
|
@@ -690,12 +693,12 @@ class _UnsymmetricArpackParams(_ArpackParams):
|
|
690
693
|
self.bmat = 'G'
|
691
694
|
self.OP = lambda x: self.OPa(M_matvec(x))
|
692
695
|
else:
|
693
|
-
raise ValueError("mode
|
696
|
+
raise ValueError(f"mode={mode} not implemented")
|
694
697
|
|
695
698
|
if which not in _NEUPD_WHICH:
|
696
699
|
raise ValueError(f"Parameter which must be one of {' '.join(_NEUPD_WHICH)}")
|
697
700
|
if k >= n - 1:
|
698
|
-
raise ValueError("k must be less than ndim(A)-1, k
|
701
|
+
raise ValueError(f"k must be less than ndim(A)-1, k={k}")
|
699
702
|
|
700
703
|
_ArpackParams.__init__(self, n, k, tp, mode, sigma,
|
701
704
|
ncv, v0, maxiter, which, tol)
|
@@ -977,9 +980,10 @@ class IterInv(LinearOperator):
|
|
977
980
|
def _matvec(self, x):
|
978
981
|
b, info = self.ifunc(self.M, x, tol=self.tol)
|
979
982
|
if info != 0:
|
980
|
-
raise ValueError(
|
981
|
-
|
982
|
-
|
983
|
+
raise ValueError(
|
984
|
+
f"Error in inverting M: function {self.ifunc.__name__} "
|
985
|
+
f"did not converge (info = {info})."
|
986
|
+
)
|
983
987
|
return b
|
984
988
|
|
985
989
|
|
@@ -1024,9 +1028,10 @@ class IterOpInv(LinearOperator):
|
|
1024
1028
|
def _matvec(self, x):
|
1025
1029
|
b, info = self.ifunc(self.OP, x, tol=self.tol)
|
1026
1030
|
if info != 0:
|
1027
|
-
raise ValueError(
|
1028
|
-
|
1029
|
-
|
1031
|
+
raise ValueError(
|
1032
|
+
f"Error in inverting [A-sigma*M]: function {self.ifunc.__name__} "
|
1033
|
+
f"did not converge (info = {info})."
|
1034
|
+
)
|
1030
1035
|
return b
|
1031
1036
|
|
1032
1037
|
@property
|
@@ -1266,7 +1271,7 @@ def eigs(A, k=6, M=None, sigma=None, which='LM', v0=None,
|
|
1266
1271
|
n = A.shape[0]
|
1267
1272
|
|
1268
1273
|
if k <= 0:
|
1269
|
-
raise ValueError("k
|
1274
|
+
raise ValueError(f"k={k} must be greater than 0.")
|
1270
1275
|
|
1271
1276
|
if k >= n - 1:
|
1272
1277
|
warnings.warn("k >= N - 1 for N * N square matrix. "
|
@@ -1422,16 +1427,19 @@ def eigsh(A, k=6, M=None, sigma=None, which='LM', v0=None,
|
|
1422
1427
|
unspecified. This is computed internally via a (sparse) LU
|
1423
1428
|
decomposition for explicit matrices A & M, or via an iterative
|
1424
1429
|
solver if either A or M is a general linear operator.
|
1425
|
-
Alternatively, the user can supply the matrix or operator OPinv
|
1430
|
+
Alternatively, the user can supply the matrix or operator `OPinv`,
|
1426
1431
|
which gives ``x = OPinv @ b = [A - sigma * M]^-1 @ b``.
|
1432
|
+
Regardless of the selected mode (normal, cayley, or buckling),
|
1433
|
+
`OPinv` should always be supplied as ``OPinv = [A - sigma * M]^-1``.
|
1434
|
+
|
1427
1435
|
Note that when sigma is specified, the keyword 'which' refers to
|
1428
1436
|
the shifted eigenvalues ``w'[i]`` where:
|
1429
1437
|
|
1430
|
-
if mode == 'normal'
|
1438
|
+
if ``mode == 'normal'``: ``w'[i] = 1 / (w[i] - sigma)``.
|
1431
1439
|
|
1432
|
-
if mode == 'cayley'
|
1440
|
+
if ``mode == 'cayley'``: ``w'[i] = (w[i] + sigma) / (w[i] - sigma)``.
|
1433
1441
|
|
1434
|
-
if mode == 'buckling'
|
1442
|
+
if ``mode == 'buckling'``: ``w'[i] = w[i] / (w[i] - sigma)``.
|
1435
1443
|
|
1436
1444
|
(see further discussion in 'mode' below)
|
1437
1445
|
v0 : ndarray, optional
|
@@ -307,7 +307,7 @@ def lobpcg(
|
|
307
307
|
``A x = lambda x`` without constraints or preconditioning.
|
308
308
|
|
309
309
|
>>> import numpy as np
|
310
|
-
>>> from scipy.sparse import
|
310
|
+
>>> from scipy.sparse import diags_array
|
311
311
|
>>> from scipy.sparse.linalg import LinearOperator, aslinearoperator
|
312
312
|
>>> from scipy.sparse.linalg import lobpcg
|
313
313
|
|
@@ -323,7 +323,7 @@ def lobpcg(
|
|
323
323
|
the sparse diagonal matrix `A`
|
324
324
|
of the eigenvalue problem ``A x = lambda x`` to solve.
|
325
325
|
|
326
|
-
>>> A =
|
326
|
+
>>> A = diags_array(vals, offsets=0, shape=(n, n))
|
327
327
|
>>> A = A.astype(np.int16)
|
328
328
|
>>> A.toarray()
|
329
329
|
array([[ 1, 0, 0, ..., 0, 0, 0],
|
@@ -507,15 +507,15 @@ def lobpcg(
|
|
507
507
|
if M is None:
|
508
508
|
aux += "out"
|
509
509
|
aux += " preconditioning\n\n"
|
510
|
-
aux += "matrix size
|
511
|
-
aux += "block size
|
510
|
+
aux += f"matrix size {n}\n"
|
511
|
+
aux += f"block size {sizeX}\n\n"
|
512
512
|
if blockVectorY is None:
|
513
513
|
aux += "No constraints\n\n"
|
514
514
|
else:
|
515
515
|
if sizeY > 1:
|
516
|
-
aux += "
|
516
|
+
aux += f"{sizeY} constraints\n\n"
|
517
517
|
else:
|
518
|
-
aux += "
|
518
|
+
aux += f"{sizeY} constraint\n\n"
|
519
519
|
print(aux)
|
520
520
|
|
521
521
|
if (n - sizeY) < (5 * sizeX):
|
@@ -115,7 +115,7 @@ def expm_multiply(A, B, start=None, stop=None, num=None,
|
|
115
115
|
----------
|
116
116
|
A : transposable linear operator
|
117
117
|
The operator whose exponential is of interest.
|
118
|
-
B : ndarray
|
118
|
+
B : ndarray, sparse array
|
119
119
|
The matrix or vector to be multiplied by the matrix exponential of A.
|
120
120
|
start : scalar, optional
|
121
121
|
The starting time point of the sequence.
|
@@ -443,7 +443,7 @@ class LazyOperatorNormInfo:
|
|
443
443
|
|
444
444
|
def d(self, p):
|
445
445
|
"""
|
446
|
-
Lazily estimate :math:`d_p(A) ~= || A^p ||^(1/p)`
|
446
|
+
Lazily estimate :math:`d_p(A) ~= || A^p ||^(1/p)`
|
447
447
|
where :math:`||.||` is the 1-norm.
|
448
448
|
"""
|
449
449
|
if p not in self._d:
|
@@ -702,7 +702,12 @@ def _expm_multiply_interval(A, B, start=None, stop=None, num=None,
|
|
702
702
|
m_star, s = _fragment_3_1(norm_info, n0, tol, ell=ell)
|
703
703
|
|
704
704
|
# Compute the expm action up to the initial time point.
|
705
|
-
|
705
|
+
action_t0 = _expm_multiply_simple_core(A, B, t_0, mu, m_star, s)
|
706
|
+
if scipy.sparse.issparse(action_t0):
|
707
|
+
action_t0 = action_t0.toarray()
|
708
|
+
elif is_pydata_spmatrix(action_t0):
|
709
|
+
action_t0 = action_t0.todense()
|
710
|
+
X[0] = action_t0
|
706
711
|
|
707
712
|
# Compute the expm action at the rest of the time points.
|
708
713
|
if q <= s:
|
@@ -55,14 +55,14 @@ __all__ = ['LinearOperator', 'aslinearoperator']
|
|
55
55
|
class LinearOperator:
|
56
56
|
"""Common interface for performing matrix vector products
|
57
57
|
|
58
|
-
Many iterative methods (e.g. cg
|
59
|
-
individual entries of a matrix to solve a linear system A@x=b
|
58
|
+
Many iterative methods (e.g. `cg`, `gmres`) do not need to know the
|
59
|
+
individual entries of a matrix to solve a linear system ``A@x = b``.
|
60
60
|
Such solvers only require the computation of matrix vector
|
61
|
-
products, A@v where v is a dense vector. This class serves as
|
61
|
+
products, ``A@v`` where ``v`` is a dense vector. This class serves as
|
62
62
|
an abstract interface between iterative solvers and matrix-like
|
63
63
|
objects.
|
64
64
|
|
65
|
-
To construct a concrete LinearOperator
|
65
|
+
To construct a concrete `LinearOperator`, either pass appropriate
|
66
66
|
callables to the constructor of this class, or subclass it.
|
67
67
|
|
68
68
|
A subclass must implement either one of the methods ``_matvec``
|
@@ -82,17 +82,17 @@ class LinearOperator:
|
|
82
82
|
Parameters
|
83
83
|
----------
|
84
84
|
shape : tuple
|
85
|
-
Matrix dimensions (M, N)
|
85
|
+
Matrix dimensions ``(M, N)``.
|
86
86
|
matvec : callable f(v)
|
87
|
-
Returns returns A @ v
|
87
|
+
Returns returns ``A @ v``.
|
88
88
|
rmatvec : callable f(v)
|
89
|
-
Returns A^H @ v
|
89
|
+
Returns ``A^H @ v``, where ``A^H`` is the conjugate transpose of ``A``.
|
90
90
|
matmat : callable f(V)
|
91
|
-
Returns A @ V
|
91
|
+
Returns ``A @ V``, where ``V`` is a dense matrix with dimensions ``(N, K)``.
|
92
92
|
dtype : dtype
|
93
93
|
Data type of the matrix.
|
94
94
|
rmatmat : callable f(V)
|
95
|
-
Returns A^H @ V
|
95
|
+
Returns ``A^H @ V``, where ``V`` is a dense matrix with dimensions ``(M, K)``.
|
96
96
|
|
97
97
|
Attributes
|
98
98
|
----------
|
@@ -108,17 +108,17 @@ class LinearOperator:
|
|
108
108
|
|
109
109
|
Notes
|
110
110
|
-----
|
111
|
-
The user-defined matvec
|
112
|
-
where v has shape (N,) as well as the (N,1) case. The shape of
|
113
|
-
the return type is handled internally by LinearOperator
|
111
|
+
The user-defined `matvec` function must properly handle the case
|
112
|
+
where ``v`` has shape ``(N,)`` as well as the ``(N,1)`` case. The shape of
|
113
|
+
the return type is handled internally by `LinearOperator`.
|
114
114
|
|
115
115
|
It is highly recommended to explicitly specify the `dtype`, otherwise
|
116
116
|
it is determined automatically at the cost of a single matvec application
|
117
|
-
on
|
118
|
-
Python
|
117
|
+
on ``int8`` zero vector using the promoted `dtype` of the output.
|
118
|
+
Python ``int`` could be difficult to automatically cast to numpy integers
|
119
119
|
in the definition of the `matvec` so the determination may be inaccurate.
|
120
120
|
It is assumed that `matmat`, `rmatvec`, and `rmatmat` would result in
|
121
|
-
the same dtype of the output given an
|
121
|
+
the same dtype of the output given an ``int8`` input as `matvec`.
|
122
122
|
|
123
123
|
LinearOperator instances can also be multiplied, added with each
|
124
124
|
other and exponentiated, all lazily: the result of these operations
|
@@ -322,6 +322,10 @@ class LinearOperator:
|
|
322
322
|
"""Default implementation of _rmatvec; defers to adjoint."""
|
323
323
|
if type(self)._adjoint == LinearOperator._adjoint:
|
324
324
|
# _adjoint not overridden, prevent infinite recursion
|
325
|
+
if (hasattr(self, "_rmatmat")
|
326
|
+
and type(self)._rmatmat != LinearOperator._rmatmat):
|
327
|
+
# Try to use _rmatmat as a fallback
|
328
|
+
return self._rmatmat(x.reshape(-1, 1)).reshape(-1)
|
325
329
|
raise NotImplementedError
|
326
330
|
else:
|
327
331
|
return self.H.matvec(x)
|
@@ -399,8 +403,7 @@ class LinearOperator:
|
|
399
403
|
X = np.asanyarray(X)
|
400
404
|
|
401
405
|
if X.ndim != 2:
|
402
|
-
raise ValueError('expected 2-d ndarray or matrix, not
|
403
|
-
% X.ndim)
|
406
|
+
raise ValueError(f'expected 2-d ndarray or matrix, not {X.ndim}-d')
|
404
407
|
|
405
408
|
if X.shape[0] != self.shape[0]:
|
406
409
|
raise ValueError(f'dimension mismatch: {self.shape}, {X.shape}')
|
@@ -548,7 +551,7 @@ class LinearOperator:
|
|
548
551
|
else:
|
549
552
|
dt = 'dtype=' + str(self.dtype)
|
550
553
|
|
551
|
-
return '
|
554
|
+
return f'<{M}x{N} {self.__class__.__name__} with {dt}>'
|
552
555
|
|
553
556
|
def adjoint(self):
|
554
557
|
"""Hermitian adjoint.
|
@@ -822,22 +825,22 @@ class MatrixLinearOperator(LinearOperator):
|
|
822
825
|
|
823
826
|
def _adjoint(self):
|
824
827
|
if self.__adj is None:
|
825
|
-
self.__adj = _AdjointMatrixOperator(self)
|
828
|
+
self.__adj = _AdjointMatrixOperator(self.A)
|
826
829
|
return self.__adj
|
827
830
|
|
831
|
+
|
828
832
|
class _AdjointMatrixOperator(MatrixLinearOperator):
|
829
|
-
def __init__(self,
|
830
|
-
self.A =
|
831
|
-
self.
|
832
|
-
self.
|
833
|
-
self.shape = adjoint.shape[1], adjoint.shape[0]
|
833
|
+
def __init__(self, adjoint_array):
|
834
|
+
self.A = adjoint_array.T.conj()
|
835
|
+
self.args = (adjoint_array,)
|
836
|
+
self.shape = adjoint_array.shape[1], adjoint_array.shape[0]
|
834
837
|
|
835
838
|
@property
|
836
839
|
def dtype(self):
|
837
|
-
return self.
|
840
|
+
return self.args[0].dtype
|
838
841
|
|
839
842
|
def _adjoint(self):
|
840
|
-
return self.
|
843
|
+
return MatrixLinearOperator(self.args[0])
|
841
844
|
|
842
845
|
|
843
846
|
class IdentityOperator(LinearOperator):
|
@@ -184,7 +184,7 @@ def _fgmres(matvec, v0, m, atol, lpsolve=None, rpsolve=None, cs=(), outer_v=(),
|
|
184
184
|
def gcrotmk(A, b, x0=None, *, rtol=1e-5, atol=0., maxiter=1000, M=None, callback=None,
|
185
185
|
m=20, k=None, CU=None, discard_C=False, truncate='oldest'):
|
186
186
|
"""
|
187
|
-
Solve
|
187
|
+
Solve ``Ax = b`` with the flexible GCROT(m,k) algorithm.
|
188
188
|
|
189
189
|
Parameters
|
190
190
|
----------
|
@@ -273,7 +273,7 @@ def gcrotmk(A, b, x0=None, *, rtol=1e-5, atol=0., maxiter=1000, M=None, callback
|
|
273
273
|
True
|
274
274
|
|
275
275
|
"""
|
276
|
-
A,M,x,b
|
276
|
+
A,M,x,b = make_system(A,M,x0,b)
|
277
277
|
|
278
278
|
if not np.isfinite(b).all():
|
279
279
|
raise ValueError("RHS must contain only finite numbers")
|
@@ -306,7 +306,7 @@ def gcrotmk(A, b, x0=None, *, rtol=1e-5, atol=0., maxiter=1000, M=None, callback
|
|
306
306
|
|
307
307
|
if b_norm == 0:
|
308
308
|
x = b
|
309
|
-
return (
|
309
|
+
return (x, 0)
|
310
310
|
|
311
311
|
if discard_C:
|
312
312
|
CU[:] = [(None, u) for c, u in CU]
|
@@ -433,7 +433,8 @@ def gcrotmk(A, b, x0=None, *, rtol=1e-5, atol=0., maxiter=1000, M=None, callback
|
|
433
433
|
ux = axpy(u, ux, ux.shape[0], -byc) # ux -= u*byc
|
434
434
|
|
435
435
|
# cx := V H y
|
436
|
-
|
436
|
+
with np.errstate(invalid="ignore"):
|
437
|
+
hy = Q.dot(R.dot(y))
|
437
438
|
cx = vs[0] * hy[0]
|
438
439
|
for v, hyc in zip(vs[1:], hy[1:]):
|
439
440
|
cx = axpy(v, cx, cx.shape[0], hyc) # cx += v*hyc
|
@@ -499,4 +500,4 @@ def gcrotmk(A, b, x0=None, *, rtol=1e-5, atol=0., maxiter=1000, M=None, callback
|
|
499
500
|
if discard_C:
|
500
501
|
CU[:] = [(None, uz) for cz, uz in CU]
|
501
502
|
|
502
|
-
return
|
503
|
+
return x, j_outer + 1
|