Supported Quantum Logic Gates

Below is a list of quantum logic gates supported in the Intel® Quantum SDK and their signatures. To see the matrix definitions for these gates, refer to the file:

<path to Intel Quantum SDK>/iqc/include/clang/Quantum/quintrinsics.h
  1. Hadamard (H)

    void H(qbit& q);

  2. Pauli X (X)

    void X(qbit& q);

    This is equivalent to a rotation around the X-axis by \(\pi\).

  3. Pauli Y (Y)

    void Y(qbit& q);

    This is equivalent to a rotation around the Y-axis by \(\pi\).

  4. Pauli Z (Z)

    void Z(qbit& q);

    This is equivalent to a rotation around the Z-axis by \(\pi\).

  5. Phase (S)

    void S(qbit& q);

    Phase shift with half the rotation of Z (i.e. a \(\pi/2\) rotation). Equivalent to \(RZ(\pi/2)\).

  6. Phase Inverse (Sdag)

    void Sdag(qbit& q);

    Conjugate transpose of S.

Note

Dag here is an abbreviation for “dagger”, which denotes the conjugate transpose of a Hermitian matrix.

  1. T

    void T(qbit& q);

    Phase shift, with one quarter the rotation of Z (i.e. a \(\pi/4\) rotation). Equivalent to \(RZ(\pi/4)\).

  2. T Inverse (Tdag)

    void Tdag(qbit& q);

    Conjugate transpose of T.

  3. X axis Rotation (RX)

    void RX(qbit& q, double angle);

  4. Y axis Rotation (RY)

    void RY(qbit& q, double angle);

  5. Z axis rotation (RZ)

    void RZ(qbit& q, double angle);

  6. Controlled Z (CZ)

    void CZ(qbit& ctrl, qbit& target);

  7. CNOT

    void CNOT(qbit& ctrl, qbit& target);

  8. SWAP

    void SWAP(qbit& ctrl, qbit& target);

  9. Toffoli

    void Toffoli(qbit& ctrl0, qbit& ctrl1, qbit& tgt);

    Toffoli gate with two controls.

  10. PrepZ

    void PrepZ(qbit& q);

    Initialize/reset qubit to the \(\ket{0}\) computational state.

  11. PrepX

    void PrepX(qbit& q);

    Initialize/reset qubit to the \(\ket{+}\) computational state.

  12. PrepY

    void PrepY(qbit& q);

    Initialize/reset qubit to the \(\ket{R}\) computational state.

  13. MeasZ

    void MeasZ(qbit& q, bool& c);

    void MeasZ(qbit& q, cbit& c);

    Measure the qubit q in the \(\ket{0}\) or \(\ket{1}\) computational states and store the result in c.

  14. MeasX

    void MeasX(qbit& q, bool& c);

    void MeasX(qbit& q, cbit& c);

    Measure the qubit q in the \(\ket{+}\) or \(\ket{-}\) computational states and store the result in c.

  15. MeasY

    void MeasY(qbit& q, bool& c);

    void MeasY(qbit& q, cbit& c);

    Measure the qubit q in the \(\ket{R}\) or \(\ket{L}\) computational states and store the result in c.

  16. CPhase

    void CPhase(qbit& ctrl, qbit& target, double angle);

    Controlled Phase gate.

  17. XY-plane Rotation

    void RXY(qbit& q, double theta, double phi);

    Define a rotation in the XY-plane of the Bloch sphere (RXY Matrix Representation).

  18. Swap Alpha

    void SwapA(qbit& q1, qbit& q2, double angle);

    Rotation in the \(\text{Span}\{ \ket{01} \ket{10} \}\) subspace.

Quantum Dot Qubit Gates

Some physical systems will find it easier to implement certain quantum gates because of differences in the underlying quantum systems used to create hardware qubits. If two sets of quantum gates are each universal for quantum computing, then a quantum algorithm can be implemented in either set of quantum gates. Below is the list of the quantum gates that the Intel® Quantum SDK targets during compilation. The gates written in the quantum_kernel functions are decomposed by the compiler into the gates below, and the results can be found in the human-readable .qs file. This list is for reference.

  1. quprepz(qbit q)

    An incoherent reset to computational \(\ket{0}\) state.

  2. qumeasz(qbit q)

    Measurement in the \(Z\) basis. This collapses the qubit to the measured state, either \(\ket{0}\) or \(\ket{1}\).

  3. qurotxy (qbit q, double theta, double phi)

    A rotation of theta around arbitrary axis in X-Y plane of the Bloch sphere as characterized by angle phi, i.e. the operator \(\exp \left\{ -i \, \theta/2 \left( \cos(\phi) \hat{\textrm{X}} + \sin(\phi) \hat{\textrm{Y}} \right) \right\}\).

  4. qucphase(qbit q1, qbit q2, double theta)

    An arbitrary phase of \(\exp \left(-i \, \theta \right)\) on the \(\ket{11}\) state of the given qubits.

  5. quswapalp(qbit q1, qbit q2, double theta)

    An arbitrary rotation of theta in the \(\left\{ \ket{01}, \ket{10} \right\}\) state subspace.

  6. qurotz(qbit q, double theta)

    An arbitrary rotation of theta about the \(Z\)-axis of the Bloch sphere. Optimizers should minimize occurrences.