这个问题的标题不是很具体,我知道,但这是因为我不知道我的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
为什么会这样?我该如何解决?在此先感谢。