コード例 #1
0
ファイル: u3_eth.py プロジェクト: shaimach/qiskit-terra-osq
 def _define(self):
     """
     gate cz a,b { h b; cx a,b; h b; }
     """
     theta, phi, lam = self.params
     definition = []
     q = QuantumRegister(1, "q")
     rule = [(RZGate(theta), [q[0]], []), (RXGate(phi), [q[0]], []),
             (RZGate(lam), [q[0]], [])]
     for inst in rule:
         definition.append(inst)
     self.definition = definition
コード例 #2
0
ファイル: rx.py プロジェクト: shaimach/qiskit-terra-osq
 def _define(self):
     """
         gate cz a,b { h b; cx a,b; h b; }
         """
     definition = []
     q = QuantumRegister(1, "q")
     rule = [
         (RZGate(- pi / 2), [q[0]], []),
         (CX_PIGate(1), [q[0]], []),
         (RZGate(self.params[0]), [q[0]], []),
         (CX_PIGate(1), [q[0]], []),
         (RZGate(- pi / 2), [q[0]], [])
     ]
     for inst in rule:
         definition.append(inst)
     self.definition = definition
コード例 #3
0
ファイル: rzx.py プロジェクト: vinoothk/qiskit-terra
 def _define(self):
     """
     gate rzx(theta) a, b { h b; cx a, b; rz(theta) b; cx a, b; h b;}
     """
     from qiskit.extensions.standard.rz import RZGate
     from qiskit.extensions.standard.h import HGate
     from qiskit.extensions.standard.x import CXGate
     q = QuantumRegister(2, 'q')
     self.definition = [(HGate(), [q[1]], []), (CXGate(), [q[0], q[1]], []),
                        (RZGate(self.params[0]), [q[1]], []),
                        (CXGate(), [q[0], q[1]], []), (HGate(), [q[1]], [])]
コード例 #4
0
ファイル: swap.py プロジェクト: shaimach/qiskit-terra-osq
 def _define(self):
     """
     gate swap a,b { cx a,b; cx b,a; cx a,b; }
     """
     definition = []
     q = QuantumRegister(2, "q")
     rule = [
         (CX_PIGate(1), [q[1]], []),
         (RZGate(pi / 2), [q[1]], []),
         (CX_PIGate(1), [q[1]], []),
         (CzGate(), [q[0], q[1]], []),
         (CX_PIGate(1), [q[1]], []),
         (RZGate(pi / 2), [q[1]], []),
         (CX_PIGate(1), [q[1]], []),
         (CX_PIGate(1), [q[0]], []),
         (RZGate(pi / 2), [q[0]], []),
         (CX_PIGate(1), [q[0]], []),
         (CzGate(), [q[1], q[0]], []),
         (CX_PIGate(1), [q[0]], []),
         (RZGate(pi / 2), [q[0]], []),
         (CX_PIGate(1), [q[0]], []),
         (CX_PIGate(1), [q[1]], []),
         (RZGate(pi / 2), [q[1]], []),
         (CX_PIGate(1), [q[1]], []),
         (CzGate(), [q[0], q[1]], []),
         (CX_PIGate(1), [q[1]], []),
         (RZGate(pi / 2), [q[1]], []),
         (CX_PIGate(1), [q[1]], []),
     ]
     for inst in rule:
         definition.append(inst)
     self.definition = definition
コード例 #5
0
 def _define(self):
     """
     gate h a { u2(0,pi) a; }
     """
     definition = []
     q = QuantumRegister(1, "q")
     rule = [
         (CX_PIGate(1), [q[0]], []),
         (RZGate(pi / 2), [q[0]], []),
         (CX_PIGate(1), [q[0]], []),
     ]
     for inst in rule:
         definition.append(inst)
     self.definition = definition
コード例 #6
0
 def _define(self):
     """
     gate rzz(theta) a, b { cx a, b; rz(theta) b; cx a, b; }
     """
     from qiskit.extensions.standard.rz import RZGate
     from qiskit.extensions.standard.x import CXGate
     definition = []
     q = QuantumRegister(2, 'q')
     rule = [(CXGate(), [q[0], q[1]], []),
             (RZGate(self.params[0]), [q[1]], []),
             (CXGate(), [q[0], q[1]], [])]
     for inst in rule:
         definition.append(inst)
     self.definition = definition
コード例 #7
0
 def _define(self):
     """Calculate a subcircuit that implements this unitary."""
     from qiskit.extensions.standard.x import CXGate
     from qiskit.extensions.standard.rz import RZGate
     from qiskit.extensions.standard.h import HGate
     definition = []
     q = QuantumRegister(2, 'q')
     theta = self.params[0]
     rule = [
         (HGate(), [q[0]], []),
         (HGate(), [q[1]], []),
         (CXGate(), [q[0], q[1]], []),
         (RZGate(theta), [q[1]], []),
         (CXGate(), [q[0], q[1]], []),
         (HGate(), [q[1]], []),
         (HGate(), [q[0]], []),
     ]
     for inst in rule:
         definition.append(inst)
     self.definition = definition
コード例 #8
0
    def create_dag_op(self, name, args, qubits):
        """Create a DAG op node.
        """
        if name == "u0":
            op = U0Gate(args[0], qubits[0])
        elif name == "u1":
            op = U1Gate(args[0], qubits[0])
        elif name == "u2":
            op = U2Gate(args[0], args[1], qubits[0])
        elif name == "u3":
            op = U3Gate(args[0], args[1], args[2], qubits[0])
        elif name == "x":
            op = XGate(qubits[0])
        elif name == "y":
            op = YGate(qubits[0])
        elif name == "z":
            op = ZGate(qubits[0])
        elif name == "t":
            op = TGate(qubits[0])
        elif name == "tdg":
            op = TdgGate(qubits[0])
        elif name == "s":
            op = SGate(qubits[0])
        elif name == "sdg":
            op = SdgGate(qubits[0])
        elif name == "swap":
            op = SwapGate(qubits[0], qubits[1])
        elif name == "rx":
            op = RXGate(args[0], qubits[0])
        elif name == "ry":
            op = RYGate(args[0], qubits[0])
        elif name == "rz":
            op = RZGate(args[0], qubits[0])
        elif name == "rzz":
            op = RZZGate(args[0], qubits[0], qubits[1])
        elif name == "id":
            op = IdGate(qubits[0])
        elif name == "h":
            op = HGate(qubits[0])
        elif name == "cx":
            op = CnotGate(qubits[0], qubits[1])
        elif name == "cy":
            op = CyGate(qubits[0], qubits[1])
        elif name == "cz":
            op = CzGate(qubits[0], qubits[1])
        elif name == "ch":
            op = CHGate(qubits[0], qubits[1])
        elif name == "crz":
            op = CrzGate(args[0], qubits[0], qubits[1])
        elif name == "cu1":
            op = Cu1Gate(args[0], qubits[0], qubits[1])
        elif name == "cu3":
            op = Cu3Gate(args[0], args[1], args[2], qubits[0], qubits[1])
        elif name == "ccx":
            op = ToffoliGate(qubits[0], qubits[1], qubits[2])
        elif name == "cswap":
            op = FredkinGate(qubits[0], qubits[1], qubits[2])
        else:
            raise BackendError("unknown operation for name ast node name %s" %
                               name)

        self.circuit.add_basis_element(op.name, len(op.qargs), len(op.cargs),
                                       len(op.param))
        self.start_gate(op)
        self.end_gate(op)