すべての行列値が整数である行列乗算を計算しているため、質問します。
LAPACK を使用して、正しいコードを高速に取得したいと考えています。2^53
sとして格納されている2 つの大きな整数 (積が より小さい)double
を乗算するとdouble
、正確な整数の結果を含む が得られますか?
すべての行列値が整数である行列乗算を計算しているため、質問します。
LAPACK を使用して、正しいコードを高速に取得したいと考えています。2^53
sとして格納されている2 つの大きな整数 (積が より小さい)double
を乗算するとdouble
、正確な整数の結果を含む が得られますか?
あなたの分析は正しいです:
したがって、その範囲内の整数に等しい 2 つの値の積は正確に表現されます。
参照: すべてのコンピューター科学者が浮動小数点演算について知っておくべきこと。重要なセクションは、操作に関する IEEE 標準の説明です。これには、上記の 2 番目の箇条書きのステートメントが含まれています。あなたはすでに最初の箇条書きを知っており、議論を完了するのは 2 番目の点です。
はい!double のデータは、符号、指数、および小数に分割されます。
ウィキペディアには、表現可能な数値の範囲を説明する記事があります
-2^53 から 2^53 までの整数はすべて倍精度で表現できます。
2^52=4,503,599,627,370,496 と 2^53=9,007,199,254,740,992 の間では、表現可能な数値は正確に整数です。2^53 から 2^54 までの次の範囲では、すべてが 2 で乗算されるため、表現可能な数値は偶数になります。逆に、2^51 から 2^52 までの前の範囲では、間隔は 0.5 です。など