私はいくつかのx86 ASMコードとコードが実際に何をするかを研究しています.power
関数(x ^ y)が内部的に対数関数として機能することを理解しています. 内部的には、CPUレジスタを意味します。
どうしてこれなの?メリットは何ですか?C++ のような他の高水準言語によって複製および借用できる利点はありますか?
私はいくつかのx86 ASMコードとコードが実際に何をするかを研究しています.power
関数(x ^ y)が内部的に対数関数として機能することを理解しています. 内部的には、CPUレジスタを意味します。
どうしてこれなの?メリットは何ですか?C++ のような他の高水準言語によって複製および借用できる利点はありますか?
このMATHを見てください。
答えは、対数関数はテイラー級数とルックアップ テーブルを組み合わせることで実現できるということです。ルックアップ テーブルがある場合は、それをハッシュすることができ、ルックアップは、計算によってのみ取得できる pow よりも簡単になります。
したがって、x yについては、次のように書くことができます。
y = log<sub>10</sub> x .
また
y = (ln x)/(ln 10);
現在、 pow のログ実装がない場合は、ログを見つけるよりも時間がかかる可能性があるランタイム計算を必要とするAddition chain exponentiation Wikiを介して実現する必要があります。
編集: @harold のおかげで、累乗による指数化を使用して、より最適に指数化を実行できます。
この質問への回答を参照してください:方法: pow(real, real) in x86
対数の規則を思い出してください。2 の底は log2(x) でキャンセルされ、x^y だけが残ります。
編集: 必要な各コンポーネントを計算するための x86 命令があります。