6

コードの複雑さに関係なく、浮動小数点演算を使用する C または C++ のコードが、x86 ベースのアーキテクチャでビット単位の正確な結果を生成するかどうかを知りたいです。

私の知る限り、Intel 8087 以降の x86 アーキテクチャはすべて、IEEE-754 浮動小数点数を処理するために用意された FPU ユニットを使用しており、異なるアーキテクチャで結果が異なる理由はわかりません。ただし、それらが異なる場合 (つまり、コンパイラまたは最適化レベルが異なるため)、コンパイラを構成するだけでビット単位の正確な結果を生成する方法はありますか?

4

2 に答える 2

-3

コンパイラとアーキテクチャが IEEE 標準に準拠している場合は、はい。

たとえば、適切に構成されていれば、gcc は IEEE に準拠しています。このフラグを使用する-ffast-mathと、IEEE に準拠しなくなります。

http://www.validlab.com/goldberg/paper.pdfの 25 ページを参照してください。

IEEE 754-1985 ハードウェア/コンパイラのペアを使用する際に信頼できる精度を正確に知りたい場合は、IEEE サイトで標準論文を購入する必要があります。残念ながら、これは一般公開されていません

http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=30711&url=http%3A%2F%2Fieeexplore.ieee.org%2Fstamp%2Fstamp.jsp%3Ftp%3D%26arnumber%3D30711

于 2014-11-26T13:03:03.007 に答える