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