def dephased_rx_gate(phi, p=.1): corrupted_rx = append_kraus_to_gate( dephasing_kraus_map(p), np.array([[np.cos(phi / 2), -1j * np.sin(phi / 2)], [-1j * np.sin(phi / 2), np.cos(phi / 2)]])) return corrupted_rx
def test_damping_after_dephasing(): damping = damping_kraus_map(p=1 - np.exp(-.1)) dephasing = dephasing_kraus_map(p=.5 * (1 - np.exp(-.2))) ks_ref = combine_kraus_maps(damping, dephasing) ks_actual = damping_after_dephasing(10, 10, 1) np.testing.assert_allclose(ks_actual, ks_ref)
def test_damping_after_dephasing(): damping = damping_kraus_map(p=1 - np.exp(-0.1)) dephasing = dephasing_kraus_map(p=0.5 * (1 - np.exp(-0.2))) ks_ref = combine_kraus_maps(damping, dephasing) ks_actual = damping_after_dephasing(20, 40 / 3.0, 2.0) np.testing.assert_allclose(ks_actual, ks_ref)
def test_damping_after_dephasing(): damping = damping_kraus_map() dephasing = dephasing_kraus_map() ks_ref = combine_kraus_maps(damping, dephasing) ks_actual = damping_after_dephasing(10, 10, 1) np.testing.assert_allclose(ks_actual, ks_ref)
def test_combine_kraus_maps(): damping = damping_kraus_map() dephasing = dephasing_kraus_map() k1, k2, k3, k4 = combine_kraus_maps(damping, dephasing) assert k1.shape == (2, 2) assert k2.shape == (2, 2) assert k3.shape == (2, 2) assert k4.shape == (2, 2)
def dephased_i_gate(p=.1): corrupted_iden = append_kraus_to_gate(dephasing_kraus_map(p), np.array([[1, 0], [0, 1]])) return corrupted_iden
def dephased_rz_gate(phi, p=.1): corrupted_rz = append_kraus_to_gate( dephasing_kraus_map(p), np.array([[quil_cos(phi / 2) - 1j * np.sin(phi / 2), 0], [0, np.cos(phi / 2) + 1j * np.sin(phi / 2)]])) return corrupted_rz
def test_dephasing_kraus_map(): p = 0.05 k1, k2 = dephasing_kraus_map(p=p) np.testing.assert_allclose(np.diag(k1), [np.sqrt(1 - p)] * 2) np.testing.assert_allclose(np.abs(np.diag(k2)), [np.sqrt(p)] * 2)