MS gate

The Mølmer-Sørensen gate, IonQ Aria's native entangler: matrix, phase and angle parameters in turns, effect on the basis states, and the MSGate call.

The MS gate, the Mølmer-Sørensen gate, is the native two-qubit entangling gate of IonQ's Aria systems. It rotates a pair of qubits together about an axis in the XY plane of each, with the two axes set by phases ϕ0\phi_0 and ϕ1\phi_1 and the amount of entanglement set by an angle θ\theta. All three are in turns: θ\theta runs from 0, the identity, to 0.25, fully entangling, which is the default. With both phases at 0 it is an RXX gate of angle 2πθ2\pi\theta. At θ=0.25\theta = 0.25 on two fresh qubits, the pair reads 00 or 11 with equal probability and never 01 or 10.

Kets such as 0\vert 0 \rangle name the basis states and rotations are described on the Bloch sphere; the qubits lesson introduces both.

Before you use a native gate

Native gates only run in a native-gate circuit, and a circuit cannot mix native and standard gates. In qiskit-ionq a backend is created for one gateset, provider.get_backend(name, gateset="native"); the pre-created backend on Qollab uses the standard gateset. MS is the entangler of Aria, which on Qollab means the Aria noise-model simulators; Forte, the hardware behind Qollab's QPU backends, uses the ZZ gate instead. Submitting native gates bypasses IonQ's compiler and optimiser and turns error mitigation off by default. See How your circuit is compiled.

Call

WhereCall
Pythonqc.append(MSGate(φ0, φ1, θ), [qubit0, qubit1])
JScircuit.append(MSGate(φ0, φ1, θ), [qubit0, qubit1])
ClassMSGate, from qiskit_ionq; θ defaults to 0.25

Matrix

The matrix uses the basis order 00,01,10,11\vert 00 \rangle, \vert 01 \rangle, \vert 10 \rangle, \vert 11 \rangle, with c=cos(πθ)c = \cos(\pi\theta), s=sin(πθ)s = \sin(\pi\theta) , ϕ+=ϕ0+ϕ1\phi_+ = \phi_0 + \phi_1 and ϕ=ϕ1ϕ0\phi_- = \phi_1 - \phi_0.

MS(ϕ0,ϕ1,θ)=(c00ie2πiϕ+s0cie2πiϕs00ie2πiϕsc0ie2πiϕ+s00c)MS(\phi_0, \phi_1, \theta) = \begin{pmatrix} c & 0 & 0 & -ie^{-2\pi i\phi_+}s \\ 0 & c & -ie^{2\pi i\phi_-}s & 0 \\ 0 & -ie^{-2\pi i\phi_-}s & c & 0 \\ -ie^{2\pi i\phi_+}s & 0 & 0 & c \end{pmatrix}

MS(0, 0, θ) is rxx(2πθ) and MS(0.25, 0.25, θ) is ryy(2πθ); MS(0, 0, 0.25) is rxx(π/2), fully entangling.

Effect on basis states

With both phases at 0, the four basis states map as follows.

InputOutput
00\vert 00 \ranglec00is11c\vert 00 \rangle - is\vert 11 \rangle
01\vert 01 \ranglec01is10c\vert 01 \rangle - is\vert 10 \rangle
10\vert 10 \ranglec10is01c\vert 10 \rangle - is\vert 01 \rangle
11\vert 11 \ranglec11is00c\vert 11 \rangle - is\vert 00 \rangle

At θ=0.25\theta = 0.25, from 00\vert 00 \rangle the gate produces an equal superposition of 00\vert 00 \rangle and 11\vert 11 \rangle, a Bell state up to a phase. Smaller angles entangle partially, which is what makes arbitrary-angle MS gates cheaper than building the same rotation from fully entangling ones.

Inverse

The inverse of MS(φ0, φ1, θ) is MS(φ0 + 0.5, φ1, θ): the same gate with one axis turned half a turn round, since the angle cannot go negative.

Usage

from qiskit import QuantumCircuit
from qiskit_ionq import MSGate

qc = QuantumCircuit(2, 2)
qc.append(MSGate(0, 0), [0, 1])
qc.measure([0, 1], [0, 1])
import { QuantumCircuit } from 'qiskit';
import { MSGate } from 'qiskit_ionq';

const circuit = QuantumCircuit(2, 2);
circuit.append(MSGate(0, 0), [0, 1]);
circuit.measure([0, 1], [0, 1]);

On a noiseless simulator every shot reads 00 or 11, in close to equal numbers.

Stay in the loop.

Get the latest tutorials, demos, and project showcases straight to your inbox. No noise, just the good stuff.