コード例 #1
0
def result_types_zero_shots_bell_pair_testing(
    device: Device,
    include_state_vector: bool,
    run_kwargs: Dict[str, Any],
    include_amplitude: bool = True,
):
    circuit = (Circuit().h(0).cnot(0, 1).expectation(
        observable=Observable.H() @ Observable.X(), target=[0, 1]))
    if include_amplitude:
        circuit.amplitude(["01", "10", "00", "11"])
    if include_state_vector:
        circuit.state_vector()
    tasks = (circuit, circuit.to_ir(ir_type=IRType.OPENQASM))
    for task in tasks:
        result = device.run(task, **run_kwargs).result()
        assert len(result.result_types) == 3 if include_state_vector else 2
        assert np.allclose(
            result.get_value_by_result_type(
                ResultType.Expectation(
                    observable=Observable.H() @ Observable.X(), target=[0,
                                                                        1])),
            1 / np.sqrt(2),
        )
        if include_state_vector:
            assert np.allclose(
                result.get_value_by_result_type(ResultType.StateVector()),
                np.array([1, 0, 0, 1]) / np.sqrt(2),
            )
        if include_amplitude:
            amplitude = result.get_value_by_result_type(
                ResultType.Amplitude(["01", "10", "00", "11"]))
            assert np.isclose(amplitude["01"], 0)
            assert np.isclose(amplitude["10"], 0)
            assert np.isclose(amplitude["00"], 1 / np.sqrt(2))
            assert np.isclose(amplitude["11"], 1 / np.sqrt(2))
def result_types_zero_shots_bell_pair_testing(device: Device,
                                              include_state_vector: bool,
                                              run_kwargs: Dict[str, Any]):
    circuit = (Circuit().h(0).cnot(
        0, 1).expectation(observable=Observable.H() @ Observable.X(),
                          target=[0, 1]).amplitude(["01", "10", "00", "11"]))
    if include_state_vector:
        circuit.state_vector()
    result = device.run(circuit, **run_kwargs).result()
    assert len(result.result_types) == 3 if include_state_vector else 2
    assert np.allclose(
        result.get_value_by_result_type(
            ResultType.Expectation(observable=Observable.H() @ Observable.X(),
                                   target=[0, 1])),
        1 / np.sqrt(2),
    )
    if include_state_vector:
        assert np.allclose(
            result.get_value_by_result_type(ResultType.StateVector()),
            np.array([1, 0, 0, 1]) / np.sqrt(2),
        )
    assert result.get_value_by_result_type(
        ResultType.Amplitude(["01", "10", "00", "11"])) == {
            "01": 0j,
            "10": 0j,
            "00": (1 / np.sqrt(2)),
            "11": (1 / np.sqrt(2)),
        }
コード例 #3
0
def test_get_value_by_result_type(result_obj_4):
    result = GateModelQuantumTaskResult.from_object(result_obj_4)
    assert np.allclose(
        result.get_value_by_result_type(ResultType.Probability(target=0)), result.values[0]
    )
    assert np.allclose(result.get_value_by_result_type(ResultType.StateVector()), result.values[1])
    assert (
        result.get_value_by_result_type(ResultType.Expectation(observable=Observable.Y(), target=0))
        == result.values[2]
    )
    assert (
        result.get_value_by_result_type(ResultType.Variance(observable=Observable.Y(), target=0))
        == result.values[3]
    )
    assert result.get_value_by_result_type(ResultType.Amplitude(state=["00"])) == result.values[4]
コード例 #4
0
     "#pragma braket result density_matrix",
 ),
 (
     ResultType.DensityMatrix([0, 2]),
     OpenQASMSerializationProperties(
         qubit_reference_type=QubitReferenceType.VIRTUAL),
     "#pragma braket result density_matrix q[0], q[2]",
 ),
 (
     ResultType.DensityMatrix(0),
     OpenQASMSerializationProperties(
         qubit_reference_type=QubitReferenceType.PHYSICAL),
     "#pragma braket result density_matrix $0",
 ),
 (
     ResultType.Amplitude(["01", "10"]),
     OpenQASMSerializationProperties(
         qubit_reference_type=QubitReferenceType.PHYSICAL),
     '#pragma braket result amplitude "01", "10"',
 ),
 (
     ResultType.Probability(),
     OpenQASMSerializationProperties(
         qubit_reference_type=QubitReferenceType.VIRTUAL),
     "#pragma braket result probability all",
 ),
 (
     ResultType.Probability([0, 2]),
     OpenQASMSerializationProperties(
         qubit_reference_type=QubitReferenceType.VIRTUAL),
     "#pragma braket result probability q[0], q[2]",