Ejemplo n.º 1
0
def init(message, num_bits, generator=None, dest_message=None):
    x = symbols('x')

    origin_message = np.array(list(message), dtype=int)

    if dest_message is not None:
        dest_message = np.array(list(dest_message), dtype=int)

    if generator is not None:
        generator = np.array(list(generator), dtype=int)

    gen_dest_message = generate_error(origin_message, num_bits)

    if generator is None:
        origin_poly = Poly.from_list(origin_message, x)
        dest_poly = Poly.from_list(gen_dest_message, x)

        error_poly = Poly.sub(origin_poly, dest_poly)

        factorized_error = Poly.factor(error_poly)

        generator_poly = get_generator(factorized_error)

        generator = np.array(generator_poly.all_coeffs())

    return origin_message, dest_message, generator
Ejemplo n.º 2
0
def construct_matrice(polynomial, p):
    q = []
    n = len(polynomial) - 1
    for deg in range(0, n):
        x = Symbol('x')
        r = rem(x**(p * deg), Poly.from_list(polynomial, gens=x))
        r_rev = get_coeffs(r, p, n)
        r_rev.reverse()
        r_rev[deg] -= 1
        r_rev = field(r_rev, p)
        q.append(r_rev)
    return q
Ejemplo n.º 3
0
def coeffs2poly(coeffs):
    """
        Given a list of coefficients (mod 2), most significant coefficient first, return a sympy
        polynomial.

        Example:

        >>> coeffs2poly([1, 0, 1])
        Poly(x**2 + 1, x, modulus=2)
        >>> coeffs2poly([1, 0])
        Poly(x, x, modulus=2)
        >>> coeffs2poly([0, 1])
        Poly(1, x, modulus=2)
    """

    return Poly.from_list(coeffs, gens=x, domain='GF(2)')
Ejemplo n.º 4
0
def poly( rep, *gens, **args ):
	return Poly.from_list( rep, *gens, **args )