私はのボリューム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+n
とn
の単精度*配列です。 BASE
は表現ベースであり、32ビットまたは64ビットのバイナリコンピュータの場合、それぞれ2^32または2^64に等しい。
私の質問は、q
とr
が表現されている精度についてです。アルゴリズムの残りの部分を理解しているので、それらは単精度*であると考えられますが、結果に合うように倍精度*でなければならない多くの場合を見つけるのは簡単です。
これらの値はどのように計算されますか?どんな精度ですか?
*
単精度/倍精度という表現は、浮動小数点演算ではなく整数演算を指します。