def test_entangled_permute(self): dims = [2, 2, 2] a = qu.bell_state(0) & qu.up() assert_allclose(qu.mutinf_subsys(a, dims, 0, 1), 2.) b = qu.permute(a, dims, [1, 2, 0]) assert_allclose(qu.mutinf_subsys(b, dims, 0, 1), 0., atol=1e-12) assert_allclose(qu.mutinf_subsys(b, dims, 0, 2), 2.)
def test_permute_sparse_op(self): dims = [3, 2, 5, 4] a = qu.rand_rho(qu.prod(dims), sparse=True, density=0.5) b = qu.permute(a, dims, [3, 1, 2, 0]) c = qu.permute(a.A, dims, [3, 1, 2, 0]) assert_allclose(b.A, c)
def test_permute_op(self): a = qu.pauli('x') & qu.pauli('y') & qu.pauli('z') b = qu.permute(a, [2, 2, 2], [2, 0, 1]) assert_allclose(b, qu.pauli('z') & qu.pauli('x') & qu.pauli('y'))
def test_permute_ket(self): a = qu.up() & qu.plus() & qu.yplus() b = qu.permute(a, [2, 2, 2], [2, 0, 1]) assert_allclose(b, qu.yplus() & qu.up() & qu.plus())
def test_interleaving(self): p = qu.permute(qu.singlet() & qu.singlet(), [2, 2, 2, 2], [0, 2, 1, 3]) assert qu.logneg(p, [2] * 4, sysa=[0, 3]) > 2 - 1e-13
def test_interleaving(self): p = permute(singlet() & singlet(), [2, 2, 2, 2], [0, 2, 1, 3]) assert logneg(p, [2] * 4, sysa=[0, 3]) > 2 - 1e-13
def test_permute_sparse_ket(self): dims = [3, 2, 5, 4] a = rand_ket(prod(dims), sparse=True, density=0.5) b = permute(a, dims, [3, 1, 2, 0]) c = permute(a.A, dims, [3, 1, 2, 0]) assert_allclose(b.A, c)
def test_permute_ket(self): a = up() & plus() & yplus() b = permute(a, [2, 2, 2], [2, 0, 1]) assert_allclose(b, yplus() & up() & plus())