Вы можете взглянуть на алгоритм Toom-3, используемый в умножении с повышенной точностью. Ссылка: умножение Toom-Cook.
По сути, вы оцениваете каждый многочлен при x=-2,-1,0,+1,бесконечности, используя только сложения и сдвиги, а затем умножаете эти 5 значений, чтобы получить значения произведения при x=-2,-1,0, +1, бесконечность. Последний шаг — вернуться к коэффициентам результата.
Для P(X) = A*X^2 + B*X + C
значения при x=-2,-1,0,+1,бесконечность таковы:
P(-2) = 4*A - 2*B + C (the products here are bit shifts)
P(-1) = A - B + C
P( 0) = C
P(+1) = A + B + C
P(oo) = A
Продукт R(X) = T*X^4 + U*X^3 + V*X^2 + W*X + K
и значения:
R(-2) = 16*T - 8*U + 4*V - 2*W + K
R(-1) = T - U + V - W + K
R( 0) = K
R(+1) = T + U + V + W + K
R(oo) = T
Вам известны значения R(x) = P(x)*Q(x)
для x=-2,-1,0,+1,бесконечность, и вам нужно решить эту линейную систему, чтобы получить коэффициенты T,U,V,W,K.
person
Eric Bainville
schedule
16.02.2011