Ejemplo n.º 1
0
def test_zz_matrix():
    numpy.testing.assert_allclose(ZZGate(half_turns=0).matrix(),
                                  numpy.array([[1, 0, 0, 0],
                                               [0, 1, 0, 0],
                                               [0, 0, 1, 0],
                                               [0, 0, 0, 1]]),
                                  atol=1e-8)

    numpy.testing.assert_allclose(ZZGate(half_turns=0.5).matrix(),
                                  numpy.array([[(-1j)**0.5, 0, 0, 0],
                                               [0, 1j**0.5, 0, 0],
                                               [0, 0, 1j**0.5, 0],
                                               [0, 0, 0, (-1j)**0.5]]),
                                  atol=1e-8)

    numpy.testing.assert_allclose(ZZGate(half_turns=1).matrix(),
                                  numpy.array([[-1j, 0, 0, 0],
                                               [0, 1j, 0, 0],
                                               [0, 0, 1j, 0],
                                               [0, 0, 0, -1j]]),
                                  atol=1e-8)

    numpy.testing.assert_allclose(ZZGate(half_turns=-0.5).matrix(),
                                  numpy.array([[(1j)**0.5, 0, 0, 0],
                                               [0, (-1j)**0.5, 0, 0],
                                               [0, 0, (-1j)**0.5, 0],
                                               [0, 0, 0, (1j)**0.5]]),
                                  atol=1e-8)

    Z = numpy.array([[1, 0], [0, -1]])
    ZZ = kron(Z, Z)
    numpy.testing.assert_allclose(ZZGate(half_turns=0.25).matrix(),
                                  expm(-1j * numpy.pi * 0.25 * ZZ / 2))
Ejemplo n.º 2
0
def test_zz_repr():
    assert repr(ZZGate(half_turns=1)) == 'ZZ'
    assert repr(ZZGate(half_turns=0.5)) == 'ZZ**0.5'
Ejemplo n.º 3
0
def test_zz_init_with_multiple_args_fails():
    with pytest.raises(ValueError):
        _ = ZZGate(half_turns=1.0, duration=numpy.pi/2)
Ejemplo n.º 4
0
def test_zz_eq():
    eq = EqualsTester()

    eq.add_equality_group(ZZGate(half_turns=3.5),
                          ZZGate(half_turns=-0.5),
                          ZZGate(rads=-0.5 * numpy.pi),
                          ZZGate(degs=-90),
                          ZZGate(duration=-numpy.pi / 4))

    eq.add_equality_group(ZZGate(half_turns=2.5),
                          ZZGate(half_turns=0.5),
                          ZZGate(rads=0.5 * numpy.pi),
                          ZZGate(degs=90),
                          ZZGate(duration=0.5 * numpy.pi / 2))

    eq.make_equality_group(lambda: ZZGate(half_turns=0))
    eq.make_equality_group(lambda: ZZGate(half_turns=0.1))
Ejemplo n.º 5
0
def test_zz_init():
    assert ZZGate(half_turns=0.5).half_turns == 0.5
    assert ZZGate(half_turns=1.5).half_turns == -0.5
    assert ZZGate(half_turns=5).half_turns == 1