cirq.SqrtIswapTargetGateset

Target gateset accepting √iSWAP + single qubit rotations + measurement gates.

Inherits From: TwoQubitCompilationTargetGateset, CompilationTargetGateset, Gateset

Used in the notebooks

Used in the tutorials

By default, cirq.SqrtIswapTargetGateset will accept and compile unknown gates to the following universal target gateset:

Optionally, users can also specify additional gates / gate families which should be accepted by this gateset via the additional_gates argument.

When compiling a circuit, any unknown gate, i.e. a gate which is not accepted by this gateset, will be compiled to the default gateset (i.e. cirq.SQRT_ISWAP/ cirq.cirq.SQRT_ISWAP_INV, cirq.PhasedXZGate, cirq.MeasurementGate).

atol A limit on the amount of absolute error introduced by the decomposition.
required_sqrt_iswap_count When specified, the decompose_to_target_gateset will decompose each operation into exactly this many sqrt-iSWAP gates even if fewer is possible (maximum 3). A ValueError will be raised if this number is 2 or lower and synthesis of the operation requires more.
use_sqrt_iswap_inv If True, cirq.SQRT_ISWAP_INV is used as part of the gateset, instead of cirq.SQRT_ISWAP.
additional_gates Sequence of additional gates / gate families which should also be "accepted" by this gateset. Defaults to cirq.GlobalPhaseGate.

ValueError If required_sqrt_iswap_count is specified and is not 0, 1, 2, or 3.

gates

name

num_qubits Maximum number of qubits on which a gate from this gateset can act upon.
postprocess_transformers List of transformers which should be run after decomposing individual operations.
preprocess_transformers List of transformers which should be run before decomposing individual operations.

Methods

decompose_to_target_gateset

View source

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

  • An equivalent cirq.OP_TREE implementing op using gates from this gateset.
  • None or NotImplemented if does not know how to decompose op.

validate

View source

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

View source

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.
accept_global_phase_op If True, a GateFamily accepting cirq.GlobalPhaseGate will be included. If None, cirq.GlobalPhaseGate will not modify the input *gates. If False, cirq.GlobalPhaseGate will be removed from the gates. This parameter defaults to None (a breaking change from v0.14.1) and will be removed in v0.16.

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__

View source

Check for containment of a given Gate/Operation in this Gateset.

Containment checks are handled as follows:

The complexity of the method in terms of the number of gates, n, is

  • O(1) when any default cirq.GateFamily instance 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__

View source