Esempio n. 1
0
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)
Esempio n. 2
0
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))
Esempio n. 3
0
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))
Esempio n. 4
0
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))
Esempio n. 5
0
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)