避免在以下语句中进行分支

时间:2017-02-28 21:32:13

标签: if-statement compiler-optimization

我得到了以下计算:

if (x==0) x=1.0;
Y = x * A

任何想法如何避免" if"通过使用一些数学钳位/步进函数进行分支。

1 个答案:

答案 0 :(得分:1)

Y=((x==0)+(x!=0)*x)*A;

icc -O3在没有jmp(gcc / llvm没有)的情况下为x86-64编译它(用https://gcc.godbolt.org检查)。