def dbs_circuit_test_(): ns = 5 * 10**3 cxx = np.zeros(ns) cyy = np.zeros(ns) czz = np.zeros(ns) p = np.zeros((2, 2)) a = np.zeros(4) for j in range(0, ns): rpv = rpvg.rpv_zhsl(4) a = np.reshape(rpv, (2, 2)) alpha, beta, gamma = bds_circuit_angles(a) psi = bds_circuit_(alpha, beta, gamma) rhor = ptr.pTraceL(4, 4, mf.proj(16, psi)) cm = gm.corr_mat(2, 2, rhor) cxx[j] = cm[0][0] cyy[j] = cm[1][1] czz[j] = cm[2][2] fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(cxx, cyy, czz, c='b', marker='o', s=0.75) ax.set_xlabel('c_xx') ax.set_ylabel('c_yy') ax.set_zlabel('c_zz') ax.set_xlim(-1, 1) ax.set_ylim(-1, 1) ax.set_zlim(-1, 1) ax.plot([-1, 1], [-1, 1], [-1, -1], color='b') ax.plot([-1, 1], [1, -1], [1, 1], color='b') ax.plot([-1, 1], [-1, -1], [-1, 1], color='b') ax.plot([-1, -1], [-1, 1], [-1, 1], color='b') ax.plot([1, -1], [1, 1], [-1, 1], color='b') ax.plot([1, 1], [1, -1], [-1, 1], color='b') plt.show()
def dbs_circuit_test(): ns = 5 * 10**3 cxx = np.zeros(ns) cyy = np.zeros(ns) czz = np.zeros(ns) for j in range(0, ns): rpv = rpvg.rpv_zhsl(4) theta = 2.0 * math.acos(math.sqrt(rpv[0] + rpv[1])) alpha = 2.0 * math.acos(math.sqrt(rpv[0] + rpv[2])) psi = bds_circuit(theta, alpha) rhor = ptr.pTraceL(4, 4, mf.proj(16, psi)) cm = gm.corr_mat(2, 2, rhor) cxx[j] = cm[0][0] cyy[j] = cm[1][1] czz[j] = cm[2][2] fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(cxx, cyy, czz, c='b', marker='o', s=1) ax.set_xlabel('c_xx') ax.set_ylabel('c_yy') ax.set_zlabel('c_zz') ax.set_xlim(-1, 1) ax.set_ylim(-1, 1) ax.set_zlim(-1, 1) ax.plot([-1, 1], [-1, 1], [-1, -1], color='b') ax.plot([-1, 1], [1, -1], [1, 1], color='b') ax.plot([-1, 1], [-1, -1], [-1, 1], color='b') ax.plot([-1, -1], [-1, 1], [-1, 1], color='b') ax.plot([1, -1], [1, 1], [-1, 1], color='b') ax.plot([1, 1], [1, -1], [-1, 1], color='b') plt.show()
def hellinger(da, db, rho): # arXiv:1510.06995 daa = da**2 - 1 M = mat_sqrt(da * db, rho) A = pTraceR(da, db, M) bva = gm.bloch_vector(da, A) / sqrt(2 * db) B = pTraceL(da, db, M) bvb = gm.bloch_vector(db, B) / 2 cm = gm.corr_mat(da, db, M) / 2 ev = np.zeros(3) ev = LA.eigvalsh( outerr(daa, bva, bva) + np.matmul(cm, transpose(3, 3, cm))) mev = max(ev[0], ev[1], ev[2]) bvbn = normr(2, bvb) nor = 1 - 1 / sqrt(da) return max( 0, (1 - sqrt((trace(da, A) / sqrt(2 * db))**2 + bvbn**2 + mev)) / nor)
def dbs_circuit_test_angles_(): ns = 20**3 cxx = np.zeros(ns) cyy = np.zeros(ns) czz = np.zeros(ns) m = -1 da = math.pi / 20 alpha = -math.pi / 2 - da for j in range(0, 20): alpha += da beta = -da for k in range(0, 20): beta += da gamma = -da for l in range(0, 20): gamma += da psi = bds_circuit_(alpha, beta, gamma) rhor = ptr.pTraceL(4, 4, mf.proj(16, psi)) cm = gm.corr_mat(2, 2, rhor) m += 1 cxx[m] = cm[0][0] cyy[m] = cm[1][1] czz[m] = cm[2][2] fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(cxx, cyy, czz, c='b', marker='o', s=0.75) ax.set_xlabel('c_xx') ax.set_ylabel('c_yy') ax.set_zlabel('c_zz') ax.set_xlim(-1, 1) ax.set_ylim(-1, 1) ax.set_zlim(-1, 1) ax.plot([-1, 1], [-1, 1], [-1, -1], color='b') ax.plot([-1, 1], [1, -1], [1, 1], color='b') ax.plot([-1, 1], [-1, -1], [-1, 1], color='b') ax.plot([-1, -1], [-1, 1], [-1, 1], color='b') ax.plot([1, -1], [1, 1], [-1, 1], color='b') ax.plot([1, 1], [1, -1], [-1, 1], color='b') plt.show()
def mutual_info(rho, dl, dr): rhor = pTrace.pTraceL(dl, dr, rho) rhol = pTrace.pTraceR(dl, dr, rho) return von_neumann(rhol) + von_neumann(rhor) - von_neumann(rho)
def coh_nl(da, db, rho): rhoa = pTrace.pTraceL(da, db, rho) rhob = pTrace.pTraceR(da, db, rho) return coh_l1(da * db, rho) - coh_l1(da, rhoa) - coh_l1(db, rhob)