2

私はいくつかのx86 ASMコードとコードが実際に何をするかを研究しています.power関数(x ^ y)が内部的に対数関数として機能することを理解しています. 内部的には、CPUレジスタを意味します。

どうしてこれなの?メリットは何ですか?C++ のような他の高水準言語によって複製および借用できる利点はありますか?

4

2 に答える 2

6

このMATHを見てください。

答えは、対数関数はテイラー級数とルックアップ テーブルを組み合わせることで実現できるということです。ルックアップ テーブルがある場合は、それをハッシュすることができ、ルックアップは、計算によってのみ取得できる pow よりも簡単になります。

したがって、x yについては、次のように書くことができます。

y = log<sub>10</sub> x . 

また

y = (ln x)/(ln 10);

現在、 pow のログ実装がない場合は、ログを見つけるよりも時間がかかる可能性があるランタイム計算を必要とするAddition chain exponentiation Wikiを介して実現する必要があります。

編集: @harold のおかげで、累乗による指数化を使用して、より最適に指数化を実行できます。

于 2013-05-09T02:53:46.777 に答える
5

この質問への回答を参照してください:方法: pow(real, real) in x86

対数の規則を思い出してください。2 の底は log2(x) でキャンセルされ、x^y だけが残ります。

編集: 必要な各コンポーネントを計算するための x86 命令があります。

于 2013-05-09T01:40:37.783 に答える