From: EGUCHI Osamu Date: 1999-02-11T23:23:57+09:00 Subject: [ruby-dev:5024] Re: 10e9999.to_i (Re: compare to NaN (Re: call for finite/isnan testers)) えぐち@エスアンドイー です。 >>> On Thu, 11 Feb 1999 22:58:24 +0900, kjana@os.xaxon.ne.jp (YANAGAWA Kazuhisa) said: kjana> In message <199902102105.GAA28213@hanare00.math.sci.hokudai.ac.jp> kjana> gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) writes: kjana> kjana> > finite(x){ return x != x+1.0; } kjana> > isnan(x){ return x != x; } kjana> > kjana> > が一番ポータビリティがありそうなんですが,WATCOM C では kjana> > NaN を検知してくれないみたいですね. kjana> kjana> 「最適化によって消されてしまわないようにする必要があるかもしれません」 kjana> (C FAQ の浮動小数点演算のあたりより)ではなく? そうすると frexp() あたりで、生のビット表現をもぎ取ってきて 検証するしかないのでしょうか? double echo(double n) { return n; } isnan(double x){ return x != echo(x); } とすれば、まぁ殆んど大丈夫だと思いますが、 もしかして、これでもインライン最適化する程の DFA を予想しなければいけないですか? そうすると、echo 外部を外部リンケージにするしかないかな。 えぐち