qrisp.QuantumCircuit.compare_unitary#

QuantumCircuit.compare_unitary(other: QuantumCircuit, precision: int = 4, ignore_gphase: bool = False) bool[source]#

Compares the unitaries of two QuantumCircuits. This can be used to check if a QuantumCircuit transformation is valid.

Parameters:
otherQuantumCircuit

The QuantumCircuit to compare to.

precisionint, optional

The precision of the comparison. This function will return True if the norm of the difference of the unitaries is below 10**(-precision). The default is 4.

ignore_gphase: bool, optional

If set to True, this method returns True if the unitaries only differ in a global phase.

Returns:
bool

The comparison outcome.

Examples

We create two QuantumCircuit with equivalent unitaries but differing by a non-trivial commutation:

>>> from qrisp import QuantumCircuit
>>> qc_0 = QuantumCircuit(2)
>>> qc_1 = QuantumCircuit(2)
>>> qc_0.z(0)
>>> qc_0.cx(0,1)
>>> print(qc_0)
      ┌───┐
qb_0: ┤ Z ├──■──
      └───┘┌─┴─┐
qb_1: ─────┤ X ├
           └───┘
>>> qc_1.cx(0,1)
>>> qc_1.z(0)
>>> print(qc_1)
           ┌───┐
qb_2: ──■──┤ Z ├
      ┌─┴─┐└───┘
qb_3: ┤ X ├─────
      └───┘
>>> qc_0.compare_unitary(qc_1)
True