Exemplo n.º 1
0
def test_daggered_gate_hashable():
    daggered_gate1 = _metagates.DaggeredGate(Y)
    daggered_gate2 = _metagates.DaggeredGate(T)
    d = {daggered_gate1: 1, daggered_gate2: 3}
    assert len(d) == 2
    # for efficiency reasons the following should be true:
    assert hash(daggered_gate1) != hash(daggered_gate2)
Exemplo n.º 2
0
def test_daggered_gate_tex_str():
    daggered_gate = _metagates.DaggeredGate(Y)
    str_Y = Y.tex_str() if hasattr(Y, 'tex_str') else str(Y)
    assert daggered_gate.tex_str() == str_Y + r"${}^\dagger$"

    # test for a gate with tex_str method
    rx = Rx(0.5)
    daggered_rx = _metagates.DaggeredGate(rx)
    str_rx = rx.tex_str() if hasattr(rx, 'tex_str') else str(rx)
    assert daggered_rx.tex_str() == str_rx + r"${}^\dagger$"
Exemplo n.º 3
0
def test_daggered_gate_init():
    # Choose gate which does not have an inverse gate:
    not_invertible_gate = T
    with pytest.raises(NotInvertible):
        not_invertible_gate.get_inverse()
    # Choose gate which does have an inverse defined:
    invertible_gate = Y
    assert invertible_gate.get_inverse() == Y
    # Test init and matrix
    dagger_inv = _metagates.DaggeredGate(not_invertible_gate)
    assert dagger_inv._gate == not_invertible_gate
    assert np.array_equal(dagger_inv.matrix, np.matrix([[1, 0], [0, cmath.exp(-1j * cmath.pi / 4)]]))
    inv = _metagates.DaggeredGate(invertible_gate)
    assert inv._gate == invertible_gate
    assert np.array_equal(inv.matrix, np.matrix([[0, -1j], [1j, 0]]))
    # Test matrix
    no_matrix_gate = Entangle
    with pytest.raises(AttributeError):
        no_matrix_gate.matrix
    inv_no_matrix_gate = _metagates.DaggeredGate(no_matrix_gate)
    with pytest.raises(AttributeError):
        inv_no_matrix_gate.matrix
Exemplo n.º 4
0
def test_daggered_gate_comparison():
    daggered_gate = _metagates.DaggeredGate(Y)
    daggered_gate2 = _metagates.DaggeredGate(Y)
    assert daggered_gate == daggered_gate2
Exemplo n.º 5
0
def test_daggered_gate_get_inverse():
    daggered_gate = _metagates.DaggeredGate(Y)
    assert daggered_gate.get_inverse() == Y
Exemplo n.º 6
0
def test_daggered_gate_str():
    daggered_gate = _metagates.DaggeredGate(Y)
    assert str(daggered_gate) == str(Y) + "^\dagger"
Exemplo n.º 7
0
def test_daggered_gate_tex_str():
    daggered_gate = _metagates.DaggeredGate(Y)
    assert daggered_gate.tex_str() == str(Y) + "$^\dagger$"