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
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
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]], [])]
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
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
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
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
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)