Beispiel #1
0
def test_experiment_result():
    er = ExperimentResult(
        setting=ExperimentSetting(plusX(0), sZ(0)),
        expectation=0.9,
        std_err=0.05,
        total_counts=100,
    )
    assert str(er) == 'X0_0→(1+0j)*Z0: 0.9 +- 0.05'
Beispiel #2
0
def test_correct_experiment_result():
    e = ExperimentResult(setting=ExperimentSetting(plusX(0), sZ(0)),
                         expectation=0.9,
                         std_err=0.05,
                         total_counts=100)
    cal = ExperimentResult(setting=ExperimentSetting(plusX(0), sZ(0)),
                           expectation=0.95,
                           std_err=0.01,
                           total_counts=100)
    corrected = ExperimentResult(
        setting=ExperimentSetting(plusX(0), sZ(0)),
        expectation=0.9473684210526316,
        std_err=np.sqrt(ratio_variance(0.9, 0.05**2, 0.95, 0.01**2)),
        raw_expectation=0.9,
        raw_std_err=0.05,
        calibration_expectation=0.95,
        calibration_std_err=0.01,
        calibration_counts=100,
        total_counts=100,
    )
    assert corrected == correct_experiment_result(e, cal)
Beispiel #3
0
def test_lifted_state_operator_backwards_qubits():
    xz_state = plusX(5) * minusZ(6)
    plus = np.array([1, 1]) / np.sqrt(2)
    plus = plus[:, np.newaxis]
    proj_plus = plus @ plus.conj().T
    assert proj_plus.shape == (2, 2)

    one = np.array([0, 1])
    one = one[:, np.newaxis]
    proj_one = one @ one.conj().T
    assert proj_one.shape == (2, 2)

    np.testing.assert_allclose(np.kron(proj_plus, proj_one),
                               lifted_state_operator(xz_state, qubits=[6, 5]))