scipy 1.15.3__cp313-cp313-macosx_12_0_arm64.whl → 1.16.0rc2__cp313-cp313-macosx_12_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scipy/.dylibs/libscipy_openblas.dylib +0 -0
- scipy/__config__.py +8 -8
- scipy/__init__.py +3 -6
- scipy/_cyutility.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/_lib/_docscrape.py +1 -1
- scipy/_lib/_elementwise_iterative_method.py +15 -26
- scipy/_lib/_sparse.py +41 -0
- scipy/_lib/_test_deprecation_call.cpython-313-darwin.so +0 -0
- scipy/_lib/_test_deprecation_def.cpython-313-darwin.so +0 -0
- scipy/_lib/_testutils.py +6 -2
- scipy/_lib/_util.py +222 -125
- scipy/_lib/array_api_compat/__init__.py +4 -4
- scipy/_lib/array_api_compat/_internal.py +19 -6
- scipy/_lib/array_api_compat/common/__init__.py +1 -1
- scipy/_lib/array_api_compat/common/_aliases.py +365 -193
- scipy/_lib/array_api_compat/common/_fft.py +94 -64
- scipy/_lib/array_api_compat/common/_helpers.py +413 -180
- scipy/_lib/array_api_compat/common/_linalg.py +116 -40
- scipy/_lib/array_api_compat/common/_typing.py +179 -10
- scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
- scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
- scipy/_lib/array_api_compat/cupy/_info.py +16 -6
- scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
- scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
- scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
- scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
- scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
- scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
- scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
- scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
- scipy/_lib/array_api_compat/numpy/_info.py +36 -16
- scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
- scipy/_lib/array_api_compat/numpy/fft.py +11 -5
- scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
- scipy/_lib/array_api_compat/torch/__init__.py +3 -5
- scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
- scipy/_lib/array_api_compat/torch/_info.py +27 -16
- scipy/_lib/array_api_compat/torch/_typing.py +3 -0
- scipy/_lib/array_api_compat/torch/fft.py +17 -18
- scipy/_lib/array_api_compat/torch/linalg.py +16 -16
- scipy/_lib/array_api_extra/__init__.py +26 -3
- scipy/_lib/array_api_extra/_delegation.py +171 -0
- scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_at.py +463 -0
- scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
- scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
- scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
- scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
- scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
- scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
- scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
- scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
- scipy/_lib/array_api_extra/testing.py +359 -0
- scipy/_lib/decorator.py +2 -2
- scipy/_lib/doccer.py +1 -7
- scipy/_lib/messagestream.cpython-313-darwin.so +0 -0
- scipy/_lib/pyprima/__init__.py +212 -0
- scipy/_lib/pyprima/cobyla/__init__.py +0 -0
- scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
- scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
- scipy/_lib/pyprima/cobyla/geometry.py +226 -0
- scipy/_lib/pyprima/cobyla/initialize.py +215 -0
- scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
- scipy/_lib/pyprima/cobyla/update.py +289 -0
- scipy/_lib/pyprima/common/__init__.py +0 -0
- scipy/_lib/pyprima/common/_bounds.py +34 -0
- scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
- scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
- scipy/_lib/pyprima/common/_project.py +173 -0
- scipy/_lib/pyprima/common/checkbreak.py +93 -0
- scipy/_lib/pyprima/common/consts.py +47 -0
- scipy/_lib/pyprima/common/evaluate.py +99 -0
- scipy/_lib/pyprima/common/history.py +38 -0
- scipy/_lib/pyprima/common/infos.py +30 -0
- scipy/_lib/pyprima/common/linalg.py +435 -0
- scipy/_lib/pyprima/common/message.py +290 -0
- scipy/_lib/pyprima/common/powalg.py +131 -0
- scipy/_lib/pyprima/common/preproc.py +277 -0
- scipy/_lib/pyprima/common/present.py +5 -0
- scipy/_lib/pyprima/common/ratio.py +54 -0
- scipy/_lib/pyprima/common/redrho.py +47 -0
- scipy/_lib/pyprima/common/selectx.py +296 -0
- scipy/_lib/tests/test__util.py +105 -121
- scipy/_lib/tests/test_array_api.py +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.cpython-313-darwin.so +0 -0
- scipy/cluster/_optimal_leaf_ordering.cpython-313-darwin.so +0 -0
- scipy/cluster/_vq.cpython-313-darwin.so +0 -0
- scipy/cluster/hierarchy.py +393 -223
- scipy/cluster/tests/test_hierarchy.py +273 -335
- scipy/cluster/tests/test_vq.py +45 -61
- scipy/cluster/vq.py +39 -35
- scipy/conftest.py +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/tests/test_basic.py +2 -4
- scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
- scipy/fft/_realtransforms.py +13 -0
- scipy/fft/tests/test_basic.py +27 -25
- scipy/fft/tests/test_fftlog.py +16 -7
- scipy/fft/tests/test_helper.py +18 -34
- scipy/fft/tests/test_real_transforms.py +8 -10
- scipy/fftpack/convolve.cpython-313-darwin.so +0 -0
- scipy/fftpack/tests/test_basic.py +2 -4
- scipy/fftpack/tests/test_real_transforms.py +8 -9
- scipy/integrate/_bvp.py +9 -3
- scipy/integrate/_cubature.py +3 -2
- scipy/integrate/_dop.cpython-313-darwin.so +0 -0
- scipy/integrate/_lsoda.cpython-313-darwin.so +0 -0
- scipy/integrate/_ode.py +9 -2
- scipy/integrate/_odepack.cpython-313-darwin.so +0 -0
- scipy/integrate/_quad_vec.py +21 -29
- scipy/integrate/_quadpack.cpython-313-darwin.so +0 -0
- scipy/integrate/_quadpack_py.py +11 -7
- scipy/integrate/_quadrature.py +3 -3
- scipy/integrate/_rules/_base.py +2 -2
- scipy/integrate/_tanhsinh.py +48 -47
- scipy/integrate/_test_odeint_banded.cpython-313-darwin.so +0 -0
- scipy/integrate/_vode.cpython-313-darwin.so +0 -0
- scipy/integrate/tests/test__quad_vec.py +0 -6
- scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
- scipy/integrate/tests/test_cubature.py +21 -35
- scipy/integrate/tests/test_quadrature.py +6 -8
- scipy/integrate/tests/test_tanhsinh.py +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.cpython-313-darwin.so +0 -0
- scipy/interpolate/_dierckx.cpython-313-darwin.so +0 -0
- scipy/interpolate/_fitpack.cpython-313-darwin.so +0 -0
- scipy/interpolate/_fitpack2.py +9 -6
- scipy/interpolate/_fitpack_impl.py +32 -26
- scipy/interpolate/_fitpack_repro.py +23 -19
- scipy/interpolate/_interpnd.cpython-313-darwin.so +0 -0
- scipy/interpolate/_interpolate.py +30 -12
- scipy/interpolate/_ndbspline.py +13 -18
- scipy/interpolate/_ndgriddata.py +5 -8
- scipy/interpolate/_polyint.py +95 -31
- scipy/interpolate/_ppoly.cpython-313-darwin.so +0 -0
- scipy/interpolate/_rbf.py +2 -2
- scipy/interpolate/_rbfinterp.py +1 -1
- scipy/interpolate/_rbfinterp_pythran.cpython-313-darwin.so +0 -0
- scipy/interpolate/_rgi.py +31 -26
- scipy/interpolate/_rgi_cython.cpython-313-darwin.so +0 -0
- scipy/interpolate/dfitpack.py +0 -20
- scipy/interpolate/interpnd.py +1 -2
- scipy/interpolate/tests/test_bary_rational.py +2 -2
- scipy/interpolate/tests/test_bsplines.py +97 -1
- scipy/interpolate/tests/test_fitpack2.py +39 -1
- scipy/interpolate/tests/test_interpnd.py +32 -20
- scipy/interpolate/tests/test_interpolate.py +48 -4
- scipy/interpolate/tests/test_rgi.py +2 -1
- scipy/io/_fast_matrix_market/__init__.py +2 -0
- scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
- scipy/io/_harwell_boeing/hb.py +7 -11
- scipy/io/_idl.py +5 -7
- scipy/io/_netcdf.py +15 -5
- scipy/io/_test_fortran.cpython-313-darwin.so +0 -0
- scipy/io/arff/tests/test_arffread.py +3 -3
- scipy/io/matlab/__init__.py +5 -3
- scipy/io/matlab/_mio.py +4 -1
- scipy/io/matlab/_mio5.py +19 -13
- scipy/io/matlab/_mio5_utils.cpython-313-darwin.so +0 -0
- scipy/io/matlab/_mio_utils.cpython-313-darwin.so +0 -0
- scipy/io/matlab/_miobase.py +4 -1
- scipy/io/matlab/_streams.cpython-313-darwin.so +0 -0
- scipy/io/matlab/tests/test_mio.py +46 -18
- scipy/io/matlab/tests/test_mio_funcs.py +1 -1
- scipy/io/tests/test_mmio.py +7 -1
- scipy/io/tests/test_wavfile.py +41 -0
- scipy/io/wavfile.py +57 -10
- scipy/linalg/_basic.py +113 -86
- scipy/linalg/_cythonized_array_utils.cpython-313-darwin.so +0 -0
- scipy/linalg/_decomp.py +22 -9
- scipy/linalg/_decomp_cholesky.py +28 -13
- scipy/linalg/_decomp_cossin.py +45 -30
- scipy/linalg/_decomp_interpolative.cpython-313-darwin.so +0 -0
- scipy/linalg/_decomp_ldl.py +4 -1
- scipy/linalg/_decomp_lu.py +18 -6
- scipy/linalg/_decomp_lu_cython.cpython-313-darwin.so +0 -0
- scipy/linalg/_decomp_polar.py +2 -0
- scipy/linalg/_decomp_qr.py +6 -2
- scipy/linalg/_decomp_qz.py +3 -0
- scipy/linalg/_decomp_schur.py +3 -1
- scipy/linalg/_decomp_svd.py +13 -2
- scipy/linalg/_decomp_update.cpython-313-darwin.so +0 -0
- scipy/linalg/_expm_frechet.py +4 -0
- scipy/linalg/_fblas.cpython-313-darwin.so +0 -0
- scipy/linalg/_flapack.cpython-313-darwin.so +0 -0
- scipy/linalg/_linalg_pythran.cpython-313-darwin.so +0 -0
- scipy/linalg/_matfuncs.py +187 -4
- scipy/linalg/_matfuncs_expm.cpython-313-darwin.so +0 -0
- scipy/linalg/_matfuncs_schur_sqrtm.cpython-313-darwin.so +0 -0
- scipy/linalg/_matfuncs_sqrtm.py +1 -99
- scipy/linalg/_matfuncs_sqrtm_triu.cpython-313-darwin.so +0 -0
- scipy/linalg/_procrustes.py +2 -0
- scipy/linalg/_sketches.py +17 -6
- scipy/linalg/_solve_toeplitz.cpython-313-darwin.so +0 -0
- scipy/linalg/_solvers.py +7 -2
- scipy/linalg/_special_matrices.py +26 -36
- scipy/linalg/cython_blas.cpython-313-darwin.so +0 -0
- scipy/linalg/cython_lapack.cpython-313-darwin.so +0 -0
- scipy/linalg/lapack.py +22 -2
- scipy/linalg/tests/_cython_examples/meson.build +7 -0
- scipy/linalg/tests/test_basic.py +31 -16
- scipy/linalg/tests/test_batch.py +588 -0
- scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
- scipy/linalg/tests/test_decomp.py +40 -3
- scipy/linalg/tests/test_decomp_cossin.py +14 -0
- scipy/linalg/tests/test_decomp_ldl.py +1 -1
- scipy/linalg/tests/test_lapack.py +115 -7
- scipy/linalg/tests/test_matfuncs.py +157 -102
- scipy/linalg/tests/test_procrustes.py +0 -7
- scipy/linalg/tests/test_solve_toeplitz.py +1 -1
- scipy/linalg/tests/test_special_matrices.py +1 -5
- scipy/ndimage/__init__.py +1 -0
- scipy/ndimage/_cytest.cpython-313-darwin.so +0 -0
- scipy/ndimage/_delegators.py +8 -2
- scipy/ndimage/_filters.py +453 -5
- scipy/ndimage/_interpolation.py +36 -6
- scipy/ndimage/_measurements.py +4 -2
- scipy/ndimage/_morphology.py +5 -0
- scipy/ndimage/_nd_image.cpython-313-darwin.so +0 -0
- scipy/ndimage/_ni_docstrings.py +5 -1
- scipy/ndimage/_ni_label.cpython-313-darwin.so +0 -0
- scipy/ndimage/_ni_support.py +1 -5
- scipy/ndimage/_rank_filter_1d.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/optimize/_basinhopping.py +13 -7
- scipy/optimize/_bglu_dense.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/optimize/_dual_annealing.py +1 -1
- scipy/optimize/_elementwise.py +1 -4
- scipy/optimize/_group_columns.cpython-313-darwin.so +0 -0
- scipy/optimize/_lbfgsb.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/optimize/_lsq/common.py +3 -3
- scipy/optimize/_lsq/dogbox.py +16 -2
- scipy/optimize/_lsq/givens_elimination.cpython-313-darwin.so +0 -0
- scipy/optimize/_lsq/least_squares.py +198 -126
- scipy/optimize/_lsq/lsq_linear.py +6 -6
- scipy/optimize/_lsq/trf.py +35 -8
- scipy/optimize/_milp.py +3 -1
- scipy/optimize/_minimize.py +105 -36
- scipy/optimize/_minpack.cpython-313-darwin.so +0 -0
- scipy/optimize/_minpack_py.py +21 -14
- scipy/optimize/_moduleTNC.cpython-313-darwin.so +0 -0
- scipy/optimize/_nnls.py +20 -21
- scipy/optimize/_nonlin.py +34 -3
- scipy/optimize/_numdiff.py +288 -110
- scipy/optimize/_optimize.py +86 -48
- scipy/optimize/_pava_pybind.cpython-313-darwin.so +0 -0
- scipy/optimize/_remove_redundancy.py +5 -5
- scipy/optimize/_root_scalar.py +1 -1
- scipy/optimize/_shgo.py +6 -0
- scipy/optimize/_shgo_lib/_complex.py +1 -1
- scipy/optimize/_slsqp_py.py +216 -124
- scipy/optimize/_slsqplib.cpython-313-darwin.so +0 -0
- scipy/optimize/_spectral.py +1 -1
- scipy/optimize/_tnc.py +8 -1
- scipy/optimize/_trlib/_trlib.cpython-313-darwin.so +0 -0
- scipy/optimize/_trustregion.py +20 -6
- scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
- scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
- scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
- scipy/optimize/_trustregion_constr/projections.py +12 -8
- scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
- scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
- scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
- scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
- scipy/optimize/_trustregion_exact.py +0 -1
- scipy/optimize/_zeros.cpython-313-darwin.so +0 -0
- scipy/optimize/_zeros_py.py +97 -17
- scipy/optimize/cython_optimize/_zeros.cpython-313-darwin.so +0 -0
- scipy/optimize/slsqp.py +0 -1
- scipy/optimize/tests/test__basinhopping.py +1 -1
- scipy/optimize/tests/test__differential_evolution.py +4 -4
- scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
- scipy/optimize/tests/test__numdiff.py +66 -22
- scipy/optimize/tests/test__remove_redundancy.py +2 -2
- scipy/optimize/tests/test__shgo.py +9 -1
- scipy/optimize/tests/test_bracket.py +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.cpython-313-darwin.so +0 -0
- scipy/signal/_peak_finding_utils.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/signal/_sosfilt.cpython-313-darwin.so +0 -0
- scipy/signal/_spectral_py.py +230 -50
- scipy/signal/_spline.cpython-313-darwin.so +0 -0
- scipy/signal/_spline_filters.py +108 -68
- scipy/signal/_support_alternative_backends.py +73 -0
- scipy/signal/_upfirdn.py +4 -1
- scipy/signal/_upfirdn_apply.cpython-313-darwin.so +0 -0
- scipy/signal/_waveforms.py +2 -11
- scipy/signal/_wavelets.py +1 -1
- scipy/signal/fir_filter_design.py +1 -0
- scipy/signal/spline.py +4 -11
- scipy/signal/tests/_scipy_spectral_test_shim.py +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.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/sparse/_sputils.py +37 -22
- scipy/sparse/base.py +0 -9
- scipy/sparse/bsr.py +0 -14
- scipy/sparse/compressed.py +0 -23
- scipy/sparse/construct.py +0 -6
- scipy/sparse/coo.py +0 -14
- scipy/sparse/csc.py +0 -3
- scipy/sparse/csgraph/_flow.cpython-313-darwin.so +0 -0
- scipy/sparse/csgraph/_matching.cpython-313-darwin.so +0 -0
- scipy/sparse/csgraph/_min_spanning_tree.cpython-313-darwin.so +0 -0
- scipy/sparse/csgraph/_reordering.cpython-313-darwin.so +0 -0
- scipy/sparse/csgraph/_shortest_path.cpython-313-darwin.so +0 -0
- scipy/sparse/csgraph/_tools.cpython-313-darwin.so +0 -0
- scipy/sparse/csgraph/_traversal.cpython-313-darwin.so +0 -0
- scipy/sparse/csgraph/tests/test_matching.py +14 -2
- scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
- scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
- scipy/sparse/csr.py +0 -5
- scipy/sparse/data.py +1 -6
- scipy/sparse/dia.py +0 -7
- scipy/sparse/dok.py +0 -10
- scipy/sparse/linalg/_dsolve/_superlu.cpython-313-darwin.so +0 -0
- scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
- scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
- scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_dpropack.cpython-313-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_spropack.cpython-313-darwin.so +0 -0
- scipy/sparse/linalg/_propack/_zpropack.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/spatial/_distance_pybind.cpython-313-darwin.so +0 -0
- scipy/spatial/_distance_wrap.cpython-313-darwin.so +0 -0
- scipy/spatial/_hausdorff.cpython-313-darwin.so +0 -0
- scipy/spatial/_qhull.cpython-313-darwin.so +0 -0
- scipy/spatial/_voronoi.cpython-313-darwin.so +0 -0
- scipy/spatial/distance.py +49 -42
- scipy/spatial/tests/test_distance.py +15 -1
- scipy/spatial/tests/test_kdtree.py +1 -0
- scipy/spatial/tests/test_qhull.py +7 -2
- scipy/spatial/transform/__init__.py +5 -3
- scipy/spatial/transform/_rigid_transform.cpython-313-darwin.so +0 -0
- scipy/spatial/transform/_rotation.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/special/_ellip_harm_2.cpython-313-darwin.so +0 -0
- scipy/special/_gufuncs.cpython-313-darwin.so +0 -0
- scipy/special/_logsumexp.py +67 -58
- scipy/special/_orthogonal.pyi +1 -1
- scipy/special/_specfun.cpython-313-darwin.so +0 -0
- scipy/special/_special_ufuncs.cpython-313-darwin.so +0 -0
- scipy/special/_spherical_bessel.py +4 -4
- scipy/special/_support_alternative_backends.py +212 -119
- scipy/special/_test_internal.cpython-313-darwin.so +0 -0
- scipy/special/_testutils.py +4 -4
- scipy/special/_ufuncs.cpython-313-darwin.so +0 -0
- scipy/special/_ufuncs.pyi +1 -0
- scipy/special/_ufuncs.pyx +215 -1400
- scipy/special/_ufuncs_cxx.cpython-313-darwin.so +0 -0
- scipy/special/_ufuncs_cxx.pxd +2 -15
- scipy/special/_ufuncs_cxx.pyx +5 -44
- scipy/special/_ufuncs_cxx_defs.h +2 -16
- scipy/special/_ufuncs_defs.h +0 -8
- scipy/special/cython_special.cpython-313-darwin.so +0 -0
- scipy/special/cython_special.pxd +1 -1
- scipy/special/tests/_cython_examples/meson.build +10 -1
- scipy/special/tests/test_basic.py +153 -20
- scipy/special/tests/test_boost_ufuncs.py +3 -0
- scipy/special/tests/test_cdflib.py +35 -11
- scipy/special/tests/test_gammainc.py +16 -0
- scipy/special/tests/test_hyp2f1.py +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.cpython-313-darwin.so +0 -0
- scipy/stats/_axis_nan_policy.py +5 -12
- scipy/stats/_biasedurn.cpython-313-darwin.so +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.cpython-313-darwin.so +0 -0
- scipy/stats/_morestats.py +118 -73
- scipy/stats/_mstats_basic.py +13 -17
- scipy/stats/_mstats_extras.py +8 -8
- scipy/stats/_multivariate.py +89 -113
- scipy/stats/_new_distributions.py +97 -20
- scipy/stats/_page_trend_test.py +12 -5
- scipy/stats/_probability_distribution.py +265 -43
- scipy/stats/_qmc.py +14 -9
- scipy/stats/_qmc_cy.cpython-313-darwin.so +0 -0
- scipy/stats/_qmvnt.py +16 -95
- scipy/stats/_qmvnt_cy.cpython-313-darwin.so +0 -0
- scipy/stats/_quantile.py +335 -0
- scipy/stats/_rcont/rcont.cpython-313-darwin.so +0 -0
- scipy/stats/_resampling.py +4 -29
- scipy/stats/_sampling.py +1 -1
- scipy/stats/_sobol.cpython-313-darwin.so +0 -0
- scipy/stats/_stats.cpython-313-darwin.so +0 -0
- scipy/stats/_stats_mstats_common.py +21 -2
- scipy/stats/_stats_py.py +550 -476
- scipy/stats/_stats_pythran.cpython-313-darwin.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.cpython-313-darwin.so +0 -0
- scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
- scipy/stats/_variation.py +6 -8
- scipy/stats/_wilcoxon.py +13 -7
- scipy/stats/tests/common_tests.py +6 -4
- scipy/stats/tests/test_axis_nan_policy.py +62 -24
- scipy/stats/tests/test_continued_fraction.py +173 -0
- scipy/stats/tests/test_continuous.py +379 -60
- scipy/stats/tests/test_continuous_basic.py +18 -12
- scipy/stats/tests/test_discrete_basic.py +14 -8
- scipy/stats/tests/test_discrete_distns.py +16 -16
- scipy/stats/tests/test_distributions.py +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.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 +561 -568
- scipy-1.16.0rc2.dist-info/WHEEL +6 -0
- scipy/_lib/array_api_extra/_funcs.py +0 -484
- scipy/_lib/array_api_extra/_typing.py +0 -8
- scipy/interpolate/_bspl.cpython-313-darwin.so +0 -0
- scipy/optimize/_cobyla.cpython-313-darwin.so +0 -0
- scipy/optimize/_cython_nnls.cpython-313-darwin.so +0 -0
- scipy/optimize/_slsqp.cpython-313-darwin.so +0 -0
- scipy/spatial/qhull_src/COPYING.txt +0 -38
- scipy/special/libsf_error_state.dylib +0 -0
- scipy/special/tests/test_log_softmax.py +0 -109
- scipy/special/tests/test_xsf_cuda.py +0 -114
- scipy/special/xsf/binom.h +0 -89
- scipy/special/xsf/cdflib.h +0 -100
- scipy/special/xsf/cephes/airy.h +0 -307
- scipy/special/xsf/cephes/besselpoly.h +0 -51
- scipy/special/xsf/cephes/beta.h +0 -257
- scipy/special/xsf/cephes/cbrt.h +0 -131
- scipy/special/xsf/cephes/chbevl.h +0 -85
- scipy/special/xsf/cephes/chdtr.h +0 -193
- scipy/special/xsf/cephes/const.h +0 -87
- scipy/special/xsf/cephes/ellie.h +0 -293
- scipy/special/xsf/cephes/ellik.h +0 -251
- scipy/special/xsf/cephes/ellpe.h +0 -107
- scipy/special/xsf/cephes/ellpk.h +0 -117
- scipy/special/xsf/cephes/expn.h +0 -260
- scipy/special/xsf/cephes/gamma.h +0 -398
- scipy/special/xsf/cephes/hyp2f1.h +0 -596
- scipy/special/xsf/cephes/hyperg.h +0 -361
- scipy/special/xsf/cephes/i0.h +0 -149
- scipy/special/xsf/cephes/i1.h +0 -158
- scipy/special/xsf/cephes/igam.h +0 -421
- scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
- scipy/special/xsf/cephes/igami.h +0 -313
- scipy/special/xsf/cephes/j0.h +0 -225
- scipy/special/xsf/cephes/j1.h +0 -198
- scipy/special/xsf/cephes/jv.h +0 -715
- scipy/special/xsf/cephes/k0.h +0 -164
- scipy/special/xsf/cephes/k1.h +0 -163
- scipy/special/xsf/cephes/kn.h +0 -243
- scipy/special/xsf/cephes/lanczos.h +0 -112
- scipy/special/xsf/cephes/ndtr.h +0 -275
- scipy/special/xsf/cephes/poch.h +0 -85
- scipy/special/xsf/cephes/polevl.h +0 -167
- scipy/special/xsf/cephes/psi.h +0 -194
- scipy/special/xsf/cephes/rgamma.h +0 -111
- scipy/special/xsf/cephes/scipy_iv.h +0 -811
- scipy/special/xsf/cephes/shichi.h +0 -248
- scipy/special/xsf/cephes/sici.h +0 -224
- scipy/special/xsf/cephes/sindg.h +0 -221
- scipy/special/xsf/cephes/tandg.h +0 -139
- scipy/special/xsf/cephes/trig.h +0 -58
- scipy/special/xsf/cephes/unity.h +0 -186
- scipy/special/xsf/cephes/zeta.h +0 -172
- scipy/special/xsf/config.h +0 -304
- scipy/special/xsf/digamma.h +0 -205
- scipy/special/xsf/error.h +0 -57
- scipy/special/xsf/evalpoly.h +0 -47
- scipy/special/xsf/expint.h +0 -266
- scipy/special/xsf/hyp2f1.h +0 -694
- scipy/special/xsf/iv_ratio.h +0 -173
- scipy/special/xsf/lambertw.h +0 -150
- scipy/special/xsf/loggamma.h +0 -163
- scipy/special/xsf/sici.h +0 -200
- scipy/special/xsf/tools.h +0 -427
- scipy/special/xsf/trig.h +0 -164
- scipy/special/xsf/wright_bessel.h +0 -843
- scipy/special/xsf/zlog1.h +0 -35
- scipy/stats/_mvn.cpython-313-darwin.so +0 -0
- scipy-1.15.3.dist-info/WHEEL +0 -4
scipy/special/xsf/config.h
DELETED
@@ -1,304 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
// Define math constants if they are not available
|
4
|
-
#ifndef M_E
|
5
|
-
#define M_E 2.71828182845904523536
|
6
|
-
#endif
|
7
|
-
|
8
|
-
#ifndef M_LOG2E
|
9
|
-
#define M_LOG2E 1.44269504088896340736
|
10
|
-
#endif
|
11
|
-
|
12
|
-
#ifndef M_LOG10E
|
13
|
-
#define M_LOG10E 0.434294481903251827651
|
14
|
-
#endif
|
15
|
-
|
16
|
-
#ifndef M_LN2
|
17
|
-
#define M_LN2 0.693147180559945309417
|
18
|
-
#endif
|
19
|
-
|
20
|
-
#ifndef M_LN10
|
21
|
-
#define M_LN10 2.30258509299404568402
|
22
|
-
#endif
|
23
|
-
|
24
|
-
#ifndef M_PI
|
25
|
-
#define M_PI 3.14159265358979323846
|
26
|
-
#endif
|
27
|
-
|
28
|
-
#ifndef M_PI_2
|
29
|
-
#define M_PI_2 1.57079632679489661923
|
30
|
-
#endif
|
31
|
-
|
32
|
-
#ifndef M_PI_4
|
33
|
-
#define M_PI_4 0.785398163397448309616
|
34
|
-
#endif
|
35
|
-
|
36
|
-
#ifndef M_1_PI
|
37
|
-
#define M_1_PI 0.318309886183790671538
|
38
|
-
#endif
|
39
|
-
|
40
|
-
#ifndef M_2_PI
|
41
|
-
#define M_2_PI 0.636619772367581343076
|
42
|
-
#endif
|
43
|
-
|
44
|
-
#ifndef M_2_SQRTPI
|
45
|
-
#define M_2_SQRTPI 1.12837916709551257390
|
46
|
-
#endif
|
47
|
-
|
48
|
-
#ifndef M_SQRT2
|
49
|
-
#define M_SQRT2 1.41421356237309504880
|
50
|
-
#endif
|
51
|
-
|
52
|
-
#ifndef M_SQRT1_2
|
53
|
-
#define M_SQRT1_2 0.707106781186547524401
|
54
|
-
#endif
|
55
|
-
|
56
|
-
#ifdef __CUDACC__
|
57
|
-
#define XSF_HOST_DEVICE __host__ __device__
|
58
|
-
|
59
|
-
#include <cuda/std/cmath>
|
60
|
-
#include <cuda/std/cstddef>
|
61
|
-
#include <cuda/std/cstdint>
|
62
|
-
#include <cuda/std/limits>
|
63
|
-
#include <cuda/std/tuple>
|
64
|
-
#include <cuda/std/type_traits>
|
65
|
-
#include <cuda/std/utility>
|
66
|
-
|
67
|
-
// Fallback to global namespace for functions unsupported on NVRTC Jit
|
68
|
-
#ifdef _LIBCUDACXX_COMPILER_NVRTC
|
69
|
-
#include <cuda_runtime.h>
|
70
|
-
#endif
|
71
|
-
|
72
|
-
namespace std {
|
73
|
-
|
74
|
-
XSF_HOST_DEVICE inline double abs(double num) { return cuda::std::abs(num); }
|
75
|
-
|
76
|
-
XSF_HOST_DEVICE inline double exp(double num) { return cuda::std::exp(num); }
|
77
|
-
|
78
|
-
XSF_HOST_DEVICE inline double log(double num) { return cuda::std::log(num); }
|
79
|
-
|
80
|
-
XSF_HOST_DEVICE inline double sqrt(double num) { return cuda::std::sqrt(num); }
|
81
|
-
|
82
|
-
XSF_HOST_DEVICE inline bool isinf(double num) { return cuda::std::isinf(num); }
|
83
|
-
|
84
|
-
XSF_HOST_DEVICE inline bool isnan(double num) { return cuda::std::isnan(num); }
|
85
|
-
|
86
|
-
XSF_HOST_DEVICE inline bool isfinite(double num) { return cuda::std::isfinite(num); }
|
87
|
-
|
88
|
-
XSF_HOST_DEVICE inline double pow(double x, double y) { return cuda::std::pow(x, y); }
|
89
|
-
|
90
|
-
XSF_HOST_DEVICE inline double sin(double x) { return cuda::std::sin(x); }
|
91
|
-
|
92
|
-
XSF_HOST_DEVICE inline double cos(double x) { return cuda::std::cos(x); }
|
93
|
-
|
94
|
-
XSF_HOST_DEVICE inline double tan(double x) { return cuda::std::tan(x); }
|
95
|
-
|
96
|
-
XSF_HOST_DEVICE inline double atan(double x) { return cuda::std::atan(x); }
|
97
|
-
|
98
|
-
XSF_HOST_DEVICE inline double acos(double x) { return cuda::std::acos(x); }
|
99
|
-
|
100
|
-
XSF_HOST_DEVICE inline double sinh(double x) { return cuda::std::sinh(x); }
|
101
|
-
|
102
|
-
XSF_HOST_DEVICE inline double cosh(double x) { return cuda::std::cosh(x); }
|
103
|
-
|
104
|
-
XSF_HOST_DEVICE inline double asinh(double x) { return cuda::std::asinh(x); }
|
105
|
-
|
106
|
-
XSF_HOST_DEVICE inline bool signbit(double x) { return cuda::std::signbit(x); }
|
107
|
-
|
108
|
-
// Fallback to global namespace for functions unsupported on NVRTC
|
109
|
-
#ifndef _LIBCUDACXX_COMPILER_NVRTC
|
110
|
-
XSF_HOST_DEVICE inline double ceil(double x) { return cuda::std::ceil(x); }
|
111
|
-
XSF_HOST_DEVICE inline double floor(double x) { return cuda::std::floor(x); }
|
112
|
-
XSF_HOST_DEVICE inline double round(double x) { return cuda::std::round(x); }
|
113
|
-
XSF_HOST_DEVICE inline double trunc(double x) { return cuda::std::trunc(x); }
|
114
|
-
XSF_HOST_DEVICE inline double fma(double x, double y, double z) { return cuda::std::fma(x, y, z); }
|
115
|
-
XSF_HOST_DEVICE inline double copysign(double x, double y) { return cuda::std::copysign(x, y); }
|
116
|
-
XSF_HOST_DEVICE inline double modf(double value, double *iptr) { return cuda::std::modf(value, iptr); }
|
117
|
-
XSF_HOST_DEVICE inline double fmax(double x, double y) { return cuda::std::fmax(x, y); }
|
118
|
-
XSF_HOST_DEVICE inline double fmin(double x, double y) { return cuda::std::fmin(x, y); }
|
119
|
-
XSF_HOST_DEVICE inline double log10(double num) { return cuda::std::log10(num); }
|
120
|
-
XSF_HOST_DEVICE inline double log1p(double num) { return cuda::std::log1p(num); }
|
121
|
-
XSF_HOST_DEVICE inline double frexp(double num, int *exp) { return cuda::std::frexp(num, exp); }
|
122
|
-
XSF_HOST_DEVICE inline double ldexp(double num, int exp) { return cuda::std::ldexp(num, exp); }
|
123
|
-
XSF_HOST_DEVICE inline double fmod(double x, double y) { return cuda::std::fmod(x, y); }
|
124
|
-
XSF_HOST_DEVICE inline double nextafter(double from, double to) { return cuda::std::nextafter(from, to); }
|
125
|
-
#else
|
126
|
-
XSF_HOST_DEVICE inline double ceil(double x) { return ::ceil(x); }
|
127
|
-
XSF_HOST_DEVICE inline double floor(double x) { return ::floor(x); }
|
128
|
-
XSF_HOST_DEVICE inline double round(double x) { return ::round(x); }
|
129
|
-
XSF_HOST_DEVICE inline double trunc(double x) { return ::trunc(x); }
|
130
|
-
XSF_HOST_DEVICE inline double fma(double x, double y, double z) { return ::fma(x, y, z); }
|
131
|
-
XSF_HOST_DEVICE inline double copysign(double x, double y) { return ::copysign(x, y); }
|
132
|
-
XSF_HOST_DEVICE inline double modf(double value, double *iptr) { return ::modf(value, iptr); }
|
133
|
-
XSF_HOST_DEVICE inline double fmax(double x, double y) { return ::fmax(x, y); }
|
134
|
-
XSF_HOST_DEVICE inline double fmin(double x, double y) { return ::fmin(x, y); }
|
135
|
-
XSF_HOST_DEVICE inline double log10(double num) { return ::log10(num); }
|
136
|
-
XSF_HOST_DEVICE inline double log1p(double num) { return ::log1p(num); }
|
137
|
-
XSF_HOST_DEVICE inline double frexp(double num, int *exp) { return ::frexp(num, exp); }
|
138
|
-
XSF_HOST_DEVICE inline double ldexp(double num, int exp) { return ::ldexp(num, exp); }
|
139
|
-
XSF_HOST_DEVICE inline double fmod(double x, double y) { return ::fmod(x, y); }
|
140
|
-
XSF_HOST_DEVICE inline double nextafter(double from, double to) { return ::nextafter(from, to); }
|
141
|
-
#endif
|
142
|
-
|
143
|
-
template <typename T>
|
144
|
-
XSF_HOST_DEVICE void swap(T &a, T &b) {
|
145
|
-
cuda::std::swap(a, b);
|
146
|
-
}
|
147
|
-
|
148
|
-
// Reimplement std::clamp until it's available in CuPy
|
149
|
-
template <typename T>
|
150
|
-
XSF_HOST_DEVICE constexpr T clamp(T &v, T &lo, T &hi) {
|
151
|
-
return v < lo ? lo : (v > hi ? lo : v);
|
152
|
-
}
|
153
|
-
|
154
|
-
template <typename T>
|
155
|
-
using numeric_limits = cuda::std::numeric_limits<T>;
|
156
|
-
|
157
|
-
// Must use thrust for complex types in order to support CuPy
|
158
|
-
template <typename T>
|
159
|
-
using complex = thrust::complex<T>;
|
160
|
-
|
161
|
-
template <typename T>
|
162
|
-
XSF_HOST_DEVICE T abs(const complex<T> &z) {
|
163
|
-
return thrust::abs(z);
|
164
|
-
}
|
165
|
-
|
166
|
-
template <typename T>
|
167
|
-
XSF_HOST_DEVICE complex<T> exp(const complex<T> &z) {
|
168
|
-
return thrust::exp(z);
|
169
|
-
}
|
170
|
-
|
171
|
-
template <typename T>
|
172
|
-
XSF_HOST_DEVICE complex<T> log(const complex<T> &z) {
|
173
|
-
return thrust::log(z);
|
174
|
-
}
|
175
|
-
|
176
|
-
template <typename T>
|
177
|
-
XSF_HOST_DEVICE T norm(const complex<T> &z) {
|
178
|
-
return thrust::norm(z);
|
179
|
-
}
|
180
|
-
|
181
|
-
template <typename T>
|
182
|
-
XSF_HOST_DEVICE complex<T> sqrt(const complex<T> &z) {
|
183
|
-
return thrust::sqrt(z);
|
184
|
-
}
|
185
|
-
|
186
|
-
template <typename T>
|
187
|
-
XSF_HOST_DEVICE complex<T> conj(const complex<T> &z) {
|
188
|
-
return thrust::conj(z);
|
189
|
-
}
|
190
|
-
|
191
|
-
template <typename T>
|
192
|
-
XSF_HOST_DEVICE complex<T> pow(const complex<T> &x, const complex<T> &y) {
|
193
|
-
return thrust::pow(x, y);
|
194
|
-
}
|
195
|
-
|
196
|
-
template <typename T>
|
197
|
-
XSF_HOST_DEVICE complex<T> pow(const complex<T> &x, const T &y) {
|
198
|
-
return thrust::pow(x, y);
|
199
|
-
}
|
200
|
-
|
201
|
-
// Other types and utilities
|
202
|
-
template <typename T>
|
203
|
-
using is_floating_point = cuda::std::is_floating_point<T>;
|
204
|
-
|
205
|
-
template <bool Cond, typename T = void>
|
206
|
-
using enable_if = cuda::std::enable_if<Cond, T>;
|
207
|
-
|
208
|
-
template <typename T>
|
209
|
-
using decay = cuda::std::decay<T>;
|
210
|
-
|
211
|
-
template <typename T>
|
212
|
-
using invoke_result = cuda::std::invoke_result<T>;
|
213
|
-
|
214
|
-
template <typename T1, typename T2>
|
215
|
-
using pair = cuda::std::pair<T1, T2>;
|
216
|
-
|
217
|
-
template <typename... Types>
|
218
|
-
using tuple = cuda::std::tuple<Types...>;
|
219
|
-
|
220
|
-
using cuda::std::ptrdiff_t;
|
221
|
-
using cuda::std::size_t;
|
222
|
-
using cuda::std::uint64_t;
|
223
|
-
|
224
|
-
#define XSF_ASSERT(a)
|
225
|
-
|
226
|
-
} // namespace std
|
227
|
-
|
228
|
-
#else
|
229
|
-
#define XSF_HOST_DEVICE
|
230
|
-
|
231
|
-
#include <algorithm>
|
232
|
-
#include <cassert>
|
233
|
-
#include <cmath>
|
234
|
-
#include <complex>
|
235
|
-
#include <cstddef>
|
236
|
-
#include <cstdint>
|
237
|
-
#include <iterator>
|
238
|
-
#include <limits>
|
239
|
-
#include <math.h>
|
240
|
-
#include <tuple>
|
241
|
-
#include <type_traits>
|
242
|
-
#include <utility>
|
243
|
-
|
244
|
-
#ifdef DEBUG
|
245
|
-
#define XSF_ASSERT(a) assert(a)
|
246
|
-
#else
|
247
|
-
#define XSF_ASSERT(a)
|
248
|
-
#endif
|
249
|
-
|
250
|
-
namespace xsf {
|
251
|
-
|
252
|
-
// basic
|
253
|
-
using std::abs;
|
254
|
-
|
255
|
-
// exponential
|
256
|
-
using std::exp;
|
257
|
-
|
258
|
-
// power
|
259
|
-
using std::sqrt;
|
260
|
-
|
261
|
-
// trigonometric
|
262
|
-
using std::cos;
|
263
|
-
using std::sin;
|
264
|
-
|
265
|
-
// floating-point manipulation
|
266
|
-
using std::copysign;
|
267
|
-
|
268
|
-
// classification and comparison
|
269
|
-
using std::isfinite;
|
270
|
-
using std::isinf;
|
271
|
-
using std::isnan;
|
272
|
-
using std::signbit;
|
273
|
-
|
274
|
-
// complex
|
275
|
-
using std::imag;
|
276
|
-
using std::real;
|
277
|
-
|
278
|
-
template <typename T>
|
279
|
-
struct remove_complex {
|
280
|
-
using type = T;
|
281
|
-
};
|
282
|
-
|
283
|
-
template <typename T>
|
284
|
-
struct remove_complex<std::complex<T>> {
|
285
|
-
using type = T;
|
286
|
-
};
|
287
|
-
|
288
|
-
template <typename T>
|
289
|
-
using remove_complex_t = typename remove_complex<T>::type;
|
290
|
-
|
291
|
-
template <typename T>
|
292
|
-
struct complex_type {
|
293
|
-
using type = std::complex<T>;
|
294
|
-
};
|
295
|
-
|
296
|
-
template <typename T>
|
297
|
-
using complex_type_t = typename complex_type<T>::type;
|
298
|
-
|
299
|
-
template <typename T>
|
300
|
-
using complex = complex_type_t<T>;
|
301
|
-
|
302
|
-
} // namespace xsf
|
303
|
-
|
304
|
-
#endif
|
scipy/special/xsf/digamma.h
DELETED
@@ -1,205 +0,0 @@
|
|
1
|
-
/* Translated from Cython into C++ by SciPy developers in 2024.
|
2
|
-
* Original header comment appears below.
|
3
|
-
*/
|
4
|
-
|
5
|
-
/* An implementation of the digamma function for complex arguments.
|
6
|
-
*
|
7
|
-
* Author: Josh Wilson
|
8
|
-
*
|
9
|
-
* Distributed under the same license as Scipy.
|
10
|
-
*
|
11
|
-
* Sources:
|
12
|
-
* [1] "The Digital Library of Mathematical Functions", dlmf.nist.gov
|
13
|
-
*
|
14
|
-
* [2] mpmath (version 0.19), http://mpmath.org
|
15
|
-
*/
|
16
|
-
|
17
|
-
#pragma once
|
18
|
-
|
19
|
-
#include "cephes/psi.h"
|
20
|
-
#include "cephes/zeta.h"
|
21
|
-
#include "config.h"
|
22
|
-
#include "error.h"
|
23
|
-
#include "trig.h"
|
24
|
-
|
25
|
-
namespace xsf {
|
26
|
-
namespace detail {
|
27
|
-
// All of the following were computed with mpmath
|
28
|
-
// Location of the positive root
|
29
|
-
constexpr double digamma_posroot = 1.4616321449683623;
|
30
|
-
// Value of the positive root
|
31
|
-
constexpr double digamma_posrootval = -9.2412655217294275e-17;
|
32
|
-
// Location of the negative root
|
33
|
-
constexpr double digamma_negroot = -0.504083008264455409;
|
34
|
-
// Value of the negative root
|
35
|
-
constexpr double digamma_negrootval = 7.2897639029768949e-17;
|
36
|
-
|
37
|
-
template <typename T>
|
38
|
-
XSF_HOST_DEVICE T digamma_zeta_series(T z, double root, double rootval) {
|
39
|
-
T res = rootval;
|
40
|
-
T coeff = -1.0;
|
41
|
-
|
42
|
-
z = z - root;
|
43
|
-
T term;
|
44
|
-
for (int n = 1; n < 100; n++) {
|
45
|
-
coeff *= -z;
|
46
|
-
term = coeff * cephes::zeta(n + 1, root);
|
47
|
-
res += term;
|
48
|
-
if (std::abs(term) < std::numeric_limits<double>::epsilon() * std::abs(res)) {
|
49
|
-
break;
|
50
|
-
}
|
51
|
-
}
|
52
|
-
return res;
|
53
|
-
}
|
54
|
-
|
55
|
-
XSF_HOST_DEVICE inline std::complex<double>
|
56
|
-
digamma_forward_recurrence(std::complex<double> z, std::complex<double> psiz, int n) {
|
57
|
-
/* Compute digamma(z + n) using digamma(z) using the recurrence
|
58
|
-
* relation
|
59
|
-
*
|
60
|
-
* digamma(z + 1) = digamma(z) + 1/z.
|
61
|
-
*
|
62
|
-
* See https://dlmf.nist.gov/5.5#E2 */
|
63
|
-
std::complex<double> res = psiz;
|
64
|
-
|
65
|
-
for (int k = 0; k < n; k++) {
|
66
|
-
res += 1.0 / (z + static_cast<double>(k));
|
67
|
-
}
|
68
|
-
return res;
|
69
|
-
}
|
70
|
-
|
71
|
-
XSF_HOST_DEVICE inline std::complex<double>
|
72
|
-
digamma_backward_recurrence(std::complex<double> z, std::complex<double> psiz, int n) {
|
73
|
-
/* Compute digamma(z - n) using digamma(z) and a recurrence relation. */
|
74
|
-
std::complex<double> res = psiz;
|
75
|
-
|
76
|
-
for (int k = 1; k < n + 1; k++) {
|
77
|
-
res -= 1.0 / (z - static_cast<double>(k));
|
78
|
-
}
|
79
|
-
return res;
|
80
|
-
}
|
81
|
-
|
82
|
-
XSF_HOST_DEVICE inline std::complex<double> digamma_asymptotic_series(std::complex<double> z) {
|
83
|
-
/* Evaluate digamma using an asymptotic series. See
|
84
|
-
*
|
85
|
-
* https://dlmf.nist.gov/5.11#E2 */
|
86
|
-
double bernoulli2k[] = {0.166666666666666667, -0.0333333333333333333, 0.0238095238095238095,
|
87
|
-
-0.0333333333333333333, 0.0757575757575757576, -0.253113553113553114,
|
88
|
-
1.16666666666666667, -7.09215686274509804, 54.9711779448621554,
|
89
|
-
-529.124242424242424, 6192.12318840579710, -86580.2531135531136,
|
90
|
-
1425517.16666666667, -27298231.0678160920, 601580873.900642368,
|
91
|
-
-15116315767.0921569};
|
92
|
-
std::complex<double> rzz = 1.0 / z / z;
|
93
|
-
std::complex<double> zfac = 1.0;
|
94
|
-
std::complex<double> term;
|
95
|
-
std::complex<double> res;
|
96
|
-
|
97
|
-
if (!(std::isfinite(z.real()) && std::isfinite(z.imag()))) {
|
98
|
-
/* Check for infinity (or nan) and return early.
|
99
|
-
* Result of division by complex infinity is implementation dependent.
|
100
|
-
* and has been observed to vary between C++ stdlib and CUDA stdlib.
|
101
|
-
*/
|
102
|
-
return std::log(z);
|
103
|
-
}
|
104
|
-
|
105
|
-
res = std::log(z) - 0.5 / z;
|
106
|
-
|
107
|
-
for (int k = 1; k < 17; k++) {
|
108
|
-
zfac *= rzz;
|
109
|
-
term = -bernoulli2k[k - 1] * zfac / (2 * static_cast<double>(k));
|
110
|
-
res += term;
|
111
|
-
if (std::abs(term) < std::numeric_limits<double>::epsilon() * std::abs(res)) {
|
112
|
-
break;
|
113
|
-
}
|
114
|
-
}
|
115
|
-
return res;
|
116
|
-
}
|
117
|
-
|
118
|
-
} // namespace detail
|
119
|
-
|
120
|
-
XSF_HOST_DEVICE inline double digamma(double z) {
|
121
|
-
/* Wrap Cephes' psi to take advantage of the series expansion around
|
122
|
-
* the smallest negative zero.
|
123
|
-
*/
|
124
|
-
if (std::abs(z - detail::digamma_negroot) < 0.3) {
|
125
|
-
return detail::digamma_zeta_series(z, detail::digamma_negroot, detail::digamma_negrootval);
|
126
|
-
}
|
127
|
-
return cephes::psi(z);
|
128
|
-
}
|
129
|
-
|
130
|
-
XSF_HOST_DEVICE inline float digamma(float z) { return static_cast<float>(digamma(static_cast<double>(z))); }
|
131
|
-
|
132
|
-
XSF_HOST_DEVICE inline std::complex<double> digamma(std::complex<double> z) {
|
133
|
-
/*
|
134
|
-
* Compute the digamma function for complex arguments. The strategy
|
135
|
-
* is:
|
136
|
-
*
|
137
|
-
* - Around the two zeros closest to the origin (posroot and negroot)
|
138
|
-
* use a Taylor series with precomputed zero order coefficient.
|
139
|
-
* - If close to the origin, use a recurrence relation to step away
|
140
|
-
* from the origin.
|
141
|
-
* - If close to the negative real axis, use the reflection formula
|
142
|
-
* to move to the right halfplane.
|
143
|
-
* - If |z| is large (> 16), use the asymptotic series.
|
144
|
-
* - If |z| is small, use a recurrence relation to make |z| large
|
145
|
-
* enough to use the asymptotic series.
|
146
|
-
*/
|
147
|
-
double absz = std::abs(z);
|
148
|
-
std::complex<double> res = 0;
|
149
|
-
/* Use the asymptotic series for z away from the negative real axis
|
150
|
-
* with abs(z) > smallabsz. */
|
151
|
-
int smallabsz = 16;
|
152
|
-
/* Use the reflection principle for z with z.real < 0 that are within
|
153
|
-
* smallimag of the negative real axis.
|
154
|
-
* int smallimag = 6 # unused below except in a comment */
|
155
|
-
|
156
|
-
if (z.real() <= 0.0 && std::ceil(z.real()) == z) {
|
157
|
-
// Poles
|
158
|
-
set_error("digamma", SF_ERROR_SINGULAR, NULL);
|
159
|
-
return {std::numeric_limits<double>::quiet_NaN(), std::numeric_limits<double>::quiet_NaN()};
|
160
|
-
}
|
161
|
-
if (std::abs(z - detail::digamma_negroot) < 0.3) {
|
162
|
-
// First negative root.
|
163
|
-
return detail::digamma_zeta_series(z, detail::digamma_negroot, detail::digamma_negrootval);
|
164
|
-
}
|
165
|
-
|
166
|
-
if (z.real() < 0 and std::abs(z.imag()) < smallabsz) {
|
167
|
-
/* Reflection formula for digamma. See
|
168
|
-
*
|
169
|
-
*https://dlmf.nist.gov/5.5#E4
|
170
|
-
*/
|
171
|
-
res = -M_PI * cospi(z) / sinpi(z);
|
172
|
-
z = 1.0 - z;
|
173
|
-
absz = std::abs(z);
|
174
|
-
}
|
175
|
-
|
176
|
-
if (absz < 0.5) {
|
177
|
-
/* Use one step of the recurrence relation to step away from
|
178
|
-
* the pole. */
|
179
|
-
res = -1.0 / z;
|
180
|
-
z += 1.0;
|
181
|
-
absz = std::abs(z);
|
182
|
-
}
|
183
|
-
|
184
|
-
if (std::abs(z - detail::digamma_posroot) < 0.5) {
|
185
|
-
res += detail::digamma_zeta_series(z, detail::digamma_posroot, detail::digamma_posrootval);
|
186
|
-
} else if (absz > smallabsz) {
|
187
|
-
res += detail::digamma_asymptotic_series(z);
|
188
|
-
} else if (z.real() >= 0.0) {
|
189
|
-
double n = std::trunc(smallabsz - absz) + 1;
|
190
|
-
std::complex<double> init = detail::digamma_asymptotic_series(z + n);
|
191
|
-
res += detail::digamma_backward_recurrence(z + n, init, n);
|
192
|
-
} else {
|
193
|
-
// z.real() < 0, absz < smallabsz, and z.imag() > smallimag
|
194
|
-
double n = std::trunc(smallabsz - absz) - 1;
|
195
|
-
std::complex<double> init = detail::digamma_asymptotic_series(z - n);
|
196
|
-
res += detail::digamma_forward_recurrence(z - n, init, n);
|
197
|
-
}
|
198
|
-
return res;
|
199
|
-
}
|
200
|
-
|
201
|
-
XSF_HOST_DEVICE inline std::complex<float> digamma(std::complex<float> z) {
|
202
|
-
return static_cast<std::complex<float>>(digamma(static_cast<std::complex<double>>(z)));
|
203
|
-
}
|
204
|
-
|
205
|
-
} // namespace xsf
|
scipy/special/xsf/error.h
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
typedef enum {
|
4
|
-
SF_ERROR_OK = 0, /* no error */
|
5
|
-
SF_ERROR_SINGULAR, /* singularity encountered */
|
6
|
-
SF_ERROR_UNDERFLOW, /* floating point underflow */
|
7
|
-
SF_ERROR_OVERFLOW, /* floating point overflow */
|
8
|
-
SF_ERROR_SLOW, /* too many iterations required */
|
9
|
-
SF_ERROR_LOSS, /* loss of precision */
|
10
|
-
SF_ERROR_NO_RESULT, /* no result obtained */
|
11
|
-
SF_ERROR_DOMAIN, /* out of domain */
|
12
|
-
SF_ERROR_ARG, /* invalid input parameter */
|
13
|
-
SF_ERROR_OTHER, /* unclassified error */
|
14
|
-
SF_ERROR_MEMORY, /* memory allocation failed */
|
15
|
-
SF_ERROR__LAST
|
16
|
-
} sf_error_t;
|
17
|
-
|
18
|
-
#ifdef __cplusplus
|
19
|
-
|
20
|
-
#include "config.h"
|
21
|
-
|
22
|
-
namespace xsf {
|
23
|
-
|
24
|
-
#ifndef SP_SPECFUN_ERROR
|
25
|
-
XSF_HOST_DEVICE inline void set_error(const char *func_name, sf_error_t code, const char *fmt, ...) {
|
26
|
-
// nothing
|
27
|
-
}
|
28
|
-
#else
|
29
|
-
void set_error(const char *func_name, sf_error_t code, const char *fmt, ...);
|
30
|
-
#endif
|
31
|
-
|
32
|
-
template <typename T>
|
33
|
-
XSF_HOST_DEVICE void set_error_and_nan(const char *name, sf_error_t code, T &value) {
|
34
|
-
if (code != SF_ERROR_OK) {
|
35
|
-
set_error(name, code, nullptr);
|
36
|
-
|
37
|
-
if (code == SF_ERROR_DOMAIN || code == SF_ERROR_OVERFLOW || code == SF_ERROR_NO_RESULT) {
|
38
|
-
value = std::numeric_limits<T>::quiet_NaN();
|
39
|
-
}
|
40
|
-
}
|
41
|
-
}
|
42
|
-
|
43
|
-
template <typename T>
|
44
|
-
XSF_HOST_DEVICE void set_error_and_nan(const char *name, sf_error_t code, std::complex<T> &value) {
|
45
|
-
if (code != SF_ERROR_OK) {
|
46
|
-
set_error(name, code, nullptr);
|
47
|
-
|
48
|
-
if (code == SF_ERROR_DOMAIN || code == SF_ERROR_OVERFLOW || code == SF_ERROR_NO_RESULT) {
|
49
|
-
value.real(std::numeric_limits<T>::quiet_NaN());
|
50
|
-
value.imag(std::numeric_limits<T>::quiet_NaN());
|
51
|
-
}
|
52
|
-
}
|
53
|
-
}
|
54
|
-
|
55
|
-
} // namespace xsf
|
56
|
-
|
57
|
-
#endif
|
scipy/special/xsf/evalpoly.h
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
/* Translated from Cython into C++ by SciPy developers in 2024.
|
2
|
-
*
|
3
|
-
* Original author: Josh Wilson, 2016.
|
4
|
-
*/
|
5
|
-
|
6
|
-
/* Evaluate polynomials.
|
7
|
-
*
|
8
|
-
* All of the coefficients are stored in reverse order, i.e. if the
|
9
|
-
* polynomial is
|
10
|
-
*
|
11
|
-
* u_n x^n + u_{n - 1} x^{n - 1} + ... + u_0,
|
12
|
-
*
|
13
|
-
* then coeffs[0] = u_n, coeffs[1] = u_{n - 1}, ..., coeffs[n] = u_0.
|
14
|
-
*
|
15
|
-
* References
|
16
|
-
* ----------
|
17
|
-
* [1] Knuth, "The Art of Computer Programming, Volume II"
|
18
|
-
*/
|
19
|
-
|
20
|
-
#pragma once
|
21
|
-
|
22
|
-
#include "config.h"
|
23
|
-
|
24
|
-
namespace xsf {
|
25
|
-
|
26
|
-
XSF_HOST_DEVICE inline std::complex<double> cevalpoly(const double *coeffs, int degree, std::complex<double> z) {
|
27
|
-
/* Evaluate a polynomial with real coefficients at a complex point.
|
28
|
-
*
|
29
|
-
* Uses equation (3) in section 4.6.4 of [1]. Note that it is more
|
30
|
-
* efficient than Horner's method.
|
31
|
-
*/
|
32
|
-
double a = coeffs[0];
|
33
|
-
double b = coeffs[1];
|
34
|
-
double r = 2 * z.real();
|
35
|
-
double s = std::norm(z);
|
36
|
-
double tmp;
|
37
|
-
|
38
|
-
for (int j = 2; j < degree + 1; j++) {
|
39
|
-
tmp = b;
|
40
|
-
b = std::fma(-s, a, coeffs[j]);
|
41
|
-
a = std::fma(r, a, tmp);
|
42
|
-
}
|
43
|
-
|
44
|
-
return z * a + b;
|
45
|
-
}
|
46
|
-
|
47
|
-
} // namespace xsf
|