Beispiel #1
0
 def w_state(self, q):
     Gates.X(q, 0)
     power = 1
     missedpower = -1
     while power < q.length:
         oldpower = power
         power = power * 2
         if power > q.length:
             power = q.length
             missedpower = oldpower
         Gates.H(q, power - 1)
         for ix in range(oldpower - 1):
             index = oldpower + ix
             if ix < q.length and index < q.length:
                 Gates.CCNOT(q, ix, power - 1, index)
             if ix < q.length and index < q.length:
                 Gates.CNOT(q, index, ix)
             if index < q.length:
                 Gates.CNOT(q, index, power - 1)
         Gates.CNOT(q, power - 1, oldpower - 1)
     if missedpower > -1:
         Gates.CCNOT(q, 0, q.length - 1, 1)
         Gates.CCNOT(q, 1, 0, q.length - 1)
         m = Measurement.rr_measure(q, q.length - 1, 0)
         Gates.CCNOT(q, 1, 0, q.length - 1)
         Gates.CNOT(q, q.length - 1, 0)
         Gates.CNOT(q, q.length - 1, 1)
         return q
Beispiel #2
0
 def w_state(self, q):
     Gates.X(q, 0)
     power = 1
     while power < q.length:
         oldpower = power
         power = power * 2
         Gates.H(q, power - 1)
         for ix in range(oldpower - 1):
             index = oldpower + ix
             Gates.CCNOT(q, ix, power - 1, index)
             Gates.CNOT(q, index, ix)
             Gates.CNOT(q, index, power - 1)
         Gates.CNOT(q, power - 1, oldpower - 1)
     return q
Beispiel #3
0
 def fredkin_gate(self, q):
     Gates.CCNOT(q, 0, 1, 2)
     Gates.CCNOT(q, 0, 2, 1)
     Gates.CCNOT(q, 0, 1, 2)
Beispiel #4
0
 def toffoli_gate(self, q):
     Gates.CCNOT(q, 0, 1, 2)