<200101022006.PAA27129 _at_ subaru.gsfc.nasa.gov>の記事において ebisawa _at_ subaru.gsfc.nasa.govさんは書きました。 > このように最適化によって計算精度が変わってくるのは、 > そういうもんなんでしょうかねえ。 そういうものだ、と思います。 > 問題となっているのは、 > このベクトルの長さをacosにいれていて、引数が1.0より > 大きいときに落ちる、ということです。上の例では最適化を > はずすしたら正しく動作していますが(ベクトルの長さが1)、 > そうならない場合もあります。最適化をはずすだけでは > 問題は解決しない、と。 > > こういう場合に賢い対処の方法というのは、どうしたもの > だろうか、と悩んでいます。開発はSolarisの上でやっていて、 > "acos(単位ベクトルどうしの内積)"、という記述はいたる > ところに出てくるので、ソースはできるだけ変更したくないのです。 acos() 呼ぶ前に引き数をチェックするルーチンを 入れるのが、普通 (というか常識) ではないでしょうか。 # 呼んだあとに errno が EDOM になってないか調べて # どうにかするのでもいいですけど :-) 浮動小数点演算機構を使っている以上、ソースで チェックを行わず、処理系の方に解決策を求めるのは ちょっと無理だと思います。 -- 中野@成蹊大
References:
- Prev by Subject: [linux-users:78156] Q:APCUPS BK350 can controll with Linux?
- Next by Subject: [linux-users:78158] Re: optimization and accuracy with gcc
- Previous by thread: [linux-users:78158] Re: optimization and accuracy with gcc
- Next by thread: [linux-users:78159] Re: optimization and accuracy with gcc
- Indexes:[Main][Thread]