import numpy as np


def circular_1d(x, c):
    """
    Wrap values in circular space to smallest magnitude representation
    :param x: n, | values in circular space (eg S^1)
    :param c: period of circular space [0, c) (eg 2pi)
    :return: n, | distances
    """
    b = np.array([-c, 0])
    d = np.min(np.abs((x % c) + b[:, np.newaxis]), axis=0)
    return d