用固定(常数)指数计算功率

时间:2012-10-23 21:09:58

标签: math mathematical-optimization numerical-methods exponent numerical-analysis

我有一个案例,我需要大量计算x ^ y,其中y是常数,x保证是有效数字。

如何更有效地完成Pow(双x,双y),它将执行各种检查和评估?

我希望预先计算y转换。

修改

两者都是实数。 x = 0 ... 4,000,000,000。

4 个答案:

答案 0 :(得分:3)

记住这种不平等:

x^y = exp(y * ln(x))

因此,您可以跳过Pow并使用expln

答案 1 :(得分:3)

你做不到。虽然y是常数,但x是一个变量,所以你无能为力。我不担心它。 pow()方法得到了很好的优化。

你唯一能做的就是预先计算许多不同x的值,并将它们保存在字典中,除非它们变得非常大。

答案 2 :(得分:1)

java中没有更快的方法,因为它不支持向量操作,或者至少很难优化代码以使用它们,因为没有良好的并行注释。

您应该尝试使用本机库并使用JNI调用它。

答案 3 :(得分:0)

如果您知道y,也许您可​​以将其分解为较小数字的乘法,并计算幂的幂。例如,如果您y = 6可以

y = 2 * 3
power = pow( pow(x, 3), 2)

不知道它是否会更快。