Re: Деление длинных чисел методом Ньютона
- From
- Nick Kovaliov ()
- To
- Илья Кантор
- Date
- 2002-10-30T14:09:55Z
- Area
- RU.ALGORITHMS
From: "Nick Kovaliov" <Nick@urm.ru>
ИК> NK> один столбиком, другой методом Ньютона.
ИК> Да, именно это и пишу ;)
ИК> Умножение уже есть через БПФ.
ИК> По 8 миллионов цифр перемножает ;)
Если делать преобразование Фурье в конечных полях
(в кольцах Z/Zn, n = 2^q я пытался копать, но нифига),
то должно получиться быстрее, чем у тебя на сайте.
Жалко только, что на практике хорошо оптимизированный столбик
будет делать этот способ до < 4096 бит приблизительно.
Ежели найдёшь, как быстро вычислять по модулю
2^n - 1, или 2^n + 1 (ну или по модулю какого-нить простого числа),
тогда можно сделать и Фурье над конечными полями очень быстро.
ИК> Читаю Numerical Recipes..
ИК> Там используется какая-то странная добавка к длинам:
ИК> #define MACC 6.
ИК> Интересно, что это такое ?
Тупо в гугле (искал Numerical Recipes MACC)
наткнулся на фортрановский исходник, вот частичка -
MACC = 4 ;Number of interpolation points per 1/4 cycle
ИК> А делают они для деления q=u/v следующее:
ИК> mpinv(s,v,n-m+MACC,m); // s=1/v
ИК> mpmul(rr,s,u,n-m+MACC,n); // rr = su = u/v
ИК> mpsad(s, rr, n+n+MACC/2,1); // s = rr + 1 - что за маразм это ?
ИК> mpmov(q,&rr[1],n-m+1); // rr в q, готово.
ИК> Знать бы еще, что такое эта MACC ??
Больше ничего не нашёл ...
Да и исходник был про какую-то интерполяцию ...
ИК> NK> А в Кнуте ещё описана не
ИК> NK> квадратическая, а кубическая итерация ...
ИК> Давить. Ньютон лучше ;)
Кого давить-то ? :)
Эээ ... нуу ... неужто я уже ничего не помню !? ... ;-\
Там как раз Ньютон, только добавляется
ещё одно кубическое слагаемое,
и сходится такая ерундень быстрее ...
Жалко, Кнута нет под рукой вспомнить.
ИК> NK> Имхо слишком много накладных расходов,
ИК> NK> которыя я лично не знаю, как избежать,
ИК> NK> и поэтому проще просто столбиком :)
ИК> Сложение и 2 умножения.. Вроде, все ;)
ИК> Ну и чуть всякой байды вроде
ИК> копирования и округления, но это не считается.
Ну ты ещё скажи, что тебя ТОЛЬКО
асимптотическая сложность интересует ... ;-)
Я не понимаю, почему с такой маленькой точностью вычисляют,
но всё получается правильно ... есть где-нить описание почитать ?
(только ссылки, а не книжки пока что ... ;-| )
До встречи, всего наилучшего !
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)