Умножение полиномов Карацубы с использованием Python
Я пытаюсь реализовать код для умножения 2-х полиномов с использованием алгоритма Карацубы, я нашел этот код для умножения 2-х целых чисел с помощью метода Картасубы, однако я не могу отредактировать его, чтобы иметь возможность использовать несколько 2-полиномиальных уравнений.
приведенный ниже код может вычислить умножение 2 целых чисел, например, x=55, y =10 вернет 550
нужно отредактировать его, чтобы умножить 2 полинома, например, x=[5,5], что 5X+5. y=[1,0] равно X, и функция должна вернуть [5,5,0], что составляет 5X ^ 2 + 5X
def каратсуба (х, у):
# Set B = 10
B = 10
# Recursion base case
if x < 10 or y < 10:
return x*y
# m set to be length of x or y, whichever is maximum
m = max(int(log10(x)+1), int(log10(y)+1))
# check whether m is even. If odd, set m lower by 1
if m % 2 != 0:
m -= 1
m_2 = int(m/2)
a, b = divmod(x, B**m_2)
c, d = divmod(y, B**m_2)
ac = karatsuba(a,c)
bd = karatsuba(b,d)
ad_bc = karatsuba((a+b),(c+d)) - ac - bd
return ((ac*(10**m)) + bd + ((ad_bc)*(10**m_2)))