(v)
return combine(*elems)
Given an array v = [v0, v1, ..., vn], this returns all permutation of v
    with plus-minus, i.e., [+v0, +v1, ..., +vn], [-v1, +v0, ..., +vn], etc.
Given an array v = [v0, v1, ..., vn], this returns all permutation of v
    with plus-minus, i.e., [+v0, +v1, ..., +vn], [-v1, +v0, ..., +vn], etc.
Given an array v = [ v0 v1 ... vn ] this returns all permutation of v with plus - minus i . e . [ + v0 + v1 ... + vn ] [ - v1 + v0 ... + vn ] etc .
def fs_array(v):
    """Given an array v = [v0, v1, ..., vn], this returns all permutation of v
    with plus-minus, i.e., [+v0, +v1, ..., +vn], [-v1, +v0, ..., +vn], etc.
    """
    elems = [((+vi, -vi), 1) for vi in v]
    return combine(*elems)
def fs_array ( v ) : elems = [ ( ( + vi , - vi ) , 1 ) for vi in v ] return combine ( * elems )