From: Shugo Maeda Date: 2009-11-10T11:52:11+09:00 Subject: [ruby-core:26658] Re: [Feature #2347] Math::INFINITY Hi, 2009/11/10 Marc-Andre Lafortune : > I'm quite ignorant about the differences between compilers and implementations (and I wouldn't mind remaining this way! ;-) > > The fact is, Ruby _already_ generates infinities. Line 2471 of numeric.c: > > #define infinite_value() ruby_div0(1.0) FYI, I heard that some compilers doesn't permit zero divisions by literals, but the following code can be used to avoid the check: tmp = 1.0; inf = 1.0 / (tmp - tmp); GNU Octave has more complicated code to generate an infinity: volatile double tmp_inf; #if defined (SCO) volatile double tmp = 1.0; tmp_inf = 1.0 / (tmp - tmp); #elif defined (__alpha__) && defined (__osf__) extern unsigned int DINFINITY[2]; tmp_inf = (*(X_CAST(double *, DINFINITY))); #else double tmp = 1e+10; tmp_inf = tmp; for (;;) { tmp_inf *= 1e+10; if (tmp_inf == tmp) break; tmp = tmp_inf; } -- Shugo Maeda