GPi gate

The GPi gate, an IonQ native π pulse: matrix, phase parameter in turns, effect on the basis states, the GPIGate call, and which systems run it.

The GPi gate is an IonQ native gate: a half-turn (π) rotation about an axis in the XY plane of the Bloch sphere, with the axis set by a phase ϕ\phi. It acts on one qubit and takes one parameter, ϕ\phi in turns, where 1 is a full rotation of the axis: GPi(0) is an X gate and GPi(0.25) is a Y gate. It runs on Aria and Forte. Measured straight after it, a qubit that started as 0 reads 1, whatever the phase.

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. Submitting native gates bypasses IonQ's compiler and optimiser and turns error mitigation off by default, which is why IonQ recommends them only for research work. See How your circuit is compiled.

Call

WhereCall
Pythonqc.append(GPIGate(φ), [qubit])
JScircuit.append(GPIGate(φ), [qubit])
ClassGPIGate, from qiskit_ionq

Matrix

GPi(ϕ)=(0e2πiϕe2πiϕ0)GPi(\phi) = \begin{pmatrix} 0 & e^{-2\pi i\phi} \\ e^{2\pi i\phi} & 0 \end{pmatrix}

Effect on basis states

InputOutput
0\vert 0 \ranglee2πiϕ1e^{2\pi i\phi}\vert 1 \rangle
1\vert 1 \ranglee2πiϕ0e^{-2\pi i\phi}\vert 0 \rangle

A basis state always flips, whatever the phase. The phase only shows once the qubit is in superposition or meets other gates.

Inverse

GPi is its own inverse for any phase. Two GPi(φ) in a row on the same qubit cancel.

Usage

from qiskit import QuantumCircuit
from qiskit_ionq import GPIGate

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

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

Every shot reads 1: GPi(0) is an X.

Stay in the loop.

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