def test_reset_2qubit(self): """Test reset method for 2-qubit state""" state = DensityMatrix(np.diag([0.5, 0, 0, 0.5])) with self.subTest(msg="reset"): rho = state.copy() value = rho.reset() target = DensityMatrix(np.diag([1, 0, 0, 0])) self.assertEqual(value, target) with self.subTest(msg="reset"): rho = state.copy() value = rho.reset([0, 1]) target = DensityMatrix(np.diag([1, 0, 0, 0])) self.assertEqual(value, target) with self.subTest(msg="reset [0]"): rho = state.copy() value = rho.reset([0]) target = DensityMatrix(np.diag([0.5, 0, 0.5, 0])) self.assertEqual(value, target) with self.subTest(msg="reset [0]"): rho = state.copy() value = rho.reset([1]) target = DensityMatrix(np.diag([0.5, 0.5, 0, 0])) self.assertEqual(value, target)
def test_copy(self): """Test DensityMatrix copy method""" for _ in range(5): rho = self.rand_rho(4) orig = DensityMatrix(rho) cpy = orig.copy() cpy._data[0] += 1.0 self.assertFalse(cpy == orig)
def test_measure_qutrit(self): """Test measure method for qutrit""" state = DensityMatrix(np.diag([1, 1, 1]) / 3) seed = 200 shots = 100 for i in range(shots): rho = state.copy() rho.seed(seed + i) outcome, value = rho.measure() self.assertIn(outcome, ["0", "1", "2"]) if outcome == "0": target = DensityMatrix(np.diag([1, 0, 0])) self.assertEqual(value, target) elif outcome == "1": target = DensityMatrix(np.diag([0, 1, 0])) self.assertEqual(value, target) else: target = DensityMatrix(np.diag([0, 0, 1])) self.assertEqual(value, target)