scipy 1.15.2__cp313-cp313t-macosx_12_0_arm64.whl → 1.16.0__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 (640) hide show
  1. scipy/.dylibs/libscipy_openblas.dylib +0 -0
  2. scipy/__config__.py +8 -8
  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 +282 -151
  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/blas.py +35 -24
  224. scipy/linalg/cython_blas.cpython-313t-darwin.so +0 -0
  225. scipy/linalg/cython_lapack.cpython-313t-darwin.so +0 -0
  226. scipy/linalg/lapack.py +22 -2
  227. scipy/linalg/tests/_cython_examples/meson.build +7 -0
  228. scipy/linalg/tests/test_basic.py +31 -16
  229. scipy/linalg/tests/test_batch.py +588 -0
  230. scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
  231. scipy/linalg/tests/test_decomp.py +40 -3
  232. scipy/linalg/tests/test_decomp_cossin.py +14 -0
  233. scipy/linalg/tests/test_decomp_ldl.py +1 -1
  234. scipy/linalg/tests/test_interpolative.py +17 -0
  235. scipy/linalg/tests/test_lapack.py +115 -7
  236. scipy/linalg/tests/test_matfuncs.py +157 -102
  237. scipy/linalg/tests/test_procrustes.py +0 -7
  238. scipy/linalg/tests/test_solve_toeplitz.py +1 -1
  239. scipy/linalg/tests/test_special_matrices.py +1 -5
  240. scipy/ndimage/__init__.py +1 -0
  241. scipy/ndimage/_cytest.cpython-313t-darwin.so +0 -0
  242. scipy/ndimage/_delegators.py +8 -2
  243. scipy/ndimage/_filters.py +453 -5
  244. scipy/ndimage/_interpolation.py +36 -6
  245. scipy/ndimage/_measurements.py +4 -2
  246. scipy/ndimage/_morphology.py +5 -0
  247. scipy/ndimage/_nd_image.cpython-313t-darwin.so +0 -0
  248. scipy/ndimage/_ndimage_api.py +2 -1
  249. scipy/ndimage/_ni_docstrings.py +5 -1
  250. scipy/ndimage/_ni_label.cpython-313t-darwin.so +0 -0
  251. scipy/ndimage/_ni_support.py +1 -5
  252. scipy/ndimage/_rank_filter_1d.cpython-313t-darwin.so +0 -0
  253. scipy/ndimage/_support_alternative_backends.py +18 -6
  254. scipy/ndimage/tests/test_filters.py +384 -259
  255. scipy/ndimage/tests/test_fourier.py +7 -9
  256. scipy/ndimage/tests/test_interpolation.py +68 -61
  257. scipy/ndimage/tests/test_measurements.py +18 -35
  258. scipy/ndimage/tests/test_morphology.py +143 -131
  259. scipy/ndimage/tests/test_splines.py +1 -3
  260. scipy/odr/__odrpack.cpython-313t-darwin.so +0 -0
  261. scipy/optimize/_basinhopping.py +13 -7
  262. scipy/optimize/_bglu_dense.cpython-313t-darwin.so +0 -0
  263. scipy/optimize/_bracket.py +46 -26
  264. scipy/optimize/_chandrupatla.py +9 -10
  265. scipy/optimize/_cobyla_py.py +104 -123
  266. scipy/optimize/_constraints.py +14 -10
  267. scipy/optimize/_differentiable_functions.py +371 -230
  268. scipy/optimize/_differentialevolution.py +4 -3
  269. scipy/optimize/_direct.cpython-313t-darwin.so +0 -0
  270. scipy/optimize/_dual_annealing.py +1 -1
  271. scipy/optimize/_elementwise.py +1 -4
  272. scipy/optimize/_group_columns.cpython-313t-darwin.so +0 -0
  273. scipy/optimize/_highspy/_highs_wrapper.py +6 -4
  274. scipy/optimize/_lbfgsb.cpython-313t-darwin.so +0 -0
  275. scipy/optimize/_lbfgsb_py.py +80 -24
  276. scipy/optimize/_linprog_doc.py +2 -2
  277. scipy/optimize/_linprog_highs.py +11 -11
  278. scipy/optimize/_linprog_ip.py +25 -10
  279. scipy/optimize/_linprog_util.py +18 -19
  280. scipy/optimize/_lsap.cpython-313t-darwin.so +0 -0
  281. scipy/optimize/_lsq/common.py +3 -3
  282. scipy/optimize/_lsq/dogbox.py +16 -2
  283. scipy/optimize/_lsq/givens_elimination.cpython-313t-darwin.so +0 -0
  284. scipy/optimize/_lsq/least_squares.py +198 -126
  285. scipy/optimize/_lsq/lsq_linear.py +6 -6
  286. scipy/optimize/_lsq/trf.py +35 -8
  287. scipy/optimize/_milp.py +3 -1
  288. scipy/optimize/_minimize.py +105 -36
  289. scipy/optimize/_minpack.cpython-313t-darwin.so +0 -0
  290. scipy/optimize/_minpack_py.py +21 -14
  291. scipy/optimize/_moduleTNC.cpython-313t-darwin.so +0 -0
  292. scipy/optimize/_nnls.py +20 -21
  293. scipy/optimize/_nonlin.py +34 -3
  294. scipy/optimize/_numdiff.py +288 -110
  295. scipy/optimize/_optimize.py +86 -48
  296. scipy/optimize/_pava_pybind.cpython-313t-darwin.so +0 -0
  297. scipy/optimize/_remove_redundancy.py +5 -5
  298. scipy/optimize/_root_scalar.py +1 -1
  299. scipy/optimize/_shgo.py +6 -0
  300. scipy/optimize/_shgo_lib/_complex.py +1 -1
  301. scipy/optimize/_slsqp_py.py +216 -124
  302. scipy/optimize/_slsqplib.cpython-313t-darwin.so +0 -0
  303. scipy/optimize/_spectral.py +1 -1
  304. scipy/optimize/_tnc.py +8 -1
  305. scipy/optimize/_trlib/_trlib.cpython-313t-darwin.so +0 -0
  306. scipy/optimize/_trustregion.py +20 -6
  307. scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
  308. scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
  309. scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
  310. scipy/optimize/_trustregion_constr/projections.py +12 -8
  311. scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
  312. scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
  313. scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
  314. scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
  315. scipy/optimize/_trustregion_exact.py +0 -1
  316. scipy/optimize/_zeros.cpython-313t-darwin.so +0 -0
  317. scipy/optimize/_zeros_py.py +97 -17
  318. scipy/optimize/cython_optimize/_zeros.cpython-313t-darwin.so +0 -0
  319. scipy/optimize/slsqp.py +0 -1
  320. scipy/optimize/tests/test__basinhopping.py +1 -1
  321. scipy/optimize/tests/test__differential_evolution.py +4 -4
  322. scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
  323. scipy/optimize/tests/test__numdiff.py +66 -22
  324. scipy/optimize/tests/test__remove_redundancy.py +2 -2
  325. scipy/optimize/tests/test__shgo.py +9 -1
  326. scipy/optimize/tests/test_bracket.py +71 -46
  327. scipy/optimize/tests/test_chandrupatla.py +133 -135
  328. scipy/optimize/tests/test_cobyla.py +74 -45
  329. scipy/optimize/tests/test_constraints.py +1 -1
  330. scipy/optimize/tests/test_differentiable_functions.py +226 -6
  331. scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
  332. scipy/optimize/tests/test_least_squares.py +125 -13
  333. scipy/optimize/tests/test_linear_assignment.py +3 -3
  334. scipy/optimize/tests/test_linprog.py +3 -3
  335. scipy/optimize/tests/test_lsq_linear.py +6 -6
  336. scipy/optimize/tests/test_minimize_constrained.py +2 -2
  337. scipy/optimize/tests/test_minpack.py +4 -4
  338. scipy/optimize/tests/test_nnls.py +43 -3
  339. scipy/optimize/tests/test_nonlin.py +36 -0
  340. scipy/optimize/tests/test_optimize.py +98 -20
  341. scipy/optimize/tests/test_slsqp.py +36 -4
  342. scipy/optimize/tests/test_zeros.py +34 -1
  343. scipy/signal/__init__.py +12 -23
  344. scipy/signal/_delegators.py +568 -0
  345. scipy/signal/_filter_design.py +459 -241
  346. scipy/signal/_fir_filter_design.py +262 -90
  347. scipy/signal/_lti_conversion.py +3 -2
  348. scipy/signal/_ltisys.py +118 -91
  349. scipy/signal/_max_len_seq_inner.cpython-313t-darwin.so +0 -0
  350. scipy/signal/_peak_finding_utils.cpython-313t-darwin.so +0 -0
  351. scipy/signal/_polyutils.py +172 -0
  352. scipy/signal/_short_time_fft.py +553 -76
  353. scipy/signal/_signal_api.py +30 -0
  354. scipy/signal/_signaltools.py +719 -396
  355. scipy/signal/_sigtools.cpython-313t-darwin.so +0 -0
  356. scipy/signal/_sosfilt.cpython-313t-darwin.so +0 -0
  357. scipy/signal/_spectral_py.py +230 -50
  358. scipy/signal/_spline.cpython-313t-darwin.so +0 -0
  359. scipy/signal/_spline_filters.py +108 -68
  360. scipy/signal/_support_alternative_backends.py +73 -0
  361. scipy/signal/_upfirdn.py +4 -1
  362. scipy/signal/_upfirdn_apply.cpython-313t-darwin.so +0 -0
  363. scipy/signal/_waveforms.py +2 -11
  364. scipy/signal/_wavelets.py +1 -1
  365. scipy/signal/fir_filter_design.py +1 -0
  366. scipy/signal/spline.py +4 -11
  367. scipy/signal/tests/_scipy_spectral_test_shim.py +5 -182
  368. scipy/signal/tests/test_bsplines.py +114 -79
  369. scipy/signal/tests/test_cont2discrete.py +9 -2
  370. scipy/signal/tests/test_filter_design.py +721 -481
  371. scipy/signal/tests/test_fir_filter_design.py +332 -140
  372. scipy/signal/tests/test_savitzky_golay.py +4 -3
  373. scipy/signal/tests/test_short_time_fft.py +231 -5
  374. scipy/signal/tests/test_signaltools.py +2150 -1349
  375. scipy/signal/tests/test_spectral.py +50 -6
  376. scipy/signal/tests/test_splines.py +161 -96
  377. scipy/signal/tests/test_upfirdn.py +84 -50
  378. scipy/signal/tests/test_waveforms.py +20 -0
  379. scipy/signal/tests/test_windows.py +607 -466
  380. scipy/signal/windows/_windows.py +287 -148
  381. scipy/sparse/__init__.py +23 -4
  382. scipy/sparse/_base.py +269 -120
  383. scipy/sparse/_bsr.py +7 -4
  384. scipy/sparse/_compressed.py +59 -234
  385. scipy/sparse/_construct.py +90 -38
  386. scipy/sparse/_coo.py +115 -181
  387. scipy/sparse/_csc.py +4 -4
  388. scipy/sparse/_csparsetools.cpython-313t-darwin.so +0 -0
  389. scipy/sparse/_csr.py +2 -2
  390. scipy/sparse/_data.py +48 -48
  391. scipy/sparse/_dia.py +105 -21
  392. scipy/sparse/_dok.py +0 -23
  393. scipy/sparse/_index.py +4 -4
  394. scipy/sparse/_matrix.py +23 -0
  395. scipy/sparse/_sparsetools.cpython-313t-darwin.so +0 -0
  396. scipy/sparse/_sputils.py +37 -22
  397. scipy/sparse/base.py +0 -9
  398. scipy/sparse/bsr.py +0 -14
  399. scipy/sparse/compressed.py +0 -23
  400. scipy/sparse/construct.py +0 -6
  401. scipy/sparse/coo.py +0 -14
  402. scipy/sparse/csc.py +0 -3
  403. scipy/sparse/csgraph/_flow.cpython-313t-darwin.so +0 -0
  404. scipy/sparse/csgraph/_matching.cpython-313t-darwin.so +0 -0
  405. scipy/sparse/csgraph/_min_spanning_tree.cpython-313t-darwin.so +0 -0
  406. scipy/sparse/csgraph/_reordering.cpython-313t-darwin.so +0 -0
  407. scipy/sparse/csgraph/_shortest_path.cpython-313t-darwin.so +0 -0
  408. scipy/sparse/csgraph/_tools.cpython-313t-darwin.so +0 -0
  409. scipy/sparse/csgraph/_traversal.cpython-313t-darwin.so +0 -0
  410. scipy/sparse/csgraph/tests/test_matching.py +14 -2
  411. scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
  412. scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
  413. scipy/sparse/csr.py +0 -5
  414. scipy/sparse/data.py +1 -6
  415. scipy/sparse/dia.py +0 -7
  416. scipy/sparse/dok.py +0 -10
  417. scipy/sparse/linalg/_dsolve/_superlu.cpython-313t-darwin.so +0 -0
  418. scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
  419. scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
  420. scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-313t-darwin.so +0 -0
  421. scipy/sparse/linalg/_eigen/arpack/arpack.py +28 -20
  422. scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
  423. scipy/sparse/linalg/_expm_multiply.py +8 -3
  424. scipy/sparse/linalg/_interface.py +29 -26
  425. scipy/sparse/linalg/_isolve/_gcrotmk.py +6 -5
  426. scipy/sparse/linalg/_isolve/iterative.py +51 -45
  427. scipy/sparse/linalg/_isolve/lgmres.py +6 -6
  428. scipy/sparse/linalg/_isolve/minres.py +5 -5
  429. scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
  430. scipy/sparse/linalg/_isolve/utils.py +2 -8
  431. scipy/sparse/linalg/_matfuncs.py +1 -1
  432. scipy/sparse/linalg/_norm.py +1 -1
  433. scipy/sparse/linalg/_propack/_cpropack.cpython-313t-darwin.so +0 -0
  434. scipy/sparse/linalg/_propack/_dpropack.cpython-313t-darwin.so +0 -0
  435. scipy/sparse/linalg/_propack/_spropack.cpython-313t-darwin.so +0 -0
  436. scipy/sparse/linalg/_propack/_zpropack.cpython-313t-darwin.so +0 -0
  437. scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
  438. scipy/sparse/linalg/tests/test_expm_multiply.py +10 -0
  439. scipy/sparse/linalg/tests/test_interface.py +35 -0
  440. scipy/sparse/linalg/tests/test_pydata_sparse.py +18 -0
  441. scipy/sparse/tests/test_arithmetic1d.py +5 -2
  442. scipy/sparse/tests/test_base.py +224 -40
  443. scipy/sparse/tests/test_common1d.py +17 -12
  444. scipy/sparse/tests/test_construct.py +1 -1
  445. scipy/sparse/tests/test_coo.py +272 -4
  446. scipy/sparse/tests/test_sparsetools.py +5 -0
  447. scipy/sparse/tests/test_sputils.py +36 -7
  448. scipy/spatial/_ckdtree.cpython-313t-darwin.so +0 -0
  449. scipy/spatial/_distance_pybind.cpython-313t-darwin.so +0 -0
  450. scipy/spatial/_distance_wrap.cpython-313t-darwin.so +0 -0
  451. scipy/spatial/_hausdorff.cpython-313t-darwin.so +0 -0
  452. scipy/spatial/_qhull.cpython-313t-darwin.so +0 -0
  453. scipy/spatial/_voronoi.cpython-313t-darwin.so +0 -0
  454. scipy/spatial/distance.py +49 -42
  455. scipy/spatial/tests/test_distance.py +15 -1
  456. scipy/spatial/tests/test_kdtree.py +1 -0
  457. scipy/spatial/tests/test_qhull.py +106 -2
  458. scipy/spatial/transform/__init__.py +5 -3
  459. scipy/spatial/transform/_rigid_transform.cpython-313t-darwin.so +0 -0
  460. scipy/spatial/transform/_rotation.cpython-313t-darwin.so +0 -0
  461. scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
  462. scipy/spatial/transform/tests/test_rotation.py +1342 -790
  463. scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
  464. scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
  465. scipy/special/__init__.py +1 -47
  466. scipy/special/_add_newdocs.py +34 -772
  467. scipy/special/_basic.py +22 -25
  468. scipy/special/_comb.cpython-313t-darwin.so +0 -0
  469. scipy/special/_ellip_harm_2.cpython-313t-darwin.so +0 -0
  470. scipy/special/_gufuncs.cpython-313t-darwin.so +0 -0
  471. scipy/special/_logsumexp.py +83 -69
  472. scipy/special/_orthogonal.pyi +1 -1
  473. scipy/special/_specfun.cpython-313t-darwin.so +0 -0
  474. scipy/special/_special_ufuncs.cpython-313t-darwin.so +0 -0
  475. scipy/special/_spherical_bessel.py +4 -4
  476. scipy/special/_support_alternative_backends.py +212 -119
  477. scipy/special/_test_internal.cpython-313t-darwin.so +0 -0
  478. scipy/special/_testutils.py +4 -4
  479. scipy/special/_ufuncs.cpython-313t-darwin.so +0 -0
  480. scipy/special/_ufuncs.pyi +1 -0
  481. scipy/special/_ufuncs.pyx +215 -1400
  482. scipy/special/_ufuncs_cxx.cpython-313t-darwin.so +0 -0
  483. scipy/special/_ufuncs_cxx.pxd +2 -15
  484. scipy/special/_ufuncs_cxx.pyx +5 -44
  485. scipy/special/_ufuncs_cxx_defs.h +2 -16
  486. scipy/special/_ufuncs_defs.h +0 -8
  487. scipy/special/cython_special.cpython-313t-darwin.so +0 -0
  488. scipy/special/cython_special.pxd +1 -1
  489. scipy/special/tests/_cython_examples/meson.build +10 -1
  490. scipy/special/tests/test_basic.py +153 -20
  491. scipy/special/tests/test_boost_ufuncs.py +3 -0
  492. scipy/special/tests/test_cdflib.py +35 -11
  493. scipy/special/tests/test_gammainc.py +16 -0
  494. scipy/special/tests/test_hyp2f1.py +23 -2
  495. scipy/special/tests/test_log1mexp.py +85 -0
  496. scipy/special/tests/test_logsumexp.py +220 -64
  497. scipy/special/tests/test_mpmath.py +1 -0
  498. scipy/special/tests/test_nan_inputs.py +1 -1
  499. scipy/special/tests/test_orthogonal.py +17 -18
  500. scipy/special/tests/test_sf_error.py +3 -2
  501. scipy/special/tests/test_sph_harm.py +6 -7
  502. scipy/special/tests/test_support_alternative_backends.py +211 -76
  503. scipy/stats/__init__.py +4 -1
  504. scipy/stats/_ansari_swilk_statistics.cpython-313t-darwin.so +0 -0
  505. scipy/stats/_axis_nan_policy.py +5 -12
  506. scipy/stats/_biasedurn.cpython-313t-darwin.so +0 -0
  507. scipy/stats/_continued_fraction.py +387 -0
  508. scipy/stats/_continuous_distns.py +296 -319
  509. scipy/stats/_correlation.py +1 -1
  510. scipy/stats/_covariance.py +6 -3
  511. scipy/stats/_discrete_distns.py +39 -32
  512. scipy/stats/_distn_infrastructure.py +39 -12
  513. scipy/stats/_distribution_infrastructure.py +920 -238
  514. scipy/stats/_entropy.py +9 -10
  515. scipy/{_lib → stats}/_finite_differences.py +1 -1
  516. scipy/stats/_hypotests.py +83 -50
  517. scipy/stats/_kde.py +53 -49
  518. scipy/stats/_ksstats.py +1 -1
  519. scipy/stats/_levy_stable/__init__.py +7 -15
  520. scipy/stats/_levy_stable/levyst.cpython-313t-darwin.so +0 -0
  521. scipy/stats/_morestats.py +118 -73
  522. scipy/stats/_mstats_basic.py +13 -17
  523. scipy/stats/_mstats_extras.py +8 -8
  524. scipy/stats/_multivariate.py +89 -113
  525. scipy/stats/_new_distributions.py +97 -20
  526. scipy/stats/_page_trend_test.py +12 -5
  527. scipy/stats/_probability_distribution.py +265 -43
  528. scipy/stats/_qmc.py +14 -9
  529. scipy/stats/_qmc_cy.cpython-313t-darwin.so +0 -0
  530. scipy/stats/_qmvnt.py +16 -95
  531. scipy/stats/_qmvnt_cy.cpython-313t-darwin.so +0 -0
  532. scipy/stats/_quantile.py +335 -0
  533. scipy/stats/_rcont/rcont.cpython-313t-darwin.so +0 -0
  534. scipy/stats/_resampling.py +5 -30
  535. scipy/stats/_sampling.py +1 -1
  536. scipy/stats/_sobol.cpython-313t-darwin.so +0 -0
  537. scipy/stats/_stats.cpython-313t-darwin.so +0 -0
  538. scipy/stats/_stats_mstats_common.py +21 -2
  539. scipy/stats/_stats_py.py +551 -477
  540. scipy/stats/_stats_pythran.cpython-313t-darwin.so +0 -0
  541. scipy/stats/_unuran/unuran_wrapper.cpython-313t-darwin.so +0 -0
  542. scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
  543. scipy/stats/_variation.py +6 -8
  544. scipy/stats/_wilcoxon.py +13 -7
  545. scipy/stats/tests/common_tests.py +6 -4
  546. scipy/stats/tests/test_axis_nan_policy.py +62 -24
  547. scipy/stats/tests/test_continued_fraction.py +173 -0
  548. scipy/stats/tests/test_continuous.py +379 -60
  549. scipy/stats/tests/test_continuous_basic.py +18 -12
  550. scipy/stats/tests/test_discrete_basic.py +14 -8
  551. scipy/stats/tests/test_discrete_distns.py +16 -16
  552. scipy/stats/tests/test_distributions.py +117 -75
  553. scipy/stats/tests/test_entropy.py +40 -48
  554. scipy/stats/tests/test_fit.py +4 -3
  555. scipy/stats/tests/test_hypotests.py +153 -24
  556. scipy/stats/tests/test_kdeoth.py +109 -41
  557. scipy/stats/tests/test_marray.py +289 -0
  558. scipy/stats/tests/test_morestats.py +81 -49
  559. scipy/stats/tests/test_mstats_basic.py +3 -3
  560. scipy/stats/tests/test_multivariate.py +434 -83
  561. scipy/stats/tests/test_qmc.py +13 -10
  562. scipy/stats/tests/test_quantile.py +199 -0
  563. scipy/stats/tests/test_rank.py +119 -112
  564. scipy/stats/tests/test_resampling.py +47 -56
  565. scipy/stats/tests/test_sampling.py +9 -4
  566. scipy/stats/tests/test_stats.py +799 -939
  567. scipy/stats/tests/test_variation.py +8 -6
  568. scipy/version.py +2 -2
  569. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/LICENSE.txt +4 -4
  570. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/METADATA +12 -12
  571. {scipy-1.15.2.dist-info → scipy-1.16.0.dist-info}/RECORD +572 -579
  572. scipy-1.16.0.dist-info/WHEEL +6 -0
  573. scipy/_lib/array_api_extra/_funcs.py +0 -484
  574. scipy/_lib/array_api_extra/_typing.py +0 -8
  575. scipy/interpolate/_bspl.cpython-313t-darwin.so +0 -0
  576. scipy/optimize/_cobyla.cpython-313t-darwin.so +0 -0
  577. scipy/optimize/_cython_nnls.cpython-313t-darwin.so +0 -0
  578. scipy/optimize/_slsqp.cpython-313t-darwin.so +0 -0
  579. scipy/spatial/qhull_src/COPYING.txt +0 -38
  580. scipy/special/libsf_error_state.dylib +0 -0
  581. scipy/special/tests/test_log_softmax.py +0 -109
  582. scipy/special/tests/test_xsf_cuda.py +0 -114
  583. scipy/special/xsf/binom.h +0 -89
  584. scipy/special/xsf/cdflib.h +0 -100
  585. scipy/special/xsf/cephes/airy.h +0 -307
  586. scipy/special/xsf/cephes/besselpoly.h +0 -51
  587. scipy/special/xsf/cephes/beta.h +0 -257
  588. scipy/special/xsf/cephes/cbrt.h +0 -131
  589. scipy/special/xsf/cephes/chbevl.h +0 -85
  590. scipy/special/xsf/cephes/chdtr.h +0 -193
  591. scipy/special/xsf/cephes/const.h +0 -87
  592. scipy/special/xsf/cephes/ellie.h +0 -293
  593. scipy/special/xsf/cephes/ellik.h +0 -251
  594. scipy/special/xsf/cephes/ellpe.h +0 -107
  595. scipy/special/xsf/cephes/ellpk.h +0 -117
  596. scipy/special/xsf/cephes/expn.h +0 -260
  597. scipy/special/xsf/cephes/gamma.h +0 -398
  598. scipy/special/xsf/cephes/hyp2f1.h +0 -596
  599. scipy/special/xsf/cephes/hyperg.h +0 -361
  600. scipy/special/xsf/cephes/i0.h +0 -149
  601. scipy/special/xsf/cephes/i1.h +0 -158
  602. scipy/special/xsf/cephes/igam.h +0 -421
  603. scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
  604. scipy/special/xsf/cephes/igami.h +0 -313
  605. scipy/special/xsf/cephes/j0.h +0 -225
  606. scipy/special/xsf/cephes/j1.h +0 -198
  607. scipy/special/xsf/cephes/jv.h +0 -715
  608. scipy/special/xsf/cephes/k0.h +0 -164
  609. scipy/special/xsf/cephes/k1.h +0 -163
  610. scipy/special/xsf/cephes/kn.h +0 -243
  611. scipy/special/xsf/cephes/lanczos.h +0 -112
  612. scipy/special/xsf/cephes/ndtr.h +0 -275
  613. scipy/special/xsf/cephes/poch.h +0 -85
  614. scipy/special/xsf/cephes/polevl.h +0 -167
  615. scipy/special/xsf/cephes/psi.h +0 -194
  616. scipy/special/xsf/cephes/rgamma.h +0 -111
  617. scipy/special/xsf/cephes/scipy_iv.h +0 -811
  618. scipy/special/xsf/cephes/shichi.h +0 -248
  619. scipy/special/xsf/cephes/sici.h +0 -224
  620. scipy/special/xsf/cephes/sindg.h +0 -221
  621. scipy/special/xsf/cephes/tandg.h +0 -139
  622. scipy/special/xsf/cephes/trig.h +0 -58
  623. scipy/special/xsf/cephes/unity.h +0 -186
  624. scipy/special/xsf/cephes/zeta.h +0 -172
  625. scipy/special/xsf/config.h +0 -304
  626. scipy/special/xsf/digamma.h +0 -205
  627. scipy/special/xsf/error.h +0 -57
  628. scipy/special/xsf/evalpoly.h +0 -47
  629. scipy/special/xsf/expint.h +0 -266
  630. scipy/special/xsf/hyp2f1.h +0 -694
  631. scipy/special/xsf/iv_ratio.h +0 -173
  632. scipy/special/xsf/lambertw.h +0 -150
  633. scipy/special/xsf/loggamma.h +0 -163
  634. scipy/special/xsf/sici.h +0 -200
  635. scipy/special/xsf/tools.h +0 -427
  636. scipy/special/xsf/trig.h +0 -164
  637. scipy/special/xsf/wright_bessel.h +0 -843
  638. scipy/special/xsf/zlog1.h +0 -35
  639. scipy/stats/_mvn.cpython-313t-darwin.so +0 -0
  640. scipy-1.15.2.dist-info/WHEEL +0 -4
@@ -1,139 +0,0 @@
1
- /* Translated into C++ by SciPy developers in 2024.
2
- * Original header with Copyright information appears below.
3
- */
4
-
5
- /* tandg.c
6
- *
7
- * Circular tangent of argument in degrees
8
- *
9
- *
10
- *
11
- * SYNOPSIS:
12
- *
13
- * double x, y, tandg();
14
- *
15
- * y = tandg( x );
16
- *
17
- *
18
- *
19
- * DESCRIPTION:
20
- *
21
- * Returns the circular tangent of the argument x in degrees.
22
- *
23
- * Range reduction is modulo pi/4. A rational function
24
- * x + x**3 P(x**2)/Q(x**2)
25
- * is employed in the basic interval [0, pi/4].
26
- *
27
- *
28
- *
29
- * ACCURACY:
30
- *
31
- * Relative error:
32
- * arithmetic domain # trials peak rms
33
- * IEEE 0,10 30000 3.2e-16 8.4e-17
34
- *
35
- * ERROR MESSAGES:
36
- *
37
- * message condition value returned
38
- * tandg total loss x > 1.0e14 (IEEE) 0.0
39
- * tandg singularity x = 180 k + 90 INFINITY
40
- */
41
- /* cotdg.c
42
- *
43
- * Circular cotangent of argument in degrees
44
- *
45
- *
46
- *
47
- * SYNOPSIS:
48
- *
49
- * double x, y, cotdg();
50
- *
51
- * y = cotdg( x );
52
- *
53
- *
54
- *
55
- * DESCRIPTION:
56
- *
57
- * Returns the circular cotangent of the argument x in degrees.
58
- *
59
- * Range reduction is modulo pi/4. A rational function
60
- * x + x**3 P(x**2)/Q(x**2)
61
- * is employed in the basic interval [0, pi/4].
62
- *
63
- *
64
- * ERROR MESSAGES:
65
- *
66
- * message condition value returned
67
- * cotdg total loss x > 1.0e14 (IEEE) 0.0
68
- * cotdg singularity x = 180 k INFINITY
69
- */
70
-
71
- /*
72
- * Cephes Math Library Release 2.0: April, 1987
73
- * Copyright 1984, 1987 by Stephen L. Moshier
74
- * Direct inquiries to 30 Frost Street, Cambridge, MA 02140
75
- */
76
- #pragma once
77
-
78
- #include "../config.h"
79
- #include "../error.h"
80
-
81
- namespace xsf {
82
- namespace cephes {
83
-
84
- namespace detail {
85
- constexpr double tandg_lossth = 1.0e14;
86
-
87
- XSF_HOST_DEVICE inline double tancot(double xx, int cotflg) {
88
- double x;
89
- int sign;
90
-
91
- /* make argument positive but save the sign */
92
- if (xx < 0) {
93
- x = -xx;
94
- sign = -1;
95
- } else {
96
- x = xx;
97
- sign = 1;
98
- }
99
-
100
- if (x > detail::tandg_lossth) {
101
- set_error("tandg", SF_ERROR_NO_RESULT, NULL);
102
- return 0.0;
103
- }
104
-
105
- /* modulo 180 */
106
- x = x - 180.0 * std::floor(x / 180.0);
107
- if (cotflg) {
108
- if (x <= 90.0) {
109
- x = 90.0 - x;
110
- } else {
111
- x = x - 90.0;
112
- sign *= -1;
113
- }
114
- } else {
115
- if (x > 90.0) {
116
- x = 180.0 - x;
117
- sign *= -1;
118
- }
119
- }
120
- if (x == 0.0) {
121
- return 0.0;
122
- } else if (x == 45.0) {
123
- return sign * 1.0;
124
- } else if (x == 90.0) {
125
- set_error((cotflg ? "cotdg" : "tandg"), SF_ERROR_SINGULAR, NULL);
126
- return std::numeric_limits<double>::infinity();
127
- }
128
- /* x is now transformed into [0, 90) */
129
- return sign * std::tan(x * detail::PI180);
130
- }
131
-
132
- } // namespace detail
133
-
134
- XSF_HOST_DEVICE inline double tandg(double x) { return (detail::tancot(x, 0)); }
135
-
136
- XSF_HOST_DEVICE inline double cotdg(double x) { return (detail::tancot(x, 1)); }
137
-
138
- } // namespace cephes
139
- } // namespace xsf
@@ -1,58 +0,0 @@
1
- /* Translated into C++ by SciPy developers in 2024.
2
- *
3
- * Original author: Josh Wilson, 2020.
4
- */
5
-
6
- /*
7
- * Implement sin(pi * x) and cos(pi * x) for real x. Since the periods
8
- * of these functions are integral (and thus representable in double
9
- * precision), it's possible to compute them with greater accuracy
10
- * than sin(x) and cos(x).
11
- */
12
- #pragma once
13
-
14
- #include "../config.h"
15
-
16
- namespace xsf {
17
- namespace cephes {
18
-
19
- /* Compute sin(pi * x). */
20
- template <typename T>
21
- XSF_HOST_DEVICE T sinpi(T x) {
22
- T s = 1.0;
23
-
24
- if (x < 0.0) {
25
- x = -x;
26
- s = -1.0;
27
- }
28
-
29
- T r = std::fmod(x, 2.0);
30
- if (r < 0.5) {
31
- return s * std::sin(M_PI * r);
32
- } else if (r > 1.5) {
33
- return s * std::sin(M_PI * (r - 2.0));
34
- } else {
35
- return -s * std::sin(M_PI * (r - 1.0));
36
- }
37
- }
38
-
39
- /* Compute cos(pi * x) */
40
- template <typename T>
41
- XSF_HOST_DEVICE T cospi(T x) {
42
- if (x < 0.0) {
43
- x = -x;
44
- }
45
-
46
- T r = std::fmod(x, 2.0);
47
- if (r == 0.5) {
48
- // We don't want to return -0.0
49
- return 0.0;
50
- }
51
- if (r < 1.0) {
52
- return -std::sin(M_PI * (r - 0.5));
53
- } else {
54
- return std::sin(M_PI * (r - 1.5));
55
- }
56
- }
57
- } // namespace cephes
58
- } // namespace xsf
@@ -1,186 +0,0 @@
1
- /* Translated into C++ by SciPy developers in 2024. */
2
-
3
- /* unity.c
4
- *
5
- * Relative error approximations for function arguments near
6
- * unity.
7
- *
8
- * log1p(x) = log(1+x)
9
- * expm1(x) = exp(x) - 1
10
- * cosm1(x) = cos(x) - 1
11
- * lgam1p(x) = lgam(1+x)
12
- *
13
- */
14
-
15
- /* Scipy changes:
16
- * - 06-10-2016: added lgam1p
17
- */
18
- #pragma once
19
-
20
- #include "../config.h"
21
-
22
- #include "const.h"
23
- #include "gamma.h"
24
- #include "polevl.h"
25
- #include "zeta.h"
26
-
27
- namespace xsf {
28
- namespace cephes {
29
-
30
- namespace detail {
31
-
32
- /* log1p(x) = log(1 + x) */
33
-
34
- /* Coefficients for log(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
35
- * 1/sqrt(2) <= x < sqrt(2)
36
- * Theoretical peak relative error = 2.32e-20
37
- */
38
-
39
- constexpr double unity_LP[] = {
40
- 4.5270000862445199635215E-5, 4.9854102823193375972212E-1, 6.5787325942061044846969E0,
41
- 2.9911919328553073277375E1, 6.0949667980987787057556E1, 5.7112963590585538103336E1,
42
- 2.0039553499201281259648E1,
43
- };
44
-
45
- constexpr double unity_LQ[] = {
46
- /* 1.0000000000000000000000E0, */
47
- 1.5062909083469192043167E1, 8.3047565967967209469434E1, 2.2176239823732856465394E2,
48
- 3.0909872225312059774938E2, 2.1642788614495947685003E2, 6.0118660497603843919306E1,
49
- };
50
-
51
- } // namespace detail
52
-
53
- XSF_HOST_DEVICE inline double log1p(double x) {
54
- double z;
55
-
56
- z = 1.0 + x;
57
- if ((z < M_SQRT1_2) || (z > M_SQRT2))
58
- return (std::log(z));
59
- z = x * x;
60
- z = -0.5 * z + x * (z * polevl(x, detail::unity_LP, 6) / p1evl(x, detail::unity_LQ, 6));
61
- return (x + z);
62
- }
63
-
64
- /* log(1 + x) - x */
65
- XSF_HOST_DEVICE inline double log1pmx(double x) {
66
- if (std::abs(x) < 0.5) {
67
- uint64_t n;
68
- double xfac = x;
69
- double term;
70
- double res = 0;
71
-
72
- for (n = 2; n < detail::MAXITER; n++) {
73
- xfac *= -x;
74
- term = xfac / n;
75
- res += term;
76
- if (std::abs(term) < detail::MACHEP * std::abs(res)) {
77
- break;
78
- }
79
- }
80
- return res;
81
- } else {
82
- return log1p(x) - x;
83
- }
84
- }
85
-
86
- /* expm1(x) = exp(x) - 1 */
87
-
88
- /* e^x = 1 + 2x P(x^2)/( Q(x^2) - P(x^2) )
89
- * -0.5 <= x <= 0.5
90
- */
91
-
92
- namespace detail {
93
-
94
- constexpr double unity_EP[3] = {
95
- 1.2617719307481059087798E-4,
96
- 3.0299440770744196129956E-2,
97
- 9.9999999999999999991025E-1,
98
- };
99
-
100
- constexpr double unity_EQ[4] = {
101
- 3.0019850513866445504159E-6,
102
- 2.5244834034968410419224E-3,
103
- 2.2726554820815502876593E-1,
104
- 2.0000000000000000000897E0,
105
- };
106
-
107
- } // namespace detail
108
-
109
- XSF_HOST_DEVICE inline double expm1(double x) {
110
- double r, xx;
111
-
112
- if (!std::isfinite(x)) {
113
- if (std::isnan(x)) {
114
- return x;
115
- } else if (x > 0) {
116
- return x;
117
- } else {
118
- return -1.0;
119
- }
120
- }
121
- if ((x < -0.5) || (x > 0.5))
122
- return (std::exp(x) - 1.0);
123
- xx = x * x;
124
- r = x * polevl(xx, detail::unity_EP, 2);
125
- r = r / (polevl(xx, detail::unity_EQ, 3) - r);
126
- return (r + r);
127
- }
128
-
129
- /* cosm1(x) = cos(x) - 1 */
130
-
131
- namespace detail {
132
- constexpr double unity_coscof[7] = {
133
- 4.7377507964246204691685E-14, -1.1470284843425359765671E-11, 2.0876754287081521758361E-9,
134
- -2.7557319214999787979814E-7, 2.4801587301570552304991E-5, -1.3888888888888872993737E-3,
135
- 4.1666666666666666609054E-2,
136
- };
137
-
138
- }
139
-
140
- XSF_HOST_DEVICE inline double cosm1(double x) {
141
- double xx;
142
-
143
- if ((x < -M_PI_4) || (x > M_PI_4))
144
- return (std::cos(x) - 1.0);
145
- xx = x * x;
146
- xx = -0.5 * xx + xx * xx * polevl(xx, detail::unity_coscof, 6);
147
- return xx;
148
- }
149
-
150
- namespace detail {
151
- /* Compute lgam(x + 1) around x = 0 using its Taylor series. */
152
- XSF_HOST_DEVICE inline double lgam1p_taylor(double x) {
153
- int n;
154
- double xfac, coeff, res;
155
-
156
- if (x == 0) {
157
- return 0;
158
- }
159
- res = -SCIPY_EULER * x;
160
- xfac = -x;
161
- for (n = 2; n < 42; n++) {
162
- xfac *= -x;
163
- coeff = xsf::cephes::zeta(n, 1) * xfac / n;
164
- res += coeff;
165
- if (std::abs(coeff) < detail::MACHEP * std::abs(res)) {
166
- break;
167
- }
168
- }
169
-
170
- return res;
171
- }
172
- } // namespace detail
173
-
174
- /* Compute lgam(x + 1). */
175
- XSF_HOST_DEVICE inline double lgam1p(double x) {
176
- if (std::abs(x) <= 0.5) {
177
- return detail::lgam1p_taylor(x);
178
- } else if (std::abs(x - 1) < 0.5) {
179
- return std::log(x) + detail::lgam1p_taylor(x - 1);
180
- } else {
181
- return lgam(x + 1);
182
- }
183
- }
184
-
185
- } // namespace cephes
186
- } // namespace xsf
@@ -1,172 +0,0 @@
1
- /* Translated into C++ by SciPy developers in 2024.
2
- * Original header with Copyright information appears below.
3
- */
4
-
5
- /* zeta.c
6
- *
7
- * Riemann zeta function of two arguments
8
- *
9
- *
10
- *
11
- * SYNOPSIS:
12
- *
13
- * double x, q, y, zeta();
14
- *
15
- * y = zeta( x, q );
16
- *
17
- *
18
- *
19
- * DESCRIPTION:
20
- *
21
- *
22
- *
23
- * inf.
24
- * - -x
25
- * zeta(x,q) = > (k+q)
26
- * -
27
- * k=0
28
- *
29
- * where x > 1 and q is not a negative integer or zero.
30
- * The Euler-Maclaurin summation formula is used to obtain
31
- * the expansion
32
- *
33
- * n
34
- * - -x
35
- * zeta(x,q) = > (k+q)
36
- * -
37
- * k=1
38
- *
39
- * 1-x inf. B x(x+1)...(x+2j)
40
- * (n+q) 1 - 2j
41
- * + --------- - ------- + > --------------------
42
- * x-1 x - x+2j+1
43
- * 2(n+q) j=1 (2j)! (n+q)
44
- *
45
- * where the B2j are Bernoulli numbers. Note that (see zetac.c)
46
- * zeta(x,1) = zetac(x) + 1.
47
- *
48
- *
49
- *
50
- * ACCURACY:
51
- *
52
- *
53
- *
54
- * REFERENCE:
55
- *
56
- * Gradshteyn, I. S., and I. M. Ryzhik, Tables of Integrals,
57
- * Series, and Products, p. 1073; Academic Press, 1980.
58
- *
59
- */
60
-
61
- /*
62
- * Cephes Math Library Release 2.0: April, 1987
63
- * Copyright 1984, 1987 by Stephen L. Moshier
64
- * Direct inquiries to 30 Frost Street, Cambridge, MA 02140
65
- */
66
- #pragma once
67
-
68
- #include "../config.h"
69
- #include "../error.h"
70
- #include "const.h"
71
-
72
- namespace xsf {
73
- namespace cephes {
74
-
75
- namespace detail {
76
- /* Expansion coefficients
77
- * for Euler-Maclaurin summation formula
78
- * (2k)! / B2k
79
- * where B2k are Bernoulli numbers
80
- */
81
- constexpr double zeta_A[] = {
82
- 12.0,
83
- -720.0,
84
- 30240.0,
85
- -1209600.0,
86
- 47900160.0,
87
- -1.8924375803183791606e9, /*1.307674368e12/691 */
88
- 7.47242496e10,
89
- -2.950130727918164224e12, /*1.067062284288e16/3617 */
90
- 1.1646782814350067249e14, /*5.109094217170944e18/43867 */
91
- -4.5979787224074726105e15, /*8.028576626982912e20/174611 */
92
- 1.8152105401943546773e17, /*1.5511210043330985984e23/854513 */
93
- -7.1661652561756670113e18 /*1.6938241367317436694528e27/236364091 */
94
- };
95
-
96
- /* 30 Nov 86 -- error in third coefficient fixed */
97
- } // namespace detail
98
-
99
- XSF_HOST_DEVICE double inline zeta(double x, double q) {
100
- int i;
101
- double a, b, k, s, t, w;
102
-
103
- if (x == 1.0)
104
- goto retinf;
105
-
106
- if (x < 1.0) {
107
- domerr:
108
- set_error("zeta", SF_ERROR_DOMAIN, NULL);
109
- return (std::numeric_limits<double>::quiet_NaN());
110
- }
111
-
112
- if (q <= 0.0) {
113
- if (q == floor(q)) {
114
- set_error("zeta", SF_ERROR_SINGULAR, NULL);
115
- retinf:
116
- return (std::numeric_limits<double>::infinity());
117
- }
118
- if (x != std::floor(x))
119
- goto domerr; /* because q^-x not defined */
120
- }
121
-
122
- /* Asymptotic expansion
123
- * https://dlmf.nist.gov/25.11#E43
124
- */
125
- if (q > 1e8) {
126
- return (1 / (x - 1) + 1 / (2 * q)) * std::pow(q, 1 - x);
127
- }
128
-
129
- /* Euler-Maclaurin summation formula */
130
-
131
- /* Permit negative q but continue sum until n+q > +9 .
132
- * This case should be handled by a reflection formula.
133
- * If q<0 and x is an integer, there is a relation to
134
- * the polyGamma function.
135
- */
136
- s = std::pow(q, -x);
137
- a = q;
138
- i = 0;
139
- b = 0.0;
140
- while ((i < 9) || (a <= 9.0)) {
141
- i += 1;
142
- a += 1.0;
143
- b = std::pow(a, -x);
144
- s += b;
145
- if (std::abs(b / s) < detail::MACHEP)
146
- goto done;
147
- }
148
-
149
- w = a;
150
- s += b * w / (x - 1.0);
151
- s -= 0.5 * b;
152
- a = 1.0;
153
- k = 0.0;
154
- for (i = 0; i < 12; i++) {
155
- a *= x + k;
156
- b /= w;
157
- t = a * b / detail::zeta_A[i];
158
- s = s + t;
159
- t = std::abs(t / s);
160
- if (t < detail::MACHEP)
161
- goto done;
162
- k += 1.0;
163
- a *= x + k;
164
- b /= w;
165
- k += 1.0;
166
- }
167
- done:
168
- return (s);
169
- }
170
-
171
- } // namespace cephes
172
- } // namespace xsf