2017-12-22 30 views
1

私はのボリューム2のセクション4.3.2のアルゴリズムDを実装しています。コンピュータプログラミングの技術 D. E. Knuthクヌス長分割アルゴリズム

ステップD3では、私はq = floor(u[j+n]*BASE+u[j+n-1]/v[n-1])r = u[j+n]*BASE+u[j+n-1] mod v[n-1]を計算することになっています。ここで、u(被除数)とv(除数)は、長さがそれぞれm+nnの単精度*配列です。 BASEは表現ベースであり、32ビットまたは64ビットのバイナリコンピュータの場合、それぞれ2^32または2^64に等しい。

私の質問は、qrが表現されている精度についてです。アルゴリズムの残りの部分を理解しているので、それらは単精度*であると考えられますが、結果に合うように倍精度*でなければならない多くの場合を見つけるのは簡単です。

これらの値はどのように計算されますか?どんな精度ですか?

*単精度/倍精度という表現は、浮動小数点演算ではなく整数演算を指します。

答えて

0

除数を正規化すると(最上位ビットがセットされると)商は常に1つの単語に収まります。 2つのベース表現の累乗で、正規化は、安価な左シフト演算によって達成される。

Link to a more detailed and formal answer.

関連する問題