编译器浮点数的最优除法

时间:2012-10-09 08:41:54

标签: math optimization division

我正在编写一个影响控件感觉的函数,发现除以15.9是正确的。我的本能是将其更改为除以16,因为编译器可以将其优化为移位操作。在这种情况下,值是浮点数。浮动除法中是否存在最优除数?

2 个答案:

答案 0 :(得分:2)

为什么不乘以0.0628930818呢?如果除以15.9是“大约右”,那么乘以倒数虽然可能不完全准确到最后的小数仍然是“大约右”。如果使用了一些“许可数学”标志,优化编译器可能甚至可能会自动执行此操作(通常,这是严格不允许的,因为它可能会失去一些精度)。

无论如何,它比除以16更准确。并且,它并不像篡改指数位那样糟糕。

答案 1 :(得分:0)

将浮点数除以16也很容易。你只需要将指数递减4.但我不认为编译器在这里进行任何优化,因为那时它还必须检查下溢。

要明确:我不打算直接操纵指数位。我只是想表明float的潜在最快除数也是2的幂。