浮動小数点の計算は、異なるプロセッサ上で異なることはできますか? (+ C#とCとの間のダブルスを通します)

StackOverflow https://stackoverflow.com/questions/2335529

質問

私にもいくつかのCコードを呼び出すC#で書かれたアプリケーションを持っています。 C#コードは、入力として、いくつかの二重を取得し、その上にいくつかの計算を実行し、その上に独自の計算を実行するネイティブ層に渡し、その後、バックC#の層に渡します。

私は別のマシンで同じEXE / DLLを(それらのすべては、Intelがx64のある)を実行する場合は、

、それは私が買ってあげる最終的な結果は、

?異なるマシン上に異なるものになる可能性があります
役に立ちましたか?

解決

あなたは、同じ実行可能ファイル(複数可)を使用している場合は、

結果は同じである必要があります。しかし、それは浮動小数点計算は、通常、永続的な設定の数(無限モード、丸めなどのモード)によって、高度にカスタマイズされていることは注目に値するです。この手段は、同じ浮動小数点命令は、設定の現在の組み合わせに応じて異なる結果を生成することができます。アプリケーションは、すべてのこれらの設定は、実行の開始時と同じ値にリセットされていることを確認した場合、結果は同じである必要があります。これらの設定の一部はリセット、または(環境変数のような)外部パラメータに依存していない場合は、その後、いくつかの状況では、異なるマシン上で異なる結果を観察してしまう可能性があります。

他のヒント

ハードウェア自体は、すべてのすべての彼らはIEEE浮動小数点演算を実装することを想定し、それを同じように行う必要がありますする必要があり、そして私が最も考える(すべて?)を行います。

http://en.wikipedia.org/wiki/IEEE_754-2008する

二重の定義があるとして

最近のほとんどのハードウェアは、標準化されています。あなたは、各変数のメモリフットプリントをチェックすることにより、両方が同じタイプを使用していることを確認することができます - 。例えばはsizeof(x)の

また、float.hの中で投票にいくつかの情報である必要があります。

私が覚えていることから、int型は、一貫性の観点より問題になる傾向があります。 4から2バイト、他の人にいくつかのデフォルトは、しかし、あなたはいつものサイズを確保するために長い間使用することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top