scipy 1.15.3__cp312-cp312-macosx_12_0_arm64.whl → 1.16.0rc2__cp312-cp312-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 (629) 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-312-darwin.so +0 -0
  5. scipy/_lib/_array_api.py +486 -161
  6. scipy/_lib/_array_api_compat_vendor.py +9 -0
  7. scipy/_lib/_bunch.py +4 -0
  8. scipy/_lib/_ccallback_c.cpython-312-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_deprecation_call.cpython-312-darwin.so +0 -0
  13. scipy/_lib/_test_deprecation_def.cpython-312-darwin.so +0 -0
  14. scipy/_lib/_testutils.py +6 -2
  15. scipy/_lib/_util.py +222 -125
  16. scipy/_lib/array_api_compat/__init__.py +4 -4
  17. scipy/_lib/array_api_compat/_internal.py +19 -6
  18. scipy/_lib/array_api_compat/common/__init__.py +1 -1
  19. scipy/_lib/array_api_compat/common/_aliases.py +365 -193
  20. scipy/_lib/array_api_compat/common/_fft.py +94 -64
  21. scipy/_lib/array_api_compat/common/_helpers.py +413 -180
  22. scipy/_lib/array_api_compat/common/_linalg.py +116 -40
  23. scipy/_lib/array_api_compat/common/_typing.py +179 -10
  24. scipy/_lib/array_api_compat/cupy/__init__.py +1 -4
  25. scipy/_lib/array_api_compat/cupy/_aliases.py +61 -41
  26. scipy/_lib/array_api_compat/cupy/_info.py +16 -6
  27. scipy/_lib/array_api_compat/cupy/_typing.py +24 -39
  28. scipy/_lib/array_api_compat/dask/array/__init__.py +6 -3
  29. scipy/_lib/array_api_compat/dask/array/_aliases.py +267 -108
  30. scipy/_lib/array_api_compat/dask/array/_info.py +105 -34
  31. scipy/_lib/array_api_compat/dask/array/fft.py +5 -8
  32. scipy/_lib/array_api_compat/dask/array/linalg.py +21 -22
  33. scipy/_lib/array_api_compat/numpy/__init__.py +13 -15
  34. scipy/_lib/array_api_compat/numpy/_aliases.py +98 -49
  35. scipy/_lib/array_api_compat/numpy/_info.py +36 -16
  36. scipy/_lib/array_api_compat/numpy/_typing.py +27 -43
  37. scipy/_lib/array_api_compat/numpy/fft.py +11 -5
  38. scipy/_lib/array_api_compat/numpy/linalg.py +75 -22
  39. scipy/_lib/array_api_compat/torch/__init__.py +3 -5
  40. scipy/_lib/array_api_compat/torch/_aliases.py +262 -159
  41. scipy/_lib/array_api_compat/torch/_info.py +27 -16
  42. scipy/_lib/array_api_compat/torch/_typing.py +3 -0
  43. scipy/_lib/array_api_compat/torch/fft.py +17 -18
  44. scipy/_lib/array_api_compat/torch/linalg.py +16 -16
  45. scipy/_lib/array_api_extra/__init__.py +26 -3
  46. scipy/_lib/array_api_extra/_delegation.py +171 -0
  47. scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
  48. scipy/_lib/array_api_extra/_lib/_at.py +463 -0
  49. scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
  50. scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
  51. scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
  52. scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
  53. scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
  54. scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
  55. scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
  56. scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
  57. scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
  58. scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
  59. scipy/_lib/array_api_extra/testing.py +359 -0
  60. scipy/_lib/decorator.py +2 -2
  61. scipy/_lib/doccer.py +1 -7
  62. scipy/_lib/messagestream.cpython-312-darwin.so +0 -0
  63. scipy/_lib/pyprima/__init__.py +212 -0
  64. scipy/_lib/pyprima/cobyla/__init__.py +0 -0
  65. scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
  66. scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
  67. scipy/_lib/pyprima/cobyla/geometry.py +226 -0
  68. scipy/_lib/pyprima/cobyla/initialize.py +215 -0
  69. scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
  70. scipy/_lib/pyprima/cobyla/update.py +289 -0
  71. scipy/_lib/pyprima/common/__init__.py +0 -0
  72. scipy/_lib/pyprima/common/_bounds.py +34 -0
  73. scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
  74. scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
  75. scipy/_lib/pyprima/common/_project.py +173 -0
  76. scipy/_lib/pyprima/common/checkbreak.py +93 -0
  77. scipy/_lib/pyprima/common/consts.py +47 -0
  78. scipy/_lib/pyprima/common/evaluate.py +99 -0
  79. scipy/_lib/pyprima/common/history.py +38 -0
  80. scipy/_lib/pyprima/common/infos.py +30 -0
  81. scipy/_lib/pyprima/common/linalg.py +435 -0
  82. scipy/_lib/pyprima/common/message.py +290 -0
  83. scipy/_lib/pyprima/common/powalg.py +131 -0
  84. scipy/_lib/pyprima/common/preproc.py +277 -0
  85. scipy/_lib/pyprima/common/present.py +5 -0
  86. scipy/_lib/pyprima/common/ratio.py +54 -0
  87. scipy/_lib/pyprima/common/redrho.py +47 -0
  88. scipy/_lib/pyprima/common/selectx.py +296 -0
  89. scipy/_lib/tests/test__util.py +105 -121
  90. scipy/_lib/tests/test_array_api.py +166 -35
  91. scipy/_lib/tests/test_bunch.py +7 -0
  92. scipy/_lib/tests/test_ccallback.py +2 -10
  93. scipy/_lib/tests/test_public_api.py +13 -0
  94. scipy/cluster/_hierarchy.cpython-312-darwin.so +0 -0
  95. scipy/cluster/_optimal_leaf_ordering.cpython-312-darwin.so +0 -0
  96. scipy/cluster/_vq.cpython-312-darwin.so +0 -0
  97. scipy/cluster/hierarchy.py +393 -223
  98. scipy/cluster/tests/test_hierarchy.py +273 -335
  99. scipy/cluster/tests/test_vq.py +45 -61
  100. scipy/cluster/vq.py +39 -35
  101. scipy/conftest.py +263 -157
  102. scipy/constants/_constants.py +4 -1
  103. scipy/constants/tests/test_codata.py +2 -2
  104. scipy/constants/tests/test_constants.py +11 -18
  105. scipy/datasets/_download_all.py +15 -1
  106. scipy/datasets/_fetchers.py +7 -1
  107. scipy/datasets/_utils.py +1 -1
  108. scipy/differentiate/_differentiate.py +25 -25
  109. scipy/differentiate/tests/test_differentiate.py +24 -25
  110. scipy/fft/_basic.py +20 -0
  111. scipy/fft/_helper.py +3 -34
  112. scipy/fft/_pocketfft/helper.py +29 -1
  113. scipy/fft/_pocketfft/tests/test_basic.py +2 -4
  114. scipy/fft/_pocketfft/tests/test_real_transforms.py +4 -4
  115. scipy/fft/_realtransforms.py +13 -0
  116. scipy/fft/tests/test_basic.py +27 -25
  117. scipy/fft/tests/test_fftlog.py +16 -7
  118. scipy/fft/tests/test_helper.py +18 -34
  119. scipy/fft/tests/test_real_transforms.py +8 -10
  120. scipy/fftpack/convolve.cpython-312-darwin.so +0 -0
  121. scipy/fftpack/tests/test_basic.py +2 -4
  122. scipy/fftpack/tests/test_real_transforms.py +8 -9
  123. scipy/integrate/_bvp.py +9 -3
  124. scipy/integrate/_cubature.py +3 -2
  125. scipy/integrate/_dop.cpython-312-darwin.so +0 -0
  126. scipy/integrate/_lsoda.cpython-312-darwin.so +0 -0
  127. scipy/integrate/_ode.py +9 -2
  128. scipy/integrate/_odepack.cpython-312-darwin.so +0 -0
  129. scipy/integrate/_quad_vec.py +21 -29
  130. scipy/integrate/_quadpack.cpython-312-darwin.so +0 -0
  131. scipy/integrate/_quadpack_py.py +11 -7
  132. scipy/integrate/_quadrature.py +3 -3
  133. scipy/integrate/_rules/_base.py +2 -2
  134. scipy/integrate/_tanhsinh.py +48 -47
  135. scipy/integrate/_test_odeint_banded.cpython-312-darwin.so +0 -0
  136. scipy/integrate/_vode.cpython-312-darwin.so +0 -0
  137. scipy/integrate/tests/test__quad_vec.py +0 -6
  138. scipy/integrate/tests/test_banded_ode_solvers.py +85 -0
  139. scipy/integrate/tests/test_cubature.py +21 -35
  140. scipy/integrate/tests/test_quadrature.py +6 -8
  141. scipy/integrate/tests/test_tanhsinh.py +56 -48
  142. scipy/interpolate/__init__.py +70 -58
  143. scipy/interpolate/_bary_rational.py +22 -22
  144. scipy/interpolate/_bsplines.py +119 -66
  145. scipy/interpolate/_cubic.py +65 -50
  146. scipy/interpolate/_dfitpack.cpython-312-darwin.so +0 -0
  147. scipy/interpolate/_dierckx.cpython-312-darwin.so +0 -0
  148. scipy/interpolate/_fitpack.cpython-312-darwin.so +0 -0
  149. scipy/interpolate/_fitpack2.py +9 -6
  150. scipy/interpolate/_fitpack_impl.py +32 -26
  151. scipy/interpolate/_fitpack_repro.py +23 -19
  152. scipy/interpolate/_interpnd.cpython-312-darwin.so +0 -0
  153. scipy/interpolate/_interpolate.py +30 -12
  154. scipy/interpolate/_ndbspline.py +13 -18
  155. scipy/interpolate/_ndgriddata.py +5 -8
  156. scipy/interpolate/_polyint.py +95 -31
  157. scipy/interpolate/_ppoly.cpython-312-darwin.so +0 -0
  158. scipy/interpolate/_rbf.py +2 -2
  159. scipy/interpolate/_rbfinterp.py +1 -1
  160. scipy/interpolate/_rbfinterp_pythran.cpython-312-darwin.so +0 -0
  161. scipy/interpolate/_rgi.py +31 -26
  162. scipy/interpolate/_rgi_cython.cpython-312-darwin.so +0 -0
  163. scipy/interpolate/dfitpack.py +0 -20
  164. scipy/interpolate/interpnd.py +1 -2
  165. scipy/interpolate/tests/test_bary_rational.py +2 -2
  166. scipy/interpolate/tests/test_bsplines.py +97 -1
  167. scipy/interpolate/tests/test_fitpack2.py +39 -1
  168. scipy/interpolate/tests/test_interpnd.py +32 -20
  169. scipy/interpolate/tests/test_interpolate.py +48 -4
  170. scipy/interpolate/tests/test_rgi.py +2 -1
  171. scipy/io/_fast_matrix_market/__init__.py +2 -0
  172. scipy/io/_harwell_boeing/_fortran_format_parser.py +19 -16
  173. scipy/io/_harwell_boeing/hb.py +7 -11
  174. scipy/io/_idl.py +5 -7
  175. scipy/io/_netcdf.py +15 -5
  176. scipy/io/_test_fortran.cpython-312-darwin.so +0 -0
  177. scipy/io/arff/tests/test_arffread.py +3 -3
  178. scipy/io/matlab/__init__.py +5 -3
  179. scipy/io/matlab/_mio.py +4 -1
  180. scipy/io/matlab/_mio5.py +19 -13
  181. scipy/io/matlab/_mio5_utils.cpython-312-darwin.so +0 -0
  182. scipy/io/matlab/_mio_utils.cpython-312-darwin.so +0 -0
  183. scipy/io/matlab/_miobase.py +4 -1
  184. scipy/io/matlab/_streams.cpython-312-darwin.so +0 -0
  185. scipy/io/matlab/tests/test_mio.py +46 -18
  186. scipy/io/matlab/tests/test_mio_funcs.py +1 -1
  187. scipy/io/tests/test_mmio.py +7 -1
  188. scipy/io/tests/test_wavfile.py +41 -0
  189. scipy/io/wavfile.py +57 -10
  190. scipy/linalg/_basic.py +113 -86
  191. scipy/linalg/_cythonized_array_utils.cpython-312-darwin.so +0 -0
  192. scipy/linalg/_decomp.py +22 -9
  193. scipy/linalg/_decomp_cholesky.py +28 -13
  194. scipy/linalg/_decomp_cossin.py +45 -30
  195. scipy/linalg/_decomp_interpolative.cpython-312-darwin.so +0 -0
  196. scipy/linalg/_decomp_ldl.py +4 -1
  197. scipy/linalg/_decomp_lu.py +18 -6
  198. scipy/linalg/_decomp_lu_cython.cpython-312-darwin.so +0 -0
  199. scipy/linalg/_decomp_polar.py +2 -0
  200. scipy/linalg/_decomp_qr.py +6 -2
  201. scipy/linalg/_decomp_qz.py +3 -0
  202. scipy/linalg/_decomp_schur.py +3 -1
  203. scipy/linalg/_decomp_svd.py +13 -2
  204. scipy/linalg/_decomp_update.cpython-312-darwin.so +0 -0
  205. scipy/linalg/_expm_frechet.py +4 -0
  206. scipy/linalg/_fblas.cpython-312-darwin.so +0 -0
  207. scipy/linalg/_flapack.cpython-312-darwin.so +0 -0
  208. scipy/linalg/_linalg_pythran.cpython-312-darwin.so +0 -0
  209. scipy/linalg/_matfuncs.py +187 -4
  210. scipy/linalg/_matfuncs_expm.cpython-312-darwin.so +0 -0
  211. scipy/linalg/_matfuncs_schur_sqrtm.cpython-312-darwin.so +0 -0
  212. scipy/linalg/_matfuncs_sqrtm.py +1 -99
  213. scipy/linalg/_matfuncs_sqrtm_triu.cpython-312-darwin.so +0 -0
  214. scipy/linalg/_procrustes.py +2 -0
  215. scipy/linalg/_sketches.py +17 -6
  216. scipy/linalg/_solve_toeplitz.cpython-312-darwin.so +0 -0
  217. scipy/linalg/_solvers.py +7 -2
  218. scipy/linalg/_special_matrices.py +26 -36
  219. scipy/linalg/cython_blas.cpython-312-darwin.so +0 -0
  220. scipy/linalg/cython_lapack.cpython-312-darwin.so +0 -0
  221. scipy/linalg/lapack.py +22 -2
  222. scipy/linalg/tests/_cython_examples/meson.build +7 -0
  223. scipy/linalg/tests/test_basic.py +31 -16
  224. scipy/linalg/tests/test_batch.py +588 -0
  225. scipy/linalg/tests/test_cythonized_array_utils.py +0 -2
  226. scipy/linalg/tests/test_decomp.py +40 -3
  227. scipy/linalg/tests/test_decomp_cossin.py +14 -0
  228. scipy/linalg/tests/test_decomp_ldl.py +1 -1
  229. scipy/linalg/tests/test_lapack.py +115 -7
  230. scipy/linalg/tests/test_matfuncs.py +157 -102
  231. scipy/linalg/tests/test_procrustes.py +0 -7
  232. scipy/linalg/tests/test_solve_toeplitz.py +1 -1
  233. scipy/linalg/tests/test_special_matrices.py +1 -5
  234. scipy/ndimage/__init__.py +1 -0
  235. scipy/ndimage/_cytest.cpython-312-darwin.so +0 -0
  236. scipy/ndimage/_delegators.py +8 -2
  237. scipy/ndimage/_filters.py +453 -5
  238. scipy/ndimage/_interpolation.py +36 -6
  239. scipy/ndimage/_measurements.py +4 -2
  240. scipy/ndimage/_morphology.py +5 -0
  241. scipy/ndimage/_nd_image.cpython-312-darwin.so +0 -0
  242. scipy/ndimage/_ni_docstrings.py +5 -1
  243. scipy/ndimage/_ni_label.cpython-312-darwin.so +0 -0
  244. scipy/ndimage/_ni_support.py +1 -5
  245. scipy/ndimage/_rank_filter_1d.cpython-312-darwin.so +0 -0
  246. scipy/ndimage/_support_alternative_backends.py +18 -6
  247. scipy/ndimage/tests/test_filters.py +370 -259
  248. scipy/ndimage/tests/test_fourier.py +7 -9
  249. scipy/ndimage/tests/test_interpolation.py +68 -61
  250. scipy/ndimage/tests/test_measurements.py +18 -35
  251. scipy/ndimage/tests/test_morphology.py +143 -131
  252. scipy/ndimage/tests/test_splines.py +1 -3
  253. scipy/odr/__odrpack.cpython-312-darwin.so +0 -0
  254. scipy/optimize/_basinhopping.py +13 -7
  255. scipy/optimize/_bglu_dense.cpython-312-darwin.so +0 -0
  256. scipy/optimize/_bracket.py +17 -24
  257. scipy/optimize/_chandrupatla.py +9 -10
  258. scipy/optimize/_cobyla_py.py +104 -123
  259. scipy/optimize/_constraints.py +14 -10
  260. scipy/optimize/_differentiable_functions.py +371 -230
  261. scipy/optimize/_differentialevolution.py +4 -3
  262. scipy/optimize/_direct.cpython-312-darwin.so +0 -0
  263. scipy/optimize/_dual_annealing.py +1 -1
  264. scipy/optimize/_elementwise.py +1 -4
  265. scipy/optimize/_group_columns.cpython-312-darwin.so +0 -0
  266. scipy/optimize/_lbfgsb.cpython-312-darwin.so +0 -0
  267. scipy/optimize/_lbfgsb_py.py +57 -16
  268. scipy/optimize/_linprog_doc.py +2 -2
  269. scipy/optimize/_linprog_highs.py +2 -2
  270. scipy/optimize/_linprog_ip.py +25 -10
  271. scipy/optimize/_linprog_util.py +14 -16
  272. scipy/optimize/_lsap.cpython-312-darwin.so +0 -0
  273. scipy/optimize/_lsq/common.py +3 -3
  274. scipy/optimize/_lsq/dogbox.py +16 -2
  275. scipy/optimize/_lsq/givens_elimination.cpython-312-darwin.so +0 -0
  276. scipy/optimize/_lsq/least_squares.py +198 -126
  277. scipy/optimize/_lsq/lsq_linear.py +6 -6
  278. scipy/optimize/_lsq/trf.py +35 -8
  279. scipy/optimize/_milp.py +3 -1
  280. scipy/optimize/_minimize.py +105 -36
  281. scipy/optimize/_minpack.cpython-312-darwin.so +0 -0
  282. scipy/optimize/_minpack_py.py +21 -14
  283. scipy/optimize/_moduleTNC.cpython-312-darwin.so +0 -0
  284. scipy/optimize/_nnls.py +20 -21
  285. scipy/optimize/_nonlin.py +34 -3
  286. scipy/optimize/_numdiff.py +288 -110
  287. scipy/optimize/_optimize.py +86 -48
  288. scipy/optimize/_pava_pybind.cpython-312-darwin.so +0 -0
  289. scipy/optimize/_remove_redundancy.py +5 -5
  290. scipy/optimize/_root_scalar.py +1 -1
  291. scipy/optimize/_shgo.py +6 -0
  292. scipy/optimize/_shgo_lib/_complex.py +1 -1
  293. scipy/optimize/_slsqp_py.py +216 -124
  294. scipy/optimize/_slsqplib.cpython-312-darwin.so +0 -0
  295. scipy/optimize/_spectral.py +1 -1
  296. scipy/optimize/_tnc.py +8 -1
  297. scipy/optimize/_trlib/_trlib.cpython-312-darwin.so +0 -0
  298. scipy/optimize/_trustregion.py +20 -6
  299. scipy/optimize/_trustregion_constr/canonical_constraint.py +7 -7
  300. scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +1 -1
  301. scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +11 -3
  302. scipy/optimize/_trustregion_constr/projections.py +12 -8
  303. scipy/optimize/_trustregion_constr/qp_subproblem.py +9 -9
  304. scipy/optimize/_trustregion_constr/tests/test_projections.py +7 -7
  305. scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +77 -77
  306. scipy/optimize/_trustregion_constr/tr_interior_point.py +5 -5
  307. scipy/optimize/_trustregion_exact.py +0 -1
  308. scipy/optimize/_zeros.cpython-312-darwin.so +0 -0
  309. scipy/optimize/_zeros_py.py +97 -17
  310. scipy/optimize/cython_optimize/_zeros.cpython-312-darwin.so +0 -0
  311. scipy/optimize/slsqp.py +0 -1
  312. scipy/optimize/tests/test__basinhopping.py +1 -1
  313. scipy/optimize/tests/test__differential_evolution.py +4 -4
  314. scipy/optimize/tests/test__linprog_clean_inputs.py +5 -3
  315. scipy/optimize/tests/test__numdiff.py +66 -22
  316. scipy/optimize/tests/test__remove_redundancy.py +2 -2
  317. scipy/optimize/tests/test__shgo.py +9 -1
  318. scipy/optimize/tests/test_bracket.py +36 -46
  319. scipy/optimize/tests/test_chandrupatla.py +133 -135
  320. scipy/optimize/tests/test_cobyla.py +74 -45
  321. scipy/optimize/tests/test_constraints.py +1 -1
  322. scipy/optimize/tests/test_differentiable_functions.py +226 -6
  323. scipy/optimize/tests/test_lbfgsb_hessinv.py +22 -0
  324. scipy/optimize/tests/test_least_squares.py +125 -13
  325. scipy/optimize/tests/test_linear_assignment.py +3 -3
  326. scipy/optimize/tests/test_linprog.py +3 -3
  327. scipy/optimize/tests/test_lsq_linear.py +6 -6
  328. scipy/optimize/tests/test_minimize_constrained.py +2 -2
  329. scipy/optimize/tests/test_minpack.py +4 -4
  330. scipy/optimize/tests/test_nnls.py +43 -3
  331. scipy/optimize/tests/test_nonlin.py +36 -0
  332. scipy/optimize/tests/test_optimize.py +95 -17
  333. scipy/optimize/tests/test_slsqp.py +36 -4
  334. scipy/optimize/tests/test_zeros.py +34 -1
  335. scipy/signal/__init__.py +12 -23
  336. scipy/signal/_delegators.py +568 -0
  337. scipy/signal/_filter_design.py +459 -241
  338. scipy/signal/_fir_filter_design.py +262 -90
  339. scipy/signal/_lti_conversion.py +3 -2
  340. scipy/signal/_ltisys.py +118 -91
  341. scipy/signal/_max_len_seq_inner.cpython-312-darwin.so +0 -0
  342. scipy/signal/_peak_finding_utils.cpython-312-darwin.so +0 -0
  343. scipy/signal/_polyutils.py +172 -0
  344. scipy/signal/_short_time_fft.py +519 -70
  345. scipy/signal/_signal_api.py +30 -0
  346. scipy/signal/_signaltools.py +719 -399
  347. scipy/signal/_sigtools.cpython-312-darwin.so +0 -0
  348. scipy/signal/_sosfilt.cpython-312-darwin.so +0 -0
  349. scipy/signal/_spectral_py.py +230 -50
  350. scipy/signal/_spline.cpython-312-darwin.so +0 -0
  351. scipy/signal/_spline_filters.py +108 -68
  352. scipy/signal/_support_alternative_backends.py +73 -0
  353. scipy/signal/_upfirdn.py +4 -1
  354. scipy/signal/_upfirdn_apply.cpython-312-darwin.so +0 -0
  355. scipy/signal/_waveforms.py +2 -11
  356. scipy/signal/_wavelets.py +1 -1
  357. scipy/signal/fir_filter_design.py +1 -0
  358. scipy/signal/spline.py +4 -11
  359. scipy/signal/tests/_scipy_spectral_test_shim.py +2 -171
  360. scipy/signal/tests/test_bsplines.py +114 -79
  361. scipy/signal/tests/test_cont2discrete.py +9 -2
  362. scipy/signal/tests/test_filter_design.py +721 -481
  363. scipy/signal/tests/test_fir_filter_design.py +332 -140
  364. scipy/signal/tests/test_savitzky_golay.py +4 -3
  365. scipy/signal/tests/test_short_time_fft.py +221 -3
  366. scipy/signal/tests/test_signaltools.py +2144 -1348
  367. scipy/signal/tests/test_spectral.py +50 -6
  368. scipy/signal/tests/test_splines.py +161 -96
  369. scipy/signal/tests/test_upfirdn.py +84 -50
  370. scipy/signal/tests/test_waveforms.py +20 -0
  371. scipy/signal/tests/test_windows.py +607 -466
  372. scipy/signal/windows/_windows.py +287 -148
  373. scipy/sparse/__init__.py +23 -4
  374. scipy/sparse/_base.py +270 -108
  375. scipy/sparse/_bsr.py +7 -4
  376. scipy/sparse/_compressed.py +59 -231
  377. scipy/sparse/_construct.py +90 -38
  378. scipy/sparse/_coo.py +115 -181
  379. scipy/sparse/_csc.py +4 -4
  380. scipy/sparse/_csparsetools.cpython-312-darwin.so +0 -0
  381. scipy/sparse/_csr.py +2 -2
  382. scipy/sparse/_data.py +48 -48
  383. scipy/sparse/_dia.py +105 -18
  384. scipy/sparse/_dok.py +0 -23
  385. scipy/sparse/_index.py +4 -4
  386. scipy/sparse/_matrix.py +23 -0
  387. scipy/sparse/_sparsetools.cpython-312-darwin.so +0 -0
  388. scipy/sparse/_sputils.py +37 -22
  389. scipy/sparse/base.py +0 -9
  390. scipy/sparse/bsr.py +0 -14
  391. scipy/sparse/compressed.py +0 -23
  392. scipy/sparse/construct.py +0 -6
  393. scipy/sparse/coo.py +0 -14
  394. scipy/sparse/csc.py +0 -3
  395. scipy/sparse/csgraph/_flow.cpython-312-darwin.so +0 -0
  396. scipy/sparse/csgraph/_matching.cpython-312-darwin.so +0 -0
  397. scipy/sparse/csgraph/_min_spanning_tree.cpython-312-darwin.so +0 -0
  398. scipy/sparse/csgraph/_reordering.cpython-312-darwin.so +0 -0
  399. scipy/sparse/csgraph/_shortest_path.cpython-312-darwin.so +0 -0
  400. scipy/sparse/csgraph/_tools.cpython-312-darwin.so +0 -0
  401. scipy/sparse/csgraph/_traversal.cpython-312-darwin.so +0 -0
  402. scipy/sparse/csgraph/tests/test_matching.py +14 -2
  403. scipy/sparse/csgraph/tests/test_pydata_sparse.py +4 -1
  404. scipy/sparse/csgraph/tests/test_shortest_path.py +83 -27
  405. scipy/sparse/csr.py +0 -5
  406. scipy/sparse/data.py +1 -6
  407. scipy/sparse/dia.py +0 -7
  408. scipy/sparse/dok.py +0 -10
  409. scipy/sparse/linalg/_dsolve/_superlu.cpython-312-darwin.so +0 -0
  410. scipy/sparse/linalg/_dsolve/linsolve.py +9 -0
  411. scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +35 -28
  412. scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-312-darwin.so +0 -0
  413. scipy/sparse/linalg/_eigen/arpack/arpack.py +23 -17
  414. scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +6 -6
  415. scipy/sparse/linalg/_interface.py +17 -18
  416. scipy/sparse/linalg/_isolve/_gcrotmk.py +4 -4
  417. scipy/sparse/linalg/_isolve/iterative.py +51 -45
  418. scipy/sparse/linalg/_isolve/lgmres.py +6 -6
  419. scipy/sparse/linalg/_isolve/minres.py +5 -5
  420. scipy/sparse/linalg/_isolve/tfqmr.py +7 -7
  421. scipy/sparse/linalg/_isolve/utils.py +2 -8
  422. scipy/sparse/linalg/_matfuncs.py +1 -1
  423. scipy/sparse/linalg/_norm.py +1 -1
  424. scipy/sparse/linalg/_propack/_cpropack.cpython-312-darwin.so +0 -0
  425. scipy/sparse/linalg/_propack/_dpropack.cpython-312-darwin.so +0 -0
  426. scipy/sparse/linalg/_propack/_spropack.cpython-312-darwin.so +0 -0
  427. scipy/sparse/linalg/_propack/_zpropack.cpython-312-darwin.so +0 -0
  428. scipy/sparse/linalg/_special_sparse_arrays.py +39 -38
  429. scipy/sparse/linalg/tests/test_pydata_sparse.py +14 -0
  430. scipy/sparse/tests/test_arithmetic1d.py +5 -2
  431. scipy/sparse/tests/test_base.py +214 -42
  432. scipy/sparse/tests/test_common1d.py +7 -7
  433. scipy/sparse/tests/test_construct.py +1 -1
  434. scipy/sparse/tests/test_coo.py +272 -4
  435. scipy/sparse/tests/test_sparsetools.py +5 -0
  436. scipy/sparse/tests/test_sputils.py +36 -7
  437. scipy/spatial/_ckdtree.cpython-312-darwin.so +0 -0
  438. scipy/spatial/_distance_pybind.cpython-312-darwin.so +0 -0
  439. scipy/spatial/_distance_wrap.cpython-312-darwin.so +0 -0
  440. scipy/spatial/_hausdorff.cpython-312-darwin.so +0 -0
  441. scipy/spatial/_qhull.cpython-312-darwin.so +0 -0
  442. scipy/spatial/_voronoi.cpython-312-darwin.so +0 -0
  443. scipy/spatial/distance.py +49 -42
  444. scipy/spatial/tests/test_distance.py +15 -1
  445. scipy/spatial/tests/test_kdtree.py +1 -0
  446. scipy/spatial/tests/test_qhull.py +7 -2
  447. scipy/spatial/transform/__init__.py +5 -3
  448. scipy/spatial/transform/_rigid_transform.cpython-312-darwin.so +0 -0
  449. scipy/spatial/transform/_rotation.cpython-312-darwin.so +0 -0
  450. scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
  451. scipy/spatial/transform/tests/test_rotation.py +1213 -832
  452. scipy/spatial/transform/tests/test_rotation_groups.py +3 -3
  453. scipy/spatial/transform/tests/test_rotation_spline.py +29 -8
  454. scipy/special/__init__.py +1 -47
  455. scipy/special/_add_newdocs.py +34 -772
  456. scipy/special/_basic.py +22 -25
  457. scipy/special/_comb.cpython-312-darwin.so +0 -0
  458. scipy/special/_ellip_harm_2.cpython-312-darwin.so +0 -0
  459. scipy/special/_gufuncs.cpython-312-darwin.so +0 -0
  460. scipy/special/_logsumexp.py +67 -58
  461. scipy/special/_orthogonal.pyi +1 -1
  462. scipy/special/_specfun.cpython-312-darwin.so +0 -0
  463. scipy/special/_special_ufuncs.cpython-312-darwin.so +0 -0
  464. scipy/special/_spherical_bessel.py +4 -4
  465. scipy/special/_support_alternative_backends.py +212 -119
  466. scipy/special/_test_internal.cpython-312-darwin.so +0 -0
  467. scipy/special/_testutils.py +4 -4
  468. scipy/special/_ufuncs.cpython-312-darwin.so +0 -0
  469. scipy/special/_ufuncs.pyi +1 -0
  470. scipy/special/_ufuncs.pyx +215 -1400
  471. scipy/special/_ufuncs_cxx.cpython-312-darwin.so +0 -0
  472. scipy/special/_ufuncs_cxx.pxd +2 -15
  473. scipy/special/_ufuncs_cxx.pyx +5 -44
  474. scipy/special/_ufuncs_cxx_defs.h +2 -16
  475. scipy/special/_ufuncs_defs.h +0 -8
  476. scipy/special/cython_special.cpython-312-darwin.so +0 -0
  477. scipy/special/cython_special.pxd +1 -1
  478. scipy/special/tests/_cython_examples/meson.build +10 -1
  479. scipy/special/tests/test_basic.py +153 -20
  480. scipy/special/tests/test_boost_ufuncs.py +3 -0
  481. scipy/special/tests/test_cdflib.py +35 -11
  482. scipy/special/tests/test_gammainc.py +16 -0
  483. scipy/special/tests/test_hyp2f1.py +2 -2
  484. scipy/special/tests/test_log1mexp.py +85 -0
  485. scipy/special/tests/test_logsumexp.py +206 -64
  486. scipy/special/tests/test_mpmath.py +1 -0
  487. scipy/special/tests/test_nan_inputs.py +1 -1
  488. scipy/special/tests/test_orthogonal.py +17 -18
  489. scipy/special/tests/test_sf_error.py +3 -2
  490. scipy/special/tests/test_sph_harm.py +6 -7
  491. scipy/special/tests/test_support_alternative_backends.py +211 -76
  492. scipy/stats/__init__.py +4 -1
  493. scipy/stats/_ansari_swilk_statistics.cpython-312-darwin.so +0 -0
  494. scipy/stats/_axis_nan_policy.py +5 -12
  495. scipy/stats/_biasedurn.cpython-312-darwin.so +0 -0
  496. scipy/stats/_continued_fraction.py +387 -0
  497. scipy/stats/_continuous_distns.py +277 -310
  498. scipy/stats/_correlation.py +1 -1
  499. scipy/stats/_covariance.py +6 -3
  500. scipy/stats/_discrete_distns.py +39 -32
  501. scipy/stats/_distn_infrastructure.py +39 -12
  502. scipy/stats/_distribution_infrastructure.py +900 -238
  503. scipy/stats/_entropy.py +9 -10
  504. scipy/{_lib → stats}/_finite_differences.py +1 -1
  505. scipy/stats/_hypotests.py +83 -50
  506. scipy/stats/_kde.py +53 -49
  507. scipy/stats/_ksstats.py +1 -1
  508. scipy/stats/_levy_stable/__init__.py +7 -15
  509. scipy/stats/_levy_stable/levyst.cpython-312-darwin.so +0 -0
  510. scipy/stats/_morestats.py +118 -73
  511. scipy/stats/_mstats_basic.py +13 -17
  512. scipy/stats/_mstats_extras.py +8 -8
  513. scipy/stats/_multivariate.py +89 -113
  514. scipy/stats/_new_distributions.py +97 -20
  515. scipy/stats/_page_trend_test.py +12 -5
  516. scipy/stats/_probability_distribution.py +265 -43
  517. scipy/stats/_qmc.py +14 -9
  518. scipy/stats/_qmc_cy.cpython-312-darwin.so +0 -0
  519. scipy/stats/_qmvnt.py +16 -95
  520. scipy/stats/_qmvnt_cy.cpython-312-darwin.so +0 -0
  521. scipy/stats/_quantile.py +335 -0
  522. scipy/stats/_rcont/rcont.cpython-312-darwin.so +0 -0
  523. scipy/stats/_resampling.py +4 -29
  524. scipy/stats/_sampling.py +1 -1
  525. scipy/stats/_sobol.cpython-312-darwin.so +0 -0
  526. scipy/stats/_stats.cpython-312-darwin.so +0 -0
  527. scipy/stats/_stats_mstats_common.py +21 -2
  528. scipy/stats/_stats_py.py +550 -476
  529. scipy/stats/_stats_pythran.cpython-312-darwin.so +0 -0
  530. scipy/stats/_unuran/unuran_wrapper.cpython-312-darwin.so +0 -0
  531. scipy/stats/_unuran/unuran_wrapper.pyi +2 -1
  532. scipy/stats/_variation.py +6 -8
  533. scipy/stats/_wilcoxon.py +13 -7
  534. scipy/stats/tests/common_tests.py +6 -4
  535. scipy/stats/tests/test_axis_nan_policy.py +62 -24
  536. scipy/stats/tests/test_continued_fraction.py +173 -0
  537. scipy/stats/tests/test_continuous.py +379 -60
  538. scipy/stats/tests/test_continuous_basic.py +18 -12
  539. scipy/stats/tests/test_discrete_basic.py +14 -8
  540. scipy/stats/tests/test_discrete_distns.py +16 -16
  541. scipy/stats/tests/test_distributions.py +95 -75
  542. scipy/stats/tests/test_entropy.py +40 -48
  543. scipy/stats/tests/test_fit.py +4 -3
  544. scipy/stats/tests/test_hypotests.py +153 -24
  545. scipy/stats/tests/test_kdeoth.py +109 -41
  546. scipy/stats/tests/test_marray.py +289 -0
  547. scipy/stats/tests/test_morestats.py +79 -47
  548. scipy/stats/tests/test_mstats_basic.py +3 -3
  549. scipy/stats/tests/test_multivariate.py +434 -83
  550. scipy/stats/tests/test_qmc.py +13 -10
  551. scipy/stats/tests/test_quantile.py +199 -0
  552. scipy/stats/tests/test_rank.py +119 -112
  553. scipy/stats/tests/test_resampling.py +47 -56
  554. scipy/stats/tests/test_sampling.py +9 -4
  555. scipy/stats/tests/test_stats.py +799 -939
  556. scipy/stats/tests/test_variation.py +8 -6
  557. scipy/version.py +2 -2
  558. {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/LICENSE.txt +4 -4
  559. {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/METADATA +11 -11
  560. {scipy-1.15.3.dist-info → scipy-1.16.0rc2.dist-info}/RECORD +561 -568
  561. scipy-1.16.0rc2.dist-info/WHEEL +6 -0
  562. scipy/_lib/array_api_extra/_funcs.py +0 -484
  563. scipy/_lib/array_api_extra/_typing.py +0 -8
  564. scipy/interpolate/_bspl.cpython-312-darwin.so +0 -0
  565. scipy/optimize/_cobyla.cpython-312-darwin.so +0 -0
  566. scipy/optimize/_cython_nnls.cpython-312-darwin.so +0 -0
  567. scipy/optimize/_slsqp.cpython-312-darwin.so +0 -0
  568. scipy/spatial/qhull_src/COPYING.txt +0 -38
  569. scipy/special/libsf_error_state.dylib +0 -0
  570. scipy/special/tests/test_log_softmax.py +0 -109
  571. scipy/special/tests/test_xsf_cuda.py +0 -114
  572. scipy/special/xsf/binom.h +0 -89
  573. scipy/special/xsf/cdflib.h +0 -100
  574. scipy/special/xsf/cephes/airy.h +0 -307
  575. scipy/special/xsf/cephes/besselpoly.h +0 -51
  576. scipy/special/xsf/cephes/beta.h +0 -257
  577. scipy/special/xsf/cephes/cbrt.h +0 -131
  578. scipy/special/xsf/cephes/chbevl.h +0 -85
  579. scipy/special/xsf/cephes/chdtr.h +0 -193
  580. scipy/special/xsf/cephes/const.h +0 -87
  581. scipy/special/xsf/cephes/ellie.h +0 -293
  582. scipy/special/xsf/cephes/ellik.h +0 -251
  583. scipy/special/xsf/cephes/ellpe.h +0 -107
  584. scipy/special/xsf/cephes/ellpk.h +0 -117
  585. scipy/special/xsf/cephes/expn.h +0 -260
  586. scipy/special/xsf/cephes/gamma.h +0 -398
  587. scipy/special/xsf/cephes/hyp2f1.h +0 -596
  588. scipy/special/xsf/cephes/hyperg.h +0 -361
  589. scipy/special/xsf/cephes/i0.h +0 -149
  590. scipy/special/xsf/cephes/i1.h +0 -158
  591. scipy/special/xsf/cephes/igam.h +0 -421
  592. scipy/special/xsf/cephes/igam_asymp_coeff.h +0 -195
  593. scipy/special/xsf/cephes/igami.h +0 -313
  594. scipy/special/xsf/cephes/j0.h +0 -225
  595. scipy/special/xsf/cephes/j1.h +0 -198
  596. scipy/special/xsf/cephes/jv.h +0 -715
  597. scipy/special/xsf/cephes/k0.h +0 -164
  598. scipy/special/xsf/cephes/k1.h +0 -163
  599. scipy/special/xsf/cephes/kn.h +0 -243
  600. scipy/special/xsf/cephes/lanczos.h +0 -112
  601. scipy/special/xsf/cephes/ndtr.h +0 -275
  602. scipy/special/xsf/cephes/poch.h +0 -85
  603. scipy/special/xsf/cephes/polevl.h +0 -167
  604. scipy/special/xsf/cephes/psi.h +0 -194
  605. scipy/special/xsf/cephes/rgamma.h +0 -111
  606. scipy/special/xsf/cephes/scipy_iv.h +0 -811
  607. scipy/special/xsf/cephes/shichi.h +0 -248
  608. scipy/special/xsf/cephes/sici.h +0 -224
  609. scipy/special/xsf/cephes/sindg.h +0 -221
  610. scipy/special/xsf/cephes/tandg.h +0 -139
  611. scipy/special/xsf/cephes/trig.h +0 -58
  612. scipy/special/xsf/cephes/unity.h +0 -186
  613. scipy/special/xsf/cephes/zeta.h +0 -172
  614. scipy/special/xsf/config.h +0 -304
  615. scipy/special/xsf/digamma.h +0 -205
  616. scipy/special/xsf/error.h +0 -57
  617. scipy/special/xsf/evalpoly.h +0 -47
  618. scipy/special/xsf/expint.h +0 -266
  619. scipy/special/xsf/hyp2f1.h +0 -694
  620. scipy/special/xsf/iv_ratio.h +0 -173
  621. scipy/special/xsf/lambertw.h +0 -150
  622. scipy/special/xsf/loggamma.h +0 -163
  623. scipy/special/xsf/sici.h +0 -200
  624. scipy/special/xsf/tools.h +0 -427
  625. scipy/special/xsf/trig.h +0 -164
  626. scipy/special/xsf/wright_bessel.h +0 -843
  627. scipy/special/xsf/zlog1.h +0 -35
  628. scipy/stats/_mvn.cpython-312-darwin.so +0 -0
  629. scipy-1.15.3.dist-info/WHEEL +0 -4
@@ -82,111 +82,6 @@ add_newdoc("_ellip_norm",
82
82
  Internal function, use `ellip_norm` instead.
83
83
  """)
84
84
 
85
- add_newdoc("voigt_profile",
86
- r"""
87
- voigt_profile(x, sigma, gamma, out=None)
88
-
89
- Voigt profile.
90
-
91
- The Voigt profile is a convolution of a 1-D Normal distribution with
92
- standard deviation ``sigma`` and a 1-D Cauchy distribution with half-width at
93
- half-maximum ``gamma``.
94
-
95
- If ``sigma = 0``, PDF of Cauchy distribution is returned.
96
- Conversely, if ``gamma = 0``, PDF of Normal distribution is returned.
97
- If ``sigma = gamma = 0``, the return value is ``Inf`` for ``x = 0``,
98
- and ``0`` for all other ``x``.
99
-
100
- Parameters
101
- ----------
102
- x : array_like
103
- Real argument
104
- sigma : array_like
105
- The standard deviation of the Normal distribution part
106
- gamma : array_like
107
- The half-width at half-maximum of the Cauchy distribution part
108
- out : ndarray, optional
109
- Optional output array for the function values
110
-
111
- Returns
112
- -------
113
- scalar or ndarray
114
- The Voigt profile at the given arguments
115
-
116
- See Also
117
- --------
118
- wofz : Faddeeva function
119
-
120
- Notes
121
- -----
122
- It can be expressed in terms of Faddeeva function
123
-
124
- .. math:: V(x; \sigma, \gamma) = \frac{Re[w(z)]}{\sigma\sqrt{2\pi}},
125
- .. math:: z = \frac{x + i\gamma}{\sqrt{2}\sigma}
126
-
127
- where :math:`w(z)` is the Faddeeva function.
128
-
129
- References
130
- ----------
131
- .. [1] https://en.wikipedia.org/wiki/Voigt_profile
132
-
133
- Examples
134
- --------
135
- Calculate the function at point 2 for ``sigma=1`` and ``gamma=1``.
136
-
137
- >>> from scipy.special import voigt_profile
138
- >>> import numpy as np
139
- >>> import matplotlib.pyplot as plt
140
- >>> voigt_profile(2, 1., 1.)
141
- 0.09071519942627544
142
-
143
- Calculate the function at several points by providing a NumPy array
144
- for `x`.
145
-
146
- >>> values = np.array([-2., 0., 5])
147
- >>> voigt_profile(values, 1., 1.)
148
- array([0.0907152 , 0.20870928, 0.01388492])
149
-
150
- Plot the function for different parameter sets.
151
-
152
- >>> fig, ax = plt.subplots(figsize=(8, 8))
153
- >>> x = np.linspace(-10, 10, 500)
154
- >>> parameters_list = [(1.5, 0., "solid"), (1.3, 0.5, "dashed"),
155
- ... (0., 1.8, "dotted"), (1., 1., "dashdot")]
156
- >>> for params in parameters_list:
157
- ... sigma, gamma, linestyle = params
158
- ... voigt = voigt_profile(x, sigma, gamma)
159
- ... ax.plot(x, voigt, label=rf"$\sigma={sigma},\, \gamma={gamma}$",
160
- ... ls=linestyle)
161
- >>> ax.legend()
162
- >>> plt.show()
163
-
164
- Verify visually that the Voigt profile indeed arises as the convolution
165
- of a normal and a Cauchy distribution.
166
-
167
- >>> from scipy.signal import convolve
168
- >>> x, dx = np.linspace(-10, 10, 500, retstep=True)
169
- >>> def gaussian(x, sigma):
170
- ... return np.exp(-0.5 * x**2/sigma**2)/(sigma * np.sqrt(2*np.pi))
171
- >>> def cauchy(x, gamma):
172
- ... return gamma/(np.pi * (np.square(x)+gamma**2))
173
- >>> sigma = 2
174
- >>> gamma = 1
175
- >>> gauss_profile = gaussian(x, sigma)
176
- >>> cauchy_profile = cauchy(x, gamma)
177
- >>> convolved = dx * convolve(cauchy_profile, gauss_profile, mode="same")
178
- >>> voigt = voigt_profile(x, sigma, gamma)
179
- >>> fig, ax = plt.subplots(figsize=(8, 8))
180
- >>> ax.plot(x, gauss_profile, label="Gauss: $G$", c='b')
181
- >>> ax.plot(x, cauchy_profile, label="Cauchy: $C$", c='y', ls="dashed")
182
- >>> xx = 0.5*(x[1:] + x[:-1]) # midpoints
183
- >>> ax.plot(xx, convolved[1:], label="Convolution: $G * C$", ls='dashdot',
184
- ... c='k')
185
- >>> ax.plot(x, voigt, label="Voigt", ls='dotted', c='r')
186
- >>> ax.legend()
187
- >>> plt.show()
188
- """)
189
-
190
85
  add_newdoc("wrightomega",
191
86
  r"""
192
87
  wrightomega(z, out=None)
@@ -897,6 +792,21 @@ add_newdoc(
897
792
  function by multiplying the result of ``betainc(a, b, x)`` by
898
793
  ``beta(a, b)``.
899
794
 
795
+ ``betainc(a, b, x)`` is treated as a two parameter family of functions
796
+ of a single variable `x`, rather than as a function of three variables.
797
+ This impacts only the limiting cases ``a = 0``, ``b = 0``, ``a = inf``,
798
+ ``b = inf``.
799
+
800
+ In general
801
+
802
+ .. math::
803
+
804
+ \lim_{(a, b) \rightarrow (a_0, b_0)} \mathrm{betainc}(a, b, x)
805
+
806
+ is treated as a pointwise limit in ``x``. Thus for example,
807
+ ``betainc(0, b, 0)`` equals ``0`` for ``b > 0``, although it would be
808
+ indeterminate when considering the simultaneous limit ``(a, x) -> (0+, 0+)``.
809
+
900
810
  This function wraps the ``ibeta`` routine from the
901
811
  Boost Math C++ library [2]_.
902
812
 
@@ -988,6 +898,11 @@ add_newdoc(
988
898
  -----
989
899
  .. versionadded:: 1.11.0
990
900
 
901
+ Like `betainc`, ``betaincc(a, b, x)`` is treated as a two parameter
902
+ family of functions of a single variable `x`, rather than as a function of
903
+ three variables. See the `betainc` docstring for more info on how this
904
+ impacts limiting cases.
905
+
991
906
  This function wraps the ``ibetac`` routine from the
992
907
  Boost Math C++ library [2]_.
993
908
 
@@ -1654,50 +1569,6 @@ add_newdoc("chndtrinc",
1654
1569
 
1655
1570
  """)
1656
1571
 
1657
- add_newdoc("dawsn",
1658
- """
1659
- dawsn(x, out=None)
1660
-
1661
- Dawson's integral.
1662
-
1663
- Computes::
1664
-
1665
- exp(-x**2) * integral(exp(t**2), t=0..x).
1666
-
1667
- Parameters
1668
- ----------
1669
- x : array_like
1670
- Function parameter.
1671
- out : ndarray, optional
1672
- Optional output array for the function values
1673
-
1674
- Returns
1675
- -------
1676
- y : scalar or ndarray
1677
- Value of the integral.
1678
-
1679
- See Also
1680
- --------
1681
- wofz, erf, erfc, erfcx, erfi
1682
-
1683
- References
1684
- ----------
1685
- .. [1] Steven G. Johnson, Faddeeva W function implementation.
1686
- http://ab-initio.mit.edu/Faddeeva
1687
-
1688
- Examples
1689
- --------
1690
- >>> import numpy as np
1691
- >>> from scipy import special
1692
- >>> import matplotlib.pyplot as plt
1693
- >>> x = np.linspace(-15, 15, num=1000)
1694
- >>> plt.plot(x, special.dawsn(x))
1695
- >>> plt.xlabel('$x$')
1696
- >>> plt.ylabel('$dawsn(x)$')
1697
- >>> plt.show()
1698
-
1699
- """)
1700
-
1701
1572
  add_newdoc(
1702
1573
  "elliprc",
1703
1574
  r"""
@@ -2293,189 +2164,6 @@ add_newdoc("entr",
2293
2164
 
2294
2165
  """)
2295
2166
 
2296
- add_newdoc("erf",
2297
- """
2298
- erf(z, out=None)
2299
-
2300
- Returns the error function of complex argument.
2301
-
2302
- It is defined as ``2/sqrt(pi)*integral(exp(-t**2), t=0..z)``.
2303
-
2304
- Parameters
2305
- ----------
2306
- x : ndarray
2307
- Input array.
2308
- out : ndarray, optional
2309
- Optional output array for the function values
2310
-
2311
- Returns
2312
- -------
2313
- res : scalar or ndarray
2314
- The values of the error function at the given points `x`.
2315
-
2316
- See Also
2317
- --------
2318
- erfc, erfinv, erfcinv, wofz, erfcx, erfi
2319
-
2320
- Notes
2321
- -----
2322
- The cumulative of the unit normal distribution is given by
2323
- ``Phi(z) = 1/2[1 + erf(z/sqrt(2))]``.
2324
-
2325
- References
2326
- ----------
2327
- .. [1] https://en.wikipedia.org/wiki/Error_function
2328
- .. [2] Milton Abramowitz and Irene A. Stegun, eds.
2329
- Handbook of Mathematical Functions with Formulas,
2330
- Graphs, and Mathematical Tables. New York: Dover,
2331
- 1972. http://www.math.sfu.ca/~cbm/aands/page_297.htm
2332
- .. [3] Steven G. Johnson, Faddeeva W function implementation.
2333
- http://ab-initio.mit.edu/Faddeeva
2334
-
2335
- Examples
2336
- --------
2337
- >>> import numpy as np
2338
- >>> from scipy import special
2339
- >>> import matplotlib.pyplot as plt
2340
- >>> x = np.linspace(-3, 3)
2341
- >>> plt.plot(x, special.erf(x))
2342
- >>> plt.xlabel('$x$')
2343
- >>> plt.ylabel('$erf(x)$')
2344
- >>> plt.show()
2345
-
2346
- """)
2347
-
2348
- add_newdoc("erfc",
2349
- """
2350
- erfc(x, out=None)
2351
-
2352
- Complementary error function, ``1 - erf(x)``.
2353
-
2354
- Parameters
2355
- ----------
2356
- x : array_like
2357
- Real or complex valued argument
2358
- out : ndarray, optional
2359
- Optional output array for the function results
2360
-
2361
- Returns
2362
- -------
2363
- scalar or ndarray
2364
- Values of the complementary error function
2365
-
2366
- See Also
2367
- --------
2368
- erf, erfi, erfcx, dawsn, wofz
2369
-
2370
- References
2371
- ----------
2372
- .. [1] Steven G. Johnson, Faddeeva W function implementation.
2373
- http://ab-initio.mit.edu/Faddeeva
2374
-
2375
- Examples
2376
- --------
2377
- >>> import numpy as np
2378
- >>> from scipy import special
2379
- >>> import matplotlib.pyplot as plt
2380
- >>> x = np.linspace(-3, 3)
2381
- >>> plt.plot(x, special.erfc(x))
2382
- >>> plt.xlabel('$x$')
2383
- >>> plt.ylabel('$erfc(x)$')
2384
- >>> plt.show()
2385
-
2386
- """)
2387
-
2388
- add_newdoc("erfi",
2389
- """
2390
- erfi(z, out=None)
2391
-
2392
- Imaginary error function, ``-i erf(i z)``.
2393
-
2394
- Parameters
2395
- ----------
2396
- z : array_like
2397
- Real or complex valued argument
2398
- out : ndarray, optional
2399
- Optional output array for the function results
2400
-
2401
- Returns
2402
- -------
2403
- scalar or ndarray
2404
- Values of the imaginary error function
2405
-
2406
- See Also
2407
- --------
2408
- erf, erfc, erfcx, dawsn, wofz
2409
-
2410
- Notes
2411
- -----
2412
-
2413
- .. versionadded:: 0.12.0
2414
-
2415
- References
2416
- ----------
2417
- .. [1] Steven G. Johnson, Faddeeva W function implementation.
2418
- http://ab-initio.mit.edu/Faddeeva
2419
-
2420
- Examples
2421
- --------
2422
- >>> import numpy as np
2423
- >>> from scipy import special
2424
- >>> import matplotlib.pyplot as plt
2425
- >>> x = np.linspace(-3, 3)
2426
- >>> plt.plot(x, special.erfi(x))
2427
- >>> plt.xlabel('$x$')
2428
- >>> plt.ylabel('$erfi(x)$')
2429
- >>> plt.show()
2430
-
2431
- """)
2432
-
2433
- add_newdoc("erfcx",
2434
- """
2435
- erfcx(x, out=None)
2436
-
2437
- Scaled complementary error function, ``exp(x**2) * erfc(x)``.
2438
-
2439
- Parameters
2440
- ----------
2441
- x : array_like
2442
- Real or complex valued argument
2443
- out : ndarray, optional
2444
- Optional output array for the function results
2445
-
2446
- Returns
2447
- -------
2448
- scalar or ndarray
2449
- Values of the scaled complementary error function
2450
-
2451
-
2452
- See Also
2453
- --------
2454
- erf, erfc, erfi, dawsn, wofz
2455
-
2456
- Notes
2457
- -----
2458
-
2459
- .. versionadded:: 0.12.0
2460
-
2461
- References
2462
- ----------
2463
- .. [1] Steven G. Johnson, Faddeeva W function implementation.
2464
- http://ab-initio.mit.edu/Faddeeva
2465
-
2466
- Examples
2467
- --------
2468
- >>> import numpy as np
2469
- >>> from scipy import special
2470
- >>> import matplotlib.pyplot as plt
2471
- >>> x = np.linspace(-3, 3)
2472
- >>> plt.plot(x, special.erfcx(x))
2473
- >>> plt.xlabel('$x$')
2474
- >>> plt.ylabel('$erfcx(x)$')
2475
- >>> plt.show()
2476
-
2477
- """)
2478
-
2479
2167
  add_newdoc(
2480
2168
  "erfinv",
2481
2169
  """
@@ -3399,120 +3087,6 @@ add_newdoc("eval_hermitenorm",
3399
3087
 
3400
3088
  """)
3401
3089
 
3402
-
3403
- add_newdoc("exp10",
3404
- """
3405
- exp10(x, out=None)
3406
-
3407
- Compute ``10**x`` element-wise.
3408
-
3409
- Parameters
3410
- ----------
3411
- x : array_like
3412
- `x` must contain real numbers.
3413
- out : ndarray, optional
3414
- Optional output array for the function values
3415
-
3416
- Returns
3417
- -------
3418
- scalar or ndarray
3419
- ``10**x``, computed element-wise.
3420
-
3421
- Examples
3422
- --------
3423
- >>> import numpy as np
3424
- >>> from scipy.special import exp10
3425
-
3426
- >>> exp10(3)
3427
- 1000.0
3428
- >>> x = np.array([[-1, -0.5, 0], [0.5, 1, 1.5]])
3429
- >>> exp10(x)
3430
- array([[ 0.1 , 0.31622777, 1. ],
3431
- [ 3.16227766, 10. , 31.6227766 ]])
3432
-
3433
- """)
3434
-
3435
- add_newdoc("exp2",
3436
- """
3437
- exp2(x, out=None)
3438
-
3439
- Compute ``2**x`` element-wise.
3440
-
3441
- Parameters
3442
- ----------
3443
- x : array_like
3444
- `x` must contain real numbers.
3445
- out : ndarray, optional
3446
- Optional output array for the function values
3447
-
3448
- Returns
3449
- -------
3450
- scalar or ndarray
3451
- ``2**x``, computed element-wise.
3452
-
3453
- Examples
3454
- --------
3455
- >>> import numpy as np
3456
- >>> from scipy.special import exp2
3457
-
3458
- >>> exp2(3)
3459
- 8.0
3460
- >>> x = np.array([[-1, -0.5, 0], [0.5, 1, 1.5]])
3461
- >>> exp2(x)
3462
- array([[ 0.5 , 0.70710678, 1. ],
3463
- [ 1.41421356, 2. , 2.82842712]])
3464
- """)
3465
-
3466
- add_newdoc("expm1",
3467
- """
3468
- expm1(x, out=None)
3469
-
3470
- Compute ``exp(x) - 1``.
3471
-
3472
- When `x` is near zero, ``exp(x)`` is near 1, so the numerical calculation
3473
- of ``exp(x) - 1`` can suffer from catastrophic loss of precision.
3474
- ``expm1(x)`` is implemented to avoid the loss of precision that occurs when
3475
- `x` is near zero.
3476
-
3477
- Parameters
3478
- ----------
3479
- x : array_like
3480
- `x` must contain real numbers.
3481
- out : ndarray, optional
3482
- Optional output array for the function values
3483
-
3484
- Returns
3485
- -------
3486
- scalar or ndarray
3487
- ``exp(x) - 1`` computed element-wise.
3488
-
3489
- Examples
3490
- --------
3491
- >>> import numpy as np
3492
- >>> from scipy.special import expm1
3493
-
3494
- >>> expm1(1.0)
3495
- 1.7182818284590451
3496
- >>> expm1([-0.2, -0.1, 0, 0.1, 0.2])
3497
- array([-0.18126925, -0.09516258, 0. , 0.10517092, 0.22140276])
3498
-
3499
- The exact value of ``exp(7.5e-13) - 1`` is::
3500
-
3501
- 7.5000000000028125000000007031250000001318...*10**-13.
3502
-
3503
- Here is what ``expm1(7.5e-13)`` gives:
3504
-
3505
- >>> expm1(7.5e-13)
3506
- 7.5000000000028135e-13
3507
-
3508
- Compare that to ``exp(7.5e-13) - 1``, where the subtraction results in
3509
- a "catastrophic" loss of precision:
3510
-
3511
- >>> np.exp(7.5e-13) - 1
3512
- 7.5006667543675576e-13
3513
-
3514
- """)
3515
-
3516
3090
  add_newdoc("expn",
3517
3091
  r"""
3518
3092
  expn(n, x, out=None)
@@ -6094,49 +5668,6 @@ add_newdoc("_lgam1p",
6094
5668
  Internal function, do not use.
6095
5669
  """)
6096
5670
 
6097
- add_newdoc("log1p",
6098
- """
6099
- log1p(x, out=None)
6100
-
6101
- Calculates log(1 + x) for use when `x` is near zero.
6102
-
6103
- Parameters
6104
- ----------
6105
- x : array_like
6106
- Real or complex valued input.
6107
- out : ndarray, optional
6108
- Optional output array for the function results.
6109
-
6110
- Returns
6111
- -------
6112
- scalar or ndarray
6113
- Values of ``log(1 + x)``.
6114
-
6115
- See Also
6116
- --------
6117
- expm1, cosm1
6118
-
6119
- Examples
6120
- --------
6121
- >>> import numpy as np
6122
- >>> import scipy.special as sc
6123
-
6124
- It is more accurate than using ``log(1 + x)`` directly for ``x``
6125
- near 0. Note that in the below example ``1 + 1e-17 == 1`` to
6126
- double precision.
6127
-
6128
- >>> sc.log1p(1e-17)
6129
- 1e-17
6130
- >>> np.log(1 + 1e-17)
6131
- 0.0
6132
-
6133
- """)
6134
-
6135
- add_newdoc("_log1pmx",
6136
- """
6137
- Internal function, do not use.
6138
- """)
6139
-
6140
5671
  add_newdoc("lpmv",
6141
5672
  r"""
6142
5673
  lpmv(m, v, x, out=None)
@@ -7240,7 +6771,7 @@ add_newdoc("nctdtrit",
7240
6771
  df : array_like
7241
6772
  Degrees of freedom of the distribution. Should be in range (0, inf).
7242
6773
  nc : array_like
7243
- Noncentrality parameter. Should be in range (-1e6, 1e6).
6774
+ Noncentrality parameter.
7244
6775
  p : array_like
7245
6776
  CDF values, in range (0, 1].
7246
6777
  out : ndarray, optional
@@ -7257,6 +6788,19 @@ add_newdoc("nctdtrit",
7257
6788
  nctdtridf : Calculate degrees of freedom, given CDF and iCDF values.
7258
6789
  nctdtrinc : Calculate non-centrality parameter, given CDF iCDF values.
7259
6790
 
6791
+ Notes
6792
+ -----
6793
+ This function calculates the quantile of the non-central t distribution using
6794
+ the Boost Math C++ library [1]_.
6795
+
6796
+ Note that the argument order of `nctdtrit` is different from that of the
6797
+ similar ``ppf`` method of `scipy.stats.nct`: `t` is the last
6798
+ parameter of `nctdtrit` but the first parameter of ``scipy.stats.nct.ppf``.
6799
+
6800
+ References
6801
+ ----------
6802
+ .. [1] The Boost Developers. "Boost C++ Libraries". https://www.boost.org/.
6803
+
7260
6804
  Examples
7261
6805
  --------
7262
6806
  >>> from scipy.special import nctdtr, nctdtrit
@@ -7275,65 +6819,6 @@ add_newdoc("nctdtrit",
7275
6819
 
7276
6820
  """)
7277
6821
 
7278
- add_newdoc("ndtr",
7279
- r"""
7280
- ndtr(x, out=None)
7281
-
7282
- Cumulative distribution of the standard normal distribution.
7283
-
7284
- Returns the area under the standard Gaussian probability
7285
- density function, integrated from minus infinity to `x`
7286
-
7287
- .. math::
7288
-
7289
- \frac{1}{\sqrt{2\pi}} \int_{-\infty}^x \exp(-t^2/2) dt
7290
-
7291
- Parameters
7292
- ----------
7293
- x : array_like, real or complex
7294
- Argument
7295
- out : ndarray, optional
7296
- Optional output array for the function results
7297
-
7298
- Returns
7299
- -------
7300
- scalar or ndarray
7301
- The value of the normal CDF evaluated at `x`
7302
-
7303
- See Also
7304
- --------
7305
- log_ndtr : Logarithm of ndtr
7306
- ndtri : Inverse of ndtr, standard normal percentile function
7307
- erf : Error function
7308
- erfc : 1 - erf
7309
- scipy.stats.norm : Normal distribution
7310
-
7311
- Examples
7312
- --------
7313
- Evaluate `ndtr` at one point.
7314
-
7315
- >>> import numpy as np
7316
- >>> from scipy.special import ndtr
7317
- >>> ndtr(0.5)
7318
- 0.6914624612740131
7319
-
7320
- Evaluate the function at several points by providing a NumPy array
7321
- or list for `x`.
7322
-
7323
- >>> ndtr([0, 0.5, 2])
7324
- array([0.5 , 0.69146246, 0.97724987])
7325
-
7326
- Plot the function.
7327
-
7328
- >>> import matplotlib.pyplot as plt
7329
- >>> x = np.linspace(-5, 5, 100)
7330
- >>> fig, ax = plt.subplots()
7331
- >>> ax.plot(x, ndtr(x))
7332
- >>> ax.set_title(r"Standard normal cumulative distribution function $\Phi$")
7333
- >>> plt.show()
7334
- """)
7335
-
7336
-
7337
6822
  add_newdoc("nrdtrimn",
7338
6823
  """
7339
6824
  nrdtrimn(p, std, x, out=None)
@@ -7441,59 +6926,6 @@ add_newdoc("nrdtrisd",
7441
6926
 
7442
6927
  """)
7443
6928
 
7444
- add_newdoc("log_ndtr",
7445
- """
7446
- log_ndtr(x, out=None)
7447
-
7448
- Logarithm of Gaussian cumulative distribution function.
7449
-
7450
- Returns the log of the area under the standard Gaussian probability
7451
- density function, integrated from minus infinity to `x`::
7452
-
7453
- log(1/sqrt(2*pi) * integral(exp(-t**2 / 2), t=-inf..x))
7454
-
7455
- Parameters
7456
- ----------
7457
- x : array_like, real or complex
7458
- Argument
7459
- out : ndarray, optional
7460
- Optional output array for the function results
7461
-
7462
- Returns
7463
- -------
7464
- scalar or ndarray
7465
- The value of the log of the normal CDF evaluated at `x`
7466
-
7467
- See Also
7468
- --------
7469
- erf
7470
- erfc
7471
- scipy.stats.norm
7472
- ndtr
7473
-
7474
- Examples
7475
- --------
7476
- >>> import numpy as np
7477
- >>> from scipy.special import log_ndtr, ndtr
7478
-
7479
- The benefit of ``log_ndtr(x)`` over the naive implementation
7480
- ``np.log(ndtr(x))`` is most evident with moderate to large positive
7481
- values of ``x``:
7482
-
7483
- >>> x = np.array([6, 7, 9, 12, 15, 25])
7484
- >>> log_ndtr(x)
7485
- array([-9.86587646e-010, -1.27981254e-012, -1.12858841e-019,
7486
- -1.77648211e-033, -3.67096620e-051, -3.05669671e-138])
7487
-
7488
- The results of the naive calculation for the moderate ``x`` values
7489
- have only 5 or 6 correct significant digits. For values of ``x``
7490
- greater than approximately 8.3, the naive expression returns 0:
7491
-
7492
- >>> np.log(ndtr(x))
7493
- array([-9.86587701e-10, -1.27986510e-12, 0.00000000e+00,
7494
- 0.00000000e+00, 0.00000000e+00, 0.00000000e+00])
7495
- """)
7496
-
7497
6929
  add_newdoc("ndtri",
7498
6930
  """
7499
6931
  ndtri(y, out=None)
@@ -8972,176 +8404,6 @@ add_newdoc(
8972
8404
  significantly faster than ``tukeylambda.cdf``.
8973
8405
  """)
8974
8406
 
8975
- add_newdoc("wofz",
8976
- """
8977
- wofz(z, out=None)
8978
-
8979
- Faddeeva function
8980
-
8981
- Returns the value of the Faddeeva function for complex argument::
8982
-
8983
- exp(-z**2) * erfc(-i*z)
8984
-
8985
- Parameters
8986
- ----------
8987
- z : array_like
8988
- complex argument
8989
- out : ndarray, optional
8990
- Optional output array for the function results
8991
-
8992
- Returns
8993
- -------
8994
- scalar or ndarray
8995
- Value of the Faddeeva function
8996
-
8997
- See Also
8998
- --------
8999
- dawsn, erf, erfc, erfcx, erfi
9000
-
9001
- References
9002
- ----------
9003
- .. [1] Steven G. Johnson, Faddeeva W function implementation.
9004
- http://ab-initio.mit.edu/Faddeeva
9005
-
9006
- Examples
9007
- --------
9008
- >>> import numpy as np
9009
- >>> from scipy import special
9010
- >>> import matplotlib.pyplot as plt
9011
-
9012
- >>> x = np.linspace(-3, 3)
9013
- >>> z = special.wofz(x)
9014
-
9015
- >>> plt.plot(x, z.real, label='wofz(x).real')
9016
- >>> plt.plot(x, z.imag, label='wofz(x).imag')
9017
- >>> plt.xlabel('$x$')
9018
- >>> plt.legend(framealpha=1, shadow=True)
9019
- >>> plt.grid(alpha=0.25)
9020
- >>> plt.show()
9021
-
9022
- """)
9023
-
9024
- add_newdoc("xlogy",
9025
- """
9026
- xlogy(x, y, out=None)
9027
-
9028
- Compute ``x*log(y)`` so that the result is 0 if ``x = 0``.
9029
-
9030
- Parameters
9031
- ----------
9032
- x : array_like
9033
- Multiplier
9034
- y : array_like
9035
- Argument
9036
- out : ndarray, optional
9037
- Optional output array for the function results
9038
-
9039
- Returns
9040
- -------
9041
- z : scalar or ndarray
9042
- Computed x*log(y)
9043
-
9044
- Notes
9045
- -----
9046
- The log function used in the computation is the natural log.
9047
-
9048
- .. versionadded:: 0.13.0
9049
-
9050
- Examples
9051
- --------
9052
- We can use this function to calculate the binary logistic loss also
9053
- known as the binary cross entropy. This loss function is used for
9054
- binary classification problems and is defined as:
9055
-
9056
- .. math::
9057
- L = 1/n * \\sum_{i=0}^n -(y_i*log(y\\_pred_i) + (1-y_i)*log(1-y\\_pred_i))
9058
-
9059
- We can define the parameters `x` and `y` as y and y_pred respectively.
9060
- y is the array of the actual labels which over here can be either 0 or 1.
9061
- y_pred is the array of the predicted probabilities with respect to
9062
- the positive class (1).
9063
-
9064
- >>> import numpy as np
9065
- >>> from scipy.special import xlogy
9066
- >>> y = np.array([0, 1, 0, 1, 1, 0])
9067
- >>> y_pred = np.array([0.3, 0.8, 0.4, 0.7, 0.9, 0.2])
9068
- >>> n = len(y)
9069
- >>> loss = -(xlogy(y, y_pred) + xlogy(1 - y, 1 - y_pred)).sum()
9070
- >>> loss /= n
9071
- >>> loss
9072
- 0.29597052165495025
9073
-
9074
- A lower loss is usually better as it indicates that the predictions are
9075
- similar to the actual labels. In this example since our predicted
9076
- probabilities are close to the actual labels, we get an overall loss
9077
- that is reasonably low and appropriate.
9078
-
9079
- """)
9080
-
9081
- add_newdoc("xlog1py",
9082
- """
9083
- xlog1py(x, y, out=None)
9084
-
9085
- Compute ``x*log1p(y)`` so that the result is 0 if ``x = 0``.
9086
-
9087
- Parameters
9088
- ----------
9089
- x : array_like
9090
- Multiplier
9091
- y : array_like
9092
- Argument
9093
- out : ndarray, optional
9094
- Optional output array for the function results
9095
-
9096
- Returns
9097
- -------
9098
- z : scalar or ndarray
9099
- Computed x*log1p(y)
9100
-
9101
- Notes
9102
- -----
9103
-
9104
- .. versionadded:: 0.13.0
9105
-
9106
- Examples
9107
- --------
9108
- This example shows how the function can be used to calculate the log of
9109
- the probability mass function for a geometric discrete random variable.
9110
- The probability mass function of the geometric distribution is defined
9111
- as follows:
9112
-
9113
- .. math:: f(k) = (1-p)^{k-1} p
9114
-
9115
- where :math:`p` is the probability of a single success
9116
- and :math:`1-p` is the probability of a single failure
9117
- and :math:`k` is the number of trials to get the first success.
9118
-
9119
- >>> import numpy as np
9120
- >>> from scipy.special import xlog1py
9121
- >>> p = 0.5
9122
- >>> k = 100
9123
- >>> _pmf = np.power(1 - p, k - 1) * p
9124
- >>> _pmf
9125
- 7.888609052210118e-31
9126
-
9127
- If we take k as a relatively large number the value of the probability
9128
- mass function can become very low. In such cases taking the log of the
9129
- pmf would be more suitable as the log function can change the values
9130
- to a scale that is more appropriate to work with.
9131
-
9132
- >>> _log_pmf = xlog1py(k - 1, -p) + np.log(p)
9133
- >>> _log_pmf
9134
- -69.31471805599453
9135
-
9136
- We can confirm that we get a value close to the original pmf value by
9137
- taking the exponential of the log pmf.
9138
-
9139
- >>> _orig_pmf = np.exp(_log_pmf)
9140
- >>> np.isclose(_pmf, _orig_pmf)
9141
- True
9142
-
9143
- """)
9144
-
9145
8407
  add_newdoc("yn",
9146
8408
  r"""
9147
8409
  yn(n, x, out=None)