该问题的标题不是很具体,我知道,但这是因为我不知道我的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
为什么会这样呢?我该如何解决?提前致谢..
最佳答案
我用编译器测试了这段代码,结果是第一次调用sin(1.0)
并没有真正调用您的sin()
实现,而是返回了正确答案的其他调用。第二个调用sin(p)
执行您的sin()
函数,该函数返回-nan
,因此看起来不起作用。
尝试将您的sin()
函数重命名为其他名称,您也应该看到这一点。
关于c - 函数对相同参数的作用不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55108204/