mirror of https://github.com/openqasm/openqasm.git
76 lines
2.3 KiB
ReStructuredText
76 lines
2.3 KiB
ReStructuredText
Built-in quantum instructions
|
|
=============================
|
|
|
|
This section describes built-in non-unitary operations.
|
|
|
|
Initialization
|
|
--------------
|
|
|
|
The statement ``reset qubit|qubit[];`` resets a qubit or quantum register to the state
|
|
:math:`|0\rangle`. This corresponds to a partial trace over those qubits
|
|
(*i.e.* discarding them) before replacing them with
|
|
:math:`|0\rangle\langle 0|`. Reset is shown in :numref:`fig_prepare`.
|
|
|
|
.. code-block::
|
|
|
|
// Initialize and reset a register of 10 qubits
|
|
qubit[10] qubits;
|
|
reset qubits;
|
|
|
|
|
|
.. _fig_prepare:
|
|
.. multifigure::
|
|
|
|
.. image:: ../qpics/c7.svg
|
|
|
|
.. image:: ../qpics/c8.svg
|
|
|
|
.. image:: ../qpics/c9.svg
|
|
|
|
The ``reset`` statement prepares a qubit or quantum register in the state :math:`|0\rangle`.
|
|
|
|
|
|
Measurement
|
|
-----------
|
|
|
|
The statement ``bit|bit[] = measure qubit|qreg;`` measures the qubit(s) in the :math:`Z`-basis and assigns
|
|
the measurement outcome(s) to the target bit(s). For backwards
|
|
compatibility this is equivalent to ``measure qubit|qubit[] -> bit|bit[];`` which is also supported. Measurement
|
|
corresponds to a projection onto one of the eigenstates of :math:`Z`,
|
|
and qubit(s) are immediately available for further quantum computation.
|
|
Both arguments must be register-type, or both must be bit-type. If both
|
|
arguments are register-type and have the same size, the statement ``b = measure a;``
|
|
broadcasts to ``b[j] = measure a[j];`` for each index ``j`` into register ``a``. Measurement is shown in
|
|
:numref:`fig_measure`.
|
|
|
|
.. code-block::
|
|
|
|
// Initialize, flip and measure a register of 10 qubits
|
|
qubit[10] qubits;
|
|
bit[10] bits;
|
|
x qubits;
|
|
bits = measure qubits;
|
|
|
|
.. _fig_measure:
|
|
.. multifigure::
|
|
:rowitems: 3
|
|
|
|
.. image:: ../qpics/c1.svg
|
|
|
|
.. image:: ../qpics/c2.svg
|
|
|
|
.. image:: ../qpics/c3.svg
|
|
|
|
.. image:: ../qpics/c4.svg
|
|
|
|
.. image:: ../qpics/c5.svg
|
|
|
|
.. image:: ../qpics/c6.svg
|
|
|
|
The ``measure`` statement projectively measures a qubit or each qubit of a quantum
|
|
register. The measurement projects onto the :math:`Z`-basis and leaves qubits available for further
|
|
operations. The top row of circuits depicts single-qubit measurement using the statement
|
|
``c[0] = measure q[0];`` while the bottom depicts measurement of an entire register using the
|
|
statement ``c = measure q;``. The center circuit of the top row depicts measurement as the
|
|
final operation on ``q[0]``.
|