Ejemplo n.º 1
0
def test_is_hermitian_tolerance():
    atol = 0.5

    # Pays attention to specified tolerance.
    assert cirq.is_hermitian(np.array([[1, 0], [-0.5, 1]]), atol=atol)
    assert cirq.is_hermitian(np.array([[1, 0.25], [-0.25, 1]]), atol=atol)
    assert not cirq.is_hermitian(np.array([[1, 0], [-0.6, 1]]), atol=atol)
    assert not cirq.is_hermitian(np.array([[1, 0.25], [-0.35, 1]]), atol=atol)

    # Error isn't accumulated across entries.
    assert cirq.is_hermitian(np.array([[1, 0.5, 0.5], [0, 1, 0], [0, 0, 1]]), atol=atol)
    assert not cirq.is_hermitian(np.array([[1, 0.5, 0.6], [0, 1, 0], [0, 0, 1]]), atol=atol)
    assert not cirq.is_hermitian(np.array([[1, 0, 0.6], [0, 1, 0], [0, 0, 1]]), atol=atol)
Ejemplo n.º 2
0
def test_is_hermitian():
    assert cirq.is_hermitian(np.empty((0, 0)))
    assert not cirq.is_hermitian(np.empty((1, 0)))
    assert not cirq.is_hermitian(np.empty((0, 1)))

    assert cirq.is_hermitian(np.array([[1]]))
    assert cirq.is_hermitian(np.array([[-1]]))
    assert cirq.is_hermitian(np.array([[5]]))
    assert not cirq.is_hermitian(np.array([[3j]]))

    assert not cirq.is_hermitian(np.array([[0, 0]]))
    assert not cirq.is_hermitian(np.array([[0], [0]]))

    assert not cirq.is_hermitian(np.array([[5j, 0], [0, 2]]))
    assert cirq.is_hermitian(np.array([[5, 0], [0, 2]]))
    assert cirq.is_hermitian(np.array([[1, 0], [0, 1]]))
    assert not cirq.is_hermitian(np.array([[1, 0], [1, 1]]))
    assert not cirq.is_hermitian(np.array([[1, 1], [0, 1]]))
    assert cirq.is_hermitian(np.array([[1, 1], [1, 1]]))
    assert cirq.is_hermitian(np.array([[1, 1j], [-1j, 1]]))
    assert cirq.is_hermitian(np.array([[1, 1j], [-1j, 1]]) * np.sqrt(0.5))
    assert not cirq.is_hermitian(np.array([[1, 1j], [1j, 1]]))
    assert not cirq.is_hermitian(np.array([[1, 0.1], [-0.1, 1]]))

    assert cirq.is_hermitian(np.array([[1, 1j + 1e-11], [-1j, 1 + 1j * 1e-9]]))