def get_direction_letters(d):
    """
    Calculates the 16 point abbreviated representation of a numerical bearing
    :param d: a float representing a compass bearing
    :return: a string containing the 16 point bearing in letters
    """
    d_letters = ('N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW')
    x = int((d + 11.25) / 22.5) % 16
    return d_letters[x]