コード例 #1
0
ファイル: test_observable.py プロジェクト: unitaryfund/mitiq
def test_observable_expectation_supported_qubits(executor):
    executor = functools.partial(executor, noise_level=(0, ))

    a, b, c = cirq.LineQubit.range(3)
    circuit = cirq.Circuit(cirq.I(a), cirq.X.on(b), cirq.H.on(c))

    # <Z0> = 1.
    obs = Observable(PauliString(spec="Z", support=(0, )))
    assert np.isclose(obs.expectation(circuit, executor), 1.0)

    # <Z1> = -1.
    obs = Observable(PauliString(spec="Z", support=(1, )))
    assert np.isclose(obs.expectation(circuit, executor), -1.0)

    # <Z2> = 0.
    obs = Observable(PauliString(spec="Z", support=(2, )))
    assert np.isclose(obs.expectation(circuit, executor), 0.0, atol=5e-2)
コード例 #2
0
ファイル: test_observable.py プロジェクト: unitaryfund/mitiq
def test_observable_expectation_one_circuit(n, executor):
    executor = functools.partial(executor, noise_level=(0, ))

    qubits = cirq.LineQubit.range(n)
    obs = Observable(PauliString(spec="X" * n))
    circuit = cirq.Circuit(cirq.H.on_each(qubits))

    expectation = obs.expectation(circuit, executor)
    assert np.isclose(expectation, 1.0)
コード例 #3
0
ファイル: test_observable.py プロジェクト: unitaryfund/mitiq
def test_observable_expectation_two_circuits(n, executor):
    executor = functools.partial(executor, noise_level=(0, ))

    obs = Observable(PauliString(spec="X" * n, coeff=-2.0),
                     PauliString(spec="Z" * n))
    qubits = cirq.LineQubit.range(n)
    circuit = cirq.Circuit(cirq.H.on_each(qubits))

    expectation = obs.expectation(circuit, executor)
    assert np.isclose(expectation, -2.0, atol=1e-1)