def test_purity_mixed_state(self): state_1 = 0.5 * (projector(basis_state('0', 1)) + projector(basis_state('1', 1))) state_2 = (1 / 3.0) * (projector(basis_state('00', 2)) + projector( basis_state('01', 2)) + projector(basis_state('10', 2))) self.assertEqual(purity(state_1), 0.5) self.assertEqual(purity(state_2), 1.0 / 3)
def test_purity_pure_matrix_state(self): state_1 = (1/np.sqrt(2))*(basis_state('0', 1) + basis_state('1', 1)) state_1 = projector(state_1) state_2 = (1/np.sqrt(3))*(basis_state('00', 2) + basis_state('01', 2) + basis_state('11', 2)) state_2 = projector(state_2) state_3 = 0.5*(basis_state('000', 3) + basis_state('001', 3) + basis_state('010', 3) + basis_state('100', 3)) state_3 = projector(state_3) self.assertAlmostEqual(purity(state_1), 1.0, places=10) self.assertAlmostEqual(purity(state_2), 1.0, places=10) self.assertEqual(purity(state_3), 1.0)
def test_projector(self): """TO BE REMOVED with qiskit.quantum_info.basis_state""" state0 = np.array([1. + 0.j, 0. + 0.j]) with self.assertWarns(DeprecationWarning): state1 = projector(np.array([0. + 0.j, 1. + 0.j])) self.assertEqual(state_fidelity(state0, state0), 1.0) self.assertEqual(state_fidelity(state1, state1), 1.0) self.assertEqual(state_fidelity(state0, state1), 0.0)
def test_projector(self): state0 = np.array([1. + 0.j, 0. + 0.j]) state1 = projector(np.array([0. + 0.j, 1. + 0.j])) self.assertEqual(state_fidelity(state0, state0), 1.0) self.assertEqual(state_fidelity(state1, state1), 1.0) self.assertEqual(state_fidelity(state0, state1), 0.0)