- ベストアンサー
コンパイル環境の違いによる、浮動少数点の違い
不動少数(float)を使った、c言語の演算プログラムを作っています。 Aマシン(CentOS5, gcc3.4)でコンパイルした、"test_a.so"と"test_a.a"について、 Aマシンで実行した結果、両者の結果は一致します。 Bマシン(Fedora5, gcc3.0)でコンパイルした、"test_b.so"と"test_b.a"について、 Bマシンで実行した結果、両者の結果は一致します。 Aマシンで実行した結果、両者の結果が異なります。 結果の比較をすると、以下のようになります。 "test_a.so"=="test_a.a"!="test_b.so"!="test_b.a" (1)コンパイル環境と実行環境が違うと、浮動少数の演算に違いがでることがありますか? (2)コンパイル環境と実行環境が違うと、so と aに違いがでることがありますか? 上記2点について、ご存知の方いらっしゃいましたら教えてください。 お願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ちなみに、 "test_a.so"と"test_a.a"をBマシンで実行した結果はどうなりますか? 理屈だけで言えば、 ・コンパイルラによるの構文解析及び変換処理の違い ・実行ファイルが使用する浮動小数点ライブラリの違い で結果が変わる可能性はあります。
その他の回答 (2)
- jacta
- ベストアンサー率26% (845/3158)
(1)も(2)も、可能性としては「あります」としかいえません。 テストに用いたソースコード、コンパイルオプション、その他必要な情報を補足してください。
お礼
ご回答ありがとうございます。 すいません、具体的な情報は載せることができません。 可能性としてあることがわかれば、現時点でとりあえず問題解決できそうです。 (結果の違いによる誤差は問題ない範囲のため。) ありがとうございました。
- asuncion
- ベストアンサー率33% (2127/6289)
どんな計算をしたときに結果がどう異なるのか、具体的に示すことは可能ですか? なお、「浮動小数点数」が正しい呼び名です。「少」ではなくて「小」です。
補足
ご回答&補足ありがとうございます。 非常に膨大な計算をしているため、具体的に示すことはできません。 申し訳ございません。
お礼
ご回答ありがとうございます。 >"test_a.so"と"test_a.a"をBマシンで実行した結果はどうなりますか? 結果が一致しました。 一致することもあるみたいです。 環境により変わる可能性がある。ということがわかれば、 とりあえず現時点で問題は無いと判断できます。 ありがとうございました。