def test_produces_samples():
    a, b = cirq.LineQubit.range(2)
    c = cirq.Circuit(cirq.H(a), cirq.CNOT(a, b), cirq.measure(a, key='a'),
                     cirq.measure(b, key='b'))

    result = cirq.StabilizerSampler().sample(c, repetitions=100)
    assert 5 < sum(result['a']) < 95
    assert np.all(result['a'] ^ result['b'] == 0)
Beispiel #2
0
def test_stabilizer_supports_depolarize():
    with pytest.raises(TypeError, match="act_on"):
        for _ in range(100):
            cirq.act_on(cirq.depolarize(3 / 4), object())

    q = cirq.LineQubit(0)
    c = cirq.Circuit(cirq.depolarize(3 / 4).on(q), cirq.measure(q, key='m'))
    m = np.sum(cirq.StabilizerSampler().sample(c, repetitions=100)['m'])
    assert 5 < m < 95
def test_reset():
    q = cirq.LineQubit(0)
    sampler = cirq.StabilizerSampler()
    c = cirq.Circuit(cirq.X(q), cirq.reset(q), cirq.measure(q))
    assert sampler.sample(c)['q(0)'][0] == 0
    c = cirq.Circuit(cirq.H(q), cirq.reset(q), cirq.measure(q))
    assert sampler.sample(c)['q(0)'][0] == 0
    c = cirq.Circuit(cirq.reset(q), cirq.measure(q))
    assert sampler.sample(c)['q(0)'][0] == 0
Beispiel #4
0
def test_unsupported_stabilizer_safety():
    with pytest.raises(TypeError, match="act_on"):
        for _ in range(100):
            cirq.act_on(cirq.X.with_probability(0.5), object())
    with pytest.raises(TypeError, match="act_on"):
        cirq.act_on(cirq.X.with_probability(sympy.Symbol('x')), object())

    q = cirq.LineQubit(0)
    c = cirq.Circuit((cirq.X(q)**0.25).with_probability(0.5),
                     cirq.measure(q, key='m'))
    with pytest.raises(TypeError, match='Failed to act'):
        cirq.StabilizerSampler().sample(c, repetitions=100)
def test_unsupported_stabilizer_safety():
    from cirq.protocols.act_on_protocol_test import DummySimulationState

    with pytest.raises(TypeError, match="act_on"):
        for _ in range(100):
            cirq.act_on(cirq.X.with_probability(0.5),
                        DummySimulationState(),
                        qubits=())
    with pytest.raises(TypeError, match="act_on"):
        cirq.act_on(cirq.X.with_probability(sympy.Symbol('x')),
                    DummySimulationState(),
                    qubits=())

    q = cirq.LineQubit(0)
    c = cirq.Circuit((cirq.X(q)**0.25).with_probability(0.5),
                     cirq.measure(q, key='m'))
    with pytest.raises(TypeError, match='Failed to act'):
        cirq.StabilizerSampler().sample(c, repetitions=100)
Beispiel #6
0
def test_stabilizer_supports_probability():
    q = cirq.LineQubit(0)
    c = cirq.Circuit(cirq.X(q).with_probability(0.5), cirq.measure(q, key='m'))
    m = np.sum(cirq.StabilizerSampler().sample(c, repetitions=100)['m'])
    assert 5 < m < 95