counted-float 1.0.5__tar.gz → 1.1.1__tar.gz

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 (99) hide show
  1. {counted_float-1.0.5 → counted_float-1.1.1}/PKG-INFO +85 -71
  2. {counted_float-1.0.5 → counted_float-1.1.1}/README.md +84 -70
  3. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/__init__.py +4 -2
  4. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/_cli.py +4 -4
  5. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/benchmarking/__init__.py +0 -1
  6. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/benchmarking/counted_float/_counted_float_benchmark.py +15 -11
  7. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/benchmarking/flops/_array_generator.py +10 -10
  8. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/benchmarking/flops/_flops_benchmark_suite.py +36 -37
  9. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/benchmarking/flops/_flops_micro_benchmark.py +10 -9
  10. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/benchmarking/micro/_micro_benchmark.py +17 -15
  11. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/compatibility/_numba.py +8 -8
  12. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/counting/_builtin_data.py +38 -38
  13. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/counting/_context_managers.py +34 -21
  14. counted_float-1.1.1/counted_float/_core/counting/_counted_float.py +206 -0
  15. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/counting/_global_counter.py +33 -33
  16. counted_float-1.1.1/counted_float/_core/counting/_math_patching.py +262 -0
  17. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/counting/config/_config.py +13 -14
  18. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/counting/config/_defaults.py +14 -8
  19. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/_base.py +3 -3
  20. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/_flop_counts.py +13 -10
  21. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/_flop_type.py +4 -4
  22. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/_flop_weights.py +20 -25
  23. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/_instruction_latencies.py +12 -14
  24. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/utils/_cpu_freq.py +10 -11
  25. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/utils/_formatting.py +9 -11
  26. counted_float-1.1.1/counted_float/_core/utils/_geo_mean.py +11 -0
  27. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/utils/_latency.py +1 -1
  28. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/utils/_missing_data.py +5 -5
  29. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/utils/_rounding.py +9 -10
  30. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/utils/_timer.py +13 -9
  31. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/benchmarking/__init__.py +2 -0
  32. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/config/__init__.py +2 -0
  33. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v8_x/benchmarks/apple_m1_github_actions.json +1 -1
  34. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v8_x/benchmarks/apple_m3_max_mbp16.json +1 -1
  35. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v8_x/benchmarks/aws_graviton_2_neoverse_n1_ec2_m6g_xlarge.json +1 -1
  36. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v8_x/benchmarks/aws_graviton_3_neoverse_v1_ec2_m7g_xlarge.json +1 -1
  37. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v8_x/specs/arm_cortex_a76.json +1 -1
  38. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v8_x/specs/arm_cortex_x1.json +1 -1
  39. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v8_x/specs/arm_neoverse_n1.json +1 -1
  40. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v8_x/specs/arm_neoverse_v1.json +1 -1
  41. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_0/benchmarks/aws_graviton_4_neoverse_v2_ec2_m8g_xlarge.json +1 -1
  42. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_0/benchmarks/azure_cobalt_100_neoverse_n2_github_actions.json +1 -1
  43. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_0/specs/arm_cortex_x2.json +1 -1
  44. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_0/specs/arm_cortex_x3.json +1 -1
  45. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_0/specs/arm_neoverse_n2.json +1 -1
  46. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_0/specs/arm_neoverse_v2.json +1 -1
  47. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_2/specs/arm_cortex_x4.json +1 -1
  48. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_2/specs/arm_cortex_x925.json +1 -1
  49. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_2/specs/arm_neoverse_v3.json +1 -1
  50. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2017_zen1/benchmarks/amd_ryzen_1700x.json +1 -1
  51. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2017_zen1/other/analysis_uops_info_zen1+.json +1 -1
  52. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2020_zen3/benchmark/amd_epyc_7763_linux_github.json +1 -1
  53. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2020_zen3/benchmark/amd_epyc_7763_windows_github.json +1 -1
  54. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2020_zen3/other/analysis_agner_fog_r7_5800x.json +1 -1
  55. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2020_zen3/other/analysis_uops_info_zen3.json +1 -1
  56. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2022_zen4/benchmark/amd_epyc_9r14_ec2_m7a_xlarge.json +1 -1
  57. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2022_zen4/other/analysis_agner_fog_r9_7900x.json +1 -1
  58. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2022_zen4/other/analysis_uops_info_zen4.json +1 -1
  59. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2022_zen4/other/specs_amd.json +1 -1
  60. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2024_zen5/benchmark/amd_epyc_9r45_ec2_m8a_xlarge.json +1 -1
  61. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2024_zen5/other/analysis_agner_fog_r7_9800x3d.json +1 -1
  62. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/amd/2024_zen5/other/specs_amd.json +1 -1
  63. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2017_coffee_lake_gen_8/benchmarks/intel_i7_8550U_windows.json +1 -1
  64. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2017_coffee_lake_gen_8/benchmarks/intel_i7_8700B_macos_github_actions.json +1 -1
  65. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2017_coffee_lake_gen_8/other/analysis_agner_fog_coffee_lake.json +1 -1
  66. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2017_coffee_lake_gen_8/other/analysis_uops_info_coffee_lake.json +1 -1
  67. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2019_sunny_cove_gen_10/benchmarks/intel_xeon_8375c_ice_lake_ec2_m6i_xlarge.json +1 -1
  68. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2019_sunny_cove_gen_10/other/analysis_agner_fog_ice_lake.json +1 -1
  69. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2019_sunny_cove_gen_10/other/analysis_uops_info_ice_lake.json +1 -1
  70. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2019_sunny_cove_gen_10/other/analysis_uops_info_tiger_lake.json +1 -1
  71. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2021_golden_cove_gen_12/benchmarks/intel_xeon_8488c_sapphire_rapids_ec2_m7i_xlarge.json +1 -1
  72. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2021_golden_cove_gen_12/other/analysis_uops_info_alder_lake_p.json +1 -1
  73. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2021_golden_cove_gen_12/other/specs_intel.json +1 -1
  74. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2022_raptor_cove_gen_13_14/benchmarks/intel_xeon_8559c_emerald_rapids_ec2_i7i_xlarge.json +1 -1
  75. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2022_raptor_cove_gen_13_14/other/specs_intel.json +1 -1
  76. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2023_redwood_cove_ultra_1/benchmarks/intel_xeon_6975p_granite_rapids_ec2_m8i_xlarge.json +1 -1
  77. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/x86/intel/2023_redwood_cove_ultra_1/other/specs_intel.json +1 -1
  78. counted_float-1.1.1/counted_float/py.typed +0 -0
  79. counted_float-1.1.1/pyproject.toml +134 -0
  80. counted_float-1.0.5/counted_float/_core/counting/_counted_float.py +0 -402
  81. counted_float-1.0.5/counted_float/_core/utils/_geo_mean.py +0 -9
  82. counted_float-1.0.5/pyproject.toml +0 -69
  83. {counted_float-1.0.5 → counted_float-1.1.1}/.gitignore +0 -0
  84. {counted_float-1.0.5 → counted_float-1.1.1}/LICENSE +0 -0
  85. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/__init__.py +0 -0
  86. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/benchmarking/counted_float/__init__.py +0 -0
  87. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/benchmarking/flops/__init__.py +0 -0
  88. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/benchmarking/micro/__init__.py +0 -0
  89. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/compatibility/__init__.py +0 -0
  90. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/counting/__init__.py +0 -0
  91. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/counting/config/__init__.py +0 -0
  92. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/__init__.py +0 -0
  93. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/_flops_benchmark_meta_data.py +0 -0
  94. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/_flops_benchmark_result.py +0 -0
  95. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/_flops_benchmark_type.py +0 -0
  96. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/models/_micro_benchmark_result.py +0 -0
  97. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/_core/utils/__init__.py +0 -0
  98. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v8_x/benchmarks/apple_m3_mba15.json +0 -0
  99. {counted_float-1.0.5 → counted_float-1.1.1}/counted_float/data/arm/v9_2/benchmarks/apple_m4_pro_mbp16.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: counted-float
3
- Version: 1.0.5
3
+ Version: 1.1.1
4
4
  Summary: Count floating-point operations in Python code & benchmark relative flop costs.
5
5
  Project-URL: Source, https://github.com/bertpl/counted-float
6
6
  Project-URL: ChangeLog, https://github.com/bertpl/counted-float/blob/main/CHANGELOG.md
@@ -20,9 +20,9 @@ Requires-Dist: numba>=0.50; extra == 'numba'
20
20
  Description-Content-Type: text/markdown
21
21
 
22
22
  ![shields.io-python-versions](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue)
23
- ![genbadge-test-count](https://bertpl.github.io/counted-float/version_artifacts/release/v1.0.5/badge-test-count.svg)
24
- ![genbadge-test-coverage](https://bertpl.github.io/counted-float/version_artifacts/release/v1.0.5/badge-coverage.svg)
25
- ![counted_float logo](https://bertpl.github.io/counted-float/version_artifacts/release/v1.0.5/splash.webp)
23
+ ![genbadge-test-count](https://bertpl.github.io/counted-float/version_artifacts/release/v1.1.1/badge-test-count.svg)
24
+ ![genbadge-test-coverage](https://bertpl.github.io/counted-float/version_artifacts/release/v1.1.1/badge-coverage.svg)
25
+ ![counted_float logo](https://bertpl.github.io/counted-float/version_artifacts/release/v1.1.1/splash.webp)
26
26
 
27
27
  # counted-float
28
28
 
@@ -30,8 +30,8 @@ This Python package provides functionality for...
30
30
  - **counting floating point operations** (FLOPs) of numerical algorithms implemented in plain Python, optionally weighted by their relative cost of execution
31
31
  - **running benchmarks** to estimate the relative cost of executing various floating-point operations (requires `numba` optional dependency for achieving accurate results)
32
32
 
33
- The target application area is evaluation of research prototypes of numerical algorithms where (weighted) flop counting can be
34
- useful for estimating total computational cost, in cases where benchmarking a compiled version (C, Rust, ...) is not
33
+ The target application area is evaluation of research prototypes of numerical algorithms where (weighted) flop counting can be
34
+ useful for estimating total computational cost, in cases where benchmarking a compiled version (C, Rust, ...) is not
35
35
  feasible or desirable.
36
36
 
37
37
  Flop weights are computed using a highly curated dataset spanning a wide range of modern CPUs:
@@ -61,10 +61,12 @@ The `CountedFloat` class is a subclass of `float` and is "contagious", meaning t
61
61
  ensure results of math operations where at least one operand is a `CountedFloat` will also be a `CountedFloat`.
62
62
  This way we ensure flop counting is a 'closed system'.
63
63
 
64
- On top of this, we monkey-patch the `math` module to ensure that all math operations
65
- that require counting (`sqrt`, `log2`, `pow`, ...) are also instrumented.
64
+ On top of this, `math` module functions that require counting (`sqrt`, `log2`, `pow`, ...) are
65
+ also instrumented: while a `FlopCountingContext` is active (see below), they are temporarily
66
+ replaced by counting equivalents. Outside such a context — including at plain `import` time —
67
+ the `math` module is left completely untouched.
66
68
 
67
- **Example 1**:
69
+ **Example**:
68
70
 
69
71
  ```python
70
72
  from counted_float import CountedFloat
@@ -78,18 +80,6 @@ is_float_1 = isinstance(cf, float) # True
78
80
  is_float_2 = isinstance(result, float) # True
79
81
  ```
80
82
 
81
- **Example 2**:
82
-
83
- ```python
84
- import math
85
- from counted_float import CountedFloat
86
-
87
- cf1 = CountedFloat(0.81)
88
-
89
- s = math.sqrt(cf1) # s = CountedFloat(0.9)
90
- is_float = isinstance(s, float) # True
91
- ```
92
-
93
83
  ### The counting model: what gets counted and why
94
84
 
95
85
  The counting model is a contract with two sides:
@@ -118,6 +108,13 @@ The library detects constants through two mechanisms, applying the same rule:
118
108
  The flip side: an unwrapped runtime input is invisible to the counter — that is a wrapping error
119
109
  at your algorithm's boundary, not something the library can detect. When in doubt, wrap.
120
110
 
111
+ One more consequence of the context-scoped `math` patching: `math.*` calls participate in
112
+ counting (and in contagion) only while a `FlopCountingContext` is active. Operator-based
113
+ contagion (`+`, `*`, `**`, ...) works everywhere, but counts are meant to be read through a
114
+ context — so the practical rule is simply: run your measured algorithm inside one.
115
+
116
+ ## 2.2. FLOP counting context managers
117
+
121
118
  Once we use the `CountedFloat` class, we can use the available context managers to count the number of
122
119
  flops performed by `CountedFloat` objects.
123
120
 
@@ -136,7 +133,24 @@ counts = ctx.flop_counts() # {FlopType.MUL: 1, FlopType.ADD: 1}
136
133
  counts.total_count() # 2
137
134
  ```
138
135
 
139
- **Example 2**: _pause counting 1_
136
+ **Example 2**: _math module functions_
137
+
138
+ ```python
139
+ import math
140
+ from counted_float import CountedFloat, FlopCountingContext
141
+
142
+ cf1 = CountedFloat(0.81)
143
+
144
+ with FlopCountingContext() as ctx:
145
+ s = math.sqrt(cf1) # s = CountedFloat(0.9)
146
+
147
+ counts = ctx.flop_counts() # {FlopType.SQRT: 1}
148
+ ```
149
+
150
+ Note that `math.*` functions are only instrumented *inside* the context: outside it,
151
+ `math.sqrt(cf1)` returns a plain `float` and counts nothing.
152
+
153
+ **Example 3**: _pause counting 1_
140
154
 
141
155
  ```python
142
156
  from counted_float import CountedFloat, FlopCountingContext
@@ -155,7 +169,7 @@ counts = ctx.flop_counts() # {FlopType.MUL: 1, FlopType.SUB: 1}
155
169
  counts.total_count() # 2
156
170
  ```
157
171
 
158
- **Example 3**: _pause counting 2_
172
+ **Example 4**: _pause counting 2_
159
173
 
160
174
  ```python
161
175
  from counted_float import CountedFloat, FlopCountingContext, PauseFlopCounting
@@ -176,7 +190,7 @@ counts.total_count() # 2
176
190
  ## 2.3. Weighted FLOP counting
177
191
 
178
192
  The `counted_float` package contains a set of default, built-in FLOP weights, based on both empirical measurements
179
- and theoretical estimates of the relative cost of different floating point operations.
193
+ and theoretical estimates of the relative cost of different floating point operations.
180
194
 
181
195
  See [fpu_data_sources.md](https://github.com/bertpl/counted-float/tree/develop/docs/analysis_methodology.md) for
182
196
  rationale behind choice of data sources and methodology.
@@ -227,7 +241,7 @@ with FlopCountingContext() as ctx:
227
241
  _ = cf1 + cf2
228
242
  _ = cf1 ** cf2
229
243
  _ = math.log2(cf2)
230
-
244
+
231
245
  flop_counts = ctx.flop_counts()
232
246
  total_cost = flop_counts.total_weighted_cost() # 1 + 40 + 22 = 63
233
247
  ```
@@ -329,7 +343,7 @@ from counted_float.config import get_builtin_flop_weights
329
343
 
330
344
  # 3. Benchmarking
331
345
 
332
- If the package is installed with the optional `numba` dependency, it provides the ability to micro-benchmark
346
+ If the package is installed with the optional `numba` dependency, it provides the ability to micro-benchmark
333
347
  floating point operations as follows:
334
348
 
335
349
  ```
@@ -367,7 +381,7 @@ div : wwwwwwwwwwwwwww.........................
367
381
  div_div : wwwwwwwwwwwwwww......................... [ 5.00 µs ± 0.2% | 20.3K cpu cycles ± 0.2% ] / 1000 iterations
368
382
  lte_addsub : wwwwwwwwwwwwwww......................... [ 1.71 µs ± 0.2% | 6.94K cpu cycles ± 0.2% ] / 1000 iterations
369
383
 
370
- >>> results.flop_weights().show()
384
+ >>> results.flop_weights().show()
371
385
 
372
386
  {
373
387
  FlopType.ABS [abs(x)] : 0.89904
@@ -427,86 +441,86 @@ ALL 0.44
427
441
  │ │ │ ├─apple_m3_mba15 0.90 0.90 1.68 1.00 1.00 1.53 1.24 / / 4.06 5.27 16.68 17.43 17.56 18.09 21.07 17.29 28.63 29.06 38.46 32.32 39.43
428
442
  │ │ │ ├─aws_graviton_2_neoverse_n1_ec2_m6g_xlarge 0.46 1.47 0.38 1.00 1.00 1.38 2.01 / / 5.42 8.76 10.21 14.17 15.98 17.91 22.65 25.25 28.68 29.63 33.95 41.90 40.25
429
443
  │ │ │ └─aws_graviton_3_neoverse_v1_ec2_m7g_xlarge 0.51 1.00 0.01 1.00 1.00 1.50 1.99 / / 6.03 9.58 11.89 14.81 17.49 19.20 19.09 27.67 30.26 31.49 36.85 42.45 40.96
430
- │ │ └─specs 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.73 2.12 7.50 8.25 / / / / / / / / / / /
431
- │ │ ├─arm_cortex_a76 1.00 1.00 1.00 1.00 1.00 1.50 1.50 2.00 3.00 7.50 8.50 / / / / / / / / / / /
432
- │ │ ├─arm_cortex_x1 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
433
- │ │ ├─arm_neoverse_n1 1.00 1.00 1.00 1.00 1.00 1.50 1.50 2.00 3.00 7.50 8.50 / / / / / / / / / / /
434
- │ │ └─arm_neoverse_v1 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
444
+ │ │ └─specs 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.73 2.12 7.50 8.25 / / / / / / / / / / /
445
+ │ │ ├─arm_cortex_a76 1.00 1.00 1.00 1.00 1.00 1.50 1.50 2.00 3.00 7.50 8.50 / / / / / / / / / / /
446
+ │ │ ├─arm_cortex_x1 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
447
+ │ │ ├─arm_neoverse_n1 1.00 1.00 1.00 1.00 1.00 1.50 1.50 2.00 3.00 7.50 8.50 / / / / / / / / / / /
448
+ │ │ └─arm_neoverse_v1 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
435
449
  │ ├─v9_0 0.74 1.00 0.25 1.00 1.00 1.51 1.80 1.27 1.27 6.78 8.83 14.32 17.90 20.66 22.09 24.04 32.41 35.53 37.31 44.86 52.70 48.30
436
450
  │ │ ├─benchmarks 0.54 1.00 0.06 1.00 1.00 1.52 2.16 / / 6.14 9.75 12.12 15.15 17.49 18.70 20.35 27.44 30.08 31.59 37.98 44.62 40.89
437
451
  │ │ │ ├─aws_graviton_4_neoverse_v2_ec2_m8g_xlarge 0.52 1.00 0.01 1.00 1.00 1.50 2.05 / / 6.04 9.49 12.66 14.40 17.66 18.54 19.86 27.12 28.76 30.11 36.90 42.70 38.65
438
452
  │ │ │ └─azure_cobalt_100_neoverse_n2_github_actions 0.57 1.00 0.33 1.00 1.00 1.53 2.28 / / 6.23 10.02 11.61 15.94 17.33 18.87 20.85 27.76 31.46 33.15 39.09 46.62 43.26
439
- │ │ └─specs 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
440
- │ │ ├─arm_cortex_x2 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
441
- │ │ ├─arm_cortex_x3 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
442
- │ │ ├─arm_neoverse_n2 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
443
- │ │ └─arm_neoverse_v2 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
453
+ │ │ └─specs 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
454
+ │ │ ├─arm_cortex_x2 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
455
+ │ │ ├─arm_cortex_x3 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
456
+ │ │ ├─arm_neoverse_n2 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
457
+ │ │ └─arm_neoverse_v2 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 7.50 8.00 / / / / / / / / / / /
444
458
  │ └─v9_2 1.16 1.16 1.55 1.02 1.00 1.51 1.55 1.66 1.66 5.80 6.70 18.44 20.04 19.11 19.75 22.96 19.23 29.29 31.69 40.89 34.73 42.11
445
459
  │ ├─benchmarks 1.35 1.35 2.40 1.03 1.00 1.51 1.84 / / 5.32 7.10 20.38 22.15 21.13 21.83 25.38 21.25 32.38 35.03 45.20 38.39 46.55
446
460
  │ │ └─apple_m4_pro_mbp16 1.35 1.35 2.40 1.03 1.00 1.51 1.84 / / 5.32 7.10 20.38 22.15 21.13 21.83 25.38 21.25 32.38 35.03 45.20 38.39 46.55
447
- │ └─specs 1.00 1.00 1.00 1.00 1.00 1.50 1.31 1.50 1.50 6.33 6.33 / / / / / / / / / / /
448
- │ ├─arm_cortex_x4 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 6.50 6.50 / / / / / / / / / / /
449
- │ ├─arm_cortex_x925 1.00 1.00 1.00 1.00 1.00 1.50 1.00 1.50 1.50 6.00 6.00 / / / / / / / / / / /
450
- │ └─arm_neoverse_v3 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 6.50 6.50 / / / / / / / / / / /
461
+ │ └─specs 1.00 1.00 1.00 1.00 1.00 1.50 1.31 1.50 1.50 6.33 6.33 / / / / / / / / / / /
462
+ │ ├─arm_cortex_x4 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 6.50 6.50 / / / / / / / / / / /
463
+ │ ├─arm_cortex_x925 1.00 1.00 1.00 1.00 1.00 1.50 1.00 1.50 1.50 6.00 6.00 / / / / / / / / / / /
464
+ │ └─arm_neoverse_v3 1.00 1.00 1.00 1.00 1.00 1.50 1.50 1.50 1.50 6.50 6.50 / / / / / / / / / / /
451
465
  └─x86 0.21 0.49 1.50 0.98 1.00 1.30 1.97 2.46 2.31 4.98 7.15 15.62 16.40 18.29 23.83 22.58 24.87 28.39 28.70 41.03 41.15 43.35
452
466
  ├─amd 0.25 0.45 1.52 0.99 1.00 1.17 1.22 2.39 2.51 4.74 7.38 18.22 16.50 17.98 24.59 23.73 24.13 28.04 28.30 42.41 40.31 45.11
453
467
  │ ├─2017_zen1 0.34 0.34 1.16 1.00 1.00 1.29 1.34 3.07 3.07 4.18 6.44 63.95 19.71 17.05 32.24 43.83 18.79 30.58 30.27 57.99 39.24 66.55
454
468
  │ │ ├─benchmarks 0.35 0.35 0.58 1.01 1.00 1.24 1.34 / / 4.03 6.23 58.90 18.16 15.70 29.69 40.37 17.30 28.16 27.88 53.41 36.14 61.29
455
469
  │ │ │ └─amd_ryzen_1700x 0.35 0.35 0.58 1.01 1.00 1.24 1.34 / / 4.03 6.23 58.90 18.16 15.70 29.69 40.37 17.30 28.16 27.88 53.41 36.14 61.29
456
- │ │ └─other 0.33 0.33 2.33 1.00 1.00 1.33 1.33 3.33 3.33 4.33 6.67 / / / / / / / / / / /
457
- │ │ └─analysis_uops_info_zen1+ 0.33 0.33 2.33 1.00 1.00 1.33 1.33 3.33 3.33 4.33 6.67 / / / / / / / / / / /
470
+ │ │ └─other 0.33 0.33 2.33 1.00 1.00 1.33 1.33 3.33 3.33 4.33 6.67 / / / / / / / / / / /
471
+ │ │ └─analysis_uops_info_zen1+ 0.33 0.33 2.33 1.00 1.00 1.33 1.33 3.33 3.33 4.33 6.67 / / / / / / / / / / /
458
472
  │ ├─2020_zen3 0.18 0.34 1.16 1.00 1.00 0.98 1.00 2.17 2.34 4.36 6.76 11.69 15.85 16.99 22.46 19.32 21.13 24.05 24.07 38.13 38.04 39.06
459
473
  │ │ ├─benchmark 0.10 0.34 0.68 1.00 1.00 1.00 1.00 / / 4.30 6.86 10.33 14.01 15.02 19.86 17.08 18.69 21.26 21.28 33.72 33.63 34.54
460
474
  │ │ │ ├─amd_epyc_7763_linux_github 0.10 0.34 0.68 1.00 1.00 1.00 1.00 / / 4.31 6.86 10.35 11.79 15.35 14.36 14.53 22.21 22.45 22.86 30.57 33.34 31.25
461
475
  │ │ │ └─amd_epyc_7763_windows_github 0.10 0.34 0.68 1.00 1.00 1.00 1.00 / / 4.28 6.86 10.32 16.65 14.70 27.48 20.08 15.72 20.14 19.82 37.19 33.92 38.17
462
- │ │ └─other 0.33 0.33 1.97 1.00 1.00 0.95 1.00 2.45 2.65 4.42 6.67 / / / / / / / / / / /
463
- │ │ ├─analysis_agner_fog_r7_5800x 0.33 0.33 1.67 1.00 1.00 / 1.00 2.00 2.33 4.50 6.67 / / / / / / / / / / /
464
- │ │ └─analysis_uops_info_zen3 0.33 0.33 2.33 1.00 1.00 1.00 1.00 3.00 3.00 4.33 6.67 / / / / / / / / / / /
476
+ │ │ └─other 0.33 0.33 1.97 1.00 1.00 0.95 1.00 2.45 2.65 4.42 6.67 / / / / / / / / / / /
477
+ │ │ ├─analysis_agner_fog_r7_5800x 0.33 0.33 1.67 1.00 1.00 / 1.00 2.00 2.33 4.50 6.67 / / / / / / / / / / /
478
+ │ │ └─analysis_uops_info_zen3 0.33 0.33 2.33 1.00 1.00 1.00 1.00 3.00 3.00 4.33 6.67 / / / / / / / / / / /
465
479
  │ ├─2022_zen4 0.15 0.33 1.41 0.99 1.00 0.99 1.00 1.85 1.78 4.41 6.92 10.77 12.47 17.12 20.49 15.83 25.03 24.11 24.56 32.21 35.99 33.32
466
480
  │ │ ├─benchmark 0.07 0.33 1.57 0.97 1.00 0.98 0.99 / / 4.49 6.95 9.97 11.55 15.86 18.98 14.66 23.19 22.34 22.75 29.84 33.34 30.87
467
481
  │ │ │ └─amd_epyc_9r14_ec2_m7a_xlarge 0.07 0.33 1.57 0.97 1.00 0.98 0.99 / / 4.49 6.95 9.97 11.55 15.86 18.98 14.66 23.19 22.34 22.75 29.84 33.34 30.87
468
- │ │ └─other 0.33 0.33 1.28 1.00 1.00 1.01 1.00 2.00 1.92 4.33 6.89 / / / / / / / / / / /
469
- │ │ ├─analysis_agner_fog_r9_7900x 0.33 0.33 1.33 1.00 1.00 / 1.00 2.00 2.00 4.33 7.00 / / / / / / / / / / /
470
- │ │ ├─analysis_uops_info_zen4 0.33 0.33 2.33 1.00 1.00 1.00 1.00 3.00 2.67 4.33 7.00 / / / / / / / / / / /
471
- │ │ └─specs_amd 0.33 0.33 0.67 1.00 1.00 1.00 1.00 1.33 1.33 4.33 6.67 / / / / / / / / / / /
482
+ │ │ └─other 0.33 0.33 1.28 1.00 1.00 1.01 1.00 2.00 1.92 4.33 6.89 / / / / / / / / / / /
483
+ │ │ ├─analysis_agner_fog_r9_7900x 0.33 0.33 1.33 1.00 1.00 / 1.00 2.00 2.00 4.33 7.00 / / / / / / / / / / /
484
+ │ │ ├─analysis_uops_info_zen4 0.33 0.33 2.33 1.00 1.00 1.00 1.00 3.00 2.67 4.33 7.00 / / / / / / / / / / /
485
+ │ │ └─specs_amd 0.33 0.33 0.67 1.00 1.00 1.00 1.00 1.33 1.33 4.33 6.67 / / / / / / / / / / /
472
486
  │ └─2024_zen5 0.39 1.04 2.83 0.95 1.00 1.50 1.68 2.64 3.08 6.31 9.84 13.71 19.04 21.09 24.62 23.64 34.12 34.84 35.83 45.40 49.16 47.78
473
487
  │ ├─benchmark 0.21 1.53 2.95 0.91 1.00 1.36 1.87 / / 6.12 9.69 13.33 18.50 20.50 23.94 22.98 33.17 33.87 34.83 44.14 47.79 46.45
474
488
  │ │ └─amd_epyc_9r45_ec2_m8a_xlarge 0.21 1.53 2.95 0.91 1.00 1.36 1.87 / / 6.12 9.69 13.33 18.50 20.50 23.94 22.98 33.17 33.87 34.83 44.14 47.79 46.45
475
- │ └─other 0.71 0.71 2.72 1.00 1.00 1.66 1.50 2.72 3.17 6.50 10.00 / / / / / / / / / / /
476
- │ ├─analysis_agner_fog_r7_9800x3d 1.00 1.00 3.00 1.00 1.00 / 1.50 3.00 3.50 6.50 10.00 / / / / / / / / / / /
477
- │ └─specs_amd 0.50 0.50 / 1.00 1.00 1.50 1.50 / / 6.50 10.00 / / / / / / / / / / /
489
+ │ └─other 0.71 0.71 2.72 1.00 1.00 1.66 1.50 2.72 3.17 6.50 10.00 / / / / / / / / / / /
490
+ │ ├─analysis_agner_fog_r7_9800x3d 1.00 1.00 3.00 1.00 1.00 / 1.50 3.00 3.50 6.50 10.00 / / / / / / / / / / /
491
+ │ └─specs_amd 0.50 0.50 / 1.00 1.00 1.50 1.50 / / 6.50 10.00 / / / / / / / / / / /
478
492
  └─intel 0.18 0.53 1.47 0.98 1.00 1.45 3.17 2.53 2.14 5.23 6.93 13.38 16.30 18.60 23.09 21.50 25.64 28.75 29.11 39.70 42.01 41.67
479
493
  ├─2017_coffee_lake_gen_8 0.14 0.40 1.12 0.98 1.00 1.03 1.99 1.69 1.69 3.54 4.56 10.27 16.31 12.42 19.10 21.50 12.84 20.48 20.47 32.65 28.21 35.74
480
494
  │ ├─benchmarks 0.08 0.63 1.73 0.96 1.00 1.05 1.99 / / 3.45 4.78 10.69 16.98 12.92 19.88 22.38 13.37 21.31 21.31 33.99 29.36 37.20
481
495
  │ │ ├─intel_i7_8550U_windows 0.08 0.44 1.69 1.01 1.00 1.01 2.00 / / 3.15 4.79 7.02 15.44 11.99 30.07 21.33 13.00 17.80 17.21 32.36 28.09 35.06
482
496
  │ │ └─intel_i7_8700B_macos_github_actions 0.08 0.91 1.77 0.92 1.00 1.10 1.97 / / 3.78 4.77 16.30 18.68 13.93 13.15 23.47 13.74 25.51 26.38 35.70 30.68 39.48
483
- │ └─other 0.25 0.25 0.73 1.00 1.00 1.00 2.00 1.62 1.62 3.62 4.36 / / / / / / / / / / /
484
- │ ├─analysis_agner_fog_coffee_lake 0.25 0.25 / 1.00 1.00 1.00 2.00 1.50 1.50 3.50 4.00 / / / / / / / / / / /
485
- │ └─analysis_uops_info_coffee_lake 0.25 0.25 0.75 1.00 1.00 1.00 2.00 1.75 1.75 3.75 4.75 / / / / / / / / / / /
497
+ │ └─other 0.25 0.25 0.73 1.00 1.00 1.00 2.00 1.62 1.62 3.62 4.36 / / / / / / / / / / /
498
+ │ ├─analysis_agner_fog_coffee_lake 0.25 0.25 / 1.00 1.00 1.00 2.00 1.50 1.50 3.50 4.00 / / / / / / / / / / /
499
+ │ └─analysis_uops_info_coffee_lake 0.25 0.25 0.75 1.00 1.00 1.00 2.00 1.75 1.75 3.75 4.75 / / / / / / / / / / /
486
500
  ├─2019_sunny_cove_gen_10 0.10 0.33 0.92 0.95 1.00 0.98 1.94 1.60 1.60 3.58 4.54 12.27 9.43 14.01 17.18 13.39 20.23 19.23 19.83 28.71 29.72 28.95
487
501
  │ ├─benchmarks 0.04 0.44 1.30 0.91 1.00 1.00 1.89 / / 3.50 4.60 11.82 9.08 13.49 16.55 12.90 19.48 18.52 19.09 27.65 28.63 27.88
488
502
  │ │ └─intel_xeon_8375c_ice_lake_ec2_m6i_xlarge 0.04 0.44 1.30 0.91 1.00 1.00 1.89 / / 3.50 4.60 11.82 9.08 13.49 16.55 12.90 19.48 18.52 19.09 27.65 28.63 27.88
489
- │ └─other 0.25 0.25 0.66 1.00 1.00 0.97 2.00 1.66 1.66 3.66 4.49 / / / / / / / / / / /
490
- │ ├─analysis_agner_fog_ice_lake 0.25 0.25 0.50 1.00 1.00 / 2.00 1.50 1.50 3.50 4.00 / / / / / / / / / / /
491
- │ ├─analysis_uops_info_ice_lake 0.25 0.25 0.75 1.00 1.00 1.00 2.00 1.75 1.75 3.75 4.75 / / / / / / / / / / /
492
- │ └─analysis_uops_info_tiger_lake 0.25 0.25 0.75 1.00 1.00 1.00 2.00 1.75 1.75 3.75 4.75 / / / / / / / / / / /
503
+ │ └─other 0.25 0.25 0.66 1.00 1.00 0.97 2.00 1.66 1.66 3.66 4.49 / / / / / / / / / / /
504
+ │ ├─analysis_agner_fog_ice_lake 0.25 0.25 0.50 1.00 1.00 / 2.00 1.50 1.50 3.50 4.00 / / / / / / / / / / /
505
+ │ ├─analysis_uops_info_ice_lake 0.25 0.25 0.75 1.00 1.00 1.00 2.00 1.75 1.75 3.75 4.75 / / / / / / / / / / /
506
+ │ └─analysis_uops_info_tiger_lake 0.25 0.25 0.75 1.00 1.00 1.00 2.00 1.75 1.75 3.75 4.75 / / / / / / / / / / /
493
507
  ├─2021_golden_cove_gen_12 0.23 0.64 1.76 0.99 1.00 1.80 4.05 3.11 2.63 6.34 8.58 14.98 18.37 21.93 25.63 24.02 32.77 34.73 35.06 44.04 50.72 46.59
494
508
  │ ├─benchmarks 0.13 0.99 2.52 0.98 1.00 1.99 5.03 / / 6.80 9.74 16.28 19.97 23.84 27.86 26.11 35.63 37.76 38.12 47.88 55.14 50.65
495
509
  │ │ └─intel_xeon_8488c_sapphire_rapids_ec2_m7i_xlarge 0.13 0.99 2.52 0.98 1.00 1.99 5.03 / / 6.80 9.74 16.28 19.97 23.84 27.86 26.11 35.63 37.76 38.12 47.88 55.14 50.65
496
- │ └─other 0.41 0.41 1.22 1.00 1.00 1.63 3.27 2.86 2.42 5.92 7.55 / / / / / / / / / / /
497
- │ ├─analysis_uops_info_alder_lake_p 0.33 0.33 1.00 1.00 1.00 1.33 2.67 2.33 2.33 5.00 6.33 / / / / / / / / / / /
498
- │ └─specs_intel 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
510
+ │ └─other 0.41 0.41 1.22 1.00 1.00 1.63 3.27 2.86 2.42 5.92 7.55 / / / / / / / / / / /
511
+ │ ├─analysis_uops_info_alder_lake_p 0.33 0.33 1.00 1.00 1.00 1.33 2.67 2.33 2.33 5.00 6.33 / / / / / / / / / / /
512
+ │ └─specs_intel 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
499
513
  ├─2022_raptor_cove_gen_13_14 0.26 0.71 1.96 1.00 1.00 2.00 4.51 3.55 2.53 7.00 9.49 15.73 19.93 24.00 28.64 26.02 35.73 37.86 38.33 49.02 55.79 51.16
500
514
  │ ├─benchmarks 0.13 1.00 2.55 1.00 1.00 2.00 5.08 / / 7.00 10.00 15.95 20.20 24.33 29.03 26.37 36.21 38.37 38.85 49.69 56.55 51.86
501
515
  │ │ └─intel_xeon_8559c_emerald_rapids_ec2_i7i_xlarge 0.13 1.00 2.55 1.00 1.00 2.00 5.08 / / 7.00 10.00 15.95 20.20 24.33 29.03 26.37 36.21 38.37 38.85 49.69 56.55 51.86
502
- │ └─other 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
503
- │ └─specs_intel 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
516
+ │ └─other 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
517
+ │ └─specs_intel 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
504
518
  └─2023_redwood_cove_ultra_1 0.24 0.71 1.95 0.99 1.00 1.73 4.51 3.46 2.47 6.97 9.47 14.44 20.41 24.32 27.29 25.53 36.40 37.92 38.32 48.75 55.19 50.95
505
519
  ├─benchmarks 0.12 1.01 2.53 0.98 1.00 1.50 5.09 / / 6.94 9.96 14.28 20.19 24.06 26.99 25.26 36.01 37.51 37.91 48.22 54.60 50.40
506
520
  │ └─intel_xeon_6975p_granite_rapids_ec2_m8i_xlarge 0.12 1.01 2.53 0.98 1.00 1.50 5.09 / / 6.94 9.96 14.28 20.19 24.06 26.99 25.26 36.01 37.51 37.91 48.22 54.60 50.40
507
- └─other 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
508
- └─specs_intel 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
509
-
521
+ └─other 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
522
+ └─specs_intel 0.50 0.50 1.50 1.00 1.00 2.00 4.00 3.50 2.50 7.00 9.00 / / / / / / / / / / /
523
+
510
524
 
511
525
  ```
512
526
 
@@ -543,10 +557,10 @@ CountedFloat is 37.3x slower than float
543
557
  - currently any non-Python-built-in math operations are not counted (e.g. `numpy`)
544
558
  - not all Python built-in math operations are counted (e.g. hyperbolic functions)
545
559
  - flop weights should be taken with a grain of salt and should only provide relative ballpark estimates w.r.t computational complexity. Production implementations in a compiled language could have vastly differing performance depending on cpu cache sizes, branch prediction misses, compiler optimizations using vector operations (AVX etc...), etc...
546
-
560
+
547
561
  # Appendix A - Flop counting / analysis details
548
562
 
549
- This appendix provides detailed information about how each floating-point operation (FLOP) type is counted and analyzed in the `counted-float` package. For each flop type, you will find:
563
+ This appendix provides detailed information about how each floating-point operation (FLOP) type is counted and analyzed in the `counted-float` package. All `math.*` entries below assume an active `FlopCountingContext` (outside one, the `math` module is not instrumented). For each flop type, you will find:
550
564
  - Relevant scalar instructions for ARM (v8+) and x86 (SSE2+)
551
565
  - Python operations that are counted for this flop type
552
566
  - Python operations that are *not* counted for this flop type
@@ -705,4 +719,4 @@ This appendix provides detailed information about how each floating-point operat
705
719
  - **ARM:** (software)
706
720
  - **x86:** (software)
707
721
  - **Counted Python operations:** `math.tan(x)` for `CountedFloat`
708
- - **Not counted:** `tan` on non-CountedFloat, `numpy.tan
722
+ - **Not counted:** `tan` on non-CountedFloat, `numpy.tan