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))
def test_zz_repr(): assert repr(ZZGate(half_turns=1)) == 'ZZ' assert repr(ZZGate(half_turns=0.5)) == 'ZZ**0.5'
def test_zz_init_with_multiple_args_fails(): with pytest.raises(ValueError): _ = ZZGate(half_turns=1.0, duration=numpy.pi/2)
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))
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