Название вопроса не очень конкретное, я знаю, но это потому, что я не знаю, что происходит с моей C-программой. Я пытаюсь вычислить sin (x), используя полиномы Тейлора (с радиантом).Сначала я хочу поделиться своим кодом:
#define TAYLOR_MAX 10
double sin(double x){
int i;
double sum=0, fact=1, xi=x;
for(i=1; i<TAYLOR_MAX; i+=2){
sum += x / fact;
x *= xi * xi * (-1);
fact *= i * (i-1);
}
return sum;
}
Хорошо, когда я вызываю эту функцию как:
sin(1.0)
Она запускается и выдает правильный ответ: 0.8414709848
Но когда я звоню так:
double p=1.0;
sin(p)
Это дает: -nan
Почему это происходит?Как я могу решить это?Заранее спасибо ..