scipy 1.15.2__cp313-cp313t-macosx_12_0_arm64.whl → 1.16.0rc1__cp313-cp313t-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.
Files changed (638) hide show
  1. scipy/.dylibs/libscipy_openblas.dylib +0 -0
  2. scipy/__config__.py +7 -7
  3. scipy/__init__.py +3 -6
  4. scipy/_cyutility.cpython-313t-darwin.so +0 -0
  5. scipy/_lib/_array_api.py +497 -161
  6. scipy/_lib/_array_api_compat_vendor.py +9 -0
  7. scipy/_lib/_bunch.py +4 -0
  8. scipy/_lib/_ccallback_c.cpython-313t-darwin.so +0 -0
  9. scipy/_lib/_docscrape.py +1 -1
  10. scipy/_lib/_elementwise_iterative_method.py +15 -26
  11. scipy/_lib/_sparse.py +41 -0
  12. scipy/_lib/_test_ccallback.cpython-313t-darwin.so +0 -0
  13. scipy/_lib/_test_deprecation_call.cpython-313t-darwin.so +0 -0
  14. scipy/_lib/_test_deprecation_def.cpython-313t-darwin.so +0 -0
  15. scipy/_lib/_testutils.py +6 -2
  16. scipy/_lib/_util.py +222 -125
  17. scipy/_lib/array_api_compat/__init__.py +4 -4
  18. scipy/_lib/array_api_compat/_internal.py +19 -6
  19. scipy/_lib/array_api_compat/common/__init__.py +1 -1
  20. scipy/_lib/array_api_compat/common/_aliases.py +365 -193
  21. scipy/_lib/array_api_compat/common/_fft.py +94 -64
  22. scipy/_lib/array_api_compat/common/_helpers.py +413 -180
  23. scipy/_lib/array_api_compat/common/_linalg.py +116 -40
  24. scipy/_lib/array_api_compat/common/_typing.py +179 -10
  25. scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
  26. scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
  27. scipy/_lib/array_api_compat/cupy/_info.py +16 -6
  28. scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
  29. scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
  30. scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
  31. scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
  32. scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
  33. scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
  34. scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
  35. scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
  36. scipy/_lib/array_api_compat/numpy/_info.py +36 -16
  37. scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
  38. scipy/_lib/array_api_compat/numpy/fft.py +11 -5
  39. scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
  40. scipy/_lib/array_api_compat/torch/__init__.py +3 -5
  41. scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
  42. scipy/_lib/array_api_compat/torch/_info.py +27 -16
  43. scipy/_lib/array_api_compat/torch/_typing.py +3 -0
  44. scipy/_lib/array_api_compat/torch/fft.py +17 -18
  45. scipy/_lib/array_api_compat/torch/linalg.py +16 -16
  46. scipy/_lib/array_api_extra/__init__.py +26 -3
  47. scipy/_lib/array_api_extra/_delegation.py +171 -0
  48. scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
  49. scipy/_lib/array_api_extra/_lib/_at.py +463 -0
  50. scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
  51. scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
  52. scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
  53. scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
  54. scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
  55. scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
  56. scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
  57. scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
  58. scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
  59. scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
  60. scipy/_lib/array_api_extra/testing.py +359 -0
  61. scipy/_lib/decorator.py +2 -2
  62. scipy/_lib/doccer.py +1 -7
  63. scipy/_lib/messagestream.cpython-313t-darwin.so +0 -0
  64. scipy/_lib/pyprima/__init__.py +212 -0
  65. scipy/_lib/pyprima/cobyla/__init__.py +0 -0
  66. scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
  67. scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
  68. scipy/_lib/pyprima/cobyla/geometry.py +226 -0
  69. scipy/_lib/pyprima/cobyla/initialize.py +215 -0
  70. scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
  71. scipy/_lib/pyprima/cobyla/update.py +289 -0
  72. scipy/_lib/pyprima/common/__init__.py +0 -0
  73. scipy/_lib/pyprima/common/_bounds.py +34 -0
  74. scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
  75. scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
  76. scipy/_lib/pyprima/common/_project.py +173 -0
  77. scipy/_lib/pyprima/common/checkbreak.py +93 -0
  78. scipy/_lib/pyprima/common/consts.py +47 -0
  79. scipy/_lib/pyprima/common/evaluate.py +99 -0
  80. scipy/_lib/pyprima/common/history.py +38 -0
  81. scipy/_lib/pyprima/common/infos.py +30 -0
  82. scipy/_lib/pyprima/common/linalg.py +435 -0
  83. scipy/_lib/pyprima/common/message.py +290 -0
  84. scipy/_lib/pyprima/common/powalg.py +131 -0
  85. scipy/_lib/pyprima/common/preproc.py +277 -0
  86. scipy/_lib/pyprima/common/present.py +5 -0
  87. scipy/_lib/pyprima/common/ratio.py +54 -0
  88. scipy/_lib/pyprima/common/redrho.py +47 -0
  89. scipy/_lib/pyprima/common/selectx.py +296 -0
  90. scipy/_lib/tests/test__util.py +105 -121
  91. scipy/_lib/tests/test_array_api.py +169 -34
  92. scipy/_lib/tests/test_bunch.py +7 -0
  93. scipy/_lib/tests/test_ccallback.py +2 -10
  94. scipy/_lib/tests/test_public_api.py +13 -0
  95. scipy/cluster/_hierarchy.cpython-313t-darwin.so +0 -0
  96. scipy/cluster/_optimal_leaf_ordering.cpython-313t-darwin.so +0 -0
  97. scipy/cluster/_vq.cpython-313t-darwin.so +0 -0
  98. scipy/cluster/hierarchy.py +393 -223
  99. scipy/cluster/tests/test_hierarchy.py +273 -335
  100. scipy/cluster/tests/test_vq.py +45 -61
  101. scipy/cluster/vq.py +39 -35
  102. scipy/conftest.py +263 -157
  103. scipy/constants/_constants.py +4 -1
  104. scipy/constants/tests/test_codata.py +2 -2
  105. scipy/constants/tests/test_constants.py +11 -18
  106. scipy/datasets/_download_all.py +15 -1
  107. scipy/datasets/_fetchers.py +7 -1
  108. scipy/datasets/_utils.py +1 -1
  109. scipy/differentiate/_differentiate.py +25 -25
  110. scipy/differentiate/tests/test_differentiate.py +24 -25
  111. scipy/fft/_basic.py +20 -0
  112. scipy/fft/_helper.py +3 -34
  113. scipy/fft/_pocketfft/helper.py +29 -1
  114. scipy/fft/_pocketfft/tests/test_basic.py +2 -4
  115. scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
  116. scipy/fft/_realtransforms.py +13 -0
  117. scipy/fft/tests/test_basic.py +27 -25
  118. scipy/fft/tests/test_fftlog.py +16 -7
  119. scipy/fft/tests/test_helper.py +18 -34
  120. scipy/fft/tests/test_real_transforms.py +8 -10
  121. scipy/fftpack/convolve.cpython-313t-darwin.so +0 -0
  122. scipy/fftpack/tests/test_basic.py +2 -4
  123. scipy/fftpack/tests/test_real_transforms.py +8 -9
  124. scipy/integrate/_bvp.py +9 -3
  125. scipy/integrate/_cubature.py +3 -2
  126. scipy/integrate/_dop.cpython-313t-darwin.so +0 -0
  127. scipy/integrate/_ivp/common.py +3 -3
  128. scipy/integrate/_ivp/ivp.py +9 -2
  129. scipy/integrate/_ivp/tests/test_ivp.py +19 -0
  130. scipy/integrate/_lsoda.cpython-313t-darwin.so +0 -0
  131. scipy/integrate/_ode.py +9 -2
  132. scipy/integrate/_odepack.cpython-313t-darwin.so +0 -0
  133. scipy/integrate/_quad_vec.py +21 -29
  134. scipy/integrate/_quadpack.cpython-313t-darwin.so +0 -0
  135. scipy/integrate/_quadpack_py.py +11 -7
  136. scipy/integrate/_quadrature.py +3 -3
  137. scipy/integrate/_rules/_base.py +2 -2
  138. scipy/integrate/_tanhsinh.py +57 -54
  139. scipy/integrate/_test_odeint_banded.cpython-313t-darwin.so +0 -0
  140. scipy/integrate/_vode.cpython-313t-darwin.so +0 -0
  141. scipy/integrate/tests/test__quad_vec.py +0 -6
  142. scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
  143. scipy/integrate/tests/test_cubature.py +21 -35
  144. scipy/integrate/tests/test_quadrature.py +6 -8
  145. scipy/integrate/tests/test_tanhsinh.py +61 -43
  146. scipy/interpolate/__init__.py +70 -58
  147. scipy/interpolate/_bary_rational.py +22 -22
  148. scipy/interpolate/_bsplines.py +119 -66
  149. scipy/interpolate/_cubic.py +65 -50
  150. scipy/interpolate/_dfitpack.cpython-313t-darwin.so +0 -0
  151. scipy/interpolate/_dierckx.cpython-313t-darwin.so +0 -0
  152. scipy/interpolate/_fitpack.cpython-313t-darwin.so +0 -0
  153. scipy/interpolate/_fitpack2.py +9 -6
  154. scipy/interpolate/_fitpack_impl.py +32 -26
  155. scipy/interpolate/_fitpack_repro.py +23 -19
  156. scipy/interpolate/_interpnd.cpython-313t-darwin.so +0 -0
  157. scipy/interpolate/_interpolate.py +30 -12
  158. scipy/interpolate/_ndbspline.py +13 -18
  159. scipy/interpolate/_ndgriddata.py +5 -8
  160. scipy/interpolate/_polyint.py +95 -31
  161. scipy/interpolate/_ppoly.cpython-313t-darwin.so +0 -0
  162. scipy/interpolate/_rbf.py +2 -2
  163. scipy/interpolate/_rbfinterp.py +1 -1
  164. scipy/interpolate/_rbfinterp_pythran.cpython-313t-darwin.so +0 -0
  165. scipy/interpolate/_rgi.py +31 -26
  166. scipy/interpolate/_rgi_cython.cpython-313t-darwin.so +0 -0
  167. scipy/interpolate/dfitpack.py +0 -20
  168. scipy/interpolate/interpnd.py +1 -2
  169. scipy/interpolate/tests/test_bary_rational.py +2 -2
  170. scipy/interpolate/tests/test_bsplines.py +97 -1
  171. scipy/interpolate/tests/test_fitpack2.py +39 -1
  172. scipy/interpolate/tests/test_interpnd.py +32 -20
  173. scipy/interpolate/tests/test_interpolate.py +48 -4
  174. scipy/interpolate/tests/test_rgi.py +2 -1
  175. scipy/io/_fast_matrix_market/__init__.py +2 -0
  176. scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
  177. scipy/io/_harwell_boeing/hb.py +7 -11
  178. scipy/io/_idl.py +5 -7
  179. scipy/io/_netcdf.py +15 -5
  180. scipy/io/_test_fortran.cpython-313t-darwin.so +0 -0
  181. scipy/io/arff/tests/test_arffread.py +3 -3
  182. scipy/io/matlab/__init__.py +5 -3
  183. scipy/io/matlab/_mio.py +4 -1
  184. scipy/io/matlab/_mio5.py +19 -13
  185. scipy/io/matlab/_mio5_utils.cpython-313t-darwin.so +0 -0
  186. scipy/io/matlab/_mio_utils.cpython-313t-darwin.so +0 -0
  187. scipy/io/matlab/_miobase.py +4 -1
  188. scipy/io/matlab/_streams.cpython-313t-darwin.so +0 -0
  189. scipy/io/matlab/tests/test_mio.py +46 -18
  190. scipy/io/matlab/tests/test_mio_funcs.py +1 -1
  191. scipy/io/tests/test_mmio.py +7 -1
  192. scipy/io/tests/test_wavfile.py +41 -0
  193. scipy/io/wavfile.py +57 -10
  194. scipy/linalg/_basic.py +113 -86
  195. scipy/linalg/_cythonized_array_utils.cpython-313t-darwin.so +0 -0
  196. scipy/linalg/_decomp.py +22 -9
  197. scipy/linalg/_decomp_cholesky.py +28 -13
  198. scipy/linalg/_decomp_cossin.py +45 -30
  199. scipy/linalg/_decomp_interpolative.cpython-313t-darwin.so +0 -0
  200. scipy/linalg/_decomp_ldl.py +4 -1
  201. scipy/linalg/_decomp_lu.py +18 -6
  202. scipy/linalg/_decomp_lu_cython.cpython-313t-darwin.so +0 -0
  203. scipy/linalg/_decomp_polar.py +2 -0
  204. scipy/linalg/_decomp_qr.py +6 -2
  205. scipy/linalg/_decomp_qz.py +3 -0
  206. scipy/linalg/_decomp_schur.py +3 -1
  207. scipy/linalg/_decomp_svd.py +13 -2
  208. scipy/linalg/_decomp_update.cpython-313t-darwin.so +0 -0
  209. scipy/linalg/_expm_frechet.py +4 -0
  210. scipy/linalg/_fblas.cpython-313t-darwin.so +0 -0
  211. scipy/linalg/_flapack.cpython-313t-darwin.so +0 -0
  212. scipy/linalg/_linalg_pythran.cpython-313t-darwin.so +0 -0
  213. scipy/linalg/_matfuncs.py +187 -4
  214. scipy/linalg/_matfuncs_expm.cpython-313t-darwin.so +0 -0
  215. scipy/linalg/_matfuncs_schur_sqrtm.cpython-313t-darwin.so +0 -0
  216. scipy/linalg/_matfuncs_sqrtm.py +1 -99
  217. scipy/linalg/_matfuncs_sqrtm_triu.cpython-313t-darwin.so +0 -0
  218. scipy/linalg/_procrustes.py +2 -0
  219. scipy/linalg/_sketches.py +17 -6
  220. scipy/linalg/_solve_toeplitz.cpython-313t-darwin.so +0 -0
  221. scipy/linalg/_solvers.py +7 -2
  222. scipy/linalg/_special_matrices.py +26 -36
  223. scipy/linalg/cython_blas.cpython-313t-darwin.so +0 -0
  224. scipy/linalg/cython_lapack.cpython-313t-darwin.so +0 -0
  225. scipy/linalg/lapack.py +22 -2
  226. scipy/linalg/tests/_cython_examples/meson.build +7 -0
  227. scipy/linalg/tests/test_basic.py +31 -16
  228. scipy/linalg/tests/test_batch.py +588 -0
  229. scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
  230. scipy/linalg/tests/test_decomp.py +40 -3
  231. scipy/linalg/tests/test_decomp_cossin.py +14 -0
  232. scipy/linalg/tests/test_decomp_ldl.py +1 -1
  233. scipy/linalg/tests/test_interpolative.py +17 -0
  234. scipy/linalg/tests/test_lapack.py +115 -7
  235. scipy/linalg/tests/test_matfuncs.py +157 -102
  236. scipy/linalg/tests/test_procrustes.py +0 -7
  237. scipy/linalg/tests/test_solve_toeplitz.py +1 -1
  238. scipy/linalg/tests/test_special_matrices.py +1 -5
  239. scipy/ndimage/__init__.py +1 -0
  240. scipy/ndimage/_cytest.cpython-313t-darwin.so +0 -0
  241. scipy/ndimage/_delegators.py +8 -2
  242. scipy/ndimage/_filters.py +433 -5
  243. scipy/ndimage/_interpolation.py +36 -6
  244. scipy/ndimage/_measurements.py +4 -2
  245. scipy/ndimage/_morphology.py +5 -0
  246. scipy/ndimage/_nd_image.cpython-313t-darwin.so +0 -0
  247. scipy/ndimage/_ndimage_api.py +2 -1
  248. scipy/ndimage/_ni_docstrings.py +5 -1
  249. scipy/ndimage/_ni_label.cpython-313t-darwin.so +0 -0
  250. scipy/ndimage/_ni_support.py +1 -5
  251. scipy/ndimage/_rank_filter_1d.cpython-313t-darwin.so +0 -0
  252. scipy/ndimage/_support_alternative_backends.py +18 -6
  253. scipy/ndimage/tests/test_filters.py +351 -259
  254. scipy/ndimage/tests/test_fourier.py +7 -9
  255. scipy/ndimage/tests/test_interpolation.py +68 -61
  256. scipy/ndimage/tests/test_measurements.py +18 -35
  257. scipy/ndimage/tests/test_morphology.py +143 -131
  258. scipy/ndimage/tests/test_splines.py +1 -3
  259. scipy/odr/__odrpack.cpython-313t-darwin.so +0 -0
  260. scipy/optimize/_basinhopping.py +13 -7
  261. scipy/optimize/_bglu_dense.cpython-313t-darwin.so +0 -0
  262. scipy/optimize/_bracket.py +46 -26
  263. scipy/optimize/_chandrupatla.py +9 -10
  264. scipy/optimize/_cobyla_py.py +104 -123
  265. scipy/optimize/_constraints.py +14 -10
  266. scipy/optimize/_differentiable_functions.py +371 -230
  267. scipy/optimize/_differentialevolution.py +4 -3
  268. scipy/optimize/_direct.cpython-313t-darwin.so +0 -0
  269. scipy/optimize/_dual_annealing.py +1 -1
  270. scipy/optimize/_elementwise.py +1 -4
  271. scipy/optimize/_group_columns.cpython-313t-darwin.so +0 -0
  272. scipy/optimize/_highspy/_highs_wrapper.py +6 -4
  273. scipy/optimize/_lbfgsb.cpython-313t-darwin.so +0 -0
  274. scipy/optimize/_lbfgsb_py.py +57 -16
  275. scipy/optimize/_linprog_doc.py +2 -2
  276. scipy/optimize/_linprog_highs.py +11 -11
  277. scipy/optimize/_linprog_ip.py +25 -10
  278. scipy/optimize/_linprog_util.py +18 -19
  279. scipy/optimize/_lsap.cpython-313t-darwin.so +0 -0
  280. scipy/optimize/_lsq/common.py +3 -3
  281. scipy/optimize/_lsq/dogbox.py +16 -2
  282. scipy/optimize/_lsq/givens_elimination.cpython-313t-darwin.so +0 -0
  283. scipy/optimize/_lsq/least_squares.py +198 -126
  284. scipy/optimize/_lsq/lsq_linear.py +6 -6
  285. scipy/optimize/_lsq/trf.py +35 -8
  286. scipy/optimize/_milp.py +3 -1
  287. scipy/optimize/_minimize.py +105 -36
  288. scipy/optimize/_minpack.cpython-313t-darwin.so +0 -0
  289. scipy/optimize/_minpack_py.py +21 -14
  290. scipy/optimize/_moduleTNC.cpython-313t-darwin.so +0 -0
  291. scipy/optimize/_nnls.py +20 -21
  292. scipy/optimize/_nonlin.py +34 -3
  293. scipy/optimize/_numdiff.py +288 -110
  294. scipy/optimize/_optimize.py +86 -48
  295. scipy/optimize/_pava_pybind.cpython-313t-darwin.so +0 -0
  296. scipy/optimize/_remove_redundancy.py +5 -5
  297. scipy/optimize/_root_scalar.py +1 -1
  298. scipy/optimize/_shgo.py +6 -0
  299. scipy/optimize/_shgo_lib/_complex.py +1 -1
  300. scipy/optimize/_slsqp_py.py +216 -124
  301. scipy/optimize/_slsqplib.cpython-313t-darwin.so +0 -0
  302. scipy/optimize/_spectral.py +1 -1
  303. scipy/optimize/_tnc.py +8 -1
  304. scipy/optimize/_trlib/_trlib.cpython-313t-darwin.so +0 -0
  305. scipy/optimize/_trustregion.py +20 -6
  306. scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
  307. scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
  308. scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
  309. scipy/optimize/_trustregion_constr/projections.py +12 -8
  310. scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
  311. scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
  312. scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
  313. scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
  314. scipy/optimize/_trustregion_exact.py +0 -1
  315. scipy/optimize/_zeros.cpython-313t-darwin.so +0 -0
  316. scipy/optimize/_zeros_py.py +97 -17
  317. scipy/optimize/cython_optimize/_zeros.cpython-313t-darwin.so +0 -0
  318. scipy/optimize/slsqp.py +0 -1
  319. scipy/optimize/tests/test__basinhopping.py +1 -1
  320. scipy/optimize/tests/test__differential_evolution.py +4 -4
  321. scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
  322. scipy/optimize/tests/test__numdiff.py +66 -22
  323. scipy/optimize/tests/test__remove_redundancy.py +2 -2
  324. scipy/optimize/tests/test__shgo.py +9 -1
  325. scipy/optimize/tests/test_bracket.py +71 -46
  326. scipy/optimize/tests/test_chandrupatla.py +133 -135
  327. scipy/optimize/tests/test_cobyla.py +74 -45
  328. scipy/optimize/tests/test_constraints.py +1 -1
  329. scipy/optimize/tests/test_differentiable_functions.py +226 -6
  330. scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
  331. scipy/optimize/tests/test_least_squares.py +125 -13
  332. scipy/optimize/tests/test_linear_assignment.py +3 -3
  333. scipy/optimize/tests/test_linprog.py +3 -3
  334. scipy/optimize/tests/test_lsq_linear.py +5 -5
  335. scipy/optimize/tests/test_minimize_constrained.py +2 -2
  336. scipy/optimize/tests/test_minpack.py +4 -4
  337. scipy/optimize/tests/test_nnls.py +43 -3
  338. scipy/optimize/tests/test_nonlin.py +36 -0
  339. scipy/optimize/tests/test_optimize.py +95 -17
  340. scipy/optimize/tests/test_slsqp.py +36 -4
  341. scipy/optimize/tests/test_zeros.py +34 -1
  342. scipy/signal/__init__.py +12 -23
  343. scipy/signal/_delegators.py +568 -0
  344. scipy/signal/_filter_design.py +459 -241
  345. scipy/signal/_fir_filter_design.py +262 -90
  346. scipy/signal/_lti_conversion.py +3 -2
  347. scipy/signal/_ltisys.py +118 -91
  348. scipy/signal/_max_len_seq_inner.cpython-313t-darwin.so +0 -0
  349. scipy/signal/_peak_finding_utils.cpython-313t-darwin.so +0 -0
  350. scipy/signal/_polyutils.py +172 -0
  351. scipy/signal/_short_time_fft.py +553 -76
  352. scipy/signal/_signal_api.py +30 -0
  353. scipy/signal/_signaltools.py +719 -396
  354. scipy/signal/_sigtools.cpython-313t-darwin.so +0 -0
  355. scipy/signal/_sosfilt.cpython-313t-darwin.so +0 -0
  356. scipy/signal/_spectral_py.py +221 -50
  357. scipy/signal/_spline.cpython-313t-darwin.so +0 -0
  358. scipy/signal/_spline_filters.py +108 -68
  359. scipy/signal/_support_alternative_backends.py +73 -0
  360. scipy/signal/_upfirdn.py +4 -1
  361. scipy/signal/_upfirdn_apply.cpython-313t-darwin.so +0 -0
  362. scipy/signal/_waveforms.py +2 -11
  363. scipy/signal/_wavelets.py +1 -1
  364. scipy/signal/fir_filter_design.py +1 -0
  365. scipy/signal/spline.py +4 -11
  366. scipy/signal/tests/_scipy_spectral_test_shim.py +5 -182
  367. scipy/signal/tests/test_bsplines.py +114 -79
  368. scipy/signal/tests/test_cont2discrete.py +9 -2
  369. scipy/signal/tests/test_filter_design.py +721 -481
  370. scipy/signal/tests/test_fir_filter_design.py +332 -140
  371. scipy/signal/tests/test_savitzky_golay.py +4 -3
  372. scipy/signal/tests/test_short_time_fft.py +231 -5
  373. scipy/signal/tests/test_signaltools.py +2149 -1348
  374. scipy/signal/tests/test_spectral.py +19 -6
  375. scipy/signal/tests/test_splines.py +161 -96
  376. scipy/signal/tests/test_upfirdn.py +84 -50
  377. scipy/signal/tests/test_waveforms.py +20 -0
  378. scipy/signal/tests/test_windows.py +607 -466
  379. scipy/signal/windows/_windows.py +287 -148
  380. scipy/sparse/__init__.py +23 -4
  381. scipy/sparse/_base.py +269 -120
  382. scipy/sparse/_bsr.py +7 -4
  383. scipy/sparse/_compressed.py +59 -234
  384. scipy/sparse/_construct.py +90 -38
  385. scipy/sparse/_coo.py +115 -181
  386. scipy/sparse/_csc.py +4 -4
  387. scipy/sparse/_csparsetools.cpython-313t-darwin.so +0 -0
  388. scipy/sparse/_csr.py +2 -2
  389. scipy/sparse/_data.py +48 -48
  390. scipy/sparse/_dia.py +105 -21
  391. scipy/sparse/_dok.py +0 -23
  392. scipy/sparse/_index.py +4 -4
  393. scipy/sparse/_matrix.py +23 -0
  394. scipy/sparse/_sparsetools.cpython-313t-darwin.so +0 -0
  395. scipy/sparse/_sputils.py +37 -22
  396. scipy/sparse/base.py +0 -9
  397. scipy/sparse/bsr.py +0 -14
  398. scipy/sparse/compressed.py +0 -23
  399. scipy/sparse/construct.py +0 -6
  400. scipy/sparse/coo.py +0 -14
  401. scipy/sparse/csc.py +0 -3
  402. scipy/sparse/csgraph/_flow.cpython-313t-darwin.so +0 -0
  403. scipy/sparse/csgraph/_matching.cpython-313t-darwin.so +0 -0
  404. scipy/sparse/csgraph/_min_spanning_tree.cpython-313t-darwin.so +0 -0
  405. scipy/sparse/csgraph/_reordering.cpython-313t-darwin.so +0 -0
  406. scipy/sparse/csgraph/_shortest_path.cpython-313t-darwin.so +0 -0
  407. scipy/sparse/csgraph/_tools.cpython-313t-darwin.so +0 -0
  408. scipy/sparse/csgraph/_traversal.cpython-313t-darwin.so +0 -0
  409. scipy/sparse/csgraph/tests/test_matching.py +14 -2
  410. scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
  411. scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
  412. scipy/sparse/csr.py +0 -5
  413. scipy/sparse/data.py +1 -6
  414. scipy/sparse/dia.py +0 -7
  415. scipy/sparse/dok.py +0 -10
  416. scipy/sparse/linalg/_dsolve/_superlu.cpython-313t-darwin.so +0 -0
  417. scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
  418. scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
  419. scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-313t-darwin.so +0 -0
  420. scipy/sparse/linalg/_eigen/arpack/arpack.py +28 -20
  421. scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
  422. scipy/sparse/linalg/_expm_multiply.py +8 -3
  423. scipy/sparse/linalg/_interface.py +29 -26
  424. scipy/sparse/linalg/_isolve/_gcrotmk.py +6 -5
  425. scipy/sparse/linalg/_isolve/iterative.py +51 -45
  426. scipy/sparse/linalg/_isolve/lgmres.py +6 -6
  427. scipy/sparse/linalg/_isolve/minres.py +5 -5
  428. scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
  429. scipy/sparse/linalg/_isolve/utils.py +2 -8
  430. scipy/sparse/linalg/_matfuncs.py +1 -1
  431. scipy/sparse/linalg/_norm.py +1 -1
  432. scipy/sparse/linalg/_propack/_cpropack.cpython-313t-darwin.so +0 -0
  433. scipy/sparse/linalg/_propack/_dpropack.cpython-313t-darwin.so +0 -0
  434. scipy/sparse/linalg/_propack/_spropack.cpython-313t-darwin.so +0 -0
  435. scipy/sparse/linalg/_propack/_zpropack.cpython-313t-darwin.so +0 -0
  436. scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
  437. scipy/sparse/linalg/tests/test_expm_multiply.py +10 -0
  438. scipy/sparse/linalg/tests/test_interface.py +35 -0
  439. scipy/sparse/linalg/tests/test_pydata_sparse.py +18 -0
  440. scipy/sparse/tests/test_arithmetic1d.py +5 -2
  441. scipy/sparse/tests/test_base.py +217 -40
  442. scipy/sparse/tests/test_common1d.py +17 -12
  443. scipy/sparse/tests/test_construct.py +1 -1
  444. scipy/sparse/tests/test_coo.py +272 -4
  445. scipy/sparse/tests/test_sparsetools.py +5 -0
  446. scipy/sparse/tests/test_sputils.py +36 -7
  447. scipy/spatial/_ckdtree.cpython-313t-darwin.so +0 -0
  448. scipy/spatial/_distance_pybind.cpython-313t-darwin.so +0 -0
  449. scipy/spatial/_distance_wrap.cpython-313t-darwin.so +0 -0
  450. scipy/spatial/_hausdorff.cpython-313t-darwin.so +0 -0
  451. scipy/spatial/_qhull.cpython-313t-darwin.so +0 -0
  452. scipy/spatial/_voronoi.cpython-313t-darwin.so +0 -0
  453. scipy/spatial/distance.py +49 -42
  454. scipy/spatial/tests/test_distance.py +3 -1
  455. scipy/spatial/tests/test_kdtree.py +1 -0
  456. scipy/spatial/tests/test_qhull.py +106 -2
  457. scipy/spatial/transform/__init__.py +5 -3
  458. scipy/spatial/transform/_rigid_transform.cpython-313t-darwin.so +0 -0
  459. scipy/spatial/transform/_rotation.cpython-313t-darwin.so +0 -0
  460. scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
  461. scipy/spatial/transform/tests/test_rotation.py +1342 -790
  462. scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
  463. scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
  464. scipy/special/__init__.py +1 -47
  465. scipy/special/_add_newdocs.py +34 -772
  466. scipy/special/_basic.py +22 -25
  467. scipy/special/_comb.cpython-313t-darwin.so +0 -0
  468. scipy/special/_ellip_harm_2.cpython-313t-darwin.so +0 -0
  469. scipy/special/_gufuncs.cpython-313t-darwin.so +0 -0
  470. scipy/special/_logsumexp.py +83 -69
  471. scipy/special/_orthogonal.pyi +1 -1
  472. scipy/special/_specfun.cpython-313t-darwin.so +0 -0
  473. scipy/special/_special_ufuncs.cpython-313t-darwin.so +0 -0
  474. scipy/special/_spherical_bessel.py +4 -4
  475. scipy/special/_support_alternative_backends.py +212 -119
  476. scipy/special/_test_internal.cpython-313t-darwin.so +0 -0
  477. scipy/special/_testutils.py +4 -4
  478. scipy/special/_ufuncs.cpython-313t-darwin.so +0 -0
  479. scipy/special/_ufuncs.pyi +1 -0
  480. scipy/special/_ufuncs.pyx +215 -1400
  481. scipy/special/_ufuncs_cxx.cpython-313t-darwin.so +0 -0
  482. scipy/special/_ufuncs_cxx.pxd +2 -15
  483. scipy/special/_ufuncs_cxx.pyx +5 -44
  484. scipy/special/_ufuncs_cxx_defs.h +2 -16
  485. scipy/special/_ufuncs_defs.h +0 -8
  486. scipy/special/cython_special.cpython-313t-darwin.so +0 -0
  487. scipy/special/cython_special.pxd +1 -1
  488. scipy/special/tests/_cython_examples/meson.build +10 -1
  489. scipy/special/tests/test_basic.py +153 -20
  490. scipy/special/tests/test_boost_ufuncs.py +3 -0
  491. scipy/special/tests/test_cdflib.py +35 -11
  492. scipy/special/tests/test_gammainc.py +16 -0
  493. scipy/special/tests/test_hyp2f1.py +23 -2
  494. scipy/special/tests/test_log1mexp.py +85 -0
  495. scipy/special/tests/test_logsumexp.py +220 -64
  496. scipy/special/tests/test_mpmath.py +1 -0
  497. scipy/special/tests/test_nan_inputs.py +1 -1
  498. scipy/special/tests/test_orthogonal.py +17 -18
  499. scipy/special/tests/test_sf_error.py +3 -2
  500. scipy/special/tests/test_sph_harm.py +6 -7
  501. scipy/special/tests/test_support_alternative_backends.py +211 -76
  502. scipy/stats/__init__.py +4 -1
  503. scipy/stats/_ansari_swilk_statistics.cpython-313t-darwin.so +0 -0
  504. scipy/stats/_axis_nan_policy.py +4 -3
  505. scipy/stats/_biasedurn.cpython-313t-darwin.so +0 -0
  506. scipy/stats/_continued_fraction.py +387 -0
  507. scipy/stats/_continuous_distns.py +296 -319
  508. scipy/stats/_covariance.py +6 -3
  509. scipy/stats/_discrete_distns.py +39 -32
  510. scipy/stats/_distn_infrastructure.py +39 -12
  511. scipy/stats/_distribution_infrastructure.py +900 -238
  512. scipy/stats/_entropy.py +7 -8
  513. scipy/{_lib → stats}/_finite_differences.py +1 -1
  514. scipy/stats/_hypotests.py +82 -49
  515. scipy/stats/_kde.py +53 -49
  516. scipy/stats/_ksstats.py +1 -1
  517. scipy/stats/_levy_stable/__init__.py +7 -15
  518. scipy/stats/_levy_stable/levyst.cpython-313t-darwin.so +0 -0
  519. scipy/stats/_morestats.py +112 -67
  520. scipy/stats/_mstats_basic.py +13 -17
  521. scipy/stats/_mstats_extras.py +8 -8
  522. scipy/stats/_multivariate.py +89 -113
  523. scipy/stats/_new_distributions.py +97 -20
  524. scipy/stats/_page_trend_test.py +12 -5
  525. scipy/stats/_probability_distribution.py +265 -43
  526. scipy/stats/_qmc.py +14 -9
  527. scipy/stats/_qmc_cy.cpython-313t-darwin.so +0 -0
  528. scipy/stats/_qmvnt.py +16 -95
  529. scipy/stats/_qmvnt_cy.cpython-313t-darwin.so +0 -0
  530. scipy/stats/_quantile.py +335 -0
  531. scipy/stats/_rcont/rcont.cpython-313t-darwin.so +0 -0
  532. scipy/stats/_resampling.py +4 -29
  533. scipy/stats/_sampling.py +1 -1
  534. scipy/stats/_sobol.cpython-313t-darwin.so +0 -0
  535. scipy/stats/_stats.cpython-313t-darwin.so +0 -0
  536. scipy/stats/_stats_mstats_common.py +19 -2
  537. scipy/stats/_stats_py.py +534 -460
  538. scipy/stats/_stats_pythran.cpython-313t-darwin.so +0 -0
  539. scipy/stats/_unuran/unuran_wrapper.cpython-313t-darwin.so +0 -0
  540. scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
  541. scipy/stats/_variation.py +5 -7
  542. scipy/stats/_wilcoxon.py +13 -7
  543. scipy/stats/tests/common_tests.py +6 -4
  544. scipy/stats/tests/test_axis_nan_policy.py +62 -24
  545. scipy/stats/tests/test_continued_fraction.py +173 -0
  546. scipy/stats/tests/test_continuous.py +379 -60
  547. scipy/stats/tests/test_continuous_basic.py +18 -12
  548. scipy/stats/tests/test_discrete_basic.py +14 -8
  549. scipy/stats/tests/test_discrete_distns.py +16 -16
  550. scipy/stats/tests/test_distributions.py +117 -75
  551. scipy/stats/tests/test_entropy.py +40 -48
  552. scipy/stats/tests/test_fit.py +4 -3
  553. scipy/stats/tests/test_hypotests.py +153 -24
  554. scipy/stats/tests/test_kdeoth.py +109 -41
  555. scipy/stats/tests/test_marray.py +289 -0
  556. scipy/stats/tests/test_morestats.py +79 -47
  557. scipy/stats/tests/test_mstats_basic.py +3 -3
  558. scipy/stats/tests/test_multivariate.py +434 -83
  559. scipy/stats/tests/test_qmc.py +13 -10
  560. scipy/stats/tests/test_quantile.py +199 -0
  561. scipy/stats/tests/test_rank.py +119 -112
  562. scipy/stats/tests/test_resampling.py +47 -56
  563. scipy/stats/tests/test_sampling.py +9 -4
  564. scipy/stats/tests/test_stats.py +799 -939
  565. scipy/stats/tests/test_variation.py +8 -6
  566. scipy/version.py +2 -2
  567. {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/LICENSE.txt +1 -1
  568. {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/METADATA +9 -9
  569. {scipy-1.15.2.dist-info → scipy-1.16.0rc1.dist-info}/RECORD +570 -577
  570. scipy-1.16.0rc1.dist-info/WHEEL +6 -0
  571. scipy/_lib/array_api_extra/_funcs.py +0 -484
  572. scipy/_lib/array_api_extra/_typing.py +0 -8
  573. scipy/interpolate/_bspl.cpython-313t-darwin.so +0 -0
  574. scipy/optimize/_cobyla.cpython-313t-darwin.so +0 -0
  575. scipy/optimize/_cython_nnls.cpython-313t-darwin.so +0 -0
  576. scipy/optimize/_slsqp.cpython-313t-darwin.so +0 -0
  577. scipy/spatial/qhull_src/COPYING.txt +0 -38
  578. scipy/special/libsf_error_state.dylib +0 -0
  579. scipy/special/tests/test_log_softmax.py +0 -109
  580. scipy/special/tests/test_xsf_cuda.py +0 -114
  581. scipy/special/xsf/binom.h +0 -89
  582. scipy/special/xsf/cdflib.h +0 -100
  583. scipy/special/xsf/cephes/airy.h +0 -307
  584. scipy/special/xsf/cephes/besselpoly.h +0 -51
  585. scipy/special/xsf/cephes/beta.h +0 -257
  586. scipy/special/xsf/cephes/cbrt.h +0 -131
  587. scipy/special/xsf/cephes/chbevl.h +0 -85
  588. scipy/special/xsf/cephes/chdtr.h +0 -193
  589. scipy/special/xsf/cephes/const.h +0 -87
  590. scipy/special/xsf/cephes/ellie.h +0 -293
  591. scipy/special/xsf/cephes/ellik.h +0 -251
  592. scipy/special/xsf/cephes/ellpe.h +0 -107
  593. scipy/special/xsf/cephes/ellpk.h +0 -117
  594. scipy/special/xsf/cephes/expn.h +0 -260
  595. scipy/special/xsf/cephes/gamma.h +0 -398
  596. scipy/special/xsf/cephes/hyp2f1.h +0 -596
  597. scipy/special/xsf/cephes/hyperg.h +0 -361
  598. scipy/special/xsf/cephes/i0.h +0 -149
  599. scipy/special/xsf/cephes/i1.h +0 -158
  600. scipy/special/xsf/cephes/igam.h +0 -421
  601. scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
  602. scipy/special/xsf/cephes/igami.h +0 -313
  603. scipy/special/xsf/cephes/j0.h +0 -225
  604. scipy/special/xsf/cephes/j1.h +0 -198
  605. scipy/special/xsf/cephes/jv.h +0 -715
  606. scipy/special/xsf/cephes/k0.h +0 -164
  607. scipy/special/xsf/cephes/k1.h +0 -163
  608. scipy/special/xsf/cephes/kn.h +0 -243
  609. scipy/special/xsf/cephes/lanczos.h +0 -112
  610. scipy/special/xsf/cephes/ndtr.h +0 -275
  611. scipy/special/xsf/cephes/poch.h +0 -85
  612. scipy/special/xsf/cephes/polevl.h +0 -167
  613. scipy/special/xsf/cephes/psi.h +0 -194
  614. scipy/special/xsf/cephes/rgamma.h +0 -111
  615. scipy/special/xsf/cephes/scipy_iv.h +0 -811
  616. scipy/special/xsf/cephes/shichi.h +0 -248
  617. scipy/special/xsf/cephes/sici.h +0 -224
  618. scipy/special/xsf/cephes/sindg.h +0 -221
  619. scipy/special/xsf/cephes/tandg.h +0 -139
  620. scipy/special/xsf/cephes/trig.h +0 -58
  621. scipy/special/xsf/cephes/unity.h +0 -186
  622. scipy/special/xsf/cephes/zeta.h +0 -172
  623. scipy/special/xsf/config.h +0 -304
  624. scipy/special/xsf/digamma.h +0 -205
  625. scipy/special/xsf/error.h +0 -57
  626. scipy/special/xsf/evalpoly.h +0 -47
  627. scipy/special/xsf/expint.h +0 -266
  628. scipy/special/xsf/hyp2f1.h +0 -694
  629. scipy/special/xsf/iv_ratio.h +0 -173
  630. scipy/special/xsf/lambertw.h +0 -150
  631. scipy/special/xsf/loggamma.h +0 -163
  632. scipy/special/xsf/sici.h +0 -200
  633. scipy/special/xsf/tools.h +0 -427
  634. scipy/special/xsf/trig.h +0 -164
  635. scipy/special/xsf/wright_bessel.h +0 -843
  636. scipy/special/xsf/zlog1.h +0 -35
  637. scipy/stats/_mvn.cpython-313t-darwin.so +0 -0
  638. scipy-1.15.2.dist-info/WHEEL +0 -4
@@ -1,811 +0,0 @@
1
- /* Translated into C++ by SciPy developers in 2024.
2
- * Original header with Copyright information appears below.
3
- */
4
-
5
- /* iv.c
6
- *
7
- * Modified Bessel function of noninteger order
8
- *
9
- *
10
- *
11
- * SYNOPSIS:
12
- *
13
- * double v, x, y, iv();
14
- *
15
- * y = iv( v, x );
16
- *
17
- *
18
- *
19
- * DESCRIPTION:
20
- *
21
- * Returns modified Bessel function of order v of the
22
- * argument. If x is negative, v must be integer valued.
23
- *
24
- */
25
- /* iv.c */
26
- /* Modified Bessel function of noninteger order */
27
- /* If x < 0, then v must be an integer. */
28
-
29
- /*
30
- * Parts of the code are copyright:
31
- *
32
- * Cephes Math Library Release 2.8: June, 2000
33
- * Copyright 1984, 1987, 1988, 2000 by Stephen L. Moshier
34
- *
35
- * And other parts:
36
- *
37
- * Copyright (c) 2006 Xiaogang Zhang
38
- * Use, modification and distribution are subject to the
39
- * Boost Software License, Version 1.0.
40
- *
41
- * Boost Software License - Version 1.0 - August 17th, 2003
42
- *
43
- * Permission is hereby granted, free of charge, to any person or
44
- * organization obtaining a copy of the software and accompanying
45
- * documentation covered by this license (the "Software") to use, reproduce,
46
- * display, distribute, execute, and transmit the Software, and to prepare
47
- * derivative works of the Software, and to permit third-parties to whom the
48
- * Software is furnished to do so, all subject to the following:
49
- *
50
- * The copyright notices in the Software and this entire statement,
51
- * including the above license grant, this restriction and the following
52
- * disclaimer, must be included in all copies of the Software, in whole or
53
- * in part, and all derivative works of the Software, unless such copies or
54
- * derivative works are solely in the form of machine-executable object code
55
- * generated by a source language processor.
56
- *
57
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
58
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
59
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
60
- * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE
61
- * DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY,
62
- * WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
63
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
64
- * SOFTWARE.
65
- *
66
- * And the rest are:
67
- *
68
- * Copyright (C) 2009 Pauli Virtanen
69
- * Distributed under the same license as Scipy.
70
- *
71
- */
72
- #pragma once
73
-
74
- #include "../config.h"
75
- #include "../error.h"
76
-
77
- #include "const.h"
78
- #include "gamma.h"
79
- #include "trig.h"
80
-
81
- namespace xsf {
82
- namespace cephes {
83
-
84
- namespace detail {
85
-
86
- /*
87
- * Compute Iv from (AMS5 9.7.1), asymptotic expansion for large |z|
88
- * Iv ~ exp(x)/sqrt(2 pi x) ( 1 + (4*v*v-1)/8x + (4*v*v-1)(4*v*v-9)/8x/2! + ...)
89
- */
90
- XSF_HOST_DEVICE inline double iv_asymptotic(double v, double x) {
91
- double mu;
92
- double sum, term, prefactor, factor;
93
- int k;
94
-
95
- prefactor = std::exp(x) / std::sqrt(2 * M_PI * x);
96
-
97
- if (prefactor == std::numeric_limits<double>::infinity()) {
98
- return prefactor;
99
- }
100
-
101
- mu = 4 * v * v;
102
- sum = 1.0;
103
- term = 1.0;
104
- k = 1;
105
-
106
- do {
107
- factor = (mu - (2 * k - 1) * (2 * k - 1)) / (8 * x) / k;
108
- if (k > 100) {
109
- /* didn't converge */
110
- set_error("iv(iv_asymptotic)", SF_ERROR_NO_RESULT, NULL);
111
- break;
112
- }
113
- term *= -factor;
114
- sum += term;
115
- ++k;
116
- } while (std::abs(term) > MACHEP * std::abs(sum));
117
- return sum * prefactor;
118
- }
119
-
120
- /*
121
- * Uniform asymptotic expansion factors, (AMS5 9.3.9; AMS5 9.3.10)
122
- *
123
- * Computed with:
124
- * --------------------
125
- import numpy as np
126
- t = np.poly1d([1,0])
127
- def up1(p):
128
- return .5*t*t*(1-t*t)*p.deriv() + 1/8. * ((1-5*t*t)*p).integ()
129
- us = [np.poly1d([1])]
130
- for k in range(10):
131
- us.append(up1(us[-1]))
132
- n = us[-1].order
133
- for p in us:
134
- print "{" + ", ".join(["0"]*(n-p.order) + map(repr, p)) + "},"
135
- print "N_UFACTORS", len(us)
136
- print "N_UFACTOR_TERMS", us[-1].order + 1
137
- * --------------------
138
- */
139
- constexpr int iv_N_UFACTORS = 11;
140
- constexpr int iv_N_UFACTOR_TERMS = 31;
141
-
142
- constexpr double iv_asymptotic_ufactors[iv_N_UFACTORS][iv_N_UFACTOR_TERMS] = {
143
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
144
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
145
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.20833333333333334,
146
- 0.0, 0.125, 0.0},
147
- {0,
148
- 0,
149
- 0,
150
- 0,
151
- 0,
152
- 0,
153
- 0,
154
- 0,
155
- 0,
156
- 0,
157
- 0,
158
- 0,
159
- 0,
160
- 0,
161
- 0,
162
- 0,
163
- 0,
164
- 0,
165
- 0,
166
- 0,
167
- 0,
168
- 0,
169
- 0,
170
- 0,
171
- 0.3342013888888889,
172
- 0.0,
173
- -0.40104166666666669,
174
- 0.0,
175
- 0.0703125,
176
- 0.0,
177
- 0.0},
178
- {0, 0,
179
- 0, 0,
180
- 0, 0,
181
- 0, 0,
182
- 0, 0,
183
- 0, 0,
184
- 0, 0,
185
- 0, 0,
186
- 0, 0,
187
- 0, 0,
188
- 0, -1.0258125964506173,
189
- 0.0, 1.8464626736111112,
190
- 0.0, -0.89121093750000002,
191
- 0.0, 0.0732421875,
192
- 0.0, 0.0,
193
- 0.0},
194
- {0,
195
- 0,
196
- 0,
197
- 0,
198
- 0,
199
- 0,
200
- 0,
201
- 0,
202
- 0,
203
- 0,
204
- 0,
205
- 0,
206
- 0,
207
- 0,
208
- 0,
209
- 0,
210
- 0,
211
- 0,
212
- 4.6695844234262474,
213
- 0.0,
214
- -11.207002616222995,
215
- 0.0,
216
- 8.78912353515625,
217
- 0.0,
218
- -2.3640869140624998,
219
- 0.0,
220
- 0.112152099609375,
221
- 0.0,
222
- 0.0,
223
- 0.0,
224
- 0.0},
225
- {0, 0,
226
- 0, 0,
227
- 0, 0,
228
- 0, 0,
229
- 0, 0,
230
- 0, 0,
231
- 0, 0,
232
- 0, -28.212072558200244,
233
- 0.0, 84.636217674600744,
234
- 0.0, -91.818241543240035,
235
- 0.0, 42.534998745388457,
236
- 0.0, -7.3687943594796312,
237
- 0.0, 0.22710800170898438,
238
- 0.0, 0.0,
239
- 0.0, 0.0,
240
- 0.0},
241
- {0,
242
- 0,
243
- 0,
244
- 0,
245
- 0,
246
- 0,
247
- 0,
248
- 0,
249
- 0,
250
- 0,
251
- 0,
252
- 0,
253
- 212.5701300392171,
254
- 0.0,
255
- -765.25246814118157,
256
- 0.0,
257
- 1059.9904525279999,
258
- 0.0,
259
- -699.57962737613275,
260
- 0.0,
261
- 218.19051174421159,
262
- 0.0,
263
- -26.491430486951554,
264
- 0.0,
265
- 0.57250142097473145,
266
- 0.0,
267
- 0.0,
268
- 0.0,
269
- 0.0,
270
- 0.0,
271
- 0.0},
272
- {0, 0,
273
- 0, 0,
274
- 0, 0,
275
- 0, 0,
276
- 0, -1919.4576623184068,
277
- 0.0, 8061.7221817373083,
278
- 0.0, -13586.550006434136,
279
- 0.0, 11655.393336864536,
280
- 0.0, -5305.6469786134048,
281
- 0.0, 1200.9029132163525,
282
- 0.0, -108.09091978839464,
283
- 0.0, 1.7277275025844574,
284
- 0.0, 0.0,
285
- 0.0, 0.0,
286
- 0.0, 0.0,
287
- 0.0},
288
- {0,
289
- 0,
290
- 0,
291
- 0,
292
- 0,
293
- 0,
294
- 20204.291330966149,
295
- 0.0,
296
- -96980.598388637503,
297
- 0.0,
298
- 192547.0012325315,
299
- 0.0,
300
- -203400.17728041555,
301
- 0.0,
302
- 122200.46498301747,
303
- 0.0,
304
- -41192.654968897557,
305
- 0.0,
306
- 7109.5143024893641,
307
- 0.0,
308
- -493.915304773088,
309
- 0.0,
310
- 6.074042001273483,
311
- 0.0,
312
- 0.0,
313
- 0.0,
314
- 0.0,
315
- 0.0,
316
- 0.0,
317
- 0.0,
318
- 0.0},
319
- {0, 0,
320
- 0, -242919.18790055133,
321
- 0.0, 1311763.6146629769,
322
- 0.0, -2998015.9185381061,
323
- 0.0, 3763271.2976564039,
324
- 0.0, -2813563.2265865342,
325
- 0.0, 1268365.2733216248,
326
- 0.0, -331645.17248456361,
327
- 0.0, 45218.768981362737,
328
- 0.0, -2499.8304818112092,
329
- 0.0, 24.380529699556064,
330
- 0.0, 0.0,
331
- 0.0, 0.0,
332
- 0.0, 0.0,
333
- 0.0, 0.0,
334
- 0.0},
335
- {3284469.8530720375,
336
- 0.0,
337
- -19706819.11843222,
338
- 0.0,
339
- 50952602.492664628,
340
- 0.0,
341
- -74105148.211532637,
342
- 0.0,
343
- 66344512.274729028,
344
- 0.0,
345
- -37567176.660763353,
346
- 0.0,
347
- 13288767.166421819,
348
- 0.0,
349
- -2785618.1280864552,
350
- 0.0,
351
- 308186.40461266245,
352
- 0.0,
353
- -13886.089753717039,
354
- 0.0,
355
- 110.01714026924674,
356
- 0.0,
357
- 0.0,
358
- 0.0,
359
- 0.0,
360
- 0.0,
361
- 0.0,
362
- 0.0,
363
- 0.0,
364
- 0.0,
365
- 0.0}};
366
-
367
- /*
368
- * Compute Iv, Kv from (AMS5 9.7.7 + 9.7.8), asymptotic expansion for large v
369
- */
370
- XSF_HOST_DEVICE inline void ikv_asymptotic_uniform(double v, double x, double *i_value, double *k_value) {
371
- double i_prefactor, k_prefactor;
372
- double t, t2, eta, z;
373
- double i_sum, k_sum, term, divisor;
374
- int k, n;
375
- int sign = 1;
376
-
377
- if (v < 0) {
378
- /* Negative v; compute I_{-v} and K_{-v} and use (AMS 9.6.2) */
379
- sign = -1;
380
- v = -v;
381
- }
382
-
383
- z = x / v;
384
- t = 1 / std::sqrt(1 + z * z);
385
- t2 = t * t;
386
- eta = std::sqrt(1 + z * z) + std::log(z / (1 + 1 / t));
387
-
388
- i_prefactor = std::sqrt(t / (2 * M_PI * v)) * std::exp(v * eta);
389
- i_sum = 1.0;
390
-
391
- k_prefactor = std::sqrt(M_PI * t / (2 * v)) * std::exp(-v * eta);
392
- k_sum = 1.0;
393
-
394
- divisor = v;
395
- for (n = 1; n < iv_N_UFACTORS; ++n) {
396
- /*
397
- * Evaluate u_k(t) with Horner's scheme;
398
- * (using the knowledge about which coefficients are zero)
399
- */
400
- term = 0;
401
- for (k = iv_N_UFACTOR_TERMS - 1 - 3 * n; k < iv_N_UFACTOR_TERMS - n; k += 2) {
402
- term *= t2;
403
- term += iv_asymptotic_ufactors[n][k];
404
- }
405
- for (k = 1; k < n; k += 2) {
406
- term *= t2;
407
- }
408
- if (n % 2 == 1) {
409
- term *= t;
410
- }
411
-
412
- /* Sum terms */
413
- term /= divisor;
414
- i_sum += term;
415
- k_sum += (n % 2 == 0) ? term : -term;
416
-
417
- /* Check convergence */
418
- if (std::abs(term) < MACHEP) {
419
- break;
420
- }
421
-
422
- divisor *= v;
423
- }
424
-
425
- if (std::abs(term) > 1e-3 * std::abs(i_sum)) {
426
- /* Didn't converge */
427
- set_error("ikv_asymptotic_uniform", SF_ERROR_NO_RESULT, NULL);
428
- }
429
- if (std::abs(term) > MACHEP * std::abs(i_sum)) {
430
- /* Some precision lost */
431
- set_error("ikv_asymptotic_uniform", SF_ERROR_LOSS, NULL);
432
- }
433
-
434
- if (k_value != NULL) {
435
- /* symmetric in v */
436
- *k_value = k_prefactor * k_sum;
437
- }
438
-
439
- if (i_value != NULL) {
440
- if (sign == 1) {
441
- *i_value = i_prefactor * i_sum;
442
- } else {
443
- /* (AMS 9.6.2) */
444
- *i_value = (i_prefactor * i_sum + (2 / M_PI) * xsf::cephes::sinpi(v) * k_prefactor * k_sum);
445
- }
446
- }
447
- }
448
-
449
- /*
450
- * The following code originates from the Boost C++ library,
451
- * from file `boost/math/special_functions/detail/bessel_ik.hpp`,
452
- * converted from C++ to C.
453
- */
454
-
455
- /*
456
- * Modified Bessel functions of the first and second kind of fractional order
457
- *
458
- * Calculate K(v, x) and K(v+1, x) by method analogous to
459
- * Temme, Journal of Computational Physics, vol 21, 343 (1976)
460
- */
461
- XSF_HOST_DEVICE inline int temme_ik_series(double v, double x, double *K, double *K1) {
462
- double f, h, p, q, coef, sum, sum1, tolerance;
463
- double a, b, c, d, sigma, gamma1, gamma2;
464
- std::uint64_t k;
465
- double gp;
466
- double gm;
467
-
468
- /*
469
- * |x| <= 2, Temme series converge rapidly
470
- * |x| > 2, the larger the |x|, the slower the convergence
471
- */
472
- XSF_ASSERT(std::abs(x) <= 2);
473
- XSF_ASSERT(std::abs(v) <= 0.5f);
474
-
475
- gp = xsf::cephes::Gamma(v + 1) - 1;
476
- gm = xsf::cephes::Gamma(-v + 1) - 1;
477
-
478
- a = std::log(x / 2);
479
- b = std::exp(v * a);
480
- sigma = -a * v;
481
- c = std::abs(v) < MACHEP ? 1 : xsf::cephes::sinpi(v) / (v * M_PI);
482
- d = std::abs(sigma) < MACHEP ? 1 : std::sinh(sigma) / sigma;
483
- gamma1 = std::abs(v) < MACHEP ? -SCIPY_EULER : (0.5 / v) * (gp - gm) * c;
484
- gamma2 = (2 + gp + gm) * c / 2;
485
-
486
- /* initial values */
487
- p = (gp + 1) / (2 * b);
488
- q = (1 + gm) * b / 2;
489
- f = (std::cosh(sigma) * gamma1 + d * (-a) * gamma2) / c;
490
- h = p;
491
- coef = 1;
492
- sum = coef * f;
493
- sum1 = coef * h;
494
-
495
- /* series summation */
496
- tolerance = MACHEP;
497
- for (k = 1; k < MAXITER; k++) {
498
- f = (k * f + p + q) / (k * k - v * v);
499
- p /= k - v;
500
- q /= k + v;
501
- h = p - k * f;
502
- coef *= x * x / (4 * k);
503
- sum += coef * f;
504
- sum1 += coef * h;
505
- if (std::abs(coef * f) < std::abs(sum) * tolerance) {
506
- break;
507
- }
508
- }
509
- if (k == MAXITER) {
510
- set_error("ikv_temme(temme_ik_series)", SF_ERROR_NO_RESULT, NULL);
511
- }
512
-
513
- *K = sum;
514
- *K1 = 2 * sum1 / x;
515
-
516
- return 0;
517
- }
518
-
519
- /* Evaluate continued fraction fv = I_(v+1) / I_v, derived from
520
- * Abramowitz and Stegun, Handbook of Mathematical Functions, 1972, 9.1.73 */
521
- XSF_HOST_DEVICE inline int CF1_ik(double v, double x, double *fv) {
522
- double C, D, f, a, b, delta, tiny, tolerance;
523
- std::uint64_t k;
524
-
525
- /*
526
- * |x| <= |v|, CF1_ik converges rapidly
527
- * |x| > |v|, CF1_ik needs O(|x|) iterations to converge
528
- */
529
-
530
- /*
531
- * modified Lentz's method, see
532
- * Lentz, Applied Optics, vol 15, 668 (1976)
533
- */
534
- tolerance = 2 * MACHEP;
535
- tiny = 1 / std::sqrt(std::numeric_limits<double>::max());
536
- C = f = tiny; /* b0 = 0, replace with tiny */
537
- D = 0;
538
- for (k = 1; k < MAXITER; k++) {
539
- a = 1;
540
- b = 2 * (v + k) / x;
541
- C = b + a / C;
542
- D = b + a * D;
543
- if (C == 0) {
544
- C = tiny;
545
- }
546
- if (D == 0) {
547
- D = tiny;
548
- }
549
- D = 1 / D;
550
- delta = C * D;
551
- f *= delta;
552
- if (std::abs(delta - 1) <= tolerance) {
553
- break;
554
- }
555
- }
556
- if (k == MAXITER) {
557
- set_error("ikv_temme(CF1_ik)", SF_ERROR_NO_RESULT, NULL);
558
- }
559
-
560
- *fv = f;
561
-
562
- return 0;
563
- }
564
-
565
- /*
566
- * Calculate K(v, x) and K(v+1, x) by evaluating continued fraction
567
- * z1 / z0 = U(v+1.5, 2v+1, 2x) / U(v+0.5, 2v+1, 2x), see
568
- * Thompson and Barnett, Computer Physics Communications, vol 47, 245 (1987)
569
- */
570
- XSF_HOST_DEVICE inline int CF2_ik(double v, double x, double *Kv, double *Kv1) {
571
-
572
- double S, C, Q, D, f, a, b, q, delta, tolerance, current, prev;
573
- std::uint64_t k;
574
-
575
- /*
576
- * |x| >= |v|, CF2_ik converges rapidly
577
- * |x| -> 0, CF2_ik fails to converge
578
- */
579
-
580
- XSF_ASSERT(std::abs(x) > 1);
581
-
582
- /*
583
- * Steed's algorithm, see Thompson and Barnett,
584
- * Journal of Computational Physics, vol 64, 490 (1986)
585
- */
586
- tolerance = MACHEP;
587
- a = v * v - 0.25;
588
- b = 2 * (x + 1); /* b1 */
589
- D = 1 / b; /* D1 = 1 / b1 */
590
- f = delta = D; /* f1 = delta1 = D1, coincidence */
591
- prev = 0; /* q0 */
592
- current = 1; /* q1 */
593
- Q = C = -a; /* Q1 = C1 because q1 = 1 */
594
- S = 1 + Q * delta; /* S1 */
595
- for (k = 2; k < MAXITER; k++) { /* starting from 2 */
596
- /* continued fraction f = z1 / z0 */
597
- a -= 2 * (k - 1);
598
- b += 2;
599
- D = 1 / (b + a * D);
600
- delta *= b * D - 1;
601
- f += delta;
602
-
603
- /* series summation S = 1 + \sum_{n=1}^{\infty} C_n * z_n / z_0 */
604
- q = (prev - (b - 2) * current) / a;
605
- prev = current;
606
- current = q; /* forward recurrence for q */
607
- C *= -a / k;
608
- Q += C * q;
609
- S += Q * delta;
610
-
611
- /* S converges slower than f */
612
- if (std::abs(Q * delta) < std::abs(S) * tolerance) {
613
- break;
614
- }
615
- }
616
- if (k == MAXITER) {
617
- set_error("ikv_temme(CF2_ik)", SF_ERROR_NO_RESULT, NULL);
618
- }
619
-
620
- *Kv = std::sqrt(M_PI / (2 * x)) * std::exp(-x) / S;
621
- *Kv1 = *Kv * (0.5 + v + x + (v * v - 0.25) * f) / x;
622
-
623
- return 0;
624
- }
625
-
626
- /* Flags for what to compute */
627
- enum { ikv_temme_need_i = 0x1, ikv_temme_need_k = 0x2 };
628
-
629
- /*
630
- * Compute I(v, x) and K(v, x) simultaneously by Temme's method, see
631
- * Temme, Journal of Computational Physics, vol 19, 324 (1975)
632
- */
633
- XSF_HOST_DEVICE inline void ikv_temme(double v, double x, double *Iv_p, double *Kv_p) {
634
- /* Kv1 = K_(v+1), fv = I_(v+1) / I_v */
635
- /* Ku1 = K_(u+1), fu = I_(u+1) / I_u */
636
- double u, Iv, Kv, Kv1, Ku, Ku1, fv;
637
- double W, current, prev, next;
638
- int reflect = 0;
639
- unsigned n, k;
640
- int kind;
641
-
642
- kind = 0;
643
- if (Iv_p != NULL) {
644
- kind |= ikv_temme_need_i;
645
- }
646
- if (Kv_p != NULL) {
647
- kind |= ikv_temme_need_k;
648
- }
649
-
650
- if (v < 0) {
651
- reflect = 1;
652
- v = -v; /* v is non-negative from here */
653
- kind |= ikv_temme_need_k;
654
- }
655
- n = std::round(v);
656
- u = v - n; /* -1/2 <= u < 1/2 */
657
-
658
- if (x < 0) {
659
- if (Iv_p != NULL)
660
- *Iv_p = std::numeric_limits<double>::quiet_NaN();
661
- if (Kv_p != NULL)
662
- *Kv_p = std::numeric_limits<double>::quiet_NaN();
663
- set_error("ikv_temme", SF_ERROR_DOMAIN, NULL);
664
- return;
665
- }
666
- if (x == 0) {
667
- Iv = (v == 0) ? 1 : 0;
668
- if (kind & ikv_temme_need_k) {
669
- set_error("ikv_temme", SF_ERROR_OVERFLOW, NULL);
670
- Kv = std::numeric_limits<double>::infinity();
671
- } else {
672
- Kv = std::numeric_limits<double>::quiet_NaN(); /* any value will do */
673
- }
674
-
675
- if (reflect && (kind & ikv_temme_need_i)) {
676
- double z = (u + n % 2);
677
-
678
- Iv = xsf::cephes::sinpi(z) == 0 ? Iv : std::numeric_limits<double>::infinity();
679
- if (std::isinf(Iv)) {
680
- set_error("ikv_temme", SF_ERROR_OVERFLOW, NULL);
681
- }
682
- }
683
-
684
- if (Iv_p != NULL) {
685
- *Iv_p = Iv;
686
- }
687
- if (Kv_p != NULL) {
688
- *Kv_p = Kv;
689
- }
690
- return;
691
- }
692
- /* x is positive until reflection */
693
- W = 1 / x; /* Wronskian */
694
- if (x <= 2) { /* x in (0, 2] */
695
- temme_ik_series(u, x, &Ku, &Ku1); /* Temme series */
696
- } else { /* x in (2, \infty) */
697
- CF2_ik(u, x, &Ku, &Ku1); /* continued fraction CF2_ik */
698
- }
699
- prev = Ku;
700
- current = Ku1;
701
- for (k = 1; k <= n; k++) { /* forward recurrence for K */
702
- next = 2 * (u + k) * current / x + prev;
703
- prev = current;
704
- current = next;
705
- }
706
- Kv = prev;
707
- Kv1 = current;
708
- if (kind & ikv_temme_need_i) {
709
- double lim = (4 * v * v + 10) / (8 * x);
710
-
711
- lim *= lim;
712
- lim *= lim;
713
- lim /= 24;
714
- if ((lim < MACHEP * 10) && (x > 100)) {
715
- /*
716
- * x is huge compared to v, CF1 may be very slow
717
- * to converge so use asymptotic expansion for large
718
- * x case instead. Note that the asymptotic expansion
719
- * isn't very accurate - so it's deliberately very hard
720
- * to get here - probably we're going to overflow:
721
- */
722
- Iv = iv_asymptotic(v, x);
723
- } else {
724
- CF1_ik(v, x, &fv); /* continued fraction CF1_ik */
725
- Iv = W / (Kv * fv + Kv1); /* Wronskian relation */
726
- }
727
- } else {
728
- Iv = std::numeric_limits<double>::quiet_NaN(); /* any value will do */
729
- }
730
-
731
- if (reflect) {
732
- double z = (u + n % 2);
733
-
734
- if (Iv_p != NULL) {
735
- *Iv_p = Iv + (2 / M_PI) * xsf::cephes::sinpi(z) * Kv; /* reflection formula */
736
- }
737
- if (Kv_p != NULL) {
738
- *Kv_p = Kv;
739
- }
740
- } else {
741
- if (Iv_p != NULL) {
742
- *Iv_p = Iv;
743
- }
744
- if (Kv_p != NULL) {
745
- *Kv_p = Kv;
746
- }
747
- }
748
- return;
749
- }
750
-
751
- } // namespace detail
752
-
753
- XSF_HOST_DEVICE inline double iv(double v, double x) {
754
- int sign;
755
- double t, ax, res;
756
-
757
- if (std::isnan(v) || std::isnan(x)) {
758
- return std::numeric_limits<double>::quiet_NaN();
759
- }
760
-
761
- /* If v is a negative integer, invoke symmetry */
762
- t = std::floor(v);
763
- if (v < 0.0) {
764
- if (t == v) {
765
- v = -v; /* symmetry */
766
- t = -t;
767
- }
768
- }
769
- /* If x is negative, require v to be an integer */
770
- sign = 1;
771
- if (x < 0.0) {
772
- if (t != v) {
773
- set_error("iv", SF_ERROR_DOMAIN, NULL);
774
- return (std::numeric_limits<double>::quiet_NaN());
775
- }
776
- if (v != 2.0 * std::floor(v / 2.0)) {
777
- sign = -1;
778
- }
779
- }
780
-
781
- /* Avoid logarithm singularity */
782
- if (x == 0.0) {
783
- if (v == 0.0) {
784
- return 1.0;
785
- }
786
- if (v < 0.0) {
787
- set_error("iv", SF_ERROR_OVERFLOW, NULL);
788
- return std::numeric_limits<double>::infinity();
789
- } else
790
- return 0.0;
791
- }
792
-
793
- ax = std::abs(x);
794
- if (std::abs(v) > 50) {
795
- /*
796
- * Uniform asymptotic expansion for large orders.
797
- *
798
- * This appears to overflow slightly later than the Boost
799
- * implementation of Temme's method.
800
- */
801
- detail::ikv_asymptotic_uniform(v, ax, &res, NULL);
802
- } else {
803
- /* Otherwise: Temme's method */
804
- detail::ikv_temme(v, ax, &res, NULL);
805
- }
806
- res *= sign;
807
- return res;
808
- }
809
-
810
- } // namespace cephes
811
- } // namespace xsf