Re: Деление длинных чисел методом Ньютона
- From
- Илья Кантор (2:5020/175.2)
- To
- Nick Kovaliov
- Date
- 2002-10-30T13:19:16Z
- Area
- RU.ALGORITHMS
From: "Илья Кантор" <ilia@manual.ru>
Wed Oct 30 2002 11:25, Nick Kovaliov wrote to Илья Кантор:
ИК>> Как организовать вычисление A/B ?
NK> один столбиком, другой методом Ньютона.
Да, именно это и пишу ;) Умножение уже есть через БПФ.
По 8 миллионов цифр перемножает ;)
ИК>> Сначала, вроде, нужно найти обратное к B методом Ньютона.
ИК>> С какой точностью это нужно делать, если длина A=n, Длина B=m ?
Читаю Numerical Recipes.. Там используется какая-то странная добавка к длинам:
#define MACC 6.
Интересно, что это такое ?
А делают они для деления 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 ??
ИК>> Сам метод Ньютона делает итерации R <- R+(1-BR)*R.
ИК>> С какой точностью выполнять каждую операцию ?
NK> А вот с этим сложнее ...
Эти шаги я понял, как делать.. ;)
NK> А в Кнуте ещё описана не квадратическая, а кубическая итерация ...
Давить. Ньютон лучше ;)
NK> Имхо слишком много накладных расходов,
NK> которыя я лично не знаю, как избежать,
NK> и поэтому проще просто столбиком :)
Сложение и 2 умножения.. Вроде, все ;)
Ну и чуть всякой байды вроде копирования и округления, но это не считается.
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)