我正在寻找更快的实现或由 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 许可协议
以下是一些近似值: 优化了 Java 和 C/C++ 的 pow 近似值。这个近似值非常不准确,如果它足够好,您必须自己尝试。 为 Java 优化的指数函数。相当不错!我将它用于神经网络。 如果上述 pow 的近似值不够好,您仍然可以尝试用指数函数替换它,这取决于您的机器和编译器,这可能会更快: x^y = e^(y*ln(x)) 结果: e^(z * x^y) = e^(z * e^(y*ln(x))) 另一个技巧是当公式的某些参数不经常更改时。因此,如果例如 x 和 y 大部分是常数,您可以预先计算 x^y 并重用它。 原文由 martinus 发布,翻译遵循 CC BY-SA 2.5 许可协议
以下是一些近似值:
如果上述 pow 的近似值不够好,您仍然可以尝试用指数函数替换它,这取决于您的机器和编译器,这可能会更快:
x^y = e^(y*ln(x))
e^(z * x^y) = e^(z * e^(y*ln(x)))
另一个技巧是当公式的某些参数不经常更改时。因此,如果例如 x 和 y 大部分是常数,您可以预先计算 x^y 并重用它。