diff --git a/local_cliffords.py b/local_cliffords.py new file mode 100644 index 0000000..8c0b905 --- /dev/null +++ b/local_cliffords.py @@ -0,0 +1,44 @@ +from numpy import * + +px = matrix([[0, 1], [1, 0]], dtype=complex) +py = matrix([[0, -1j], [1j, 0]], dtype=complex) +pz = matrix([[1, 0], [0, -1]], dtype=complex) +i = matrix(eye(2, dtype=complex)) +h = matrix([[1, 1], [1, -1]], dtype=complex) / sqrt(2) +p = matrix([[1, 0], [0, 1j]], dtype=complex) + +s_set = [i, p, p*p, p*p*p] +c_set = [i, h, h*p, h*p*p, h*p*p*p, h*p*p*h] + +def identify_pauli(m): + for sign in [+1, -1]: + for label, pauli in zip("XYZ", (px, py, pz)): + if allclose(sign*pauli, m): + return "{}{}".format("+" if sign>0 else "-", label) + +for p in px, py, pz: + for sign in [+1, -1]: + print identify_pauli(sign*p) + + +print py +print h*px*h.H +print h*py*h.H +print h*pz*h.H + +#names = [] +#matrices = [] +#for s, s_name in zip(s_set, s_names): + #for c, c_name in zip(c_set, c_names): + #names.append(s_name+c_name) + #matrices.append(s*c) + +#print " ".join(names) +#print len(names) + +#for m in matrices: + # print (m/abs(amax(m))).round(0).reshape(4) + #print average(abs(array((m/abs(amax(m))).round(0).reshape(4).tolist()[0]))) + + +