Ejemplo n.º 1
0
def add_bits_old(bits):
    """Adds n bits
    >>> from polybori import *
    >>> r=Ring(10)
    >>> add_bits_old([r.variable(i) for i in xrange(3)])
    [x(0) + x(1) + x(2), x(0)*x(1) + x(0)*x(2) + x(1)*x(2)]
    >>> add_bits_old([r.variable(i) for i in xrange(4)])
    [x(0) + x(1) + x(2) + x(3), x(0)*x(1) + x(0)*x(2) + x(0)*x(3) + x(1)*x(2) + x(1)*x(3) + x(2)*x(3)]
    """
    bits = list(bits)
    n = len(bits)
    deg_d_monomials = [
        Polynomial(all_monomials_of_degree_d(i, bits)) for i in xrange(n + 1)
    ]
    full = power_set(bits)
    bits_expr = []  # [sum(bits)]
    step = 0
    while n > 2**step:
        to_one = sum(
            [deg_d_monomials[i] for i in xrange(n + 1) if i & 2**step])
        to_one = Polynomial(to_one)
        fun = PartialFunction(ones=to_one, zeros=full.diff(to_one))
        poly = fun.interpolate_smallest_lex()
        bits_expr.append(poly)
        step = step + 1
    return bits_expr
Ejemplo n.º 2
0
def add_bits_old(bits):
    """Adds n bits
    >>> from polybori import *
    >>> r=Ring(10)
    >>> add_bits_old([r.variable(i) for i in xrange(3)])
    [x(0) + x(1) + x(2), x(0)*x(1) + x(0)*x(2) + x(1)*x(2)]
    >>> add_bits_old([r.variable(i) for i in xrange(4)])
    [x(0) + x(1) + x(2) + x(3), x(0)*x(1) + x(0)*x(2) + x(0)*x(3) + x(1)*x(2) + x(1)*x(3) + x(2)*x(3)]
    """
    bits = list(bits)
    n = len(bits)
    deg_d_monomials = [Polynomial(all_monomials_of_degree_d(i, bits)) for i in
        xrange(n + 1)]
    full = power_set(bits)
    bits_expr = []  # [sum(bits)]
    step = 0
    while n > 2 ** step:
        to_one = sum([deg_d_monomials[i] for i in xrange(n + 1) if i & 2 **
            step])
        to_one = Polynomial(to_one)
        fun = PartialFunction(ones=to_one, zeros=full.diff(to_one))
        poly = fun.interpolate_smallest_lex()
        bits_expr.append(poly)
        step = step + 1
    return bits_expr
Ejemplo n.º 3
0
def main():
    r = Ring(1000)
    x = Variable = VariableFactory(r)
    from os import system
    from polybori.specialsets import all_monomials_of_degree_d, power_set
    full_set = list(power_set([Variable(i) for i in xrange(15)]))
    from random import Random
    generator = Random(123)
    random_set = sum(generator.sample(full_set, 30))
    full_polynomial = list(all_monomials_of_degree_d(3, [Variable(i) for i in
        xrange(30)]))
    random_poly = sum(generator.sample(full_polynomial, 30))
    polynomials = [
    x(1) * x(2) + x(3),
    (x(1) + 1) * (x(2) + x(3)),
    (x(1) + 1) * (x(2) + 1) * (x(3) + 1),
    x(1) * x(2) + x(2) * x(3) + x(1) * x(3) + x(1),
    x(0) + x(1) + x(2) + x(3) + x(4) + x(5),
    all_monomials_of_degree_d(3, [x(i) for i in xrange(10)]),
    power_set([x(i) for i in xrange(10)]),
    random_poly,
    random_set,
    Polynomial(all_monomials_of_degree_d(3, [x(i) for i in xrange(10)])) +
        Polynomial(power_set([x(i) for i in xrange(10)])),
    Polynomial(power_set([x(i) for i in xrange(10)])) + 1
    ]
    for colored in [True, False]:
        if colored:
            colored_suffix = "_colored"
        else:
            colored_suffix = ""
        for format in ["png", "svg"]:
            for (i, p) in enumerate(polynomials):

            #dot_file=str(i) +colored_suffix+".dot"
            #f=open(dot_file, "w")
            #f.write(dot)
            #f.close()
                out_file = str(i) + colored_suffix + "." + format
                plot(p, out_file, colored=colored, format=format)
Ejemplo n.º 4
0
def main():
    r = Ring(1000)
    x = Variable = VariableFactory(r)
    from os import system
    from polybori.specialsets import all_monomials_of_degree_d, power_set
    full_set = list(power_set([Variable(i) for i in xrange(15)]))
    from random import Random
    generator = Random(123)
    random_set = sum(generator.sample(full_set, 30))
    full_polynomial = list(
        all_monomials_of_degree_d(3, [Variable(i) for i in xrange(30)]))
    random_poly = sum(generator.sample(full_polynomial, 30))
    polynomials = [
        x(1) * x(2) + x(3), (x(1) + 1) * (x(2) + x(3)),
        (x(1) + 1) * (x(2) + 1) * (x(3) + 1),
        x(1) * x(2) + x(2) * x(3) + x(1) * x(3) + x(1),
        x(0) + x(1) + x(2) + x(3) + x(4) + x(5),
        all_monomials_of_degree_d(3, [x(i) for i in xrange(10)]),
        power_set([x(i) for i in xrange(10)]), random_poly, random_set,
        Polynomial(all_monomials_of_degree_d(3, [x(i) for i in xrange(10)])) +
        Polynomial(power_set([x(i) for i in xrange(10)])),
        Polynomial(power_set([x(i) for i in xrange(10)])) + 1
    ]
    for colored in [True, False]:
        if colored:
            colored_suffix = "_colored"
        else:
            colored_suffix = ""
        for format in ["png", "svg"]:
            for (i, p) in enumerate(polynomials):

                #dot_file=str(i) +colored_suffix+".dot"
                #f=open(dot_file, "w")
                #f.write(dot)
                #f.close()
                out_file = str(i) + colored_suffix + "." + format
                plot(p, out_file, colored=colored, format=format)