Пример #1
0
	if delta > base**power - 1:
		print 'Delta must be <=', base**power - 1
		sys.exit(1)

	# Generate $GF(q^n)$ for $q=base $n$=power and find our root of unity
	GFqn = GFpoly(base, power)
	alpha = nth_root_of_unity(GFqn, base**power - 1)

	# Calculate the generator polynomial $G(x) = \prod_{i=1}^{\delta}{(x - \alpha^i)}$
	Gpoly = Polynomial((GFqn(1),))
	for b in range(1, delta):
		Gpoly *= Polynomial((-(alpha ** b), GFqn(1)))

	codeword_len = base**power - 1
	message_len = base**power - len(Gpoly)

	# Compute the codeword corresponding to the message [1, 2, ... message_len]
	message = Polynomial([GFqn(i + 1) for i in range(message_len)])
	codeword = message * Gpoly

	print 'Alpha =', alpha.tonumber()
	print 'g(x) =', Gpoly
	print 'Message', message.asvector(), 'maps to', codeword.asvector()
	print 'message % g(x) =', message % Gpoly
	print 'codeword % g(x) =', codeword % Gpoly

	maxErrors = (codeword_len - message_len) // 2
	print 'Can detect', codeword_len - message_len, 'errors'
	print 'Can correct', maxErrors, 'errors'
Пример #2
0
    if delta > base**power - 1:
        print 'Delta must be <=', base**power - 1
        sys.exit(1)

    # Generate $GF(q^n)$ for $q=base $n$=power and find our root of unity
    GFqn = GFpoly(base, power)
    alpha = nth_root_of_unity(GFqn, base**power - 1)

    # Calculate the generator polynomial $G(x) = \prod_{i=1}^{\delta}{(x - \alpha^i)}$
    Gpoly = Polynomial((GFqn(1), ))
    for b in range(1, delta):
        Gpoly *= Polynomial((-(alpha**b), GFqn(1)))

    codeword_len = base**power - 1
    message_len = base**power - len(Gpoly)

    # Compute the codeword corresponding to the message [1, 2, ... message_len]
    message = Polynomial([GFqn(i + 1) for i in range(message_len)])
    codeword = message * Gpoly

    print 'Alpha =', alpha.tonumber()
    print 'g(x) =', Gpoly
    print 'Message', message.asvector(), 'maps to', codeword.asvector()
    print 'message % g(x) =', message % Gpoly
    print 'codeword % g(x) =', codeword % Gpoly

    maxErrors = (codeword_len - message_len) // 2
    print 'Can detect', codeword_len - message_len, 'errors'
    print 'Can correct', maxErrors, 'errors'