Skip to content

Commit f5f69aa

Browse files
committed
move the T-complexity formula to GateCounts
1 parent 3f36901 commit f5f69aa

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

qualtran/cirq_interop/t_complexity_protocol.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from qualtran import Bloq, Controlled, DecomposeNotImplementedError, DecomposeTypeError
2222
from qualtran.resource_counting import SympySymbolAllocator
23-
from qualtran.symbolics import ceil, log2, SymbolicFloat, SymbolicInt
23+
from qualtran.symbolics import ceil, SymbolicFloat, SymbolicInt
2424

2525
from .decompose_protocol import _decompose_once_considering_known_decomposition
2626

@@ -38,7 +38,9 @@ class TComplexity:
3838

3939
@staticmethod
4040
def rotation_cost(eps: SymbolicFloat) -> SymbolicFloat:
41-
return ceil(1.149 * log2(1.0 / eps) + 9.2)
41+
from qualtran.resource_counting import GateCounts
42+
43+
return GateCounts.rotation_t_cost(eps)
4244

4345
def t_incl_rotations(self, eps: float = 1e-11) -> SymbolicInt:
4446
"""Return the total number of T gates after compiling rotations"""

qualtran/resource_counting/_bloq_counts.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import numpy as np
2121
from attrs import field, frozen
2222

23+
from qualtran.symbolics import ceil, log2, SymbolicFloat
24+
2325
from ._call_graph import get_bloq_callee_counts
2426
from ._costing import CostKey
2527
from .classify_bloqs import bloq_is_clifford, bloq_is_rotation
@@ -236,6 +238,16 @@ def _keep(key, value) -> bool:
236238

237239
return {k: v for k, v in d.items() if _keep(k, v)}
238240

241+
@staticmethod
242+
def rotation_t_cost(eps: SymbolicFloat) -> SymbolicFloat:
243+
"""T-cost of a single Z rotation with precision `eps`.
244+
245+
References:
246+
[Efficient synthesis of universal Repeat-Until-Success circuits](https://arxiv.org/abs/1404.5320)
247+
Bocharov et. al. 2014. Page 4, Paragraph "Simulation Results."
248+
"""
249+
return ceil(1.149 * log2(1.0 / eps) + 9.2)
250+
239251
@property
240252
def rotation_to_t(self) -> int:
241253
"""Total number of T Gates for the rotations."""

0 commit comments

Comments
 (0)