From: shugo@... (Shugo Maeda) Date: 1998-03-12T02:01:24+09:00 Subject: [ruby-dev:1704] Re: [ruby-list:7057] Re: infinity 前田です。 In message "[ruby-dev:1697] Re: [ruby-list:7057] Re: infinity" Tadayoshi Funaba wrote: | tmp = 1.0; | inf = 1.0 / (tmp - tmp); これは、 inf = 1.0 / 0.0; とするのと、どのような違いがあるのでしょう。 |alpha では大域変数からコピー、infinity() があればそれを呼び出す、Linux |では HUGE_VAL をコピー、 それ以外では、1e+10 で初期化した変数に 1e+10 |を値が増加しなくなるまで繰り返し掛けていく、ということをやっています。 #ifdef HAVE_INFINITY static double INF = infinity(); #else #ifdef HUGE_VAL static double INF = HUGE_VAL; #else static double INF = 1.0 / 0.0; #endif /* HUGE_VAL */ #endif /* HAVE_INFINITY */ ぐらいで大丈夫な気もするのですが、そもそも 1.0 / 0.0 がInfにならない ような処理系は存在するのでしょうか。 -- 前田 修吾