のざわです。 > 海老沢@グリーンベルトです。 以下を試していなければ、試してみてください。 > 大きなプログラムをSolarisからLinuxに移植していて、 > 計算精度に由来するエラーが起きていることがわかりました。 最適化で計算結果が違うことはよく体験します。 > 小数約16桁より下のほうで1.0からずれていて、これはおそらく > doubleで保障している精度以下なので、1.0と同一視してくれれば > いいのですが。そういうgccのオプションを探したのですが、ちょっと > 見つかりませんでした。 これでうまく行くとは限りませんが、 /usr/include/fpu_control.h か /usr/i386-glibc20-linux/include/fpu_control.h の(どちらなんだ) #define _FPU_DEFAULT 0x137f #define _FPU_IEEE 0x137f を(最近は 1372 ではないのですね)0x1272 にして、カーネルを再構築(だっ たかな?)で、再計算をしたら、どうでしょうか。 Intel の x86 系のチップを用いた場合の Linux では、浮動小数点の計算ではよ り精度を上げようとさせているため、他の OS での計算結果と一致しないことは、 昔から議論されていました。fj.os.linux や ML でも議論があったと思いますが、 すぐに探せませんでした。 ちなみに、上記のカーネルの再構築はしていませんが、UltraPenguin の SPARC/Linux では、「Your should not see this !」は発生しませんでした。 Linux/x68k (RedHat-5.2 base) では、起りましたが。
Follow-Ups:
- [linux-users:78161] Re: optimization and accuracy with gccmatuda
- [linux-users:78166] Re: optimization and accuracy with gccokumura
- Prev by Subject: [linux-users:78159] Re: optimization and accuracy with gcc
- Next by Subject: [linux-users:78161] Re: optimization and accuracy with gcc
- Previous by thread: [linux-users:78159] Re: optimization and accuracy with gcc
- Next by thread: [linux-users:78161] Re: optimization and accuracy with gcc
- Indexes:[Main][Thread]