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
@@ -3,9 +3,8 @@ import pytest
|
|
3
3
|
import numpy as np
|
4
4
|
from numpy.testing import assert_allclose, assert_equal, suppress_warnings
|
5
5
|
|
6
|
-
from scipy.conftest import array_api_compatible
|
7
6
|
from scipy._lib._util import rng_integers
|
8
|
-
from scipy._lib._array_api import
|
7
|
+
from scipy._lib._array_api import is_numpy
|
9
8
|
from scipy._lib._array_api_no_0d import xp_assert_close, xp_assert_equal
|
10
9
|
from scipy import stats, special
|
11
10
|
from scipy.optimize import root
|
@@ -81,15 +80,15 @@ def test_bootstrap_iv():
|
|
81
80
|
@pytest.mark.parametrize("axis", [0, 1, 2])
|
82
81
|
def test_bootstrap_batch(method, axis):
|
83
82
|
# for one-sample statistics, batch size shouldn't affect the result
|
84
|
-
np.random.
|
83
|
+
rng = np.random.RandomState(0)
|
85
84
|
|
86
|
-
x =
|
85
|
+
x = rng.rand(10, 11, 12)
|
87
86
|
# SPEC-007 leave one call with random_state to ensure it still works
|
88
87
|
res1 = bootstrap((x,), np.mean, batch=None, method=method,
|
89
88
|
random_state=0, axis=axis, n_resamples=100)
|
90
|
-
np.random.
|
89
|
+
rng = np.random.RandomState(0)
|
91
90
|
res2 = bootstrap((x,), np.mean, batch=10, method=method,
|
92
|
-
axis=axis, n_resamples=100)
|
91
|
+
axis=axis, n_resamples=100, random_state=rng)
|
93
92
|
|
94
93
|
assert_equal(res2.confidence_interval.low, res1.confidence_interval.low)
|
95
94
|
assert_equal(res2.confidence_interval.high, res1.confidence_interval.high)
|
@@ -99,10 +98,10 @@ def test_bootstrap_batch(method, axis):
|
|
99
98
|
@pytest.mark.parametrize("method", ['basic', 'percentile', 'BCa'])
|
100
99
|
def test_bootstrap_paired(method):
|
101
100
|
# test that `paired` works as expected
|
102
|
-
np.random.
|
101
|
+
rng = np.random.RandomState(0)
|
103
102
|
n = 100
|
104
|
-
x =
|
105
|
-
y =
|
103
|
+
x = rng.rand(n)
|
104
|
+
y = rng.rand(n)
|
106
105
|
|
107
106
|
def my_statistic(x, y, axis=-1):
|
108
107
|
return ((x-y)**2).mean(axis=axis)
|
@@ -130,7 +129,7 @@ def test_bootstrap_vectorized(method, axis, paired):
|
|
130
129
|
# CI and standard_error of each axis-slice is the same as those of the
|
131
130
|
# original 1d sample
|
132
131
|
|
133
|
-
np.random.
|
132
|
+
rng = np.random.RandomState(0)
|
134
133
|
|
135
134
|
def my_statistic(x, y, z, axis=-1):
|
136
135
|
return x.mean(axis=axis) + y.mean(axis=axis) + z.mean(axis=axis)
|
@@ -138,9 +137,9 @@ def test_bootstrap_vectorized(method, axis, paired):
|
|
138
137
|
shape = 10, 11, 12
|
139
138
|
n_samples = shape[axis]
|
140
139
|
|
141
|
-
x =
|
142
|
-
y =
|
143
|
-
z =
|
140
|
+
x = rng.rand(n_samples)
|
141
|
+
y = rng.rand(n_samples)
|
142
|
+
z = rng.rand(n_samples)
|
144
143
|
res1 = bootstrap((x, y, z), my_statistic, paired=paired, method=method,
|
145
144
|
rng=0, axis=0, n_resamples=100)
|
146
145
|
assert (res1.bootstrap_distribution.shape
|
@@ -224,11 +223,6 @@ def test_bootstrap_against_R(method, expected):
|
|
224
223
|
assert_allclose(res.confidence_interval, expected, rtol=0.005)
|
225
224
|
|
226
225
|
|
227
|
-
tests_against_itself_1samp = {"basic": 1780,
|
228
|
-
"percentile": 1784,
|
229
|
-
"BCa": 1784}
|
230
|
-
|
231
|
-
|
232
226
|
def test_multisample_BCa_against_R():
|
233
227
|
# Because bootstrap is stochastic, it's tricky to test against reference
|
234
228
|
# behavior. Here, we show that SciPy's BCa CI matches R wboot's BCa CI
|
@@ -312,6 +306,11 @@ def test_BCa_acceleration_against_reference():
|
|
312
306
|
assert_allclose(a_hat, 0.011008228344026734)
|
313
307
|
|
314
308
|
|
309
|
+
tests_against_itself_1samp = {"basic": 1789,
|
310
|
+
"percentile": 1790,
|
311
|
+
"BCa": 1789}
|
312
|
+
|
313
|
+
|
315
314
|
@pytest.mark.slow
|
316
315
|
@pytest.mark.parametrize("method, expected",
|
317
316
|
tests_against_itself_1samp.items())
|
@@ -320,7 +319,7 @@ def test_bootstrap_against_itself_1samp(method, expected):
|
|
320
319
|
# to check for unintended changes in behavior. The test also makes sure
|
321
320
|
# that bootstrap works with multi-sample statistics and that the
|
322
321
|
# `axis` argument works as expected / function is vectorized.
|
323
|
-
np.random.
|
322
|
+
rng = np.random.default_rng(9123847)
|
324
323
|
|
325
324
|
n = 100 # size of sample
|
326
325
|
n_resamples = 999 # number of bootstrap resamples used to form each CI
|
@@ -332,14 +331,15 @@ def test_bootstrap_against_itself_1samp(method, expected):
|
|
332
331
|
|
333
332
|
# Do the same thing 2000 times. (The code is fully vectorized.)
|
334
333
|
n_replications = 2000
|
335
|
-
data = dist.rvs(size=(n_replications, n))
|
334
|
+
data = dist.rvs(size=(n_replications, n), random_state=rng)
|
336
335
|
res = bootstrap((data,),
|
337
336
|
statistic=np.mean,
|
338
337
|
confidence_level=confidence_level,
|
339
338
|
n_resamples=n_resamples,
|
340
339
|
batch=50,
|
341
340
|
method=method,
|
342
|
-
axis=-1
|
341
|
+
axis=-1,
|
342
|
+
rng=rng)
|
343
343
|
ci = res.confidence_interval
|
344
344
|
|
345
345
|
# ci contains vectors of lower and upper confidence interval bounds
|
@@ -364,7 +364,7 @@ def test_bootstrap_against_itself_2samp(method, expected):
|
|
364
364
|
# to check for unintended changes in behavior. The test also makes sure
|
365
365
|
# that bootstrap works with multi-sample statistics and that the
|
366
366
|
# `axis` argument works as expected / function is vectorized.
|
367
|
-
np.random.
|
367
|
+
rng = np.random.RandomState(0)
|
368
368
|
|
369
369
|
n1 = 100 # size of sample 1
|
370
370
|
n2 = 120 # size of sample 2
|
@@ -384,15 +384,16 @@ def test_bootstrap_against_itself_2samp(method, expected):
|
|
384
384
|
|
385
385
|
# Do the same thing 1000 times. (The code is fully vectorized.)
|
386
386
|
n_replications = 1000
|
387
|
-
data1 = dist1.rvs(size=(n_replications, n1))
|
388
|
-
data2 = dist2.rvs(size=(n_replications, n2))
|
387
|
+
data1 = dist1.rvs(size=(n_replications, n1), random_state=rng)
|
388
|
+
data2 = dist2.rvs(size=(n_replications, n2), random_state=rng)
|
389
389
|
res = bootstrap((data1, data2),
|
390
390
|
statistic=my_stat,
|
391
391
|
confidence_level=confidence_level,
|
392
392
|
n_resamples=n_resamples,
|
393
393
|
batch=50,
|
394
394
|
method=method,
|
395
|
-
axis=-1
|
395
|
+
axis=-1,
|
396
|
+
random_state=rng)
|
396
397
|
ci = res.confidence_interval
|
397
398
|
|
398
399
|
# ci contains vectors of lower and upper confidence interval bounds
|
@@ -418,10 +419,10 @@ def test_bootstrap_vectorized_3samp(method, axis):
|
|
418
419
|
assert sample.ndim == 1
|
419
420
|
return statistic(*data, axis=0)
|
420
421
|
|
421
|
-
np.random.
|
422
|
-
x =
|
423
|
-
y =
|
424
|
-
z =
|
422
|
+
rng = np.random.RandomState(0)
|
423
|
+
x = rng.rand(4, 5)
|
424
|
+
y = rng.rand(4, 5)
|
425
|
+
z = rng.rand(4, 5)
|
425
426
|
res1 = bootstrap((x, y, z), statistic, vectorized=True,
|
426
427
|
axis=axis, n_resamples=100, method=method, rng=0)
|
427
428
|
res2 = bootstrap((x, y, z), statistic_1d, vectorized=False,
|
@@ -443,8 +444,8 @@ def test_bootstrap_vectorized_1samp(method, axis):
|
|
443
444
|
assert x.ndim == 1
|
444
445
|
return statistic(x, axis=0)
|
445
446
|
|
446
|
-
np.random.
|
447
|
-
x =
|
447
|
+
rng = np.random.RandomState(0)
|
448
|
+
x = rng.rand(4, 5)
|
448
449
|
res1 = bootstrap((x,), statistic, vectorized=True, axis=axis,
|
449
450
|
n_resamples=100, batch=None, method=method,
|
450
451
|
rng=0)
|
@@ -625,9 +626,9 @@ def test_percentile_along_axis():
|
|
625
626
|
# _percentile_along_axis gets the q corresponding with each axis slice
|
626
627
|
|
627
628
|
shape = 10, 20
|
628
|
-
np.random.
|
629
|
-
x =
|
630
|
-
q =
|
629
|
+
rng = np.random.RandomState(0)
|
630
|
+
x = rng.rand(*shape)
|
631
|
+
q = rng.rand(*shape[:-1]) * 100
|
631
632
|
y = _resampling._percentile_along_axis(x, q)
|
632
633
|
|
633
634
|
for i in range(shape[0]):
|
@@ -653,10 +654,10 @@ def test_vectorize_statistic(axis):
|
|
653
654
|
# vectorize the non-vectorized statistic
|
654
655
|
statistic2 = _resampling._vectorize_statistic(statistic_1d)
|
655
656
|
|
656
|
-
np.random.
|
657
|
-
x =
|
658
|
-
y =
|
659
|
-
z =
|
657
|
+
rng = np.random.RandomState(0)
|
658
|
+
x = rng.rand(4, 5, 6)
|
659
|
+
y = rng.rand(4, 1, 6)
|
660
|
+
z = rng.rand(1, 5, 6)
|
660
661
|
|
661
662
|
res1 = statistic(x, y, z, axis=axis)
|
662
663
|
res2 = statistic2(x, y, z, axis=axis)
|
@@ -683,7 +684,7 @@ def test_vector_valued_statistic(method):
|
|
683
684
|
np.std(data, axis, ddof=1)])
|
684
685
|
|
685
686
|
res = bootstrap((sample,), statistic, method=method, axis=-1,
|
686
|
-
n_resamples=9999, batch=200)
|
687
|
+
n_resamples=9999, batch=200, random_state=rng)
|
687
688
|
|
688
689
|
counts = np.sum((res.confidence_interval.low.T < params)
|
689
690
|
& (res.confidence_interval.high.T > params),
|
@@ -746,13 +747,11 @@ def test_gh_20850():
|
|
746
747
|
stats.bootstrap((x.T, y.T), statistic, axis=1)
|
747
748
|
# But even when the shapes *are* the same along axis, the lengths
|
748
749
|
# along other dimensions have to be the same (or `bootstrap` warns).
|
749
|
-
message = "
|
750
|
-
with pytest.
|
750
|
+
message = "Array shapes are incompatible for broadcasting."
|
751
|
+
with pytest.raises(ValueError, match=message):
|
751
752
|
stats.bootstrap((x, y[:10, 0]), statistic) # this won't work after 1.16
|
752
|
-
|
753
|
-
|
754
|
-
with pytest.warns(FutureWarning, match=message):
|
755
|
-
stats.bootstrap((x.T, y.T[0:1, :10]), statistic, axis=1) # this will
|
753
|
+
stats.bootstrap((x, y[:10, 0:1]), statistic) # this will
|
754
|
+
stats.bootstrap((x.T, y.T[0:1, :10]), statistic, axis=1) # this will
|
756
755
|
|
757
756
|
|
758
757
|
# --- Test Monte Carlo Hypothesis Test --- #
|
@@ -773,7 +772,6 @@ class TestMonteCarloHypothesisTest:
|
|
773
772
|
# return stats.ttest_1samp(x, popmean=0., axis=axis).statistic)
|
774
773
|
return statistic
|
775
774
|
|
776
|
-
@array_api_compatible
|
777
775
|
def test_input_validation(self, xp):
|
778
776
|
# test that the appropriate error messages are raised for invalid input
|
779
777
|
|
@@ -840,7 +838,6 @@ class TestMonteCarloHypothesisTest:
|
|
840
838
|
except ValueError as e:
|
841
839
|
assert str(e).startswith(message)
|
842
840
|
|
843
|
-
@array_api_compatible
|
844
841
|
def test_input_validation_xp(self, xp):
|
845
842
|
def non_vectorized_statistic(x):
|
846
843
|
return xp.mean(x)
|
@@ -857,19 +854,17 @@ class TestMonteCarloHypothesisTest:
|
|
857
854
|
monte_carlo_test(sample, stats.norm.rvs, xp.mean, vectorized=False)
|
858
855
|
|
859
856
|
@pytest.mark.xslow
|
860
|
-
@array_api_compatible
|
861
857
|
def test_batch(self, xp):
|
862
858
|
# make sure that the `batch` parameter is respected by checking the
|
863
859
|
# maximum batch size provided in calls to `statistic`
|
864
860
|
rng = np.random.default_rng(23492340193)
|
865
861
|
x = xp.asarray(rng.standard_normal(size=10))
|
866
862
|
|
867
|
-
xp_test = array_namespace(x) # numpy.std doesn't have `correction`
|
868
863
|
def statistic(x, axis):
|
869
864
|
batch_size = 1 if x.ndim == 1 else x.shape[0]
|
870
865
|
statistic.batch_size = max(batch_size, statistic.batch_size)
|
871
866
|
statistic.counter += 1
|
872
|
-
return self.get_statistic(
|
867
|
+
return self.get_statistic(xp)(x, axis=axis)
|
873
868
|
statistic.counter = 0
|
874
869
|
statistic.batch_size = 0
|
875
870
|
|
@@ -896,7 +891,6 @@ class TestMonteCarloHypothesisTest:
|
|
896
891
|
xp_assert_equal(res1.pvalue, res3.pvalue)
|
897
892
|
xp_assert_equal(res2.pvalue, res3.pvalue)
|
898
893
|
|
899
|
-
@array_api_compatible
|
900
894
|
@pytest.mark.parametrize('axis', range(-3, 3))
|
901
895
|
def test_axis_dtype(self, axis, xp):
|
902
896
|
# test that Nd-array samples are handled correctly for valid values
|
@@ -919,8 +913,7 @@ class TestMonteCarloHypothesisTest:
|
|
919
913
|
expected = stats.ttest_1samp(x, popmean=0., axis=axis)
|
920
914
|
|
921
915
|
x = xp.asarray(x, dtype=dtype)
|
922
|
-
|
923
|
-
statistic = self.get_statistic(xp_test)
|
916
|
+
statistic = self.get_statistic(xp)
|
924
917
|
rvs = self.get_rvs(stats.norm.rvs, rng, dtype=dtype, xp=xp)
|
925
918
|
|
926
919
|
res = monte_carlo_test(x, rvs, statistic, vectorized=True,
|
@@ -931,7 +924,6 @@ class TestMonteCarloHypothesisTest:
|
|
931
924
|
xp_assert_close(res.statistic, ref_statistic)
|
932
925
|
xp_assert_close(res.pvalue, ref_pvalue, atol=self.atol)
|
933
926
|
|
934
|
-
@array_api_compatible
|
935
927
|
@pytest.mark.parametrize('alternative', ("two-sided", "less", "greater"))
|
936
928
|
def test_alternative(self, alternative, xp):
|
937
929
|
# test that `alternative` is working as expected
|
@@ -941,8 +933,7 @@ class TestMonteCarloHypothesisTest:
|
|
941
933
|
ref = stats.ttest_1samp(x, 0., alternative=alternative)
|
942
934
|
|
943
935
|
x = xp.asarray(x)
|
944
|
-
|
945
|
-
statistic = self.get_statistic(xp_test)
|
936
|
+
statistic = self.get_statistic(xp)
|
946
937
|
rvs = self.get_rvs(stats.norm.rvs, rng, xp=xp)
|
947
938
|
|
948
939
|
res = monte_carlo_test(x, rvs, statistic, alternative=alternative)
|
@@ -171,9 +171,9 @@ def test_random_state(method, kwargs):
|
|
171
171
|
assert_equal(rng1.rvs(100), rng2.rvs(100))
|
172
172
|
|
173
173
|
# global seed
|
174
|
-
np.random.
|
174
|
+
rng = np.random.RandomState(123)
|
175
175
|
rng1 = Method(**kwargs)
|
176
|
-
rvs1 = rng1.rvs(100)
|
176
|
+
rvs1 = rng1.rvs(100, random_state=rng)
|
177
177
|
np.random.seed(None)
|
178
178
|
rng2 = Method(**kwargs, random_state=123)
|
179
179
|
rvs2 = rng2.rvs(100)
|
@@ -375,6 +375,7 @@ class TestQRVS:
|
|
375
375
|
@pytest.mark.parametrize('qrng', qrngs)
|
376
376
|
@pytest.mark.parametrize('size_in, size_out', sizes)
|
377
377
|
@pytest.mark.parametrize('d_in, d_out', ds)
|
378
|
+
@pytest.mark.thread_unsafe
|
378
379
|
def test_QRVS_shape_consistency(self, qrng, size_in, size_out,
|
379
380
|
d_in, d_out, method):
|
380
381
|
w32 = sys.platform == "win32" and platform.architecture()[0] == "32bit"
|
@@ -502,6 +503,7 @@ class TestTransformedDensityRejection:
|
|
502
503
|
|
503
504
|
@pytest.mark.parametrize("dist, mv_ex",
|
504
505
|
zip(dists, mvs))
|
506
|
+
@pytest.mark.thread_unsafe
|
505
507
|
def test_basic(self, dist, mv_ex):
|
506
508
|
with suppress_warnings() as sup:
|
507
509
|
# filter the warnings thrown by UNU.RAN
|
@@ -1065,6 +1067,7 @@ class TestNumericalInverseHermite:
|
|
1065
1067
|
@pytest.mark.parametrize("dist, mv_ex",
|
1066
1068
|
zip(dists, mvs))
|
1067
1069
|
@pytest.mark.parametrize("order", [3, 5])
|
1070
|
+
@pytest.mark.thread_unsafe
|
1068
1071
|
def test_basic(self, dist, mv_ex, order):
|
1069
1072
|
rng = NumericalInverseHermite(dist, order=order, random_state=42)
|
1070
1073
|
check_cont_samples(rng, dist, mv_ex)
|
@@ -1134,6 +1137,7 @@ class TestNumericalInverseHermite:
|
|
1134
1137
|
|
1135
1138
|
@pytest.mark.parametrize('rng', rngs)
|
1136
1139
|
@pytest.mark.parametrize('size_in, size_out', sizes)
|
1140
|
+
@pytest.mark.thread_unsafe
|
1137
1141
|
def test_RVS(self, rng, size_in, size_out):
|
1138
1142
|
dist = StandardNormal()
|
1139
1143
|
fni = NumericalInverseHermite(dist)
|
@@ -1356,6 +1360,7 @@ class TestSimpleRatioUniforms:
|
|
1356
1360
|
|
1357
1361
|
@pytest.mark.parametrize("dist, mv_ex",
|
1358
1362
|
zip(dists, mvs))
|
1363
|
+
@pytest.mark.thread_unsafe
|
1359
1364
|
def test_basic(self, dist, mv_ex):
|
1360
1365
|
rng = SimpleRatioUniforms(dist, mode=dist.mode, random_state=42)
|
1361
1366
|
check_cont_samples(rng, dist, mv_ex)
|
@@ -1426,8 +1431,8 @@ class TestRatioUniforms:
|
|
1426
1431
|
umax = np.sqrt(f(0))
|
1427
1432
|
gen1 = RatioUniforms(f, umax=umax, vmin=-v, vmax=v, random_state=1234)
|
1428
1433
|
r1 = gen1.rvs(10)
|
1429
|
-
np.random.
|
1430
|
-
gen2 = RatioUniforms(f, umax=umax, vmin=-v, vmax=v)
|
1434
|
+
rng = np.random.RandomState(1234)
|
1435
|
+
gen2 = RatioUniforms(f, umax=umax, vmin=-v, vmax=v, random_state=rng)
|
1431
1436
|
r2 = gen2.rvs(10)
|
1432
1437
|
assert_equal(r1, r2)
|
1433
1438
|
|