[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:78160] Re: optimization and accuracy with gcc


のざわです。

> 海老沢@グリーンベルトです。

以下を試していなければ、試してみてください。

> 大きなプログラムを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) では、起りましたが。

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: