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.
- benchmarks/__init__.py +1 -0
- benchmarks/__main__.py +6 -0
- benchmarks/_baseline.py +171 -0
- benchmarks/_bitwise.py +231 -0
- benchmarks/_complex.py +176 -0
- benchmarks/_contractions.py +291 -0
- benchmarks/_fft.py +198 -0
- benchmarks/_impl_urls.py +139 -0
- benchmarks/_linalg.py +197 -0
- benchmarks/_linalg_delegates.py +407 -0
- benchmarks/_metadata.py +141 -0
- benchmarks/_misc.py +653 -0
- benchmarks/_perf.py +321 -0
- benchmarks/_perm_group_calibration.py +175 -0
- benchmarks/_pointwise.py +372 -0
- benchmarks/_polynomial.py +193 -0
- benchmarks/_random.py +209 -0
- benchmarks/_reductions.py +136 -0
- benchmarks/_sorting.py +289 -0
- benchmarks/_stats.py +137 -0
- benchmarks/_window.py +92 -0
- benchmarks/accumulation/__init__.py +0 -0
- benchmarks/accumulation/bench_cost_compute.py +138 -0
- benchmarks/dashboard.py +312 -0
- benchmarks/runner.py +636 -0
- flopscope/__init__.py +273 -0
- flopscope/_accumulation/__init__.py +13 -0
- flopscope/_accumulation/_bipartite.py +121 -0
- flopscope/_accumulation/_burnside.py +51 -0
- flopscope/_accumulation/_cache.py +146 -0
- flopscope/_accumulation/_components.py +153 -0
- flopscope/_accumulation/_cost.py +1414 -0
- flopscope/_accumulation/_cost_descriptions.py +63 -0
- flopscope/_accumulation/_detection.py +318 -0
- flopscope/_accumulation/_ladder.py +191 -0
- flopscope/_accumulation/_output_orbit.py +104 -0
- flopscope/_accumulation/_partition.py +290 -0
- flopscope/_accumulation/_path_info.py +211 -0
- flopscope/_accumulation/_public.py +169 -0
- flopscope/_accumulation/_reduction.py +310 -0
- flopscope/_accumulation/_regimes.py +303 -0
- flopscope/_accumulation/_shape.py +33 -0
- flopscope/_accumulation/_wreath.py +209 -0
- flopscope/_budget.py +1027 -0
- flopscope/_config.py +118 -0
- flopscope/_counting_ops.py +451 -0
- flopscope/_display.py +478 -0
- flopscope/_docstrings.py +59 -0
- flopscope/_dtypes.py +20 -0
- flopscope/_einsum.py +717 -0
- flopscope/_errstate.py +25 -0
- flopscope/_flops.py +282 -0
- flopscope/_free_ops.py +2654 -0
- flopscope/_ndarray.py +1126 -0
- flopscope/_opt_einsum/LICENSE +21 -0
- flopscope/_opt_einsum/NOTICE +59 -0
- flopscope/_opt_einsum/__init__.py +209 -0
- flopscope/_opt_einsum/_contract.py +1478 -0
- flopscope/_opt_einsum/_helpers.py +164 -0
- flopscope/_opt_einsum/_hsluv.py +273 -0
- flopscope/_opt_einsum/_path_random.py +462 -0
- flopscope/_opt_einsum/_paths.py +1653 -0
- flopscope/_opt_einsum/_subgraph_symmetry.py +544 -0
- flopscope/_opt_einsum/_symmetry.py +140 -0
- flopscope/_opt_einsum/_typing.py +37 -0
- flopscope/_perm_group.py +717 -0
- flopscope/_pointwise.py +2522 -0
- flopscope/_polynomial.py +278 -0
- flopscope/_registry.py +3216 -0
- flopscope/_sorting_ops.py +571 -0
- flopscope/_symmetric.py +812 -0
- flopscope/_symmetry_transport.py +510 -0
- flopscope/_symmetry_utils.py +669 -0
- flopscope/_type_info.py +12 -0
- flopscope/_unwrap.py +70 -0
- flopscope/_validation.py +83 -0
- flopscope/_version_check.py +46 -0
- flopscope/_weights.py +195 -0
- flopscope/_window.py +177 -0
- flopscope/accounting.py +565 -0
- flopscope/data/default_weights.json +462 -0
- flopscope/data/weights.csv +509 -0
- flopscope/errors.py +197 -0
- flopscope/numpy/__init__.py +878 -0
- flopscope/numpy/fft/__init__.py +55 -0
- flopscope/numpy/fft/_free.py +51 -0
- flopscope/numpy/fft/_transforms.py +695 -0
- flopscope/numpy/linalg/__init__.py +105 -0
- flopscope/numpy/linalg/_aliases.py +126 -0
- flopscope/numpy/linalg/_compound.py +161 -0
- flopscope/numpy/linalg/_decompositions.py +353 -0
- flopscope/numpy/linalg/_properties.py +533 -0
- flopscope/numpy/linalg/_solvers.py +444 -0
- flopscope/numpy/linalg/_svd.py +122 -0
- flopscope/numpy/random/__init__.py +684 -0
- flopscope/numpy/random/_cost_formulas.py +115 -0
- flopscope/numpy/random/_counted_classes.py +241 -0
- flopscope/numpy/testing/__init__.py +13 -0
- flopscope/numpy/typing/__init__.py +30 -0
- flopscope/py.typed +0 -0
- flopscope/stats/__init__.py +84 -0
- flopscope/stats/_base.py +77 -0
- flopscope/stats/_cauchy.py +146 -0
- flopscope/stats/_erf.py +190 -0
- flopscope/stats/_expon.py +146 -0
- flopscope/stats/_laplace.py +150 -0
- flopscope/stats/_logistic.py +148 -0
- flopscope/stats/_lognorm.py +160 -0
- flopscope/stats/_ndtri.py +133 -0
- flopscope/stats/_norm.py +149 -0
- flopscope/stats/_truncnorm.py +186 -0
- flopscope/stats/_uniform.py +141 -0
- flopscope-0.2.0.dist-info/METADATA +23 -0
- flopscope-0.2.0.dist-info/RECORD +115 -0
- 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")
|