Esempio n. 1
0
    def _define(self):
        definition = []
        #   q = c, x, z, anc
        q = QuantumRegister(self.total_n, "q")

        rule = [
            (CMULTaModNGate(self.a, self.N,
                            self.n), [q[i] for i in range(self.total_n)], []),
        ]

        for i in range(self.n):
            rule.append((FredkinGate(), [q[0], q[i + 1],
                                         q[self.n + 1 + i]], [])),

        rule.append(
            (CMULTaModNGate(modInverse(self.a, self.N),
                            self.N,
                            self.n,
                            inverse=True), [q[i]
                                            for i in range(self.total_n)], []))

        for inst in rule:
            definition.append(inst)
        self.definition = definition
Esempio n. 2
0
 def test_controlled_swap(self):
     """Test creation of controlled swap gate"""
     self.assertEqual(SwapGate().control(), FredkinGate())