|
@@ -4,32 +4,32 @@ from abp import clifford |
|
|
import numpy as np |
|
|
import numpy as np |
|
|
import random |
|
|
import random |
|
|
|
|
|
|
|
|
|
|
|
REPEATS = 10 |
|
|
|
|
|
|
|
|
def test_hadamard_only_multiqubit(): |
|
|
|
|
|
|
|
|
def test_hadamard_only_multiqubit(n=6): |
|
|
""" A multi qubit test with Hadamards only""" |
|
|
""" A multi qubit test with Hadamards only""" |
|
|
n = 4 |
|
|
|
|
|
g = GraphState(range(n)) |
|
|
|
|
|
c = CircuitModel(n) |
|
|
|
|
|
|
|
|
for qqq in range(REPEATS): |
|
|
|
|
|
g = GraphState(range(n)) |
|
|
|
|
|
c = CircuitModel(n) |
|
|
|
|
|
|
|
|
for i in range(n): |
|
|
|
|
|
g.act_hadamard(i) |
|
|
|
|
|
c.act_hadamard(i) |
|
|
|
|
|
|
|
|
for i in range(n): |
|
|
|
|
|
g.act_hadamard(i) |
|
|
|
|
|
c.act_hadamard(i) |
|
|
|
|
|
|
|
|
assert g.to_state_vector() == c |
|
|
|
|
|
|
|
|
assert g.to_state_vector() == c |
|
|
|
|
|
|
|
|
for i in range(100): |
|
|
|
|
|
a, b = np.random.randint(0, n - 1, 2) |
|
|
|
|
|
if a != b: |
|
|
|
|
|
g.act_cz(a, b) |
|
|
|
|
|
c.act_cz(a, b) |
|
|
|
|
|
|
|
|
for i in range(100): |
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
assert g.to_state_vector() == c |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_all_multiqubit(n=4): |
|
|
def test_all_multiqubit(n=4): |
|
|
""" A multi qubit test with arbitrary local rotations """ |
|
|
""" A multi qubit test with arbitrary local rotations """ |
|
|
for j in range(100): |
|
|
|
|
|
n = 4 |
|
|
|
|
|
|
|
|
for qqq in range(REPEATS): |
|
|
g = GraphState(range(n)) |
|
|
g = GraphState(range(n)) |
|
|
c = CircuitModel(n) |
|
|
c = CircuitModel(n) |
|
|
for i in range(10): |
|
|
for i in range(10): |
|
@@ -37,6 +37,7 @@ def test_all_multiqubit(n=4): |
|
|
rotation = np.random.randint(0, 24 - 1) |
|
|
rotation = np.random.randint(0, 24 - 1) |
|
|
g.act_local_rotation(qubit, rotation) |
|
|
g.act_local_rotation(qubit, rotation) |
|
|
c.act_local_rotation(qubit, clifford.unitaries[rotation]) |
|
|
c.act_local_rotation(qubit, clifford.unitaries[rotation]) |
|
|
|
|
|
|
|
|
assert g.to_state_vector() == c |
|
|
assert g.to_state_vector() == c |
|
|
|
|
|
|
|
|
for i in range(1): |
|
|
for i in range(1): |
|
|