- 追加された行はこの色です。
- 削除された行はこの色です。
[[PukiWiki/1.4/Manual/Plugin]]
#math( y = \sqrt(x) )
*TEST [#s0532dca]
#math( y = \sqrt{x} )
#math( z = \frac{1}{y} )
#math( y = ax + b )
*逆数平方根 [#l0a5570b]
以下、基本的に
[[逆数と平方根を求める高次収束アルゴリズム:http://www.finetune.jp/~lyuka/technote/fract/sqrt.html]]
をベースに数式を整形したものです。
また、SSEでの実装については
[[advanced optimization SSE:http://homepage1.nifty.com/herumi/adv/adv50.html]]
も参考になるでしょう。
除算と平方根は一般的に加減乗算よりも計算コストが一桁高く、
数値計算においてもこの部分を高速化することが重要になることはよくあります。
よく知られている方法として、逆数(&math(1/x);)ないし逆数平方根(&math(1/\sqrt{x});)
の適当な初期値推定から、
加減乗算のみを用いて精度を改善するというものがあります。
最近はハードウェアで高速にこの初期値推定を行う命令をそなえたプロセッサも増えてきました
(SSEやHPC-ACE)。ただし、初期値の精度(有効ビット数)はハードウェア依存、
最終的に必要とされる精度はアプリケーション依存です。
ここでは、「Newton-Raphson法を倍精度に収束するまで闇雲に繰り返すよりもう少し効率のいい方法はないか」という話題を取り扱っていきます。
**逆数 [#m5a0b70b]
**逆数平方根 [#ac26a679]