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)
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]]))