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