Measurement and Probability

Qgate implements measure and prob operators. Measure operator is to make a measurement, and prob operator calculates probability for specified qreg(s).

single- and multiple-qubit versions are provided for both measurement and prob operators.

Measurement

Single-bit measurement

measure(ref, qreg)

measure(ref, qreg) measures a qreg, and store result in a value referred by ref.

Measure operation has a reference as the first parameter. This reference is used to access to measured values after simulation. The second parameter is qreg, on which measurement is performed.

Single qubit measuremenet is Z-based, and identical to measurement operation defined in OpenQASM.

ref = new_reference()
m = measure(ref, qreg)
circuit.append(m)

Multiple-qubit measurement

measure(ref, gatelist)

measure(ref, gatelist) is the operator for multiple-qubit measurement which is an equivalent of Pauli Measurements in Q#.

gatelist is a sequence of pauli gates to specify obervation operator.

A measurement result is stored in a value referenced by ref.

The first parameter is a reference, which is used to store the measured value. The second parameter is a sequence of pauli and identity gates.

ref = new_reference()
gatelist = [X(qreg0), Y(qreg1)]
m = measure(ref, gatelist)
circuit.append(m)

# single-bit measurement is identical to the following.
m = measure(ref, Z(qreg))
circuit.append(m)

Probability

Single-bit probability

prob(ref, qreg)

prob(ref, qreg) calculate probablity, \(Pr(Zero||\psi>)\), on a specified qreg. Calculated provabity is stored to a value referred by ref.

ref = new_reference()
p = prob(ref, qreg)
circuit.append(p)  # adding prob operation

Multiple-qubit probability

prob(ref, gatelist)

prob(ref, gatelist) calculates probability on multiple-qregs, and observable is defined by gatelist. Calculated probability is stored in a value referenced by ref.

ref = new_reference()
gatelist = [X(qreg0), Y(qreg1)]
m = prob(ref, gatelist)
circuit.append(m)

# single-bit measurement is identical to the following.
m = prob(ref, Z(qreg))
circuit.append(m)