Generates smoothed primitive from a list of coordinates.

    Parameters
    ----------
    cas_coords : list(numpy.array or float or tuple)
        Each element of the list must have length 3.
    smoothing_level : int, optional
        Number of times to run the averaging.

    Returns
    -------
    s_primitive : list(numpy.array)
        Each array has length 3.

    Raises
    ------
    ValueError
        If the smoothing level is too great compared to the length
        of cas_coords.

def make_primitive_smoothed(cas_coords, smoothing_level=2):
    """ Generates smoothed primitive from a list of coordinates.

    Parameters
    ----------
    cas_coords : list(numpy.array or float or tuple)
        Each element of the list must have length 3.
    smoothing_level : int, optional
        Number of times to run the averaging.

    Returns
    -------
    s_primitive : list(numpy.array)
        Each array has length 3.

    Raises
    ------
    ValueError
        If the smoothing level is too great compared to the length
        of cas_coords.
    """
    try:
        s_primitive = make_primitive(cas_coords)
        for x in range(smoothing_level):
            s_primitive = make_primitive(s_primitive)
    except ValueError:
        raise ValueError(
            'Smoothing level {0} too high, try reducing the number of rounds'
            ' or give a longer Chain (curent length = {1}).'.format(
                smoothing_level, len(cas_coords)))
    return s_primitive