def test_init_array(self): """Test initialization from array.""" rho = self.rand_rho(3) state = DensityMatrix(rho) self.assertAllClose(state.data, rho) self.assertEqual(state.dim, 3) self.assertEqual(state.dims(), (3,)) rho = self.rand_rho(2 * 3 * 4) state = DensityMatrix(rho, dims=[2, 3, 4]) self.assertAllClose(state.data, rho) self.assertEqual(state.dim, 2 * 3 * 4) self.assertEqual(state.dims(), (2, 3, 4))
def test_init_array_qubit(self): """Test subsystem initialization from N-qubit array.""" # Test automatic inference of qubit subsystems rho = self.rand_rho(8) for dims in [None, 8]: state = DensityMatrix(rho, dims=dims) self.assertAllClose(state.data, rho) self.assertEqual(state.dim, 8) self.assertEqual(state.dims(), (2, 2, 2))
def test_tensor(self): """Test tensor method.""" for _ in range(10): rho0 = self.rand_rho(2) rho1 = self.rand_rho(3) target = np.kron(rho0, rho1) state = DensityMatrix(rho0).tensor(DensityMatrix(rho1)) self.assertEqual(state.dim, 6) self.assertEqual(state.dims(), (3, 2)) self.assertAllClose(state.data, target)
def test_expand(self): """Test expand method.""" for _ in range(10): rho0 = self.rand_rho(2) rho1 = self.rand_rho(3) target = np.kron(rho1, rho0) state = DensityMatrix(rho0).expand(DensityMatrix(rho1)) self.assertEqual(state.dim, 6) self.assertEqual(state.dims(), (2, 3)) self.assertAllClose(state.data, target)