1

y が定数で x が有効な数値であることが保証されている x^ya を膨大な回数計算する必要がある場合があります。

これは、さまざまなチェックと評価を実行する Pow(double x, double y) よりも効率的に行うにはどうすればよいでしょうか?

y 変換を事前に計算しようとしています。

編集

どちらも実数です。x = 0 ... 4,000,000,000。

4

4 に答える 4

3

この等式を覚えておいてください:

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

したがって、スキップしてとPowを使用できます。expln

于 2012-10-23T21:12:44.443 に答える
3

それはいけません。y は定数ですが、x は変数なのでどうしようもありません。私はそれについて心配しません。pow() メソッドは非常に最適化されています。

あなたができる唯一のことは、多くの異なるxの値を事前に計算し、それらが非常に大きくなる可能性がない限り、それらを辞書に保存することです.

于 2012-10-23T21:12:58.697 に答える
1

ベクトル操作をサポートしていないか、少なくとも適切な並列注釈がないため、ベクトル操作を使用するようにコードを最適化するのに苦労しているため、Java には高速な方法はありません。

おそらく、ネイティブ ライブラリを使用して JNI で呼び出す必要があります。

于 2012-10-24T06:56:30.583 に答える
0

を知っていればy、それをより小さな数の乗算に分解し、ベキ乗を計算できるかもしれません。たとえば、y = 6あなたができるなら

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

ただし、速くなるかどうかはわかりません。

于 2012-10-23T21:17:37.630 に答える