от
Я ищу самый быстрый способ получить значение π, как личный вызов. Более конкретно, я использую способы, которые не связаны с использованием
#define
константы как
M_PI
, или жесткого кодирования в количество. Программа ниже испытания различных способов я не знаю. Встроенная версия сборки, в теории, самый быстрый вариант, хотя и не портативный. Я включил его в качестве базового для сравнения с другими версиями. В моих тестах, с встроенные модули, версии
4 * atan(1)
является самым быстрым на ССЗ 4.2, потому что он автоматически складывает
atan(1)
в константу. С
 указан, версия atan2(0,  является самым быстрым.

Вот основной программы испытаний (pitimes.c
):
#include

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста подтвердите адрес электронной почты.

24 Ответы

0 голосов
от
Я ищу самый быстрый способ получить значение π, как личный вызов. Более конкретно, я использую способы, которые не связаны с использованием
#define
константы как
M_PI
, или жесткого кодирования в количество. Программа ниже испытания различных способов я не знаю. Встроенная версия сборки, в теории, самый быстрый вариант, хотя и не портативный. Я включил его в качестве базового для сравнения с другими версиями. В моих тестах, с встроенные модули, версии
4 * atan(1)
является самым быстрым на ССЗ 4.2, потому что он автоматически складывает
atan(1)
в константу. С
 указан, версия atan2(0,  является самым быстрым.

Вот основной программы испытаний (pitimes.c
):
#include
0 голосов
от
Метод Монте-Карло, как уже упоминалось, применяется несколько отличных концепций, но это, очевидно, не самый быстрый, не долго музыка играла, не какими-то разумная мера. Кроме того, все зависит от того, какую точность вы ищете. Самый быстрый π я знаю, сейчас с цифрами жестко. Глядя на Пи и Пи[формат PDF], там много формул. Вот метод, который быстро сходится — около 14 цифр на каждой итерации. PiFast, текущая быстрый приложение, использует эту формулу с БПФ. Я просто написать формулу, так как код очень простой. Эта формула была почти найдена Рамануджан и обнаружил Чудновский. Это на самом деле, как он рассчитал несколько миллиардов цифры — так это не способ игнорировать. Формула будет быстро переполняются и, поскольку мы делим факториалы, было бы выгодно, чтобы потом задержки такие расчеты, чтобы удалить условия. где, Ниже приведен алгоритм Брента–Саламин. В Википедии упоминается, что, когда A и B являются "достаточно близко", то (А Б)2 / 4Т будет приближенное значение π. Я не уверен, что "достаточно близко", но из моих тестов одна итерация есть 2 цифры, двое получили 7, и 15, Конечно, это с удваивается, поэтому он, возможно, ошибку, основанную на его представлении и правда расчет может быть более точным.
let pi_2 iters =
    let rec loop_ a b t p i =
        if i = 0 then a,b,t,p
        else
            let a_n = (a  . b) /. 2.0 
            and b_n = sqrt (a*.b)
            and p_n = 2.0 *. p in
            let t_n = t 

Наконец, как насчет гольф-Пи (800 знаков)? 160 символов!

int a=10000,b,c=2800,d,e,f[2801],g;main(){for(;b
0 голосов
от
Мне очень нравится эта программа, потому что он приближается к π, глядя на свою область. IOCCC 1988 : Уэстли.с
#define _
0 голосов
от
Вот общее описание методики расчета пи, что я узнал в школе. Я только разделяю это, потому что я думаю, что это достаточно просто, что любой может вспомнить, бесконечно, плюс он учит вас понятие "Монте-Карло" методы ... которые являются статистические методы, прибывающих на ответы, которые не сразу появляются, чтобы быть выводимы посредством случайных процессов. Нарисовать квадрат и впишем в квадрант (четверть полукруга) внутри квадрата (квадрант с радиусом, равным стороне квадрата, чтобы оно заполнило столько же площади, как это возможно) Теперь бросить дротик на площади, и запись, где он приземлится, то есть выбрать случайную точку внутри квадрата. Конечно, он приземлился внутри квадрата, но внутри полукруга? Зафиксировать данный факт. Повторите этот процесс много раз-и вы найдете там является отношение числа точек внутри полукругом по отношению к общему числу кинули, назвать этот коэффициент х. Так как площадь квадрата равна R раз R, можно сделать вывод, что площадь полукруга-это X раза R и Р (то есть, X умножить на R в квадрате). Отсюда х раз 4 дадут вам Пи. Это не быстрый способ. Но это хороший пример метода Монте-Карло. И если вы посмотрите вокруг, вы можете обнаружить, что многие проблемы, в противном случае за пределами вашей вычислительные навыки могут быть решены с помощью таких методов.
0 голосов
от
В интересах полноты, на C версию шаблона, который, для оптимизированной сборки, будет вычислять приближение числа Пи во время компиляции, и встроенные в одно значение.
#include
0 голосов
от
Там на самом деле все книги (среди прочих вещей) для быстрых методов вычисления \Пи: Пи и AGM', Джонатан и Питер Борвейна (доступно на Amazon). Я изучал AGM и связанные алгоритмы совсем немного: это весьма интересно (хотя иногда нетривиальные). Обратите внимание, что для выполнения большинства современных алгоритмов для вычисления \Пи, вам понадобится библиотека для арифметических вычислений с повышенной точностью (GMP является достаточно хорошим выбором, хотя это было время, так как я в последний раз использовал его). Время-сложность из лучших алгоритмов в О(М(П)журнал(N)), где m(n) - это время-сложность умножения двух N-битовых целых чисел (м(н)=о(n журнал(N) журнал(лог(н))) с помощью БПФ-алгоритмы, которые обычно используются при вычислении цифр \Pi, и такой алгоритм реализован в ГМП). Заметим, что хотя теория алгоритмов не может быть тривиальным, сами алгоритмы, как правило, несколько строк псевдокода, а их реализация, как правило, очень проста (если вы решили не писать свой собственный вычислений с повышенной точностью арифметика :-) ).
0 голосов
от
Следующие ответы точно как сделать это максимально быстрый способ -- с наименьшей вычислительной работы. Даже если вам не нравится ответ, вы должны признать, что это действительно самый быстрый способ получить значение числа Пи. Самый быстрый способ получить значение числа Пи составляет: 1) выбрал ваш любимый язык программирования 2) загрузить его математическая библиотека 3) и найти, что Пи уже определено есть -- готов к использованию! В случае, если вы не имеете математическая библиотека под рукой.. Второй быстрый способ (более универсальное решение) является: искать Пи в Интернете, например, здесь: http://www.eveandersson.com/pi/digits/1000000 (1 миллион цифр .. что ваши числа с плавающей точкой? ) или вот: http://3.141592653589793238462643383279502884197169399375105820974944592.com/ или вот: http://en.wikipedia.org/wiki/Pi Это очень быстро, чтобы найти цифры, которые необходимо для любой точной арифметики, который вы хотите использовать, и определяя константу, вы можете убедиться в том, что вам не придется тратить драгоценное время процессора. Это не только отчасти шутливого ответа, но в реальности, если кто-то будет идти вперед и вычислить значение Пи в реальных приложениях .., что это довольно большой тратой процессорного времени, не так ли? По крайней мере, я не вижу реального применения для попыток повторно вычислить это. Уважаемый модератор: обратите внимание, что ОП спрашивает: "самый быстрый способ получить значение числа Пи"
0 голосов
от
ББП формула позволяет вычислить N-й цифра - по основанию 2 (или 16) - без того, чтобы даже заморачиваться с предыдущие N-1 цифр первая :)
0 голосов
от
Вместо определения пи как константу, я всегда использую
acos(.
0 голосов
от
Просто наткнулся на это должно быть здесь для полноты картины: вычислить ПИ в ПИТ Он имеет достаточно приятное свойство, что точность может быть улучшена делая программу больше. Вот некоторое представление о самом языке
...