Re: Деление длинных чисел методом Ньютона

From
Илья Кантор (2:5020/175.2)
To
Nick Kovaliov
Date
2002-10-30T17:53:31Z
Area
RU.ALGORITHMS
From: "Илья Кантор" <ilia@manual.ru>

Wed Oct 30 2002 16:24, Nick Kovaliov wrote to Илья Кантор:

 ИК>> Неправда. Будет медленнее. Модулярная арифметика, однако..
 ИК>> И реализовывать забодаешься wide NTT.

 NK> А мне видятся проблемы с точностью ...
 NK> В целочисленной версии их в принципе не может быть :)
Да ;) Поэтому для 32 миллионов цифр и выше используется NTT... Проблемы с
точностью FFT кого угодно добьют. Разве что сделать основание меньше..

 NK> Я что-то недопонял ... что принимается за разряд,
 NK> который у тебя загоняется в double ?
 NK> Что ты рекомендуешь принимать за разряд
 NK> при Real FFT ? 8 бит ? 16 бит ? 32 бита ?
Число по основанию 10000 загоняется в массив double. (каждая цифра
0<=N<10000).


 NK> а вот с Real FFT не знаю, как получится
 NK> из-за проблем с погрешностью ... хотя, считать надо ...
Если брать стандартную схему wrapper'а (см Numerical recipes), то все ок
выходит. А вот есть еще такое right angle transform - тут ошибка дикая.

 ИК>> Кстати, на сайте все дико тормозит ;)
 NK> Да вроде нет ...
Это я про реализацию FFT, которая там ;)

 ИК>> Нормальный столбик выигрывает у
 ИК>> простого Real FFT до 1024 цифр :(
 ИК>> А ежели все оптимизировать - код уродский получается.

 NK> Я имел ввиду асм-оптимизацию :)
 NK> У меня получалось 5.25 тактов на итерацию ...
 NK> то есть приблизительно n*m*5.25 тактов,
 NK> где n и m - размеры в 32-бит словах.
Нет уж, давай С++ против С++.. Портабельность, все же ;)

 NK> А что такое wide NNT ? ...
 Это когда несколько простых чисел берется и китайская теорема об остатках..
Одного простого слишком мало для сотен миллионов цифр.

 NK>         ИК> NK> Кого давить-то ? :)

    ИК>> Итерацию давить ;)
    ИК>> Она кубическая, но в ней вычислений больше.
    ИК>> Невыгодно, однако..

 NK> дЫк и сходится быстрее ...
 NK> Кнут, насколько я помню, её (кубическую) всё же рекомендовал.
Может быть.. Ньютона можно вычислять с сильно ограниченной точностью
умножения, поэтому везде его делают, насколько мне известно.

 NK>         КИ>NK> Ну ты ещё скажи, что тебя ТОЛЬКО
 NK>         КИ>NK> асимптотическая сложность интересует ... ;-)

    КИ>> Дык хочу 10000 цифр перемножать и выше.
    КИ>> По всему выходит, что с 10000 Ньютон
    КИ>> должен зарулить обычное деление.

 NK> Ну для таких размеров-то конечно ...
 NK> А зачем тебе такие большие числа ? ;-)
Мало ли что ;) Наверное, забью на это, все же..

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)