サガフロンティア2のデータベースです。細かい設定などについてはアルティマニアの購入を推奨します。当wikiでは便利なデータ情報やアルティマニアに載ってない情報を取り扱っていきます。
履歴
この一連の計算は単に平方根を計算している。(CORDIC双曲線計算モードによるアルゴリズム)N=6115501とする。(これは本当は何でもよい。)まず、このアルゴリズムでは、入力値が(2*N, 8*N)に入っている必要があるので、入力値を(4のn乗)倍することでこの範囲におさめる。(Xを使って書けば、n = 2 + X/2)次に、数学的な性質により、7回操作を繰り返した後のAの値は、求めたい平方根を {F = sqrt(2*N) * sqrt(3/4) * sqrt(15/16) * ... * sqrt(16383/16384)}倍した値(の近似値)となるようになっている。したがって、AをFで割ることで平方根を求めることができる。最後に、前処理でルートの中身を(4のn乗)倍していたので、得られた平方根をさらに(2のn乗)で割ると求める答えになる。Nは大きいほど誤差が小さくなるので良いが、N=6115501とすると、F=4096となるので、割り算を右シフトで行うことができる。このように、PSのCPUで使うことのできる整数計算のみで平方根が計算できる工夫がなされているといえる。(おそらくそういう汎用のライブラリがあるのであろう。)もっともこの場面に限って言えば、そもそも平方根を計算せずにルートの中身を48の二乗、96の二乗・・・などと比較すれば十分なのではあるが・・・。
新規にコメントを書く
利用規約をご確認のうえご記入下さい
どなたでも編集できます
コメント詳細
この一連の計算は単に平方根を計算している。(CORDIC双曲線計算モードによるアルゴリズム)
N=6115501とする。(これは本当は何でもよい。)
まず、このアルゴリズムでは、入力値が(2*N, 8*N)に入っている必要があるので、入力値を(4のn乗)倍することでこの範囲におさめる。(Xを使って書けば、n = 2 + X/2)
次に、数学的な性質により、7回操作を繰り返した後のAの値は、求めたい平方根を {F = sqrt(2*N) * sqrt(3/4) * sqrt(15/16) * ... * sqrt(16383/16384)}倍した値(の近似値)となるようになっている。したがって、AをFで割ることで平方根を求めることができる。
最後に、前処理でルートの中身を(4のn乗)倍していたので、得られた平方根をさらに(2のn乗)で割ると求める答えになる。
Nは大きいほど誤差が小さくなるので良いが、N=6115501とすると、F=4096となるので、割り算を右シフトで行うことができる。
このように、PSのCPUで使うことのできる整数計算のみで平方根が計算できる工夫がなされているといえる。(おそらくそういう汎用のライブラリがあるのであろう。)もっともこの場面に限って言えば、そもそも平方根を計算せずにルートの中身を48の二乗、96の二乗・・・などと比較すれば十分なのではあるが・・・。