Здравствуйте.
Код:
#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()?
Может быть, посоветуете в какую сторону смотреть (м.б., книги, ссылки и т.п), чтобы разобраться, что к чему в подобных вопросах?