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,186 @@
1
+ """Truncated normal distribution for :mod:`flopscope.stats`."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import numpy as _np
6
+
7
+ from flopscope.stats._base import ContinuousDistribution
8
+ from flopscope.stats._erf import _erf
9
+ from flopscope.stats._ndtri import _ndtri
10
+
11
+ _SQRT2 = _np.sqrt(2.0)
12
+ _INV_SQRT_2PI = 1.0 / _np.sqrt(2.0 * _np.pi)
13
+
14
+
15
+ def _std_norm_cdf(x):
16
+ """Standard normal CDF (no budget deduction)."""
17
+ return 0.5 * (1.0 + _erf(x / _SQRT2))
18
+
19
+
20
+ def _std_norm_pdf(x):
21
+ """Standard normal PDF (no budget deduction)."""
22
+ return _INV_SQRT_2PI * _np.exp(-0.5 * x * x)
23
+
24
+
25
+ class TruncnormDistribution(ContinuousDistribution):
26
+ """Truncated normal continuous random variable.
27
+
28
+ This object mirrors ``scipy.stats.truncnorm``.
29
+
30
+ Methods
31
+ -------
32
+ pdf(x, a, b, loc=0, scale=1)
33
+ Evaluate the probability density function.
34
+ cdf(x, a, b, loc=0, scale=1)
35
+ Evaluate the cumulative distribution function.
36
+ ppf(q, a, b, loc=0, scale=1)
37
+ Evaluate the percent-point function.
38
+
39
+ Notes
40
+ -----
41
+ ``a`` and ``b`` are standardized lower and upper bounds. The truncated
42
+ support is ``[a * scale + loc, b * scale + loc]``, and both bounds appear
43
+ before ``loc`` and ``scale`` to match SciPy's signature. Each public
44
+ method deducts ``1 * numel(input)`` FLOPs from the active budget.
45
+ """
46
+
47
+ def __init__(self):
48
+ super().__init__("truncnorm")
49
+
50
+ def pdf(self, x, a, b, loc=0, scale=1):
51
+ """Evaluate the probability density function.
52
+
53
+ Parameters
54
+ ----------
55
+ x : array_like
56
+ Points at which to evaluate the density.
57
+ a : float
58
+ Lower standardized bound.
59
+ b : float
60
+ Upper standardized bound.
61
+ loc : float, optional
62
+ Mean of the underlying normal distribution. Defaults to ``0``.
63
+ scale : float, optional
64
+ Standard deviation of the underlying normal distribution.
65
+ Defaults to ``1``.
66
+
67
+ Returns
68
+ -------
69
+ FlopscopeArray
70
+ Probability density evaluated elementwise at ``x``.
71
+
72
+ Notes
73
+ -----
74
+ Equivalent to ``scipy.stats.truncnorm.pdf(x, a, b, loc, scale)``.
75
+ FLOP cost: ``1 * numel(x)``.
76
+
77
+ Examples
78
+ --------
79
+ >>> import numpy as np
80
+ >>> import flopscope as flops
81
+ >>> x = np.array([-0.5, 0.0, 0.5])
82
+ >>> np.round(flops.stats.truncnorm.pdf(x, a=-1.0, b=1.0), 3)
83
+ array([0.516, 0.584, 0.516])
84
+ """
85
+ return self._deduct_and_call("pdf", 1, x, a, b, loc=loc, scale=scale)
86
+
87
+ def cdf(self, x, a, b, loc=0, scale=1):
88
+ """Evaluate the cumulative distribution function.
89
+
90
+ Parameters
91
+ ----------
92
+ x : array_like
93
+ Points at which to evaluate the cumulative probability.
94
+ a : float
95
+ Lower standardized bound.
96
+ b : float
97
+ Upper standardized bound.
98
+ loc : float, optional
99
+ Mean of the underlying normal distribution. Defaults to ``0``.
100
+ scale : float, optional
101
+ Standard deviation of the underlying normal distribution.
102
+ Defaults to ``1``.
103
+
104
+ Returns
105
+ -------
106
+ FlopscopeArray
107
+ Cumulative probability evaluated elementwise at ``x``.
108
+
109
+ Notes
110
+ -----
111
+ Equivalent to ``scipy.stats.truncnorm.cdf(x, a, b, loc, scale)``.
112
+ FLOP cost: ``1 * numel(x)``.
113
+
114
+ Examples
115
+ --------
116
+ >>> import numpy as np
117
+ >>> import flopscope as flops
118
+ >>> x = np.array([-0.5, 0.0, 0.5])
119
+ >>> np.round(flops.stats.truncnorm.cdf(x, a=-1.0, b=1.0), 3)
120
+ array([0.22, 0.5 , 0.78])
121
+ """
122
+ return self._deduct_and_call("cdf", 1, x, a, b, loc=loc, scale=scale)
123
+
124
+ def ppf(self, q, a, b, loc=0, scale=1):
125
+ """Evaluate the percent-point function.
126
+
127
+ Parameters
128
+ ----------
129
+ q : array_like
130
+ Probabilities in ``[0, 1]``.
131
+ a : float
132
+ Lower standardized bound.
133
+ b : float
134
+ Upper standardized bound.
135
+ loc : float, optional
136
+ Mean of the underlying normal distribution. Defaults to ``0``.
137
+ scale : float, optional
138
+ Standard deviation of the underlying normal distribution.
139
+ Defaults to ``1``.
140
+
141
+ Returns
142
+ -------
143
+ FlopscopeArray
144
+ Quantiles corresponding to ``q``.
145
+
146
+ Notes
147
+ -----
148
+ Equivalent to ``scipy.stats.truncnorm.ppf(q, a, b, loc, scale)``.
149
+ FLOP cost: ``1 * numel(q)``.
150
+
151
+ Examples
152
+ --------
153
+ >>> import numpy as np
154
+ >>> import flopscope as flops
155
+ >>> q = np.array([0.25, 0.5, 0.75])
156
+ >>> np.round(flops.stats.truncnorm.ppf(q, a=-1.0, b=1.0), 3)
157
+ array([-0.442, 0. , 0.442])
158
+ """
159
+ return self._deduct_and_call("ppf", 1, q, a, b, loc=loc, scale=scale)
160
+
161
+ def _compute_pdf(self, x, a, b, loc=0, scale=1):
162
+ z = (x - loc) / scale
163
+ phi_a = _std_norm_cdf(a)
164
+ phi_b = _std_norm_cdf(b)
165
+ denom = scale * (phi_b - phi_a)
166
+ result = _std_norm_pdf(z) / denom
167
+ return _np.where((z >= a) & (z <= b), result, 0.0)
168
+
169
+ def _compute_cdf(self, x, a, b, loc=0, scale=1):
170
+ z = (x - loc) / scale
171
+ phi_a = _std_norm_cdf(a)
172
+ phi_b = _std_norm_cdf(b)
173
+ result = (_std_norm_cdf(z) - phi_a) / (phi_b - phi_a)
174
+ result = _np.where(z < a, 0.0, result)
175
+ result = _np.where(z > b, 1.0, result)
176
+ return result
177
+
178
+ def _compute_ppf(self, q, a, b, loc=0, scale=1):
179
+ phi_a = _std_norm_cdf(a)
180
+ phi_b = _std_norm_cdf(b)
181
+ inner = phi_a + q * (phi_b - phi_a)
182
+ z = _ndtri(inner)
183
+ return loc + scale * z
184
+
185
+
186
+ truncnorm = TruncnormDistribution()
@@ -0,0 +1,141 @@
1
+ """Uniform distribution for :mod:`flopscope.stats`."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import numpy as _np
6
+
7
+ from flopscope.stats._base import ContinuousDistribution
8
+
9
+
10
+ class UniformDistribution(ContinuousDistribution):
11
+ """Continuous uniform random variable on ``[loc, loc + scale]``.
12
+
13
+ This object mirrors ``scipy.stats.uniform``.
14
+
15
+ Methods
16
+ -------
17
+ pdf(x, loc=0, scale=1)
18
+ Evaluate the probability density function.
19
+ cdf(x, loc=0, scale=1)
20
+ Evaluate the cumulative distribution function.
21
+ ppf(q, loc=0, scale=1)
22
+ Evaluate the percent-point function.
23
+
24
+ Notes
25
+ -----
26
+ ``loc`` is the lower bound and ``scale`` is the interval width. Each
27
+ public method deducts ``1 * numel(input)`` FLOPs from the active budget.
28
+ """
29
+
30
+ def __init__(self):
31
+ super().__init__("uniform")
32
+
33
+ def pdf(self, x, loc=0, scale=1):
34
+ """Evaluate the probability density function.
35
+
36
+ Parameters
37
+ ----------
38
+ x : array_like
39
+ Points at which to evaluate the density.
40
+ loc : float, optional
41
+ Lower bound of the support. Defaults to ``0``.
42
+ scale : float, optional
43
+ Width of the support interval. Defaults to ``1``.
44
+
45
+ Returns
46
+ -------
47
+ FlopscopeArray
48
+ Probability density evaluated elementwise at ``x``.
49
+
50
+ Notes
51
+ -----
52
+ Equivalent to ``scipy.stats.uniform.pdf(x, loc, scale)``.
53
+ FLOP cost: ``1 * numel(x)``.
54
+
55
+ Examples
56
+ --------
57
+ >>> import numpy as np
58
+ >>> import flopscope as flops
59
+ >>> x = np.array([-0.5, 0.5, 1.5])
60
+ >>> np.round(flops.stats.uniform.pdf(x), 3)
61
+ array([0., 1., 0.])
62
+ """
63
+ return self._deduct_and_call("pdf", 1, x, loc=loc, scale=scale)
64
+
65
+ def cdf(self, x, loc=0, scale=1):
66
+ """Evaluate the cumulative distribution function.
67
+
68
+ Parameters
69
+ ----------
70
+ x : array_like
71
+ Points at which to evaluate the cumulative probability.
72
+ loc : float, optional
73
+ Lower bound of the support. Defaults to ``0``.
74
+ scale : float, optional
75
+ Width of the support interval. Defaults to ``1``.
76
+
77
+ Returns
78
+ -------
79
+ FlopscopeArray
80
+ Cumulative probability evaluated elementwise at ``x``.
81
+
82
+ Notes
83
+ -----
84
+ Equivalent to ``scipy.stats.uniform.cdf(x, loc, scale)``.
85
+ FLOP cost: ``1 * numel(x)``.
86
+
87
+ Examples
88
+ --------
89
+ >>> import numpy as np
90
+ >>> import flopscope as flops
91
+ >>> x = np.array([0.0, 0.5, 1.0])
92
+ >>> np.round(flops.stats.uniform.cdf(x), 3)
93
+ array([0. , 0.5, 1. ])
94
+ """
95
+ return self._deduct_and_call("cdf", 1, x, loc=loc, scale=scale)
96
+
97
+ def ppf(self, q, loc=0, scale=1):
98
+ """Evaluate the percent-point function.
99
+
100
+ Parameters
101
+ ----------
102
+ q : array_like
103
+ Probabilities in ``[0, 1]``.
104
+ loc : float, optional
105
+ Lower bound of the support. Defaults to ``0``.
106
+ scale : float, optional
107
+ Width of the support interval. Defaults to ``1``.
108
+
109
+ Returns
110
+ -------
111
+ FlopscopeArray
112
+ Quantiles corresponding to ``q``.
113
+
114
+ Notes
115
+ -----
116
+ Equivalent to ``scipy.stats.uniform.ppf(q, loc, scale)``.
117
+ FLOP cost: ``1 * numel(q)``.
118
+
119
+ Examples
120
+ --------
121
+ >>> import numpy as np
122
+ >>> import flopscope as flops
123
+ >>> q = np.array([0.25, 0.5, 0.75])
124
+ >>> np.round(flops.stats.uniform.ppf(q), 3)
125
+ array([0.25, 0.5 , 0.75])
126
+ """
127
+ return self._deduct_and_call("ppf", 1, q, loc=loc, scale=scale)
128
+
129
+ def _compute_pdf(self, x, loc=0, scale=1):
130
+ return _np.where((x >= loc) & (x <= loc + scale), 1.0 / scale, 0.0)
131
+
132
+ def _compute_cdf(self, x, loc=0, scale=1):
133
+ return _np.clip((x - loc) / scale, 0.0, 1.0)
134
+
135
+ def _compute_ppf(self, q, loc=0, scale=1):
136
+ result = loc + q * scale
137
+ result = _np.where((q >= 0) & (q <= 1), result, _np.nan)
138
+ return result
139
+
140
+
141
+ uniform = UniformDistribution()
@@ -0,0 +1,23 @@
1
+ Metadata-Version: 2.4
2
+ Name: flopscope
3
+ Version: 0.2.0
4
+ Summary: NumPy-compatible math primitives with FLOP counting for the Mechanistic Estimation Challenge
5
+ License-Expression: MIT
6
+ Requires-Python: >=3.10
7
+ Requires-Dist: numpy<2.5.0,>=2.0.0
8
+ Requires-Dist: opt-einsum<4.0.0,>=3.3.0
9
+ Requires-Dist: rich>=14.3.3
10
+ Provides-Extra: dev
11
+ Requires-Dist: commitizen>=4.0; extra == 'dev'
12
+ Requires-Dist: gitlint>=0.19; extra == 'dev'
13
+ Requires-Dist: psutil>=5.9; extra == 'dev'
14
+ Requires-Dist: pyright<1.2.0,>=1.1.408; extra == 'dev'
15
+ Requires-Dist: pytest-cov; extra == 'dev'
16
+ Requires-Dist: pytest>=7.0; extra == 'dev'
17
+ Requires-Dist: rich>=13.0; extra == 'dev'
18
+ Requires-Dist: ruff>=0.4; extra == 'dev'
19
+ Requires-Dist: scipy>=1.10; extra == 'dev'
20
+ Provides-Extra: docs
21
+ Requires-Dist: numpydoc>=1.10; extra == 'docs'
22
+ Provides-Extra: sympy
23
+ Requires-Dist: sympy>=1.11; extra == 'sympy'
@@ -0,0 +1,115 @@
1
+ benchmarks/__init__.py,sha256=RZnUbw3s5l4w5Y8ewwzLqmGCTvmI7k31aP4u_269Xis,60
2
+ benchmarks/__main__.py,sha256=YAbHamE3swHF4rI-ntt9LayADFqwLtFSchflDWk1LaM,132
3
+ benchmarks/_baseline.py,sha256=N43k51w8iEOGdsxahae6qdj0P2sxF-HA-4pN3_b-GQU,6193
4
+ benchmarks/_bitwise.py,sha256=Imnqe-iZYjo5S2Zfvth8pt0MLyMJjcxcP667qiAOm6s,7162
5
+ benchmarks/_complex.py,sha256=ztJKgJL2FLHUvWfEjKbEFx2Ev39DwCbc16YpAc1Rw98,5744
6
+ benchmarks/_contractions.py,sha256=_5QmdE02NAPhWCQMd8mfCSit7UGXxkl5FfM2mVZ1htM,11529
7
+ benchmarks/_fft.py,sha256=H-g6OkUu0LhPJlFL60kzrbgOCapUY7jWUmILunSzIS0,6419
8
+ benchmarks/_impl_urls.py,sha256=tzTBbnaAn9r6t7EO1Yz-C4KdW_3L4BNgmk-aWWs0YSY,4705
9
+ benchmarks/_linalg.py,sha256=JvKfysbi9nNdpgvZKY4Iq8YpnoXaf4weuoAw7fFY3rY,6375
10
+ benchmarks/_linalg_delegates.py,sha256=yjg8NKuZw9j6NAuX8bsbUCCVlp0OTIUkmxo1gLieLz8,16930
11
+ benchmarks/_metadata.py,sha256=xYHXgtTkj8HhzvtIo2plzK5AOMIOnUHdbNH_1VUAmW0,4294
12
+ benchmarks/_misc.py,sha256=7mon_34ooBMn00N0BH4oyXgiXGRUMd7NyiD1Z4-9uX0,22158
13
+ benchmarks/_perf.py,sha256=gaOpiUXIz2efK0j2zqmBCrp9ieVriJZ11mDzxVDIqy0,10158
14
+ benchmarks/_perm_group_calibration.py,sha256=CyhWAmUxX78jVt-vmYQDfLOqTjEJMyS2hM6EQZkimSw,5368
15
+ benchmarks/_pointwise.py,sha256=pwDLlW3Wwt0Z2d53L01Z3FJUxJ2k5cxX_oraPrJxnlc,11290
16
+ benchmarks/_polynomial.py,sha256=rWZWJKTkpT7tx3KqfihAzHMEiaCs_U0-Nvpz5De2xr0,6621
17
+ benchmarks/_random.py,sha256=t7V4wnjZOVljMEMmimZSnzxfYKkJtSSRoI8t8uwZX5U,6612
18
+ benchmarks/_reductions.py,sha256=G29rMFYN7i8m7DmS8U9f6sWUCrBcAVXhEJP4zfJULOA,3824
19
+ benchmarks/_sorting.py,sha256=RCNGPfMRCQ6ui2J1h5IMU_C-DfQc4rZGw4AWG2x2O00,11236
20
+ benchmarks/_stats.py,sha256=Sdi6KX3HmefrOew4zg9FufHWqgGoNMeaZTKUu6Jn-UE,4391
21
+ benchmarks/_window.py,sha256=UfPRXpFzYNpA4bWf49EysyHkL66SG-e8ZoG_m8_tJX0,2805
22
+ benchmarks/dashboard.py,sha256=cWK0QR-Cdr29rhSjPDITHms5LCKrUDtIV3OddvX_uxU,9804
23
+ benchmarks/runner.py,sha256=TvH6tS2Bmd3G196RgseiQzlbZckWIgKvw-2i9k5GCeg,21825
24
+ benchmarks/accumulation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ benchmarks/accumulation/bench_cost_compute.py,sha256=S2vdIQzXRCxVShdYyoqQDOSO-sAk70_yoEVRNH3IrvE,4244
26
+ flopscope/__init__.py,sha256=0j_YkKcDJkPuK1zD5Vh2gZge5s74GXnRl6s3XP6GrnA,8325
27
+ flopscope/_budget.py,sha256=JbLLzT3IQGJ-CrjqyD7ylWyYxWPl7gYrK5d_lhes0sY,37404
28
+ flopscope/_config.py,sha256=0MEhuO33TJ0EOieaow1altgPAyRtRN7GmHASWzLZceY,4367
29
+ flopscope/_counting_ops.py,sha256=MVj8jkdsm7ejed0VCweHx6CEed8znwwdh7w7AiGFkIU,14200
30
+ flopscope/_display.py,sha256=adUvMIJ9atwVSgZhRh-Eo2FCTN6SnqpdGSKRcc4vdck,15948
31
+ flopscope/_docstrings.py,sha256=vZgFdn2P5s4PJceZgceuODAyivFKNw4MXDS1nfBNzbk,1838
32
+ flopscope/_dtypes.py,sha256=cMf7Md1j-M8-Ne2wr5-UY9XiZcLFIFhq1n-nxNz9UJQ,481
33
+ flopscope/_einsum.py,sha256=WVAsoNqnMvo4f1jUJaFhZ1Sanh6uPxnV4x1o2gJTfW4,26008
34
+ flopscope/_errstate.py,sha256=1rUw0t6ZvH6clq-9ZaA5Hv72km_eV-TzVUyirkP92vw,628
35
+ flopscope/_flops.py,sha256=gn3LS-4A6HvsITWsi1ePKpHpI__UrK6RYXAn1SsqPrk,7906
36
+ flopscope/_free_ops.py,sha256=-PyZlmC3YYppBla7jl5qFirTDZo7qCHsogK9cI-IR6w,90408
37
+ flopscope/_ndarray.py,sha256=u6pzANC6bg1bOB6ztFva_EoO9QlSxEKU-nIAQbP00Dk,42739
38
+ flopscope/_perm_group.py,sha256=hB3daQ72hmcjqcg2J4nARGGybwBVYtPs21azwFAcqUI,24984
39
+ flopscope/_pointwise.py,sha256=e_UNYsFbk7QMOo7geJ9n1fXrPX60E16w6f8mAJSMgP4,97006
40
+ flopscope/_polynomial.py,sha256=O-qcy9VDV2DdvAk0EQPNp2Jtavrv3jZKwL0_xZeZ8fU,8725
41
+ flopscope/_registry.py,sha256=WK-VByiHqXS5jt1TalQzqoPNcjA57kBE55Cot0u0_j8,106862
42
+ flopscope/_sorting_ops.py,sha256=3n6eqzEnzC3Nsex-rLi5ic5RWxGB2050JviXlv9vIsA,18154
43
+ flopscope/_symmetric.py,sha256=iWhsnLLzqfk4pytdbYRFq8najwqrDrXg7ROrLLbRQRI,26716
44
+ flopscope/_symmetry_transport.py,sha256=80pQ5ibO7A2BomYZX9_vMycNKOdQfsfmW0fXCb63PJg,14786
45
+ flopscope/_symmetry_utils.py,sha256=_5DfbFJM7RUfAT4IcdPNAfLJskW5bl9b0Hl6T48cv8s,23719
46
+ flopscope/_type_info.py,sha256=h2xO0GddV65YmxnaYTLOyTjsHRnJbSmj6jmxp8EaTn0,294
47
+ flopscope/_unwrap.py,sha256=McmUuZm-B6miWDMqFoPBctToWMF9QjzL5yvaGKL044M,2083
48
+ flopscope/_validation.py,sha256=PLBCO2RlExFWL9MtzFJi422ueLq5cJXm2aCxVJU14jo,2850
49
+ flopscope/_version_check.py,sha256=KAZOUN1i9-MptMLd8HAwR5gxBbdtVew_UyzvAYFHrgY,1382
50
+ flopscope/_weights.py,sha256=BZSHv76W_Kyk5KgUsALop8gh2-wy4r983RXjXdfJCq4,6664
51
+ flopscope/_window.py,sha256=FeNRi90lYkV_frFv3e7j55d1rda5oYRoQ49kmzf6F0s,4062
52
+ flopscope/accounting.py,sha256=sVUpcf5sA_Dak8oeLmtXnqb-DFQRUE6lqGNazR_ZlAQ,17616
53
+ flopscope/errors.py,sha256=Q82PY0mo5E3vEqc6wYD7dknL3MeXmjQKB6ulY80tEpE,6746
54
+ flopscope/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ flopscope/_accumulation/__init__.py,sha256=YzZVgUEu3KLL25DnrEyD1WmIBprSAhYzzptoFBlwPPY,379
56
+ flopscope/_accumulation/_bipartite.py,sha256=toVMMchSWPYw1hVO1uy6O8pq9uJH_G7HS12Wyloet4k,3911
57
+ flopscope/_accumulation/_burnside.py,sha256=a_Wjmc9CcfYGwfhmxiRL43RSyl-McylF18vLHCLQpOs,1847
58
+ flopscope/_accumulation/_cache.py,sha256=hTa0We0A7go4lJO9am8wsVaULt20YA8d7r0ahAAM4k8,4388
59
+ flopscope/_accumulation/_components.py,sha256=4WxkYFeXquGC_BPZ6ADR0E8I1xPAUhl0Dr0z82lneeU,4939
60
+ flopscope/_accumulation/_cost.py,sha256=4CQZPJq9Ut_FbGKIQGZOvTxhQ4iuWmwZAIVPM3FtNL4,59415
61
+ flopscope/_accumulation/_cost_descriptions.py,sha256=xC7g5OkkxBcxHwm8C9LOH4Q65LaLrAAuJhusEz5k9a0,2276
62
+ flopscope/_accumulation/_detection.py,sha256=Hw7uGFi-WxxVuW4rrmeDKuxX924SWsUNqEB4nxdH92U,10418
63
+ flopscope/_accumulation/_ladder.py,sha256=3_EsEcP7_-_hmUiBiKDuZr_u3U--mLHHGbIIe_fEPAw,5557
64
+ flopscope/_accumulation/_output_orbit.py,sha256=9CQ_5yo5TGvUcdTp3E30DrkM2dYVf6W1BEAPBLVJgGw,3743
65
+ flopscope/_accumulation/_partition.py,sha256=HZe8OQ2ltgHBJqIJgLLr9b3HwX3ek3vBV15XCWXmaC4,10197
66
+ flopscope/_accumulation/_path_info.py,sha256=3aZu4CPn3zeWDXM-vqgE__AEtXL7kKUg6ZrA3whvWVo,9392
67
+ flopscope/_accumulation/_public.py,sha256=9XkTWNNTRZ-jEE-DrPeK2euOMmuzkj6apNX9pw5ASO4,5946
68
+ flopscope/_accumulation/_reduction.py,sha256=CRiqyhAQGLURZXzCyImQyuk_0Y9CmLp41AtaPkZPHeE,10863
69
+ flopscope/_accumulation/_regimes.py,sha256=ExXNuoBCAn5VyuU1UtfJWKMshZp8U1kgIREMOU9Gl2Q,9762
70
+ flopscope/_accumulation/_shape.py,sha256=bvc3oVuZqtLEJg5aBdsNgQRCSDUtFLB0heViDNv2rw0,986
71
+ flopscope/_accumulation/_wreath.py,sha256=1ph3S1sZE8hsZOZC4qua3ZK1DYBZUyncOFnT-ad6wnM,7588
72
+ flopscope/_opt_einsum/LICENSE,sha256=M4BrzE2k4y29r06g5ACtxyqwx3HQl5bR94rowAEkuXU,1079
73
+ flopscope/_opt_einsum/NOTICE,sha256=l1VyuGdz-UqCSHofPePM4fQaxCq2tNYUbzXH8xWtdIs,2951
74
+ flopscope/_opt_einsum/__init__.py,sha256=MT2Xi_7DYPRLK7GUBAkgdihYsSjWRQBA15dSv3eGm6c,7494
75
+ flopscope/_opt_einsum/_contract.py,sha256=2xrUX6yO-ecZiDn54OV766RRi-5wtSrNBP5-kh5181k,59541
76
+ flopscope/_opt_einsum/_helpers.py,sha256=k0WV306l7soRK1tPt6T1EgEZ6h2PETMxR1qctx1f9PA,5151
77
+ flopscope/_opt_einsum/_hsluv.py,sha256=rMkG5zNiNry-rW6mQMzF5lF60b6KPAMnQLzTHymuwW8,7539
78
+ flopscope/_opt_einsum/_path_random.py,sha256=NKgnANLcp5MjFajlcxhKil83WZMM9xx9CHj4Rw0QPyo,16011
79
+ flopscope/_opt_einsum/_paths.py,sha256=yjse-F4Sqqv5Py-gvSo-iSNs4K8rm7B1DWlmAMHThFU,59183
80
+ flopscope/_opt_einsum/_subgraph_symmetry.py,sha256=LYAo2MUQF6CibcpEbeZ97FuQZ1C669WbfJMrehm8o-g,21613
81
+ flopscope/_opt_einsum/_symmetry.py,sha256=-MQ250mZraKvArUQgGcbw-NFCREeizuohaFT73mPCkw,4991
82
+ flopscope/_opt_einsum/_typing.py,sha256=V9WLJSp1wetVQ_5qkT72c060d-Xrc6TxkFjNLNov_vU,894
83
+ flopscope/data/weights.csv,sha256=3sSP3wPa1rkArxoprsj_F2T4bLDnxOuXrxIybTHGeKc,138719
84
+ flopscope/numpy/__init__.py,sha256=YUGWXVRhkNo_rSRXJboHFTYN-4JjFywUWRrH0yIlDI4,14137
85
+ flopscope/numpy/fft/__init__.py,sha256=3BwCxSxPB6rA8IT13ngLK7iyrhCy-9necVQKa76l24w,866
86
+ flopscope/numpy/fft/_free.py,sha256=xrX4t3Pdxqp5TCgwScEcKIP6jX_I8-xNutHSivzukZI,1686
87
+ flopscope/numpy/fft/_transforms.py,sha256=qB7eiDRjDwnwBGX_R6aJHur7qBozzoqcGEhn74lKnOg,20748
88
+ flopscope/numpy/linalg/__init__.py,sha256=2leKPrWX3GyNqw2DqPfy204qSlKebzsP4RZCNn2TJ4k,1876
89
+ flopscope/numpy/linalg/_aliases.py,sha256=EEgv5I12TvhQs3Uj_vjQ-7-RQobUodtvyqN0LJ4fv50,4156
90
+ flopscope/numpy/linalg/_compound.py,sha256=10Uj8mY-ipjukVP0iYagJ8slVqiav8zgAjVbcO1rqRA,5275
91
+ flopscope/numpy/linalg/_decompositions.py,sha256=XU6ni9qC7a7Km6dyr6KuboRrwr0QWbQMIXSvTxBDOCc,10804
92
+ flopscope/numpy/linalg/_properties.py,sha256=PE3PcZGHWeUJwmCkKHSjkO5OwpAcGEQsyYx4hQYEo3w,16585
93
+ flopscope/numpy/linalg/_solvers.py,sha256=uci2P0ECE2AzGaEs4C5Q3BnAoc-6iv46XP7fEQdAwPI,13969
94
+ flopscope/numpy/linalg/_svd.py,sha256=PJZ4Rg_HmERMbINZBw_UPsUcdnpqNzT7bdmAJ3UHJbo,4141
95
+ flopscope/numpy/random/__init__.py,sha256=3XbYo5XN5Wc3YZ3WbVWQ_nMgLjnf1WI9LU-KbZ65j9k,23099
96
+ flopscope/numpy/random/_cost_formulas.py,sha256=6AeY5uwLo5O0CMrLnC3mBWDiJowajR4im_N8WY-PuYg,3730
97
+ flopscope/numpy/random/_counted_classes.py,sha256=cP5sn3WK0fnDL84m-J8kcuwqDzx-UtAdfckKzXiNav8,9431
98
+ flopscope/numpy/testing/__init__.py,sha256=ClUxip9j1kf_9ek7BUpg6IgVwcKLw5abXx1SnGqNcoI,349
99
+ flopscope/numpy/typing/__init__.py,sha256=t2oXgv05PsNZNwBwuv67hKo1Dg2bwJK1X1k7Yrrw0Hk,772
100
+ flopscope/stats/__init__.py,sha256=1MsD98eaRmHF6fRiq0HSbw5c0mwFRVe1wRGxBeQqSJI,2715
101
+ flopscope/stats/_base.py,sha256=ihqgfM0H3m1oOGISGYVRfhhTxK4noHlGf693UXlpmCo,2345
102
+ flopscope/stats/_cauchy.py,sha256=p4dsTWkSCuJfHmK_Jox6yysMy3p-I4rK4qHg-FM-b-U,4339
103
+ flopscope/stats/_erf.py,sha256=TN11_bhZgfw4VBcIKYVHhWaxjhn6Z-u31BIlte-qo70,6040
104
+ flopscope/stats/_expon.py,sha256=DykKqCFHWcgLwuq_8THk6nVVunBKaMgaPUlWinxntVY,4340
105
+ flopscope/stats/_laplace.py,sha256=WQFhG02cbELQff8JyT9C8Ocg8uMOy6_f_vO8Ta7H2Jg,4549
106
+ flopscope/stats/_logistic.py,sha256=_sl6OZNEHjzshB-sj9XMbFo80iajWnHfyZSCN94Hbc4,4441
107
+ flopscope/stats/_lognorm.py,sha256=J5yIuAtt3eO1nIl44fLuzs2y9ac4QkvFtd9HTt6KxUs,4867
108
+ flopscope/stats/_ndtri.py,sha256=J-3gERFo3U-T54vT6QYP9FPqZI791KtSsHggPRlIyXc,3944
109
+ flopscope/stats/_norm.py,sha256=yjh-1o3-CEckpuYtuXJIX9gwGNYxbPqcXiYd1wzDRis,4341
110
+ flopscope/stats/_truncnorm.py,sha256=b3UfslprmlH5T2I6LBAC1I2L--mxqLyd8CcAp_3v9UU,5761
111
+ flopscope/stats/_uniform.py,sha256=QHbICh3VG4N3KyvHlgUsU7AaKcuQX6LYhq6_mOL6RW8,4123
112
+ flopscope/data/default_weights.json,sha256=wK89RQ4QNqn9XAhLNWWBqRnMQZJButvzGz70o3xenbE,10505
113
+ flopscope-0.2.0.dist-info/METADATA,sha256=xZl-ql4uXYxmWn2m5SG2LKSFKuZUjbyDX_BnUGK2tHY,862
114
+ flopscope-0.2.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
115
+ flopscope-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any