소스 검색

Not much

master
Pete Shadbolt 8 년 전
부모
커밋
0d2346ae9c
2개의 변경된 파일29개의 추가작업 그리고 16개의 파일을 삭제
  1. +15
    -16
      tests/test_against_circuit_model.py
  2. +14
    -0
      tests/test_circuit_model_fails.py

+ 15
- 16
tests/test_against_circuit_model.py 파일 보기

@@ -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


+ 14
- 0
tests/test_circuit_model_fails.py 파일 보기

@@ -0,0 +1,14 @@
from abp import qi

def test_dumbness():
a = qi.CircuitModel(1)
b = qi.CircuitModel(1)
assert a == b

a.act_local_rotation(0, qi.px)

assert not (a == b)

a.act_local_rotation(0, qi.px)

assert (a == b)

불러오는 중...
취소
저장