def METHOD_NAME(x, vec, theta):
    """
    Rotated the input vector or set of vectors `x` around the axis
    `vec` by the angle `theta`.
    Parameters
    ----------
    x : array_like
        The vector or array of vectors to transform. Must have shape
    """
    x = np.array(x).T
    vec = np.array(vec).T
    theta = np.array(theta).T[..., None]
    out = np.cos(theta)*x + np.sin(theta) * np.cross(vec, x) + \
        (1 - np.cos(theta)) * (vec * x).sum(axis=-1)[..., None] * vec
    return out.T