qrisp.QuantumCircuit.get_unitary#
- QuantumCircuit.get_unitary(decimals=-1)[source]#
Acquires the unitary matrix of the given QuantumCircuit as a Numpy array.
This method also works with abstract parameters. In this case a Numpy array with Sympy entries is returned.
- Parameters:
- decimalsinteger, optional
The amount of decimals to be rounded to. By default, the full precision is returned.
- Returns:
- numpy.ndarray
The unitary matrix as a numpy array.
Examples
We synthesize a controlled phase gate and inspect the unitary:
>>> from qrisp import QuantumCircuit >>> import numpy as np >>> qc = QuantumCircuit(2) >>> phi = np.pi >>> qc.p(phi/2, 0) >>> qc.p(phi/2, 1) >>> qc.cx(0,1) >>> qc.p(-phi/2, 1) >>> qc.cx(0,1) >>> qc.get_unitary(decimals = 4) array([[ 1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j], [ 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 0.+0.j, -1.+0.j]], dtype=complex64)
We now synthesize the exact same QuantumCircuit but this time
phi
is a Sympy symbol.>>> from sympy import Symbol >>> qc = QuantumCircuit(2) >>> phi = Symbol("phi") >>> qc.p(phi/2, 0) >>> qc.p(phi/2, 1) >>> qc.cx(0,1) >>> qc.p(-phi/2, 1) >>> qc.cx(0,1) >>> qc.get_unitary(decimals = 4) array([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, exp(I*phi)]], dtype=object)