scipy 1.16.1__cp314-cp314t-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 (1416) hide show
  1. scipy/.dylibs/libgcc_s.1.1.dylib +0 -0
  2. scipy/.dylibs/libgfortran.5.dylib +0 -0
  3. scipy/.dylibs/libquadmath.0.dylib +0 -0
  4. scipy/.dylibs/libscipy_openblas.dylib +0 -0
  5. scipy/__config__.py +161 -0
  6. scipy/__init__.py +138 -0
  7. scipy/_cyutility.cpython-314t-darwin.so +0 -0
  8. scipy/_distributor_init.py +18 -0
  9. scipy/_lib/__init__.py +14 -0
  10. scipy/_lib/_array_api.py +931 -0
  11. scipy/_lib/_array_api_compat_vendor.py +9 -0
  12. scipy/_lib/_array_api_no_0d.py +103 -0
  13. scipy/_lib/_bunch.py +229 -0
  14. scipy/_lib/_ccallback.py +251 -0
  15. scipy/_lib/_ccallback_c.cpython-314t-darwin.so +0 -0
  16. scipy/_lib/_disjoint_set.py +254 -0
  17. scipy/_lib/_docscrape.py +761 -0
  18. scipy/_lib/_elementwise_iterative_method.py +346 -0
  19. scipy/_lib/_fpumode.cpython-314t-darwin.so +0 -0
  20. scipy/_lib/_gcutils.py +105 -0
  21. scipy/_lib/_pep440.py +487 -0
  22. scipy/_lib/_sparse.py +41 -0
  23. scipy/_lib/_test_ccallback.cpython-314t-darwin.so +0 -0
  24. scipy/_lib/_test_deprecation_call.cpython-314t-darwin.so +0 -0
  25. scipy/_lib/_test_deprecation_def.cpython-314t-darwin.so +0 -0
  26. scipy/_lib/_testutils.py +373 -0
  27. scipy/_lib/_threadsafety.py +58 -0
  28. scipy/_lib/_tmpdirs.py +86 -0
  29. scipy/_lib/_uarray/LICENSE +29 -0
  30. scipy/_lib/_uarray/__init__.py +116 -0
  31. scipy/_lib/_uarray/_backend.py +707 -0
  32. scipy/_lib/_uarray/_uarray.cpython-314t-darwin.so +0 -0
  33. scipy/_lib/_util.py +1283 -0
  34. scipy/_lib/array_api_compat/__init__.py +22 -0
  35. scipy/_lib/array_api_compat/_internal.py +59 -0
  36. scipy/_lib/array_api_compat/common/__init__.py +1 -0
  37. scipy/_lib/array_api_compat/common/_aliases.py +727 -0
  38. scipy/_lib/array_api_compat/common/_fft.py +213 -0
  39. scipy/_lib/array_api_compat/common/_helpers.py +1058 -0
  40. scipy/_lib/array_api_compat/common/_linalg.py +232 -0
  41. scipy/_lib/array_api_compat/common/_typing.py +192 -0
  42. scipy/_lib/array_api_compat/cupy/__init__.py +13 -0
  43. scipy/_lib/array_api_compat/cupy/_aliases.py +156 -0
  44. scipy/_lib/array_api_compat/cupy/_info.py +336 -0
  45. scipy/_lib/array_api_compat/cupy/_typing.py +31 -0
  46. scipy/_lib/array_api_compat/cupy/fft.py +36 -0
  47. scipy/_lib/array_api_compat/cupy/linalg.py +49 -0
  48. scipy/_lib/array_api_compat/dask/__init__.py +0 -0
  49. scipy/_lib/array_api_compat/dask/array/__init__.py +12 -0
  50. scipy/_lib/array_api_compat/dask/array/_aliases.py +376 -0
  51. scipy/_lib/array_api_compat/dask/array/_info.py +416 -0
  52. scipy/_lib/array_api_compat/dask/array/fft.py +21 -0
  53. scipy/_lib/array_api_compat/dask/array/linalg.py +72 -0
  54. scipy/_lib/array_api_compat/numpy/__init__.py +28 -0
  55. scipy/_lib/array_api_compat/numpy/_aliases.py +190 -0
  56. scipy/_lib/array_api_compat/numpy/_info.py +366 -0
  57. scipy/_lib/array_api_compat/numpy/_typing.py +30 -0
  58. scipy/_lib/array_api_compat/numpy/fft.py +35 -0
  59. scipy/_lib/array_api_compat/numpy/linalg.py +143 -0
  60. scipy/_lib/array_api_compat/torch/__init__.py +22 -0
  61. scipy/_lib/array_api_compat/torch/_aliases.py +855 -0
  62. scipy/_lib/array_api_compat/torch/_info.py +369 -0
  63. scipy/_lib/array_api_compat/torch/_typing.py +3 -0
  64. scipy/_lib/array_api_compat/torch/fft.py +85 -0
  65. scipy/_lib/array_api_compat/torch/linalg.py +121 -0
  66. scipy/_lib/array_api_extra/__init__.py +38 -0
  67. scipy/_lib/array_api_extra/_delegation.py +171 -0
  68. scipy/_lib/array_api_extra/_lib/__init__.py +1 -0
  69. scipy/_lib/array_api_extra/_lib/_at.py +463 -0
  70. scipy/_lib/array_api_extra/_lib/_backends.py +46 -0
  71. scipy/_lib/array_api_extra/_lib/_funcs.py +937 -0
  72. scipy/_lib/array_api_extra/_lib/_lazy.py +357 -0
  73. scipy/_lib/array_api_extra/_lib/_testing.py +278 -0
  74. scipy/_lib/array_api_extra/_lib/_utils/__init__.py +1 -0
  75. scipy/_lib/array_api_extra/_lib/_utils/_compat.py +74 -0
  76. scipy/_lib/array_api_extra/_lib/_utils/_compat.pyi +45 -0
  77. scipy/_lib/array_api_extra/_lib/_utils/_helpers.py +559 -0
  78. scipy/_lib/array_api_extra/_lib/_utils/_typing.py +10 -0
  79. scipy/_lib/array_api_extra/_lib/_utils/_typing.pyi +105 -0
  80. scipy/_lib/array_api_extra/testing.py +359 -0
  81. scipy/_lib/cobyqa/__init__.py +20 -0
  82. scipy/_lib/cobyqa/framework.py +1240 -0
  83. scipy/_lib/cobyqa/main.py +1506 -0
  84. scipy/_lib/cobyqa/models.py +1529 -0
  85. scipy/_lib/cobyqa/problem.py +1296 -0
  86. scipy/_lib/cobyqa/settings.py +132 -0
  87. scipy/_lib/cobyqa/subsolvers/__init__.py +14 -0
  88. scipy/_lib/cobyqa/subsolvers/geometry.py +387 -0
  89. scipy/_lib/cobyqa/subsolvers/optim.py +1203 -0
  90. scipy/_lib/cobyqa/utils/__init__.py +18 -0
  91. scipy/_lib/cobyqa/utils/exceptions.py +22 -0
  92. scipy/_lib/cobyqa/utils/math.py +77 -0
  93. scipy/_lib/cobyqa/utils/versions.py +67 -0
  94. scipy/_lib/decorator.py +399 -0
  95. scipy/_lib/deprecation.py +274 -0
  96. scipy/_lib/doccer.py +366 -0
  97. scipy/_lib/messagestream.cpython-314t-darwin.so +0 -0
  98. scipy/_lib/pyprima/__init__.py +212 -0
  99. scipy/_lib/pyprima/cobyla/__init__.py +0 -0
  100. scipy/_lib/pyprima/cobyla/cobyla.py +559 -0
  101. scipy/_lib/pyprima/cobyla/cobylb.py +714 -0
  102. scipy/_lib/pyprima/cobyla/geometry.py +226 -0
  103. scipy/_lib/pyprima/cobyla/initialize.py +215 -0
  104. scipy/_lib/pyprima/cobyla/trustregion.py +492 -0
  105. scipy/_lib/pyprima/cobyla/update.py +289 -0
  106. scipy/_lib/pyprima/common/__init__.py +0 -0
  107. scipy/_lib/pyprima/common/_bounds.py +34 -0
  108. scipy/_lib/pyprima/common/_linear_constraints.py +46 -0
  109. scipy/_lib/pyprima/common/_nonlinear_constraints.py +54 -0
  110. scipy/_lib/pyprima/common/_project.py +173 -0
  111. scipy/_lib/pyprima/common/checkbreak.py +93 -0
  112. scipy/_lib/pyprima/common/consts.py +47 -0
  113. scipy/_lib/pyprima/common/evaluate.py +99 -0
  114. scipy/_lib/pyprima/common/history.py +38 -0
  115. scipy/_lib/pyprima/common/infos.py +30 -0
  116. scipy/_lib/pyprima/common/linalg.py +435 -0
  117. scipy/_lib/pyprima/common/message.py +290 -0
  118. scipy/_lib/pyprima/common/powalg.py +131 -0
  119. scipy/_lib/pyprima/common/preproc.py +277 -0
  120. scipy/_lib/pyprima/common/present.py +5 -0
  121. scipy/_lib/pyprima/common/ratio.py +54 -0
  122. scipy/_lib/pyprima/common/redrho.py +47 -0
  123. scipy/_lib/pyprima/common/selectx.py +296 -0
  124. scipy/_lib/tests/__init__.py +0 -0
  125. scipy/_lib/tests/test__gcutils.py +110 -0
  126. scipy/_lib/tests/test__pep440.py +67 -0
  127. scipy/_lib/tests/test__testutils.py +32 -0
  128. scipy/_lib/tests/test__threadsafety.py +51 -0
  129. scipy/_lib/tests/test__util.py +641 -0
  130. scipy/_lib/tests/test_array_api.py +322 -0
  131. scipy/_lib/tests/test_bunch.py +169 -0
  132. scipy/_lib/tests/test_ccallback.py +196 -0
  133. scipy/_lib/tests/test_config.py +45 -0
  134. scipy/_lib/tests/test_deprecation.py +10 -0
  135. scipy/_lib/tests/test_doccer.py +143 -0
  136. scipy/_lib/tests/test_import_cycles.py +18 -0
  137. scipy/_lib/tests/test_public_api.py +482 -0
  138. scipy/_lib/tests/test_scipy_version.py +28 -0
  139. scipy/_lib/tests/test_tmpdirs.py +48 -0
  140. scipy/_lib/tests/test_warnings.py +137 -0
  141. scipy/_lib/uarray.py +31 -0
  142. scipy/cluster/__init__.py +31 -0
  143. scipy/cluster/_hierarchy.cpython-314t-darwin.so +0 -0
  144. scipy/cluster/_optimal_leaf_ordering.cpython-314t-darwin.so +0 -0
  145. scipy/cluster/_vq.cpython-314t-darwin.so +0 -0
  146. scipy/cluster/hierarchy.py +4348 -0
  147. scipy/cluster/tests/__init__.py +0 -0
  148. scipy/cluster/tests/hierarchy_test_data.py +145 -0
  149. scipy/cluster/tests/test_disjoint_set.py +202 -0
  150. scipy/cluster/tests/test_hierarchy.py +1238 -0
  151. scipy/cluster/tests/test_vq.py +434 -0
  152. scipy/cluster/vq.py +832 -0
  153. scipy/conftest.py +683 -0
  154. scipy/constants/__init__.py +358 -0
  155. scipy/constants/_codata.py +2266 -0
  156. scipy/constants/_constants.py +369 -0
  157. scipy/constants/codata.py +21 -0
  158. scipy/constants/constants.py +53 -0
  159. scipy/constants/tests/__init__.py +0 -0
  160. scipy/constants/tests/test_codata.py +78 -0
  161. scipy/constants/tests/test_constants.py +83 -0
  162. scipy/datasets/__init__.py +90 -0
  163. scipy/datasets/_download_all.py +71 -0
  164. scipy/datasets/_fetchers.py +225 -0
  165. scipy/datasets/_registry.py +26 -0
  166. scipy/datasets/_utils.py +81 -0
  167. scipy/datasets/tests/__init__.py +0 -0
  168. scipy/datasets/tests/test_data.py +128 -0
  169. scipy/differentiate/__init__.py +27 -0
  170. scipy/differentiate/_differentiate.py +1129 -0
  171. scipy/differentiate/tests/__init__.py +0 -0
  172. scipy/differentiate/tests/test_differentiate.py +694 -0
  173. scipy/fft/__init__.py +114 -0
  174. scipy/fft/_backend.py +196 -0
  175. scipy/fft/_basic.py +1650 -0
  176. scipy/fft/_basic_backend.py +197 -0
  177. scipy/fft/_debug_backends.py +22 -0
  178. scipy/fft/_fftlog.py +223 -0
  179. scipy/fft/_fftlog_backend.py +200 -0
  180. scipy/fft/_helper.py +348 -0
  181. scipy/fft/_pocketfft/LICENSE.md +25 -0
  182. scipy/fft/_pocketfft/__init__.py +9 -0
  183. scipy/fft/_pocketfft/basic.py +251 -0
  184. scipy/fft/_pocketfft/helper.py +249 -0
  185. scipy/fft/_pocketfft/pypocketfft.cpython-314t-darwin.so +0 -0
  186. scipy/fft/_pocketfft/realtransforms.py +109 -0
  187. scipy/fft/_pocketfft/tests/__init__.py +0 -0
  188. scipy/fft/_pocketfft/tests/test_basic.py +1011 -0
  189. scipy/fft/_pocketfft/tests/test_real_transforms.py +505 -0
  190. scipy/fft/_realtransforms.py +706 -0
  191. scipy/fft/_realtransforms_backend.py +63 -0
  192. scipy/fft/tests/__init__.py +0 -0
  193. scipy/fft/tests/mock_backend.py +96 -0
  194. scipy/fft/tests/test_backend.py +98 -0
  195. scipy/fft/tests/test_basic.py +504 -0
  196. scipy/fft/tests/test_fftlog.py +215 -0
  197. scipy/fft/tests/test_helper.py +558 -0
  198. scipy/fft/tests/test_multithreading.py +84 -0
  199. scipy/fft/tests/test_real_transforms.py +247 -0
  200. scipy/fftpack/__init__.py +103 -0
  201. scipy/fftpack/_basic.py +428 -0
  202. scipy/fftpack/_helper.py +115 -0
  203. scipy/fftpack/_pseudo_diffs.py +554 -0
  204. scipy/fftpack/_realtransforms.py +598 -0
  205. scipy/fftpack/basic.py +20 -0
  206. scipy/fftpack/convolve.cpython-314t-darwin.so +0 -0
  207. scipy/fftpack/helper.py +19 -0
  208. scipy/fftpack/pseudo_diffs.py +22 -0
  209. scipy/fftpack/realtransforms.py +19 -0
  210. scipy/fftpack/tests/__init__.py +0 -0
  211. scipy/fftpack/tests/fftw_double_ref.npz +0 -0
  212. scipy/fftpack/tests/fftw_longdouble_ref.npz +0 -0
  213. scipy/fftpack/tests/fftw_single_ref.npz +0 -0
  214. scipy/fftpack/tests/test.npz +0 -0
  215. scipy/fftpack/tests/test_basic.py +877 -0
  216. scipy/fftpack/tests/test_helper.py +54 -0
  217. scipy/fftpack/tests/test_import.py +33 -0
  218. scipy/fftpack/tests/test_pseudo_diffs.py +388 -0
  219. scipy/fftpack/tests/test_real_transforms.py +836 -0
  220. scipy/integrate/__init__.py +122 -0
  221. scipy/integrate/_bvp.py +1160 -0
  222. scipy/integrate/_cubature.py +729 -0
  223. scipy/integrate/_dop.cpython-314t-darwin.so +0 -0
  224. scipy/integrate/_ivp/__init__.py +8 -0
  225. scipy/integrate/_ivp/base.py +290 -0
  226. scipy/integrate/_ivp/bdf.py +478 -0
  227. scipy/integrate/_ivp/common.py +451 -0
  228. scipy/integrate/_ivp/dop853_coefficients.py +193 -0
  229. scipy/integrate/_ivp/ivp.py +755 -0
  230. scipy/integrate/_ivp/lsoda.py +224 -0
  231. scipy/integrate/_ivp/radau.py +572 -0
  232. scipy/integrate/_ivp/rk.py +601 -0
  233. scipy/integrate/_ivp/tests/__init__.py +0 -0
  234. scipy/integrate/_ivp/tests/test_ivp.py +1287 -0
  235. scipy/integrate/_ivp/tests/test_rk.py +37 -0
  236. scipy/integrate/_lebedev.py +5450 -0
  237. scipy/integrate/_lsoda.cpython-314t-darwin.so +0 -0
  238. scipy/integrate/_ode.py +1395 -0
  239. scipy/integrate/_odepack.cpython-314t-darwin.so +0 -0
  240. scipy/integrate/_odepack_py.py +273 -0
  241. scipy/integrate/_quad_vec.py +674 -0
  242. scipy/integrate/_quadpack.cpython-314t-darwin.so +0 -0
  243. scipy/integrate/_quadpack_py.py +1283 -0
  244. scipy/integrate/_quadrature.py +1336 -0
  245. scipy/integrate/_rules/__init__.py +12 -0
  246. scipy/integrate/_rules/_base.py +518 -0
  247. scipy/integrate/_rules/_gauss_kronrod.py +202 -0
  248. scipy/integrate/_rules/_gauss_legendre.py +62 -0
  249. scipy/integrate/_rules/_genz_malik.py +210 -0
  250. scipy/integrate/_tanhsinh.py +1385 -0
  251. scipy/integrate/_test_multivariate.cpython-314t-darwin.so +0 -0
  252. scipy/integrate/_test_odeint_banded.cpython-314t-darwin.so +0 -0
  253. scipy/integrate/_vode.cpython-314t-darwin.so +0 -0
  254. scipy/integrate/dop.py +15 -0
  255. scipy/integrate/lsoda.py +15 -0
  256. scipy/integrate/odepack.py +17 -0
  257. scipy/integrate/quadpack.py +23 -0
  258. scipy/integrate/tests/__init__.py +0 -0
  259. scipy/integrate/tests/test__quad_vec.py +211 -0
  260. scipy/integrate/tests/test_banded_ode_solvers.py +305 -0
  261. scipy/integrate/tests/test_bvp.py +714 -0
  262. scipy/integrate/tests/test_cubature.py +1375 -0
  263. scipy/integrate/tests/test_integrate.py +840 -0
  264. scipy/integrate/tests/test_odeint_jac.py +74 -0
  265. scipy/integrate/tests/test_quadpack.py +680 -0
  266. scipy/integrate/tests/test_quadrature.py +730 -0
  267. scipy/integrate/tests/test_tanhsinh.py +1171 -0
  268. scipy/integrate/vode.py +15 -0
  269. scipy/interpolate/__init__.py +228 -0
  270. scipy/interpolate/_bary_rational.py +715 -0
  271. scipy/interpolate/_bsplines.py +2469 -0
  272. scipy/interpolate/_cubic.py +973 -0
  273. scipy/interpolate/_dfitpack.cpython-314t-darwin.so +0 -0
  274. scipy/interpolate/_dierckx.cpython-314t-darwin.so +0 -0
  275. scipy/interpolate/_fitpack.cpython-314t-darwin.so +0 -0
  276. scipy/interpolate/_fitpack2.py +2397 -0
  277. scipy/interpolate/_fitpack_impl.py +811 -0
  278. scipy/interpolate/_fitpack_py.py +898 -0
  279. scipy/interpolate/_fitpack_repro.py +996 -0
  280. scipy/interpolate/_interpnd.cpython-314t-darwin.so +0 -0
  281. scipy/interpolate/_interpolate.py +2266 -0
  282. scipy/interpolate/_ndbspline.py +415 -0
  283. scipy/interpolate/_ndgriddata.py +329 -0
  284. scipy/interpolate/_pade.py +67 -0
  285. scipy/interpolate/_polyint.py +1025 -0
  286. scipy/interpolate/_ppoly.cpython-314t-darwin.so +0 -0
  287. scipy/interpolate/_rbf.py +290 -0
  288. scipy/interpolate/_rbfinterp.py +550 -0
  289. scipy/interpolate/_rbfinterp_pythran.cpython-314t-darwin.so +0 -0
  290. scipy/interpolate/_rgi.py +764 -0
  291. scipy/interpolate/_rgi_cython.cpython-314t-darwin.so +0 -0
  292. scipy/interpolate/dfitpack.py +24 -0
  293. scipy/interpolate/fitpack.py +31 -0
  294. scipy/interpolate/fitpack2.py +29 -0
  295. scipy/interpolate/interpnd.py +24 -0
  296. scipy/interpolate/interpolate.py +30 -0
  297. scipy/interpolate/ndgriddata.py +23 -0
  298. scipy/interpolate/polyint.py +24 -0
  299. scipy/interpolate/rbf.py +18 -0
  300. scipy/interpolate/tests/__init__.py +0 -0
  301. scipy/interpolate/tests/data/bug-1310.npz +0 -0
  302. scipy/interpolate/tests/data/estimate_gradients_hang.npy +0 -0
  303. scipy/interpolate/tests/data/gcvspl.npz +0 -0
  304. scipy/interpolate/tests/test_bary_rational.py +368 -0
  305. scipy/interpolate/tests/test_bsplines.py +3754 -0
  306. scipy/interpolate/tests/test_fitpack.py +519 -0
  307. scipy/interpolate/tests/test_fitpack2.py +1431 -0
  308. scipy/interpolate/tests/test_gil.py +64 -0
  309. scipy/interpolate/tests/test_interpnd.py +452 -0
  310. scipy/interpolate/tests/test_interpolate.py +2630 -0
  311. scipy/interpolate/tests/test_ndgriddata.py +308 -0
  312. scipy/interpolate/tests/test_pade.py +107 -0
  313. scipy/interpolate/tests/test_polyint.py +972 -0
  314. scipy/interpolate/tests/test_rbf.py +246 -0
  315. scipy/interpolate/tests/test_rbfinterp.py +534 -0
  316. scipy/interpolate/tests/test_rgi.py +1151 -0
  317. scipy/io/__init__.py +116 -0
  318. scipy/io/_fast_matrix_market/__init__.py +600 -0
  319. scipy/io/_fast_matrix_market/_fmm_core.cpython-314t-darwin.so +0 -0
  320. scipy/io/_fortran.py +354 -0
  321. scipy/io/_harwell_boeing/__init__.py +7 -0
  322. scipy/io/_harwell_boeing/_fortran_format_parser.py +316 -0
  323. scipy/io/_harwell_boeing/hb.py +571 -0
  324. scipy/io/_harwell_boeing/tests/__init__.py +0 -0
  325. scipy/io/_harwell_boeing/tests/test_fortran_format.py +74 -0
  326. scipy/io/_harwell_boeing/tests/test_hb.py +70 -0
  327. scipy/io/_idl.py +917 -0
  328. scipy/io/_mmio.py +968 -0
  329. scipy/io/_netcdf.py +1104 -0
  330. scipy/io/_test_fortran.cpython-314t-darwin.so +0 -0
  331. scipy/io/arff/__init__.py +28 -0
  332. scipy/io/arff/_arffread.py +873 -0
  333. scipy/io/arff/arffread.py +19 -0
  334. scipy/io/arff/tests/__init__.py +0 -0
  335. scipy/io/arff/tests/data/iris.arff +225 -0
  336. scipy/io/arff/tests/data/missing.arff +8 -0
  337. scipy/io/arff/tests/data/nodata.arff +11 -0
  338. scipy/io/arff/tests/data/quoted_nominal.arff +13 -0
  339. scipy/io/arff/tests/data/quoted_nominal_spaces.arff +13 -0
  340. scipy/io/arff/tests/data/test1.arff +10 -0
  341. scipy/io/arff/tests/data/test10.arff +8 -0
  342. scipy/io/arff/tests/data/test11.arff +11 -0
  343. scipy/io/arff/tests/data/test2.arff +15 -0
  344. scipy/io/arff/tests/data/test3.arff +6 -0
  345. scipy/io/arff/tests/data/test4.arff +11 -0
  346. scipy/io/arff/tests/data/test5.arff +26 -0
  347. scipy/io/arff/tests/data/test6.arff +12 -0
  348. scipy/io/arff/tests/data/test7.arff +15 -0
  349. scipy/io/arff/tests/data/test8.arff +12 -0
  350. scipy/io/arff/tests/data/test9.arff +14 -0
  351. scipy/io/arff/tests/test_arffread.py +421 -0
  352. scipy/io/harwell_boeing.py +17 -0
  353. scipy/io/idl.py +17 -0
  354. scipy/io/matlab/__init__.py +66 -0
  355. scipy/io/matlab/_byteordercodes.py +75 -0
  356. scipy/io/matlab/_mio.py +375 -0
  357. scipy/io/matlab/_mio4.py +632 -0
  358. scipy/io/matlab/_mio5.py +901 -0
  359. scipy/io/matlab/_mio5_params.py +281 -0
  360. scipy/io/matlab/_mio5_utils.cpython-314t-darwin.so +0 -0
  361. scipy/io/matlab/_mio_utils.cpython-314t-darwin.so +0 -0
  362. scipy/io/matlab/_miobase.py +435 -0
  363. scipy/io/matlab/_streams.cpython-314t-darwin.so +0 -0
  364. scipy/io/matlab/byteordercodes.py +17 -0
  365. scipy/io/matlab/mio.py +16 -0
  366. scipy/io/matlab/mio4.py +17 -0
  367. scipy/io/matlab/mio5.py +19 -0
  368. scipy/io/matlab/mio5_params.py +18 -0
  369. scipy/io/matlab/mio5_utils.py +17 -0
  370. scipy/io/matlab/mio_utils.py +17 -0
  371. scipy/io/matlab/miobase.py +16 -0
  372. scipy/io/matlab/streams.py +16 -0
  373. scipy/io/matlab/tests/__init__.py +0 -0
  374. scipy/io/matlab/tests/data/bad_miuint32.mat +0 -0
  375. scipy/io/matlab/tests/data/bad_miutf8_array_name.mat +0 -0
  376. scipy/io/matlab/tests/data/big_endian.mat +0 -0
  377. scipy/io/matlab/tests/data/broken_utf8.mat +0 -0
  378. scipy/io/matlab/tests/data/corrupted_zlib_checksum.mat +0 -0
  379. scipy/io/matlab/tests/data/corrupted_zlib_data.mat +0 -0
  380. scipy/io/matlab/tests/data/debigged_m4.mat +0 -0
  381. scipy/io/matlab/tests/data/japanese_utf8.txt +5 -0
  382. scipy/io/matlab/tests/data/little_endian.mat +0 -0
  383. scipy/io/matlab/tests/data/logical_sparse.mat +0 -0
  384. scipy/io/matlab/tests/data/malformed1.mat +0 -0
  385. scipy/io/matlab/tests/data/miuint32_for_miint32.mat +0 -0
  386. scipy/io/matlab/tests/data/miutf8_array_name.mat +0 -0
  387. scipy/io/matlab/tests/data/nasty_duplicate_fieldnames.mat +0 -0
  388. scipy/io/matlab/tests/data/one_by_zero_char.mat +0 -0
  389. scipy/io/matlab/tests/data/parabola.mat +0 -0
  390. scipy/io/matlab/tests/data/single_empty_string.mat +0 -0
  391. scipy/io/matlab/tests/data/some_functions.mat +0 -0
  392. scipy/io/matlab/tests/data/sqr.mat +0 -0
  393. scipy/io/matlab/tests/data/test3dmatrix_6.1_SOL2.mat +0 -0
  394. scipy/io/matlab/tests/data/test3dmatrix_6.5.1_GLNX86.mat +0 -0
  395. scipy/io/matlab/tests/data/test3dmatrix_7.1_GLNX86.mat +0 -0
  396. scipy/io/matlab/tests/data/test3dmatrix_7.4_GLNX86.mat +0 -0
  397. scipy/io/matlab/tests/data/test_empty_struct.mat +0 -0
  398. scipy/io/matlab/tests/data/test_mat4_le_floats.mat +0 -0
  399. scipy/io/matlab/tests/data/test_skip_variable.mat +0 -0
  400. scipy/io/matlab/tests/data/testbool_8_WIN64.mat +0 -0
  401. scipy/io/matlab/tests/data/testcell_6.1_SOL2.mat +0 -0
  402. scipy/io/matlab/tests/data/testcell_6.5.1_GLNX86.mat +0 -0
  403. scipy/io/matlab/tests/data/testcell_7.1_GLNX86.mat +0 -0
  404. scipy/io/matlab/tests/data/testcell_7.4_GLNX86.mat +0 -0
  405. scipy/io/matlab/tests/data/testcellnest_6.1_SOL2.mat +0 -0
  406. scipy/io/matlab/tests/data/testcellnest_6.5.1_GLNX86.mat +0 -0
  407. scipy/io/matlab/tests/data/testcellnest_7.1_GLNX86.mat +0 -0
  408. scipy/io/matlab/tests/data/testcellnest_7.4_GLNX86.mat +0 -0
  409. scipy/io/matlab/tests/data/testcomplex_4.2c_SOL2.mat +0 -0
  410. scipy/io/matlab/tests/data/testcomplex_6.1_SOL2.mat +0 -0
  411. scipy/io/matlab/tests/data/testcomplex_6.5.1_GLNX86.mat +0 -0
  412. scipy/io/matlab/tests/data/testcomplex_7.1_GLNX86.mat +0 -0
  413. scipy/io/matlab/tests/data/testcomplex_7.4_GLNX86.mat +0 -0
  414. scipy/io/matlab/tests/data/testdouble_4.2c_SOL2.mat +0 -0
  415. scipy/io/matlab/tests/data/testdouble_6.1_SOL2.mat +0 -0
  416. scipy/io/matlab/tests/data/testdouble_6.5.1_GLNX86.mat +0 -0
  417. scipy/io/matlab/tests/data/testdouble_7.1_GLNX86.mat +0 -0
  418. scipy/io/matlab/tests/data/testdouble_7.4_GLNX86.mat +0 -0
  419. scipy/io/matlab/tests/data/testemptycell_5.3_SOL2.mat +0 -0
  420. scipy/io/matlab/tests/data/testemptycell_6.5.1_GLNX86.mat +0 -0
  421. scipy/io/matlab/tests/data/testemptycell_7.1_GLNX86.mat +0 -0
  422. scipy/io/matlab/tests/data/testemptycell_7.4_GLNX86.mat +0 -0
  423. scipy/io/matlab/tests/data/testfunc_7.4_GLNX86.mat +0 -0
  424. scipy/io/matlab/tests/data/testhdf5_7.4_GLNX86.mat +0 -0
  425. scipy/io/matlab/tests/data/testmatrix_4.2c_SOL2.mat +0 -0
  426. scipy/io/matlab/tests/data/testmatrix_6.1_SOL2.mat +0 -0
  427. scipy/io/matlab/tests/data/testmatrix_6.5.1_GLNX86.mat +0 -0
  428. scipy/io/matlab/tests/data/testmatrix_7.1_GLNX86.mat +0 -0
  429. scipy/io/matlab/tests/data/testmatrix_7.4_GLNX86.mat +0 -0
  430. scipy/io/matlab/tests/data/testminus_4.2c_SOL2.mat +0 -0
  431. scipy/io/matlab/tests/data/testminus_6.1_SOL2.mat +0 -0
  432. scipy/io/matlab/tests/data/testminus_6.5.1_GLNX86.mat +0 -0
  433. scipy/io/matlab/tests/data/testminus_7.1_GLNX86.mat +0 -0
  434. scipy/io/matlab/tests/data/testminus_7.4_GLNX86.mat +0 -0
  435. scipy/io/matlab/tests/data/testmulti_4.2c_SOL2.mat +0 -0
  436. scipy/io/matlab/tests/data/testmulti_7.1_GLNX86.mat +0 -0
  437. scipy/io/matlab/tests/data/testmulti_7.4_GLNX86.mat +0 -0
  438. scipy/io/matlab/tests/data/testobject_6.1_SOL2.mat +0 -0
  439. scipy/io/matlab/tests/data/testobject_6.5.1_GLNX86.mat +0 -0
  440. scipy/io/matlab/tests/data/testobject_7.1_GLNX86.mat +0 -0
  441. scipy/io/matlab/tests/data/testobject_7.4_GLNX86.mat +0 -0
  442. scipy/io/matlab/tests/data/testonechar_4.2c_SOL2.mat +0 -0
  443. scipy/io/matlab/tests/data/testonechar_6.1_SOL2.mat +0 -0
  444. scipy/io/matlab/tests/data/testonechar_6.5.1_GLNX86.mat +0 -0
  445. scipy/io/matlab/tests/data/testonechar_7.1_GLNX86.mat +0 -0
  446. scipy/io/matlab/tests/data/testonechar_7.4_GLNX86.mat +0 -0
  447. scipy/io/matlab/tests/data/testscalarcell_7.4_GLNX86.mat +0 -0
  448. scipy/io/matlab/tests/data/testsimplecell.mat +0 -0
  449. scipy/io/matlab/tests/data/testsparse_4.2c_SOL2.mat +0 -0
  450. scipy/io/matlab/tests/data/testsparse_6.1_SOL2.mat +0 -0
  451. scipy/io/matlab/tests/data/testsparse_6.5.1_GLNX86.mat +0 -0
  452. scipy/io/matlab/tests/data/testsparse_7.1_GLNX86.mat +0 -0
  453. scipy/io/matlab/tests/data/testsparse_7.4_GLNX86.mat +0 -0
  454. scipy/io/matlab/tests/data/testsparsecomplex_4.2c_SOL2.mat +0 -0
  455. scipy/io/matlab/tests/data/testsparsecomplex_6.1_SOL2.mat +0 -0
  456. scipy/io/matlab/tests/data/testsparsecomplex_6.5.1_GLNX86.mat +0 -0
  457. scipy/io/matlab/tests/data/testsparsecomplex_7.1_GLNX86.mat +0 -0
  458. scipy/io/matlab/tests/data/testsparsecomplex_7.4_GLNX86.mat +0 -0
  459. scipy/io/matlab/tests/data/testsparsefloat_7.4_GLNX86.mat +0 -0
  460. scipy/io/matlab/tests/data/teststring_4.2c_SOL2.mat +0 -0
  461. scipy/io/matlab/tests/data/teststring_6.1_SOL2.mat +0 -0
  462. scipy/io/matlab/tests/data/teststring_6.5.1_GLNX86.mat +0 -0
  463. scipy/io/matlab/tests/data/teststring_7.1_GLNX86.mat +0 -0
  464. scipy/io/matlab/tests/data/teststring_7.4_GLNX86.mat +0 -0
  465. scipy/io/matlab/tests/data/teststringarray_4.2c_SOL2.mat +0 -0
  466. scipy/io/matlab/tests/data/teststringarray_6.1_SOL2.mat +0 -0
  467. scipy/io/matlab/tests/data/teststringarray_6.5.1_GLNX86.mat +0 -0
  468. scipy/io/matlab/tests/data/teststringarray_7.1_GLNX86.mat +0 -0
  469. scipy/io/matlab/tests/data/teststringarray_7.4_GLNX86.mat +0 -0
  470. scipy/io/matlab/tests/data/teststruct_6.1_SOL2.mat +0 -0
  471. scipy/io/matlab/tests/data/teststruct_6.5.1_GLNX86.mat +0 -0
  472. scipy/io/matlab/tests/data/teststruct_7.1_GLNX86.mat +0 -0
  473. scipy/io/matlab/tests/data/teststruct_7.4_GLNX86.mat +0 -0
  474. scipy/io/matlab/tests/data/teststructarr_6.1_SOL2.mat +0 -0
  475. scipy/io/matlab/tests/data/teststructarr_6.5.1_GLNX86.mat +0 -0
  476. scipy/io/matlab/tests/data/teststructarr_7.1_GLNX86.mat +0 -0
  477. scipy/io/matlab/tests/data/teststructarr_7.4_GLNX86.mat +0 -0
  478. scipy/io/matlab/tests/data/teststructnest_6.1_SOL2.mat +0 -0
  479. scipy/io/matlab/tests/data/teststructnest_6.5.1_GLNX86.mat +0 -0
  480. scipy/io/matlab/tests/data/teststructnest_7.1_GLNX86.mat +0 -0
  481. scipy/io/matlab/tests/data/teststructnest_7.4_GLNX86.mat +0 -0
  482. scipy/io/matlab/tests/data/testunicode_7.1_GLNX86.mat +0 -0
  483. scipy/io/matlab/tests/data/testunicode_7.4_GLNX86.mat +0 -0
  484. scipy/io/matlab/tests/data/testvec_4_GLNX86.mat +0 -0
  485. scipy/io/matlab/tests/test_byteordercodes.py +29 -0
  486. scipy/io/matlab/tests/test_mio.py +1399 -0
  487. scipy/io/matlab/tests/test_mio5_utils.py +179 -0
  488. scipy/io/matlab/tests/test_mio_funcs.py +51 -0
  489. scipy/io/matlab/tests/test_mio_utils.py +45 -0
  490. scipy/io/matlab/tests/test_miobase.py +32 -0
  491. scipy/io/matlab/tests/test_pathological.py +33 -0
  492. scipy/io/matlab/tests/test_streams.py +241 -0
  493. scipy/io/mmio.py +17 -0
  494. scipy/io/netcdf.py +17 -0
  495. scipy/io/tests/__init__.py +0 -0
  496. scipy/io/tests/data/Transparent Busy.ani +0 -0
  497. scipy/io/tests/data/array_float32_1d.sav +0 -0
  498. scipy/io/tests/data/array_float32_2d.sav +0 -0
  499. scipy/io/tests/data/array_float32_3d.sav +0 -0
  500. scipy/io/tests/data/array_float32_4d.sav +0 -0
  501. scipy/io/tests/data/array_float32_5d.sav +0 -0
  502. scipy/io/tests/data/array_float32_6d.sav +0 -0
  503. scipy/io/tests/data/array_float32_7d.sav +0 -0
  504. scipy/io/tests/data/array_float32_8d.sav +0 -0
  505. scipy/io/tests/data/array_float32_pointer_1d.sav +0 -0
  506. scipy/io/tests/data/array_float32_pointer_2d.sav +0 -0
  507. scipy/io/tests/data/array_float32_pointer_3d.sav +0 -0
  508. scipy/io/tests/data/array_float32_pointer_4d.sav +0 -0
  509. scipy/io/tests/data/array_float32_pointer_5d.sav +0 -0
  510. scipy/io/tests/data/array_float32_pointer_6d.sav +0 -0
  511. scipy/io/tests/data/array_float32_pointer_7d.sav +0 -0
  512. scipy/io/tests/data/array_float32_pointer_8d.sav +0 -0
  513. scipy/io/tests/data/example_1.nc +0 -0
  514. scipy/io/tests/data/example_2.nc +0 -0
  515. scipy/io/tests/data/example_3_maskedvals.nc +0 -0
  516. scipy/io/tests/data/fortran-3x3d-2i.dat +0 -0
  517. scipy/io/tests/data/fortran-mixed.dat +0 -0
  518. scipy/io/tests/data/fortran-sf8-11x1x10.dat +0 -0
  519. scipy/io/tests/data/fortran-sf8-15x10x22.dat +0 -0
  520. scipy/io/tests/data/fortran-sf8-1x1x1.dat +0 -0
  521. scipy/io/tests/data/fortran-sf8-1x1x5.dat +0 -0
  522. scipy/io/tests/data/fortran-sf8-1x1x7.dat +0 -0
  523. scipy/io/tests/data/fortran-sf8-1x3x5.dat +0 -0
  524. scipy/io/tests/data/fortran-si4-11x1x10.dat +0 -0
  525. scipy/io/tests/data/fortran-si4-15x10x22.dat +0 -0
  526. scipy/io/tests/data/fortran-si4-1x1x1.dat +0 -0
  527. scipy/io/tests/data/fortran-si4-1x1x5.dat +0 -0
  528. scipy/io/tests/data/fortran-si4-1x1x7.dat +0 -0
  529. scipy/io/tests/data/fortran-si4-1x3x5.dat +0 -0
  530. scipy/io/tests/data/invalid_pointer.sav +0 -0
  531. scipy/io/tests/data/null_pointer.sav +0 -0
  532. scipy/io/tests/data/scalar_byte.sav +0 -0
  533. scipy/io/tests/data/scalar_byte_descr.sav +0 -0
  534. scipy/io/tests/data/scalar_complex32.sav +0 -0
  535. scipy/io/tests/data/scalar_complex64.sav +0 -0
  536. scipy/io/tests/data/scalar_float32.sav +0 -0
  537. scipy/io/tests/data/scalar_float64.sav +0 -0
  538. scipy/io/tests/data/scalar_heap_pointer.sav +0 -0
  539. scipy/io/tests/data/scalar_int16.sav +0 -0
  540. scipy/io/tests/data/scalar_int32.sav +0 -0
  541. scipy/io/tests/data/scalar_int64.sav +0 -0
  542. scipy/io/tests/data/scalar_string.sav +0 -0
  543. scipy/io/tests/data/scalar_uint16.sav +0 -0
  544. scipy/io/tests/data/scalar_uint32.sav +0 -0
  545. scipy/io/tests/data/scalar_uint64.sav +0 -0
  546. scipy/io/tests/data/struct_arrays.sav +0 -0
  547. scipy/io/tests/data/struct_arrays_byte_idl80.sav +0 -0
  548. scipy/io/tests/data/struct_arrays_replicated.sav +0 -0
  549. scipy/io/tests/data/struct_arrays_replicated_3d.sav +0 -0
  550. scipy/io/tests/data/struct_inherit.sav +0 -0
  551. scipy/io/tests/data/struct_pointer_arrays.sav +0 -0
  552. scipy/io/tests/data/struct_pointer_arrays_replicated.sav +0 -0
  553. scipy/io/tests/data/struct_pointer_arrays_replicated_3d.sav +0 -0
  554. scipy/io/tests/data/struct_pointers.sav +0 -0
  555. scipy/io/tests/data/struct_pointers_replicated.sav +0 -0
  556. scipy/io/tests/data/struct_pointers_replicated_3d.sav +0 -0
  557. scipy/io/tests/data/struct_scalars.sav +0 -0
  558. scipy/io/tests/data/struct_scalars_replicated.sav +0 -0
  559. scipy/io/tests/data/struct_scalars_replicated_3d.sav +0 -0
  560. scipy/io/tests/data/test-1234Hz-le-1ch-10S-20bit-extra.wav +0 -0
  561. scipy/io/tests/data/test-44100Hz-2ch-32bit-float-be.wav +0 -0
  562. scipy/io/tests/data/test-44100Hz-2ch-32bit-float-le.wav +0 -0
  563. scipy/io/tests/data/test-44100Hz-be-1ch-4bytes.wav +0 -0
  564. scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-early-eof-no-data.wav +0 -0
  565. scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-early-eof.wav +0 -0
  566. scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-incomplete-chunk.wav +0 -0
  567. scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-rf64.wav +0 -0
  568. scipy/io/tests/data/test-44100Hz-le-1ch-4bytes.wav +0 -0
  569. scipy/io/tests/data/test-48000Hz-2ch-64bit-float-le-wavex.wav +0 -0
  570. scipy/io/tests/data/test-8000Hz-be-3ch-5S-24bit.wav +0 -0
  571. scipy/io/tests/data/test-8000Hz-le-1ch-1byte-ulaw.wav +0 -0
  572. scipy/io/tests/data/test-8000Hz-le-2ch-1byteu.wav +0 -0
  573. scipy/io/tests/data/test-8000Hz-le-3ch-5S-24bit-inconsistent.wav +0 -0
  574. scipy/io/tests/data/test-8000Hz-le-3ch-5S-24bit-rf64.wav +0 -0
  575. scipy/io/tests/data/test-8000Hz-le-3ch-5S-24bit.wav +0 -0
  576. scipy/io/tests/data/test-8000Hz-le-3ch-5S-36bit.wav +0 -0
  577. scipy/io/tests/data/test-8000Hz-le-3ch-5S-45bit.wav +0 -0
  578. scipy/io/tests/data/test-8000Hz-le-3ch-5S-53bit.wav +0 -0
  579. scipy/io/tests/data/test-8000Hz-le-3ch-5S-64bit.wav +0 -0
  580. scipy/io/tests/data/test-8000Hz-le-4ch-9S-12bit.wav +0 -0
  581. scipy/io/tests/data/test-8000Hz-le-5ch-9S-5bit.wav +0 -0
  582. scipy/io/tests/data/various_compressed.sav +0 -0
  583. scipy/io/tests/test_fortran.py +264 -0
  584. scipy/io/tests/test_idl.py +483 -0
  585. scipy/io/tests/test_mmio.py +831 -0
  586. scipy/io/tests/test_netcdf.py +550 -0
  587. scipy/io/tests/test_paths.py +93 -0
  588. scipy/io/tests/test_wavfile.py +501 -0
  589. scipy/io/wavfile.py +938 -0
  590. scipy/linalg/__init__.pxd +1 -0
  591. scipy/linalg/__init__.py +236 -0
  592. scipy/linalg/_basic.py +2146 -0
  593. scipy/linalg/_blas_subroutines.h +164 -0
  594. scipy/linalg/_cythonized_array_utils.cpython-314t-darwin.so +0 -0
  595. scipy/linalg/_cythonized_array_utils.pxd +40 -0
  596. scipy/linalg/_cythonized_array_utils.pyi +16 -0
  597. scipy/linalg/_decomp.py +1645 -0
  598. scipy/linalg/_decomp_cholesky.py +413 -0
  599. scipy/linalg/_decomp_cossin.py +236 -0
  600. scipy/linalg/_decomp_interpolative.cpython-314t-darwin.so +0 -0
  601. scipy/linalg/_decomp_ldl.py +356 -0
  602. scipy/linalg/_decomp_lu.py +401 -0
  603. scipy/linalg/_decomp_lu_cython.cpython-314t-darwin.so +0 -0
  604. scipy/linalg/_decomp_lu_cython.pyi +6 -0
  605. scipy/linalg/_decomp_polar.py +113 -0
  606. scipy/linalg/_decomp_qr.py +494 -0
  607. scipy/linalg/_decomp_qz.py +452 -0
  608. scipy/linalg/_decomp_schur.py +336 -0
  609. scipy/linalg/_decomp_svd.py +545 -0
  610. scipy/linalg/_decomp_update.cpython-314t-darwin.so +0 -0
  611. scipy/linalg/_expm_frechet.py +417 -0
  612. scipy/linalg/_fblas.cpython-314t-darwin.so +0 -0
  613. scipy/linalg/_flapack.cpython-314t-darwin.so +0 -0
  614. scipy/linalg/_lapack_subroutines.h +1521 -0
  615. scipy/linalg/_linalg_pythran.cpython-314t-darwin.so +0 -0
  616. scipy/linalg/_matfuncs.py +1050 -0
  617. scipy/linalg/_matfuncs_expm.cpython-314t-darwin.so +0 -0
  618. scipy/linalg/_matfuncs_expm.pyi +6 -0
  619. scipy/linalg/_matfuncs_inv_ssq.py +886 -0
  620. scipy/linalg/_matfuncs_schur_sqrtm.cpython-314t-darwin.so +0 -0
  621. scipy/linalg/_matfuncs_sqrtm.py +107 -0
  622. scipy/linalg/_matfuncs_sqrtm_triu.cpython-314t-darwin.so +0 -0
  623. scipy/linalg/_misc.py +191 -0
  624. scipy/linalg/_procrustes.py +113 -0
  625. scipy/linalg/_sketches.py +189 -0
  626. scipy/linalg/_solve_toeplitz.cpython-314t-darwin.so +0 -0
  627. scipy/linalg/_solvers.py +862 -0
  628. scipy/linalg/_special_matrices.py +1322 -0
  629. scipy/linalg/_testutils.py +65 -0
  630. scipy/linalg/basic.py +23 -0
  631. scipy/linalg/blas.py +495 -0
  632. scipy/linalg/cython_blas.cpython-314t-darwin.so +0 -0
  633. scipy/linalg/cython_blas.pxd +169 -0
  634. scipy/linalg/cython_blas.pyx +1432 -0
  635. scipy/linalg/cython_lapack.cpython-314t-darwin.so +0 -0
  636. scipy/linalg/cython_lapack.pxd +1528 -0
  637. scipy/linalg/cython_lapack.pyx +12045 -0
  638. scipy/linalg/decomp.py +23 -0
  639. scipy/linalg/decomp_cholesky.py +21 -0
  640. scipy/linalg/decomp_lu.py +21 -0
  641. scipy/linalg/decomp_qr.py +20 -0
  642. scipy/linalg/decomp_schur.py +21 -0
  643. scipy/linalg/decomp_svd.py +21 -0
  644. scipy/linalg/interpolative.py +989 -0
  645. scipy/linalg/lapack.py +1081 -0
  646. scipy/linalg/matfuncs.py +23 -0
  647. scipy/linalg/misc.py +21 -0
  648. scipy/linalg/special_matrices.py +22 -0
  649. scipy/linalg/tests/__init__.py +0 -0
  650. scipy/linalg/tests/_cython_examples/extending.pyx +23 -0
  651. scipy/linalg/tests/_cython_examples/meson.build +34 -0
  652. scipy/linalg/tests/data/carex_15_data.npz +0 -0
  653. scipy/linalg/tests/data/carex_18_data.npz +0 -0
  654. scipy/linalg/tests/data/carex_19_data.npz +0 -0
  655. scipy/linalg/tests/data/carex_20_data.npz +0 -0
  656. scipy/linalg/tests/data/carex_6_data.npz +0 -0
  657. scipy/linalg/tests/data/gendare_20170120_data.npz +0 -0
  658. scipy/linalg/tests/test_basic.py +2074 -0
  659. scipy/linalg/tests/test_batch.py +588 -0
  660. scipy/linalg/tests/test_blas.py +1127 -0
  661. scipy/linalg/tests/test_cython_blas.py +118 -0
  662. scipy/linalg/tests/test_cython_lapack.py +22 -0
  663. scipy/linalg/tests/test_cythonized_array_utils.py +130 -0
  664. scipy/linalg/tests/test_decomp.py +3189 -0
  665. scipy/linalg/tests/test_decomp_cholesky.py +268 -0
  666. scipy/linalg/tests/test_decomp_cossin.py +314 -0
  667. scipy/linalg/tests/test_decomp_ldl.py +137 -0
  668. scipy/linalg/tests/test_decomp_lu.py +308 -0
  669. scipy/linalg/tests/test_decomp_polar.py +110 -0
  670. scipy/linalg/tests/test_decomp_update.py +1701 -0
  671. scipy/linalg/tests/test_extending.py +46 -0
  672. scipy/linalg/tests/test_fblas.py +607 -0
  673. scipy/linalg/tests/test_interpolative.py +232 -0
  674. scipy/linalg/tests/test_lapack.py +3616 -0
  675. scipy/linalg/tests/test_matfuncs.py +1125 -0
  676. scipy/linalg/tests/test_matmul_toeplitz.py +136 -0
  677. scipy/linalg/tests/test_procrustes.py +214 -0
  678. scipy/linalg/tests/test_sketches.py +118 -0
  679. scipy/linalg/tests/test_solve_toeplitz.py +150 -0
  680. scipy/linalg/tests/test_solvers.py +844 -0
  681. scipy/linalg/tests/test_special_matrices.py +636 -0
  682. scipy/misc/__init__.py +6 -0
  683. scipy/misc/common.py +6 -0
  684. scipy/misc/doccer.py +6 -0
  685. scipy/ndimage/__init__.py +174 -0
  686. scipy/ndimage/_ctest.cpython-314t-darwin.so +0 -0
  687. scipy/ndimage/_cytest.cpython-314t-darwin.so +0 -0
  688. scipy/ndimage/_delegators.py +303 -0
  689. scipy/ndimage/_filters.py +2422 -0
  690. scipy/ndimage/_fourier.py +306 -0
  691. scipy/ndimage/_interpolation.py +1033 -0
  692. scipy/ndimage/_measurements.py +1689 -0
  693. scipy/ndimage/_morphology.py +2634 -0
  694. scipy/ndimage/_nd_image.cpython-314t-darwin.so +0 -0
  695. scipy/ndimage/_ndimage_api.py +16 -0
  696. scipy/ndimage/_ni_docstrings.py +214 -0
  697. scipy/ndimage/_ni_label.cpython-314t-darwin.so +0 -0
  698. scipy/ndimage/_ni_support.py +139 -0
  699. scipy/ndimage/_rank_filter_1d.cpython-314t-darwin.so +0 -0
  700. scipy/ndimage/_support_alternative_backends.py +84 -0
  701. scipy/ndimage/filters.py +27 -0
  702. scipy/ndimage/fourier.py +21 -0
  703. scipy/ndimage/interpolation.py +22 -0
  704. scipy/ndimage/measurements.py +24 -0
  705. scipy/ndimage/morphology.py +27 -0
  706. scipy/ndimage/tests/__init__.py +12 -0
  707. scipy/ndimage/tests/data/label_inputs.txt +21 -0
  708. scipy/ndimage/tests/data/label_results.txt +294 -0
  709. scipy/ndimage/tests/data/label_strels.txt +42 -0
  710. scipy/ndimage/tests/dots.png +0 -0
  711. scipy/ndimage/tests/test_c_api.py +102 -0
  712. scipy/ndimage/tests/test_datatypes.py +67 -0
  713. scipy/ndimage/tests/test_filters.py +3083 -0
  714. scipy/ndimage/tests/test_fourier.py +187 -0
  715. scipy/ndimage/tests/test_interpolation.py +1491 -0
  716. scipy/ndimage/tests/test_measurements.py +1592 -0
  717. scipy/ndimage/tests/test_morphology.py +2950 -0
  718. scipy/ndimage/tests/test_ni_support.py +78 -0
  719. scipy/ndimage/tests/test_splines.py +70 -0
  720. scipy/odr/__init__.py +131 -0
  721. scipy/odr/__odrpack.cpython-314t-darwin.so +0 -0
  722. scipy/odr/_add_newdocs.py +34 -0
  723. scipy/odr/_models.py +315 -0
  724. scipy/odr/_odrpack.py +1154 -0
  725. scipy/odr/models.py +20 -0
  726. scipy/odr/odrpack.py +21 -0
  727. scipy/odr/tests/__init__.py +0 -0
  728. scipy/odr/tests/test_odr.py +607 -0
  729. scipy/optimize/__init__.pxd +1 -0
  730. scipy/optimize/__init__.py +460 -0
  731. scipy/optimize/_basinhopping.py +741 -0
  732. scipy/optimize/_bglu_dense.cpython-314t-darwin.so +0 -0
  733. scipy/optimize/_bracket.py +706 -0
  734. scipy/optimize/_chandrupatla.py +551 -0
  735. scipy/optimize/_cobyla_py.py +297 -0
  736. scipy/optimize/_cobyqa_py.py +72 -0
  737. scipy/optimize/_constraints.py +598 -0
  738. scipy/optimize/_dcsrch.py +728 -0
  739. scipy/optimize/_differentiable_functions.py +835 -0
  740. scipy/optimize/_differentialevolution.py +1970 -0
  741. scipy/optimize/_direct.cpython-314t-darwin.so +0 -0
  742. scipy/optimize/_direct_py.py +280 -0
  743. scipy/optimize/_dual_annealing.py +732 -0
  744. scipy/optimize/_elementwise.py +798 -0
  745. scipy/optimize/_group_columns.cpython-314t-darwin.so +0 -0
  746. scipy/optimize/_hessian_update_strategy.py +479 -0
  747. scipy/optimize/_highspy/__init__.py +0 -0
  748. scipy/optimize/_highspy/_core.cpython-314t-darwin.so +0 -0
  749. scipy/optimize/_highspy/_highs_options.cpython-314t-darwin.so +0 -0
  750. scipy/optimize/_highspy/_highs_wrapper.py +338 -0
  751. scipy/optimize/_isotonic.py +157 -0
  752. scipy/optimize/_lbfgsb.cpython-314t-darwin.so +0 -0
  753. scipy/optimize/_lbfgsb_py.py +634 -0
  754. scipy/optimize/_linesearch.py +896 -0
  755. scipy/optimize/_linprog.py +733 -0
  756. scipy/optimize/_linprog_doc.py +1434 -0
  757. scipy/optimize/_linprog_highs.py +422 -0
  758. scipy/optimize/_linprog_ip.py +1141 -0
  759. scipy/optimize/_linprog_rs.py +572 -0
  760. scipy/optimize/_linprog_simplex.py +663 -0
  761. scipy/optimize/_linprog_util.py +1521 -0
  762. scipy/optimize/_lsap.cpython-314t-darwin.so +0 -0
  763. scipy/optimize/_lsq/__init__.py +5 -0
  764. scipy/optimize/_lsq/bvls.py +183 -0
  765. scipy/optimize/_lsq/common.py +731 -0
  766. scipy/optimize/_lsq/dogbox.py +345 -0
  767. scipy/optimize/_lsq/givens_elimination.cpython-314t-darwin.so +0 -0
  768. scipy/optimize/_lsq/least_squares.py +1044 -0
  769. scipy/optimize/_lsq/lsq_linear.py +361 -0
  770. scipy/optimize/_lsq/trf.py +587 -0
  771. scipy/optimize/_lsq/trf_linear.py +249 -0
  772. scipy/optimize/_milp.py +394 -0
  773. scipy/optimize/_minimize.py +1199 -0
  774. scipy/optimize/_minpack.cpython-314t-darwin.so +0 -0
  775. scipy/optimize/_minpack_py.py +1178 -0
  776. scipy/optimize/_moduleTNC.cpython-314t-darwin.so +0 -0
  777. scipy/optimize/_nnls.py +96 -0
  778. scipy/optimize/_nonlin.py +1634 -0
  779. scipy/optimize/_numdiff.py +963 -0
  780. scipy/optimize/_optimize.py +4169 -0
  781. scipy/optimize/_pava_pybind.cpython-314t-darwin.so +0 -0
  782. scipy/optimize/_qap.py +760 -0
  783. scipy/optimize/_remove_redundancy.py +522 -0
  784. scipy/optimize/_root.py +732 -0
  785. scipy/optimize/_root_scalar.py +538 -0
  786. scipy/optimize/_shgo.py +1606 -0
  787. scipy/optimize/_shgo_lib/__init__.py +0 -0
  788. scipy/optimize/_shgo_lib/_complex.py +1225 -0
  789. scipy/optimize/_shgo_lib/_vertex.py +460 -0
  790. scipy/optimize/_slsqp_py.py +603 -0
  791. scipy/optimize/_slsqplib.cpython-314t-darwin.so +0 -0
  792. scipy/optimize/_spectral.py +260 -0
  793. scipy/optimize/_tnc.py +438 -0
  794. scipy/optimize/_trlib/__init__.py +12 -0
  795. scipy/optimize/_trlib/_trlib.cpython-314t-darwin.so +0 -0
  796. scipy/optimize/_trustregion.py +318 -0
  797. scipy/optimize/_trustregion_constr/__init__.py +6 -0
  798. scipy/optimize/_trustregion_constr/canonical_constraint.py +390 -0
  799. scipy/optimize/_trustregion_constr/equality_constrained_sqp.py +231 -0
  800. scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py +584 -0
  801. scipy/optimize/_trustregion_constr/projections.py +411 -0
  802. scipy/optimize/_trustregion_constr/qp_subproblem.py +637 -0
  803. scipy/optimize/_trustregion_constr/report.py +49 -0
  804. scipy/optimize/_trustregion_constr/tests/__init__.py +0 -0
  805. scipy/optimize/_trustregion_constr/tests/test_canonical_constraint.py +296 -0
  806. scipy/optimize/_trustregion_constr/tests/test_nested_minimize.py +39 -0
  807. scipy/optimize/_trustregion_constr/tests/test_projections.py +214 -0
  808. scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py +645 -0
  809. scipy/optimize/_trustregion_constr/tests/test_report.py +34 -0
  810. scipy/optimize/_trustregion_constr/tr_interior_point.py +361 -0
  811. scipy/optimize/_trustregion_dogleg.py +122 -0
  812. scipy/optimize/_trustregion_exact.py +437 -0
  813. scipy/optimize/_trustregion_krylov.py +65 -0
  814. scipy/optimize/_trustregion_ncg.py +126 -0
  815. scipy/optimize/_tstutils.py +972 -0
  816. scipy/optimize/_zeros.cpython-314t-darwin.so +0 -0
  817. scipy/optimize/_zeros_py.py +1475 -0
  818. scipy/optimize/cobyla.py +19 -0
  819. scipy/optimize/cython_optimize/__init__.py +133 -0
  820. scipy/optimize/cython_optimize/_zeros.cpython-314t-darwin.so +0 -0
  821. scipy/optimize/cython_optimize/_zeros.pxd +33 -0
  822. scipy/optimize/cython_optimize/c_zeros.pxd +26 -0
  823. scipy/optimize/cython_optimize.pxd +11 -0
  824. scipy/optimize/elementwise.py +38 -0
  825. scipy/optimize/lbfgsb.py +23 -0
  826. scipy/optimize/linesearch.py +18 -0
  827. scipy/optimize/minpack.py +27 -0
  828. scipy/optimize/minpack2.py +17 -0
  829. scipy/optimize/moduleTNC.py +19 -0
  830. scipy/optimize/nonlin.py +29 -0
  831. scipy/optimize/optimize.py +40 -0
  832. scipy/optimize/slsqp.py +22 -0
  833. scipy/optimize/tests/__init__.py +0 -0
  834. scipy/optimize/tests/_cython_examples/extending.pyx +43 -0
  835. scipy/optimize/tests/_cython_examples/meson.build +32 -0
  836. scipy/optimize/tests/test__basinhopping.py +535 -0
  837. scipy/optimize/tests/test__differential_evolution.py +1703 -0
  838. scipy/optimize/tests/test__dual_annealing.py +416 -0
  839. scipy/optimize/tests/test__linprog_clean_inputs.py +312 -0
  840. scipy/optimize/tests/test__numdiff.py +885 -0
  841. scipy/optimize/tests/test__remove_redundancy.py +228 -0
  842. scipy/optimize/tests/test__root.py +124 -0
  843. scipy/optimize/tests/test__shgo.py +1164 -0
  844. scipy/optimize/tests/test__spectral.py +226 -0
  845. scipy/optimize/tests/test_bracket.py +896 -0
  846. scipy/optimize/tests/test_chandrupatla.py +982 -0
  847. scipy/optimize/tests/test_cobyla.py +195 -0
  848. scipy/optimize/tests/test_cobyqa.py +252 -0
  849. scipy/optimize/tests/test_constraint_conversion.py +286 -0
  850. scipy/optimize/tests/test_constraints.py +255 -0
  851. scipy/optimize/tests/test_cython_optimize.py +92 -0
  852. scipy/optimize/tests/test_differentiable_functions.py +1025 -0
  853. scipy/optimize/tests/test_direct.py +321 -0
  854. scipy/optimize/tests/test_extending.py +28 -0
  855. scipy/optimize/tests/test_hessian_update_strategy.py +300 -0
  856. scipy/optimize/tests/test_isotonic_regression.py +167 -0
  857. scipy/optimize/tests/test_lbfgsb_hessinv.py +65 -0
  858. scipy/optimize/tests/test_lbfgsb_setulb.py +122 -0
  859. scipy/optimize/tests/test_least_squares.py +986 -0
  860. scipy/optimize/tests/test_linear_assignment.py +116 -0
  861. scipy/optimize/tests/test_linesearch.py +328 -0
  862. scipy/optimize/tests/test_linprog.py +2577 -0
  863. scipy/optimize/tests/test_lsq_common.py +297 -0
  864. scipy/optimize/tests/test_lsq_linear.py +287 -0
  865. scipy/optimize/tests/test_milp.py +459 -0
  866. scipy/optimize/tests/test_minimize_constrained.py +845 -0
  867. scipy/optimize/tests/test_minpack.py +1194 -0
  868. scipy/optimize/tests/test_nnls.py +469 -0
  869. scipy/optimize/tests/test_nonlin.py +572 -0
  870. scipy/optimize/tests/test_optimize.py +3335 -0
  871. scipy/optimize/tests/test_quadratic_assignment.py +455 -0
  872. scipy/optimize/tests/test_regression.py +40 -0
  873. scipy/optimize/tests/test_slsqp.py +645 -0
  874. scipy/optimize/tests/test_tnc.py +345 -0
  875. scipy/optimize/tests/test_trustregion.py +110 -0
  876. scipy/optimize/tests/test_trustregion_exact.py +351 -0
  877. scipy/optimize/tests/test_trustregion_krylov.py +170 -0
  878. scipy/optimize/tests/test_zeros.py +998 -0
  879. scipy/optimize/tnc.py +22 -0
  880. scipy/optimize/zeros.py +26 -0
  881. scipy/signal/__init__.py +316 -0
  882. scipy/signal/_arraytools.py +264 -0
  883. scipy/signal/_czt.py +575 -0
  884. scipy/signal/_delegators.py +568 -0
  885. scipy/signal/_filter_design.py +5893 -0
  886. scipy/signal/_fir_filter_design.py +1458 -0
  887. scipy/signal/_lti_conversion.py +534 -0
  888. scipy/signal/_ltisys.py +3546 -0
  889. scipy/signal/_max_len_seq.py +139 -0
  890. scipy/signal/_max_len_seq_inner.cpython-314t-darwin.so +0 -0
  891. scipy/signal/_peak_finding.py +1310 -0
  892. scipy/signal/_peak_finding_utils.cpython-314t-darwin.so +0 -0
  893. scipy/signal/_polyutils.py +172 -0
  894. scipy/signal/_savitzky_golay.py +357 -0
  895. scipy/signal/_short_time_fft.py +2187 -0
  896. scipy/signal/_signal_api.py +30 -0
  897. scipy/signal/_signaltools.py +5309 -0
  898. scipy/signal/_sigtools.cpython-314t-darwin.so +0 -0
  899. scipy/signal/_sosfilt.cpython-314t-darwin.so +0 -0
  900. scipy/signal/_spectral_py.py +2471 -0
  901. scipy/signal/_spline.cpython-314t-darwin.so +0 -0
  902. scipy/signal/_spline.pyi +34 -0
  903. scipy/signal/_spline_filters.py +848 -0
  904. scipy/signal/_support_alternative_backends.py +73 -0
  905. scipy/signal/_upfirdn.py +219 -0
  906. scipy/signal/_upfirdn_apply.cpython-314t-darwin.so +0 -0
  907. scipy/signal/_waveforms.py +687 -0
  908. scipy/signal/_wavelets.py +29 -0
  909. scipy/signal/bsplines.py +21 -0
  910. scipy/signal/filter_design.py +28 -0
  911. scipy/signal/fir_filter_design.py +21 -0
  912. scipy/signal/lti_conversion.py +20 -0
  913. scipy/signal/ltisys.py +25 -0
  914. scipy/signal/signaltools.py +27 -0
  915. scipy/signal/spectral.py +21 -0
  916. scipy/signal/spline.py +18 -0
  917. scipy/signal/tests/__init__.py +0 -0
  918. scipy/signal/tests/_scipy_spectral_test_shim.py +311 -0
  919. scipy/signal/tests/mpsig.py +122 -0
  920. scipy/signal/tests/test_array_tools.py +111 -0
  921. scipy/signal/tests/test_bsplines.py +365 -0
  922. scipy/signal/tests/test_cont2discrete.py +424 -0
  923. scipy/signal/tests/test_czt.py +221 -0
  924. scipy/signal/tests/test_dltisys.py +599 -0
  925. scipy/signal/tests/test_filter_design.py +4744 -0
  926. scipy/signal/tests/test_fir_filter_design.py +851 -0
  927. scipy/signal/tests/test_ltisys.py +1225 -0
  928. scipy/signal/tests/test_max_len_seq.py +71 -0
  929. scipy/signal/tests/test_peak_finding.py +915 -0
  930. scipy/signal/tests/test_result_type.py +51 -0
  931. scipy/signal/tests/test_savitzky_golay.py +363 -0
  932. scipy/signal/tests/test_short_time_fft.py +1098 -0
  933. scipy/signal/tests/test_signaltools.py +4729 -0
  934. scipy/signal/tests/test_spectral.py +2103 -0
  935. scipy/signal/tests/test_splines.py +427 -0
  936. scipy/signal/tests/test_upfirdn.py +322 -0
  937. scipy/signal/tests/test_waveforms.py +400 -0
  938. scipy/signal/tests/test_wavelets.py +59 -0
  939. scipy/signal/tests/test_windows.py +987 -0
  940. scipy/signal/waveforms.py +20 -0
  941. scipy/signal/wavelets.py +17 -0
  942. scipy/signal/windows/__init__.py +52 -0
  943. scipy/signal/windows/_windows.py +2513 -0
  944. scipy/signal/windows/windows.py +23 -0
  945. scipy/sparse/__init__.py +350 -0
  946. scipy/sparse/_base.py +1613 -0
  947. scipy/sparse/_bsr.py +880 -0
  948. scipy/sparse/_compressed.py +1328 -0
  949. scipy/sparse/_construct.py +1454 -0
  950. scipy/sparse/_coo.py +1581 -0
  951. scipy/sparse/_csc.py +367 -0
  952. scipy/sparse/_csparsetools.cpython-314t-darwin.so +0 -0
  953. scipy/sparse/_csr.py +558 -0
  954. scipy/sparse/_data.py +569 -0
  955. scipy/sparse/_dia.py +677 -0
  956. scipy/sparse/_dok.py +669 -0
  957. scipy/sparse/_extract.py +178 -0
  958. scipy/sparse/_index.py +444 -0
  959. scipy/sparse/_lil.py +632 -0
  960. scipy/sparse/_matrix.py +169 -0
  961. scipy/sparse/_matrix_io.py +167 -0
  962. scipy/sparse/_sparsetools.cpython-314t-darwin.so +0 -0
  963. scipy/sparse/_spfuncs.py +76 -0
  964. scipy/sparse/_sputils.py +632 -0
  965. scipy/sparse/base.py +24 -0
  966. scipy/sparse/bsr.py +22 -0
  967. scipy/sparse/compressed.py +20 -0
  968. scipy/sparse/construct.py +38 -0
  969. scipy/sparse/coo.py +23 -0
  970. scipy/sparse/csc.py +22 -0
  971. scipy/sparse/csgraph/__init__.py +210 -0
  972. scipy/sparse/csgraph/_flow.cpython-314t-darwin.so +0 -0
  973. scipy/sparse/csgraph/_laplacian.py +563 -0
  974. scipy/sparse/csgraph/_matching.cpython-314t-darwin.so +0 -0
  975. scipy/sparse/csgraph/_min_spanning_tree.cpython-314t-darwin.so +0 -0
  976. scipy/sparse/csgraph/_reordering.cpython-314t-darwin.so +0 -0
  977. scipy/sparse/csgraph/_shortest_path.cpython-314t-darwin.so +0 -0
  978. scipy/sparse/csgraph/_tools.cpython-314t-darwin.so +0 -0
  979. scipy/sparse/csgraph/_traversal.cpython-314t-darwin.so +0 -0
  980. scipy/sparse/csgraph/_validation.py +66 -0
  981. scipy/sparse/csgraph/tests/__init__.py +0 -0
  982. scipy/sparse/csgraph/tests/test_connected_components.py +119 -0
  983. scipy/sparse/csgraph/tests/test_conversions.py +61 -0
  984. scipy/sparse/csgraph/tests/test_flow.py +209 -0
  985. scipy/sparse/csgraph/tests/test_graph_laplacian.py +368 -0
  986. scipy/sparse/csgraph/tests/test_matching.py +307 -0
  987. scipy/sparse/csgraph/tests/test_pydata_sparse.py +197 -0
  988. scipy/sparse/csgraph/tests/test_reordering.py +70 -0
  989. scipy/sparse/csgraph/tests/test_shortest_path.py +540 -0
  990. scipy/sparse/csgraph/tests/test_spanning_tree.py +66 -0
  991. scipy/sparse/csgraph/tests/test_traversal.py +148 -0
  992. scipy/sparse/csr.py +22 -0
  993. scipy/sparse/data.py +18 -0
  994. scipy/sparse/dia.py +22 -0
  995. scipy/sparse/dok.py +22 -0
  996. scipy/sparse/extract.py +23 -0
  997. scipy/sparse/lil.py +22 -0
  998. scipy/sparse/linalg/__init__.py +148 -0
  999. scipy/sparse/linalg/_dsolve/__init__.py +71 -0
  1000. scipy/sparse/linalg/_dsolve/_add_newdocs.py +147 -0
  1001. scipy/sparse/linalg/_dsolve/_superlu.cpython-314t-darwin.so +0 -0
  1002. scipy/sparse/linalg/_dsolve/linsolve.py +882 -0
  1003. scipy/sparse/linalg/_dsolve/tests/__init__.py +0 -0
  1004. scipy/sparse/linalg/_dsolve/tests/test_linsolve.py +928 -0
  1005. scipy/sparse/linalg/_eigen/__init__.py +22 -0
  1006. scipy/sparse/linalg/_eigen/_svds.py +540 -0
  1007. scipy/sparse/linalg/_eigen/_svds_doc.py +382 -0
  1008. scipy/sparse/linalg/_eigen/arpack/COPYING +45 -0
  1009. scipy/sparse/linalg/_eigen/arpack/__init__.py +20 -0
  1010. scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-314t-darwin.so +0 -0
  1011. scipy/sparse/linalg/_eigen/arpack/arpack.py +1706 -0
  1012. scipy/sparse/linalg/_eigen/arpack/tests/__init__.py +0 -0
  1013. scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py +717 -0
  1014. scipy/sparse/linalg/_eigen/lobpcg/__init__.py +16 -0
  1015. scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py +1110 -0
  1016. scipy/sparse/linalg/_eigen/lobpcg/tests/__init__.py +0 -0
  1017. scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py +725 -0
  1018. scipy/sparse/linalg/_eigen/tests/__init__.py +0 -0
  1019. scipy/sparse/linalg/_eigen/tests/test_svds.py +886 -0
  1020. scipy/sparse/linalg/_expm_multiply.py +816 -0
  1021. scipy/sparse/linalg/_interface.py +920 -0
  1022. scipy/sparse/linalg/_isolve/__init__.py +20 -0
  1023. scipy/sparse/linalg/_isolve/_gcrotmk.py +503 -0
  1024. scipy/sparse/linalg/_isolve/iterative.py +1051 -0
  1025. scipy/sparse/linalg/_isolve/lgmres.py +230 -0
  1026. scipy/sparse/linalg/_isolve/lsmr.py +486 -0
  1027. scipy/sparse/linalg/_isolve/lsqr.py +589 -0
  1028. scipy/sparse/linalg/_isolve/minres.py +372 -0
  1029. scipy/sparse/linalg/_isolve/tests/__init__.py +0 -0
  1030. scipy/sparse/linalg/_isolve/tests/test_gcrotmk.py +183 -0
  1031. scipy/sparse/linalg/_isolve/tests/test_iterative.py +809 -0
  1032. scipy/sparse/linalg/_isolve/tests/test_lgmres.py +225 -0
  1033. scipy/sparse/linalg/_isolve/tests/test_lsmr.py +185 -0
  1034. scipy/sparse/linalg/_isolve/tests/test_lsqr.py +120 -0
  1035. scipy/sparse/linalg/_isolve/tests/test_minres.py +97 -0
  1036. scipy/sparse/linalg/_isolve/tests/test_utils.py +9 -0
  1037. scipy/sparse/linalg/_isolve/tfqmr.py +179 -0
  1038. scipy/sparse/linalg/_isolve/utils.py +121 -0
  1039. scipy/sparse/linalg/_matfuncs.py +940 -0
  1040. scipy/sparse/linalg/_norm.py +195 -0
  1041. scipy/sparse/linalg/_onenormest.py +467 -0
  1042. scipy/sparse/linalg/_propack/_cpropack.cpython-314t-darwin.so +0 -0
  1043. scipy/sparse/linalg/_propack/_dpropack.cpython-314t-darwin.so +0 -0
  1044. scipy/sparse/linalg/_propack/_spropack.cpython-314t-darwin.so +0 -0
  1045. scipy/sparse/linalg/_propack/_zpropack.cpython-314t-darwin.so +0 -0
  1046. scipy/sparse/linalg/_special_sparse_arrays.py +949 -0
  1047. scipy/sparse/linalg/_svdp.py +309 -0
  1048. scipy/sparse/linalg/dsolve.py +22 -0
  1049. scipy/sparse/linalg/eigen.py +21 -0
  1050. scipy/sparse/linalg/interface.py +20 -0
  1051. scipy/sparse/linalg/isolve.py +22 -0
  1052. scipy/sparse/linalg/matfuncs.py +18 -0
  1053. scipy/sparse/linalg/tests/__init__.py +0 -0
  1054. scipy/sparse/linalg/tests/propack_test_data.npz +0 -0
  1055. scipy/sparse/linalg/tests/test_expm_multiply.py +367 -0
  1056. scipy/sparse/linalg/tests/test_interface.py +561 -0
  1057. scipy/sparse/linalg/tests/test_matfuncs.py +592 -0
  1058. scipy/sparse/linalg/tests/test_norm.py +154 -0
  1059. scipy/sparse/linalg/tests/test_onenormest.py +252 -0
  1060. scipy/sparse/linalg/tests/test_propack.py +165 -0
  1061. scipy/sparse/linalg/tests/test_pydata_sparse.py +272 -0
  1062. scipy/sparse/linalg/tests/test_special_sparse_arrays.py +337 -0
  1063. scipy/sparse/sparsetools.py +17 -0
  1064. scipy/sparse/spfuncs.py +17 -0
  1065. scipy/sparse/sputils.py +17 -0
  1066. scipy/sparse/tests/__init__.py +0 -0
  1067. scipy/sparse/tests/data/csc_py2.npz +0 -0
  1068. scipy/sparse/tests/data/csc_py3.npz +0 -0
  1069. scipy/sparse/tests/test_arithmetic1d.py +341 -0
  1070. scipy/sparse/tests/test_array_api.py +561 -0
  1071. scipy/sparse/tests/test_base.py +5870 -0
  1072. scipy/sparse/tests/test_common1d.py +447 -0
  1073. scipy/sparse/tests/test_construct.py +872 -0
  1074. scipy/sparse/tests/test_coo.py +1119 -0
  1075. scipy/sparse/tests/test_csc.py +98 -0
  1076. scipy/sparse/tests/test_csr.py +214 -0
  1077. scipy/sparse/tests/test_dok.py +209 -0
  1078. scipy/sparse/tests/test_extract.py +51 -0
  1079. scipy/sparse/tests/test_indexing1d.py +603 -0
  1080. scipy/sparse/tests/test_matrix_io.py +109 -0
  1081. scipy/sparse/tests/test_minmax1d.py +128 -0
  1082. scipy/sparse/tests/test_sparsetools.py +344 -0
  1083. scipy/sparse/tests/test_spfuncs.py +97 -0
  1084. scipy/sparse/tests/test_sputils.py +424 -0
  1085. scipy/spatial/__init__.py +129 -0
  1086. scipy/spatial/_ckdtree.cpython-314t-darwin.so +0 -0
  1087. scipy/spatial/_distance_pybind.cpython-314t-darwin.so +0 -0
  1088. scipy/spatial/_distance_wrap.cpython-314t-darwin.so +0 -0
  1089. scipy/spatial/_geometric_slerp.py +238 -0
  1090. scipy/spatial/_hausdorff.cpython-314t-darwin.so +0 -0
  1091. scipy/spatial/_kdtree.py +920 -0
  1092. scipy/spatial/_plotutils.py +274 -0
  1093. scipy/spatial/_procrustes.py +132 -0
  1094. scipy/spatial/_qhull.cpython-314t-darwin.so +0 -0
  1095. scipy/spatial/_qhull.pyi +213 -0
  1096. scipy/spatial/_spherical_voronoi.py +341 -0
  1097. scipy/spatial/_voronoi.cpython-314t-darwin.so +0 -0
  1098. scipy/spatial/_voronoi.pyi +4 -0
  1099. scipy/spatial/ckdtree.py +18 -0
  1100. scipy/spatial/distance.py +3147 -0
  1101. scipy/spatial/distance.pyi +210 -0
  1102. scipy/spatial/kdtree.py +25 -0
  1103. scipy/spatial/qhull.py +25 -0
  1104. scipy/spatial/tests/__init__.py +0 -0
  1105. scipy/spatial/tests/data/cdist-X1.txt +10 -0
  1106. scipy/spatial/tests/data/cdist-X2.txt +20 -0
  1107. scipy/spatial/tests/data/degenerate_pointset.npz +0 -0
  1108. scipy/spatial/tests/data/iris.txt +150 -0
  1109. scipy/spatial/tests/data/pdist-boolean-inp.txt +20 -0
  1110. scipy/spatial/tests/data/pdist-chebyshev-ml-iris.txt +1 -0
  1111. scipy/spatial/tests/data/pdist-chebyshev-ml.txt +1 -0
  1112. scipy/spatial/tests/data/pdist-cityblock-ml-iris.txt +1 -0
  1113. scipy/spatial/tests/data/pdist-cityblock-ml.txt +1 -0
  1114. scipy/spatial/tests/data/pdist-correlation-ml-iris.txt +1 -0
  1115. scipy/spatial/tests/data/pdist-correlation-ml.txt +1 -0
  1116. scipy/spatial/tests/data/pdist-cosine-ml-iris.txt +1 -0
  1117. scipy/spatial/tests/data/pdist-cosine-ml.txt +1 -0
  1118. scipy/spatial/tests/data/pdist-double-inp.txt +20 -0
  1119. scipy/spatial/tests/data/pdist-euclidean-ml-iris.txt +1 -0
  1120. scipy/spatial/tests/data/pdist-euclidean-ml.txt +1 -0
  1121. scipy/spatial/tests/data/pdist-hamming-ml.txt +1 -0
  1122. scipy/spatial/tests/data/pdist-jaccard-ml.txt +1 -0
  1123. scipy/spatial/tests/data/pdist-jensenshannon-ml-iris.txt +1 -0
  1124. scipy/spatial/tests/data/pdist-jensenshannon-ml.txt +1 -0
  1125. scipy/spatial/tests/data/pdist-minkowski-3.2-ml-iris.txt +1 -0
  1126. scipy/spatial/tests/data/pdist-minkowski-3.2-ml.txt +1 -0
  1127. scipy/spatial/tests/data/pdist-minkowski-5.8-ml-iris.txt +1 -0
  1128. scipy/spatial/tests/data/pdist-seuclidean-ml-iris.txt +1 -0
  1129. scipy/spatial/tests/data/pdist-seuclidean-ml.txt +1 -0
  1130. scipy/spatial/tests/data/pdist-spearman-ml.txt +1 -0
  1131. scipy/spatial/tests/data/random-bool-data.txt +100 -0
  1132. scipy/spatial/tests/data/random-double-data.txt +100 -0
  1133. scipy/spatial/tests/data/random-int-data.txt +100 -0
  1134. scipy/spatial/tests/data/random-uint-data.txt +100 -0
  1135. scipy/spatial/tests/data/selfdual-4d-polytope.txt +27 -0
  1136. scipy/spatial/tests/test__plotutils.py +91 -0
  1137. scipy/spatial/tests/test__procrustes.py +116 -0
  1138. scipy/spatial/tests/test_distance.py +2388 -0
  1139. scipy/spatial/tests/test_hausdorff.py +199 -0
  1140. scipy/spatial/tests/test_kdtree.py +1536 -0
  1141. scipy/spatial/tests/test_qhull.py +1313 -0
  1142. scipy/spatial/tests/test_slerp.py +417 -0
  1143. scipy/spatial/tests/test_spherical_voronoi.py +358 -0
  1144. scipy/spatial/transform/__init__.py +31 -0
  1145. scipy/spatial/transform/_rigid_transform.cpython-314t-darwin.so +0 -0
  1146. scipy/spatial/transform/_rotation.cpython-314t-darwin.so +0 -0
  1147. scipy/spatial/transform/_rotation_groups.py +140 -0
  1148. scipy/spatial/transform/_rotation_spline.py +460 -0
  1149. scipy/spatial/transform/rotation.py +21 -0
  1150. scipy/spatial/transform/tests/__init__.py +0 -0
  1151. scipy/spatial/transform/tests/test_rigid_transform.py +1221 -0
  1152. scipy/spatial/transform/tests/test_rotation.py +2569 -0
  1153. scipy/spatial/transform/tests/test_rotation_groups.py +169 -0
  1154. scipy/spatial/transform/tests/test_rotation_spline.py +183 -0
  1155. scipy/special/__init__.pxd +1 -0
  1156. scipy/special/__init__.py +841 -0
  1157. scipy/special/_add_newdocs.py +9961 -0
  1158. scipy/special/_basic.py +3576 -0
  1159. scipy/special/_comb.cpython-314t-darwin.so +0 -0
  1160. scipy/special/_ellip_harm.py +214 -0
  1161. scipy/special/_ellip_harm_2.cpython-314t-darwin.so +0 -0
  1162. scipy/special/_gufuncs.cpython-314t-darwin.so +0 -0
  1163. scipy/special/_input_validation.py +17 -0
  1164. scipy/special/_lambertw.py +149 -0
  1165. scipy/special/_logsumexp.py +426 -0
  1166. scipy/special/_mptestutils.py +453 -0
  1167. scipy/special/_multiufuncs.py +610 -0
  1168. scipy/special/_orthogonal.py +2592 -0
  1169. scipy/special/_orthogonal.pyi +330 -0
  1170. scipy/special/_precompute/__init__.py +0 -0
  1171. scipy/special/_precompute/cosine_cdf.py +17 -0
  1172. scipy/special/_precompute/expn_asy.py +54 -0
  1173. scipy/special/_precompute/gammainc_asy.py +116 -0
  1174. scipy/special/_precompute/gammainc_data.py +124 -0
  1175. scipy/special/_precompute/hyp2f1_data.py +484 -0
  1176. scipy/special/_precompute/lambertw.py +68 -0
  1177. scipy/special/_precompute/loggamma.py +43 -0
  1178. scipy/special/_precompute/struve_convergence.py +131 -0
  1179. scipy/special/_precompute/utils.py +38 -0
  1180. scipy/special/_precompute/wright_bessel.py +342 -0
  1181. scipy/special/_precompute/wright_bessel_data.py +152 -0
  1182. scipy/special/_precompute/wrightomega.py +41 -0
  1183. scipy/special/_precompute/zetac.py +27 -0
  1184. scipy/special/_sf_error.py +15 -0
  1185. scipy/special/_specfun.cpython-314t-darwin.so +0 -0
  1186. scipy/special/_special_ufuncs.cpython-314t-darwin.so +0 -0
  1187. scipy/special/_spfun_stats.py +106 -0
  1188. scipy/special/_spherical_bessel.py +397 -0
  1189. scipy/special/_support_alternative_backends.py +295 -0
  1190. scipy/special/_test_internal.cpython-314t-darwin.so +0 -0
  1191. scipy/special/_test_internal.pyi +9 -0
  1192. scipy/special/_testutils.py +321 -0
  1193. scipy/special/_ufuncs.cpython-314t-darwin.so +0 -0
  1194. scipy/special/_ufuncs.pyi +522 -0
  1195. scipy/special/_ufuncs.pyx +13173 -0
  1196. scipy/special/_ufuncs_cxx.cpython-314t-darwin.so +0 -0
  1197. scipy/special/_ufuncs_cxx.pxd +142 -0
  1198. scipy/special/_ufuncs_cxx.pyx +427 -0
  1199. scipy/special/_ufuncs_cxx_defs.h +147 -0
  1200. scipy/special/_ufuncs_defs.h +57 -0
  1201. scipy/special/add_newdocs.py +15 -0
  1202. scipy/special/basic.py +87 -0
  1203. scipy/special/cython_special.cpython-314t-darwin.so +0 -0
  1204. scipy/special/cython_special.pxd +259 -0
  1205. scipy/special/cython_special.pyi +3 -0
  1206. scipy/special/orthogonal.py +45 -0
  1207. scipy/special/sf_error.py +20 -0
  1208. scipy/special/specfun.py +24 -0
  1209. scipy/special/spfun_stats.py +17 -0
  1210. scipy/special/tests/__init__.py +0 -0
  1211. scipy/special/tests/_cython_examples/extending.pyx +12 -0
  1212. scipy/special/tests/_cython_examples/meson.build +34 -0
  1213. scipy/special/tests/data/__init__.py +0 -0
  1214. scipy/special/tests/data/boost.npz +0 -0
  1215. scipy/special/tests/data/gsl.npz +0 -0
  1216. scipy/special/tests/data/local.npz +0 -0
  1217. scipy/special/tests/test_basic.py +4815 -0
  1218. scipy/special/tests/test_bdtr.py +112 -0
  1219. scipy/special/tests/test_boost_ufuncs.py +64 -0
  1220. scipy/special/tests/test_boxcox.py +125 -0
  1221. scipy/special/tests/test_cdflib.py +712 -0
  1222. scipy/special/tests/test_cdft_asymptotic.py +49 -0
  1223. scipy/special/tests/test_cephes_intp_cast.py +29 -0
  1224. scipy/special/tests/test_cosine_distr.py +83 -0
  1225. scipy/special/tests/test_cython_special.py +363 -0
  1226. scipy/special/tests/test_data.py +719 -0
  1227. scipy/special/tests/test_dd.py +42 -0
  1228. scipy/special/tests/test_digamma.py +45 -0
  1229. scipy/special/tests/test_ellip_harm.py +278 -0
  1230. scipy/special/tests/test_erfinv.py +89 -0
  1231. scipy/special/tests/test_exponential_integrals.py +118 -0
  1232. scipy/special/tests/test_extending.py +28 -0
  1233. scipy/special/tests/test_faddeeva.py +85 -0
  1234. scipy/special/tests/test_gamma.py +12 -0
  1235. scipy/special/tests/test_gammainc.py +152 -0
  1236. scipy/special/tests/test_hyp2f1.py +2566 -0
  1237. scipy/special/tests/test_hypergeometric.py +234 -0
  1238. scipy/special/tests/test_iv_ratio.py +249 -0
  1239. scipy/special/tests/test_kolmogorov.py +491 -0
  1240. scipy/special/tests/test_lambertw.py +109 -0
  1241. scipy/special/tests/test_legendre.py +1518 -0
  1242. scipy/special/tests/test_log1mexp.py +85 -0
  1243. scipy/special/tests/test_loggamma.py +70 -0
  1244. scipy/special/tests/test_logit.py +162 -0
  1245. scipy/special/tests/test_logsumexp.py +469 -0
  1246. scipy/special/tests/test_mpmath.py +2293 -0
  1247. scipy/special/tests/test_nan_inputs.py +65 -0
  1248. scipy/special/tests/test_ndtr.py +77 -0
  1249. scipy/special/tests/test_ndtri_exp.py +94 -0
  1250. scipy/special/tests/test_orthogonal.py +821 -0
  1251. scipy/special/tests/test_orthogonal_eval.py +275 -0
  1252. scipy/special/tests/test_owens_t.py +53 -0
  1253. scipy/special/tests/test_pcf.py +24 -0
  1254. scipy/special/tests/test_pdtr.py +48 -0
  1255. scipy/special/tests/test_powm1.py +65 -0
  1256. scipy/special/tests/test_precompute_expn_asy.py +24 -0
  1257. scipy/special/tests/test_precompute_gammainc.py +108 -0
  1258. scipy/special/tests/test_precompute_utils.py +36 -0
  1259. scipy/special/tests/test_round.py +18 -0
  1260. scipy/special/tests/test_sf_error.py +146 -0
  1261. scipy/special/tests/test_sici.py +36 -0
  1262. scipy/special/tests/test_specfun.py +48 -0
  1263. scipy/special/tests/test_spence.py +32 -0
  1264. scipy/special/tests/test_spfun_stats.py +61 -0
  1265. scipy/special/tests/test_sph_harm.py +85 -0
  1266. scipy/special/tests/test_spherical_bessel.py +400 -0
  1267. scipy/special/tests/test_support_alternative_backends.py +248 -0
  1268. scipy/special/tests/test_trig.py +72 -0
  1269. scipy/special/tests/test_ufunc_signatures.py +46 -0
  1270. scipy/special/tests/test_wright_bessel.py +205 -0
  1271. scipy/special/tests/test_wrightomega.py +117 -0
  1272. scipy/special/tests/test_zeta.py +301 -0
  1273. scipy/stats/__init__.py +670 -0
  1274. scipy/stats/_ansari_swilk_statistics.cpython-314t-darwin.so +0 -0
  1275. scipy/stats/_axis_nan_policy.py +692 -0
  1276. scipy/stats/_biasedurn.cpython-314t-darwin.so +0 -0
  1277. scipy/stats/_biasedurn.pxd +27 -0
  1278. scipy/stats/_binned_statistic.py +795 -0
  1279. scipy/stats/_binomtest.py +375 -0
  1280. scipy/stats/_bws_test.py +177 -0
  1281. scipy/stats/_censored_data.py +459 -0
  1282. scipy/stats/_common.py +5 -0
  1283. scipy/stats/_constants.py +42 -0
  1284. scipy/stats/_continued_fraction.py +387 -0
  1285. scipy/stats/_continuous_distns.py +12486 -0
  1286. scipy/stats/_correlation.py +210 -0
  1287. scipy/stats/_covariance.py +636 -0
  1288. scipy/stats/_crosstab.py +204 -0
  1289. scipy/stats/_discrete_distns.py +2098 -0
  1290. scipy/stats/_distn_infrastructure.py +4201 -0
  1291. scipy/stats/_distr_params.py +299 -0
  1292. scipy/stats/_distribution_infrastructure.py +5750 -0
  1293. scipy/stats/_entropy.py +428 -0
  1294. scipy/stats/_finite_differences.py +145 -0
  1295. scipy/stats/_fit.py +1351 -0
  1296. scipy/stats/_hypotests.py +2060 -0
  1297. scipy/stats/_kde.py +732 -0
  1298. scipy/stats/_ksstats.py +600 -0
  1299. scipy/stats/_levy_stable/__init__.py +1231 -0
  1300. scipy/stats/_levy_stable/levyst.cpython-314t-darwin.so +0 -0
  1301. scipy/stats/_mannwhitneyu.py +492 -0
  1302. scipy/stats/_mgc.py +550 -0
  1303. scipy/stats/_morestats.py +4626 -0
  1304. scipy/stats/_mstats_basic.py +3658 -0
  1305. scipy/stats/_mstats_extras.py +521 -0
  1306. scipy/stats/_multicomp.py +449 -0
  1307. scipy/stats/_multivariate.py +7281 -0
  1308. scipy/stats/_new_distributions.py +452 -0
  1309. scipy/stats/_odds_ratio.py +466 -0
  1310. scipy/stats/_page_trend_test.py +486 -0
  1311. scipy/stats/_probability_distribution.py +1964 -0
  1312. scipy/stats/_qmc.py +2956 -0
  1313. scipy/stats/_qmc_cy.cpython-314t-darwin.so +0 -0
  1314. scipy/stats/_qmc_cy.pyi +54 -0
  1315. scipy/stats/_qmvnt.py +454 -0
  1316. scipy/stats/_qmvnt_cy.cpython-314t-darwin.so +0 -0
  1317. scipy/stats/_quantile.py +335 -0
  1318. scipy/stats/_rcont/__init__.py +4 -0
  1319. scipy/stats/_rcont/rcont.cpython-314t-darwin.so +0 -0
  1320. scipy/stats/_relative_risk.py +263 -0
  1321. scipy/stats/_resampling.py +2352 -0
  1322. scipy/stats/_result_classes.py +40 -0
  1323. scipy/stats/_sampling.py +1314 -0
  1324. scipy/stats/_sensitivity_analysis.py +713 -0
  1325. scipy/stats/_sobol.cpython-314t-darwin.so +0 -0
  1326. scipy/stats/_sobol.pyi +54 -0
  1327. scipy/stats/_sobol_direction_numbers.npz +0 -0
  1328. scipy/stats/_stats.cpython-314t-darwin.so +0 -0
  1329. scipy/stats/_stats.pxd +10 -0
  1330. scipy/stats/_stats_mstats_common.py +322 -0
  1331. scipy/stats/_stats_py.py +11089 -0
  1332. scipy/stats/_stats_pythran.cpython-314t-darwin.so +0 -0
  1333. scipy/stats/_survival.py +683 -0
  1334. scipy/stats/_tukeylambda_stats.py +199 -0
  1335. scipy/stats/_unuran/__init__.py +0 -0
  1336. scipy/stats/_unuran/unuran_wrapper.cpython-314t-darwin.so +0 -0
  1337. scipy/stats/_unuran/unuran_wrapper.pyi +179 -0
  1338. scipy/stats/_variation.py +126 -0
  1339. scipy/stats/_warnings_errors.py +38 -0
  1340. scipy/stats/_wilcoxon.py +265 -0
  1341. scipy/stats/biasedurn.py +16 -0
  1342. scipy/stats/contingency.py +521 -0
  1343. scipy/stats/distributions.py +24 -0
  1344. scipy/stats/kde.py +18 -0
  1345. scipy/stats/morestats.py +27 -0
  1346. scipy/stats/mstats.py +140 -0
  1347. scipy/stats/mstats_basic.py +42 -0
  1348. scipy/stats/mstats_extras.py +25 -0
  1349. scipy/stats/mvn.py +17 -0
  1350. scipy/stats/qmc.py +236 -0
  1351. scipy/stats/sampling.py +73 -0
  1352. scipy/stats/stats.py +41 -0
  1353. scipy/stats/tests/__init__.py +0 -0
  1354. scipy/stats/tests/common_tests.py +356 -0
  1355. scipy/stats/tests/data/_mvt.py +171 -0
  1356. scipy/stats/tests/data/fisher_exact_results_from_r.py +607 -0
  1357. scipy/stats/tests/data/jf_skew_t_gamlss_pdf_data.npy +0 -0
  1358. scipy/stats/tests/data/levy_stable/stable-Z1-cdf-sample-data.npy +0 -0
  1359. scipy/stats/tests/data/levy_stable/stable-Z1-pdf-sample-data.npy +0 -0
  1360. scipy/stats/tests/data/levy_stable/stable-loc-scale-sample-data.npy +0 -0
  1361. scipy/stats/tests/data/nist_anova/AtmWtAg.dat +108 -0
  1362. scipy/stats/tests/data/nist_anova/SiRstv.dat +85 -0
  1363. scipy/stats/tests/data/nist_anova/SmLs01.dat +249 -0
  1364. scipy/stats/tests/data/nist_anova/SmLs02.dat +1869 -0
  1365. scipy/stats/tests/data/nist_anova/SmLs03.dat +18069 -0
  1366. scipy/stats/tests/data/nist_anova/SmLs04.dat +249 -0
  1367. scipy/stats/tests/data/nist_anova/SmLs05.dat +1869 -0
  1368. scipy/stats/tests/data/nist_anova/SmLs06.dat +18069 -0
  1369. scipy/stats/tests/data/nist_anova/SmLs07.dat +249 -0
  1370. scipy/stats/tests/data/nist_anova/SmLs08.dat +1869 -0
  1371. scipy/stats/tests/data/nist_anova/SmLs09.dat +18069 -0
  1372. scipy/stats/tests/data/nist_linregress/Norris.dat +97 -0
  1373. scipy/stats/tests/data/rel_breitwigner_pdf_sample_data_ROOT.npy +0 -0
  1374. scipy/stats/tests/data/studentized_range_mpmath_ref.json +1499 -0
  1375. scipy/stats/tests/test_axis_nan_policy.py +1388 -0
  1376. scipy/stats/tests/test_binned_statistic.py +568 -0
  1377. scipy/stats/tests/test_censored_data.py +152 -0
  1378. scipy/stats/tests/test_contingency.py +294 -0
  1379. scipy/stats/tests/test_continued_fraction.py +173 -0
  1380. scipy/stats/tests/test_continuous.py +2198 -0
  1381. scipy/stats/tests/test_continuous_basic.py +1053 -0
  1382. scipy/stats/tests/test_continuous_fit_censored.py +683 -0
  1383. scipy/stats/tests/test_correlation.py +80 -0
  1384. scipy/stats/tests/test_crosstab.py +115 -0
  1385. scipy/stats/tests/test_discrete_basic.py +580 -0
  1386. scipy/stats/tests/test_discrete_distns.py +700 -0
  1387. scipy/stats/tests/test_distributions.py +10413 -0
  1388. scipy/stats/tests/test_entropy.py +322 -0
  1389. scipy/stats/tests/test_fast_gen_inversion.py +435 -0
  1390. scipy/stats/tests/test_fit.py +1090 -0
  1391. scipy/stats/tests/test_hypotests.py +1991 -0
  1392. scipy/stats/tests/test_kdeoth.py +676 -0
  1393. scipy/stats/tests/test_marray.py +289 -0
  1394. scipy/stats/tests/test_mgc.py +217 -0
  1395. scipy/stats/tests/test_morestats.py +3259 -0
  1396. scipy/stats/tests/test_mstats_basic.py +2071 -0
  1397. scipy/stats/tests/test_mstats_extras.py +172 -0
  1398. scipy/stats/tests/test_multicomp.py +405 -0
  1399. scipy/stats/tests/test_multivariate.py +4381 -0
  1400. scipy/stats/tests/test_odds_ratio.py +148 -0
  1401. scipy/stats/tests/test_qmc.py +1492 -0
  1402. scipy/stats/tests/test_quantile.py +199 -0
  1403. scipy/stats/tests/test_rank.py +345 -0
  1404. scipy/stats/tests/test_relative_risk.py +95 -0
  1405. scipy/stats/tests/test_resampling.py +2000 -0
  1406. scipy/stats/tests/test_sampling.py +1450 -0
  1407. scipy/stats/tests/test_sensitivity_analysis.py +310 -0
  1408. scipy/stats/tests/test_stats.py +9707 -0
  1409. scipy/stats/tests/test_survival.py +466 -0
  1410. scipy/stats/tests/test_tukeylambda_stats.py +85 -0
  1411. scipy/stats/tests/test_variation.py +216 -0
  1412. scipy/version.py +12 -0
  1413. scipy-1.16.1.dist-info/LICENSE.txt +934 -0
  1414. scipy-1.16.1.dist-info/METADATA +1083 -0
  1415. scipy-1.16.1.dist-info/RECORD +1416 -0
  1416. scipy-1.16.1.dist-info/WHEEL +6 -0
@@ -0,0 +1,998 @@
1
+ import pytest
2
+
3
+ from functools import lru_cache
4
+
5
+ from numpy.testing import (assert_warns, assert_,
6
+ assert_allclose,
7
+ assert_equal,
8
+ assert_array_equal,
9
+ suppress_warnings)
10
+ import numpy as np
11
+ from numpy import finfo, power, nan, isclose, sqrt, exp, sin, cos
12
+
13
+ from scipy import optimize
14
+ from scipy.optimize import (_zeros_py as zeros, newton, root_scalar,
15
+ OptimizeResult)
16
+
17
+ from scipy._lib._util import getfullargspec_no_self as _getfullargspec
18
+
19
+ # Import testing parameters
20
+ from scipy.optimize._tstutils import get_tests, functions as tstutils_functions
21
+
22
+ TOL = 4*np.finfo(float).eps # tolerance
23
+
24
+ _FLOAT_EPS = finfo(float).eps
25
+
26
+ bracket_methods = [zeros.bisect, zeros.ridder, zeros.brentq, zeros.brenth,
27
+ zeros.toms748]
28
+ gradient_methods = [zeros.newton]
29
+ all_methods = bracket_methods + gradient_methods
30
+
31
+ # A few test functions used frequently:
32
+ # # A simple quadratic, (x-1)^2 - 1
33
+ def f1(x):
34
+ return x ** 2 - 2 * x - 1
35
+
36
+
37
+ def f1_1(x):
38
+ return 2 * x - 2
39
+
40
+
41
+ def f1_2(x):
42
+ return 2.0 + 0 * x
43
+
44
+
45
+ def f1_and_p_and_pp(x):
46
+ return f1(x), f1_1(x), f1_2(x)
47
+
48
+
49
+ # Simple transcendental function
50
+ def f2(x):
51
+ return exp(x) - cos(x)
52
+
53
+
54
+ def f2_1(x):
55
+ return exp(x) + sin(x)
56
+
57
+
58
+ def f2_2(x):
59
+ return exp(x) + cos(x)
60
+
61
+
62
+ # lru cached function
63
+ @lru_cache
64
+ def f_lrucached(x):
65
+ return x
66
+
67
+
68
+ class TestScalarRootFinders:
69
+ # Basic tests for all scalar root finders
70
+
71
+ xtol = 4 * np.finfo(float).eps
72
+ rtol = 4 * np.finfo(float).eps
73
+
74
+ def _run_one_test(self, tc, method, sig_args_keys=None,
75
+ sig_kwargs_keys=None, **kwargs):
76
+ method_args = []
77
+ for k in sig_args_keys or []:
78
+ if k not in tc:
79
+ # If a,b not present use x0, x1. Similarly for f and func
80
+ k = {'a': 'x0', 'b': 'x1', 'func': 'f'}.get(k, k)
81
+ method_args.append(tc[k])
82
+
83
+ method_kwargs = dict(**kwargs)
84
+ method_kwargs.update({'full_output': True, 'disp': False})
85
+ for k in sig_kwargs_keys or []:
86
+ method_kwargs[k] = tc[k]
87
+
88
+ root = tc.get('root')
89
+ func_args = tc.get('args', ())
90
+
91
+ try:
92
+ r, rr = method(*method_args, args=func_args, **method_kwargs)
93
+ return root, rr, tc
94
+ except Exception:
95
+ return root, zeros.RootResults(nan, -1, -1, zeros._EVALUEERR, method), tc
96
+
97
+ def run_tests(self, tests, method, name, known_fail=None, **kwargs):
98
+ r"""Run test-cases using the specified method and the supplied signature.
99
+
100
+ Extract the arguments for the method call from the test case
101
+ dictionary using the supplied keys for the method's signature."""
102
+ # The methods have one of two base signatures:
103
+ # (f, a, b, **kwargs) # newton
104
+ # (func, x0, **kwargs) # bisect/brentq/...
105
+
106
+ # FullArgSpec with args, varargs, varkw, defaults, ...
107
+ sig = _getfullargspec(method)
108
+ assert_(not sig.kwonlyargs)
109
+ nDefaults = len(sig.defaults)
110
+ nRequired = len(sig.args) - nDefaults
111
+ sig_args_keys = sig.args[:nRequired]
112
+ sig_kwargs_keys = []
113
+ if name in ['secant', 'newton', 'halley']:
114
+ if name in ['newton', 'halley']:
115
+ sig_kwargs_keys.append('fprime')
116
+ if name in ['halley']:
117
+ sig_kwargs_keys.append('fprime2')
118
+ kwargs['tol'] = self.xtol
119
+ else:
120
+ kwargs['xtol'] = self.xtol
121
+ kwargs['rtol'] = self.rtol
122
+
123
+ results = [list(self._run_one_test(
124
+ tc, method, sig_args_keys=sig_args_keys,
125
+ sig_kwargs_keys=sig_kwargs_keys, **kwargs)) for tc in tests]
126
+ # results= [[true root, full output, tc], ...]
127
+
128
+ known_fail = known_fail or []
129
+ notcvgd = [elt for elt in results if not elt[1].converged]
130
+ notcvgd = [elt for elt in notcvgd if elt[-1]['ID'] not in known_fail]
131
+ notcvged_IDS = [elt[-1]['ID'] for elt in notcvgd]
132
+ assert_equal([len(notcvged_IDS), notcvged_IDS], [0, []])
133
+
134
+ # The usable xtol and rtol depend on the test
135
+ tols = {'xtol': self.xtol, 'rtol': self.rtol}
136
+ tols.update(**kwargs)
137
+ rtol = tols['rtol']
138
+ atol = tols.get('tol', tols['xtol'])
139
+
140
+ cvgd = [elt for elt in results if elt[1].converged]
141
+ approx = [elt[1].root for elt in cvgd]
142
+ correct = [elt[0] for elt in cvgd]
143
+ # See if the root matches the reference value
144
+ notclose = [[a] + elt for a, c, elt in zip(approx, correct, cvgd) if
145
+ not isclose(a, c, rtol=rtol, atol=atol)
146
+ and elt[-1]['ID'] not in known_fail]
147
+ # If not, evaluate the function and see if is 0 at the purported root
148
+ fvs = [tc['f'](aroot, *tc.get('args', tuple()))
149
+ for aroot, c, fullout, tc in notclose]
150
+ notclose = [[fv] + elt for fv, elt in zip(fvs, notclose) if fv != 0]
151
+ assert_equal([notclose, len(notclose)], [[], 0])
152
+ method_from_result = [result[1].method for result in results]
153
+ expected_method = [name for _ in results]
154
+ assert_equal(method_from_result, expected_method)
155
+
156
+ def run_collection(self, collection, method, name, smoothness=None,
157
+ known_fail=None, **kwargs):
158
+ r"""Run a collection of tests using the specified method.
159
+
160
+ The name is used to determine some optional arguments."""
161
+ tests = get_tests(collection, smoothness=smoothness)
162
+ self.run_tests(tests, method, name, known_fail=known_fail, **kwargs)
163
+
164
+
165
+ class TestBracketMethods(TestScalarRootFinders):
166
+ @pytest.mark.parametrize('method', bracket_methods)
167
+ @pytest.mark.parametrize('function', tstutils_functions)
168
+ def test_basic_root_scalar(self, method, function):
169
+ # Tests bracketing root finders called via `root_scalar` on a small
170
+ # set of simple problems, each of which has a root at `x=1`. Checks for
171
+ # converged status and that the root was found.
172
+ a, b = .5, sqrt(3)
173
+
174
+ r = root_scalar(function, method=method.__name__, bracket=[a, b], x0=a,
175
+ xtol=self.xtol, rtol=self.rtol)
176
+ assert r.converged
177
+ assert_allclose(r.root, 1.0, atol=self.xtol, rtol=self.rtol)
178
+ assert r.method == method.__name__
179
+
180
+ @pytest.mark.parametrize('method', bracket_methods)
181
+ @pytest.mark.parametrize('function', tstutils_functions)
182
+ def test_basic_individual(self, method, function):
183
+ # Tests individual bracketing root finders on a small set of simple
184
+ # problems, each of which has a root at `x=1`. Checks for converged
185
+ # status and that the root was found.
186
+ a, b = .5, sqrt(3)
187
+ root, r = method(function, a, b, xtol=self.xtol, rtol=self.rtol,
188
+ full_output=True)
189
+
190
+ assert r.converged
191
+ assert_allclose(root, 1.0, atol=self.xtol, rtol=self.rtol)
192
+
193
+ @pytest.mark.parametrize('method', bracket_methods)
194
+ @pytest.mark.parametrize('function', tstutils_functions)
195
+ def test_bracket_is_array(self, method, function):
196
+ # Test bracketing root finders called via `root_scalar` on a small set
197
+ # of simple problems, each of which has a root at `x=1`. Check that
198
+ # passing `bracket` as a `ndarray` is accepted and leads to finding the
199
+ # correct root.
200
+ a, b = .5, sqrt(3)
201
+ r = root_scalar(function, method=method.__name__,
202
+ bracket=np.array([a, b]), x0=a, xtol=self.xtol,
203
+ rtol=self.rtol)
204
+ assert r.converged
205
+ assert_allclose(r.root, 1.0, atol=self.xtol, rtol=self.rtol)
206
+ assert r.method == method.__name__
207
+
208
+ @pytest.mark.parametrize('method', bracket_methods)
209
+ def test_aps_collection(self, method):
210
+ self.run_collection('aps', method, method.__name__, smoothness=1)
211
+
212
+ @pytest.mark.parametrize('method', [zeros.bisect, zeros.ridder,
213
+ zeros.toms748])
214
+ def test_chandrupatla_collection(self, method):
215
+ known_fail = {'fun7.4'} if method == zeros.ridder else {}
216
+ self.run_collection('chandrupatla', method, method.__name__,
217
+ known_fail=known_fail)
218
+
219
+ @pytest.mark.parametrize('method', bracket_methods)
220
+ def test_lru_cached_individual(self, method):
221
+ # check that https://github.com/scipy/scipy/issues/10846 is fixed
222
+ # (`root_scalar` failed when passed a function that was `@lru_cache`d)
223
+ a, b = -1, 1
224
+ root, r = method(f_lrucached, a, b, full_output=True)
225
+ assert r.converged
226
+ assert_allclose(root, 0)
227
+
228
+ def test_gh_22934(self):
229
+ with pytest.raises(ValueError, match="maxiter must be >= 0"):
230
+ zeros.brentq(lambda x: x**2 - 1, -2, 0, maxiter=-1)
231
+
232
+
233
+ class TestNewton(TestScalarRootFinders):
234
+ def test_newton_collections(self):
235
+ known_fail = ['aps.13.00']
236
+ known_fail += ['aps.12.05', 'aps.12.17'] # fails under Windows Py27
237
+ for collection in ['aps', 'complex']:
238
+ self.run_collection(collection, zeros.newton, 'newton',
239
+ smoothness=2, known_fail=known_fail)
240
+
241
+ def test_halley_collections(self):
242
+ known_fail = ['aps.12.06', 'aps.12.07', 'aps.12.08', 'aps.12.09',
243
+ 'aps.12.10', 'aps.12.11', 'aps.12.12', 'aps.12.13',
244
+ 'aps.12.14', 'aps.12.15', 'aps.12.16', 'aps.12.17',
245
+ 'aps.12.18', 'aps.13.00']
246
+ for collection in ['aps', 'complex']:
247
+ self.run_collection(collection, zeros.newton, 'halley',
248
+ smoothness=2, known_fail=known_fail)
249
+
250
+ def test_newton(self):
251
+ for f, f_1, f_2 in [(f1, f1_1, f1_2), (f2, f2_1, f2_2)]:
252
+ x = zeros.newton(f, 3, tol=1e-6)
253
+ assert_allclose(f(x), 0, atol=1e-6)
254
+ x = zeros.newton(f, 3, x1=5, tol=1e-6) # secant, x0 and x1
255
+ assert_allclose(f(x), 0, atol=1e-6)
256
+ x = zeros.newton(f, 3, fprime=f_1, tol=1e-6) # newton
257
+ assert_allclose(f(x), 0, atol=1e-6)
258
+ x = zeros.newton(f, 3, fprime=f_1, fprime2=f_2, tol=1e-6) # halley
259
+ assert_allclose(f(x), 0, atol=1e-6)
260
+
261
+ def test_newton_by_name(self):
262
+ r"""Invoke newton through root_scalar()"""
263
+ for f, f_1, f_2 in [(f1, f1_1, f1_2), (f2, f2_1, f2_2)]:
264
+ r = root_scalar(f, method='newton', x0=3, fprime=f_1, xtol=1e-6)
265
+ assert_allclose(f(r.root), 0, atol=1e-6)
266
+ for f, f_1, f_2 in [(f1, f1_1, f1_2), (f2, f2_1, f2_2)]:
267
+ r = root_scalar(f, method='newton', x0=3, xtol=1e-6) # without f'
268
+ assert_allclose(f(r.root), 0, atol=1e-6)
269
+
270
+ def test_secant_by_name(self):
271
+ r"""Invoke secant through root_scalar()"""
272
+ for f, f_1, f_2 in [(f1, f1_1, f1_2), (f2, f2_1, f2_2)]:
273
+ r = root_scalar(f, method='secant', x0=3, x1=2, xtol=1e-6)
274
+ assert_allclose(f(r.root), 0, atol=1e-6)
275
+ r = root_scalar(f, method='secant', x0=3, x1=5, xtol=1e-6)
276
+ assert_allclose(f(r.root), 0, atol=1e-6)
277
+ for f, f_1, f_2 in [(f1, f1_1, f1_2), (f2, f2_1, f2_2)]:
278
+ r = root_scalar(f, method='secant', x0=3, xtol=1e-6) # without x1
279
+ assert_allclose(f(r.root), 0, atol=1e-6)
280
+
281
+ def test_halley_by_name(self):
282
+ r"""Invoke halley through root_scalar()"""
283
+ for f, f_1, f_2 in [(f1, f1_1, f1_2), (f2, f2_1, f2_2)]:
284
+ r = root_scalar(f, method='halley', x0=3,
285
+ fprime=f_1, fprime2=f_2, xtol=1e-6)
286
+ assert_allclose(f(r.root), 0, atol=1e-6)
287
+
288
+ def test_root_scalar_fail(self):
289
+ message = 'fprime2 must be specified for halley'
290
+ with pytest.raises(ValueError, match=message):
291
+ root_scalar(f1, method='halley', fprime=f1_1, x0=3, xtol=1e-6) # no fprime2
292
+ message = 'fprime must be specified for halley'
293
+ with pytest.raises(ValueError, match=message):
294
+ root_scalar(f1, method='halley', fprime2=f1_2, x0=3, xtol=1e-6) # no fprime
295
+
296
+ def test_array_newton(self):
297
+ """test newton with array"""
298
+
299
+ def f1(x, *a):
300
+ b = a[0] + x * a[3]
301
+ return a[1] - a[2] * (np.exp(b / a[5]) - 1.0) - b / a[4] - x
302
+
303
+ def f1_1(x, *a):
304
+ b = a[3] / a[5]
305
+ return -a[2] * np.exp(a[0] / a[5] + x * b) * b - a[3] / a[4] - 1
306
+
307
+ def f1_2(x, *a):
308
+ b = a[3] / a[5]
309
+ return -a[2] * np.exp(a[0] / a[5] + x * b) * b**2
310
+
311
+ a0 = np.array([
312
+ 5.32725221, 5.48673747, 5.49539973,
313
+ 5.36387202, 4.80237316, 1.43764452,
314
+ 5.23063958, 5.46094772, 5.50512718,
315
+ 5.42046290
316
+ ])
317
+ a1 = (np.sin(range(10)) + 1.0) * 7.0
318
+ args = (a0, a1, 1e-09, 0.004, 10, 0.27456)
319
+ x0 = [7.0] * 10
320
+ x = zeros.newton(f1, x0, f1_1, args)
321
+ x_expected = (
322
+ 6.17264965, 11.7702805, 12.2219954,
323
+ 7.11017681, 1.18151293, 0.143707955,
324
+ 4.31928228, 10.5419107, 12.7552490,
325
+ 8.91225749
326
+ )
327
+ assert_allclose(x, x_expected)
328
+ # test halley's
329
+ x = zeros.newton(f1, x0, f1_1, args, fprime2=f1_2)
330
+ assert_allclose(x, x_expected)
331
+ # test secant
332
+ x = zeros.newton(f1, x0, args=args)
333
+ assert_allclose(x, x_expected)
334
+
335
+ def test_array_newton_complex(self):
336
+ def f(x):
337
+ return x + 1+1j
338
+
339
+ def fprime(x):
340
+ return 1.0
341
+
342
+ t = np.full(4, 1j)
343
+ x = zeros.newton(f, t, fprime=fprime)
344
+ assert_allclose(f(x), 0.)
345
+
346
+ # should work even if x0 is not complex
347
+ t = np.ones(4)
348
+ x = zeros.newton(f, t, fprime=fprime)
349
+ assert_allclose(f(x), 0.)
350
+
351
+ x = zeros.newton(f, t)
352
+ assert_allclose(f(x), 0.)
353
+
354
+ def test_array_secant_active_zero_der(self):
355
+ """test secant doesn't continue to iterate zero derivatives"""
356
+ x = zeros.newton(lambda x, *a: x*x - a[0], x0=[4.123, 5],
357
+ args=[np.array([17, 25])])
358
+ assert_allclose(x, (4.123105625617661, 5.0))
359
+
360
+ def test_array_newton_integers(self):
361
+ # test secant with float
362
+ x = zeros.newton(lambda y, z: z - y ** 2, [4.0] * 2,
363
+ args=([15.0, 17.0],))
364
+ assert_allclose(x, (3.872983346207417, 4.123105625617661))
365
+ # test integer becomes float
366
+ x = zeros.newton(lambda y, z: z - y ** 2, [4] * 2, args=([15, 17],))
367
+ assert_allclose(x, (3.872983346207417, 4.123105625617661))
368
+
369
+ @pytest.mark.thread_unsafe
370
+ def test_array_newton_zero_der_failures(self):
371
+ # test derivative zero warning
372
+ assert_warns(RuntimeWarning, zeros.newton,
373
+ lambda y: y**2 - 2, [0., 0.], lambda y: 2 * y)
374
+ # test failures and zero_der
375
+ with pytest.warns(RuntimeWarning):
376
+ results = zeros.newton(lambda y: y**2 - 2, [0., 0.],
377
+ lambda y: 2*y, full_output=True)
378
+ assert_allclose(results.root, 0)
379
+ assert results.zero_der.all()
380
+ assert not results.converged.any()
381
+
382
+ def test_newton_combined(self):
383
+ def f1(x):
384
+ return x ** 2 - 2 * x - 1
385
+ def f1_1(x):
386
+ return 2 * x - 2
387
+ def f1_2(x):
388
+ return 2.0 + 0 * x
389
+
390
+ def f1_and_p_and_pp(x):
391
+ return x**2 - 2*x-1, 2*x-2, 2.0
392
+
393
+ sol0 = root_scalar(f1, method='newton', x0=3, fprime=f1_1)
394
+ sol = root_scalar(f1_and_p_and_pp, method='newton', x0=3, fprime=True)
395
+ assert_allclose(sol0.root, sol.root, atol=1e-8)
396
+ assert_equal(2*sol.function_calls, sol0.function_calls)
397
+
398
+ sol0 = root_scalar(f1, method='halley', x0=3, fprime=f1_1, fprime2=f1_2)
399
+ sol = root_scalar(f1_and_p_and_pp, method='halley', x0=3, fprime2=True)
400
+ assert_allclose(sol0.root, sol.root, atol=1e-8)
401
+ assert_equal(3*sol.function_calls, sol0.function_calls)
402
+
403
+ def test_newton_full_output(self, capsys):
404
+ # Test the full_output capability, both when converging and not.
405
+ # Use simple polynomials, to avoid hitting platform dependencies
406
+ # (e.g., exp & trig) in number of iterations
407
+
408
+ x0 = 3
409
+ expected_counts = [(6, 7), (5, 10), (3, 9)]
410
+
411
+ for derivs in range(3):
412
+ kwargs = {'tol': 1e-6, 'full_output': True, }
413
+ for k, v in [['fprime', f1_1], ['fprime2', f1_2]][:derivs]:
414
+ kwargs[k] = v
415
+
416
+ x, r = zeros.newton(f1, x0, disp=False, **kwargs)
417
+ assert_(r.converged)
418
+ assert_equal(x, r.root)
419
+ assert_equal((r.iterations, r.function_calls), expected_counts[derivs])
420
+ if derivs == 0:
421
+ assert r.function_calls <= r.iterations + 1
422
+ else:
423
+ assert_equal(r.function_calls, (derivs + 1) * r.iterations)
424
+
425
+ # Now repeat, allowing one fewer iteration to force convergence failure
426
+ iters = r.iterations - 1
427
+ x, r = zeros.newton(f1, x0, maxiter=iters, disp=False, **kwargs)
428
+ assert_(not r.converged)
429
+ assert_equal(x, r.root)
430
+ assert_equal(r.iterations, iters)
431
+
432
+ if derivs == 1:
433
+ # Check that the correct Exception is raised and
434
+ # validate the start of the message.
435
+ msg = f'Failed to converge after {iters} iterations, value is .*'
436
+ with pytest.raises(RuntimeError, match=msg):
437
+ x, r = zeros.newton(f1, x0, maxiter=iters, disp=True, **kwargs)
438
+
439
+ @pytest.mark.thread_unsafe
440
+ def test_deriv_zero_warning(self):
441
+ def func(x):
442
+ return x ** 2 - 2.0
443
+ def dfunc(x):
444
+ return 2 * x
445
+ assert_warns(RuntimeWarning, zeros.newton, func, 0.0, dfunc, disp=False)
446
+ with pytest.raises(RuntimeError, match='Derivative was zero'):
447
+ zeros.newton(func, 0.0, dfunc)
448
+
449
+ def test_newton_does_not_modify_x0(self):
450
+ # https://github.com/scipy/scipy/issues/9964
451
+ x0 = np.array([0.1, 3])
452
+ x0_copy = x0.copy() # Copy to test for equality.
453
+ newton(np.sin, x0, np.cos)
454
+ assert_array_equal(x0, x0_copy)
455
+
456
+ def test_gh17570_defaults(self):
457
+ # Previously, when fprime was not specified, root_scalar would default
458
+ # to secant. When x1 was not specified, secant failed.
459
+ # Check that without fprime, the default is secant if x1 is specified
460
+ # and newton otherwise.
461
+ # Also confirm that `x` is always a scalar (gh-21148)
462
+ def f(x):
463
+ assert np.isscalar(x)
464
+ return f1(x)
465
+
466
+ res_newton_default = root_scalar(f, method='newton', x0=3, xtol=1e-6)
467
+ res_secant_default = root_scalar(f, method='secant', x0=3, x1=2,
468
+ xtol=1e-6)
469
+ # `newton` uses the secant method when `x1` and `x2` are specified
470
+ res_secant = newton(f, x0=3, x1=2, tol=1e-6, full_output=True)[1]
471
+
472
+ # all three found a root
473
+ assert_allclose(f(res_newton_default.root), 0, atol=1e-6)
474
+ assert res_newton_default.root.shape == tuple()
475
+ assert_allclose(f(res_secant_default.root), 0, atol=1e-6)
476
+ assert res_secant_default.root.shape == tuple()
477
+ assert_allclose(f(res_secant.root), 0, atol=1e-6)
478
+ assert res_secant.root.shape == tuple()
479
+
480
+ # Defaults are correct
481
+ assert (res_secant_default.root
482
+ == res_secant.root
483
+ != res_newton_default.iterations)
484
+ assert (res_secant_default.iterations
485
+ == res_secant_default.function_calls - 1 # true for secant
486
+ == res_secant.iterations
487
+ != res_newton_default.iterations
488
+ == res_newton_default.function_calls/2) # newton 2-point diff
489
+
490
+ @pytest.mark.parametrize('kwargs', [dict(), {'method': 'newton'}])
491
+ def test_args_gh19090(self, kwargs):
492
+ def f(x, a, b):
493
+ assert a == 3
494
+ assert b == 1
495
+ return (x ** a - b)
496
+
497
+ res = optimize.root_scalar(f, x0=3, args=(3, 1), **kwargs)
498
+ assert res.converged
499
+ assert_allclose(res.root, 1)
500
+
501
+ @pytest.mark.parametrize('method', ['secant', 'newton'])
502
+ def test_int_x0_gh19280(self, method):
503
+ # Originally, `newton` ensured that only floats were passed to the
504
+ # callable. This was inadvertently changed by gh-17669. Check that
505
+ # it has been changed back.
506
+ def f(x):
507
+ # an integer raised to a negative integer power would fail
508
+ return x**-2 - 2
509
+
510
+ res = optimize.root_scalar(f, x0=1, method=method)
511
+ assert res.converged
512
+ assert_allclose(abs(res.root), 2**-0.5)
513
+ assert res.root.dtype == np.dtype(np.float64)
514
+
515
+ def test_newton_special_parameters(self):
516
+ # give zeros.newton() some strange parameters
517
+ # and check whether an exception appears
518
+ with pytest.raises(ValueError, match="tol too small"):
519
+ zeros.newton(f1, 3, tol=-1e-6)
520
+
521
+ with pytest.raises(ValueError, match="maxiter must be greater than 0"):
522
+ zeros.newton(f1, 3, tol=1e-6, maxiter=-50)
523
+
524
+ with pytest.raises(ValueError, match="x1 and x0 must be different" ):
525
+ zeros.newton(f1, 3, x1=3)
526
+
527
+
528
+ def test_gh_5555():
529
+ root = 0.1
530
+
531
+ def f(x):
532
+ return x - root
533
+
534
+ methods = [zeros.bisect, zeros.ridder]
535
+ xtol = rtol = TOL
536
+ for method in methods:
537
+ res = method(f, -1e8, 1e7, xtol=xtol, rtol=rtol)
538
+ assert_allclose(root, res, atol=xtol, rtol=rtol,
539
+ err_msg=f'method {method.__name__}')
540
+
541
+
542
+ def test_gh_5557():
543
+ # Show that without the changes in 5557 brentq and brenth might
544
+ # only achieve a tolerance of 2*(xtol + rtol*|res|).
545
+
546
+ # f linearly interpolates (0, -0.1), (0.5, -0.1), and (1,
547
+ # 0.4). The important parts are that |f(0)| < |f(1)| (so that
548
+ # brent takes 0 as the initial guess), |f(0)| < atol (so that
549
+ # brent accepts 0 as the root), and that the exact root of f lies
550
+ # more than atol away from 0 (so that brent doesn't achieve the
551
+ # desired tolerance).
552
+ def f(x):
553
+ if x < 0.5:
554
+ return -0.1
555
+ else:
556
+ return x - 0.6
557
+
558
+ atol = 0.51
559
+ rtol = 4 * _FLOAT_EPS
560
+ methods = [zeros.brentq, zeros.brenth]
561
+ for method in methods:
562
+ res = method(f, 0, 1, xtol=atol, rtol=rtol)
563
+ assert_allclose(0.6, res, atol=atol, rtol=rtol)
564
+
565
+
566
+ def test_brent_underflow_in_root_bracketing():
567
+ # Testing if an interval [a,b] brackets a zero of a function
568
+ # by checking f(a)*f(b) < 0 is not reliable when the product
569
+ # underflows/overflows. (reported in issue# 13737)
570
+
571
+ underflow_scenario = (-450.0, -350.0, -400.0)
572
+ overflow_scenario = (350.0, 450.0, 400.0)
573
+
574
+ for a, b, root in [underflow_scenario, overflow_scenario]:
575
+ c = np.exp(root)
576
+ for method in [zeros.brenth, zeros.brentq]:
577
+ res = method(lambda x: np.exp(x)-c, a, b)
578
+ assert_allclose(root, res)
579
+
580
+
581
+ class TestRootResults:
582
+ r = zeros.RootResults(root=1.0, iterations=44, function_calls=46, flag=0,
583
+ method="newton")
584
+
585
+ def test_repr(self):
586
+ expected_repr = (" converged: True\n flag: converged"
587
+ "\n function_calls: 46\n iterations: 44\n"
588
+ " root: 1.0\n method: newton")
589
+ assert_equal(repr(self.r), expected_repr)
590
+
591
+ def test_type(self):
592
+ assert isinstance(self.r, OptimizeResult)
593
+
594
+
595
+ def test_complex_halley():
596
+ """Test Halley's works with complex roots"""
597
+ def f(x, *a):
598
+ return a[0] * x**2 + a[1] * x + a[2]
599
+
600
+ def f_1(x, *a):
601
+ return 2 * a[0] * x + a[1]
602
+
603
+ def f_2(x, *a):
604
+ retval = 2 * a[0]
605
+ try:
606
+ size = len(x)
607
+ except TypeError:
608
+ return retval
609
+ else:
610
+ return [retval] * size
611
+
612
+ z = complex(1.0, 2.0)
613
+ coeffs = (2.0, 3.0, 4.0)
614
+ y = zeros.newton(f, z, args=coeffs, fprime=f_1, fprime2=f_2, tol=1e-6)
615
+ # (-0.75000000000000078+1.1989578808281789j)
616
+ assert_allclose(f(y, *coeffs), 0, atol=1e-6)
617
+ z = [z] * 10
618
+ coeffs = (2.0, 3.0, 4.0)
619
+ y = zeros.newton(f, z, args=coeffs, fprime=f_1, fprime2=f_2, tol=1e-6)
620
+ assert_allclose(f(y, *coeffs), 0, atol=1e-6)
621
+
622
+
623
+ @pytest.mark.thread_unsafe
624
+ def test_zero_der_nz_dp(capsys):
625
+ """Test secant method with a non-zero dp, but an infinite newton step"""
626
+ # pick a symmetrical functions and choose a point on the side that with dx
627
+ # makes a secant that is a flat line with zero slope, EG: f = (x - 100)**2,
628
+ # which has a root at x = 100 and is symmetrical around the line x = 100
629
+ # we have to pick a really big number so that it is consistently true
630
+ # now find a point on each side so that the secant has a zero slope
631
+ dx = np.finfo(float).eps ** 0.33
632
+ # 100 - p0 = p1 - 100 = p0 * (1 + dx) + dx - 100
633
+ # -> 200 = p0 * (2 + dx) + dx
634
+ p0 = (200.0 - dx) / (2.0 + dx)
635
+ with suppress_warnings() as sup:
636
+ sup.filter(RuntimeWarning, "RMS of")
637
+ x = zeros.newton(lambda y: (y - 100.0)**2, x0=[p0] * 10)
638
+ assert_allclose(x, [100] * 10)
639
+ # test scalar cases too
640
+ p0 = (2.0 - 1e-4) / (2.0 + 1e-4)
641
+ with suppress_warnings() as sup:
642
+ sup.filter(RuntimeWarning, "Tolerance of")
643
+ x = zeros.newton(lambda y: (y - 1.0) ** 2, x0=p0, disp=False)
644
+ assert_allclose(x, 1)
645
+ with pytest.raises(RuntimeError, match='Tolerance of'):
646
+ x = zeros.newton(lambda y: (y - 1.0) ** 2, x0=p0, disp=True)
647
+ p0 = (-2.0 + 1e-4) / (2.0 + 1e-4)
648
+ with suppress_warnings() as sup:
649
+ sup.filter(RuntimeWarning, "Tolerance of")
650
+ x = zeros.newton(lambda y: (y + 1.0) ** 2, x0=p0, disp=False)
651
+ assert_allclose(x, -1)
652
+ with pytest.raises(RuntimeError, match='Tolerance of'):
653
+ x = zeros.newton(lambda y: (y + 1.0) ** 2, x0=p0, disp=True)
654
+
655
+
656
+ @pytest.mark.thread_unsafe
657
+ def test_array_newton_failures():
658
+ """Test that array newton fails as expected"""
659
+ # p = 0.68 # [MPa]
660
+ # dp = -0.068 * 1e6 # [Pa]
661
+ # T = 323 # [K]
662
+ diameter = 0.10 # [m]
663
+ # L = 100 # [m]
664
+ roughness = 0.00015 # [m]
665
+ rho = 988.1 # [kg/m**3]
666
+ mu = 5.4790e-04 # [Pa*s]
667
+ u = 2.488 # [m/s]
668
+ reynolds_number = rho * u * diameter / mu # Reynolds number
669
+
670
+ def colebrook_eqn(darcy_friction, re, dia):
671
+ return (1 / np.sqrt(darcy_friction) +
672
+ 2 * np.log10(roughness / 3.7 / dia +
673
+ 2.51 / re / np.sqrt(darcy_friction)))
674
+
675
+ # only some failures
676
+ with pytest.warns(RuntimeWarning):
677
+ result = zeros.newton(
678
+ colebrook_eqn, x0=[0.01, 0.2, 0.02223, 0.3], maxiter=2,
679
+ args=[reynolds_number, diameter], full_output=True
680
+ )
681
+ assert not result.converged.all()
682
+ # they all fail
683
+ with pytest.raises(RuntimeError):
684
+ result = zeros.newton(
685
+ colebrook_eqn, x0=[0.01] * 2, maxiter=2,
686
+ args=[reynolds_number, diameter], full_output=True
687
+ )
688
+
689
+
690
+ # this test should **not** raise a RuntimeWarning
691
+ def test_gh8904_zeroder_at_root_fails():
692
+ """Test that Newton or Halley don't warn if zero derivative at root"""
693
+
694
+ # a function that has a zero derivative at it's root
695
+ def f_zeroder_root(x):
696
+ return x**3 - x**2
697
+
698
+ # should work with secant
699
+ r = zeros.newton(f_zeroder_root, x0=0)
700
+ assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
701
+ # test again with array
702
+ r = zeros.newton(f_zeroder_root, x0=[0]*10)
703
+ assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
704
+
705
+ # 1st derivative
706
+ def fder(x):
707
+ return 3 * x**2 - 2 * x
708
+
709
+ # 2nd derivative
710
+ def fder2(x):
711
+ return 6*x - 2
712
+
713
+ # should work with newton and halley
714
+ r = zeros.newton(f_zeroder_root, x0=0, fprime=fder)
715
+ assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
716
+ r = zeros.newton(f_zeroder_root, x0=0, fprime=fder,
717
+ fprime2=fder2)
718
+ assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
719
+ # test again with array
720
+ r = zeros.newton(f_zeroder_root, x0=[0]*10, fprime=fder)
721
+ assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
722
+ r = zeros.newton(f_zeroder_root, x0=[0]*10, fprime=fder,
723
+ fprime2=fder2)
724
+ assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
725
+
726
+ # also test that if a root is found we do not raise RuntimeWarning even if
727
+ # the derivative is zero, EG: at x = 0.5, then fval = -0.125 and
728
+ # fder = -0.25 so the next guess is 0.5 - (-0.125/-0.5) = 0 which is the
729
+ # root, but if the solver continued with that guess, then it will calculate
730
+ # a zero derivative, so it should return the root w/o RuntimeWarning
731
+ r = zeros.newton(f_zeroder_root, x0=0.5, fprime=fder)
732
+ assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
733
+ # test again with array
734
+ r = zeros.newton(f_zeroder_root, x0=[0.5]*10, fprime=fder)
735
+ assert_allclose(r, 0, atol=zeros._xtol, rtol=zeros._rtol)
736
+ # doesn't apply to halley
737
+
738
+
739
+ def test_gh_8881():
740
+ r"""Test that Halley's method realizes that the 2nd order adjustment
741
+ is too big and drops off to the 1st order adjustment."""
742
+ n = 9
743
+
744
+ def f(x):
745
+ return power(x, 1.0/n) - power(n, 1.0/n)
746
+
747
+ def fp(x):
748
+ return power(x, (1.0-n)/n)/n
749
+
750
+ def fpp(x):
751
+ return power(x, (1.0-2*n)/n) * (1.0/n) * (1.0-n)/n
752
+
753
+ x0 = 0.1
754
+ # The root is at x=9.
755
+ # The function has positive slope, x0 < root.
756
+ # Newton succeeds in 8 iterations
757
+ rt, r = newton(f, x0, fprime=fp, full_output=True)
758
+ assert r.converged
759
+ # Before the Issue 8881/PR 8882, halley would send x in the wrong direction.
760
+ # Check that it now succeeds.
761
+ rt, r = newton(f, x0, fprime=fp, fprime2=fpp, full_output=True)
762
+ assert r.converged
763
+
764
+
765
+ def test_gh_9608_preserve_array_shape():
766
+ """
767
+ Test that shape is preserved for array inputs even if fprime or fprime2 is
768
+ scalar
769
+ """
770
+ def f(x):
771
+ return x**2
772
+
773
+ def fp(x):
774
+ return 2 * x
775
+
776
+ def fpp(x):
777
+ return 2
778
+
779
+ x0 = np.array([-2], dtype=np.float32)
780
+ rt, r = newton(f, x0, fprime=fp, fprime2=fpp, full_output=True)
781
+ assert r.converged
782
+
783
+ x0_array = np.array([-2, -3], dtype=np.float32)
784
+ # This next invocation should fail
785
+ with pytest.raises(IndexError):
786
+ result = zeros.newton(
787
+ f, x0_array, fprime=fp, fprime2=fpp, full_output=True
788
+ )
789
+
790
+ def fpp_array(x):
791
+ return np.full(np.shape(x), 2, dtype=np.float32)
792
+
793
+ result = zeros.newton(
794
+ f, x0_array, fprime=fp, fprime2=fpp_array, full_output=True
795
+ )
796
+ assert result.converged.all()
797
+
798
+
799
+ @pytest.mark.parametrize(
800
+ "maximum_iterations,flag_expected",
801
+ [(10, zeros.CONVERR), (100, zeros.CONVERGED)])
802
+ def test_gh9254_flag_if_maxiter_exceeded(maximum_iterations, flag_expected):
803
+ """
804
+ Test that if the maximum iterations is exceeded that the flag is not
805
+ converged.
806
+ """
807
+ result = zeros.brentq(
808
+ lambda x: ((1.2*x - 2.3)*x + 3.4)*x - 4.5,
809
+ -30, 30, (), 1e-6, 1e-6, maximum_iterations,
810
+ full_output=True, disp=False)
811
+ assert result[1].flag == flag_expected
812
+ if flag_expected == zeros.CONVERR:
813
+ # didn't converge because exceeded maximum iterations
814
+ assert result[1].iterations == maximum_iterations
815
+ elif flag_expected == zeros.CONVERGED:
816
+ # converged before maximum iterations
817
+ assert result[1].iterations < maximum_iterations
818
+
819
+
820
+ @pytest.mark.thread_unsafe
821
+ def test_gh9551_raise_error_if_disp_true():
822
+ """Test that if disp is true then zero derivative raises RuntimeError"""
823
+
824
+ def f(x):
825
+ return x*x + 1
826
+
827
+ def f_p(x):
828
+ return 2*x
829
+
830
+ assert_warns(RuntimeWarning, zeros.newton, f, 1.0, f_p, disp=False)
831
+ with pytest.raises(
832
+ RuntimeError,
833
+ match=r'^Derivative was zero\. Failed to converge after \d+ iterations, '
834
+ r'value is [+-]?\d*\.\d+\.$'):
835
+ zeros.newton(f, 1.0, f_p)
836
+ root = zeros.newton(f, complex(10.0, 10.0), f_p)
837
+ assert_allclose(root, complex(0.0, 1.0))
838
+
839
+
840
+ @pytest.mark.parametrize('solver_name',
841
+ ['brentq', 'brenth', 'bisect', 'ridder', 'toms748'])
842
+ def test_gh3089_8394(solver_name):
843
+ # gh-3089 and gh-8394 reported that bracketing solvers returned incorrect
844
+ # results when they encountered NaNs. Check that this is resolved.
845
+ def f(x):
846
+ return np.nan
847
+
848
+ solver = getattr(zeros, solver_name)
849
+ with pytest.raises(ValueError, match="The function value at x..."):
850
+ solver(f, 0, 1)
851
+
852
+
853
+ @pytest.mark.parametrize('method',
854
+ ['brentq', 'brenth', 'bisect', 'ridder', 'toms748'])
855
+ def test_gh18171(method):
856
+ # gh-3089 and gh-8394 reported that bracketing solvers returned incorrect
857
+ # results when they encountered NaNs. Check that `root_scalar` returns
858
+ # normally but indicates that convergence was unsuccessful. See gh-18171.
859
+ def f(x):
860
+ f._count += 1
861
+ return np.nan
862
+ f._count = 0
863
+
864
+ res = root_scalar(f, bracket=(0, 1), method=method)
865
+ assert res.converged is False
866
+ assert res.flag.startswith("The function value at x")
867
+ assert res.function_calls == f._count
868
+ assert str(res.root) in res.flag
869
+
870
+
871
+ @pytest.mark.parametrize('solver_name',
872
+ ['brentq', 'brenth', 'bisect', 'ridder', 'toms748'])
873
+ @pytest.mark.parametrize('rs_interface', [True, False])
874
+ def test_function_calls(solver_name, rs_interface):
875
+ # There do not appear to be checks that the bracketing solvers report the
876
+ # correct number of function evaluations. Check that this is the case.
877
+ solver = ((lambda f, a, b, **kwargs: root_scalar(f, bracket=(a, b)))
878
+ if rs_interface else getattr(zeros, solver_name))
879
+
880
+ def f(x):
881
+ f.calls += 1
882
+ return x**2 - 1
883
+ f.calls = 0
884
+
885
+ res = solver(f, 0, 10, full_output=True)
886
+
887
+ if rs_interface:
888
+ assert res.function_calls == f.calls
889
+ else:
890
+ assert res[1].function_calls == f.calls
891
+
892
+
893
+ @pytest.mark.thread_unsafe
894
+ def test_gh_14486_converged_false():
895
+ """Test that zero slope with secant method results in a converged=False"""
896
+ def lhs(x):
897
+ return x * np.exp(-x*x) - 0.07
898
+
899
+ with pytest.warns(RuntimeWarning, match='Tolerance of'):
900
+ res = root_scalar(lhs, method='secant', x0=-0.15, x1=1.0)
901
+ assert not res.converged
902
+ assert res.flag == 'convergence error'
903
+
904
+ with pytest.warns(RuntimeWarning, match='Tolerance of'):
905
+ res = newton(lhs, x0=-0.15, x1=1.0, disp=False, full_output=True)[1]
906
+ assert not res.converged
907
+ assert res.flag == 'convergence error'
908
+
909
+
910
+ @pytest.mark.parametrize('solver_name',
911
+ ['brentq', 'brenth', 'bisect', 'ridder', 'toms748'])
912
+ @pytest.mark.parametrize('rs_interface', [True, False])
913
+ def test_gh5584(solver_name, rs_interface):
914
+ # gh-5584 reported that an underflow can cause sign checks in the algorithm
915
+ # to fail. Check that this is resolved.
916
+ solver = ((lambda f, a, b, **kwargs: root_scalar(f, bracket=(a, b)))
917
+ if rs_interface else getattr(zeros, solver_name))
918
+
919
+ def f(x):
920
+ return 1e-200*x
921
+
922
+ # Report failure when signs are the same
923
+ with pytest.raises(ValueError, match='...must have different signs'):
924
+ solver(f, -0.5, -0.4, full_output=True)
925
+
926
+ # Solve successfully when signs are different
927
+ res = solver(f, -0.5, 0.4, full_output=True)
928
+ res = res if rs_interface else res[1]
929
+ assert res.converged
930
+ assert_allclose(res.root, 0, atol=1e-8)
931
+
932
+ # Solve successfully when one side is negative zero
933
+ res = solver(f, -0.5, float('-0.0'), full_output=True)
934
+ res = res if rs_interface else res[1]
935
+ assert res.converged
936
+ assert_allclose(res.root, 0, atol=1e-8)
937
+
938
+
939
+ def test_gh13407():
940
+ # gh-13407 reported that the message produced by `scipy.optimize.toms748`
941
+ # when `rtol < eps` is incorrect, and also that toms748 is unusual in
942
+ # accepting `rtol` as low as eps while other solvers raise at 4*eps. Check
943
+ # that the error message has been corrected and that `rtol=eps` can produce
944
+ # a lower function value than `rtol=4*eps`.
945
+ def f(x):
946
+ return x**3 - 2*x - 5
947
+
948
+ xtol = 1e-300
949
+ eps = np.finfo(float).eps
950
+ x1 = zeros.toms748(f, 1e-10, 1e10, xtol=xtol, rtol=1*eps)
951
+ f1 = f(x1)
952
+ x4 = zeros.toms748(f, 1e-10, 1e10, xtol=xtol, rtol=4*eps)
953
+ f4 = f(x4)
954
+ assert f1 < f4
955
+
956
+ # using old-style syntax to get exactly the same message
957
+ message = fr"rtol too small \({eps/2:g} < {eps:g}\)"
958
+ with pytest.raises(ValueError, match=message):
959
+ zeros.toms748(f, 1e-10, 1e10, xtol=xtol, rtol=eps/2)
960
+
961
+
962
+ def test_newton_complex_gh10103():
963
+ # gh-10103 reported a problem when `newton` is pass a Python complex x0,
964
+ # no `fprime` (secant method), and no `x1` (`x1` must be constructed).
965
+ # Check that this is resolved.
966
+ def f(z):
967
+ return z - 1
968
+ res = newton(f, 1+1j)
969
+ assert_allclose(res, 1, atol=1e-12)
970
+
971
+ res = root_scalar(f, x0=1+1j, x1=2+1.5j, method='secant')
972
+ assert_allclose(res.root, 1, atol=1e-12)
973
+
974
+
975
+ @pytest.mark.parametrize('method', all_methods)
976
+ def test_maxiter_int_check_gh10236(method):
977
+ # gh-10236 reported that the error message when `maxiter` is not an integer
978
+ # was difficult to interpret. Check that this was resolved (by gh-10907).
979
+ message = "'float' object cannot be interpreted as an integer"
980
+ with pytest.raises(TypeError, match=message):
981
+ method(f1, 0.0, 1.0, maxiter=72.45)
982
+
983
+ @pytest.mark.parametrize("method", [zeros.bisect, zeros.ridder,
984
+ zeros.brentq, zeros.brenth])
985
+ def test_bisect_special_parameter(method):
986
+ # give some zeros method strange parameters
987
+ # and check whether an exception appears
988
+ root = 0.1
989
+ args = (1e-09, 0.004, 10, 0.27456)
990
+ rtolbad = 4 * np.finfo(float).eps / 2
991
+
992
+ def f(x):
993
+ return x - root
994
+
995
+ with pytest.raises(ValueError, match="xtol too small"):
996
+ method(f, -1e8, 1e7, args=args, xtol=-1e-6, rtol=TOL)
997
+ with pytest.raises(ValueError, match="rtol too small"):
998
+ method(f, -1e8, 1e7, args=args, xtol=1e-6, rtol=rtolbad)