2016-10-01 6 views
4

Вот код:Как этот код вычисляет pi с высокой точностью?

#include <stdio.h> 

long f[2801]; 

int main() 
{ 
    long i = 0, c = 2800, d = 0, e = 0, g = 0; 
    for (i = 0; i < c; ++i) 
     f[i] = 2000; 
    for (;;) { 
     d = 0; 
     g = c * 2; 
     if (!g) 
      break; 
     i = c; 
     for(;;) { 
      d += f[i] * 10000; 
      --g; 
      f[i] = d % g; 
      d /= g; 
      --g; 
      --i; 
      if (!i) break; 
      d *= i; 
     } 
     printf("%.4ld",e+d/10000); 
     e = d % 10000; 
     c -= 14; 
    } 
    return 0; 
} 

Мой вопрос: Как этот код высчитывает пи с высокой точностью десятичного и что математическую формулу он использует?

+2

«Как этот код высчитывает пи» - я бы сказал, что, выполнив машинный код, который был сгенерирован компилятором, который скомпилированный исходный код для вашей машины. Мы не «объясняем код» сайта. У вас есть ** конкретный вопрос с этим кодом? – Olaf

+0

@Olaf Я просто не понимаю, как работает алгоритм, используемый кодом. –

ответ

2

Это отформатированная копия программы PI, написанная Диком Т. Зимой института CWI Голландии. Первоначально написанный в запутанной форме, в двух или трех строках, существует несколько вариантов Dik и других, которые выводят разные количества мест PI (например, 800, 15 000 и т. Д.) На основе оценки математической серии.

Это класс программ, известных как «алгоритмы сглаживания», предназначенные для вывода определенного количества цифр. Вы можете узнать больше через поиск Google по Dik Winter и «алгоритмы вставки». Некоторые примеры хитов:

Computing Pi in C подробный анализ алгоритма с неотвеченными вопросами.

Pi the Number, not the Movie

+0

В первой ссылке, почему «P0 = q0»? –