我正在寻找更快的实现或cmath提供的函数的近似.
我需要加快以下功能
> pow(x,y)
> exp(z * pow(x,y))
其中z <0. x来自(-1.0,1.0),y来自(0.0,5.0)
解决方法:
以下是一些近似值:
> Optimized pow Approximation for Java and C/C++++.这种近似非常不准确,如果足够好,你必须自己尝试.
> Optimized Exponential Functions for Java.非常好!我用它作神经网络.
如果pow的上述近似值不够好,您仍然可以尝试用指数函数替换它,具体取决于您的机器和编译器,这可能会更快:
> x ^ y = e ^(y * ln(x))
>结果:e ^(z * x ^ y)= e ^(z * e ^(y * ln(x)))
另一个技巧是当公式的某些参数不经常改变时.如果是,例如x和y大多数是常数,你可以预先计算x ^ y并重复使用它.