Здравствуйте.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char** argv)
{
int N = atoi(argv[1]);
double s = 0.0;
int n;
for (n = 1; n <= N; n++)
{
/* результат другой!! Уже при N = 1000 s оказывается < 0.65!! */
/* s += (1.8*n + 1.2) / (n*n*n*n + 1.8*n*n*n + 1.2*n*n);
/**/
s += (1.8*n + 1.2) / (pow(n, 4) + 1.8*pow(n,3) + 1.2*pow(n,2));
}
s = M_PI*M_PI/6.0 - s;
printf("%.16f", s);
return 0;
}
Один вариант при компилировании я назвал s1, другой s1_2 и вот что получается на выходе
Код:
D:\>s1 1000
0.6525800476750094
D:\>s1_2 1000
0.6496627497603147
Какому варианту верить больше и почему? Почему получаются разные ответы? Как работает функция pow()?
Может быть, посоветуете в какую сторону смотреть (м.б., книги, ссылки и т.п), чтобы разобраться, что к чему в подобных вопросах?