From: Masahiro Tanaka Date: 2000-09-22T03:29:55+09:00 Subject: [ruby-talk:5051] Re: Proposal: Add constants to Math Hi, > Since we now have Float#nan? and Float#infinite? I think the following > constants should be added to Math (or Float?) for completeness: > > NEGINF = Math.log(-1) # Or better way of generating NEGINF... > INF = -NEGINF > NAN = INF / INF I can see discussion on Float::NaN and INFINITY in old mailing list log ([ruby-dev:4760], etc.). The problem is it may depend on machine. I do not know current status. > A cautionary tale for users of dynamical languages such as Ruby: > > I had the constant definitions above in a unit test file but the test > cases kept failing no matter what I did. The problem was that I included > the NArray extension which in turn included Complex which redefined > Math.log so that it returned the correct complex number instead of > -Infinity above. Makes you think before changing the behavior of methods > in the standard distr... (and yes, I now know complex aliases Math.log to > Math.log!) I do not know how you use the NArray extension, but to avoid other readers confuse, I note: * NArray function module is NMath, not Math. * NMath.log(-1) returns -Infinity. % irb -r narray irb(main):001:0> NMath.log(-1) -Infinity irb(main):002:0> NMath.log(-1.0+0.im) Complex(0.0, 3.141592654) Masa Tanaka