def test_rz(): assert _allclose( xp.dot(rz(0.1), xp.conj(rz(0.1).T)), xp.eye(2) ) _rz = lambda phi: cmath.exp(0.5j * phi) * rz(phi) assert _allclose(_rz(np.pi * 2), I) assert _allclose(_rz(np.pi), Z) assert _allclose(_rz(np.pi / 2), S) assert _allclose(_rz(np.pi / 4), T) assert _allclose(_rz(-np.pi / 2), Sdag) assert _allclose(_rz(-np.pi / 4), Tdag)
def test_phase_shift(): assert _allclose( xp.dot(phase_shift(0.1), xp.conj(phase_shift(0.1).T)), xp.eye(2) ) _rz = lambda phi: cmath.exp(0.5j * phi) * rz(phi) assert _allclose(phase_shift(0.1), _rz(0.1))
def test_ry(): assert _allclose( xp.dot(ry(0.1), xp.conj(ry(0.1).T)), xp.eye(2) ) _ry = lambda phi: cmath.exp(0.5j * phi) * ry(phi) assert _allclose(_ry(np.pi * 2), I) assert _allclose(_ry(np.pi), Y) assert _allclose(ry(0.1), dot(S, H, rz(0.1), H, Sdag))
def test_rx(): assert _allclose( xp.dot(rx(0.1), xp.conj(rx(0.1).T)), xp.eye(2) ) _rx = lambda phi: cmath.exp(0.5j * phi) * rx(phi) assert _allclose(_rx(np.pi * 2), I) assert _allclose(_rx(np.pi), X) assert _allclose(rx(0.1), dot(H, rz(0.1), H))
def test_gate_single_qubit(): q = Qubits(1) q.gate(Y, target=0) assert _allclose(q.state, xp.array([0, 1j])) q = Qubits(1) q.gate(ry(0.1), target=0) q.gate(rz(0.1), target=0) psi1 = q.state q = Qubits(1) q.gate(xp.dot(rz(0.1), ry(0.1)), target=0) psi2 = q.state q = Qubits(1) q.gate(xp.dot(ry(0.1), rz(0.1)), target=0) psi3 = q.state assert _allclose(psi1, psi2) assert not _allclose(psi1, psi3)