我正在寻找更快的实现或者好的近似方法来替代cmath
提供的函数。
我需要加速以下函数:
pow(x,y)
exp(z*pow(x,y))
其中z<0
,x
取值范围为(-1.0,1.0),y
取值范围为(0.0,5.0)。
我正在寻找更快的实现或者好的近似方法来替代cmath
提供的函数。
我需要加速以下函数:
pow(x,y)
exp(z*pow(x,y))
其中z<0
,x
取值范围为(-1.0,1.0),y
取值范围为(0.0,5.0)。
以下是一些近似值:
如果上述pow逼近不够好,您仍然可以尝试使用指数函数替换它,具体取决于您的机器和编译器,这可能会更快:
x^y = e^(y*ln(x))
e^(z * x^y) = e^(z * e^(y*ln(x)))
另一个技巧是当公式的某些参数很少改变时。因此,例如,如果x和y大多是常量,则可以预先计算x^y并重复使用它。