[英]Taking a root higher than 2
我正试图取一个表达式的第11个根,我得到了-inf
的返回。
std::cout << pow(j,(1.0/11.0)) << std::endl;
其中j
只是一些log
表达式。 我检查过这个号码以确保它有效,而且确实有效。 我在想,这就是动力表达式的运行方式。 有一个更好的方法吗? 谢谢。
是的,我已将cmath
纳入我的工作中。
如果您的投入略微合理,我无法想出战俘返回-inf的正当理由。 但是,如果您传递负数,可能值得尝试的是:
if(j==0) return 0;
if(j<0) return -pow(-j, 1.0/11.0);
return pow(j,1.0/11.0);
试着寻找FPU错误
也可以尝试在粉末之前加上这个
asm { fninit; };
崩溃前j的值将是与我们分享的良好开端。
尝试将pow的结果存储到某个float / double变量中
最小化您的代码(逐个部分关闭所有内容)
让我们知道你发现了什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.