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)
Esempio n. 2
0
 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)