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
Binary file
|
Binary file
|
scipy/special/_ufuncs_cxx.pxd
CHANGED
@@ -84,8 +84,6 @@ cdef void *_export_nct_mean_float
|
|
84
84
|
cdef void *_export_nct_mean_double
|
85
85
|
cdef void *_export_nct_pdf_float
|
86
86
|
cdef void *_export_nct_pdf_double
|
87
|
-
cdef void *_export_nct_ppf_float
|
88
|
-
cdef void *_export_nct_ppf_double
|
89
87
|
cdef void *_export_nct_sf_float
|
90
88
|
cdef void *_export_nct_sf_double
|
91
89
|
cdef void *_export_nct_skewness_float
|
@@ -117,8 +115,6 @@ cdef void *_export_ibetac_inv_float
|
|
117
115
|
cdef void *_export_ibetac_inv_double
|
118
116
|
cdef void *_export_ibeta_inv_float
|
119
117
|
cdef void *_export_ibeta_inv_double
|
120
|
-
cdef void *_export_faddeeva_dawsn
|
121
|
-
cdef void *_export_faddeeva_dawsn_complex
|
122
118
|
cdef void *_export_fellint_RC
|
123
119
|
cdef void *_export_cellint_RC
|
124
120
|
cdef void *_export_fellint_RD
|
@@ -129,27 +125,18 @@ cdef void *_export_fellint_RG
|
|
129
125
|
cdef void *_export_cellint_RG
|
130
126
|
cdef void *_export_fellint_RJ
|
131
127
|
cdef void *_export_cellint_RJ
|
132
|
-
cdef void *_export_faddeeva_erf
|
133
|
-
cdef void *_export_faddeeva_erfc_complex
|
134
|
-
cdef void *_export_faddeeva_erfcx
|
135
|
-
cdef void *_export_faddeeva_erfcx_complex
|
136
|
-
cdef void *_export_faddeeva_erfi
|
137
|
-
cdef void *_export_faddeeva_erfi_complex
|
138
128
|
cdef void *_export_erfinv_float
|
139
129
|
cdef void *_export_erfinv_double
|
140
130
|
cdef void *_export_hyp1f1_double
|
141
|
-
cdef void *_export_faddeeva_log_ndtr
|
142
|
-
cdef void *_export_faddeeva_log_ndtr_complex
|
143
131
|
cdef void *_export_ncf_cdf_float
|
144
132
|
cdef void *_export_ncf_cdf_double
|
145
133
|
cdef void *_export_ncf_ppf_float
|
146
134
|
cdef void *_export_ncf_ppf_double
|
147
135
|
cdef void *_export_nct_cdf_float
|
148
136
|
cdef void *_export_nct_cdf_double
|
149
|
-
cdef void *
|
137
|
+
cdef void *_export_nct_ppf_float
|
138
|
+
cdef void *_export_nct_ppf_double
|
150
139
|
cdef void *_export_powm1_float
|
151
140
|
cdef void *_export_powm1_double
|
152
|
-
cdef void *_export_faddeeva_voigt_profile
|
153
|
-
cdef void *_export_faddeeva_w
|
154
141
|
cdef void *_export_wrightomega
|
155
142
|
cdef void *_export_wrightomega_real
|
scipy/special/_ufuncs_cxx.pyx
CHANGED
@@ -257,12 +257,6 @@ cdef void *_export_nct_pdf_float = <void*>_func_nct_pdf_float
|
|
257
257
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
258
258
|
cdef double _func_nct_pdf_double "nct_pdf_double"(double, double, double) noexcept nogil
|
259
259
|
cdef void *_export_nct_pdf_double = <void*>_func_nct_pdf_double
|
260
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
261
|
-
cdef float _func_nct_ppf_float "nct_ppf_float"(float, float, float) noexcept nogil
|
262
|
-
cdef void *_export_nct_ppf_float = <void*>_func_nct_ppf_float
|
263
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
264
|
-
cdef double _func_nct_ppf_double "nct_ppf_double"(double, double, double) noexcept nogil
|
265
|
-
cdef void *_export_nct_ppf_double = <void*>_func_nct_ppf_double
|
266
260
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
267
261
|
cdef float _func_nct_sf_float "nct_sf_float"(float, float, float) noexcept nogil
|
268
262
|
cdef void *_export_nct_sf_float = <void*>_func_nct_sf_float
|
@@ -356,12 +350,6 @@ cdef void *_export_ibeta_inv_float = <void*>_func_ibeta_inv_float
|
|
356
350
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
357
351
|
cdef double _func_ibeta_inv_double "ibeta_inv_double"(double, double, double) noexcept nogil
|
358
352
|
cdef void *_export_ibeta_inv_double = <void*>_func_ibeta_inv_double
|
359
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
360
|
-
cdef double _func_faddeeva_dawsn "faddeeva_dawsn"(double) noexcept nogil
|
361
|
-
cdef void *_export_faddeeva_dawsn = <void*>_func_faddeeva_dawsn
|
362
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
363
|
-
cdef double complex _func_faddeeva_dawsn_complex "faddeeva_dawsn_complex"(double complex) noexcept nogil
|
364
|
-
cdef void *_export_faddeeva_dawsn_complex = <void*>_func_faddeeva_dawsn_complex
|
365
353
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
366
354
|
cdef double _func_fellint_RC "fellint_RC"(double, double) noexcept nogil
|
367
355
|
cdef void *_export_fellint_RC = <void*>_func_fellint_RC
|
@@ -392,24 +380,6 @@ cdef void *_export_fellint_RJ = <void*>_func_fellint_RJ
|
|
392
380
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
393
381
|
cdef double complex _func_cellint_RJ "cellint_RJ"(double complex, double complex, double complex, double complex) noexcept nogil
|
394
382
|
cdef void *_export_cellint_RJ = <void*>_func_cellint_RJ
|
395
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
396
|
-
cdef double complex _func_faddeeva_erf "faddeeva_erf"(double complex) noexcept nogil
|
397
|
-
cdef void *_export_faddeeva_erf = <void*>_func_faddeeva_erf
|
398
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
399
|
-
cdef double complex _func_faddeeva_erfc_complex "faddeeva_erfc_complex"(double complex) noexcept nogil
|
400
|
-
cdef void *_export_faddeeva_erfc_complex = <void*>_func_faddeeva_erfc_complex
|
401
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
402
|
-
cdef double _func_faddeeva_erfcx "faddeeva_erfcx"(double) noexcept nogil
|
403
|
-
cdef void *_export_faddeeva_erfcx = <void*>_func_faddeeva_erfcx
|
404
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
405
|
-
cdef double complex _func_faddeeva_erfcx_complex "faddeeva_erfcx_complex"(double complex) noexcept nogil
|
406
|
-
cdef void *_export_faddeeva_erfcx_complex = <void*>_func_faddeeva_erfcx_complex
|
407
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
408
|
-
cdef double _func_faddeeva_erfi "faddeeva_erfi"(double) noexcept nogil
|
409
|
-
cdef void *_export_faddeeva_erfi = <void*>_func_faddeeva_erfi
|
410
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
411
|
-
cdef double complex _func_faddeeva_erfi_complex "faddeeva_erfi_complex"(double complex) noexcept nogil
|
412
|
-
cdef void *_export_faddeeva_erfi_complex = <void*>_func_faddeeva_erfi_complex
|
413
383
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
414
384
|
cdef float _func_erfinv_float "erfinv_float"(float) noexcept nogil
|
415
385
|
cdef void *_export_erfinv_float = <void*>_func_erfinv_float
|
@@ -419,12 +389,6 @@ cdef void *_export_erfinv_double = <void*>_func_erfinv_double
|
|
419
389
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
420
390
|
cdef double _func_hyp1f1_double "hyp1f1_double"(double, double, double) noexcept nogil
|
421
391
|
cdef void *_export_hyp1f1_double = <void*>_func_hyp1f1_double
|
422
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
423
|
-
cdef double _func_faddeeva_log_ndtr "faddeeva_log_ndtr"(double) noexcept nogil
|
424
|
-
cdef void *_export_faddeeva_log_ndtr = <void*>_func_faddeeva_log_ndtr
|
425
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
426
|
-
cdef double complex _func_faddeeva_log_ndtr_complex "faddeeva_log_ndtr_complex"(double complex) noexcept nogil
|
427
|
-
cdef void *_export_faddeeva_log_ndtr_complex = <void*>_func_faddeeva_log_ndtr_complex
|
428
392
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
429
393
|
cdef float _func_ncf_cdf_float "ncf_cdf_float"(float, float, float, float) noexcept nogil
|
430
394
|
cdef void *_export_ncf_cdf_float = <void*>_func_ncf_cdf_float
|
@@ -444,20 +408,17 @@ cdef extern from r"_ufuncs_cxx_defs.h":
|
|
444
408
|
cdef double _func_nct_cdf_double "nct_cdf_double"(double, double, double) noexcept nogil
|
445
409
|
cdef void *_export_nct_cdf_double = <void*>_func_nct_cdf_double
|
446
410
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
447
|
-
cdef
|
448
|
-
cdef void *
|
411
|
+
cdef float _func_nct_ppf_float "nct_ppf_float"(float, float, float) noexcept nogil
|
412
|
+
cdef void *_export_nct_ppf_float = <void*>_func_nct_ppf_float
|
413
|
+
cdef extern from r"_ufuncs_cxx_defs.h":
|
414
|
+
cdef double _func_nct_ppf_double "nct_ppf_double"(double, double, double) noexcept nogil
|
415
|
+
cdef void *_export_nct_ppf_double = <void*>_func_nct_ppf_double
|
449
416
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
450
417
|
cdef float _func_powm1_float "powm1_float"(float, float) noexcept nogil
|
451
418
|
cdef void *_export_powm1_float = <void*>_func_powm1_float
|
452
419
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
453
420
|
cdef double _func_powm1_double "powm1_double"(double, double) noexcept nogil
|
454
421
|
cdef void *_export_powm1_double = <void*>_func_powm1_double
|
455
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
456
|
-
cdef double _func_faddeeva_voigt_profile "faddeeva_voigt_profile"(double, double, double) noexcept nogil
|
457
|
-
cdef void *_export_faddeeva_voigt_profile = <void*>_func_faddeeva_voigt_profile
|
458
|
-
cdef extern from r"_ufuncs_cxx_defs.h":
|
459
|
-
cdef double complex _func_faddeeva_w "faddeeva_w"(double complex) noexcept nogil
|
460
|
-
cdef void *_export_faddeeva_w = <void*>_func_faddeeva_w
|
461
422
|
cdef extern from r"_ufuncs_cxx_defs.h":
|
462
423
|
cdef double complex _func_wrightomega "wrightomega"(double complex) noexcept nogil
|
463
424
|
cdef void *_export_wrightomega = <void*>_func_wrightomega
|
scipy/special/_ufuncs_cxx_defs.h
CHANGED
@@ -85,8 +85,6 @@ npy_float nct_mean_float(npy_float, npy_float);
|
|
85
85
|
npy_double nct_mean_double(npy_double, npy_double);
|
86
86
|
npy_float nct_pdf_float(npy_float, npy_float, npy_float);
|
87
87
|
npy_double nct_pdf_double(npy_double, npy_double, npy_double);
|
88
|
-
npy_float nct_ppf_float(npy_float, npy_float, npy_float);
|
89
|
-
npy_double nct_ppf_double(npy_double, npy_double, npy_double);
|
90
88
|
npy_float nct_sf_float(npy_float, npy_float, npy_float);
|
91
89
|
npy_double nct_sf_double(npy_double, npy_double, npy_double);
|
92
90
|
npy_float nct_skewness_float(npy_float, npy_float);
|
@@ -119,9 +117,6 @@ npy_float ibetac_inv_float(npy_float, npy_float, npy_float);
|
|
119
117
|
npy_double ibetac_inv_double(npy_double, npy_double, npy_double);
|
120
118
|
npy_float ibeta_inv_float(npy_float, npy_float, npy_float);
|
121
119
|
npy_double ibeta_inv_double(npy_double, npy_double, npy_double);
|
122
|
-
#include "_faddeeva.h"
|
123
|
-
npy_double faddeeva_dawsn(npy_double);
|
124
|
-
npy_cdouble faddeeva_dawsn_complex(npy_cdouble);
|
125
120
|
#include "ellint_carlson_wrap.hh"
|
126
121
|
npy_double fellint_RC(npy_double, npy_double);
|
127
122
|
npy_cdouble cellint_RC(npy_cdouble, npy_cdouble);
|
@@ -133,28 +128,19 @@ npy_double fellint_RG(npy_double, npy_double, npy_double);
|
|
133
128
|
npy_cdouble cellint_RG(npy_cdouble, npy_cdouble, npy_cdouble);
|
134
129
|
npy_double fellint_RJ(npy_double, npy_double, npy_double, npy_double);
|
135
130
|
npy_cdouble cellint_RJ(npy_cdouble, npy_cdouble, npy_cdouble, npy_cdouble);
|
136
|
-
npy_cdouble faddeeva_erf(npy_cdouble);
|
137
|
-
npy_cdouble faddeeva_erfc_complex(npy_cdouble);
|
138
|
-
npy_double faddeeva_erfcx(npy_double);
|
139
|
-
npy_cdouble faddeeva_erfcx_complex(npy_cdouble);
|
140
|
-
npy_double faddeeva_erfi(npy_double);
|
141
|
-
npy_cdouble faddeeva_erfi_complex(npy_cdouble);
|
142
131
|
npy_float erfinv_float(npy_float);
|
143
132
|
npy_double erfinv_double(npy_double);
|
144
133
|
npy_double hyp1f1_double(npy_double, npy_double, npy_double);
|
145
|
-
npy_double faddeeva_log_ndtr(npy_double);
|
146
|
-
npy_cdouble faddeeva_log_ndtr_complex(npy_cdouble);
|
147
134
|
npy_float ncf_cdf_float(npy_float, npy_float, npy_float, npy_float);
|
148
135
|
npy_double ncf_cdf_double(npy_double, npy_double, npy_double, npy_double);
|
149
136
|
npy_float ncf_ppf_float(npy_float, npy_float, npy_float, npy_float);
|
150
137
|
npy_double ncf_ppf_double(npy_double, npy_double, npy_double, npy_double);
|
151
138
|
npy_float nct_cdf_float(npy_float, npy_float, npy_float);
|
152
139
|
npy_double nct_cdf_double(npy_double, npy_double, npy_double);
|
153
|
-
|
140
|
+
npy_float nct_ppf_float(npy_float, npy_float, npy_float);
|
141
|
+
npy_double nct_ppf_double(npy_double, npy_double, npy_double);
|
154
142
|
npy_float powm1_float(npy_float, npy_float);
|
155
143
|
npy_double powm1_double(npy_double, npy_double);
|
156
|
-
npy_double faddeeva_voigt_profile(npy_double, npy_double, npy_double);
|
157
|
-
npy_cdouble faddeeva_w(npy_cdouble);
|
158
144
|
#include "_wright.h"
|
159
145
|
npy_cdouble wrightomega(npy_cdouble);
|
160
146
|
npy_double wrightomega_real(npy_double);
|
scipy/special/_ufuncs_defs.h
CHANGED
@@ -10,7 +10,6 @@ npy_double xsf_kolmogci(npy_double);
|
|
10
10
|
npy_double xsf_kolmogp(npy_double);
|
11
11
|
npy_double cephes_lanczos_sum_expg_scaled(npy_double);
|
12
12
|
npy_double cephes_lgam1p(npy_double);
|
13
|
-
npy_double cephes_log1pmx(npy_double);
|
14
13
|
npy_double cephes_smirnovc_wrap(npy_intp, npy_double);
|
15
14
|
npy_double cephes_smirnovci_wrap(npy_intp, npy_double);
|
16
15
|
npy_double cephes_smirnovp_wrap(npy_intp, npy_double);
|
@@ -23,12 +22,7 @@ npy_double cephes_bdtri_wrap(npy_double, npy_intp, npy_double);
|
|
23
22
|
npy_double xsf_chdtr(npy_double, npy_double);
|
24
23
|
npy_double xsf_chdtrc(npy_double, npy_double);
|
25
24
|
npy_double xsf_chdtri(npy_double, npy_double);
|
26
|
-
npy_double cephes_erf(npy_double);
|
27
|
-
npy_double cephes_erfc(npy_double);
|
28
25
|
npy_double cephes_erfcinv(npy_double);
|
29
|
-
npy_double cephes_exp10(npy_double);
|
30
|
-
npy_double cephes_exp2(npy_double);
|
31
|
-
npy_double cephes_expm1(npy_double);
|
32
26
|
npy_double cephes_expn_wrap(npy_intp, npy_double);
|
33
27
|
npy_double xsf_fdtr(npy_double, npy_double, npy_double);
|
34
28
|
npy_double xsf_fdtrc(npy_double, npy_double, npy_double);
|
@@ -40,12 +34,10 @@ npy_cdouble chyp1f1_wrap(npy_double, npy_double, npy_cdouble);
|
|
40
34
|
npy_double special_cyl_bessel_k_int(npy_intp, npy_double);
|
41
35
|
npy_double xsf_kolmogi(npy_double);
|
42
36
|
npy_double xsf_kolmogorov(npy_double);
|
43
|
-
npy_double cephes_log1p(npy_double);
|
44
37
|
npy_double pmv_wrap(npy_double, npy_double, npy_double);
|
45
38
|
npy_double cephes_nbdtr_wrap(npy_intp, npy_intp, npy_double);
|
46
39
|
npy_double cephes_nbdtrc_wrap(npy_intp, npy_intp, npy_double);
|
47
40
|
npy_double cephes_nbdtri_wrap(npy_intp, npy_intp, npy_double);
|
48
|
-
npy_double xsf_ndtr(npy_double);
|
49
41
|
npy_double xsf_ndtri(npy_double);
|
50
42
|
npy_double xsf_owens_t(npy_double, npy_double);
|
51
43
|
npy_double xsf_pdtr(npy_double, npy_double);
|
Binary file
|
Binary file
|
scipy/special/cython_special.pxd
CHANGED
@@ -196,7 +196,7 @@ cpdef double ncfdtrinc(double x0, double x1, double x2, double x3) noexcept nogi
|
|
196
196
|
cpdef df_number_t nctdtr(df_number_t x0, df_number_t x1, df_number_t x2) noexcept nogil
|
197
197
|
cpdef double nctdtridf(double x0, double x1, double x2) noexcept nogil
|
198
198
|
cpdef double nctdtrinc(double x0, double x1, double x2) noexcept nogil
|
199
|
-
cpdef
|
199
|
+
cpdef df_number_t nctdtrit(df_number_t x0, df_number_t x1, df_number_t x2) noexcept nogil
|
200
200
|
cpdef Dd_number_t ndtr(Dd_number_t x0) noexcept nogil
|
201
201
|
cpdef double ndtri(double x0) noexcept nogil
|
202
202
|
cpdef double nrdtrimn(double x0, double x1, double x2) noexcept nogil
|
@@ -10,10 +10,17 @@ if not cy.version().version_compare('>=3.0.8')
|
|
10
10
|
error('tests requires Cython >= 3.0.8')
|
11
11
|
endif
|
12
12
|
|
13
|
+
cython_args = []
|
14
|
+
if cy.version().version_compare('>=3.1.0')
|
15
|
+
cython_args += ['-Xfreethreading_compatible=True']
|
16
|
+
endif
|
17
|
+
|
13
18
|
py3.extension_module(
|
14
19
|
'extending',
|
15
20
|
'extending.pyx',
|
16
21
|
install: false,
|
22
|
+
cython_args: cython_args,
|
23
|
+
c_args: ['-DCYTHON_CCOMPLEX=0'] # see gh-18975 for why we need this
|
17
24
|
)
|
18
25
|
|
19
26
|
extending_cpp = fs.copyfile('extending.pyx', 'extending_cpp.pyx')
|
@@ -21,5 +28,7 @@ py3.extension_module(
|
|
21
28
|
'extending_cpp',
|
22
29
|
extending_cpp,
|
23
30
|
install: false,
|
24
|
-
override_options : ['cython_language=cpp']
|
31
|
+
override_options : ['cython_language=cpp'],
|
32
|
+
cython_args: cython_args,
|
33
|
+
cpp_args: ['-DCYTHON_CCOMPLEX=0']
|
25
34
|
)
|
@@ -1442,14 +1442,79 @@ class TestBetaInc:
|
|
1442
1442
|
|
1443
1443
|
@pytest.mark.parametrize('func', [special.betainc, special.betaincinv,
|
1444
1444
|
special.betaincc, special.betainccinv])
|
1445
|
-
@pytest.mark.parametrize('args', [(-1.0, 2, 0.5), (
|
1446
|
-
(1.5, -2.0, 0.5), (1.5, 0, 0.5),
|
1445
|
+
@pytest.mark.parametrize('args', [(-1.0, 2, 0.5), (1.5, -2.0, 0.5),
|
1447
1446
|
(1.5, 2.0, -0.3), (1.5, 2.0, 1.1)])
|
1448
1447
|
def test_betainc_domain_errors(self, func, args):
|
1449
1448
|
with special.errstate(domain='raise'):
|
1450
1449
|
with pytest.raises(special.SpecialFunctionError, match='domain'):
|
1451
1450
|
special.betainc(*args)
|
1452
1451
|
|
1452
|
+
@pytest.mark.parametrize(
|
1453
|
+
"args,expected",
|
1454
|
+
[
|
1455
|
+
((0.0, 0.0, 0.0), np.nan),
|
1456
|
+
((0.0, 0.0, 0.5), np.nan),
|
1457
|
+
((0.0, 0.0, 1.0), np.nan),
|
1458
|
+
((np.inf, np.inf, 0.0), np.nan),
|
1459
|
+
((np.inf, np.inf, 0.5), np.nan),
|
1460
|
+
((np.inf, np.inf, 1.0), np.nan),
|
1461
|
+
((0.0, 1.0, 0.0), 0.0),
|
1462
|
+
((0.0, 1.0, 0.5), 1.0),
|
1463
|
+
((0.0, 1.0, 1.0), 1.0),
|
1464
|
+
((1.0, 0.0, 0.0), 0.0),
|
1465
|
+
((1.0, 0.0, 0.5), 0.0),
|
1466
|
+
((1.0, 0.0, 1.0), 1.0),
|
1467
|
+
((0.0, np.inf, 0.0), 0.0),
|
1468
|
+
((0.0, np.inf, 0.5), 1.0),
|
1469
|
+
((0.0, np.inf, 1.0), 1.0),
|
1470
|
+
((np.inf, 0.0, 0.0), 0.0),
|
1471
|
+
((np.inf, 0.0, 0.5), 0.0),
|
1472
|
+
((np.inf, 0.0, 1.0), 1.0),
|
1473
|
+
((1.0, np.inf, 0.0), 0.0),
|
1474
|
+
((1.0, np.inf, 0.5), 1.0),
|
1475
|
+
((1.0, np.inf, 1.0), 1.0),
|
1476
|
+
((np.inf, 1.0, 0.0), 0.0),
|
1477
|
+
((np.inf, 1.0, 0.5), 0.0),
|
1478
|
+
((np.inf, 1.0, 1.0), 1.0),
|
1479
|
+
]
|
1480
|
+
)
|
1481
|
+
def test_betainc_edge_cases(self, args, expected):
|
1482
|
+
observed = special.betainc(*args)
|
1483
|
+
assert_equal(observed, expected)
|
1484
|
+
|
1485
|
+
@pytest.mark.parametrize(
|
1486
|
+
"args,expected",
|
1487
|
+
[
|
1488
|
+
((0.0, 0.0, 0.0), np.nan),
|
1489
|
+
((0.0, 0.0, 0.5), np.nan),
|
1490
|
+
((0.0, 0.0, 1.0), np.nan),
|
1491
|
+
((np.inf, np.inf, 0.0), np.nan),
|
1492
|
+
((np.inf, np.inf, 0.5), np.nan),
|
1493
|
+
((np.inf, np.inf, 1.0), np.nan),
|
1494
|
+
((0.0, 1.0, 0.0), 1.0),
|
1495
|
+
((0.0, 1.0, 0.5), 0.0),
|
1496
|
+
((0.0, 1.0, 1.0), 0.0),
|
1497
|
+
((1.0, 0.0, 0.0), 1.0),
|
1498
|
+
((1.0, 0.0, 0.5), 1.0),
|
1499
|
+
((1.0, 0.0, 1.0), 0.0),
|
1500
|
+
((0.0, np.inf, 0.0), 1.0),
|
1501
|
+
((0.0, np.inf, 0.5), 0.0),
|
1502
|
+
((0.0, np.inf, 1.0), 0.0),
|
1503
|
+
((np.inf, 0.0, 0.0), 1.0),
|
1504
|
+
((np.inf, 0.0, 0.5), 1.0),
|
1505
|
+
((np.inf, 0.0, 1.0), 0.0),
|
1506
|
+
((1.0, np.inf, 0.0), 1.0),
|
1507
|
+
((1.0, np.inf, 0.5), 0.0),
|
1508
|
+
((1.0, np.inf, 1.0), 0.0),
|
1509
|
+
((np.inf, 1.0, 0.0), 1.0),
|
1510
|
+
((np.inf, 1.0, 0.5), 1.0),
|
1511
|
+
((np.inf, 1.0, 1.0), 0.0),
|
1512
|
+
]
|
1513
|
+
)
|
1514
|
+
def test_betaincc_edge_cases(self, args, expected):
|
1515
|
+
observed = special.betaincc(*args)
|
1516
|
+
assert_equal(observed, expected)
|
1517
|
+
|
1453
1518
|
@pytest.mark.parametrize('dtype', [np.float32, np.float64])
|
1454
1519
|
def test_gh21426(self, dtype):
|
1455
1520
|
# Test for gh-21426: betaincinv must not return NaN
|
@@ -1492,10 +1557,13 @@ class TestCombinatorics:
|
|
1492
1557
|
assert_allclose(special.comb([2, -1, 2, 10], [3, 3, -1, 3]), [0., 0., 0., 120.])
|
1493
1558
|
|
1494
1559
|
@pytest.mark.thread_unsafe
|
1495
|
-
def
|
1560
|
+
def test_comb_exact_non_int_error(self):
|
1496
1561
|
msg = "`exact=True`"
|
1497
|
-
with pytest.
|
1562
|
+
with pytest.raises(ValueError, match=msg):
|
1498
1563
|
special.comb(3.4, 4, exact=True)
|
1564
|
+
with pytest.raises(ValueError, match=msg):
|
1565
|
+
special.comb(3, 4.4, exact=True)
|
1566
|
+
|
1499
1567
|
|
1500
1568
|
def test_perm(self):
|
1501
1569
|
assert_allclose(special.perm([10, 10], [3, 4]), [720., 5040.])
|
@@ -1515,17 +1583,12 @@ class TestCombinatorics:
|
|
1515
1583
|
with pytest.raises(ValueError, match="scalar integers"):
|
1516
1584
|
special.perm([1, 2], [4, 5], exact=True)
|
1517
1585
|
|
1518
|
-
|
1519
|
-
# deprecated and will raise an error in SciPy 1.16.0
|
1520
|
-
with pytest.deprecated_call(match="Non-integer"):
|
1586
|
+
with pytest.raises(ValueError, match="Non-integer"):
|
1521
1587
|
special.perm(4.6, 6, exact=True)
|
1522
|
-
with pytest.
|
1588
|
+
with pytest.raises(ValueError, match="Non-integer"):
|
1523
1589
|
special.perm(-4.6, 3, exact=True)
|
1524
|
-
with pytest.
|
1590
|
+
with pytest.raises(ValueError, match="Non-integer"):
|
1525
1591
|
special.perm(4, -3.9, exact=True)
|
1526
|
-
|
1527
|
-
# Non-integral scalars which aren't included in the cases above an raise an
|
1528
|
-
# error directly without deprecation as this code never worked
|
1529
1592
|
with pytest.raises(ValueError, match="Non-integer"):
|
1530
1593
|
special.perm(6.0, 4.6, exact=True)
|
1531
1594
|
|
@@ -2353,6 +2416,7 @@ class TestFactorialFunctions:
|
|
2353
2416
|
assert_func(special.factorialk(n, 3, exact=exact),
|
2354
2417
|
np.array(exp_nucleus[3], ndmin=level))
|
2355
2418
|
|
2419
|
+
@pytest.mark.fail_slow(5)
|
2356
2420
|
@pytest.mark.parametrize("dtype", [np.uint8, np.uint16, np.uint32, np.uint64])
|
2357
2421
|
@pytest.mark.parametrize("exact,extend",
|
2358
2422
|
[(True, "zero"), (False, "zero"), (False, "complex")])
|
@@ -2366,10 +2430,38 @@ class TestFactorialFunctions:
|
|
2366
2430
|
assert_func(special.factorial2(n, **kw), special.factorial2(n_ref, **kw))
|
2367
2431
|
assert_func(special.factorialk(n, k=3, **kw),
|
2368
2432
|
special.factorialk(n_ref, k=3, **kw))
|
2433
|
+
def _check_inf(n):
|
2434
|
+
# produce inf of same type/dimension
|
2435
|
+
with suppress_warnings() as sup:
|
2436
|
+
sup.filter(RuntimeWarning)
|
2437
|
+
shaped_inf = n / 0
|
2438
|
+
assert_func(special.factorial(n, **kw), shaped_inf)
|
2439
|
+
assert_func(special.factorial2(n, **kw), shaped_inf)
|
2440
|
+
assert_func(special.factorialk(n, k=3, **kw), shaped_inf)
|
2441
|
+
|
2369
2442
|
_check(dtype(0))
|
2370
2443
|
_check(dtype(1))
|
2371
2444
|
_check(np.array(0, dtype=dtype))
|
2372
2445
|
_check(np.array([0, 1], dtype=dtype))
|
2446
|
+
# test that maximal uint values work as well
|
2447
|
+
N = dtype(np.iinfo(dtype).max)
|
2448
|
+
# TODO: cannot use N itself yet; factorial uses `gamma(N+1)` resp. `(hi+lo)//2`
|
2449
|
+
if dtype == np.uint64:
|
2450
|
+
if exact:
|
2451
|
+
# avoid attempting huge calculation
|
2452
|
+
pass
|
2453
|
+
elif np.lib.NumpyVersion(np.__version__) >= "2.0.0":
|
2454
|
+
# N does not fit into int64 --> cannot use _check
|
2455
|
+
_check_inf(dtype(N-1))
|
2456
|
+
_check_inf(np.array(N-1, dtype=dtype))
|
2457
|
+
_check_inf(np.array([N-1], dtype=dtype))
|
2458
|
+
elif dtype in [np.uint8, np.uint16] or not exact:
|
2459
|
+
# factorial(65535, exact=True) has 287189 digits and is calculated almost
|
2460
|
+
# instantaneously on modern hardware; however, dtypes bigger than uint16
|
2461
|
+
# would blow up runtime and memory consumption for exact=True
|
2462
|
+
_check(N-1)
|
2463
|
+
_check(np.array(N-1, dtype=dtype))
|
2464
|
+
_check(np.array([N-2, N-1], dtype=dtype))
|
2373
2465
|
|
2374
2466
|
# note that n=170 is the last integer such that factorial(n) fits float64
|
2375
2467
|
@pytest.mark.parametrize('n', range(30, 180, 10))
|
@@ -2965,10 +3057,10 @@ class TestGamma:
|
|
2965
3057
|
pts = [0.25,
|
2966
3058
|
np.nextafter(0.25, 0), 0.25 - 1e-12,
|
2967
3059
|
np.nextafter(0.25, 1), 0.25 + 1e-12]
|
2968
|
-
for
|
2969
|
-
y = special.gammaincinv(.4,
|
3060
|
+
for pt in pts:
|
3061
|
+
y = special.gammaincinv(.4, pt)
|
2970
3062
|
x = special.gammainc(0.4, y)
|
2971
|
-
assert_allclose(x,
|
3063
|
+
assert_allclose(x, pt, rtol=1e-12)
|
2972
3064
|
|
2973
3065
|
def test_rgamma(self):
|
2974
3066
|
rgam = special.rgamma(8)
|
@@ -3241,7 +3333,7 @@ class TestHyper:
|
|
3241
3333
|
]
|
3242
3334
|
for i, (a, b, c, x, v) in enumerate(values):
|
3243
3335
|
cv = special.hyp2f1(a, b, c, x)
|
3244
|
-
assert_almost_equal(cv, v, 8, err_msg='test
|
3336
|
+
assert_almost_equal(cv, v, 8, err_msg=f'test #{i}')
|
3245
3337
|
|
3246
3338
|
def test_hyperu(self):
|
3247
3339
|
val1 = special.hyperu(1,0.1,100)
|
@@ -3307,7 +3399,7 @@ class TestBessel:
|
|
3307
3399
|
]
|
3308
3400
|
for i, (v, x, y) in enumerate(values):
|
3309
3401
|
yc = special.jv(v, x)
|
3310
|
-
assert_almost_equal(yc, y, 8, err_msg='test
|
3402
|
+
assert_almost_equal(yc, y, 8, err_msg=f'test #{i}')
|
3311
3403
|
|
3312
3404
|
def test_negv_jve(self):
|
3313
3405
|
assert_almost_equal(special.jve(-3,2), -special.jve(3,2), 14)
|
@@ -3379,7 +3471,7 @@ class TestBessel:
|
|
3379
3471
|
elif tt == 1:
|
3380
3472
|
assert_allclose(jnp(nn, zz), 0, atol=1e-6)
|
3381
3473
|
else:
|
3382
|
-
raise AssertionError("Invalid t return for nt
|
3474
|
+
raise AssertionError(f"Invalid t return for nt={nt}")
|
3383
3475
|
|
3384
3476
|
def test_jnp_zeros(self):
|
3385
3477
|
jnp = special.jnp_zeros(1,5)
|
@@ -3799,7 +3891,7 @@ class TestBessel:
|
|
3799
3891
|
]
|
3800
3892
|
for i, (x, v) in enumerate(values):
|
3801
3893
|
cv = special.i0(x) * exp(-x)
|
3802
|
-
assert_almost_equal(cv, v, 8, err_msg='test
|
3894
|
+
assert_almost_equal(cv, v, 8, err_msg=f'test #{i}')
|
3803
3895
|
|
3804
3896
|
def test_i0e(self):
|
3805
3897
|
oize = special.i0e(.1)
|
@@ -3817,7 +3909,7 @@ class TestBessel:
|
|
3817
3909
|
]
|
3818
3910
|
for i, (x, v) in enumerate(values):
|
3819
3911
|
cv = special.i1(x) * exp(-x)
|
3820
|
-
assert_almost_equal(cv, v, 8, err_msg='test
|
3912
|
+
assert_almost_equal(cv, v, 8, err_msg=f'test #{i}')
|
3821
3913
|
|
3822
3914
|
def test_i1e(self):
|
3823
3915
|
oi1e = special.i1e(.1)
|
@@ -4224,6 +4316,47 @@ def test_ch2_inf():
|
|
4224
4316
|
assert_equal(special.chdtr(0.7,np.inf), 1.0)
|
4225
4317
|
|
4226
4318
|
|
4319
|
+
@pytest.mark.parametrize("x", [-np.inf, -1.0, -0.0, 0.0, np.inf, np.nan])
|
4320
|
+
def test_chi2_v_nan(x):
|
4321
|
+
assert np.isnan(special.chdtr(np.nan, x))
|
4322
|
+
|
4323
|
+
|
4324
|
+
@pytest.mark.parametrize("v", [-np.inf, -1.0, -0.0, 0.0, np.inf, np.nan])
|
4325
|
+
def test_chi2_x_nan(v):
|
4326
|
+
assert np.isnan(special.chdtr(v, np.nan))
|
4327
|
+
|
4328
|
+
|
4329
|
+
@pytest.mark.parametrize("x", [-np.inf, -1.0, -0.0, 0.0, np.inf, np.nan])
|
4330
|
+
def test_chi2c_v_nan(x):
|
4331
|
+
assert np.isnan(special.chdtrc(np.nan, x))
|
4332
|
+
|
4333
|
+
|
4334
|
+
@pytest.mark.parametrize("v", [-np.inf, -1.0, -0.0, 0.0, np.inf, np.nan])
|
4335
|
+
def test_chi2c_x_nan(v):
|
4336
|
+
assert np.isnan(special.chdtrc(v, np.nan))
|
4337
|
+
|
4338
|
+
|
4339
|
+
def test_chi2_edgecases_gh20972():
|
4340
|
+
# Tests that a variety of edgecases for chi square distribution functions
|
4341
|
+
# correctly return NaN when and only when they are supposed to, when
|
4342
|
+
# computed through different related ufuncs. See gh-20972.
|
4343
|
+
v = np.asarray([-0.01, 0, 0.01, 1, np.inf])[:, np.newaxis]
|
4344
|
+
x = np.asarray([-np.inf, -0.01, 0, 0.01, np.inf])
|
4345
|
+
|
4346
|
+
# Check that `gammainc` is NaN when it should be and finite otherwise
|
4347
|
+
ref = special.gammainc(v / 2, x / 2)
|
4348
|
+
mask = (x < 0) | (v < 0) | (x == 0) & (v == 0) | np.isinf(v) & np.isinf(x)
|
4349
|
+
assert np.all(np.isnan(ref[mask]))
|
4350
|
+
assert np.all(np.isfinite(ref[~mask]))
|
4351
|
+
|
4352
|
+
# Use `gammainc` as a reference for the rest
|
4353
|
+
assert_allclose(special.chdtr(v, x), ref)
|
4354
|
+
assert_allclose(special.gdtr(1, v / 2, x / 2), ref)
|
4355
|
+
assert_allclose(1 - special.gammaincc(v / 2, x / 2), ref)
|
4356
|
+
assert_allclose(1 - special.chdtrc(v, x), ref)
|
4357
|
+
assert_allclose(1 - special.gdtrc(1, v / 2, x / 2), ref)
|
4358
|
+
|
4359
|
+
|
4227
4360
|
def test_chi2c_smalldf():
|
4228
4361
|
assert_almost_equal(special.chdtrc(0.6,3), 1-0.957890536704110)
|
4229
4362
|
|
@@ -3,14 +3,12 @@ Test cdflib functions versus mpmath, if available.
|
|
3
3
|
|
4
4
|
The following functions still need tests:
|
5
5
|
|
6
|
-
- ncfdtri
|
7
6
|
- ncfdtridfn
|
8
7
|
- ncfdtridfd
|
9
8
|
- ncfdtrinc
|
10
9
|
- nbdtrik
|
11
10
|
- nbdtrin
|
12
11
|
- pdtrik
|
13
|
-
- nctdtrit
|
14
12
|
- nctdtridf
|
15
13
|
- nctdtrinc
|
16
14
|
|
@@ -492,7 +490,7 @@ def test_bdtrik_nbdtrik_inf():
|
|
492
490
|
|
493
491
|
|
494
492
|
@pytest.mark.parametrize(
|
495
|
-
"dfn,dfd,nc,f,
|
493
|
+
"dfn,dfd,nc,f,expected_cdf",
|
496
494
|
[[100.0, 0.1, 0.1, 100.0, 0.29787396410092676],
|
497
495
|
[100.0, 100.0, 0.01, 0.1, 4.4344737598690424e-26],
|
498
496
|
[100.0, 0.01, 0.1, 0.01, 0.002848616633080384],
|
@@ -506,7 +504,7 @@ def test_bdtrik_nbdtrik_inf():
|
|
506
504
|
[100.0, 100.0, 0.1, 10.0, 1.0],
|
507
505
|
[1.0, 0.1, 100.0, 10.0, 0.02926064279680897]]
|
508
506
|
)
|
509
|
-
def
|
507
|
+
def test_ncfdtr_ncfdtri(dfn, dfd, nc, f, expected_cdf):
|
510
508
|
# Reference values computed with mpmath with the following script
|
511
509
|
#
|
512
510
|
# import numpy as np
|
@@ -549,10 +547,26 @@ def test_ncfdtr(dfn, dfd, nc, f, expected):
|
|
549
547
|
# rng = np.random.default_rng(1234)
|
550
548
|
# sample_idx = rng.choice(len(re), replace=False, size=12)
|
551
549
|
# cases = np.array(cases)[sample_idx].tolist()
|
552
|
-
assert_allclose(sp.ncfdtr(dfn, dfd, nc, f),
|
550
|
+
assert_allclose(sp.ncfdtr(dfn, dfd, nc, f), expected_cdf, rtol=1e-13, atol=0)
|
551
|
+
# testing tails where the CDF reaches 0 or 1 does not make sense for inverses
|
552
|
+
# of a CDF as they are not bijective in these regions
|
553
|
+
if 0 < expected_cdf < 1:
|
554
|
+
assert_allclose(sp.ncfdtri(dfn, dfd, nc, expected_cdf), f, rtol=5e-11)
|
553
555
|
|
556
|
+
@pytest.mark.parametrize(
|
557
|
+
"args",
|
558
|
+
[(-1.0, 0.1, 0.1, 0.5),
|
559
|
+
(1, -1.0, 0.1, 0.5),
|
560
|
+
(1, 1, -1.0, 0.5),
|
561
|
+
(1, 1, 1, 100),
|
562
|
+
(1, 1, 1, -1)]
|
563
|
+
)
|
564
|
+
def test_ncfdtri_domain_error(args):
|
565
|
+
with sp.errstate(domain="raise"):
|
566
|
+
with pytest.raises(sp.SpecialFunctionError, match="domain"):
|
567
|
+
sp.ncfdtri(*args)
|
554
568
|
|
555
|
-
class
|
569
|
+
class TestNoncentralTFunctions:
|
556
570
|
|
557
571
|
# Reference values computed with mpmath with the following script
|
558
572
|
# Formula from:
|
@@ -592,7 +606,7 @@ class TestNctdtr:
|
|
592
606
|
# result = mp.one - f(df, -nc, x)
|
593
607
|
# return float(result)
|
594
608
|
|
595
|
-
@pytest.mark.parametrize("df, nc, x,
|
609
|
+
@pytest.mark.parametrize("df, nc, x, expected_cdf", [
|
596
610
|
(0.98, -3.8, 0.0015, 0.9999279987514815),
|
597
611
|
(0.98, -3.8, 0.15, 0.9999528361700505),
|
598
612
|
(0.98, -3.8, 1.5, 0.9999908823016942),
|
@@ -660,13 +674,13 @@ class TestNctdtr:
|
|
660
674
|
reason="Bug in underlying Boost math implementation")),
|
661
675
|
(980, 38, 15, 5.407535300713606e-105)
|
662
676
|
])
|
663
|
-
def test_gh19896(self, df, nc, x,
|
677
|
+
def test_gh19896(self, df, nc, x, expected_cdf):
|
664
678
|
# test that gh-19896 is resolved.
|
665
679
|
# Originally this was a regression test that used the old Fortran results
|
666
680
|
# as a reference. The Fortran results were not accurate, so the reference
|
667
681
|
# values were recomputed with mpmath.
|
668
|
-
|
669
|
-
assert_allclose(
|
682
|
+
nctdtr_result = sp.nctdtr(df, nc, x)
|
683
|
+
assert_allclose(nctdtr_result, expected_cdf, rtol=1e-13, atol=1e-303)
|
670
684
|
|
671
685
|
def test_nctdtr_gh8344(self):
|
672
686
|
# test that gh-8344 is resolved.
|
@@ -684,5 +698,15 @@ class TestNctdtr:
|
|
684
698
|
[1., 1., -np.inf, 0.0, 0.0]
|
685
699
|
]
|
686
700
|
)
|
687
|
-
def
|
701
|
+
def test_nctdtr_accuracy(self, df, nc, x, expected, rtol):
|
688
702
|
assert_allclose(sp.nctdtr(df, nc, x), expected, rtol=rtol)
|
703
|
+
|
704
|
+
@pytest.mark.parametrize("df, nc, x, expected_cdf", [
|
705
|
+
(0.98, 38, 1.5, 2.591995360483094e-97),
|
706
|
+
(3000, 3, 0.1, 0.0018657780826323328),
|
707
|
+
(0.98, -3.8, 15, 0.9999990264591945),
|
708
|
+
(9.8, 38, 15, 2.252076291604796e-09),
|
709
|
+
|
710
|
+
])
|
711
|
+
def test_nctdtrit(self, df, nc, x, expected_cdf):
|
712
|
+
assert_allclose(sp.nctdtrit(df, nc, expected_cdf), x, rtol=1e-10)
|