Tag: 钳位

钳制实际(固定/浮点)值的最快方法?

有没有比使用if语句或三元运算符更有效的方法来钳制实数? 我想为双打和32位修复点实现(16.16)做到这一点。 我不是要求代码可以处理这两种情况; 它们将在不同的function中处理。 显然,我可以这样做: double clampedA; double a = calculate(); clampedA = a > MY_MAX ? MY_MAX : a; clampedA = a < MY_MIN ? MY_MIN : a; 要么 double a = calculate(); double clampedA = a; if(clampedA > MY_MAX) clampedA = MY_MAX; else if(clampedA < MY_MIN) clampedA = MY_MIN; fixpoint版本将使用函数/宏进行比较。 这是在代码的性能关键部分完成的,所以我正在寻找一种尽可能有效的方法(我怀疑它会涉及位操作) 编辑:它必须是标准/便携式C,平台特定的function在这里没有任何兴趣。 此外, […]