def generateOutput(circuit, qreg): global canHaveError, canHaveErrorI if canHaveError is None: canHaveError = QuantumRegister(2, "err") canHaveErrorI = circuit.num_qubits circuit.add_register(canHaveError) circuit.reset(canHaveError[1]) # check for >127 gate = MCXGate(2, ctrl_state="01") circuit.append(gate, qargs=[qreg[7]] + canHaveError[:]) # check for <32 gate = MCXGate(4, ctrl_state="0000") circuit.append(gate, qargs=qreg[5 : 8] + canHaveError[:]) circuit.cx(canHaveError[1], canHaveError[0])
def test_cnot(self): """Test different cnot gates (ccnot, mcx, etc)""" qr = QuantumRegister(5, 'q') circuit = QuantumCircuit(qr) circuit.x(0) circuit.cx(0, 1) circuit.ccx(0, 1, 2) circuit.append(XGate().control(3, ctrl_state='010'), [qr[2], qr[3], qr[0], qr[1]]) circuit.append(MCXGate(num_ctrl_qubits=3, ctrl_state='101'), [qr[0], qr[1], qr[2], qr[4]]) self.circuit_drawer(circuit, filename='cnot.png')
def test_cnot(self): """Test different cnot gates (ccnot, mcx, etc)""" qr = QuantumRegister(6, "q") circuit = QuantumCircuit(qr) circuit.x(0) circuit.cx(0, 1) circuit.ccx(0, 1, 2) circuit.append(XGate().control(3, ctrl_state="010"), [qr[2], qr[3], qr[0], qr[1]]) circuit.append(MCXGate(num_ctrl_qubits=3, ctrl_state="101"), [qr[0], qr[1], qr[2], qr[4]]) circuit.append(MCXVChain(3, dirty_ancillas=True), [qr[0], qr[1], qr[2], qr[3], qr[5]]) self.circuit_drawer(circuit, filename="cnot.png")
def test_cnot(self): """Test different cnot gates (ccnot, mcx, etc)""" filename = self._get_resource_path('test_latex_cnot.tex') qr = QuantumRegister(5, 'q') circuit = QuantumCircuit(qr) circuit.x(0) circuit.cx(0, 1) circuit.ccx(0, 1, 2) circuit.append(XGate().control(3, ctrl_state='010'), [qr[2], qr[3], qr[0], qr[1]]) circuit.append(MCXGate(num_ctrl_qubits=3, ctrl_state='101'), [qr[0], qr[1], qr[2], qr[4]]) circuit_drawer(circuit, filename=filename, output='latex_source') self.assertEqualToReference(filename)
def fit(self, x): """ A function to fit the test vector x with the superpositioned dataset. The circuit from previous set is appended to this circuit as there is no concept of saving the data! """ l = 2**(self.k_neighbours) - self.n a = t + l a_binary = "{0:b}".format(a) a_len = self.k_neighbours + 1 if len(a_binary) < a_len: a_binary = "0" * (a_len - len(a_binary)) + a_binary xR = QuantumRegister(self.n, "x") auR = QuantumRegister(1, "au") aR = QuantumRegister(a_len, "a") cR = ClassicalRegister(1, "c") oR = ClassicalRegister(self.class_n, "o") predictCircuit = QuantumCircuit(xR, self.main_mR, aR, auR, cR, oR) circuit = self.main_circuit + predictCircuit circuit.barrier() for k in range(len(x)): circuit.cx(self.main_mR[k], xR[k]) circuit.x(xR[k]) for i in range(a_len): if a_binary[::-1][i] == "0": circuit.initialize(self.zero_state, aR[i]) else: circuit.initialize(self.one_state, aR[i]) circuit.initialize(self.one_state, auR) for k in range(len(x)): for i in range(a_len): circuit.ccx(xR[k], auR, aR[i]) ctrlString = "1" + "0" * (i) + "1" tempmc = MCXGate(i + 2, ctrl_state=ctrlString) circuit.append(tempmc, [xR[k]] + aR[:i + 1] + [auR], []) circuit.x(auR) ctrlString = "0" * (a_len - 1) + "1" tempmc = MCXGate(a_len, ctrl_state=ctrlString) circuit.append(tempmc, [xR[k]] + aR[0:a_len - 1] + [auR], []) circuit.barrier() circuit.measure(auR, cR) for i in range(self.class_n): circuit.measure(self.main_mR[self.n + i], oR[i]) simulator = Aer.get_backend("qasm_simulator") results = execute(circuit, simulator, shots=self.shots).result() result_dict = results.get_counts(circuit) return result_dict
def test_mcx_gates_yield_explicit_gates(self, num_ctrl_qubits): """Test the creating a MCX gate yields the explicit definition if we know it.""" cls = MCXGate(num_ctrl_qubits).__class__ explicit = {0: XGate, 1: CXGate, 2: CCXGate} self.assertEqual(cls, explicit[num_ctrl_qubits])