|
@@ -7,7 +7,6 @@ And a circuit-model simulator |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
import numpy as np |
|
|
import numpy as np |
|
|
from scipy.linalg import sqrtm |
|
|
|
|
|
import itertools as it |
|
|
import itertools as it |
|
|
|
|
|
|
|
|
def hermitian_conjugate(u): |
|
|
def hermitian_conjugate(u): |
|
@@ -25,13 +24,12 @@ ha = hadamard = np.array([[1, 1], [1, -1]], dtype=complex) * ir2 |
|
|
ph = np.array([[1, 0], [0, 1j]], dtype=complex) |
|
|
ph = np.array([[1, 0], [0, 1j]], dtype=complex) |
|
|
t = np.array([[1, 0], [0, np.exp(1j*np.pi/4)]], dtype=complex) |
|
|
t = np.array([[1, 0], [0, np.exp(1j*np.pi/4)]], dtype=complex) |
|
|
|
|
|
|
|
|
sqy = sqrtm(1j * py) |
|
|
|
|
|
msqy = np.array(sqrtm(-1j * py)) |
|
|
|
|
|
sqz = np.array(sqrtm(1j * pz)) |
|
|
|
|
|
msqz = np.array(sqrtm(-1j * pz)) |
|
|
|
|
|
sqx = np.array(sqrtm(1j * px)) |
|
|
|
|
|
msqx = np.array(sqrtm(-1j * px)) |
|
|
|
|
|
paulis = (px, py, pz) |
|
|
|
|
|
|
|
|
sqx = np.array([[ 1.+0.j, -0.+1.j], [-0.+1.j, 1.-0.j]], dtype=complex)*ir2 |
|
|
|
|
|
msqx = np.array([[ 1.+0.j, 0.-1.j], [ 0.-1.j, 1.-0.j]], dtype=complex)*ir2 |
|
|
|
|
|
sqy = np.array([[ 1.+0.j, 1.+0.j], [-1.-0.j, 1.-0.j]], dtype=complex)*ir2 |
|
|
|
|
|
msqy = np.array([[ 1.+0.j, -1.-0.j], [ 1.+0.j, 1.-0.j]], dtype=complex)*ir2 |
|
|
|
|
|
sqz = np.array([[ 1.+1.j, 0.+0.j], [ 0.+0.j, 1.-1.j]], dtype=complex)*ir2 |
|
|
|
|
|
msqz = np.array([[ 1.-1.j, 0.+0.j], [ 0.+0.j, 1.+1.j]], dtype=complex)*ir2 |
|
|
|
|
|
|
|
|
# CZ gate |
|
|
# CZ gate |
|
|
cz = np.array(np.eye(4), dtype=complex) |
|
|
cz = np.array(np.eye(4), dtype=complex) |
|
|