|
|
@@ -5,7 +5,8 @@ import numpy as np |
|
|
|
import random |
|
|
|
from tqdm import tqdm |
|
|
|
|
|
|
|
REPEATS = 1 |
|
|
|
REPEATS = 10 |
|
|
|
DEPTH = 1000 |
|
|
|
|
|
|
|
def test_single_qubit(): |
|
|
|
""" A multi qubit test with Hadamards only""" |
|
|
@@ -67,23 +68,21 @@ def test_all_multiqubit(n=4): |
|
|
|
|
|
|
|
assert g.to_state_vector() == c |
|
|
|
|
|
|
|
def test_all(n=4): |
|
|
|
def test_all(n=10): |
|
|
|
""" A multi qubit test with arbitrary local rotations """ |
|
|
|
g = GraphState(range(n)) |
|
|
|
c = CircuitModel(n) |
|
|
|
depth = 100 # TODO: too small |
|
|
|
for step in tqdm(xrange(depth), "Testing a deep circuit against the circuit model"): |
|
|
|
if random.random()>0.5: |
|
|
|
qubit = np.random.randint(0, n - 1) |
|
|
|
rotation = np.random.randint(0, 24 - 1) |
|
|
|
g.act_local_rotation(qubit, rotation) |
|
|
|
c.act_local_rotation(qubit, clifford.unitaries[rotation]) |
|
|
|
else: |
|
|
|
a, b = np.random.randint(0, n - 1, 2) |
|
|
|
if a != b: |
|
|
|
g.act_cz(a, b) |
|
|
|
c.act_cz(a, b) |
|
|
|
for repeat in tqdm(xrange(REPEATS), "Testing against circuit model"): |
|
|
|
for step in xrange(DEPTH): |
|
|
|
if random.random()>0.5: |
|
|
|
qubit = np.random.randint(0, n - 1) |
|
|
|
rotation = np.random.randint(0, 24 - 1) |
|
|
|
g.act_local_rotation(qubit, rotation) |
|
|
|
c.act_local_rotation(qubit, clifford.unitaries[rotation]) |
|
|
|
else: |
|
|
|
a, b = np.random.randint(0, n - 1, 2) |
|
|
|
if a != b: |
|
|
|
g.act_cz(a, b) |
|
|
|
c.act_cz(a, b) |
|
|
|
assert g.to_state_vector() == c |
|
|
|
#print g.to_state_vector() |
|
|
|
#print c |
|
|
|
|