Пи приближение с уравнением Архимеда - PullRequest
0 голосов
/ 06 марта 2012

Я хочу создать приближение числа Пи на основе уравнения Архимеда. Я делаю это для режима и рекурсивного режима. В режиме я создаю что-то вроде выше:

  double Pi_approximation(double r, double L){

   int i;
   double fin;
   double y;

   for(i=1; i<4; i++){

           y =sqrt(2*((r*r) - r*(sqrt(4*((r*r) - (L)))))); 

           L = y;
           printf("%f \n", L);
   }

   return y;
}

Моя проблема во втором цикле для. В первом y вычисляется нормально, но во втором цикле, когда я печатаю y и L, он печатает мне их указатель !! Есть идеи?

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Трудно быть уверенным в том, что происходит, но я все равно сделаю предположение! Скорее всего, значение, которое вы передаете одному из вызовов sqrt(), является отрицательным. Когда это произойдет, y (и, следовательно, L) будет NaN. Выходные данные будут зависеть от компилятора. Например, на моем компиляторе вывод:

-1.#IND00
0 голосов
/ 06 марта 2012

Вы, вероятно, испортили код из-за утечек памяти или чего-то подобного в какой-то другой части ... Кажется, что один код работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...