IQMMoveGate

IQMMoveGate#

Module: iqm.cirq_iqm.iqm_gates

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

Bases: EigenGate

The MOVE gate, a unitary population exchange operation between a qubit and a resonator.

Its effect is only defined in the invariant subspace \(S = \text{span}\{|00\rangle, |01\rangle, |10\rangle\}\), where it swaps the populations of the states \(|01\rangle\) and \(|10\rangle\). Its effect on the orthogonal subspace is undefined.

MOVE has the following presentation in the subspace \(S\):

\[\text{MOVE}_S = |00\rangle \langle 00| + a |10\rangle \langle 01| + a^{-1} |01\rangle \langle 10|,\]

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\rangle\), 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

num_qubits

The number of qubits this gate acts on.

Parameters:
  • exponent (value.TParamVal)

  • global_shift (float)

num_qubits() int#

The number of qubits this gate acts on.

Return type:

int

Inheritance

Inheritance diagram of iqm.cirq_iqm.iqm_gates.IQMMoveGate