View source on GitHub
|
Target IonQ native gateset for compiling circuits.
Inherits From: IonqNativeGatesetBase
cirq_ionq.ionq_native_target_gateset.ForteNativeGateset(
*, atol: float = 1e-08
)
The gates forming this gateset are: GPIGate, GPI2Gate, ZZGate
Args | |
|---|---|
atol
|
A limit on the amount of absolute error introduced by the decomposition. |
Methods
decompose_all_to_all_connect_ccz_gate
decompose_all_to_all_connect_ccz_gate(
ccz_gate: cirq.CCZPowGate, qubits: tuple[cirq.Qid, ...]
) -> cirq.OP_TREE
Decomposition of all-to-all connected qubits are different from line qubits or grid qubits, ckeckout IonQTargetGateset.
For example, for qubits in the same ion trap, the decomposition of CCZ gate will be:
0: ──────────────@──────────────────@───@───p──────@─── │ │ │ │ 1: ───@──────────┼───────@───p──────┼───X───p^-1───X─── │ │ │ │ 2: ───X───p^-1───X───p───X───p^-1───X───p──────────────
where p = T**ccz_gate._exponent
decompose_to_target_gateset
decompose_to_target_gateset(
op: cirq.Operation, moment_idx: int
) -> DecomposeResult
Method to rewrite the given operation using gates from this gateset.
| Args | |
|---|---|
op
|
cirq.Operation to be rewritten using gates from this gateset.
|
moment_idx
|
Moment index where the given operation op occurs in a circuit.
|
| Returns | |
|---|---|
|
single_qubit_matrix_to_native_gates
single_qubit_matrix_to_native_gates(
mat: np.ndarray
) -> list[cirq.Gate]
validate
validate(
circuit_or_optree: (cirq.AbstractCircuit | op_tree.OP_TREE)
) -> bool
Validates gates forming circuit_or_optree should be contained in Gateset.
| Args | |
|---|---|
circuit_or_optree
|
The cirq.Circuit or cirq.OP_TREE to validate.
|
with_params
with_params(
*, name: (str | None) = None, unroll_circuit_op: (bool | None) = None
) -> Gateset
Returns a copy of this Gateset with identical gates and new values for named arguments.
If a named argument is None then corresponding value of this Gateset is used instead.
| Args | |
|---|---|
name
|
New name for the Gateset. |
unroll_circuit_op
|
If True, new Gateset will recursively validate
cirq.CircuitOperation by validating the underlying cirq.Circuit.
|
| Returns | |
|---|---|
self if all new values are None or identical to the values of current Gateset.
else a new Gateset with identical gates and new values for named arguments.
|
__contains__
__contains__(
item: (raw_types.Gate | raw_types.Operation)
) -> bool
Check for containment of a given Gate/Operation in this Gateset.
Containment checks are handled as follows:
- For Gates or Operations that have an underlying gate (i.e. op.gate is not None):
- Forwards the containment check to the underlying
cirq.GateFamilyobjects. - Examples of such operations include
cirq.GateOperations and their controlled and tagged variants (i.e. instances ofcirq.TaggedOperation,cirq.ControlledOperationwhereop.gateis not None) etc.
- Forwards the containment check to the underlying
- For Operations that do not have an underlying gate:
- Forwards the containment check to
self._validate_operation(item). - Examples of such operations include
cirq.CircuitOperations and their controlled and tagged variants (i.e. instances ofcirq.TaggedOperation,cirq.ControlledOperationwhereop.gateis None) etc.
- Forwards the containment check to
The complexity of the method in terms of the number of gates, n, is
- O(1) when any default
cirq.GateFamilyinstance accepts the given item, except for an Instance GateFamily trying to match an item with a different global phase. - O(n) for all other cases: matching against custom gate families, matching across global phase for the default Instance GateFamily, no match against any underlying gate family.
| Args | |
|---|---|
item
|
The cirq.Gate or cirq.Operation instance to check containment for.
|
__eq__
__eq__(
other: _SupportsValueEquality
) -> bool
__ne__
__ne__(
other: _SupportsValueEquality
) -> bool
View source on GitHub