2015-07-10 6 views
16

Я пытаюсь выполнить умножение полиномов степени 4096 с использованием класса ZZ_pEX из NTL. Тем не менее, он возвращает ошибку «Полиномиальный слишком большой для FFT», и я не мог найти способ заставить его работать (или даже что-то, что может помочь в документации NTL), но комментарий в слайде, говорящий, что это может быть исправление (не говоря, как!).Ошибка «Полиномиальный слишком большой для FFT» на NTL

Кто-нибудь нашел исправление для этого?

+2

Можете ли вы разместить свой код, чтобы мы могли воспроизвести вашу ошибку? – Henrik

+0

(ссылка на) слайд с комментарием, возможно, также полезно. – AbcAeffchen

+0

Это слайд: http://wiki.sagemath.org/days4schedule?action=AttachFile&do=get&target=flint-talk.pdf –

ответ

2

Вам необходимо повторно скомпилировать NTL с GMP, который предоставляет подпрограммы библиотеки пакетов с множеством номеров GNU Multiprecision. Когда это кажется уместным, в этом пакете используются очень красивые хаки, например. БПФ, для арифметики бигума.

Здесь, внизу «Создание и использование NTL с GMP» детальные шаги, которые необходимо выполнить для того, чтобы компилировать NTL с GMP: http://www.shoup.net/ntl/doc/tour-gmp.html

Удачи!

+0

Да, я пробовал, но не работал. Я по-прежнему получаю такую ​​же ошибку. –

+0

Прошу прощения за эти «стандартные вопросы», прежде чем погрузиться глубже, но какую версию GMP вы используете? – Kuno

+0

У меня были аналогичные проблемы в прошлом году при выполнении вычислений на еще больших многочленах ... В конце концов, использование GMP также могло бы оптимизировать время вычислений, как показано здесь (http://www.cs.berkeley.edu/~ fateman/документы/polysbyGMP.pdf). – Kuno