numpy 2.3.5__cp313-cp313-macosx_14_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.

Potentially problematic release.


This version of numpy might be problematic. Click here for more details.

Files changed (897) hide show
  1. numpy/__config__.py +170 -0
  2. numpy/__config__.pyi +102 -0
  3. numpy/__init__.cython-30.pxd +1241 -0
  4. numpy/__init__.pxd +1154 -0
  5. numpy/__init__.py +945 -0
  6. numpy/__init__.pyi +6147 -0
  7. numpy/_array_api_info.py +346 -0
  8. numpy/_array_api_info.pyi +207 -0
  9. numpy/_configtool.py +39 -0
  10. numpy/_configtool.pyi +1 -0
  11. numpy/_core/__init__.py +186 -0
  12. numpy/_core/__init__.pyi +2 -0
  13. numpy/_core/_add_newdocs.py +6967 -0
  14. numpy/_core/_add_newdocs.pyi +3 -0
  15. numpy/_core/_add_newdocs_scalars.py +390 -0
  16. numpy/_core/_add_newdocs_scalars.pyi +16 -0
  17. numpy/_core/_asarray.py +134 -0
  18. numpy/_core/_asarray.pyi +41 -0
  19. numpy/_core/_dtype.py +366 -0
  20. numpy/_core/_dtype.pyi +58 -0
  21. numpy/_core/_dtype_ctypes.py +120 -0
  22. numpy/_core/_dtype_ctypes.pyi +83 -0
  23. numpy/_core/_exceptions.py +162 -0
  24. numpy/_core/_exceptions.pyi +55 -0
  25. numpy/_core/_internal.py +958 -0
  26. numpy/_core/_internal.pyi +72 -0
  27. numpy/_core/_machar.py +355 -0
  28. numpy/_core/_machar.pyi +55 -0
  29. numpy/_core/_methods.py +255 -0
  30. numpy/_core/_methods.pyi +22 -0
  31. numpy/_core/_multiarray_tests.cpython-313-darwin.so +0 -0
  32. numpy/_core/_multiarray_umath.cpython-313-darwin.so +0 -0
  33. numpy/_core/_operand_flag_tests.cpython-313-darwin.so +0 -0
  34. numpy/_core/_rational_tests.cpython-313-darwin.so +0 -0
  35. numpy/_core/_simd.cpython-313-darwin.so +0 -0
  36. numpy/_core/_simd.pyi +25 -0
  37. numpy/_core/_string_helpers.py +100 -0
  38. numpy/_core/_string_helpers.pyi +12 -0
  39. numpy/_core/_struct_ufunc_tests.cpython-313-darwin.so +0 -0
  40. numpy/_core/_type_aliases.py +119 -0
  41. numpy/_core/_type_aliases.pyi +97 -0
  42. numpy/_core/_ufunc_config.py +491 -0
  43. numpy/_core/_ufunc_config.pyi +78 -0
  44. numpy/_core/_umath_tests.cpython-313-darwin.so +0 -0
  45. numpy/_core/arrayprint.py +1775 -0
  46. numpy/_core/arrayprint.pyi +238 -0
  47. numpy/_core/cversions.py +13 -0
  48. numpy/_core/defchararray.py +1427 -0
  49. numpy/_core/defchararray.pyi +1135 -0
  50. numpy/_core/einsumfunc.py +1498 -0
  51. numpy/_core/einsumfunc.pyi +184 -0
  52. numpy/_core/fromnumeric.py +4269 -0
  53. numpy/_core/fromnumeric.pyi +1750 -0
  54. numpy/_core/function_base.py +545 -0
  55. numpy/_core/function_base.pyi +278 -0
  56. numpy/_core/getlimits.py +748 -0
  57. numpy/_core/getlimits.pyi +3 -0
  58. numpy/_core/include/numpy/__multiarray_api.c +376 -0
  59. numpy/_core/include/numpy/__multiarray_api.h +1628 -0
  60. numpy/_core/include/numpy/__ufunc_api.c +54 -0
  61. numpy/_core/include/numpy/__ufunc_api.h +341 -0
  62. numpy/_core/include/numpy/_neighborhood_iterator_imp.h +90 -0
  63. numpy/_core/include/numpy/_numpyconfig.h +33 -0
  64. numpy/_core/include/numpy/_public_dtype_api_table.h +86 -0
  65. numpy/_core/include/numpy/arrayobject.h +7 -0
  66. numpy/_core/include/numpy/arrayscalars.h +196 -0
  67. numpy/_core/include/numpy/dtype_api.h +480 -0
  68. numpy/_core/include/numpy/halffloat.h +70 -0
  69. numpy/_core/include/numpy/ndarrayobject.h +304 -0
  70. numpy/_core/include/numpy/ndarraytypes.h +1950 -0
  71. numpy/_core/include/numpy/npy_2_compat.h +249 -0
  72. numpy/_core/include/numpy/npy_2_complexcompat.h +28 -0
  73. numpy/_core/include/numpy/npy_3kcompat.h +374 -0
  74. numpy/_core/include/numpy/npy_common.h +977 -0
  75. numpy/_core/include/numpy/npy_cpu.h +124 -0
  76. numpy/_core/include/numpy/npy_endian.h +78 -0
  77. numpy/_core/include/numpy/npy_math.h +602 -0
  78. numpy/_core/include/numpy/npy_no_deprecated_api.h +20 -0
  79. numpy/_core/include/numpy/npy_os.h +42 -0
  80. numpy/_core/include/numpy/numpyconfig.h +182 -0
  81. numpy/_core/include/numpy/random/LICENSE.txt +21 -0
  82. numpy/_core/include/numpy/random/bitgen.h +20 -0
  83. numpy/_core/include/numpy/random/distributions.h +209 -0
  84. numpy/_core/include/numpy/random/libdivide.h +2079 -0
  85. numpy/_core/include/numpy/ufuncobject.h +343 -0
  86. numpy/_core/include/numpy/utils.h +37 -0
  87. numpy/_core/lib/libnpymath.a +0 -0
  88. numpy/_core/lib/npy-pkg-config/mlib.ini +12 -0
  89. numpy/_core/lib/npy-pkg-config/npymath.ini +20 -0
  90. numpy/_core/lib/pkgconfig/numpy.pc +7 -0
  91. numpy/_core/memmap.py +363 -0
  92. numpy/_core/memmap.pyi +3 -0
  93. numpy/_core/multiarray.py +1762 -0
  94. numpy/_core/multiarray.pyi +1285 -0
  95. numpy/_core/numeric.py +2760 -0
  96. numpy/_core/numeric.pyi +882 -0
  97. numpy/_core/numerictypes.py +633 -0
  98. numpy/_core/numerictypes.pyi +197 -0
  99. numpy/_core/overrides.py +183 -0
  100. numpy/_core/overrides.pyi +48 -0
  101. numpy/_core/printoptions.py +32 -0
  102. numpy/_core/printoptions.pyi +28 -0
  103. numpy/_core/records.py +1089 -0
  104. numpy/_core/records.pyi +333 -0
  105. numpy/_core/shape_base.py +998 -0
  106. numpy/_core/shape_base.pyi +175 -0
  107. numpy/_core/strings.py +1829 -0
  108. numpy/_core/strings.pyi +511 -0
  109. numpy/_core/tests/_locales.py +72 -0
  110. numpy/_core/tests/_natype.py +205 -0
  111. numpy/_core/tests/data/astype_copy.pkl +0 -0
  112. numpy/_core/tests/data/generate_umath_validation_data.cpp +170 -0
  113. numpy/_core/tests/data/recarray_from_file.fits +0 -0
  114. numpy/_core/tests/data/umath-validation-set-README.txt +15 -0
  115. numpy/_core/tests/data/umath-validation-set-arccos.csv +1429 -0
  116. numpy/_core/tests/data/umath-validation-set-arccosh.csv +1429 -0
  117. numpy/_core/tests/data/umath-validation-set-arcsin.csv +1429 -0
  118. numpy/_core/tests/data/umath-validation-set-arcsinh.csv +1429 -0
  119. numpy/_core/tests/data/umath-validation-set-arctan.csv +1429 -0
  120. numpy/_core/tests/data/umath-validation-set-arctanh.csv +1429 -0
  121. numpy/_core/tests/data/umath-validation-set-cbrt.csv +1429 -0
  122. numpy/_core/tests/data/umath-validation-set-cos.csv +1375 -0
  123. numpy/_core/tests/data/umath-validation-set-cosh.csv +1429 -0
  124. numpy/_core/tests/data/umath-validation-set-exp.csv +412 -0
  125. numpy/_core/tests/data/umath-validation-set-exp2.csv +1429 -0
  126. numpy/_core/tests/data/umath-validation-set-expm1.csv +1429 -0
  127. numpy/_core/tests/data/umath-validation-set-log.csv +271 -0
  128. numpy/_core/tests/data/umath-validation-set-log10.csv +1629 -0
  129. numpy/_core/tests/data/umath-validation-set-log1p.csv +1429 -0
  130. numpy/_core/tests/data/umath-validation-set-log2.csv +1629 -0
  131. numpy/_core/tests/data/umath-validation-set-sin.csv +1370 -0
  132. numpy/_core/tests/data/umath-validation-set-sinh.csv +1429 -0
  133. numpy/_core/tests/data/umath-validation-set-tan.csv +1429 -0
  134. numpy/_core/tests/data/umath-validation-set-tanh.csv +1429 -0
  135. numpy/_core/tests/examples/cython/checks.pyx +373 -0
  136. numpy/_core/tests/examples/cython/meson.build +43 -0
  137. numpy/_core/tests/examples/cython/setup.py +39 -0
  138. numpy/_core/tests/examples/limited_api/limited_api1.c +17 -0
  139. numpy/_core/tests/examples/limited_api/limited_api2.pyx +11 -0
  140. numpy/_core/tests/examples/limited_api/limited_api_latest.c +19 -0
  141. numpy/_core/tests/examples/limited_api/meson.build +59 -0
  142. numpy/_core/tests/examples/limited_api/setup.py +24 -0
  143. numpy/_core/tests/test__exceptions.py +90 -0
  144. numpy/_core/tests/test_abc.py +54 -0
  145. numpy/_core/tests/test_api.py +654 -0
  146. numpy/_core/tests/test_argparse.py +92 -0
  147. numpy/_core/tests/test_array_api_info.py +113 -0
  148. numpy/_core/tests/test_array_coercion.py +911 -0
  149. numpy/_core/tests/test_array_interface.py +222 -0
  150. numpy/_core/tests/test_arraymethod.py +84 -0
  151. numpy/_core/tests/test_arrayobject.py +75 -0
  152. numpy/_core/tests/test_arrayprint.py +1328 -0
  153. numpy/_core/tests/test_casting_floatingpoint_errors.py +154 -0
  154. numpy/_core/tests/test_casting_unittests.py +817 -0
  155. numpy/_core/tests/test_conversion_utils.py +206 -0
  156. numpy/_core/tests/test_cpu_dispatcher.py +49 -0
  157. numpy/_core/tests/test_cpu_features.py +432 -0
  158. numpy/_core/tests/test_custom_dtypes.py +315 -0
  159. numpy/_core/tests/test_cython.py +351 -0
  160. numpy/_core/tests/test_datetime.py +2734 -0
  161. numpy/_core/tests/test_defchararray.py +825 -0
  162. numpy/_core/tests/test_deprecations.py +454 -0
  163. numpy/_core/tests/test_dlpack.py +190 -0
  164. numpy/_core/tests/test_dtype.py +1995 -0
  165. numpy/_core/tests/test_einsum.py +1317 -0
  166. numpy/_core/tests/test_errstate.py +131 -0
  167. numpy/_core/tests/test_extint128.py +217 -0
  168. numpy/_core/tests/test_function_base.py +503 -0
  169. numpy/_core/tests/test_getlimits.py +205 -0
  170. numpy/_core/tests/test_half.py +568 -0
  171. numpy/_core/tests/test_hashtable.py +35 -0
  172. numpy/_core/tests/test_indexerrors.py +125 -0
  173. numpy/_core/tests/test_indexing.py +1455 -0
  174. numpy/_core/tests/test_item_selection.py +167 -0
  175. numpy/_core/tests/test_limited_api.py +102 -0
  176. numpy/_core/tests/test_longdouble.py +369 -0
  177. numpy/_core/tests/test_machar.py +30 -0
  178. numpy/_core/tests/test_mem_overlap.py +930 -0
  179. numpy/_core/tests/test_mem_policy.py +452 -0
  180. numpy/_core/tests/test_memmap.py +246 -0
  181. numpy/_core/tests/test_multiarray.py +10577 -0
  182. numpy/_core/tests/test_multithreading.py +292 -0
  183. numpy/_core/tests/test_nditer.py +3498 -0
  184. numpy/_core/tests/test_nep50_promotions.py +287 -0
  185. numpy/_core/tests/test_numeric.py +4247 -0
  186. numpy/_core/tests/test_numerictypes.py +651 -0
  187. numpy/_core/tests/test_overrides.py +791 -0
  188. numpy/_core/tests/test_print.py +200 -0
  189. numpy/_core/tests/test_protocols.py +46 -0
  190. numpy/_core/tests/test_records.py +544 -0
  191. numpy/_core/tests/test_regression.py +2670 -0
  192. numpy/_core/tests/test_scalar_ctors.py +207 -0
  193. numpy/_core/tests/test_scalar_methods.py +246 -0
  194. numpy/_core/tests/test_scalarbuffer.py +153 -0
  195. numpy/_core/tests/test_scalarinherit.py +105 -0
  196. numpy/_core/tests/test_scalarmath.py +1176 -0
  197. numpy/_core/tests/test_scalarprint.py +403 -0
  198. numpy/_core/tests/test_shape_base.py +891 -0
  199. numpy/_core/tests/test_simd.py +1341 -0
  200. numpy/_core/tests/test_simd_module.py +103 -0
  201. numpy/_core/tests/test_stringdtype.py +1814 -0
  202. numpy/_core/tests/test_strings.py +1499 -0
  203. numpy/_core/tests/test_ufunc.py +3313 -0
  204. numpy/_core/tests/test_umath.py +4928 -0
  205. numpy/_core/tests/test_umath_accuracy.py +124 -0
  206. numpy/_core/tests/test_umath_complex.py +626 -0
  207. numpy/_core/tests/test_unicode.py +368 -0
  208. numpy/_core/umath.py +60 -0
  209. numpy/_core/umath.pyi +197 -0
  210. numpy/_distributor_init.py +15 -0
  211. numpy/_distributor_init.pyi +1 -0
  212. numpy/_expired_attrs_2_0.py +79 -0
  213. numpy/_expired_attrs_2_0.pyi +62 -0
  214. numpy/_globals.py +96 -0
  215. numpy/_globals.pyi +17 -0
  216. numpy/_pyinstaller/__init__.py +0 -0
  217. numpy/_pyinstaller/__init__.pyi +0 -0
  218. numpy/_pyinstaller/hook-numpy.py +36 -0
  219. numpy/_pyinstaller/hook-numpy.pyi +13 -0
  220. numpy/_pyinstaller/tests/__init__.py +16 -0
  221. numpy/_pyinstaller/tests/pyinstaller-smoke.py +32 -0
  222. numpy/_pyinstaller/tests/test_pyinstaller.py +35 -0
  223. numpy/_pytesttester.py +201 -0
  224. numpy/_pytesttester.pyi +18 -0
  225. numpy/_typing/__init__.py +148 -0
  226. numpy/_typing/_add_docstring.py +153 -0
  227. numpy/_typing/_array_like.py +106 -0
  228. numpy/_typing/_char_codes.py +213 -0
  229. numpy/_typing/_dtype_like.py +114 -0
  230. numpy/_typing/_extended_precision.py +15 -0
  231. numpy/_typing/_nbit.py +19 -0
  232. numpy/_typing/_nbit_base.py +94 -0
  233. numpy/_typing/_nbit_base.pyi +40 -0
  234. numpy/_typing/_nested_sequence.py +79 -0
  235. numpy/_typing/_scalars.py +20 -0
  236. numpy/_typing/_shape.py +8 -0
  237. numpy/_typing/_ufunc.py +7 -0
  238. numpy/_typing/_ufunc.pyi +941 -0
  239. numpy/_utils/__init__.py +95 -0
  240. numpy/_utils/__init__.pyi +30 -0
  241. numpy/_utils/_convertions.py +18 -0
  242. numpy/_utils/_convertions.pyi +4 -0
  243. numpy/_utils/_inspect.py +192 -0
  244. numpy/_utils/_inspect.pyi +71 -0
  245. numpy/_utils/_pep440.py +486 -0
  246. numpy/_utils/_pep440.pyi +121 -0
  247. numpy/char/__init__.py +2 -0
  248. numpy/char/__init__.pyi +111 -0
  249. numpy/conftest.py +258 -0
  250. numpy/core/__init__.py +33 -0
  251. numpy/core/__init__.pyi +0 -0
  252. numpy/core/_dtype.py +10 -0
  253. numpy/core/_dtype.pyi +0 -0
  254. numpy/core/_dtype_ctypes.py +10 -0
  255. numpy/core/_dtype_ctypes.pyi +0 -0
  256. numpy/core/_internal.py +27 -0
  257. numpy/core/_multiarray_umath.py +57 -0
  258. numpy/core/_utils.py +21 -0
  259. numpy/core/arrayprint.py +10 -0
  260. numpy/core/defchararray.py +10 -0
  261. numpy/core/einsumfunc.py +10 -0
  262. numpy/core/fromnumeric.py +10 -0
  263. numpy/core/function_base.py +10 -0
  264. numpy/core/getlimits.py +10 -0
  265. numpy/core/multiarray.py +25 -0
  266. numpy/core/numeric.py +12 -0
  267. numpy/core/numerictypes.py +10 -0
  268. numpy/core/overrides.py +10 -0
  269. numpy/core/overrides.pyi +7 -0
  270. numpy/core/records.py +10 -0
  271. numpy/core/shape_base.py +10 -0
  272. numpy/core/umath.py +10 -0
  273. numpy/ctypeslib/__init__.py +13 -0
  274. numpy/ctypeslib/__init__.pyi +33 -0
  275. numpy/ctypeslib/_ctypeslib.py +603 -0
  276. numpy/ctypeslib/_ctypeslib.pyi +245 -0
  277. numpy/doc/ufuncs.py +138 -0
  278. numpy/dtypes.py +41 -0
  279. numpy/dtypes.pyi +631 -0
  280. numpy/exceptions.py +247 -0
  281. numpy/exceptions.pyi +27 -0
  282. numpy/f2py/__init__.py +86 -0
  283. numpy/f2py/__init__.pyi +6 -0
  284. numpy/f2py/__main__.py +5 -0
  285. numpy/f2py/__version__.py +1 -0
  286. numpy/f2py/__version__.pyi +1 -0
  287. numpy/f2py/_backends/__init__.py +9 -0
  288. numpy/f2py/_backends/__init__.pyi +5 -0
  289. numpy/f2py/_backends/_backend.py +44 -0
  290. numpy/f2py/_backends/_backend.pyi +46 -0
  291. numpy/f2py/_backends/_distutils.py +76 -0
  292. numpy/f2py/_backends/_distutils.pyi +13 -0
  293. numpy/f2py/_backends/_meson.py +231 -0
  294. numpy/f2py/_backends/_meson.pyi +63 -0
  295. numpy/f2py/_backends/meson.build.template +55 -0
  296. numpy/f2py/_isocbind.py +62 -0
  297. numpy/f2py/_isocbind.pyi +13 -0
  298. numpy/f2py/_src_pyf.py +247 -0
  299. numpy/f2py/_src_pyf.pyi +29 -0
  300. numpy/f2py/auxfuncs.py +1004 -0
  301. numpy/f2py/auxfuncs.pyi +264 -0
  302. numpy/f2py/capi_maps.py +811 -0
  303. numpy/f2py/capi_maps.pyi +33 -0
  304. numpy/f2py/cb_rules.py +665 -0
  305. numpy/f2py/cb_rules.pyi +17 -0
  306. numpy/f2py/cfuncs.py +1563 -0
  307. numpy/f2py/cfuncs.pyi +31 -0
  308. numpy/f2py/common_rules.py +143 -0
  309. numpy/f2py/common_rules.pyi +9 -0
  310. numpy/f2py/crackfortran.py +3725 -0
  311. numpy/f2py/crackfortran.pyi +258 -0
  312. numpy/f2py/diagnose.py +149 -0
  313. numpy/f2py/diagnose.pyi +1 -0
  314. numpy/f2py/f2py2e.py +786 -0
  315. numpy/f2py/f2py2e.pyi +76 -0
  316. numpy/f2py/f90mod_rules.py +269 -0
  317. numpy/f2py/f90mod_rules.pyi +16 -0
  318. numpy/f2py/func2subr.py +329 -0
  319. numpy/f2py/func2subr.pyi +7 -0
  320. numpy/f2py/rules.py +1629 -0
  321. numpy/f2py/rules.pyi +43 -0
  322. numpy/f2py/setup.cfg +3 -0
  323. numpy/f2py/src/fortranobject.c +1436 -0
  324. numpy/f2py/src/fortranobject.h +173 -0
  325. numpy/f2py/symbolic.py +1516 -0
  326. numpy/f2py/symbolic.pyi +221 -0
  327. numpy/f2py/tests/__init__.py +16 -0
  328. numpy/f2py/tests/src/abstract_interface/foo.f90 +34 -0
  329. numpy/f2py/tests/src/abstract_interface/gh18403_mod.f90 +6 -0
  330. numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +235 -0
  331. numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +1 -0
  332. numpy/f2py/tests/src/assumed_shape/foo_free.f90 +34 -0
  333. numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +41 -0
  334. numpy/f2py/tests/src/assumed_shape/foo_use.f90 +19 -0
  335. numpy/f2py/tests/src/assumed_shape/precision.f90 +4 -0
  336. numpy/f2py/tests/src/block_docstring/foo.f +6 -0
  337. numpy/f2py/tests/src/callback/foo.f +62 -0
  338. numpy/f2py/tests/src/callback/gh17797.f90 +7 -0
  339. numpy/f2py/tests/src/callback/gh18335.f90 +17 -0
  340. numpy/f2py/tests/src/callback/gh25211.f +10 -0
  341. numpy/f2py/tests/src/callback/gh25211.pyf +18 -0
  342. numpy/f2py/tests/src/callback/gh26681.f90 +18 -0
  343. numpy/f2py/tests/src/cli/gh_22819.pyf +6 -0
  344. numpy/f2py/tests/src/cli/hi77.f +3 -0
  345. numpy/f2py/tests/src/cli/hiworld.f90 +3 -0
  346. numpy/f2py/tests/src/common/block.f +11 -0
  347. numpy/f2py/tests/src/common/gh19161.f90 +10 -0
  348. numpy/f2py/tests/src/crackfortran/accesstype.f90 +13 -0
  349. numpy/f2py/tests/src/crackfortran/common_with_division.f +17 -0
  350. numpy/f2py/tests/src/crackfortran/data_common.f +8 -0
  351. numpy/f2py/tests/src/crackfortran/data_multiplier.f +5 -0
  352. numpy/f2py/tests/src/crackfortran/data_stmts.f90 +20 -0
  353. numpy/f2py/tests/src/crackfortran/data_with_comments.f +8 -0
  354. numpy/f2py/tests/src/crackfortran/foo_deps.f90 +6 -0
  355. numpy/f2py/tests/src/crackfortran/gh15035.f +16 -0
  356. numpy/f2py/tests/src/crackfortran/gh17859.f +12 -0
  357. numpy/f2py/tests/src/crackfortran/gh22648.pyf +7 -0
  358. numpy/f2py/tests/src/crackfortran/gh23533.f +5 -0
  359. numpy/f2py/tests/src/crackfortran/gh23598.f90 +4 -0
  360. numpy/f2py/tests/src/crackfortran/gh23598Warn.f90 +11 -0
  361. numpy/f2py/tests/src/crackfortran/gh23879.f90 +20 -0
  362. numpy/f2py/tests/src/crackfortran/gh27697.f90 +12 -0
  363. numpy/f2py/tests/src/crackfortran/gh2848.f90 +13 -0
  364. numpy/f2py/tests/src/crackfortran/operators.f90 +49 -0
  365. numpy/f2py/tests/src/crackfortran/privatemod.f90 +11 -0
  366. numpy/f2py/tests/src/crackfortran/publicmod.f90 +10 -0
  367. numpy/f2py/tests/src/crackfortran/pubprivmod.f90 +10 -0
  368. numpy/f2py/tests/src/crackfortran/unicode_comment.f90 +4 -0
  369. numpy/f2py/tests/src/f2cmap/.f2py_f2cmap +1 -0
  370. numpy/f2py/tests/src/f2cmap/isoFortranEnvMap.f90 +9 -0
  371. numpy/f2py/tests/src/isocintrin/isoCtests.f90 +34 -0
  372. numpy/f2py/tests/src/kind/foo.f90 +20 -0
  373. numpy/f2py/tests/src/mixed/foo.f +5 -0
  374. numpy/f2py/tests/src/mixed/foo_fixed.f90 +8 -0
  375. numpy/f2py/tests/src/mixed/foo_free.f90 +8 -0
  376. numpy/f2py/tests/src/modules/gh25337/data.f90 +8 -0
  377. numpy/f2py/tests/src/modules/gh25337/use_data.f90 +6 -0
  378. numpy/f2py/tests/src/modules/gh26920/two_mods_with_no_public_entities.f90 +21 -0
  379. numpy/f2py/tests/src/modules/gh26920/two_mods_with_one_public_routine.f90 +21 -0
  380. numpy/f2py/tests/src/modules/module_data_docstring.f90 +12 -0
  381. numpy/f2py/tests/src/modules/use_modules.f90 +20 -0
  382. numpy/f2py/tests/src/negative_bounds/issue_20853.f90 +7 -0
  383. numpy/f2py/tests/src/parameter/constant_array.f90 +45 -0
  384. numpy/f2py/tests/src/parameter/constant_both.f90 +57 -0
  385. numpy/f2py/tests/src/parameter/constant_compound.f90 +15 -0
  386. numpy/f2py/tests/src/parameter/constant_integer.f90 +22 -0
  387. numpy/f2py/tests/src/parameter/constant_non_compound.f90 +23 -0
  388. numpy/f2py/tests/src/parameter/constant_real.f90 +23 -0
  389. numpy/f2py/tests/src/quoted_character/foo.f +14 -0
  390. numpy/f2py/tests/src/regression/AB.inc +1 -0
  391. numpy/f2py/tests/src/regression/assignOnlyModule.f90 +25 -0
  392. numpy/f2py/tests/src/regression/datonly.f90 +17 -0
  393. numpy/f2py/tests/src/regression/f77comments.f +26 -0
  394. numpy/f2py/tests/src/regression/f77fixedform.f95 +5 -0
  395. numpy/f2py/tests/src/regression/f90continuation.f90 +9 -0
  396. numpy/f2py/tests/src/regression/incfile.f90 +5 -0
  397. numpy/f2py/tests/src/regression/inout.f90 +9 -0
  398. numpy/f2py/tests/src/regression/lower_f2py_fortran.f90 +5 -0
  399. numpy/f2py/tests/src/regression/mod_derived_types.f90 +23 -0
  400. numpy/f2py/tests/src/return_character/foo77.f +45 -0
  401. numpy/f2py/tests/src/return_character/foo90.f90 +48 -0
  402. numpy/f2py/tests/src/return_complex/foo77.f +45 -0
  403. numpy/f2py/tests/src/return_complex/foo90.f90 +48 -0
  404. numpy/f2py/tests/src/return_integer/foo77.f +56 -0
  405. numpy/f2py/tests/src/return_integer/foo90.f90 +59 -0
  406. numpy/f2py/tests/src/return_logical/foo77.f +56 -0
  407. numpy/f2py/tests/src/return_logical/foo90.f90 +59 -0
  408. numpy/f2py/tests/src/return_real/foo77.f +45 -0
  409. numpy/f2py/tests/src/return_real/foo90.f90 +48 -0
  410. numpy/f2py/tests/src/routines/funcfortranname.f +5 -0
  411. numpy/f2py/tests/src/routines/funcfortranname.pyf +11 -0
  412. numpy/f2py/tests/src/routines/subrout.f +4 -0
  413. numpy/f2py/tests/src/routines/subrout.pyf +10 -0
  414. numpy/f2py/tests/src/size/foo.f90 +44 -0
  415. numpy/f2py/tests/src/string/char.f90 +29 -0
  416. numpy/f2py/tests/src/string/fixed_string.f90 +34 -0
  417. numpy/f2py/tests/src/string/gh24008.f +8 -0
  418. numpy/f2py/tests/src/string/gh24662.f90 +7 -0
  419. numpy/f2py/tests/src/string/gh25286.f90 +14 -0
  420. numpy/f2py/tests/src/string/gh25286.pyf +12 -0
  421. numpy/f2py/tests/src/string/gh25286_bc.pyf +12 -0
  422. numpy/f2py/tests/src/string/scalar_string.f90 +9 -0
  423. numpy/f2py/tests/src/string/string.f +12 -0
  424. numpy/f2py/tests/src/value_attrspec/gh21665.f90 +9 -0
  425. numpy/f2py/tests/test_abstract_interface.py +26 -0
  426. numpy/f2py/tests/test_array_from_pyobj.py +678 -0
  427. numpy/f2py/tests/test_assumed_shape.py +50 -0
  428. numpy/f2py/tests/test_block_docstring.py +20 -0
  429. numpy/f2py/tests/test_callback.py +263 -0
  430. numpy/f2py/tests/test_character.py +641 -0
  431. numpy/f2py/tests/test_common.py +23 -0
  432. numpy/f2py/tests/test_crackfortran.py +421 -0
  433. numpy/f2py/tests/test_data.py +71 -0
  434. numpy/f2py/tests/test_docs.py +64 -0
  435. numpy/f2py/tests/test_f2cmap.py +17 -0
  436. numpy/f2py/tests/test_f2py2e.py +964 -0
  437. numpy/f2py/tests/test_isoc.py +56 -0
  438. numpy/f2py/tests/test_kind.py +53 -0
  439. numpy/f2py/tests/test_mixed.py +35 -0
  440. numpy/f2py/tests/test_modules.py +83 -0
  441. numpy/f2py/tests/test_parameter.py +129 -0
  442. numpy/f2py/tests/test_pyf_src.py +43 -0
  443. numpy/f2py/tests/test_quoted_character.py +18 -0
  444. numpy/f2py/tests/test_regression.py +187 -0
  445. numpy/f2py/tests/test_return_character.py +48 -0
  446. numpy/f2py/tests/test_return_complex.py +67 -0
  447. numpy/f2py/tests/test_return_integer.py +55 -0
  448. numpy/f2py/tests/test_return_logical.py +65 -0
  449. numpy/f2py/tests/test_return_real.py +109 -0
  450. numpy/f2py/tests/test_routines.py +29 -0
  451. numpy/f2py/tests/test_semicolon_split.py +75 -0
  452. numpy/f2py/tests/test_size.py +45 -0
  453. numpy/f2py/tests/test_string.py +100 -0
  454. numpy/f2py/tests/test_symbolic.py +495 -0
  455. numpy/f2py/tests/test_value_attrspec.py +15 -0
  456. numpy/f2py/tests/util.py +442 -0
  457. numpy/f2py/use_rules.py +99 -0
  458. numpy/f2py/use_rules.pyi +9 -0
  459. numpy/fft/__init__.py +215 -0
  460. numpy/fft/__init__.pyi +43 -0
  461. numpy/fft/_helper.py +235 -0
  462. numpy/fft/_helper.pyi +45 -0
  463. numpy/fft/_pocketfft.py +1693 -0
  464. numpy/fft/_pocketfft.pyi +138 -0
  465. numpy/fft/_pocketfft_umath.cpython-313-darwin.so +0 -0
  466. numpy/fft/helper.py +17 -0
  467. numpy/fft/helper.pyi +22 -0
  468. numpy/fft/tests/__init__.py +0 -0
  469. numpy/fft/tests/test_helper.py +167 -0
  470. numpy/fft/tests/test_pocketfft.py +589 -0
  471. numpy/lib/__init__.py +97 -0
  472. numpy/lib/__init__.pyi +44 -0
  473. numpy/lib/_array_utils_impl.py +62 -0
  474. numpy/lib/_array_utils_impl.pyi +26 -0
  475. numpy/lib/_arraypad_impl.py +890 -0
  476. numpy/lib/_arraypad_impl.pyi +89 -0
  477. numpy/lib/_arraysetops_impl.py +1260 -0
  478. numpy/lib/_arraysetops_impl.pyi +468 -0
  479. numpy/lib/_arrayterator_impl.py +224 -0
  480. numpy/lib/_arrayterator_impl.pyi +46 -0
  481. numpy/lib/_datasource.py +700 -0
  482. numpy/lib/_datasource.pyi +31 -0
  483. numpy/lib/_format_impl.py +1036 -0
  484. numpy/lib/_format_impl.pyi +26 -0
  485. numpy/lib/_function_base_impl.py +5844 -0
  486. numpy/lib/_function_base_impl.pyi +1164 -0
  487. numpy/lib/_histograms_impl.py +1085 -0
  488. numpy/lib/_histograms_impl.pyi +50 -0
  489. numpy/lib/_index_tricks_impl.py +1067 -0
  490. numpy/lib/_index_tricks_impl.pyi +208 -0
  491. numpy/lib/_iotools.py +900 -0
  492. numpy/lib/_iotools.pyi +114 -0
  493. numpy/lib/_nanfunctions_impl.py +2024 -0
  494. numpy/lib/_nanfunctions_impl.pyi +52 -0
  495. numpy/lib/_npyio_impl.py +2596 -0
  496. numpy/lib/_npyio_impl.pyi +301 -0
  497. numpy/lib/_polynomial_impl.py +1465 -0
  498. numpy/lib/_polynomial_impl.pyi +318 -0
  499. numpy/lib/_scimath_impl.py +642 -0
  500. numpy/lib/_scimath_impl.pyi +93 -0
  501. numpy/lib/_shape_base_impl.py +1301 -0
  502. numpy/lib/_shape_base_impl.pyi +235 -0
  503. numpy/lib/_stride_tricks_impl.py +549 -0
  504. numpy/lib/_stride_tricks_impl.pyi +74 -0
  505. numpy/lib/_twodim_base_impl.py +1201 -0
  506. numpy/lib/_twodim_base_impl.pyi +438 -0
  507. numpy/lib/_type_check_impl.py +699 -0
  508. numpy/lib/_type_check_impl.pyi +350 -0
  509. numpy/lib/_ufunclike_impl.py +207 -0
  510. numpy/lib/_ufunclike_impl.pyi +67 -0
  511. numpy/lib/_user_array_impl.py +299 -0
  512. numpy/lib/_user_array_impl.pyi +225 -0
  513. numpy/lib/_utils_impl.py +784 -0
  514. numpy/lib/_utils_impl.pyi +10 -0
  515. numpy/lib/_version.py +154 -0
  516. numpy/lib/_version.pyi +17 -0
  517. numpy/lib/array_utils.py +7 -0
  518. numpy/lib/array_utils.pyi +12 -0
  519. numpy/lib/format.py +24 -0
  520. numpy/lib/format.pyi +66 -0
  521. numpy/lib/introspect.py +95 -0
  522. numpy/lib/introspect.pyi +3 -0
  523. numpy/lib/mixins.py +180 -0
  524. numpy/lib/mixins.pyi +77 -0
  525. numpy/lib/npyio.py +1 -0
  526. numpy/lib/npyio.pyi +9 -0
  527. numpy/lib/recfunctions.py +1681 -0
  528. numpy/lib/recfunctions.pyi +435 -0
  529. numpy/lib/scimath.py +13 -0
  530. numpy/lib/scimath.pyi +30 -0
  531. numpy/lib/stride_tricks.py +1 -0
  532. numpy/lib/stride_tricks.pyi +6 -0
  533. numpy/lib/tests/__init__.py +0 -0
  534. numpy/lib/tests/data/py2-np0-objarr.npy +0 -0
  535. numpy/lib/tests/data/py2-objarr.npy +0 -0
  536. numpy/lib/tests/data/py2-objarr.npz +0 -0
  537. numpy/lib/tests/data/py3-objarr.npy +0 -0
  538. numpy/lib/tests/data/py3-objarr.npz +0 -0
  539. numpy/lib/tests/data/python3.npy +0 -0
  540. numpy/lib/tests/data/win64python2.npy +0 -0
  541. numpy/lib/tests/test__datasource.py +352 -0
  542. numpy/lib/tests/test__iotools.py +360 -0
  543. numpy/lib/tests/test__version.py +64 -0
  544. numpy/lib/tests/test_array_utils.py +32 -0
  545. numpy/lib/tests/test_arraypad.py +1415 -0
  546. numpy/lib/tests/test_arraysetops.py +1074 -0
  547. numpy/lib/tests/test_arrayterator.py +46 -0
  548. numpy/lib/tests/test_format.py +1054 -0
  549. numpy/lib/tests/test_function_base.py +4573 -0
  550. numpy/lib/tests/test_histograms.py +855 -0
  551. numpy/lib/tests/test_index_tricks.py +573 -0
  552. numpy/lib/tests/test_io.py +2848 -0
  553. numpy/lib/tests/test_loadtxt.py +1101 -0
  554. numpy/lib/tests/test_mixins.py +215 -0
  555. numpy/lib/tests/test_nanfunctions.py +1438 -0
  556. numpy/lib/tests/test_packbits.py +376 -0
  557. numpy/lib/tests/test_polynomial.py +320 -0
  558. numpy/lib/tests/test_recfunctions.py +1052 -0
  559. numpy/lib/tests/test_regression.py +231 -0
  560. numpy/lib/tests/test_shape_base.py +813 -0
  561. numpy/lib/tests/test_stride_tricks.py +656 -0
  562. numpy/lib/tests/test_twodim_base.py +559 -0
  563. numpy/lib/tests/test_type_check.py +473 -0
  564. numpy/lib/tests/test_ufunclike.py +97 -0
  565. numpy/lib/tests/test_utils.py +80 -0
  566. numpy/lib/user_array.py +1 -0
  567. numpy/lib/user_array.pyi +1 -0
  568. numpy/linalg/__init__.py +98 -0
  569. numpy/linalg/__init__.pyi +73 -0
  570. numpy/linalg/_linalg.py +3682 -0
  571. numpy/linalg/_linalg.pyi +475 -0
  572. numpy/linalg/_umath_linalg.cpython-313-darwin.so +0 -0
  573. numpy/linalg/_umath_linalg.pyi +61 -0
  574. numpy/linalg/lapack_lite.cpython-313-darwin.so +0 -0
  575. numpy/linalg/lapack_lite.pyi +141 -0
  576. numpy/linalg/linalg.py +17 -0
  577. numpy/linalg/linalg.pyi +69 -0
  578. numpy/linalg/tests/__init__.py +0 -0
  579. numpy/linalg/tests/test_deprecations.py +20 -0
  580. numpy/linalg/tests/test_linalg.py +2443 -0
  581. numpy/linalg/tests/test_regression.py +181 -0
  582. numpy/ma/API_CHANGES.txt +135 -0
  583. numpy/ma/LICENSE +24 -0
  584. numpy/ma/README.rst +236 -0
  585. numpy/ma/__init__.py +53 -0
  586. numpy/ma/__init__.pyi +458 -0
  587. numpy/ma/core.py +8933 -0
  588. numpy/ma/core.pyi +1462 -0
  589. numpy/ma/extras.py +2344 -0
  590. numpy/ma/extras.pyi +138 -0
  591. numpy/ma/mrecords.py +773 -0
  592. numpy/ma/mrecords.pyi +96 -0
  593. numpy/ma/tests/__init__.py +0 -0
  594. numpy/ma/tests/test_arrayobject.py +40 -0
  595. numpy/ma/tests/test_core.py +5886 -0
  596. numpy/ma/tests/test_deprecations.py +87 -0
  597. numpy/ma/tests/test_extras.py +1998 -0
  598. numpy/ma/tests/test_mrecords.py +497 -0
  599. numpy/ma/tests/test_old_ma.py +942 -0
  600. numpy/ma/tests/test_regression.py +100 -0
  601. numpy/ma/tests/test_subclassing.py +469 -0
  602. numpy/ma/testutils.py +294 -0
  603. numpy/matlib.py +380 -0
  604. numpy/matlib.pyi +582 -0
  605. numpy/matrixlib/__init__.py +12 -0
  606. numpy/matrixlib/__init__.pyi +5 -0
  607. numpy/matrixlib/defmatrix.py +1119 -0
  608. numpy/matrixlib/defmatrix.pyi +17 -0
  609. numpy/matrixlib/tests/__init__.py +0 -0
  610. numpy/matrixlib/tests/test_defmatrix.py +455 -0
  611. numpy/matrixlib/tests/test_interaction.py +360 -0
  612. numpy/matrixlib/tests/test_masked_matrix.py +240 -0
  613. numpy/matrixlib/tests/test_matrix_linalg.py +105 -0
  614. numpy/matrixlib/tests/test_multiarray.py +17 -0
  615. numpy/matrixlib/tests/test_numeric.py +18 -0
  616. numpy/matrixlib/tests/test_regression.py +31 -0
  617. numpy/polynomial/__init__.py +187 -0
  618. numpy/polynomial/__init__.pyi +25 -0
  619. numpy/polynomial/_polybase.py +1191 -0
  620. numpy/polynomial/_polybase.pyi +285 -0
  621. numpy/polynomial/_polytypes.pyi +892 -0
  622. numpy/polynomial/chebyshev.py +2003 -0
  623. numpy/polynomial/chebyshev.pyi +181 -0
  624. numpy/polynomial/hermite.py +1740 -0
  625. numpy/polynomial/hermite.pyi +107 -0
  626. numpy/polynomial/hermite_e.py +1642 -0
  627. numpy/polynomial/hermite_e.pyi +107 -0
  628. numpy/polynomial/laguerre.py +1675 -0
  629. numpy/polynomial/laguerre.pyi +100 -0
  630. numpy/polynomial/legendre.py +1605 -0
  631. numpy/polynomial/legendre.pyi +100 -0
  632. numpy/polynomial/polynomial.py +1616 -0
  633. numpy/polynomial/polynomial.pyi +89 -0
  634. numpy/polynomial/polyutils.py +759 -0
  635. numpy/polynomial/polyutils.pyi +423 -0
  636. numpy/polynomial/tests/__init__.py +0 -0
  637. numpy/polynomial/tests/test_chebyshev.py +623 -0
  638. numpy/polynomial/tests/test_classes.py +618 -0
  639. numpy/polynomial/tests/test_hermite.py +558 -0
  640. numpy/polynomial/tests/test_hermite_e.py +559 -0
  641. numpy/polynomial/tests/test_laguerre.py +540 -0
  642. numpy/polynomial/tests/test_legendre.py +571 -0
  643. numpy/polynomial/tests/test_polynomial.py +669 -0
  644. numpy/polynomial/tests/test_polyutils.py +128 -0
  645. numpy/polynomial/tests/test_printing.py +555 -0
  646. numpy/polynomial/tests/test_symbol.py +217 -0
  647. numpy/py.typed +0 -0
  648. numpy/random/LICENSE.md +71 -0
  649. numpy/random/__init__.pxd +14 -0
  650. numpy/random/__init__.py +213 -0
  651. numpy/random/__init__.pyi +124 -0
  652. numpy/random/_bounded_integers.cpython-313-darwin.so +0 -0
  653. numpy/random/_bounded_integers.pxd +29 -0
  654. numpy/random/_bounded_integers.pyi +1 -0
  655. numpy/random/_common.cpython-313-darwin.so +0 -0
  656. numpy/random/_common.pxd +107 -0
  657. numpy/random/_common.pyi +16 -0
  658. numpy/random/_examples/cffi/extending.py +44 -0
  659. numpy/random/_examples/cffi/parse.py +53 -0
  660. numpy/random/_examples/cython/extending.pyx +77 -0
  661. numpy/random/_examples/cython/extending_distributions.pyx +118 -0
  662. numpy/random/_examples/cython/meson.build +53 -0
  663. numpy/random/_examples/numba/extending.py +86 -0
  664. numpy/random/_examples/numba/extending_distributions.py +67 -0
  665. numpy/random/_generator.cpython-313-darwin.so +0 -0
  666. numpy/random/_generator.pyi +861 -0
  667. numpy/random/_mt19937.cpython-313-darwin.so +0 -0
  668. numpy/random/_mt19937.pyi +25 -0
  669. numpy/random/_pcg64.cpython-313-darwin.so +0 -0
  670. numpy/random/_pcg64.pyi +44 -0
  671. numpy/random/_philox.cpython-313-darwin.so +0 -0
  672. numpy/random/_philox.pyi +39 -0
  673. numpy/random/_pickle.py +88 -0
  674. numpy/random/_pickle.pyi +43 -0
  675. numpy/random/_sfc64.cpython-313-darwin.so +0 -0
  676. numpy/random/_sfc64.pyi +28 -0
  677. numpy/random/bit_generator.cpython-313-darwin.so +0 -0
  678. numpy/random/bit_generator.pxd +35 -0
  679. numpy/random/bit_generator.pyi +124 -0
  680. numpy/random/c_distributions.pxd +119 -0
  681. numpy/random/lib/libnpyrandom.a +0 -0
  682. numpy/random/mtrand.cpython-313-darwin.so +0 -0
  683. numpy/random/mtrand.pyi +703 -0
  684. numpy/random/tests/__init__.py +0 -0
  685. numpy/random/tests/data/__init__.py +0 -0
  686. numpy/random/tests/data/generator_pcg64_np121.pkl.gz +0 -0
  687. numpy/random/tests/data/generator_pcg64_np126.pkl.gz +0 -0
  688. numpy/random/tests/data/mt19937-testset-1.csv +1001 -0
  689. numpy/random/tests/data/mt19937-testset-2.csv +1001 -0
  690. numpy/random/tests/data/pcg64-testset-1.csv +1001 -0
  691. numpy/random/tests/data/pcg64-testset-2.csv +1001 -0
  692. numpy/random/tests/data/pcg64dxsm-testset-1.csv +1001 -0
  693. numpy/random/tests/data/pcg64dxsm-testset-2.csv +1001 -0
  694. numpy/random/tests/data/philox-testset-1.csv +1001 -0
  695. numpy/random/tests/data/philox-testset-2.csv +1001 -0
  696. numpy/random/tests/data/sfc64-testset-1.csv +1001 -0
  697. numpy/random/tests/data/sfc64-testset-2.csv +1001 -0
  698. numpy/random/tests/data/sfc64_np126.pkl.gz +0 -0
  699. numpy/random/tests/test_direct.py +592 -0
  700. numpy/random/tests/test_extending.py +127 -0
  701. numpy/random/tests/test_generator_mt19937.py +2809 -0
  702. numpy/random/tests/test_generator_mt19937_regressions.py +207 -0
  703. numpy/random/tests/test_random.py +1757 -0
  704. numpy/random/tests/test_randomstate.py +2130 -0
  705. numpy/random/tests/test_randomstate_regression.py +217 -0
  706. numpy/random/tests/test_regression.py +152 -0
  707. numpy/random/tests/test_seed_sequence.py +79 -0
  708. numpy/random/tests/test_smoke.py +819 -0
  709. numpy/rec/__init__.py +2 -0
  710. numpy/rec/__init__.pyi +23 -0
  711. numpy/strings/__init__.py +2 -0
  712. numpy/strings/__init__.pyi +97 -0
  713. numpy/testing/__init__.py +22 -0
  714. numpy/testing/__init__.pyi +102 -0
  715. numpy/testing/_private/__init__.py +0 -0
  716. numpy/testing/_private/__init__.pyi +0 -0
  717. numpy/testing/_private/extbuild.py +250 -0
  718. numpy/testing/_private/extbuild.pyi +25 -0
  719. numpy/testing/_private/utils.py +2752 -0
  720. numpy/testing/_private/utils.pyi +499 -0
  721. numpy/testing/overrides.py +84 -0
  722. numpy/testing/overrides.pyi +11 -0
  723. numpy/testing/print_coercion_tables.py +207 -0
  724. numpy/testing/print_coercion_tables.pyi +27 -0
  725. numpy/testing/tests/__init__.py +0 -0
  726. numpy/testing/tests/test_utils.py +1917 -0
  727. numpy/tests/__init__.py +0 -0
  728. numpy/tests/test__all__.py +10 -0
  729. numpy/tests/test_configtool.py +48 -0
  730. numpy/tests/test_ctypeslib.py +377 -0
  731. numpy/tests/test_lazyloading.py +38 -0
  732. numpy/tests/test_matlib.py +59 -0
  733. numpy/tests/test_numpy_config.py +46 -0
  734. numpy/tests/test_numpy_version.py +54 -0
  735. numpy/tests/test_public_api.py +806 -0
  736. numpy/tests/test_reloading.py +74 -0
  737. numpy/tests/test_scripts.py +49 -0
  738. numpy/tests/test_warnings.py +78 -0
  739. numpy/typing/__init__.py +201 -0
  740. numpy/typing/mypy_plugin.py +195 -0
  741. numpy/typing/tests/__init__.py +0 -0
  742. numpy/typing/tests/data/fail/arithmetic.pyi +126 -0
  743. numpy/typing/tests/data/fail/array_constructors.pyi +34 -0
  744. numpy/typing/tests/data/fail/array_like.pyi +15 -0
  745. numpy/typing/tests/data/fail/array_pad.pyi +6 -0
  746. numpy/typing/tests/data/fail/arrayprint.pyi +16 -0
  747. numpy/typing/tests/data/fail/arrayterator.pyi +14 -0
  748. numpy/typing/tests/data/fail/bitwise_ops.pyi +17 -0
  749. numpy/typing/tests/data/fail/char.pyi +65 -0
  750. numpy/typing/tests/data/fail/chararray.pyi +62 -0
  751. numpy/typing/tests/data/fail/comparisons.pyi +27 -0
  752. numpy/typing/tests/data/fail/constants.pyi +3 -0
  753. numpy/typing/tests/data/fail/datasource.pyi +15 -0
  754. numpy/typing/tests/data/fail/dtype.pyi +17 -0
  755. numpy/typing/tests/data/fail/einsumfunc.pyi +12 -0
  756. numpy/typing/tests/data/fail/flatiter.pyi +20 -0
  757. numpy/typing/tests/data/fail/fromnumeric.pyi +148 -0
  758. numpy/typing/tests/data/fail/histograms.pyi +12 -0
  759. numpy/typing/tests/data/fail/index_tricks.pyi +14 -0
  760. numpy/typing/tests/data/fail/lib_function_base.pyi +62 -0
  761. numpy/typing/tests/data/fail/lib_polynomial.pyi +29 -0
  762. numpy/typing/tests/data/fail/lib_utils.pyi +3 -0
  763. numpy/typing/tests/data/fail/lib_version.pyi +6 -0
  764. numpy/typing/tests/data/fail/linalg.pyi +48 -0
  765. numpy/typing/tests/data/fail/ma.pyi +143 -0
  766. numpy/typing/tests/data/fail/memmap.pyi +5 -0
  767. numpy/typing/tests/data/fail/modules.pyi +17 -0
  768. numpy/typing/tests/data/fail/multiarray.pyi +52 -0
  769. numpy/typing/tests/data/fail/ndarray.pyi +11 -0
  770. numpy/typing/tests/data/fail/ndarray_misc.pyi +36 -0
  771. numpy/typing/tests/data/fail/nditer.pyi +8 -0
  772. numpy/typing/tests/data/fail/nested_sequence.pyi +16 -0
  773. numpy/typing/tests/data/fail/npyio.pyi +24 -0
  774. numpy/typing/tests/data/fail/numerictypes.pyi +5 -0
  775. numpy/typing/tests/data/fail/random.pyi +62 -0
  776. numpy/typing/tests/data/fail/rec.pyi +17 -0
  777. numpy/typing/tests/data/fail/scalars.pyi +87 -0
  778. numpy/typing/tests/data/fail/shape.pyi +6 -0
  779. numpy/typing/tests/data/fail/shape_base.pyi +8 -0
  780. numpy/typing/tests/data/fail/stride_tricks.pyi +9 -0
  781. numpy/typing/tests/data/fail/strings.pyi +52 -0
  782. numpy/typing/tests/data/fail/testing.pyi +28 -0
  783. numpy/typing/tests/data/fail/twodim_base.pyi +32 -0
  784. numpy/typing/tests/data/fail/type_check.pyi +13 -0
  785. numpy/typing/tests/data/fail/ufunc_config.pyi +21 -0
  786. numpy/typing/tests/data/fail/ufunclike.pyi +21 -0
  787. numpy/typing/tests/data/fail/ufuncs.pyi +17 -0
  788. numpy/typing/tests/data/fail/warnings_and_errors.pyi +5 -0
  789. numpy/typing/tests/data/misc/extended_precision.pyi +9 -0
  790. numpy/typing/tests/data/mypy.ini +9 -0
  791. numpy/typing/tests/data/pass/arithmetic.py +612 -0
  792. numpy/typing/tests/data/pass/array_constructors.py +137 -0
  793. numpy/typing/tests/data/pass/array_like.py +43 -0
  794. numpy/typing/tests/data/pass/arrayprint.py +37 -0
  795. numpy/typing/tests/data/pass/arrayterator.py +27 -0
  796. numpy/typing/tests/data/pass/bitwise_ops.py +131 -0
  797. numpy/typing/tests/data/pass/comparisons.py +315 -0
  798. numpy/typing/tests/data/pass/dtype.py +57 -0
  799. numpy/typing/tests/data/pass/einsumfunc.py +36 -0
  800. numpy/typing/tests/data/pass/flatiter.py +19 -0
  801. numpy/typing/tests/data/pass/fromnumeric.py +272 -0
  802. numpy/typing/tests/data/pass/index_tricks.py +60 -0
  803. numpy/typing/tests/data/pass/lib_user_array.py +22 -0
  804. numpy/typing/tests/data/pass/lib_utils.py +19 -0
  805. numpy/typing/tests/data/pass/lib_version.py +18 -0
  806. numpy/typing/tests/data/pass/literal.py +51 -0
  807. numpy/typing/tests/data/pass/ma.py +174 -0
  808. numpy/typing/tests/data/pass/mod.py +149 -0
  809. numpy/typing/tests/data/pass/modules.py +45 -0
  810. numpy/typing/tests/data/pass/multiarray.py +76 -0
  811. numpy/typing/tests/data/pass/ndarray_conversion.py +87 -0
  812. numpy/typing/tests/data/pass/ndarray_misc.py +203 -0
  813. numpy/typing/tests/data/pass/ndarray_shape_manipulation.py +47 -0
  814. numpy/typing/tests/data/pass/nditer.py +4 -0
  815. numpy/typing/tests/data/pass/numeric.py +95 -0
  816. numpy/typing/tests/data/pass/numerictypes.py +17 -0
  817. numpy/typing/tests/data/pass/random.py +1497 -0
  818. numpy/typing/tests/data/pass/recfunctions.py +161 -0
  819. numpy/typing/tests/data/pass/scalars.py +248 -0
  820. numpy/typing/tests/data/pass/shape.py +19 -0
  821. numpy/typing/tests/data/pass/simple.py +168 -0
  822. numpy/typing/tests/data/pass/simple_py3.py +6 -0
  823. numpy/typing/tests/data/pass/ufunc_config.py +64 -0
  824. numpy/typing/tests/data/pass/ufunclike.py +47 -0
  825. numpy/typing/tests/data/pass/ufuncs.py +16 -0
  826. numpy/typing/tests/data/pass/warnings_and_errors.py +6 -0
  827. numpy/typing/tests/data/reveal/arithmetic.pyi +720 -0
  828. numpy/typing/tests/data/reveal/array_api_info.pyi +70 -0
  829. numpy/typing/tests/data/reveal/array_constructors.pyi +249 -0
  830. numpy/typing/tests/data/reveal/arraypad.pyi +22 -0
  831. numpy/typing/tests/data/reveal/arrayprint.pyi +25 -0
  832. numpy/typing/tests/data/reveal/arraysetops.pyi +74 -0
  833. numpy/typing/tests/data/reveal/arrayterator.pyi +27 -0
  834. numpy/typing/tests/data/reveal/bitwise_ops.pyi +167 -0
  835. numpy/typing/tests/data/reveal/char.pyi +224 -0
  836. numpy/typing/tests/data/reveal/chararray.pyi +137 -0
  837. numpy/typing/tests/data/reveal/comparisons.pyi +264 -0
  838. numpy/typing/tests/data/reveal/constants.pyi +14 -0
  839. numpy/typing/tests/data/reveal/ctypeslib.pyi +81 -0
  840. numpy/typing/tests/data/reveal/datasource.pyi +23 -0
  841. numpy/typing/tests/data/reveal/dtype.pyi +136 -0
  842. numpy/typing/tests/data/reveal/einsumfunc.pyi +39 -0
  843. numpy/typing/tests/data/reveal/emath.pyi +54 -0
  844. numpy/typing/tests/data/reveal/fft.pyi +37 -0
  845. numpy/typing/tests/data/reveal/flatiter.pyi +47 -0
  846. numpy/typing/tests/data/reveal/fromnumeric.pyi +347 -0
  847. numpy/typing/tests/data/reveal/getlimits.pyi +51 -0
  848. numpy/typing/tests/data/reveal/histograms.pyi +25 -0
  849. numpy/typing/tests/data/reveal/index_tricks.pyi +70 -0
  850. numpy/typing/tests/data/reveal/lib_function_base.pyi +213 -0
  851. numpy/typing/tests/data/reveal/lib_polynomial.pyi +144 -0
  852. numpy/typing/tests/data/reveal/lib_utils.pyi +17 -0
  853. numpy/typing/tests/data/reveal/lib_version.pyi +20 -0
  854. numpy/typing/tests/data/reveal/linalg.pyi +132 -0
  855. numpy/typing/tests/data/reveal/ma.pyi +369 -0
  856. numpy/typing/tests/data/reveal/matrix.pyi +73 -0
  857. numpy/typing/tests/data/reveal/memmap.pyi +19 -0
  858. numpy/typing/tests/data/reveal/mod.pyi +179 -0
  859. numpy/typing/tests/data/reveal/modules.pyi +51 -0
  860. numpy/typing/tests/data/reveal/multiarray.pyi +194 -0
  861. numpy/typing/tests/data/reveal/nbit_base_example.pyi +21 -0
  862. numpy/typing/tests/data/reveal/ndarray_assignability.pyi +77 -0
  863. numpy/typing/tests/data/reveal/ndarray_conversion.pyi +85 -0
  864. numpy/typing/tests/data/reveal/ndarray_misc.pyi +247 -0
  865. numpy/typing/tests/data/reveal/ndarray_shape_manipulation.pyi +39 -0
  866. numpy/typing/tests/data/reveal/nditer.pyi +49 -0
  867. numpy/typing/tests/data/reveal/nested_sequence.pyi +25 -0
  868. numpy/typing/tests/data/reveal/npyio.pyi +83 -0
  869. numpy/typing/tests/data/reveal/numeric.pyi +134 -0
  870. numpy/typing/tests/data/reveal/numerictypes.pyi +16 -0
  871. numpy/typing/tests/data/reveal/polynomial_polybase.pyi +220 -0
  872. numpy/typing/tests/data/reveal/polynomial_polyutils.pyi +219 -0
  873. numpy/typing/tests/data/reveal/polynomial_series.pyi +138 -0
  874. numpy/typing/tests/data/reveal/random.pyi +1546 -0
  875. numpy/typing/tests/data/reveal/rec.pyi +171 -0
  876. numpy/typing/tests/data/reveal/scalars.pyi +191 -0
  877. numpy/typing/tests/data/reveal/shape.pyi +13 -0
  878. numpy/typing/tests/data/reveal/shape_base.pyi +52 -0
  879. numpy/typing/tests/data/reveal/stride_tricks.pyi +27 -0
  880. numpy/typing/tests/data/reveal/strings.pyi +196 -0
  881. numpy/typing/tests/data/reveal/testing.pyi +198 -0
  882. numpy/typing/tests/data/reveal/twodim_base.pyi +145 -0
  883. numpy/typing/tests/data/reveal/type_check.pyi +67 -0
  884. numpy/typing/tests/data/reveal/ufunc_config.pyi +30 -0
  885. numpy/typing/tests/data/reveal/ufunclike.pyi +31 -0
  886. numpy/typing/tests/data/reveal/ufuncs.pyi +123 -0
  887. numpy/typing/tests/data/reveal/warnings_and_errors.pyi +11 -0
  888. numpy/typing/tests/test_isfile.py +32 -0
  889. numpy/typing/tests/test_runtime.py +102 -0
  890. numpy/typing/tests/test_typing.py +205 -0
  891. numpy/version.py +11 -0
  892. numpy/version.pyi +18 -0
  893. numpy-2.3.5.dist-info/LICENSE.txt +971 -0
  894. numpy-2.3.5.dist-info/METADATA +1093 -0
  895. numpy-2.3.5.dist-info/RECORD +897 -0
  896. numpy-2.3.5.dist-info/WHEEL +6 -0
  897. numpy-2.3.5.dist-info/entry_points.txt +13 -0
@@ -0,0 +1,748 @@
1
+ """Machine limits for Float32 and Float64 and (long double) if available...
2
+
3
+ """
4
+ __all__ = ['finfo', 'iinfo']
5
+
6
+ import types
7
+ import warnings
8
+
9
+ from numpy._utils import set_module
10
+
11
+ from . import numeric
12
+ from . import numerictypes as ntypes
13
+ from ._machar import MachAr
14
+ from .numeric import array, inf, nan
15
+ from .umath import exp2, isnan, log10, nextafter
16
+
17
+
18
+ def _fr0(a):
19
+ """fix rank-0 --> rank-1"""
20
+ if a.ndim == 0:
21
+ a = a.copy()
22
+ a.shape = (1,)
23
+ return a
24
+
25
+
26
+ def _fr1(a):
27
+ """fix rank > 0 --> rank-0"""
28
+ if a.size == 1:
29
+ a = a.copy()
30
+ a.shape = ()
31
+ return a
32
+
33
+
34
+ class MachArLike:
35
+ """ Object to simulate MachAr instance """
36
+ def __init__(self, ftype, *, eps, epsneg, huge, tiny,
37
+ ibeta, smallest_subnormal=None, **kwargs):
38
+ self.params = _MACHAR_PARAMS[ftype]
39
+ self.ftype = ftype
40
+ self.title = self.params['title']
41
+ # Parameter types same as for discovered MachAr object.
42
+ if not smallest_subnormal:
43
+ self._smallest_subnormal = nextafter(
44
+ self.ftype(0), self.ftype(1), dtype=self.ftype)
45
+ else:
46
+ self._smallest_subnormal = smallest_subnormal
47
+ self.epsilon = self.eps = self._float_to_float(eps)
48
+ self.epsneg = self._float_to_float(epsneg)
49
+ self.xmax = self.huge = self._float_to_float(huge)
50
+ self.xmin = self._float_to_float(tiny)
51
+ self.smallest_normal = self.tiny = self._float_to_float(tiny)
52
+ self.ibeta = self.params['itype'](ibeta)
53
+ self.__dict__.update(kwargs)
54
+ self.precision = int(-log10(self.eps))
55
+ self.resolution = self._float_to_float(
56
+ self._float_conv(10) ** (-self.precision))
57
+ self._str_eps = self._float_to_str(self.eps)
58
+ self._str_epsneg = self._float_to_str(self.epsneg)
59
+ self._str_xmin = self._float_to_str(self.xmin)
60
+ self._str_xmax = self._float_to_str(self.xmax)
61
+ self._str_resolution = self._float_to_str(self.resolution)
62
+ self._str_smallest_normal = self._float_to_str(self.xmin)
63
+
64
+ @property
65
+ def smallest_subnormal(self):
66
+ """Return the value for the smallest subnormal.
67
+
68
+ Returns
69
+ -------
70
+ smallest_subnormal : float
71
+ value for the smallest subnormal.
72
+
73
+ Warns
74
+ -----
75
+ UserWarning
76
+ If the calculated value for the smallest subnormal is zero.
77
+ """
78
+ # Check that the calculated value is not zero, in case it raises a
79
+ # warning.
80
+ value = self._smallest_subnormal
81
+ if self.ftype(0) == value:
82
+ warnings.warn(
83
+ f'The value of the smallest subnormal for {self.ftype} type is zero.',
84
+ UserWarning, stacklevel=2)
85
+
86
+ return self._float_to_float(value)
87
+
88
+ @property
89
+ def _str_smallest_subnormal(self):
90
+ """Return the string representation of the smallest subnormal."""
91
+ return self._float_to_str(self.smallest_subnormal)
92
+
93
+ def _float_to_float(self, value):
94
+ """Converts float to float.
95
+
96
+ Parameters
97
+ ----------
98
+ value : float
99
+ value to be converted.
100
+ """
101
+ return _fr1(self._float_conv(value))
102
+
103
+ def _float_conv(self, value):
104
+ """Converts float to conv.
105
+
106
+ Parameters
107
+ ----------
108
+ value : float
109
+ value to be converted.
110
+ """
111
+ return array([value], self.ftype)
112
+
113
+ def _float_to_str(self, value):
114
+ """Converts float to str.
115
+
116
+ Parameters
117
+ ----------
118
+ value : float
119
+ value to be converted.
120
+ """
121
+ return self.params['fmt'] % array(_fr0(value)[0], self.ftype)
122
+
123
+
124
+ _convert_to_float = {
125
+ ntypes.csingle: ntypes.single,
126
+ ntypes.complex128: ntypes.float64,
127
+ ntypes.clongdouble: ntypes.longdouble
128
+ }
129
+
130
+ # Parameters for creating MachAr / MachAr-like objects
131
+ _title_fmt = 'numpy {} precision floating point number'
132
+ _MACHAR_PARAMS = {
133
+ ntypes.double: {
134
+ 'itype': ntypes.int64,
135
+ 'fmt': '%24.16e',
136
+ 'title': _title_fmt.format('double')},
137
+ ntypes.single: {
138
+ 'itype': ntypes.int32,
139
+ 'fmt': '%15.7e',
140
+ 'title': _title_fmt.format('single')},
141
+ ntypes.longdouble: {
142
+ 'itype': ntypes.longlong,
143
+ 'fmt': '%s',
144
+ 'title': _title_fmt.format('long double')},
145
+ ntypes.half: {
146
+ 'itype': ntypes.int16,
147
+ 'fmt': '%12.5e',
148
+ 'title': _title_fmt.format('half')}}
149
+
150
+ # Key to identify the floating point type. Key is result of
151
+ #
152
+ # ftype = np.longdouble # or float64, float32, etc.
153
+ # v = (ftype(-1.0) / ftype(10.0))
154
+ # v.view(v.dtype.newbyteorder('<')).tobytes()
155
+ #
156
+ # Uses division to work around deficiencies in strtold on some platforms.
157
+ # See:
158
+ # https://perl5.git.perl.org/perl.git/blob/3118d7d684b56cbeb702af874f4326683c45f045:/Configure
159
+
160
+ _KNOWN_TYPES = {}
161
+ def _register_type(machar, bytepat):
162
+ _KNOWN_TYPES[bytepat] = machar
163
+
164
+
165
+ _float_ma = {}
166
+
167
+
168
+ def _register_known_types():
169
+ # Known parameters for float16
170
+ # See docstring of MachAr class for description of parameters.
171
+ f16 = ntypes.float16
172
+ float16_ma = MachArLike(f16,
173
+ machep=-10,
174
+ negep=-11,
175
+ minexp=-14,
176
+ maxexp=16,
177
+ it=10,
178
+ iexp=5,
179
+ ibeta=2,
180
+ irnd=5,
181
+ ngrd=0,
182
+ eps=exp2(f16(-10)),
183
+ epsneg=exp2(f16(-11)),
184
+ huge=f16(65504),
185
+ tiny=f16(2 ** -14))
186
+ _register_type(float16_ma, b'f\xae')
187
+ _float_ma[16] = float16_ma
188
+
189
+ # Known parameters for float32
190
+ f32 = ntypes.float32
191
+ float32_ma = MachArLike(f32,
192
+ machep=-23,
193
+ negep=-24,
194
+ minexp=-126,
195
+ maxexp=128,
196
+ it=23,
197
+ iexp=8,
198
+ ibeta=2,
199
+ irnd=5,
200
+ ngrd=0,
201
+ eps=exp2(f32(-23)),
202
+ epsneg=exp2(f32(-24)),
203
+ huge=f32((1 - 2 ** -24) * 2**128),
204
+ tiny=exp2(f32(-126)))
205
+ _register_type(float32_ma, b'\xcd\xcc\xcc\xbd')
206
+ _float_ma[32] = float32_ma
207
+
208
+ # Known parameters for float64
209
+ f64 = ntypes.float64
210
+ epsneg_f64 = 2.0 ** -53.0
211
+ tiny_f64 = 2.0 ** -1022.0
212
+ float64_ma = MachArLike(f64,
213
+ machep=-52,
214
+ negep=-53,
215
+ minexp=-1022,
216
+ maxexp=1024,
217
+ it=52,
218
+ iexp=11,
219
+ ibeta=2,
220
+ irnd=5,
221
+ ngrd=0,
222
+ eps=2.0 ** -52.0,
223
+ epsneg=epsneg_f64,
224
+ huge=(1.0 - epsneg_f64) / tiny_f64 * f64(4),
225
+ tiny=tiny_f64)
226
+ _register_type(float64_ma, b'\x9a\x99\x99\x99\x99\x99\xb9\xbf')
227
+ _float_ma[64] = float64_ma
228
+
229
+ # Known parameters for IEEE 754 128-bit binary float
230
+ ld = ntypes.longdouble
231
+ epsneg_f128 = exp2(ld(-113))
232
+ tiny_f128 = exp2(ld(-16382))
233
+ # Ignore runtime error when this is not f128
234
+ with numeric.errstate(all='ignore'):
235
+ huge_f128 = (ld(1) - epsneg_f128) / tiny_f128 * ld(4)
236
+ float128_ma = MachArLike(ld,
237
+ machep=-112,
238
+ negep=-113,
239
+ minexp=-16382,
240
+ maxexp=16384,
241
+ it=112,
242
+ iexp=15,
243
+ ibeta=2,
244
+ irnd=5,
245
+ ngrd=0,
246
+ eps=exp2(ld(-112)),
247
+ epsneg=epsneg_f128,
248
+ huge=huge_f128,
249
+ tiny=tiny_f128)
250
+ # IEEE 754 128-bit binary float
251
+ _register_type(float128_ma,
252
+ b'\x9a\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\xfb\xbf')
253
+ _float_ma[128] = float128_ma
254
+
255
+ # Known parameters for float80 (Intel 80-bit extended precision)
256
+ epsneg_f80 = exp2(ld(-64))
257
+ tiny_f80 = exp2(ld(-16382))
258
+ # Ignore runtime error when this is not f80
259
+ with numeric.errstate(all='ignore'):
260
+ huge_f80 = (ld(1) - epsneg_f80) / tiny_f80 * ld(4)
261
+ float80_ma = MachArLike(ld,
262
+ machep=-63,
263
+ negep=-64,
264
+ minexp=-16382,
265
+ maxexp=16384,
266
+ it=63,
267
+ iexp=15,
268
+ ibeta=2,
269
+ irnd=5,
270
+ ngrd=0,
271
+ eps=exp2(ld(-63)),
272
+ epsneg=epsneg_f80,
273
+ huge=huge_f80,
274
+ tiny=tiny_f80)
275
+ # float80, first 10 bytes containing actual storage
276
+ _register_type(float80_ma, b'\xcd\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xfb\xbf')
277
+ _float_ma[80] = float80_ma
278
+
279
+ # Guessed / known parameters for double double; see:
280
+ # https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format#Double-double_arithmetic
281
+ # These numbers have the same exponent range as float64, but extended
282
+ # number of digits in the significand.
283
+ huge_dd = nextafter(ld(inf), ld(0), dtype=ld)
284
+ # As the smallest_normal in double double is so hard to calculate we set
285
+ # it to NaN.
286
+ smallest_normal_dd = nan
287
+ # Leave the same value for the smallest subnormal as double
288
+ smallest_subnormal_dd = ld(nextafter(0., 1.))
289
+ float_dd_ma = MachArLike(ld,
290
+ machep=-105,
291
+ negep=-106,
292
+ minexp=-1022,
293
+ maxexp=1024,
294
+ it=105,
295
+ iexp=11,
296
+ ibeta=2,
297
+ irnd=5,
298
+ ngrd=0,
299
+ eps=exp2(ld(-105)),
300
+ epsneg=exp2(ld(-106)),
301
+ huge=huge_dd,
302
+ tiny=smallest_normal_dd,
303
+ smallest_subnormal=smallest_subnormal_dd)
304
+ # double double; low, high order (e.g. PPC 64)
305
+ _register_type(float_dd_ma,
306
+ b'\x9a\x99\x99\x99\x99\x99Y<\x9a\x99\x99\x99\x99\x99\xb9\xbf')
307
+ # double double; high, low order (e.g. PPC 64 le)
308
+ _register_type(float_dd_ma,
309
+ b'\x9a\x99\x99\x99\x99\x99\xb9\xbf\x9a\x99\x99\x99\x99\x99Y<')
310
+ _float_ma['dd'] = float_dd_ma
311
+
312
+
313
+ def _get_machar(ftype):
314
+ """ Get MachAr instance or MachAr-like instance
315
+
316
+ Get parameters for floating point type, by first trying signatures of
317
+ various known floating point types, then, if none match, attempting to
318
+ identify parameters by analysis.
319
+
320
+ Parameters
321
+ ----------
322
+ ftype : class
323
+ Numpy floating point type class (e.g. ``np.float64``)
324
+
325
+ Returns
326
+ -------
327
+ ma_like : instance of :class:`MachAr` or :class:`MachArLike`
328
+ Object giving floating point parameters for `ftype`.
329
+
330
+ Warns
331
+ -----
332
+ UserWarning
333
+ If the binary signature of the float type is not in the dictionary of
334
+ known float types.
335
+ """
336
+ params = _MACHAR_PARAMS.get(ftype)
337
+ if params is None:
338
+ raise ValueError(repr(ftype))
339
+ # Detect known / suspected types
340
+ # ftype(-1.0) / ftype(10.0) is better than ftype('-0.1') because stold
341
+ # may be deficient
342
+ key = (ftype(-1.0) / ftype(10.))
343
+ key = key.view(key.dtype.newbyteorder("<")).tobytes()
344
+ ma_like = None
345
+ if ftype == ntypes.longdouble:
346
+ # Could be 80 bit == 10 byte extended precision, where last bytes can
347
+ # be random garbage.
348
+ # Comparing first 10 bytes to pattern first to avoid branching on the
349
+ # random garbage.
350
+ ma_like = _KNOWN_TYPES.get(key[:10])
351
+ if ma_like is None:
352
+ # see if the full key is known.
353
+ ma_like = _KNOWN_TYPES.get(key)
354
+ if ma_like is None and len(key) == 16:
355
+ # machine limits could be f80 masquerading as np.float128,
356
+ # find all keys with length 16 and make new dict, but make the keys
357
+ # only 10 bytes long, the last bytes can be random garbage
358
+ _kt = {k[:10]: v for k, v in _KNOWN_TYPES.items() if len(k) == 16}
359
+ ma_like = _kt.get(key[:10])
360
+ if ma_like is not None:
361
+ return ma_like
362
+ # Fall back to parameter discovery
363
+ warnings.warn(
364
+ f'Signature {key} for {ftype} does not match any known type: '
365
+ 'falling back to type probe function.\n'
366
+ 'This warnings indicates broken support for the dtype!',
367
+ UserWarning, stacklevel=2)
368
+ return _discovered_machar(ftype)
369
+
370
+
371
+ def _discovered_machar(ftype):
372
+ """ Create MachAr instance with found information on float types
373
+
374
+ TODO: MachAr should be retired completely ideally. We currently only
375
+ ever use it system with broken longdouble (valgrind, WSL).
376
+ """
377
+ params = _MACHAR_PARAMS[ftype]
378
+ return MachAr(lambda v: array([v], ftype),
379
+ lambda v: _fr0(v.astype(params['itype']))[0],
380
+ lambda v: array(_fr0(v)[0], ftype),
381
+ lambda v: params['fmt'] % array(_fr0(v)[0], ftype),
382
+ params['title'])
383
+
384
+
385
+ @set_module('numpy')
386
+ class finfo:
387
+ """
388
+ finfo(dtype)
389
+
390
+ Machine limits for floating point types.
391
+
392
+ Attributes
393
+ ----------
394
+ bits : int
395
+ The number of bits occupied by the type.
396
+ dtype : dtype
397
+ Returns the dtype for which `finfo` returns information. For complex
398
+ input, the returned dtype is the associated ``float*`` dtype for its
399
+ real and complex components.
400
+ eps : float
401
+ The difference between 1.0 and the next smallest representable float
402
+ larger than 1.0. For example, for 64-bit binary floats in the IEEE-754
403
+ standard, ``eps = 2**-52``, approximately 2.22e-16.
404
+ epsneg : float
405
+ The difference between 1.0 and the next smallest representable float
406
+ less than 1.0. For example, for 64-bit binary floats in the IEEE-754
407
+ standard, ``epsneg = 2**-53``, approximately 1.11e-16.
408
+ iexp : int
409
+ The number of bits in the exponent portion of the floating point
410
+ representation.
411
+ machep : int
412
+ The exponent that yields `eps`.
413
+ max : floating point number of the appropriate type
414
+ The largest representable number.
415
+ maxexp : int
416
+ The smallest positive power of the base (2) that causes overflow.
417
+ min : floating point number of the appropriate type
418
+ The smallest representable number, typically ``-max``.
419
+ minexp : int
420
+ The most negative power of the base (2) consistent with there
421
+ being no leading 0's in the mantissa.
422
+ negep : int
423
+ The exponent that yields `epsneg`.
424
+ nexp : int
425
+ The number of bits in the exponent including its sign and bias.
426
+ nmant : int
427
+ The number of bits in the mantissa.
428
+ precision : int
429
+ The approximate number of decimal digits to which this kind of
430
+ float is precise.
431
+ resolution : floating point number of the appropriate type
432
+ The approximate decimal resolution of this type, i.e.,
433
+ ``10**-precision``.
434
+ tiny : float
435
+ An alias for `smallest_normal`, kept for backwards compatibility.
436
+ smallest_normal : float
437
+ The smallest positive floating point number with 1 as leading bit in
438
+ the mantissa following IEEE-754 (see Notes).
439
+ smallest_subnormal : float
440
+ The smallest positive floating point number with 0 as leading bit in
441
+ the mantissa following IEEE-754.
442
+
443
+ Parameters
444
+ ----------
445
+ dtype : float, dtype, or instance
446
+ Kind of floating point or complex floating point
447
+ data-type about which to get information.
448
+
449
+ See Also
450
+ --------
451
+ iinfo : The equivalent for integer data types.
452
+ spacing : The distance between a value and the nearest adjacent number
453
+ nextafter : The next floating point value after x1 towards x2
454
+
455
+ Notes
456
+ -----
457
+ For developers of NumPy: do not instantiate this at the module level.
458
+ The initial calculation of these parameters is expensive and negatively
459
+ impacts import times. These objects are cached, so calling ``finfo()``
460
+ repeatedly inside your functions is not a problem.
461
+
462
+ Note that ``smallest_normal`` is not actually the smallest positive
463
+ representable value in a NumPy floating point type. As in the IEEE-754
464
+ standard [1]_, NumPy floating point types make use of subnormal numbers to
465
+ fill the gap between 0 and ``smallest_normal``. However, subnormal numbers
466
+ may have significantly reduced precision [2]_.
467
+
468
+ This function can also be used for complex data types as well. If used,
469
+ the output will be the same as the corresponding real float type
470
+ (e.g. numpy.finfo(numpy.csingle) is the same as numpy.finfo(numpy.single)).
471
+ However, the output is true for the real and imaginary components.
472
+
473
+ References
474
+ ----------
475
+ .. [1] IEEE Standard for Floating-Point Arithmetic, IEEE Std 754-2008,
476
+ pp.1-70, 2008, https://doi.org/10.1109/IEEESTD.2008.4610935
477
+ .. [2] Wikipedia, "Denormal Numbers",
478
+ https://en.wikipedia.org/wiki/Denormal_number
479
+
480
+ Examples
481
+ --------
482
+ >>> import numpy as np
483
+ >>> np.finfo(np.float64).dtype
484
+ dtype('float64')
485
+ >>> np.finfo(np.complex64).dtype
486
+ dtype('float32')
487
+
488
+ """
489
+
490
+ _finfo_cache = {}
491
+
492
+ __class_getitem__ = classmethod(types.GenericAlias)
493
+
494
+ def __new__(cls, dtype):
495
+ try:
496
+ obj = cls._finfo_cache.get(dtype) # most common path
497
+ if obj is not None:
498
+ return obj
499
+ except TypeError:
500
+ pass
501
+
502
+ if dtype is None:
503
+ # Deprecated in NumPy 1.25, 2023-01-16
504
+ warnings.warn(
505
+ "finfo() dtype cannot be None. This behavior will "
506
+ "raise an error in the future. (Deprecated in NumPy 1.25)",
507
+ DeprecationWarning,
508
+ stacklevel=2
509
+ )
510
+
511
+ try:
512
+ dtype = numeric.dtype(dtype)
513
+ except TypeError:
514
+ # In case a float instance was given
515
+ dtype = numeric.dtype(type(dtype))
516
+
517
+ obj = cls._finfo_cache.get(dtype)
518
+ if obj is not None:
519
+ return obj
520
+ dtypes = [dtype]
521
+ newdtype = ntypes.obj2sctype(dtype)
522
+ if newdtype is not dtype:
523
+ dtypes.append(newdtype)
524
+ dtype = newdtype
525
+ if not issubclass(dtype, numeric.inexact):
526
+ raise ValueError(f"data type {dtype!r} not inexact")
527
+ obj = cls._finfo_cache.get(dtype)
528
+ if obj is not None:
529
+ return obj
530
+ if not issubclass(dtype, numeric.floating):
531
+ newdtype = _convert_to_float[dtype]
532
+ if newdtype is not dtype:
533
+ # dtype changed, for example from complex128 to float64
534
+ dtypes.append(newdtype)
535
+ dtype = newdtype
536
+
537
+ obj = cls._finfo_cache.get(dtype, None)
538
+ if obj is not None:
539
+ # the original dtype was not in the cache, but the new
540
+ # dtype is in the cache. we add the original dtypes to
541
+ # the cache and return the result
542
+ for dt in dtypes:
543
+ cls._finfo_cache[dt] = obj
544
+ return obj
545
+ obj = object.__new__(cls)._init(dtype)
546
+ for dt in dtypes:
547
+ cls._finfo_cache[dt] = obj
548
+ return obj
549
+
550
+ def _init(self, dtype):
551
+ self.dtype = numeric.dtype(dtype)
552
+ machar = _get_machar(dtype)
553
+
554
+ for word in ['precision', 'iexp',
555
+ 'maxexp', 'minexp', 'negep',
556
+ 'machep']:
557
+ setattr(self, word, getattr(machar, word))
558
+ for word in ['resolution', 'epsneg', 'smallest_subnormal']:
559
+ setattr(self, word, getattr(machar, word).flat[0])
560
+ self.bits = self.dtype.itemsize * 8
561
+ self.max = machar.huge.flat[0]
562
+ self.min = -self.max
563
+ self.eps = machar.eps.flat[0]
564
+ self.nexp = machar.iexp
565
+ self.nmant = machar.it
566
+ self._machar = machar
567
+ self._str_tiny = machar._str_xmin.strip()
568
+ self._str_max = machar._str_xmax.strip()
569
+ self._str_epsneg = machar._str_epsneg.strip()
570
+ self._str_eps = machar._str_eps.strip()
571
+ self._str_resolution = machar._str_resolution.strip()
572
+ self._str_smallest_normal = machar._str_smallest_normal.strip()
573
+ self._str_smallest_subnormal = machar._str_smallest_subnormal.strip()
574
+ return self
575
+
576
+ def __str__(self):
577
+ fmt = (
578
+ 'Machine parameters for %(dtype)s\n'
579
+ '---------------------------------------------------------------\n'
580
+ 'precision = %(precision)3s resolution = %(_str_resolution)s\n'
581
+ 'machep = %(machep)6s eps = %(_str_eps)s\n'
582
+ 'negep = %(negep)6s epsneg = %(_str_epsneg)s\n'
583
+ 'minexp = %(minexp)6s tiny = %(_str_tiny)s\n'
584
+ 'maxexp = %(maxexp)6s max = %(_str_max)s\n'
585
+ 'nexp = %(nexp)6s min = -max\n'
586
+ 'smallest_normal = %(_str_smallest_normal)s '
587
+ 'smallest_subnormal = %(_str_smallest_subnormal)s\n'
588
+ '---------------------------------------------------------------\n'
589
+ )
590
+ return fmt % self.__dict__
591
+
592
+ def __repr__(self):
593
+ c = self.__class__.__name__
594
+ d = self.__dict__.copy()
595
+ d['klass'] = c
596
+ return (("%(klass)s(resolution=%(resolution)s, min=-%(_str_max)s,"
597
+ " max=%(_str_max)s, dtype=%(dtype)s)") % d)
598
+
599
+ @property
600
+ def smallest_normal(self):
601
+ """Return the value for the smallest normal.
602
+
603
+ Returns
604
+ -------
605
+ smallest_normal : float
606
+ Value for the smallest normal.
607
+
608
+ Warns
609
+ -----
610
+ UserWarning
611
+ If the calculated value for the smallest normal is requested for
612
+ double-double.
613
+ """
614
+ # This check is necessary because the value for smallest_normal is
615
+ # platform dependent for longdouble types.
616
+ if isnan(self._machar.smallest_normal.flat[0]):
617
+ warnings.warn(
618
+ 'The value of smallest normal is undefined for double double',
619
+ UserWarning, stacklevel=2)
620
+ return self._machar.smallest_normal.flat[0]
621
+
622
+ @property
623
+ def tiny(self):
624
+ """Return the value for tiny, alias of smallest_normal.
625
+
626
+ Returns
627
+ -------
628
+ tiny : float
629
+ Value for the smallest normal, alias of smallest_normal.
630
+
631
+ Warns
632
+ -----
633
+ UserWarning
634
+ If the calculated value for the smallest normal is requested for
635
+ double-double.
636
+ """
637
+ return self.smallest_normal
638
+
639
+
640
+ @set_module('numpy')
641
+ class iinfo:
642
+ """
643
+ iinfo(type)
644
+
645
+ Machine limits for integer types.
646
+
647
+ Attributes
648
+ ----------
649
+ bits : int
650
+ The number of bits occupied by the type.
651
+ dtype : dtype
652
+ Returns the dtype for which `iinfo` returns information.
653
+ min : int
654
+ The smallest integer expressible by the type.
655
+ max : int
656
+ The largest integer expressible by the type.
657
+
658
+ Parameters
659
+ ----------
660
+ int_type : integer type, dtype, or instance
661
+ The kind of integer data type to get information about.
662
+
663
+ See Also
664
+ --------
665
+ finfo : The equivalent for floating point data types.
666
+
667
+ Examples
668
+ --------
669
+ With types:
670
+
671
+ >>> import numpy as np
672
+ >>> ii16 = np.iinfo(np.int16)
673
+ >>> ii16.min
674
+ -32768
675
+ >>> ii16.max
676
+ 32767
677
+ >>> ii32 = np.iinfo(np.int32)
678
+ >>> ii32.min
679
+ -2147483648
680
+ >>> ii32.max
681
+ 2147483647
682
+
683
+ With instances:
684
+
685
+ >>> ii32 = np.iinfo(np.int32(10))
686
+ >>> ii32.min
687
+ -2147483648
688
+ >>> ii32.max
689
+ 2147483647
690
+
691
+ """
692
+
693
+ _min_vals = {}
694
+ _max_vals = {}
695
+
696
+ __class_getitem__ = classmethod(types.GenericAlias)
697
+
698
+ def __init__(self, int_type):
699
+ try:
700
+ self.dtype = numeric.dtype(int_type)
701
+ except TypeError:
702
+ self.dtype = numeric.dtype(type(int_type))
703
+ self.kind = self.dtype.kind
704
+ self.bits = self.dtype.itemsize * 8
705
+ self.key = "%s%d" % (self.kind, self.bits)
706
+ if self.kind not in 'iu':
707
+ raise ValueError(f"Invalid integer data type {self.kind!r}.")
708
+
709
+ @property
710
+ def min(self):
711
+ """Minimum value of given dtype."""
712
+ if self.kind == 'u':
713
+ return 0
714
+ else:
715
+ try:
716
+ val = iinfo._min_vals[self.key]
717
+ except KeyError:
718
+ val = int(-(1 << (self.bits - 1)))
719
+ iinfo._min_vals[self.key] = val
720
+ return val
721
+
722
+ @property
723
+ def max(self):
724
+ """Maximum value of given dtype."""
725
+ try:
726
+ val = iinfo._max_vals[self.key]
727
+ except KeyError:
728
+ if self.kind == 'u':
729
+ val = int((1 << self.bits) - 1)
730
+ else:
731
+ val = int((1 << (self.bits - 1)) - 1)
732
+ iinfo._max_vals[self.key] = val
733
+ return val
734
+
735
+ def __str__(self):
736
+ """String representation."""
737
+ fmt = (
738
+ 'Machine parameters for %(dtype)s\n'
739
+ '---------------------------------------------------------------\n'
740
+ 'min = %(min)s\n'
741
+ 'max = %(max)s\n'
742
+ '---------------------------------------------------------------\n'
743
+ )
744
+ return fmt % {'dtype': self.dtype, 'min': self.min, 'max': self.max}
745
+
746
+ def __repr__(self):
747
+ return "%s(min=%s, max=%s, dtype=%s)" % (self.__class__.__name__,
748
+ self.min, self.max, self.dtype)