IEEE 標準を満たす FPU はほとんどありません (その主張にもかかわらず)。したがって、異なるハードウェアで同じプログラムを実行すると、実際には異なる結果が得られます。その結果は、ソフトウェアで FPU を使用することの一部として既に回避すべきまれなケースである可能性があります。
多くの場合、IEEE のバグはソフトウェアにパッチが適用されています。現在実行しているオペレーティング システムには、製造元からの適切なトラップとパッチが含まれていると確信していますか? OS の更新前または更新後はどうなりますか? すべてのバグが削除され、バグ修正が追加されていますか? C コンパイラはこれらすべてと同期しており、C コンパイラは適切なコードを生成していますか?
これをテストしても無駄かもしれません。製品を納品するまで問題は発生しません。
FP ルール番号 1 を観察してください: if(something==something) 比較を使用しないでください。そして、ルール番号2のIMOは、asciiからfpまたはfpからascii(printf、scanfなど)に関係する必要があります。ハードウェアよりも精度とバグの問題があります。
ハードウェア (密度) が新世代になるたびに、太陽の影響がより顕著になります。惑星表面の SEU にはすでに問題があるため、浮動小数点計算とは別に、問題が発生することになります (気にするベンダーはほとんどいないため、新しいハードウェアではより頻繁にクラッシュすることが予想されます)。
膨大な量のロジックを消費することにより、fpu は非常に高速 (1 クロック サイクル) になる可能性があります。整数 alu より遅くはありません。これを最新の fpu と混同しないでください。fpu は高価です。(同様に、乗算と除算のためにより多くのロジックを消費して、それを1クロックサイクルに減らしますが、fpuほど大きくはありません)。
上記の単純なルールを守り、浮動小数点をもう少し勉強し、浮動小数点に伴ういぼやトラップを理解してください。無限大または nans を定期的にチェックすることをお勧めします。問題は、ハードウェアよりもコンパイラとオペレーティング システムで見つかる可能性が高くなります (一般に、fp 数学だけではありません)。現代のハードウェア (およびソフトウェア) は、定義上、最近ではバグだらけです。