-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Closed
Labels
Description
Current synthesis algorithms do not respect global phase, which can lead to unexpected errors when the synthesis result is processed further (e.g. controlled).
Example:
import numpy as np
from qiskit import QuantumCircuit, QuantumRegister
from qiskit.transpiler import PassManager
from qiskit.transpiler.passes import *
from qiskit.quantum_info import Operator
qr = QuantumRegister(2, 'qr')
circuit = QuantumCircuit(qr)
circuit.cx(qr[0], qr[1])
circuit.u1(0.1, qr[0])
circuit.z(qr[1])
circuit.cx(qr[0], qr[1])
circuit.cx(qr[0], qr[1])
circuit.rz(0.1 * np.pi, qr[0])
passes = [Unroller(['u1', 'u2', 'u3', 'cx']), Collect2qBlocks(), ConsolidateBlocks(), Unroller(['u1', 'u2', 'u3', 'cx'])]
pm = PassManager(passes)
new_circuit = pm.run(circuit)
Operator(circuit) == Operator(new_circuit)