2010-11-28 12 views
0

浮動小数点型が32ビット幅の環境で、64ビット浮動小数点数でいくつかの計算を行いたいとします。floatを使用して倍精度を実装しますか?

float32データ型を使用してfloat64のようなより広い浮動小数点データ型を実装する方法はありますか? (あるいはfloat63、float48、または私が持っている32よりもはるかに広いもの)

整数を使用してより長い浮動小数点データ型を実装するほうがよいでしょうか?

ビット位置の具体的な意味は、これを基本的に不可能にすると推測していますが、私は数字の熟練者ではなく、これを検索する方法はわかりませんので、そこには巧妙なアプローチがあります。

答えて

3

あなたのマシンが望んでいるよりも高い精度を得るために使用できるトリックがあります。浮動小数点の内部の仕組みのかなり詳細な知識を必要と

http://en.wikipedia.org/wiki/Kahan_summation_algorithm

このような手順を設計する:最もよく知られているの一つは、浮動小数点数の集合の和を計算する際に、余分な精度を得るためのカハンの加算アルゴリズムであります計算には注意が必要です。

2

あなたの推測は正しいと思います。 64ビット浮動小数点を2つの32ビット浮動小数点の積として表現しようとする可能性がありますが、指数と仮数の両方を同時に処理できるとは思いません。それはかもしれない net効果のようなfloat48のようなものを得ることは可能かもしれないが、それは全体的にむしろdodgyと思われる。

しかし、intでそれを行うためのライブラリが必要です。長い間、一般的に使用されていたCPUは、ハードウェア・フロートをサポートしていませんでした。

関連する問題