9

我正在寻找更快的实现或由cmath.

我需要加快以下功能

  1. pow(x,y)
  2. exp(z*pow(x,y))

哪里z<0x来自 (-1.0,1.0) 并且y来自 (0.0, 5.0)

4

3 回答 3

7

以下是一些近似值:

如果上述 pow 的近似值不够好,您仍然可以尝试用指数函数替换它,这取决于您的机器和编译器,这可能会更快:

  1. x^y = e^(y*ln(x))
  2. 结果:e^(z * x^y) = e^(z * e^(y*ln(x)))

另一个技巧是当公式的某些参数不经常更改时。因此,如果例如 x 和 y 大部分是常数,您可以预先计算 x^y 并重用它。

于 2010-03-25T12:02:39.263 回答
4

x 和 y 的可能值是多少?如果它们在合理范围内,构建一些查找表可能会有所帮助。

于 2010-02-27T11:40:10.830 回答
1

我推荐Jack W. Crenshaw所著的“Math Toolkit for Real-Time Programming”一书中的例程。

您可能还想发布一些代码以显示您如何调用这些函数,因为可能还有一些其他更高级别的优化可能性,这些可能性在目前给出的描述中并不明显。

于 2010-02-27T14:04:37.667 回答