def test_reuse_precomp(self): cfn = qu.correlation(None, qu.pauli('z'), qu.pauli('z'), 0, 1, dims=[2, 2], precomp_func=True) assert_allclose(cfn(qu.bell_state('psi-')), -1.0) assert_allclose(cfn(qu.bell_state('phi+')), 1.0)
def test_classically_no_correlated(self, s, qtype, pre_c): p = qu.up(qtype=qtype) & qu.up(qtype=qtype) c = qu.correlation(p, qu.pauli(s), qu.pauli(s), 0, 1, precomp_func=pre_c) c = c(p) if pre_c else c assert_allclose(c, 0.0)
def test_entangled(self, s, ct, pre_c): p = qu.bell_state('psi-') c = qu.correlation(p, qu.pauli(s), qu.pauli(s), 0, 1, precomp_func=pre_c) c = c(p) if pre_c else c assert_allclose(c, ct)
def test_classically_correlated(self, s, ct, pre_c): p = 0.5 * ((qu.up(qtype='dop') & qu.up(qtype='dop')) + (qu.down(qtype='dop') & qu.down(qtype='dop'))) c = qu.correlation(p, qu.pauli(s), qu.pauli(s), 0, 1, precomp_func=pre_c) c = c(p) if pre_c else c assert_allclose(c, ct)
def test_types(self, dims, op_sps, p_sps, pre_c): p = qu.rand_rho(4, sparse=p_sps) c = qu.correlation(p, qu.pauli('x', sparse=op_sps), qu.pauli('z', sparse=op_sps), 0, 1, dims=dims, precomp_func=pre_c) c = c(p) if pre_c else c assert c >= -1.0 assert c <= 1.0
def test_entangled(self, dir, ct, pre_c): p = bell_state('psi-') c = correlation(p, pauli(dir), pauli(dir), 0, 1, precomp_func=pre_c) c = c(p) if pre_c else c assert_allclose(c, ct)
def test_classically_correlated(self, dir, ct, pre_c): p = 0.5 * ((up(qtype='dop') & up(qtype='dop')) + (down(qtype='dop') & down(qtype='dop'))) c = correlation(p, pauli(dir), pauli(dir), 0, 1, precomp_func=pre_c) c = c(p) if pre_c else c assert_allclose(c, ct)
def test_classically_no_correlated(self, dir, qtype, pre_c): p = up(qtype=qtype) & up(qtype=qtype) c = correlation(p, pauli(dir), pauli(dir), 0, 1, precomp_func=pre_c) c = c(p) if pre_c else c assert_allclose(c, 0.0)