|
@@ -8,38 +8,37 @@ N = 10 |
|
|
REPEATS = 10 |
|
|
REPEATS = 10 |
|
|
m = {1: graphsim.lco_X, 2: graphsim.lco_Y, 3: graphsim.lco_Z} |
|
|
m = {1: graphsim.lco_X, 2: graphsim.lco_Y, 3: graphsim.lco_Z} |
|
|
|
|
|
|
|
|
def _test_multiqubit_measurement_pz(): |
|
|
|
|
|
""" Test a multiqubit measurement """ |
|
|
|
|
|
for i in tqdm(range(REPEATS)): |
|
|
|
|
|
a, b = dummy.random_state(messy=False) |
|
|
|
|
|
j = np.random.choice(range(N)) |
|
|
|
|
|
k = "pz" |
|
|
|
|
|
a.measure(j, k, 0) |
|
|
|
|
|
print a.to_json() |
|
|
|
|
|
print b.to_json() |
|
|
|
|
|
print |
|
|
|
|
|
#assert a.to_json() == b.to_json(), a |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_2qubit(): |
|
|
def test_2qubit(): |
|
|
""" Relentless testing of measurements """ |
|
|
""" Relentless testing of measurements """ |
|
|
|
|
|
clifford.use_old_cz() |
|
|
for measurement in (3, 2, 1): |
|
|
for measurement in (3, 2, 1): |
|
|
for outcome in (0, 1): |
|
|
for outcome in (0, 1): |
|
|
a, b = dummy.bell() |
|
|
a, b = dummy.bell() |
|
|
a.measure(0, str(measurement), outcome) |
|
|
a.measure(0, str(measurement), outcome) |
|
|
b.measure(0, m[measurement], None, outcome) |
|
|
b.measure(0, m[measurement], None, outcome) |
|
|
assert a == b, "FUCK" |
|
|
|
|
|
#print a.to_json() |
|
|
|
|
|
#print b.to_json() |
|
|
|
|
|
assert a == b, (measurement, outcome) |
|
|
assert a == b, (measurement, outcome) |
|
|
|
|
|
|
|
|
def test_multiqubit(): |
|
|
def test_multiqubit(): |
|
|
""" Relentless testing of measurements """ |
|
|
""" Relentless testing of measurements """ |
|
|
for measurement in (1,): |
|
|
|
|
|
for i in tqdm(range(1000), "Testing {} measurement".format(measurement)): |
|
|
|
|
|
|
|
|
for measurement in (3,2,1,): |
|
|
|
|
|
for i in tqdm(range(REPEATS), "Testing measurement {}".format(measurement)): |
|
|
for outcome in (0, 1): |
|
|
for outcome in (0, 1): |
|
|
a, b = dummy.random_state(N, messy=False) |
|
|
|
|
|
|
|
|
a, b = dummy.clean_random_state(N) |
|
|
a.measure(0, str(measurement), outcome) |
|
|
a.measure(0, str(measurement), outcome) |
|
|
b.measure(0, m[measurement], None, outcome) |
|
|
b.measure(0, m[measurement], None, outcome) |
|
|
assert a == b, (measurement, outcome) |
|
|
assert a == b, (measurement, outcome) |
|
|
|
|
|
|
|
|
|
|
|
def test_multiqubit2(): |
|
|
|
|
|
""" Relentless testing of measurements """ |
|
|
|
|
|
for measurement in (3,): |
|
|
|
|
|
for i in tqdm(range(REPEATS), "Testing {} measurement".format(measurement)): |
|
|
|
|
|
for outcome in (0, 1): |
|
|
|
|
|
a, b = dummy.messy_random_state(3) |
|
|
|
|
|
assert a == b |
|
|
|
|
|
oa = a.measure(0, str(measurement), outcome) |
|
|
|
|
|
ob = b.measure(0, m[measurement], None, outcome) |
|
|
|
|
|
assert oa == ob, (oa, ob) |
|
|
|
|
|
print a.to_json() |
|
|
|
|
|
print b.to_json() |
|
|
|
|
|
assert a == b, (measurement, outcome) |
|
|
|
|
|
|