iqm.cirq_iqm.iqm_gates.IQMMoveGate

iqm.cirq_iqm.iqm_gates.IQMMoveGate#

class iqm.cirq_iqm.iqm_gates.IQMMoveGate(*, exponent: float | Expr = 1.0, global_shift: float = 0.0)#

Bases: EigenGate

The MOVE operation is a unitary population exchange operation between a qubit and a resonator. Its effect is only defined in the invariant subspace S=span{|00,|01,|10}, where it swaps the populations of the states |01 and |10. Its effect on the orthogonal subspace is undefined.

MOVE has the following presentation in the subspace S:

MOVES=|0000|+a|1001|+a1|0110|,

where a is an undefined complex phase that is canceled when the MOVE gate is applied a second time.

To ensure that the state of the qubit and resonator has no overlap with |11, it is recommended that no single qubit gates are applied to the qubit in between a pair of MOVE operations.

Note: At this point the locus for the move gate must be defined in the order: [qubit, resonator]. Additionally, the matrix representation of the gate set to be a SWAP gate, even though this is not what physically happens.

Attributes

Methods

__str__()

Return str(self).

_circuit_diagram_info_(args)

_eigen_components()

Describes the eigendecomposition of the gate's matrix.

_num_qubits_()

The number of qubits this gate acts on.

_qid_shape_()

Returns a Tuple containing the number of quantum levels of each qid the gate acts on.

num_qubits()

The number of qubits this gate acts on.

Parameters:
  • exponent (float | Expr) –

  • global_shift (float) –

num_qubits() int#

The number of qubits this gate acts on.

Return type:

int