我正在寻找更快的实现或由 cmath
提供的功能的良好近似。
我需要加快以下功能
pow(x,y)
exp(z*pow(x,y))
其中 z<0
。 x
来自 (-1.0,1.0) 和 y
来自 (0.0, 5.0)
原文由 zoli2k 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
以下是一些近似值:
如果上述 pow 的近似值不够好,您仍然可以尝试用指数函数替换它,这取决于您的机器和编译器,这可能会更快:
x^y = e^(y*ln(x))
e^(z * x^y) = e^(z * e^(y*ln(x)))
另一个技巧是当公式的某些参数不经常更改时。因此,如果例如 x 和 y 大部分是常数,您可以预先计算 x^y 并重用它。