def METHOD_NAME(data: list[float]) -> list[int]:
    """find zero crossings
    Args:
        data (list[float]): data list execute
    Returns:
        list[int]: sorted indices of zero crossing points
    """
    if not data:
        return []
    np_data = np.array(data)
    # start with real zeros (ignore first and last element)
    real_zeros = [
        n for n in np.where(np_data == 0.0)[0] if n not in {0, np_data.size - 1}
    ]
    # now multipy elements to find change in signess
    crossings = [
        n if abs(np_data[n]) < abs(np_data[n + 1]) else n + 1
        for n in np.where((np_data[:-1] * np_data[1:]) < 0.0)[0]
    ]
    return sorted(real_zeros + crossings)