bloqade-circuit 0.6.4__py3-none-any.whl → 0.9.1__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.
- bloqade/analysis/address/__init__.py +8 -4
- bloqade/analysis/address/analysis.py +123 -33
- bloqade/analysis/address/impls.py +293 -90
- bloqade/analysis/address/lattice.py +209 -24
- bloqade/analysis/fidelity/analysis.py +11 -23
- bloqade/analysis/measure_id/analysis.py +18 -20
- bloqade/analysis/measure_id/impls.py +31 -29
- bloqade/annotate/__init__.py +6 -0
- bloqade/annotate/_dialect.py +3 -0
- bloqade/annotate/_interface.py +22 -0
- bloqade/annotate/stmts.py +29 -0
- bloqade/annotate/types.py +13 -0
- bloqade/cirq_utils/__init__.py +4 -2
- bloqade/cirq_utils/emit/__init__.py +3 -0
- bloqade/cirq_utils/emit/base.py +246 -0
- bloqade/cirq_utils/emit/gate.py +104 -0
- bloqade/cirq_utils/emit/noise.py +90 -0
- bloqade/cirq_utils/emit/qubit.py +35 -0
- bloqade/cirq_utils/lowering.py +660 -0
- bloqade/cirq_utils/noise/__init__.py +0 -2
- bloqade/cirq_utils/noise/_two_zone_utils.py +7 -15
- bloqade/cirq_utils/noise/model.py +151 -191
- bloqade/cirq_utils/noise/transform.py +2 -2
- bloqade/cirq_utils/parallelize.py +9 -6
- bloqade/gemini/__init__.py +1 -0
- bloqade/gemini/analysis/__init__.py +3 -0
- bloqade/gemini/analysis/logical_validation/__init__.py +1 -0
- bloqade/gemini/analysis/logical_validation/analysis.py +17 -0
- bloqade/gemini/analysis/logical_validation/impls.py +101 -0
- bloqade/gemini/groups.py +67 -0
- bloqade/native/__init__.py +23 -0
- bloqade/native/_prelude.py +45 -0
- bloqade/native/dialects/__init__.py +0 -0
- bloqade/native/dialects/gate/__init__.py +2 -0
- bloqade/native/dialects/gate/_dialect.py +3 -0
- bloqade/native/dialects/gate/_interface.py +32 -0
- bloqade/native/dialects/gate/stmts.py +31 -0
- bloqade/native/stdlib/__init__.py +0 -0
- bloqade/native/stdlib/broadcast.py +246 -0
- bloqade/native/stdlib/simple.py +220 -0
- bloqade/native/upstream/__init__.py +4 -0
- bloqade/native/upstream/squin2native.py +79 -0
- bloqade/pyqrack/__init__.py +2 -2
- bloqade/pyqrack/base.py +7 -1
- bloqade/pyqrack/device.py +192 -18
- bloqade/pyqrack/native.py +49 -0
- bloqade/pyqrack/reg.py +6 -6
- bloqade/pyqrack/squin/gate/__init__.py +1 -0
- bloqade/pyqrack/squin/gate/gate.py +136 -0
- bloqade/pyqrack/squin/noise/native.py +120 -54
- bloqade/pyqrack/squin/qubit.py +39 -36
- bloqade/pyqrack/target.py +5 -4
- bloqade/pyqrack/task.py +114 -7
- bloqade/qasm2/_qasm_loading.py +3 -3
- bloqade/qasm2/dialects/core/address.py +21 -12
- bloqade/qasm2/dialects/expr/_emit.py +19 -8
- bloqade/qasm2/dialects/expr/stmts.py +7 -7
- bloqade/qasm2/dialects/noise/fidelity.py +4 -8
- bloqade/qasm2/dialects/noise/model.py +2 -1
- bloqade/qasm2/emit/base.py +16 -11
- bloqade/qasm2/emit/gate.py +11 -8
- bloqade/qasm2/emit/main.py +103 -3
- bloqade/qasm2/emit/target.py +9 -5
- bloqade/qasm2/groups.py +3 -2
- bloqade/qasm2/parse/lowering.py +0 -1
- bloqade/qasm2/passes/fold.py +14 -73
- bloqade/qasm2/passes/glob.py +2 -2
- bloqade/qasm2/passes/noise.py +1 -1
- bloqade/qasm2/passes/parallel.py +7 -5
- bloqade/qasm2/rewrite/__init__.py +0 -1
- bloqade/qasm2/rewrite/noise/heuristic_noise.py +7 -17
- bloqade/qasm2/rewrite/parallel_to_glob.py +28 -15
- bloqade/qasm2/rewrite/parallel_to_uop.py +2 -8
- bloqade/qasm2/rewrite/register.py +2 -2
- bloqade/qasm2/rewrite/uop_to_parallel.py +4 -2
- bloqade/qbraid/lowering.py +1 -0
- bloqade/qbraid/schema.py +2 -2
- bloqade/qubit/__init__.py +12 -0
- bloqade/qubit/_dialect.py +3 -0
- bloqade/qubit/_interface.py +49 -0
- bloqade/qubit/_prelude.py +45 -0
- bloqade/qubit/analysis/__init__.py +1 -0
- bloqade/qubit/analysis/address_impl.py +40 -0
- bloqade/qubit/stdlib/__init__.py +2 -0
- bloqade/qubit/stdlib/_new.py +34 -0
- bloqade/qubit/stdlib/broadcast.py +62 -0
- bloqade/qubit/stdlib/simple.py +59 -0
- bloqade/qubit/stmts.py +60 -0
- bloqade/rewrite/passes/__init__.py +6 -0
- bloqade/rewrite/passes/aggressive_unroll.py +103 -0
- bloqade/rewrite/passes/callgraph.py +116 -0
- bloqade/rewrite/passes/canonicalize_ilist.py +20 -14
- bloqade/rewrite/rules/split_ifs.py +18 -1
- bloqade/squin/__init__.py +47 -14
- bloqade/squin/analysis/__init__.py +0 -1
- bloqade/squin/analysis/schedule.py +10 -11
- bloqade/squin/gate/__init__.py +2 -0
- bloqade/squin/gate/_dialect.py +3 -0
- bloqade/squin/gate/_interface.py +98 -0
- bloqade/squin/gate/stmts.py +125 -0
- bloqade/squin/groups.py +5 -22
- bloqade/squin/noise/__init__.py +1 -10
- bloqade/squin/noise/_dialect.py +1 -1
- bloqade/squin/noise/_interface.py +45 -0
- bloqade/squin/noise/stmts.py +66 -28
- bloqade/squin/rewrite/U3_to_clifford.py +70 -51
- bloqade/squin/rewrite/__init__.py +0 -2
- bloqade/squin/rewrite/remove_dangling_qubits.py +2 -2
- bloqade/squin/rewrite/wrap_analysis.py +4 -35
- bloqade/squin/stdlib/__init__.py +0 -0
- bloqade/squin/stdlib/broadcast/__init__.py +34 -0
- bloqade/squin/stdlib/broadcast/_qubit.py +4 -0
- bloqade/squin/stdlib/broadcast/gate.py +260 -0
- bloqade/squin/stdlib/broadcast/noise.py +144 -0
- bloqade/squin/stdlib/simple/__init__.py +33 -0
- bloqade/squin/stdlib/simple/gate.py +242 -0
- bloqade/squin/stdlib/simple/noise.py +126 -0
- bloqade/stim/__init__.py +1 -0
- bloqade/stim/_wrappers.py +6 -0
- bloqade/stim/dialects/auxiliary/emit.py +19 -18
- bloqade/stim/dialects/collapse/emit_str.py +7 -8
- bloqade/stim/dialects/gate/emit.py +9 -10
- bloqade/stim/dialects/noise/emit.py +17 -13
- bloqade/stim/dialects/noise/stmts.py +5 -3
- bloqade/stim/emit/__init__.py +1 -0
- bloqade/stim/emit/impls.py +16 -0
- bloqade/stim/emit/stim_str.py +48 -31
- bloqade/stim/groups.py +12 -2
- bloqade/stim/parse/lowering.py +14 -17
- bloqade/stim/passes/__init__.py +0 -2
- bloqade/stim/passes/flatten.py +26 -0
- bloqade/stim/passes/simplify_ifs.py +6 -1
- bloqade/stim/passes/squin_to_stim.py +9 -84
- bloqade/stim/rewrite/__init__.py +2 -4
- bloqade/stim/rewrite/get_record_util.py +24 -0
- bloqade/stim/rewrite/ifs_to_stim.py +24 -25
- bloqade/stim/rewrite/qubit_to_stim.py +90 -41
- bloqade/stim/rewrite/set_detector_to_stim.py +68 -0
- bloqade/stim/rewrite/set_observable_to_stim.py +52 -0
- bloqade/stim/rewrite/squin_measure.py +9 -18
- bloqade/stim/rewrite/squin_noise.py +134 -108
- bloqade/stim/rewrite/util.py +5 -192
- bloqade/test_utils.py +1 -1
- bloqade/types.py +10 -0
- bloqade/validation/__init__.py +2 -0
- bloqade/validation/analysis/__init__.py +5 -0
- bloqade/validation/analysis/analysis.py +41 -0
- bloqade/validation/analysis/lattice.py +58 -0
- bloqade/validation/kernel_validation.py +77 -0
- {bloqade_circuit-0.6.4.dist-info → bloqade_circuit-0.9.1.dist-info}/METADATA +5 -6
- bloqade_circuit-0.9.1.dist-info/RECORD +265 -0
- bloqade/pyqrack/squin/op.py +0 -180
- bloqade/pyqrack/squin/runtime.py +0 -535
- bloqade/pyqrack/squin/wire.py +0 -51
- bloqade/rewrite/rules/flatten_ilist.py +0 -51
- bloqade/rewrite/rules/inline_getitem_ilist.py +0 -31
- bloqade/squin/_typeinfer.py +0 -20
- bloqade/squin/analysis/address_impl.py +0 -71
- bloqade/squin/analysis/nsites/__init__.py +0 -9
- bloqade/squin/analysis/nsites/analysis.py +0 -50
- bloqade/squin/analysis/nsites/impls.py +0 -92
- bloqade/squin/analysis/nsites/lattice.py +0 -49
- bloqade/squin/cirq/__init__.py +0 -280
- bloqade/squin/cirq/emit/emit_circuit.py +0 -109
- bloqade/squin/cirq/emit/noise.py +0 -49
- bloqade/squin/cirq/emit/op.py +0 -125
- bloqade/squin/cirq/emit/qubit.py +0 -60
- bloqade/squin/cirq/emit/runtime.py +0 -242
- bloqade/squin/cirq/lowering.py +0 -440
- bloqade/squin/lowering.py +0 -54
- bloqade/squin/noise/_wrapper.py +0 -40
- bloqade/squin/noise/rewrite.py +0 -111
- bloqade/squin/op/__init__.py +0 -41
- bloqade/squin/op/_dialect.py +0 -3
- bloqade/squin/op/_wrapper.py +0 -121
- bloqade/squin/op/number.py +0 -5
- bloqade/squin/op/rewrite.py +0 -46
- bloqade/squin/op/stdlib.py +0 -62
- bloqade/squin/op/stmts.py +0 -276
- bloqade/squin/op/traits.py +0 -43
- bloqade/squin/op/types.py +0 -26
- bloqade/squin/qubit.py +0 -184
- bloqade/squin/rewrite/canonicalize.py +0 -60
- bloqade/squin/rewrite/desugar.py +0 -124
- bloqade/squin/types.py +0 -8
- bloqade/squin/wire.py +0 -201
- bloqade/stim/rewrite/wire_identity_elimination.py +0 -24
- bloqade/stim/rewrite/wire_to_stim.py +0 -57
- bloqade_circuit-0.6.4.dist-info/RECORD +0 -234
- {bloqade_circuit-0.6.4.dist-info → bloqade_circuit-0.9.1.dist-info}/WHEEL +0 -0
- {bloqade_circuit-0.6.4.dist-info → bloqade_circuit-0.9.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from abc import ABC
|
|
2
|
+
from dataclasses import field, dataclass
|
|
3
|
+
|
|
4
|
+
from kirin import ir
|
|
5
|
+
from kirin.analysis import ForwardExtra, ForwardFrame
|
|
6
|
+
|
|
7
|
+
from .lattice import ErrorType
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class ValidationFrame(ForwardFrame[ErrorType]):
|
|
12
|
+
# NOTE: cannot be set[Error] since that's not hashable
|
|
13
|
+
errors: list[ir.ValidationError] = field(default_factory=list)
|
|
14
|
+
"""List of all ecnountered errors.
|
|
15
|
+
|
|
16
|
+
Append a `kirin.ir.ValidationError` to this list in the method implementation
|
|
17
|
+
in order for it to get picked up by the `KernelValidation` run.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass
|
|
22
|
+
class ValidationAnalysis(ForwardExtra[ValidationFrame, ErrorType], ABC):
|
|
23
|
+
"""Analysis pass that indicates errors in the IR according to the respective method tables.
|
|
24
|
+
|
|
25
|
+
If you need to implement validation for a dialect shared by many groups (for example, if you need to ascertain if statements have a specific form)
|
|
26
|
+
you'll need to inherit from this class.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
lattice = ErrorType
|
|
30
|
+
|
|
31
|
+
def eval_fallback(self, frame: ValidationFrame, node: ir.Statement):
|
|
32
|
+
# NOTE: default to no errors
|
|
33
|
+
return tuple(self.lattice.top() for _ in node.results)
|
|
34
|
+
|
|
35
|
+
def initialize_frame(
|
|
36
|
+
self, node: ir.Statement, *, has_parent_access: bool = False
|
|
37
|
+
) -> ValidationFrame:
|
|
38
|
+
return ValidationFrame(node, has_parent_access=has_parent_access)
|
|
39
|
+
|
|
40
|
+
def method_self(self, method: ir.Method) -> ErrorType:
|
|
41
|
+
return self.lattice.top()
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from typing import final
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
from kirin.lattice import (
|
|
5
|
+
SingletonMeta,
|
|
6
|
+
BoundedLattice,
|
|
7
|
+
IsSubsetEqMixin,
|
|
8
|
+
SimpleJoinMixin,
|
|
9
|
+
SimpleMeetMixin,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclass
|
|
14
|
+
class ErrorType(
|
|
15
|
+
SimpleJoinMixin["ErrorType"],
|
|
16
|
+
SimpleMeetMixin["ErrorType"],
|
|
17
|
+
IsSubsetEqMixin["ErrorType"],
|
|
18
|
+
BoundedLattice["ErrorType"],
|
|
19
|
+
):
|
|
20
|
+
|
|
21
|
+
@classmethod
|
|
22
|
+
def bottom(cls) -> "ErrorType":
|
|
23
|
+
return InvalidErrorType()
|
|
24
|
+
|
|
25
|
+
@classmethod
|
|
26
|
+
def top(cls) -> "ErrorType":
|
|
27
|
+
return NoError()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@final
|
|
31
|
+
@dataclass
|
|
32
|
+
class InvalidErrorType(ErrorType, metaclass=SingletonMeta):
|
|
33
|
+
"""Bottom to represent when we encounter an error running the analysis.
|
|
34
|
+
|
|
35
|
+
When this is encountered, it means there might be an error, but we were unable to tell.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
pass
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@final
|
|
42
|
+
@dataclass
|
|
43
|
+
class Error(ErrorType):
|
|
44
|
+
"""Indicates an error in the IR."""
|
|
45
|
+
|
|
46
|
+
message: str = ""
|
|
47
|
+
"""Optional error message to show in the IR.
|
|
48
|
+
|
|
49
|
+
NOTE: this is just to show a message when printing the IR. Actual errors
|
|
50
|
+
are collected by appending ir.ValidationError to the frame in the method
|
|
51
|
+
implementation.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@final
|
|
56
|
+
@dataclass
|
|
57
|
+
class NoError(ErrorType, metaclass=SingletonMeta):
|
|
58
|
+
pass
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
from kirin import ir, exception
|
|
5
|
+
from rich.console import Console
|
|
6
|
+
|
|
7
|
+
from .analysis import ValidationAnalysis
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ValidationErrorGroup(BaseException):
|
|
11
|
+
def __init__(self, *args: object, errors=[]) -> None:
|
|
12
|
+
super().__init__(*args)
|
|
13
|
+
self.errors = errors
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# TODO: this overrides kirin's exception handler and should be upstreamed
|
|
17
|
+
def exception_handler(exc_type, exc_value, exc_tb):
|
|
18
|
+
if issubclass(exc_type, ValidationErrorGroup):
|
|
19
|
+
console = Console(force_terminal=True)
|
|
20
|
+
for i, err in enumerate(exc_value.errors):
|
|
21
|
+
with console.capture() as capture:
|
|
22
|
+
console.print(f"==== Error {i} ====")
|
|
23
|
+
console.print(f"[bold red]{type(err).__name__}:[/bold red]", end="")
|
|
24
|
+
print(capture.get(), *err.args, file=sys.stderr)
|
|
25
|
+
if err.source:
|
|
26
|
+
print("Source Traceback:", file=sys.stderr)
|
|
27
|
+
print(err.hint(), file=sys.stderr, end="")
|
|
28
|
+
console.print("=" * 40)
|
|
29
|
+
console.print(
|
|
30
|
+
"[bold red]Kernel validation failed:[/bold red] There were multiple errors encountered during validation, see above"
|
|
31
|
+
)
|
|
32
|
+
return
|
|
33
|
+
|
|
34
|
+
return exception.exception_handler(exc_type, exc_value, exc_tb)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
sys.excepthook = exception_handler
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@dataclass
|
|
41
|
+
class KernelValidation:
|
|
42
|
+
"""Validate a kernel according to a `ValidationAnalysis`.
|
|
43
|
+
|
|
44
|
+
This is a simple wrapper around the analysis that runs the analysis, checks
|
|
45
|
+
the `ValidationFrame` for errors and throws them if there are any.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
validation_analysis_cls: type[ValidationAnalysis]
|
|
49
|
+
"""The analysis that you want to run in order to validate the kernel."""
|
|
50
|
+
|
|
51
|
+
def run(self, mt: ir.Method, no_raise: bool = True) -> None:
|
|
52
|
+
"""Run the kernel validation analysis and raise any errors found.
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
mt (ir.Method): The method to validate
|
|
56
|
+
no_raise (bool): Whether or not to raise errors when running the analysis.
|
|
57
|
+
This is only to make sure the analysis works. Errors found during
|
|
58
|
+
the analysis will be raised regardless of this setting. Defaults to `True`.
|
|
59
|
+
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
validation_analysis = self.validation_analysis_cls(mt.dialects)
|
|
63
|
+
|
|
64
|
+
if no_raise:
|
|
65
|
+
validation_frame, _ = validation_analysis.run_no_raise(mt)
|
|
66
|
+
else:
|
|
67
|
+
validation_frame, _ = validation_analysis.run(mt)
|
|
68
|
+
|
|
69
|
+
errors = validation_frame.errors
|
|
70
|
+
|
|
71
|
+
if len(errors) == 0:
|
|
72
|
+
# Valid program
|
|
73
|
+
return
|
|
74
|
+
elif len(errors) == 1:
|
|
75
|
+
raise errors[0]
|
|
76
|
+
else:
|
|
77
|
+
raise ValidationErrorGroup(errors=errors)
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bloqade-circuit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.1
|
|
4
4
|
Summary: The software development toolkit for neutral atom arrays.
|
|
5
5
|
Author-email: Roger-luo <rluo@quera.com>, kaihsin <khwu@quera.com>, weinbe58 <pweinberg@quera.com>, johnzl-777 <jlong@quera.com>
|
|
6
6
|
License-File: LICENSE
|
|
7
7
|
Requires-Python: >=3.10
|
|
8
|
-
Requires-Dist: kirin-toolchain~=0.
|
|
8
|
+
Requires-Dist: kirin-toolchain~=0.21.0
|
|
9
9
|
Requires-Dist: numpy>=1.22.0
|
|
10
10
|
Requires-Dist: pandas>=2.2.3
|
|
11
11
|
Requires-Dist: pydantic<2.11.0,>=1.3.0
|
|
12
|
-
Requires-Dist: pyqrack-cpu
|
|
13
|
-
Requires-Dist: pyqrack<1.41,>=1.38.2; sys_platform == 'darwin'
|
|
12
|
+
Requires-Dist: pyqrack-cpu~=1.69.1
|
|
14
13
|
Requires-Dist: rich>=13.9.4
|
|
15
14
|
Requires-Dist: scipy>=1.13.1
|
|
16
15
|
Provides-Extra: cirq
|
|
@@ -18,9 +17,9 @@ Requires-Dist: cirq-core>=1.4.1; extra == 'cirq'
|
|
|
18
17
|
Requires-Dist: cirq-core[contrib]>=1.4.1; extra == 'cirq'
|
|
19
18
|
Requires-Dist: qpsolvers[clarabel]>=4.7.0; extra == 'cirq'
|
|
20
19
|
Provides-Extra: pyqrack-cuda
|
|
21
|
-
Requires-Dist: pyqrack-cuda
|
|
20
|
+
Requires-Dist: pyqrack-cuda~=1.69.1; extra == 'pyqrack-cuda'
|
|
22
21
|
Provides-Extra: pyqrack-opencl
|
|
23
|
-
Requires-Dist: pyqrack
|
|
22
|
+
Requires-Dist: pyqrack~=1.69.1; extra == 'pyqrack-opencl'
|
|
24
23
|
Provides-Extra: qasm2
|
|
25
24
|
Requires-Dist: lark>=1.2.2; extra == 'qasm2'
|
|
26
25
|
Provides-Extra: qbraid
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
bloqade/device.py,sha256=y54uCyD8lfgOaZshjxd1DXf4lrwjVvNEtrx6KeeDup0,3888
|
|
2
|
+
bloqade/task.py,sha256=L7l8TAc9e2kaOA24Qrh15pfUPY21xRkUQ86OtAR9Sog,2861
|
|
3
|
+
bloqade/test_utils.py,sha256=E_Ei1QQVmp4DXiixPjFWvUvb_Wmh1BeKXn9_N5eq8m4,887
|
|
4
|
+
bloqade/types.py,sha256=1bgvSmYdynIrOMAmTK7rsUB9TWD3__uoeeGbiKWTJU0,662
|
|
5
|
+
bloqade/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
bloqade/analysis/address/__init__.py,sha256=cWEtk7i6jfbPDICFAITxfwAIiJIQFAr9U3lYXpObwh8,445
|
|
7
|
+
bloqade/analysis/address/analysis.py,sha256=Cces40Bxrsvqsfgbhzl6RUVoTvLxfIPYHtRVIafb7iQ,5181
|
|
8
|
+
bloqade/analysis/address/impls.py,sha256=-mJ9P0VKWpJBUrhxXsWoX7Ae3QwHXdk2YNESkwsW6yA,11341
|
|
9
|
+
bloqade/analysis/address/lattice.py,sha256=qMv6ntYcMO0fK-ccBTONXKJ4a3nkRSwDiztV9DcNIYc,8102
|
|
10
|
+
bloqade/analysis/fidelity/__init__.py,sha256=iJkhoHvCMU9bKxQqgxIWKQWvpqNFRgNBI5DK8-4RAB8,59
|
|
11
|
+
bloqade/analysis/fidelity/analysis.py,sha256=1zGT-Pl-KpIogW1qnPwFJZLPxCZMGK8A8r1lNxRrMEI,2585
|
|
12
|
+
bloqade/analysis/measure_id/__init__.py,sha256=r_R_br1e3H7ZzwkeQw4TnDAP4M_bUaRlRb7ZRdowvNI,145
|
|
13
|
+
bloqade/analysis/measure_id/analysis.py,sha256=Xz8kH3VKG5pSaKF_QyQ4UbWT_s7hFeTJTij48Y5IMkw,1840
|
|
14
|
+
bloqade/analysis/measure_id/impls.py,sha256=d9HVzAtm4yAkbMYhY1wsbzW5eL4yzDqGO04XSM9OiEs,6676
|
|
15
|
+
bloqade/analysis/measure_id/lattice.py,sha256=WPrn0R79umCH909BFWsUJ64qx9n_3KYimIW5UaXNuGU,1891
|
|
16
|
+
bloqade/annotate/__init__.py,sha256=eygeVSLi8Ac0riQNvMEV0fPvGWjYa8Ie8xxUSjP5z20,170
|
|
17
|
+
bloqade/annotate/_dialect.py,sha256=AB4l0C3jeeG4TY24FpQXkYjWVBlyFzDNK_TTDcBjnJo,61
|
|
18
|
+
bloqade/annotate/_interface.py,sha256=J_g0H4aH2rFmirEir4VRd2Bk6DFDi4VJSPoVb5My46g,576
|
|
19
|
+
bloqade/annotate/stmts.py,sha256=Dhk5pj1RMtY_5wsc9d4wBpTwqP1KKnXx1Ehri8cLxlU,902
|
|
20
|
+
bloqade/annotate/types.py,sha256=dsHCWe2G96VWMHCizHfMhjI5rg__rovLEN1_aX6k9Mk,164
|
|
21
|
+
bloqade/cirq_utils/__init__.py,sha256=euOBePhGrYOZsUn_IJXHGUQCxA6y3GBR6G3o9JvX21k,410
|
|
22
|
+
bloqade/cirq_utils/lineprog.py,sha256=JosrhfeOHI9FycUT_sYFj8TBzLpo97TL8zK-Ap2U4eQ,11021
|
|
23
|
+
bloqade/cirq_utils/lowering.py,sha256=YdiQpKNCjlbBeR0Z9oSLcCRhqvn6PGN7Uao8QxVcM7c,23686
|
|
24
|
+
bloqade/cirq_utils/parallelize.py,sha256=u9AP6l7YwBatFfIvrcCjbcYMiavk7MU6HKSKPkqlxtY,13803
|
|
25
|
+
bloqade/cirq_utils/emit/__init__.py,sha256=_NnnLT47nPFFkXY8EF3wrLHhAaKTl-8_zKqkKZ8Kpes,139
|
|
26
|
+
bloqade/cirq_utils/emit/base.py,sha256=nz_zzDKue7NP3uQNIXCEdH4rg0Tp8Hzvilt_PQlrfi8,8136
|
|
27
|
+
bloqade/cirq_utils/emit/gate.py,sha256=K0QGTsTo-n4ShfLvWiM-hKs5ixH9lUe_TDfgsurbak0,2976
|
|
28
|
+
bloqade/cirq_utils/emit/noise.py,sha256=sujg9yPx63HH0YxDCyguv-wgs9yJB5NnjPzgUAViktc,2472
|
|
29
|
+
bloqade/cirq_utils/emit/qubit.py,sha256=5D2OIHnNvVcZ6jqbR2jJTWCJ3KMzArN0MkOIKsFVx_s,1045
|
|
30
|
+
bloqade/cirq_utils/noise/__init__.py,sha256=hUBi53U0wE4u3AqGh5cNdgdCspt3O-Vw-SR68cfBZYc,421
|
|
31
|
+
bloqade/cirq_utils/noise/_two_zone_utils.py,sha256=iq4nwdJQITFlGB61wfrV7vyPA2194p-i_nv36powZ90,17883
|
|
32
|
+
bloqade/cirq_utils/noise/conflict_graph.py,sha256=ZUwPWTknrb6SgtZUVPeICn3YA-nUeWQJDuKKX5jL9tE,7179
|
|
33
|
+
bloqade/cirq_utils/noise/model.py,sha256=fhznG0P_SUtl7LBNIANuNi5MGY9ks241UW7m0rg2iNs,18782
|
|
34
|
+
bloqade/cirq_utils/noise/transform.py,sha256=pauFnOKbk2QjxeyXEV_x2zyRGypr5wiQ6ySirU7C2zg,2278
|
|
35
|
+
bloqade/gemini/__init__.py,sha256=JPwmAtnejHCoRMmRNz98rQrnOzJVB_Aw6TktUarTQhM,39
|
|
36
|
+
bloqade/gemini/groups.py,sha256=zxYrpses0e-bSo-wXkc__U5WEz0vLCOeTuO0f6AhPgQ,2196
|
|
37
|
+
bloqade/gemini/analysis/__init__.py,sha256=UK9kgopW3dWSepUaZsyBi4joyJCcBsbqy2nM70QTO5A,117
|
|
38
|
+
bloqade/gemini/analysis/logical_validation/__init__.py,sha256=evpVcYh4mcPQaYgR0JXEm1s7yHTMrWX6bFssBZE1L_Q,77
|
|
39
|
+
bloqade/gemini/analysis/logical_validation/analysis.py,sha256=eId5rWTCq_-ciiKkegX0dJmT_DbdE_btox5tFOuNz-g,577
|
|
40
|
+
bloqade/gemini/analysis/logical_validation/impls.py,sha256=RKUa8-JqWWcZUCDdZkLRLkAQZ-v4oPg2oOnITBz3itE,2995
|
|
41
|
+
bloqade/native/__init__.py,sha256=ckZjzkPGV08CXmBKAHutlVU_AlLIwzBmlkNOTuJVBx0,427
|
|
42
|
+
bloqade/native/_prelude.py,sha256=ktF91AQrWVswjc48ZnSi0Uqrz5QEtkU0RWld8TqL4MQ,1250
|
|
43
|
+
bloqade/native/dialects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
+
bloqade/native/dialects/gate/__init__.py,sha256=w5o5Fa2br2q6VG2D1WJ4hofduBk-9QuDIvge8FSJ-oU,70
|
|
45
|
+
bloqade/native/dialects/gate/_dialect.py,sha256=oRBmg4jkT3hhwpYnv9uAGLb76legyteGT5UjmXuXaP0,58
|
|
46
|
+
bloqade/native/dialects/gate/_interface.py,sha256=R-91lFvarmlQXOF6YDDmgzLRHDeBCwcecFaR6NbFAOI,536
|
|
47
|
+
bloqade/native/dialects/gate/stmts.py,sha256=FjMO13pdAXa0Mp4gVf4h0yf787UWQdpqexB8LO8lUMY,1001
|
|
48
|
+
bloqade/native/stdlib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
+
bloqade/native/stdlib/broadcast.py,sha256=OHj1uDDER_80F734eIsBkGTkDEvk7eHS3YaKcUy-MNg,6050
|
|
50
|
+
bloqade/native/stdlib/simple.py,sha256=0ZHpJfqB6tbIaIxUmN52MDE9qPboo1H8w_u9L7Ff8sY,5352
|
|
51
|
+
bloqade/native/upstream/__init__.py,sha256=_6m8sEwMS2D78cyFHY_-x7TDaFx-ATzqxuwNUwdvrGU,92
|
|
52
|
+
bloqade/native/upstream/squin2native.py,sha256=U5TC2tetCAB6cfyAK9BG73QoxBGcB8fJcG-x66YMDE0,2986
|
|
53
|
+
bloqade/pyqrack/__init__.py,sha256=MHQ861MamWKQObIgJGCBd-oohRBvJTL8XdsRBw7Kq6w,833
|
|
54
|
+
bloqade/pyqrack/base.py,sha256=Q2GjAcqEZBo-Lhe2jpXuNCB0xXVIdwtdy6cUmDM_OZI,4623
|
|
55
|
+
bloqade/pyqrack/device.py,sha256=a3Pmay4yyYp0cvOAfuHTOxyvOBCvNjdx-IQHJXru0cM,14828
|
|
56
|
+
bloqade/pyqrack/native.py,sha256=FcdYb5H65Mgf8lafG-hcugx4Oa1cD8nEYNxGboAA7Lc,1877
|
|
57
|
+
bloqade/pyqrack/reg.py,sha256=x227OK2hYX8zAUwlDvoFWrJDFxxrXcS9DNNecWe1s7c,1797
|
|
58
|
+
bloqade/pyqrack/target.py,sha256=_GBotS21iKU7yhS7rd10rnuCqgmxPqsvZ5pL8dYse9w,3680
|
|
59
|
+
bloqade/pyqrack/task.py,sha256=USHsiSoxeT9HtGMWyffKSJJCtLIL6dm-GUmJViWGkrQ,5227
|
|
60
|
+
bloqade/pyqrack/noise/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
+
bloqade/pyqrack/noise/native.py,sha256=BmRlRzqCzvSgfSsDlIjuB8L0gx4uaPqmPyfJ5-Ole6M,2751
|
|
62
|
+
bloqade/pyqrack/qasm2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
+
bloqade/pyqrack/qasm2/core.py,sha256=bHtHc8VTB0OUPoCRIQuPDug5UMOqZHY0FJZEHd77eBo,3245
|
|
64
|
+
bloqade/pyqrack/qasm2/glob.py,sha256=EGe7sh9SuvpRW4V4rFcX6Gf7ot8iyThYbsdPeEBKzYM,865
|
|
65
|
+
bloqade/pyqrack/qasm2/parallel.py,sha256=ITetuXOH2KUDpDOBuFnJoz2DhduvyBC72cOAOOixTaM,1606
|
|
66
|
+
bloqade/pyqrack/qasm2/uop.py,sha256=bLZONsEK15ymFGIQwy7muQv-TX0mvLrECuMp1Y3XTfA,8612
|
|
67
|
+
bloqade/pyqrack/squin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
|
+
bloqade/pyqrack/squin/qubit.py,sha256=rXshs86krKZpBjrkCLkbcvhKtbTQVxcwnru9qyg-c_c,2303
|
|
69
|
+
bloqade/pyqrack/squin/gate/__init__.py,sha256=pxvjsKnmIpR47mzs1zrZLYHcmjRvErieMOl1G4KcGeY,27
|
|
70
|
+
bloqade/pyqrack/squin/gate/gate.py,sha256=k0qROtw0ouSujod-Z9K1v_X9BNXAVIp7f08cMw2Hk9E,3901
|
|
71
|
+
bloqade/pyqrack/squin/noise/__init__.py,sha256=uXgRQPOrHNRp3k2ff2HD8mheUEaqxZPKEnwV-s4BiV4,31
|
|
72
|
+
bloqade/pyqrack/squin/noise/native.py,sha256=d4gdMqJJqOPPGOaIpualenKx6UYXDDqAQxA_6wMy9pc,4158
|
|
73
|
+
bloqade/qasm2/__init__.py,sha256=W9dR4Qnvigc7e7Ay7puSJHAIuiQk8vWqY-W64SMu5oU,515
|
|
74
|
+
bloqade/qasm2/_qasm_loading.py,sha256=SoyzZ8eLd2_qKOWbWbo3HbxgiSXMVTd-B2wtrmuZo00,4798
|
|
75
|
+
bloqade/qasm2/_wrappers.py,sha256=4x3fldC4sV2K_XZ0FPZOorQKAbs_7pualListXtak4A,11148
|
|
76
|
+
bloqade/qasm2/glob.py,sha256=dDZW2KYXi9e0JmEbpVJIJvQytVEr86G7eism9ghlABM,579
|
|
77
|
+
bloqade/qasm2/groups.py,sha256=fC02APrn4tt8kOiNsdter2upGNjSwUZ7qR7BhbucNp8,2563
|
|
78
|
+
bloqade/qasm2/noise.py,sha256=YXx-23eFHfGdae9C41dptUvlnu2pK7odT3_eaw3EvBc,2034
|
|
79
|
+
bloqade/qasm2/parallel.py,sha256=pBRCdhivu9CBADhKP46QMtnomOsFMA79J8OyMvqEu74,1169
|
|
80
|
+
bloqade/qasm2/types.py,sha256=bL_Hmo3ut9Cc6--ufyGu8pEZb3j9ZN_RnYuTY1UGSVc,837
|
|
81
|
+
bloqade/qasm2/dialects/__init__.py,sha256=wX99UBwncm0K0Q6yxbAtubXsj2RvAynJYH_5RAt_d54,182
|
|
82
|
+
bloqade/qasm2/dialects/glob.py,sha256=l1up9Hgw_1Ust4VPDoTh85WaasB4Y7_sAEpJLsva0GE,1615
|
|
83
|
+
bloqade/qasm2/dialects/indexing.py,sha256=yp5xNbfad_MSJmpQGqC_5cNak9PPeoTLckiL9NsIF9k,2350
|
|
84
|
+
bloqade/qasm2/dialects/inline.py,sha256=tJPhG0gVy8wxR2K4fBeSNuQtaeS1ORB81gGauogQAf0,2527
|
|
85
|
+
bloqade/qasm2/dialects/parallel.py,sha256=5Fi15i05iLb-S0_74Aj4yWDhUolLIWFb-3iOho8x7cE,3681
|
|
86
|
+
bloqade/qasm2/dialects/core/__init__.py,sha256=rzYkYvHd-z0CU_Kabac2T9B0TI1-ZxdyS8WVT6JXP7E,301
|
|
87
|
+
bloqade/qasm2/dialects/core/_dialect.py,sha256=KYguYHVdyIjPjAyM4GApBUk4slMXmRTMPNfE0lEE7rc,57
|
|
88
|
+
bloqade/qasm2/dialects/core/_emit.py,sha256=HhMKhfl9pL3cb4gr6TCGP2GJ0PchyyJ-ZcvE7MVeqwQ,2540
|
|
89
|
+
bloqade/qasm2/dialects/core/_typeinfer.py,sha256=27qciyhU4TNJ2NPBvDc7mjkOK-x8AzMjq20OXqsRtYQ,671
|
|
90
|
+
bloqade/qasm2/dialects/core/address.py,sha256=F_jnTXs977LKD5azRii3s-gdWf0TNslIkHpGIgf0GAE,1310
|
|
91
|
+
bloqade/qasm2/dialects/core/stmts.py,sha256=MOzll2u4mPdqtUI_aHkYxx3U-SsveEM8W85OU34FqHk,3826
|
|
92
|
+
bloqade/qasm2/dialects/expr/__init__.py,sha256=8A7VX0ox0jIcDL_ufHlC9wZMraZw81f5GkcZKA-7nRY,451
|
|
93
|
+
bloqade/qasm2/dialects/expr/_dialect.py,sha256=yu46u8FX8tTWAlMHv_YIOXZYiAuWYzB7-dbgGIhQayU,57
|
|
94
|
+
bloqade/qasm2/dialects/expr/_emit.py,sha256=97xg69gskV5ezfKCFXdb60PRMni_YmNxI2_PLnV_7TY,3749
|
|
95
|
+
bloqade/qasm2/dialects/expr/_from_python.py,sha256=4wB9J0gMRZq1HnMzAjn6sk6qVpS2gWTlIrTZKKGOMQ8,3432
|
|
96
|
+
bloqade/qasm2/dialects/expr/_interp.py,sha256=dQLDcWABpo107BtC6d18L5NmXYlRPPedGtGqlezRWJw,2395
|
|
97
|
+
bloqade/qasm2/dialects/expr/stmts.py,sha256=UtmLr5-PF28fDnQOSaqEX4ZCNvw7fSfq6nCVSDJHL1g,8119
|
|
98
|
+
bloqade/qasm2/dialects/noise/__init__.py,sha256=4YSXTFjt7TiQd0jqMZy2k6pfKbLyTamQlQ--jPTziLQ,512
|
|
99
|
+
bloqade/qasm2/dialects/noise/_dialect.py,sha256=onK6l3wbM0IHwf3WMiWy7pDRQG0DyLTOzplBuj56psA,58
|
|
100
|
+
bloqade/qasm2/dialects/noise/fidelity.py,sha256=afoY2-LVnJ82g8nvukFiJyJ5llhHJW7kUfgSGsX9Na8,1432
|
|
101
|
+
bloqade/qasm2/dialects/noise/model.py,sha256=0EaNmGJosRp8s-8ENxqWs56Y0xxwstaY-uT2_w5eDfQ,12907
|
|
102
|
+
bloqade/qasm2/dialects/noise/stmts.py,sha256=G2zHBIBxpJigh9IMy7_Cj3rJRB1m0Hqf9h3i7h-8X_4,2351
|
|
103
|
+
bloqade/qasm2/dialects/uop/__init__.py,sha256=M2jpSIExxlgKX0l08-KzvRKeVBUuFPlyLmmWosHWIdk,735
|
|
104
|
+
bloqade/qasm2/dialects/uop/_dialect.py,sha256=mns7toJRMnx38Q5IpScFMUZyA3MwSuEJkV003zudsJA,56
|
|
105
|
+
bloqade/qasm2/dialects/uop/_emit.py,sha256=Bknauu187WkoHNOMePYQm3WckKBFigmufsv0eWqGahk,7992
|
|
106
|
+
bloqade/qasm2/dialects/uop/schedule.py,sha256=gkHXvLACOZlh_pa5wlol3C5L-0D0c7Ttqjrr6VqgVCw,2258
|
|
107
|
+
bloqade/qasm2/dialects/uop/stmts.py,sha256=T22mDA9TgPpHnxh9E3lKv5MGihgyAQ6ontDQ1XdWmtU,7460
|
|
108
|
+
bloqade/qasm2/emit/__init__.py,sha256=Fl9WWMoSyAt3UGAsvCPwnbelhPiPdWDjTpkr8XAJTHc,35
|
|
109
|
+
bloqade/qasm2/emit/base.py,sha256=dDlUmwHFfh140JfnfKgQTWRYbNXj7_SzfYF5allaFkg,2488
|
|
110
|
+
bloqade/qasm2/emit/gate.py,sha256=nk8pwvhcb3MFSm1lOFCzqvBecV3tPpGgG3lPcAIZypk,2785
|
|
111
|
+
bloqade/qasm2/emit/main.py,sha256=5z_-A4iW8mpTg3Zx6FW3mKpaHIESuIwsiePBNFu-Sp8,8367
|
|
112
|
+
bloqade/qasm2/emit/target.py,sha256=M69lLWxT3nHqNx4yrFSkzykDt_iYsL4C3XP9W2FVAN0,6175
|
|
113
|
+
bloqade/qasm2/emit/impls/__init__.py,sha256=ynptLB_449irP9_9u2h3KXmOqF8YvH_NH08NnVoc7zQ,46
|
|
114
|
+
bloqade/qasm2/emit/impls/noise.py,sha256=-N9PmCbz8MwC6xtd55GOpjDoWMyJPJBMVDWT3G83Ads,2779
|
|
115
|
+
bloqade/qasm2/parse/__init__.py,sha256=01tlLfrR015nAAPWw3i_Cs9IXsShpXMnJMagcJ_Vuik,986
|
|
116
|
+
bloqade/qasm2/parse/ast.py,sha256=a48ssf0D_xaE-27PsyeBD5lBvwN2Dojj-RWIBhy7jJE,2904
|
|
117
|
+
bloqade/qasm2/parse/build.py,sha256=2CibD1ZRX3_aknmhb5XvFQcI2sBOn97DlQHomb9CMEw,10621
|
|
118
|
+
bloqade/qasm2/parse/lowering.py,sha256=SkKdcdsvK95Bn7H4hr6XxjZctd25RW_pUPqLXMe9MUY,21065
|
|
119
|
+
bloqade/qasm2/parse/parser.py,sha256=fxqp65dv8NnXE-Ie7ryLESfSH3Xr0unx1EBQysctiHM,121
|
|
120
|
+
bloqade/qasm2/parse/print.py,sha256=PaigQ5RbcfhOteWvDdQHoKsTE3tcNefpVfh1sp5eZEI,8973
|
|
121
|
+
bloqade/qasm2/parse/qasm2.lark,sha256=IYrBydUoVLn1VCNDPP5uNN5BHDET3fQ2yG11cOy900k,2238
|
|
122
|
+
bloqade/qasm2/parse/visitor.py,sha256=W4NUkBw97e3Z4Y1ek6jVNn-5lLVd3A5HXxc-FYTGYbY,427
|
|
123
|
+
bloqade/qasm2/parse/visitor.pyi,sha256=JafCo1QztL6fvmWtJXu4dlqwbTJ6iLVrSa8L-Zd72t4,1851
|
|
124
|
+
bloqade/qasm2/passes/__init__.py,sha256=9vz9F9Mgb5OFgnPWqw8pOJ-7r-tShoa7XevJ41ZmPXM,262
|
|
125
|
+
bloqade/qasm2/passes/fold.py,sha256=OA4mVarUYRAfZSODOA9wgoW7HNNmpQWfPG5qGVEbA6I,1117
|
|
126
|
+
bloqade/qasm2/passes/glob.py,sha256=oAsCibor9DaYFMdTDFBT5QVgi-V0qsl_I4rhgH4AgFI,3545
|
|
127
|
+
bloqade/qasm2/passes/lift_qubits.py,sha256=VgIuqaZecozA3cwGAq8Nzqdv8IqQlzyQv2XlaqY4H4g,759
|
|
128
|
+
bloqade/qasm2/passes/noise.py,sha256=s-KhBZs-3oGxcXh5P1LRVQauUK3NO1scovsBLIG8dUw,2676
|
|
129
|
+
bloqade/qasm2/passes/parallel.py,sha256=q6KWpkgnvxvOO-bCHoLP96ZV33z2XSf03qVYI6qpCq8,5820
|
|
130
|
+
bloqade/qasm2/passes/py2qasm.py,sha256=PmdIrViQ_4PEYBKE5XEk4oqFO2sLF2s_2Etz6R9CBoQ,2167
|
|
131
|
+
bloqade/qasm2/passes/qasm2py.py,sha256=beocXUoO2iM6sX85ML1eK8hp9_s5oupw8tqHWV1cDCo,2138
|
|
132
|
+
bloqade/qasm2/passes/unroll_if.py,sha256=CpE0IRiTU5p2nuFtw0pziNzmkuPvD_EM4Q5IcW4hxm0,1095
|
|
133
|
+
bloqade/qasm2/rewrite/__init__.py,sha256=peWypAlrxyMwuqZT9CmRuVZVPxkbrHZ0tke5ngP_qow,684
|
|
134
|
+
bloqade/qasm2/rewrite/desugar.py,sha256=ABri2ubImrgYUWtuFj0EEh5FcICqjtKUSS2Ue4WlMdA,1007
|
|
135
|
+
bloqade/qasm2/rewrite/glob.py,sha256=JzGDIY8ME9ZhNQ0g4d0FTpJuJlPu6G19myzo4zb6f_M,3119
|
|
136
|
+
bloqade/qasm2/rewrite/insert_qubits.py,sha256=PpYNlJAl-TVtC1MJxIzOQWDetgW8OPXe6cLN1SMg2w0,1187
|
|
137
|
+
bloqade/qasm2/rewrite/native_gates.py,sha256=GVutT1jf_gv9qaR5fLqjcmxcqCfMZTiQyg4Fq-TlmFM,18684
|
|
138
|
+
bloqade/qasm2/rewrite/parallel_to_glob.py,sha256=FVNDBwjiL3-tJN-IT7kjKiaO7I3guDLqRN6rdmLdZvw,3001
|
|
139
|
+
bloqade/qasm2/rewrite/parallel_to_uop.py,sha256=SPOcMq51NHk30GQs1U1oMS0AdNa1Xzg3_0XKJuEid-s,2205
|
|
140
|
+
bloqade/qasm2/rewrite/register.py,sha256=0q-zkSdZih3BbRUDGnig8fFVQA9y2fhn3wdsu4Kbdm4,1563
|
|
141
|
+
bloqade/qasm2/rewrite/uop_to_parallel.py,sha256=y5_OV9H0kgdJP8H6FXPnvHwpfKJ1V8vLkmP7TzQkDQg,13144
|
|
142
|
+
bloqade/qasm2/rewrite/noise/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
143
|
+
bloqade/qasm2/rewrite/noise/heuristic_noise.py,sha256=RtXWFBbVfBhAul6eWDfh7D4TduUmALLMM2I71RyafPM,7356
|
|
144
|
+
bloqade/qasm2/rewrite/noise/remove_noise.py,sha256=rnalZ1igiTpCFJ9Z3PRdzcx-qnkkALv6iQO-_yz39kM,1097
|
|
145
|
+
bloqade/qbraid/__init__.py,sha256=V-Co_nhH03UCV4c5MGkBnhHcVwJ2Ngrl6KZnSwo91b8,80
|
|
146
|
+
bloqade/qbraid/lowering.py,sha256=54sMIurWZKYTX_R8tOYa3M422dGX5um6XpPfRf2ycr8,12023
|
|
147
|
+
bloqade/qbraid/schema.py,sha256=FBwMOrwsJ9q98a_8XW6BrJfeJ-cssnTd0tmor6R7Dl0,7880
|
|
148
|
+
bloqade/qbraid/simulation_result.py,sha256=zdCJcAdbQkEDzFFuC2q3gqOFTOLAXHk4wh8RRDB6cgc,3956
|
|
149
|
+
bloqade/qbraid/target.py,sha256=LcFHHyLe74yBmrHI9251xHgLN_nUz35lN8RPNwrT6mI,3149
|
|
150
|
+
bloqade/qubit/__init__.py,sha256=Op0IkrZINFqk9CAaadTz1zAEX_kvQA0jAeDp7azeMCk,425
|
|
151
|
+
bloqade/qubit/_dialect.py,sha256=9rjrq21U6FSwDkMILDplE6zPCjdB-U2mLfpFGdsUeeY,52
|
|
152
|
+
bloqade/qubit/_interface.py,sha256=ihRgJ9x9kYboTJ8zyXj9N4P0idYGFQQJAWuX6Xu0pb0,1079
|
|
153
|
+
bloqade/qubit/_prelude.py,sha256=svWslf7sdyYExCqi1Ki1oXECZezE3xdcDtjNOvWPcMI,1269
|
|
154
|
+
bloqade/qubit/stmts.py,sha256=FP1H7TiRwsPP5GaDZCeE4TiJzJMebKunY0qMTiUGnFU,1959
|
|
155
|
+
bloqade/qubit/analysis/__init__.py,sha256=DvnFHmEqMxRG92jVT3ZWwAQDTb6DC4fZDTV8ZSLZgP0,43
|
|
156
|
+
bloqade/qubit/analysis/address_impl.py,sha256=x1pV6bol2BSrE-_ITSnCkQjq3OK053ja0uHhAwyFdpA,1080
|
|
157
|
+
bloqade/qubit/stdlib/__init__.py,sha256=b1CgWSNBcIWh1yKeFS_keFo0CnXkeTEDk6LEu0kpEiE,102
|
|
158
|
+
bloqade/qubit/stdlib/_new.py,sha256=YDooaU5oXScFaKEHEkNQvnlpma2nwvK4nqX7Z9xAJDo,775
|
|
159
|
+
bloqade/qubit/stdlib/broadcast.py,sha256=oTnxrknCaW1caYEDESwnbWXI_2zjyTG1uXrxEJwKlgs,1729
|
|
160
|
+
bloqade/qubit/stdlib/simple.py,sha256=0aiOgorWQguNDatl3WbnFW98Sy4LDyODlW6h9j426g8,1503
|
|
161
|
+
bloqade/rewrite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
162
|
+
bloqade/rewrite/passes/__init__.py,sha256=xziLrWJboRd3ADrAVPOTWI405b32othkVm3jC77Jy54,300
|
|
163
|
+
bloqade/rewrite/passes/aggressive_unroll.py,sha256=r7OCO4KGyr5ux2XEBFE0fQ6JPfkDxo1fnIk7VAX6gbQ,3424
|
|
164
|
+
bloqade/rewrite/passes/callgraph.py,sha256=3izzczPxcBmB7L-q1eorWW399NI86CrIIvnatkfSbb4,3360
|
|
165
|
+
bloqade/rewrite/passes/canonicalize_ilist.py,sha256=qysBpk39XwP5UUp72x31d-j0TnCyiuyH8kxKyJ5jtEk,817
|
|
166
|
+
bloqade/rewrite/rules/__init__.py,sha256=3e1Z5T3INqNtP6OU0Vivu_SdMOR_2KDixeA0Yjoddgg,82
|
|
167
|
+
bloqade/rewrite/rules/split_ifs.py,sha256=KhwvUx-oBrBO2F1j-J5kwNbdnrnEZcZtJflzyQm-UOI,2613
|
|
168
|
+
bloqade/squin/__init__.py,sha256=0QGtsCYQaix6azEpUnuK5rCJLg_CPOVR-JOhYDKrEEM,1302
|
|
169
|
+
bloqade/squin/groups.py,sha256=xNrtc3PbimQyPfJw0pAgBzGKhUSBeEvd-pu3N967n4g,818
|
|
170
|
+
bloqade/squin/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
171
|
+
bloqade/squin/analysis/schedule.py,sha256=WLJ40jCoEfjHktw6KMPjjX45-biszaERRd4iDINmqMw,7710
|
|
172
|
+
bloqade/squin/gate/__init__.py,sha256=w5o5Fa2br2q6VG2D1WJ4hofduBk-9QuDIvge8FSJ-oU,70
|
|
173
|
+
bloqade/squin/gate/_dialect.py,sha256=1l9W5g38f9dIOvCU2iR783tuBBc3TjfwESvXE3SiWFg,57
|
|
174
|
+
bloqade/squin/gate/_interface.py,sha256=Nb4XvV84UwQZnOnnw7b84TOBIFfamyxZLIPvdxRVWNI,1601
|
|
175
|
+
bloqade/squin/gate/stmts.py,sha256=XTqVsXpC6tAABdxsnAkMK0tUQe-zzk2RT3WEbbDZarI,2644
|
|
176
|
+
bloqade/squin/noise/__init__.py,sha256=B8QCV0Db9bbBDmqjQPsiRphGLu89-tre-TSlStFYmxM,96
|
|
177
|
+
bloqade/squin/noise/_dialect.py,sha256=Wyc9lXmmfHkZfURlDoIHYCX6HDsLzfPkqwE4REUmMsg,58
|
|
178
|
+
bloqade/squin/noise/_interface.py,sha256=5P5cwt6lwDFLdtR1sZMVnFS8v8KWMAKnfN45AAJ0Iks,1027
|
|
179
|
+
bloqade/squin/noise/stmts.py,sha256=G6B4-FVmHAVE5COV-7mAhoBjxq3ZVtzLYhZJxl_RmQQ,3180
|
|
180
|
+
bloqade/squin/rewrite/U3_to_clifford.py,sha256=hkxjoo3sXbHG9XChdVb11BuU_rOIpw8ZikN0nbg5YlE,5539
|
|
181
|
+
bloqade/squin/rewrite/__init__.py,sha256=9SOU2dpNM52hdlgqvSyPQG2LFvhIA-Z1kAp4ljnDeL0,265
|
|
182
|
+
bloqade/squin/rewrite/remove_dangling_qubits.py,sha256=Q5XmRqZWdlq2-v82W6NCHcdwtgK4cfpqn4MkWohUqHA,469
|
|
183
|
+
bloqade/squin/rewrite/wrap_analysis.py,sha256=cbGY0lnPV3g2ZgVep6AA6w9UmA7mO3waX7tuotIgdqU,1557
|
|
184
|
+
bloqade/squin/stdlib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
185
|
+
bloqade/squin/stdlib/broadcast/__init__.py,sha256=kiJmcrd1Q44oR7X0KfkOLxoMaPhiFkAxfHYwUrqOaYk,774
|
|
186
|
+
bloqade/squin/stdlib/broadcast/_qubit.py,sha256=s25nKv4ezRu1O-6w_o-f570TD50K_oFqWWP253hli2o,91
|
|
187
|
+
bloqade/squin/stdlib/broadcast/gate.py,sha256=orBbexaTTkPsEDTXpldLDuL0IuVUMzKqW-3J9ZcJeYo,6393
|
|
188
|
+
bloqade/squin/stdlib/broadcast/noise.py,sha256=_RtbJX-CCO3QMYiOYOJH83rnhn8o-UaSZ296rtrLxm8,4928
|
|
189
|
+
bloqade/squin/stdlib/simple/__init__.py,sha256=y7yq0Ff2ljBgOkC7SFMvrIeSnGjVH55TQ-ynq10DnkQ,719
|
|
190
|
+
bloqade/squin/stdlib/simple/gate.py,sha256=FUOKlvdvbkoNaXrkUnpjyd5o-iM2GsWbptTLNexyZII,5130
|
|
191
|
+
bloqade/squin/stdlib/simple/noise.py,sha256=DWNyHzBjbZz0Af_ufwRKcduHVXlJDJ0SE3Eut9Ohx7Y,3958
|
|
192
|
+
bloqade/stim/__init__.py,sha256=jCkbQig8t7kT_aGBVJ8e_Hj8UHKeyT8QRqmf5QGJPoc,987
|
|
193
|
+
bloqade/stim/_wrappers.py,sha256=PNuo1jcMvNsLAVNvHv_O6hJEmRCj1XRVP97C5mtjtEw,4178
|
|
194
|
+
bloqade/stim/groups.py,sha256=zHPId9X8vDTPgayrdpI_D_KVIg2Wdc5KJ7VbAnAdTOc,694
|
|
195
|
+
bloqade/stim/dialects/__init__.py,sha256=A1Sq0jg8wi6MjRkzmuSBnHmO3EraD0pDFWz-dO6c6v8,89
|
|
196
|
+
bloqade/stim/dialects/auxiliary/__init__.py,sha256=6f57a8k2-QBtqaB0GN8FxxTBlG82oZQbVIOxxq975g4,692
|
|
197
|
+
bloqade/stim/dialects/auxiliary/_dialect.py,sha256=GExjMgzF9HV7IA25Kbl1K2i5g7aJAhdifIdrIDrvBVY,55
|
|
198
|
+
bloqade/stim/dialects/auxiliary/emit.py,sha256=Q9S4BGIGek9MAf0PlMZeuoUPqcSgoaqejd1fIzXY6yo,3294
|
|
199
|
+
bloqade/stim/dialects/auxiliary/interp.py,sha256=pd0KvrHc0x3TYHm7zu24FuN-auLiP2p1Krbz4ik2-7A,694
|
|
200
|
+
bloqade/stim/dialects/auxiliary/lowering.py,sha256=4dxRZHGp_18EMVlYuZQFSzg4MIOBriF5HjexT9Px2xc,1443
|
|
201
|
+
bloqade/stim/dialects/auxiliary/types.py,sha256=1l2YdJ-u9y0wpBfxh4OAlvmRAUnrmcDjDagoW2GyVaQ,314
|
|
202
|
+
bloqade/stim/dialects/auxiliary/stmts/__init__.py,sha256=VxLBnqlZngabs5vn3PiRNRXBBDueTCTmJ2wgWEertrA,371
|
|
203
|
+
bloqade/stim/dialects/auxiliary/stmts/annotate.py,sha256=B1qQ1zgkDCIjeMYqaBycDfRJpI6dKSPzHDtA7JGGG9g,1770
|
|
204
|
+
bloqade/stim/dialects/auxiliary/stmts/const.py,sha256=nxcpVylgjfKt8pDkcMzVBMGLjON2bQb99WSLv7frvkI,3298
|
|
205
|
+
bloqade/stim/dialects/collapse/__init__.py,sha256=MhlEWJR_mJI3teoip1N8MlHk2C68seJELXwmyjyx_ns,305
|
|
206
|
+
bloqade/stim/dialects/collapse/_dialect.py,sha256=F5uplH7WL9ZQatEp0ZMvgLWX1k9moAWW879LTNwnHH0,60
|
|
207
|
+
bloqade/stim/dialects/collapse/emit_str.py,sha256=xZssp37HnQVhGO638_I_vb8ahfG_sHHrxWvaadNDvXw,1852
|
|
208
|
+
bloqade/stim/dialects/collapse/stmts/__init__.py,sha256=6wf-1HIdajz_hiYXh5j0QftsAtyaBtpp826d0UdYysI,189
|
|
209
|
+
bloqade/stim/dialects/collapse/stmts/measure.py,sha256=hr7jGgA4AoaCy62tmVWqKUnbXol2X1jAxm_jkEjKdXs,918
|
|
210
|
+
bloqade/stim/dialects/collapse/stmts/pp_measure.py,sha256=AneDEeWb0mXJRYN5LuKDqwxstkGTIW_-vhadQRIaZ4c,524
|
|
211
|
+
bloqade/stim/dialects/collapse/stmts/reset.py,sha256=4fPSdM_ZiivuUn4uiZGiZQ9swolDir7Dl9lhMkZbspo,473
|
|
212
|
+
bloqade/stim/dialects/gate/__init__.py,sha256=5Y0BTlLOuW-Ud4LwAC_CUuMwxa04LKj4CTKgQbiL8yg,347
|
|
213
|
+
bloqade/stim/dialects/gate/_dialect.py,sha256=78_dThliFZG9xSwYhTdibxP3vefHpEDUawtZqb9X3uA,56
|
|
214
|
+
bloqade/stim/dialects/gate/emit.py,sha256=8WtNdQoA9JeqH72sJzuljQOv111cSnl1iVmeIh3dwYE,2840
|
|
215
|
+
bloqade/stim/dialects/gate/stmts/__init__.py,sha256=TbXjWYfCbZNuGEehvtF75LELLJJo_GzoXWRnuVZphv8,461
|
|
216
|
+
bloqade/stim/dialects/gate/stmts/base.py,sha256=MK7Zu-Kys_64O0nXAkPzlHEnWYevBGm3FRHhJw33rrE,748
|
|
217
|
+
bloqade/stim/dialects/gate/stmts/clifford_1q.py,sha256=Sj1Nf9AA_WWazGTg5kzFRTaLRIj3Edj657j0B8dybdI,896
|
|
218
|
+
bloqade/stim/dialects/gate/stmts/clifford_2q.py,sha256=cb3BVSkOt5SiRq4D4WkbuUbEouK3MwDxQIhAF0cvZbo,239
|
|
219
|
+
bloqade/stim/dialects/gate/stmts/control_2q.py,sha256=gZRtkpgAkiUFqx5Led2t1YjYblEeBMdSQU3DPMGveoM,415
|
|
220
|
+
bloqade/stim/dialects/gate/stmts/pp.py,sha256=yUNCrkYBM7wUCvtRqwP9_HYX0HsHVt6JZR4efM05838,487
|
|
221
|
+
bloqade/stim/dialects/noise/__init__.py,sha256=WoDdIZnxelk8REiIWDKcrEW79xwISdTZlqlTjURb71Q,138
|
|
222
|
+
bloqade/stim/dialects/noise/_dialect.py,sha256=SVUjAqBoGnxo13JlAlsxulIMo1QzfJb4SMSrFaCnfP4,57
|
|
223
|
+
bloqade/stim/dialects/noise/emit.py,sha256=ysbaimqcP51RbE_aKWJd_aeiIyBoN1BHHpWjSY4u4CI,3036
|
|
224
|
+
bloqade/stim/dialects/noise/stmts.py,sha256=1jB43gshxCOqX9vX_EBwYEy9swag8lOjDLwAi-m2xSo,3620
|
|
225
|
+
bloqade/stim/emit/__init__.py,sha256=GZst8q95tnaCf789z-Ha2t6WMiOZ429X7h8mzX5rFM0,102
|
|
226
|
+
bloqade/stim/emit/impls.py,sha256=wYFPqaFH3HjG94Uv_jF7oIY_nCanINX43bCjjhFxk_k,423
|
|
227
|
+
bloqade/stim/emit/stim_str.py,sha256=-XsoyIhVmRgnGQ-rQGJ6zpPROPN2WoUp7aTblCczzfY,2267
|
|
228
|
+
bloqade/stim/parse/__init__.py,sha256=l2DjReB2KkgrDjP_4nP6RnoziiOewoSeZfTno1sVYTw,59
|
|
229
|
+
bloqade/stim/parse/lowering.py,sha256=rrIMiWyM176c5oKebAhC0pisxAx9dKjLB5ORTtCSvsU,23698
|
|
230
|
+
bloqade/stim/passes/__init__.py,sha256=Mznmsy9ABZPCV9YGxoyqSPSTsg_nZByO6_3MxBxw1n0,71
|
|
231
|
+
bloqade/stim/passes/flatten.py,sha256=zxxsCxwaxozYDLT_hbZilfbs1zaTqRpSfFe2hfHVH2c,900
|
|
232
|
+
bloqade/stim/passes/simplify_ifs.py,sha256=TpzInFhUhZ0qrBvAEKBMufr7OHKSqxanZOnhkYge3hc,1304
|
|
233
|
+
bloqade/stim/passes/squin_to_stim.py,sha256=FpC7lBFwB9pODcsrShzwXkm7UXhiDwZNN-UhD5dllCE,3637
|
|
234
|
+
bloqade/stim/rewrite/__init__.py,sha256=Q4KZS3qaOWFo0Dik-_18QmtfYxEdOsCxk7-VwprJIAU,462
|
|
235
|
+
bloqade/stim/rewrite/get_record_util.py,sha256=tZJdjcqUzggbPES-4UzLZQzSVSCaXzECV71SKjtJYd4,843
|
|
236
|
+
bloqade/stim/rewrite/ifs_to_stim.py,sha256=3GgG4PRYduX2np_eTUcH-WF2sLFY8mAbsJdHM8eVdtE,6471
|
|
237
|
+
bloqade/stim/rewrite/py_constant_to_stim.py,sha256=PV8bHvn759-d_0JW4akaGSORW_oxigrlUBhAC51PJAU,1354
|
|
238
|
+
bloqade/stim/rewrite/qubit_to_stim.py,sha256=-ccFmmNgVvbzc3HjGWFRJhmS1AcpelbumlEhY0DAAwQ,4790
|
|
239
|
+
bloqade/stim/rewrite/set_detector_to_stim.py,sha256=UcDk72Ov9h7wseQm-A4lm6OpOoQByJgqG7HUnn4L5gQ,2237
|
|
240
|
+
bloqade/stim/rewrite/set_observable_to_stim.py,sha256=rirtof0P3epJYq6j82igLY-atANSCkueX7brhlZ62J8,1685
|
|
241
|
+
bloqade/stim/rewrite/squin_measure.py,sha256=F6zyq3UnJH3Bu7hL9fYItwJdV0R0IKp22Phxk5Cg-vw,2150
|
|
242
|
+
bloqade/stim/rewrite/squin_noise.py,sha256=2VkRv0u5PmjShFeQtA9vM1AxYCy8ktgNHNrlVXdhHAo,7012
|
|
243
|
+
bloqade/stim/rewrite/util.py,sha256=G8Uddu5E0CDgdxzgf2MGGIBHFB0uNRqyP4IANgNehYM,1166
|
|
244
|
+
bloqade/stim/upstream/__init__.py,sha256=Skev79lMyfz2bFoih-Fn_9iXbMArqlKxHSd1agHAtlA,55
|
|
245
|
+
bloqade/stim/upstream/from_squin.py,sha256=08I_BE7gK2a8ngZ2ElCLw879B5KGaKCFRf26NJVdU70,272
|
|
246
|
+
bloqade/validation/__init__.py,sha256=Me6OviZ0_Vx2ek5RqFy6k_OI56NlH9dEuhOSakh_D7c,103
|
|
247
|
+
bloqade/validation/kernel_validation.py,sha256=B05noOhr_zFZiOs7OyI-ZakzCdDAefQN-A3K44e92OA,2661
|
|
248
|
+
bloqade/validation/analysis/__init__.py,sha256=hLJqnZrNUA64uMeaad4mESTjUf7GiysYTfm-dwvZfek,145
|
|
249
|
+
bloqade/validation/analysis/analysis.py,sha256=puV0pIYifWaTCQ6O9Eta8KA7SteAbNmDj38UPK7o3zQ,1429
|
|
250
|
+
bloqade/validation/analysis/lattice.py,sha256=SJjzt_oz-Bm3-dgtiUpFxyNa2i7gQDXSH2LZ0uioyCs,1210
|
|
251
|
+
bloqade/visual/__init__.py,sha256=Y7d0YgovKhUFzjMeDvt0wGRUZ3re3SY6iO3e8xHXrr4,37
|
|
252
|
+
bloqade/visual/animation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
253
|
+
bloqade/visual/animation/animate.py,sha256=NSKs3YDWgTZH2-Tpx3cP1bBcIEWTEPqK5UFkY_IF_3k,8927
|
|
254
|
+
bloqade/visual/animation/base.py,sha256=JVa7ad_S3JsGxNAhsUwTHNR0ESG2mlGcZ8sNjsUQcH4,11061
|
|
255
|
+
bloqade/visual/animation/gate_event.py,sha256=3OsJ9OK5UHO7-KFUDqRJITEMSZqn-ELkl1N5pimYPbc,567
|
|
256
|
+
bloqade/visual/animation/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
257
|
+
bloqade/visual/animation/runtime/aod.py,sha256=E_oiIAKjNqPlqvTEc2ImFXBN2ZyFb7z7-518y8jBCcY,973
|
|
258
|
+
bloqade/visual/animation/runtime/atoms.py,sha256=EmjxhujLiHHPS_HtH_B-7TiqeHgvW5uSAgag9hYtJ1U,1581
|
|
259
|
+
bloqade/visual/animation/runtime/ppoly.py,sha256=JB9IP53N1w6adBJEue6J5Nmj818Id9JvrlgrmiQTU1I,1385
|
|
260
|
+
bloqade/visual/animation/runtime/qpustate.py,sha256=rlmxQeJSvaohXrTpXQL5y-NJcpvfW33xPaYM1slv7cc,4270
|
|
261
|
+
bloqade/visual/animation/runtime/utils.py,sha256=ju9IzOWX-vKwfpqUjlUKu3Ssr_UFPFFq-tzH_Nqyo_c,1212
|
|
262
|
+
bloqade_circuit-0.9.1.dist-info/METADATA,sha256=oKjEzI9qU7-Cv6538jO_laL1UeGUO17Mwfx2Gib01xQ,3723
|
|
263
|
+
bloqade_circuit-0.9.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
264
|
+
bloqade_circuit-0.9.1.dist-info/licenses/LICENSE,sha256=S5GIJwR6QCixPA9wryYb44ZEek0Nz4rt_zLUqP05UbU,13160
|
|
265
|
+
bloqade_circuit-0.9.1.dist-info/RECORD,,
|
bloqade/pyqrack/squin/op.py
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import math
|
|
2
|
-
|
|
3
|
-
from kirin import interp
|
|
4
|
-
|
|
5
|
-
from bloqade.squin import op
|
|
6
|
-
from bloqade.pyqrack.base import PyQrackInterpreter
|
|
7
|
-
|
|
8
|
-
from .runtime import (
|
|
9
|
-
SnRuntime,
|
|
10
|
-
SpRuntime,
|
|
11
|
-
U3Runtime,
|
|
12
|
-
RotRuntime,
|
|
13
|
-
KronRuntime,
|
|
14
|
-
MultRuntime,
|
|
15
|
-
ResetRuntime,
|
|
16
|
-
ScaleRuntime,
|
|
17
|
-
AdjointRuntime,
|
|
18
|
-
ControlRuntime,
|
|
19
|
-
PhaseOpRuntime,
|
|
20
|
-
IdentityRuntime,
|
|
21
|
-
OperatorRuntime,
|
|
22
|
-
ProjectorRuntime,
|
|
23
|
-
OperatorRuntimeABC,
|
|
24
|
-
PauliStringRuntime,
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
@op.dialect.register(key="pyqrack")
|
|
29
|
-
class PyQrackMethods(interp.MethodTable):
|
|
30
|
-
|
|
31
|
-
@interp.impl(op.stmts.Kron)
|
|
32
|
-
def kron(
|
|
33
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.Kron
|
|
34
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
35
|
-
lhs = frame.get(stmt.lhs)
|
|
36
|
-
rhs = frame.get(stmt.rhs)
|
|
37
|
-
return (KronRuntime(lhs, rhs),)
|
|
38
|
-
|
|
39
|
-
@interp.impl(op.stmts.Mult)
|
|
40
|
-
def mult(
|
|
41
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.Mult
|
|
42
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
43
|
-
lhs = frame.get(stmt.lhs)
|
|
44
|
-
rhs = frame.get(stmt.rhs)
|
|
45
|
-
return (MultRuntime(lhs, rhs),)
|
|
46
|
-
|
|
47
|
-
@interp.impl(op.stmts.Adjoint)
|
|
48
|
-
def adjoint(
|
|
49
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.Adjoint
|
|
50
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
51
|
-
op = frame.get(stmt.op)
|
|
52
|
-
return (AdjointRuntime(op),)
|
|
53
|
-
|
|
54
|
-
@interp.impl(op.stmts.Scale)
|
|
55
|
-
def scale(
|
|
56
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.Scale
|
|
57
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
58
|
-
op = frame.get(stmt.op)
|
|
59
|
-
factor = frame.get(stmt.factor)
|
|
60
|
-
return (ScaleRuntime(op, factor),)
|
|
61
|
-
|
|
62
|
-
@interp.impl(op.stmts.Control)
|
|
63
|
-
def control(
|
|
64
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.Control
|
|
65
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
66
|
-
op = frame.get(stmt.op)
|
|
67
|
-
n_controls = stmt.n_controls
|
|
68
|
-
rt = ControlRuntime(
|
|
69
|
-
op=op,
|
|
70
|
-
n_controls=n_controls,
|
|
71
|
-
)
|
|
72
|
-
return (rt,)
|
|
73
|
-
|
|
74
|
-
@interp.impl(op.stmts.Rot)
|
|
75
|
-
def rot(
|
|
76
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.Rot
|
|
77
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
78
|
-
axis = frame.get(stmt.axis)
|
|
79
|
-
angle = frame.get(stmt.angle)
|
|
80
|
-
return (RotRuntime(axis, angle),)
|
|
81
|
-
|
|
82
|
-
@interp.impl(op.stmts.Identity)
|
|
83
|
-
def identity(
|
|
84
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.Identity
|
|
85
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
86
|
-
return (IdentityRuntime(sites=stmt.sites),)
|
|
87
|
-
|
|
88
|
-
@interp.impl(op.stmts.PhaseOp)
|
|
89
|
-
@interp.impl(op.stmts.ShiftOp)
|
|
90
|
-
def phaseop(
|
|
91
|
-
self,
|
|
92
|
-
interp: PyQrackInterpreter,
|
|
93
|
-
frame: interp.Frame,
|
|
94
|
-
stmt: op.stmts.PhaseOp | op.stmts.ShiftOp,
|
|
95
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
96
|
-
theta = frame.get(stmt.theta)
|
|
97
|
-
global_ = isinstance(stmt, op.stmts.PhaseOp)
|
|
98
|
-
return (PhaseOpRuntime(theta, global_=global_),)
|
|
99
|
-
|
|
100
|
-
@interp.impl(op.stmts.Reset)
|
|
101
|
-
@interp.impl(op.stmts.ResetToOne)
|
|
102
|
-
def reset(
|
|
103
|
-
self,
|
|
104
|
-
interp: PyQrackInterpreter,
|
|
105
|
-
frame: interp.Frame,
|
|
106
|
-
stmt: op.stmts.Reset | op.stmts.ResetToOne,
|
|
107
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
108
|
-
target_state = isinstance(stmt, op.stmts.ResetToOne)
|
|
109
|
-
return (ResetRuntime(target_state=target_state),)
|
|
110
|
-
|
|
111
|
-
@interp.impl(op.stmts.X)
|
|
112
|
-
@interp.impl(op.stmts.Y)
|
|
113
|
-
@interp.impl(op.stmts.Z)
|
|
114
|
-
@interp.impl(op.stmts.H)
|
|
115
|
-
@interp.impl(op.stmts.S)
|
|
116
|
-
@interp.impl(op.stmts.T)
|
|
117
|
-
def operator(
|
|
118
|
-
self,
|
|
119
|
-
interp: PyQrackInterpreter,
|
|
120
|
-
frame: interp.Frame,
|
|
121
|
-
stmt: (
|
|
122
|
-
op.stmts.X | op.stmts.Y | op.stmts.Z | op.stmts.H | op.stmts.S | op.stmts.T
|
|
123
|
-
),
|
|
124
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
125
|
-
return (OperatorRuntime(method_name=stmt.name.lower()),)
|
|
126
|
-
|
|
127
|
-
@interp.impl(op.stmts.SqrtX)
|
|
128
|
-
@interp.impl(op.stmts.SqrtY)
|
|
129
|
-
def sqrt(
|
|
130
|
-
self,
|
|
131
|
-
interp: PyQrackInterpreter,
|
|
132
|
-
frame: interp.Frame,
|
|
133
|
-
stmt: op.stmts.SqrtX | op.stmts.SqrtY,
|
|
134
|
-
):
|
|
135
|
-
axis_name = "x" if isinstance(stmt, op.stmts.SqrtX) else "y"
|
|
136
|
-
axis = OperatorRuntime(method_name=axis_name)
|
|
137
|
-
return (RotRuntime(axis=axis, angle=-0.5 * math.pi),)
|
|
138
|
-
|
|
139
|
-
@interp.impl(op.stmts.P0)
|
|
140
|
-
@interp.impl(op.stmts.P1)
|
|
141
|
-
def projector(
|
|
142
|
-
self,
|
|
143
|
-
interp: PyQrackInterpreter,
|
|
144
|
-
frame: interp.Frame,
|
|
145
|
-
stmt: op.stmts.P0 | op.stmts.P1,
|
|
146
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
147
|
-
state = isinstance(stmt, op.stmts.P1)
|
|
148
|
-
return (ProjectorRuntime(to_state=state),)
|
|
149
|
-
|
|
150
|
-
@interp.impl(op.stmts.Sp)
|
|
151
|
-
def sp(
|
|
152
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.Sp
|
|
153
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
154
|
-
return (SpRuntime(),)
|
|
155
|
-
|
|
156
|
-
@interp.impl(op.stmts.Sn)
|
|
157
|
-
def sn(
|
|
158
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.Sn
|
|
159
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
160
|
-
return (SnRuntime(),)
|
|
161
|
-
|
|
162
|
-
@interp.impl(op.stmts.U3)
|
|
163
|
-
def u3(
|
|
164
|
-
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: op.stmts.U3
|
|
165
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
166
|
-
theta = frame.get(stmt.theta)
|
|
167
|
-
phi = frame.get(stmt.phi)
|
|
168
|
-
lam = frame.get(stmt.lam)
|
|
169
|
-
return (U3Runtime(theta, phi, lam),)
|
|
170
|
-
|
|
171
|
-
@interp.impl(op.stmts.PauliString)
|
|
172
|
-
def clifford_string(
|
|
173
|
-
self,
|
|
174
|
-
interp: PyQrackInterpreter,
|
|
175
|
-
frame: interp.Frame,
|
|
176
|
-
stmt: op.stmts.PauliString,
|
|
177
|
-
) -> tuple[OperatorRuntimeABC]:
|
|
178
|
-
string = stmt.string
|
|
179
|
-
ops = [OperatorRuntime(method_name=name.lower()) for name in stmt.string]
|
|
180
|
-
return (PauliStringRuntime(string, ops),)
|