все то же pi
- From
- Evgenij Masherov (2:5020/175.2)
- To
- Илья Кантор
- Date
- 2002-11-06T13:14:21Z
- Area
- RU.ALGORITHMS
From: "Evgenij Masherov" <EMasherow@nsi.ru>
Tue Nov 05 2002 21:04, Илья Кантор wrote to Mike Kolesoff:
MK>> Хочу узнать pi с точностью до миллиарда... просто интересно.
ИК> Ок. Дело в том, что вычисление pi до 50000 знака и до миллиардного
ИК> принципиально различаются.
ИК> Самые лучшие формулы для этого - видимо, формула Чудновского и
ИК> модифицированное арифметико-геометрическое сечение. Однако для миллиарда
ИК> знаков тебе нужно реализовать умножение длинных чисел через
ИК> теоретико-числовое преобразование, причем с кучей фишек для того, чтобы
ИК> оно давало терпимый результат, а деление - методом Ньютона-Рафсона с
ИК> улучшениями Карпа(тут можно не так стараться - оно 1 раз делается).
ИК> Оперативной памяти тебе на все не хватит(преобразования производятся не
ИК> "на месте"), поэтому придется изрядно потрахаться с выполнением
ИК> преобразований при участии диска.
ИК> Возможно, некоторые термины и не совсем понятны, поэтому скажем просто -
ИК> задачка не из тривиальных ;)
ИК> Ты ДЕЙСТВИТЕЛЬНО готов это все проделать ? ;))
Ну, давайте по пунктам...
Если брать классическое разложение арктангенса,
Pi/4=4*arctg(1/5)-arctg(1/239)
arctg(x)=x-x^3/3+x^5/5-x^7/7
то нужно уметь делать две операции. Сложение длинных чисел и деление длинных
чисел на обычные. И то, и другое делается достаточно просто. Для миллиарда
знаков потребуется (скажем, при 4-х десятичных на 2 байта - можно и плотнее)
500 Мбайт памяти на вектор (нужно три, но можно обойтись и двумя...). Т.е.
можно писать в ОП, надеясь, что ОС отображение на виртуальную будет само
мерять (было бы что мерять!).
Не нужно здесь ни длинное-на-длинное умножение, ни длинное деление.
Евгений Машеров АКА СанитарЖеня
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)