Exemplo n.º 1
0
 def test_basic(self):
     """Test decompose a single H into u2."""
     qr = QuantumRegister(1, "qr")
     circuit = QuantumCircuit(qr)
     circuit.h(qr[0])
     dag = circuit_to_dag(circuit)
     pass_ = Decompose(HGate)
     after_dag = pass_.run(dag)
     op_nodes = after_dag.op_nodes()
     self.assertEqual(len(op_nodes), 1)
     self.assertEqual(op_nodes[0].name, "u2")
Exemplo n.º 2
0
 def test_basic(self):
     """Test decompose a single H into u2.
     """
     qr = QuantumRegister(1, 'qr')
     circuit = QuantumCircuit(qr)
     circuit.h(qr[0])
     dag = circuit_to_dag(circuit)
     pass_ = Decompose(HGate(qr[0]))
     after_dag = pass_.run(dag)
     op_nodes = after_dag.get_op_nodes(data=True)
     self.assertEqual(len(op_nodes), 1)
     self.assertEqual(op_nodes[0][1]["op"].name, 'u2')
Exemplo n.º 3
0
 def test_decompose_only_h(self):
     """Test to decompose a single H, without the rest"""
     qr = QuantumRegister(2, "qr")
     circuit = QuantumCircuit(qr)
     circuit.h(qr[0])
     circuit.cx(qr[0], qr[1])
     dag = circuit_to_dag(circuit)
     pass_ = Decompose(HGate)
     after_dag = pass_.run(dag)
     op_nodes = after_dag.op_nodes()
     self.assertEqual(len(op_nodes), 2)
     for node in op_nodes:
         self.assertIn(node.name, ["cx", "u2"])
Exemplo n.º 4
0
 def test_decompose_none(self):
     """Test decompose a single H into u2."""
     qr = QuantumRegister(1, "qr")
     circuit = QuantumCircuit(qr)
     circuit.h(qr[0])
     dag = circuit_to_dag(circuit)
     pass_ = Decompose(HGate)
     with self.assertWarns(DeprecationWarning):
         pass_.gate = None
     after_dag = pass_.run(dag)
     op_nodes = after_dag.op_nodes()
     self.assertEqual(len(op_nodes), 1)
     self.assertEqual(op_nodes[0].name, "u2")
Exemplo n.º 5
0
 def test_decompose_toffoli(self):
     """Test decompose CCX."""
     qr1 = QuantumRegister(2, "qr1")
     qr2 = QuantumRegister(1, "qr2")
     circuit = QuantumCircuit(qr1, qr2)
     circuit.ccx(qr1[0], qr1[1], qr2[0])
     dag = circuit_to_dag(circuit)
     pass_ = Decompose(CCXGate)
     after_dag = pass_.run(dag)
     op_nodes = after_dag.op_nodes()
     self.assertEqual(len(op_nodes), 15)
     for node in op_nodes:
         self.assertIn(node.name, ["h", "t", "tdg", "cx"])
Exemplo n.º 6
0
 def test_decompose_toffoli(self):
     """Test decompose CCX.
     """
     qr1 = QuantumRegister(2, 'qr1')
     qr2 = QuantumRegister(1, 'qr2')
     circuit = QuantumCircuit(qr1, qr2)
     circuit.ccx(qr1[0], qr1[1], qr2[0])
     dag = circuit_to_dag(circuit)
     pass_ = Decompose(ToffoliGate)
     after_dag = pass_.run(dag)
     op_nodes = after_dag.op_nodes()
     self.assertEqual(len(op_nodes), 15)
     for node in op_nodes:
         self.assertIn(node.name, ['h', 't', 'tdg', 'cx'])
Exemplo n.º 7
0
 def test_decompose_only_h(self):
     """Test to decompose a single H, without the rest
     """
     qr = QuantumRegister(2, 'qr')
     circuit = QuantumCircuit(qr)
     circuit.h(qr[0])
     circuit.cx(qr[0], qr[1])
     dag = circuit_to_dag(circuit)
     pass_ = Decompose(HGate)
     after_dag = pass_.run(dag)
     op_nodes = after_dag.op_nodes(data=True)
     self.assertEqual(len(op_nodes), 2)
     for node in op_nodes:
         op = node[1]["op"]
         self.assertIn(op.name, ['cx', 'u2'])
Exemplo n.º 8
0
    def test_decompose_conditional(self):
        """Test decompose a 1-qubit gates with a conditional."""
        qr = QuantumRegister(1, "qr")
        cr = ClassicalRegister(1, "cr")
        circuit = QuantumCircuit(qr, cr)
        circuit.h(qr).c_if(cr, 1)
        circuit.x(qr).c_if(cr, 1)
        dag = circuit_to_dag(circuit)
        pass_ = Decompose(HGate)
        after_dag = pass_.run(dag)

        ref_circuit = QuantumCircuit(qr, cr)
        ref_circuit.append(U2Gate(0, pi), [qr[0]]).c_if(cr, 1)
        ref_circuit.x(qr).c_if(cr, 1)
        ref_dag = circuit_to_dag(ref_circuit)

        self.assertEqual(after_dag, ref_dag)