Деление на numpy.poly1d не работает для полиномов длинной степени - PullRequest
0 голосов
/ 14 апреля 2019

Я пишу программу для шифрования и шифрования кодов Fire (надеюсь, я написал его второе имя правильно). На этапе поиска синдрома полинома я использую поликлинический класс numpy для деления длинных полиномов (19437 градусов), но это не работает. Может быть, это моя вина, или, возможно, это невозможно для долгих степеней в этом классе. Я был бы признателен за любую помощь в этом: может быть, я могу сделать это любым другим способом?

import numpy as np
import random


def main():

    polynome_second = np.poly1d
    file_code = open('code.txt', 'w')
    np.random.seed()
    for i in range(19437):
        file_code.write(str(random.randint(0, 1)))      # creating a long code
    file_code.close()
    file_code = open('code.txt', 'r')
    code_of_string = file_code.read()       
    polynomial_first = np.poly1d([int(code_of_string[i]) for i in range(code_of_string.__len__())])
    coeffs_for_forming_polynomial = []

    for i in range(30):             # creating forming polynomial: p(x) = x^29 + x^22 + x^19 - x^10 - x^3 - 1 
        if i == 29 or i == 22 or i == 19:
            coeffs_for_forming_polynomial.append(-1)
        elif i == 10 or i == 3 or i == 0:
            coeffs_for_forming_polynomial.append(1)
        else:
            coeffs_for_forming_polynomial.append(0)

    forming_polynomial = np.poly1d(coeffs_for_forming_polynomial)
    print(forming_polynomial)
    # syndrome_polynomial = np.poly1d(1)

    syndrome_polynomial = polynomial_first / forming_polynomial     #
    print(syndrome_polynomial)
    # print(isinstance(syndrome_polynomial, np.poly1d))
    # print(polynomial_first)
    file_code.close()
    return


main()

и вот вывод с ошибкой из IDE:

C:\Program Files\Python37\lib\site-packages\numpy\lib\polynomial.py:970: RuntimeWarning: overflow encountered in subtract
  r[k:k+n+1] -= d*v
C:\Program Files\Python37\lib\site-packages\numpy\lib\polynomial.py:970: RuntimeWarning: invalid value encountered in multiply
  r[k:k+n+1] -= d*v
C:\Program Files\Python37\lib\site-packages\numpy\lib\polynomial.py:970: RuntimeWarning: invalid value encountered in subtract
  r[k:k+n+1] -= d*v
...