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
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
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)
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)