def test_decompose_u1(self): qr = QuantumRegister(1) circ = QuantumCircuit(qr) circ.u1(pi, qr[0]) unrolled = pass_manager = PassManager([IonUnroller()]).run( circ, output_name=circ.name + " unrolled") c2 = QuantumCircuit(qr) c2.rz(pi, qr[0]) self.assertEqual(str(c2.draw()), str(unrolled.draw()))
def test_decompose_cx(self): qr = QuantumRegister(2) circ = QuantumCircuit(qr) circ.cx(qr[0], qr[1]) unrolled = pass_manager = PassManager([IonUnroller()]).run( circ, output_name=circ.name + " unrolled") c2 = QuantumCircuit(qr) c2.sy(qr[0]) c2.ms2(pi / 2, 0, qr[0], qr[1]) c2.r(0, -pi / 2, qr[0]) c2.r(0, -pi / 2, qr[1]) c2.r(pi / 2, -pi / 2, qr[0]) self.maxDiff = 2000 self.assertEqual(str(c2.draw()), str(unrolled.draw()))
def test_stable_gates(self): qr = QuantumRegister(2) cr = ClassicalRegister(2) circ = QuantumCircuit(qr, cr) circ.ms2(pi / 4, pi / 4, qr[0], qr[1]) circ.r(pi / 2, pi / 4, qr[0]) circ.x(qr[1]) circ.y(qr[0]) circ.sx(qr[0]) circ.sy(qr[1]) circ.i(qr[0]) circ.measure(qr, cr) unrolled = pass_manager = PassManager([IonUnroller()]).run( circ, output_name=circ.name + " unrolled") self.assertEqual(str(circ.draw()), str(unrolled.draw()))