flopscope 0.2.0__py3-none-any.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 (115) hide show
  1. benchmarks/__init__.py +1 -0
  2. benchmarks/__main__.py +6 -0
  3. benchmarks/_baseline.py +171 -0
  4. benchmarks/_bitwise.py +231 -0
  5. benchmarks/_complex.py +176 -0
  6. benchmarks/_contractions.py +291 -0
  7. benchmarks/_fft.py +198 -0
  8. benchmarks/_impl_urls.py +139 -0
  9. benchmarks/_linalg.py +197 -0
  10. benchmarks/_linalg_delegates.py +407 -0
  11. benchmarks/_metadata.py +141 -0
  12. benchmarks/_misc.py +653 -0
  13. benchmarks/_perf.py +321 -0
  14. benchmarks/_perm_group_calibration.py +175 -0
  15. benchmarks/_pointwise.py +372 -0
  16. benchmarks/_polynomial.py +193 -0
  17. benchmarks/_random.py +209 -0
  18. benchmarks/_reductions.py +136 -0
  19. benchmarks/_sorting.py +289 -0
  20. benchmarks/_stats.py +137 -0
  21. benchmarks/_window.py +92 -0
  22. benchmarks/accumulation/__init__.py +0 -0
  23. benchmarks/accumulation/bench_cost_compute.py +138 -0
  24. benchmarks/dashboard.py +312 -0
  25. benchmarks/runner.py +636 -0
  26. flopscope/__init__.py +273 -0
  27. flopscope/_accumulation/__init__.py +13 -0
  28. flopscope/_accumulation/_bipartite.py +121 -0
  29. flopscope/_accumulation/_burnside.py +51 -0
  30. flopscope/_accumulation/_cache.py +146 -0
  31. flopscope/_accumulation/_components.py +153 -0
  32. flopscope/_accumulation/_cost.py +1414 -0
  33. flopscope/_accumulation/_cost_descriptions.py +63 -0
  34. flopscope/_accumulation/_detection.py +318 -0
  35. flopscope/_accumulation/_ladder.py +191 -0
  36. flopscope/_accumulation/_output_orbit.py +104 -0
  37. flopscope/_accumulation/_partition.py +290 -0
  38. flopscope/_accumulation/_path_info.py +211 -0
  39. flopscope/_accumulation/_public.py +169 -0
  40. flopscope/_accumulation/_reduction.py +310 -0
  41. flopscope/_accumulation/_regimes.py +303 -0
  42. flopscope/_accumulation/_shape.py +33 -0
  43. flopscope/_accumulation/_wreath.py +209 -0
  44. flopscope/_budget.py +1027 -0
  45. flopscope/_config.py +118 -0
  46. flopscope/_counting_ops.py +451 -0
  47. flopscope/_display.py +478 -0
  48. flopscope/_docstrings.py +59 -0
  49. flopscope/_dtypes.py +20 -0
  50. flopscope/_einsum.py +717 -0
  51. flopscope/_errstate.py +25 -0
  52. flopscope/_flops.py +282 -0
  53. flopscope/_free_ops.py +2654 -0
  54. flopscope/_ndarray.py +1126 -0
  55. flopscope/_opt_einsum/LICENSE +21 -0
  56. flopscope/_opt_einsum/NOTICE +59 -0
  57. flopscope/_opt_einsum/__init__.py +209 -0
  58. flopscope/_opt_einsum/_contract.py +1478 -0
  59. flopscope/_opt_einsum/_helpers.py +164 -0
  60. flopscope/_opt_einsum/_hsluv.py +273 -0
  61. flopscope/_opt_einsum/_path_random.py +462 -0
  62. flopscope/_opt_einsum/_paths.py +1653 -0
  63. flopscope/_opt_einsum/_subgraph_symmetry.py +544 -0
  64. flopscope/_opt_einsum/_symmetry.py +140 -0
  65. flopscope/_opt_einsum/_typing.py +37 -0
  66. flopscope/_perm_group.py +717 -0
  67. flopscope/_pointwise.py +2522 -0
  68. flopscope/_polynomial.py +278 -0
  69. flopscope/_registry.py +3216 -0
  70. flopscope/_sorting_ops.py +571 -0
  71. flopscope/_symmetric.py +812 -0
  72. flopscope/_symmetry_transport.py +510 -0
  73. flopscope/_symmetry_utils.py +669 -0
  74. flopscope/_type_info.py +12 -0
  75. flopscope/_unwrap.py +70 -0
  76. flopscope/_validation.py +83 -0
  77. flopscope/_version_check.py +46 -0
  78. flopscope/_weights.py +195 -0
  79. flopscope/_window.py +177 -0
  80. flopscope/accounting.py +565 -0
  81. flopscope/data/default_weights.json +462 -0
  82. flopscope/data/weights.csv +509 -0
  83. flopscope/errors.py +197 -0
  84. flopscope/numpy/__init__.py +878 -0
  85. flopscope/numpy/fft/__init__.py +55 -0
  86. flopscope/numpy/fft/_free.py +51 -0
  87. flopscope/numpy/fft/_transforms.py +695 -0
  88. flopscope/numpy/linalg/__init__.py +105 -0
  89. flopscope/numpy/linalg/_aliases.py +126 -0
  90. flopscope/numpy/linalg/_compound.py +161 -0
  91. flopscope/numpy/linalg/_decompositions.py +353 -0
  92. flopscope/numpy/linalg/_properties.py +533 -0
  93. flopscope/numpy/linalg/_solvers.py +444 -0
  94. flopscope/numpy/linalg/_svd.py +122 -0
  95. flopscope/numpy/random/__init__.py +684 -0
  96. flopscope/numpy/random/_cost_formulas.py +115 -0
  97. flopscope/numpy/random/_counted_classes.py +241 -0
  98. flopscope/numpy/testing/__init__.py +13 -0
  99. flopscope/numpy/typing/__init__.py +30 -0
  100. flopscope/py.typed +0 -0
  101. flopscope/stats/__init__.py +84 -0
  102. flopscope/stats/_base.py +77 -0
  103. flopscope/stats/_cauchy.py +146 -0
  104. flopscope/stats/_erf.py +190 -0
  105. flopscope/stats/_expon.py +146 -0
  106. flopscope/stats/_laplace.py +150 -0
  107. flopscope/stats/_logistic.py +148 -0
  108. flopscope/stats/_lognorm.py +160 -0
  109. flopscope/stats/_ndtri.py +133 -0
  110. flopscope/stats/_norm.py +149 -0
  111. flopscope/stats/_truncnorm.py +186 -0
  112. flopscope/stats/_uniform.py +141 -0
  113. flopscope-0.2.0.dist-info/METADATA +23 -0
  114. flopscope-0.2.0.dist-info/RECORD +115 -0
  115. flopscope-0.2.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,55 @@
1
+ """FFT submodule for flopscope."""
2
+
3
+ from flopscope._registry import make_module_getattr as _make_module_getattr
4
+ from flopscope.numpy.fft._free import ( # noqa: F401
5
+ fftfreq,
6
+ fftshift,
7
+ ifftshift,
8
+ rfftfreq,
9
+ )
10
+ from flopscope.numpy.fft._transforms import ( # noqa: F401
11
+ fft,
12
+ fft2,
13
+ fft_cost,
14
+ fftn,
15
+ fftn_cost,
16
+ hfft,
17
+ hfft_cost,
18
+ ifft,
19
+ ifft2,
20
+ ifftn,
21
+ ihfft,
22
+ irfft,
23
+ irfft2,
24
+ irfftn,
25
+ rfft,
26
+ rfft2,
27
+ rfft_cost,
28
+ rfftn,
29
+ rfftn_cost,
30
+ )
31
+
32
+ __all__ = [
33
+ "fft",
34
+ "ifft",
35
+ "rfft",
36
+ "irfft",
37
+ "fft2",
38
+ "ifft2",
39
+ "rfft2",
40
+ "irfft2",
41
+ "fftn",
42
+ "ifftn",
43
+ "rfftn",
44
+ "irfftn",
45
+ "hfft",
46
+ "ihfft",
47
+ "fftfreq",
48
+ "rfftfreq",
49
+ "fftshift",
50
+ "ifftshift",
51
+ ]
52
+
53
+ __getattr__ = _make_module_getattr(
54
+ module_prefix="fft.", module_label="flopscope.numpy.fft"
55
+ )
@@ -0,0 +1,51 @@
1
+ # src/flopscope/fft/_free.py
2
+ """Zero-FLOP FFT utility operations."""
3
+
4
+ from __future__ import annotations
5
+
6
+ from collections.abc import Sequence
7
+ from typing import Any
8
+
9
+ import numpy as _np
10
+ from numpy.typing import ArrayLike
11
+
12
+ from flopscope._docstrings import attach_docstring
13
+ from flopscope._ndarray import FlopscopeArray, _to_base_ndarray
14
+
15
+
16
+ def fftfreq(n: int, d: float = 1.0, device: Any = None) -> FlopscopeArray:
17
+ """FFT sample frequencies. Cost: 0 FLOPs."""
18
+ kwargs: dict[str, Any] = {}
19
+ if device is not None:
20
+ kwargs["device"] = device
21
+ return _np.fft.fftfreq(n, d=d, **kwargs) # type: ignore[reportReturnType]
22
+
23
+
24
+ attach_docstring(fftfreq, _np.fft.fftfreq, "free", "0 FLOPs")
25
+
26
+
27
+ def rfftfreq(n: int, d: float = 1.0, device: Any = None) -> FlopscopeArray:
28
+ """Real FFT sample frequencies. Cost: 0 FLOPs."""
29
+ kwargs: dict[str, Any] = {}
30
+ if device is not None:
31
+ kwargs["device"] = device
32
+ return _np.fft.rfftfreq(n, d=d, **kwargs) # type: ignore[reportReturnType]
33
+
34
+
35
+ attach_docstring(rfftfreq, _np.fft.rfftfreq, "free", "0 FLOPs")
36
+
37
+
38
+ def fftshift(x: ArrayLike, axes: int | Sequence[int] | None = None) -> FlopscopeArray:
39
+ """Shift zero-frequency component to center. Cost: 0 FLOPs."""
40
+ return _np.fft.fftshift(_to_base_ndarray(x), axes=axes) # type: ignore[reportReturnType]
41
+
42
+
43
+ attach_docstring(fftshift, _np.fft.fftshift, "free", "0 FLOPs")
44
+
45
+
46
+ def ifftshift(x: ArrayLike, axes: int | Sequence[int] | None = None) -> FlopscopeArray:
47
+ """Inverse of fftshift. Cost: 0 FLOPs."""
48
+ return _np.fft.ifftshift(_to_base_ndarray(x), axes=axes) # type: ignore[reportReturnType]
49
+
50
+
51
+ attach_docstring(ifftshift, _np.fft.ifftshift, "free", "0 FLOPs")