Exemplo n.º 1
0
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])
Exemplo n.º 2
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")
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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])