(我觉得这应该是一个重复的问题,但我在搜索时找不到合适的搜索字词。)
一般来说,(安静)NAN次零应该给NAN - 而且确实如此。
但是,在我的代码中一个特定的性能关键部分,我希望零次任何为零。
在C ++中用快速的方法做什么?
答案 0 :(得分:5)
double mymult(double a, double b){
double result[]={a*b,0.};
return result[(a==0.)|(b==0.)];
}
应该避免分支:仔细检查生成的程序集。
并非所有bool
计算都意味着分支。
答案 1 :(得分:2)
你无法用算术做到这一点。你必须测试零。