def test_choi_is_completely_positive(): D = 2 K = 2 choi = rand_ops.rand_map_with_BCSZ_dist(D, K) assert choi_is_completely_positive(choi) D = 3 K = 2 choi = rand_ops.rand_map_with_BCSZ_dist(D, K) assert choi_is_completely_positive(choi)
def test_BCSZ_dist_is_trace_preserving(): D = 2 K = 2 choi = rand_ops.rand_map_with_BCSZ_dist(D, K) choi_tensor = choi.reshape([D, D, D, D]) choi_red = np.trace(choi_tensor, axis1=0, axis2=2) assert np.isclose(choi_red, np.eye(D)).all()
def test_BCSZ_dist_is_complete_positive(): # A quantum channel is completely positive, iff the Choi matrix is non-negative. D = 2 K = 2 for idx in range(0, 10): choi = rand_ops.rand_map_with_BCSZ_dist(D, K) assert choi_is_completely_positive(choi)
def test_BCSZ_dist_is_complete_positive(): # A quantum channel is completely positive, iff the Choi matrix is non-negative. D = 2 K = 2 N_avg = 10 eigenvallist = [] for idx in range(0, N_avg): choi = rand_ops.rand_map_with_BCSZ_dist(D, K) eigenval = la.eig(choi)[0] eigenvallist += [eigenval] eigenvalues = np.asarray(eigenvallist) eigenvalues = eigenvalues.reshape(1, D * D * N_avg) assert np.max(np.absolute(np.imag(eigenvalues))) < 1e-10 assert np.min(np.real(eigenvalues)) >= -1e-10
def test_choi_is_trace_preserving(): D = 2 K = 2 choi = rand_ops.rand_map_with_BCSZ_dist(D, K) assert choi_is_trace_preserving(choi)