问题的标题不是很具体,我知道,但这是因为我不知道我的C程序发生了什么。我正在尝试使用Taylor多项式(带有辐射)来计算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
为什么会这样?我怎么解决这个问题?提前致谢..
我用我的编译器测试了这段代码,结果是第一次调用sin(1.0)
实际上并没有调用你的sin()
实现,而是另外一些返回正确答案的东西。第二次调用sin(p)
执行你的sin()
函数返回-nan
,所以它似乎不起作用。
尝试将你的sin()
函数重命名为其他东西,你也应该看到它。