(v)
return np.concatenate([np.roll(pm_v, i, axis=1) for i in range(n)])
Returns `2**k * n` number of points of dimension `n` such that

    p[0] = [+-v[0], ..., +-v[k], 0, ..., 0]
    p[1] = [0, +-v[0], ..., +-v[k], 0, ..., 0]
    ...
    p[n-1] = [+-v[1], ..., +-v[k], 0, ..., 0, +-v[0]]

    with all +- configurations.
Returns `2**k * n` number of points of dimension `n` such that
Returns 2 ** k * n number of points of dimension n such that
def pm_roll(v):
    """Returns `2**k * n` number of points of dimension `n` such that

    p[0] = [+-v[0], ..., +-v[k], 0, ..., 0]
    p[1] = [0, +-v[0], ..., +-v[k], 0, ..., 0]
    ...
    p[n-1] = [+-v[1], ..., +-v[k], 0, ..., 0, +-v[0]]

    with all +- configurations.
    """
    n = len(v)
    pm_v = pm(v)
    return np.concatenate([np.roll(pm_v, i, axis=1) for i in range(n)])
def pm_roll ( v ) : n = len ( v ) pm_v = pm ( v ) return np . concatenate ( [ np . roll ( pm_v , i , axis = 1 ) for i in range ( n ) ] )