def test_evolve(self): """Test evolve method.""" # Test hadamard chan = UnitaryChannel(np.array([[1, 1], [1, -1]]) / np.sqrt(2)) target_psi = np.array([1, 1]) / np.sqrt(2) target_rho = np.array([[0.5, 0.5], [0.5, 0.5]]) # Test list vector evolve self.assertAllClose(chan._evolve([1, 0]), target_psi) # Test np.array vector evolve self.assertAllClose(chan._evolve(np.array([1, 0])), target_psi) # Test list density matrix evolve self.assertAllClose(chan._evolve([[1, 0], [0, 0]]), target_rho) # Test np.array density matrix evolve self.assertAllClose(chan._evolve(np.array([[1, 0], [0, 0]])), target_rho)
def _other_to_unitary(self, rep, qubits_test_cases, repetitions): """Test Other to UnitaryChannel evolution.""" for nq in qubits_test_cases: dim = 2**nq for _ in range(repetitions): rho = self.rand_rho(dim) mat = self.rand_matrix(dim, dim) chan1 = rep(UnitaryChannel(mat)) rho1 = chan1._evolve(rho) chan2 = UnitaryChannel(chan1) rho2 = chan2._evolve(rho) self.assertAllClose(rho1, rho2)