I think this is probably is a case of 0.0 is not really 0. After all, as much as I might wish it were, a float is not a real. What we really have is the case mentioned before, that is 0.0 is really 0 + eta, where eta is some very small number which represents a precision error. Earlier, I was thrown off by the 0.0/0.0 case, because that would really be (0 + eta)/(0 + eta'), and since eta and eta' have similar magnitude this value should be around 1, even though we can't know what the number is, it certainly in a number. I'm not sure why the IEEE chose to define this case as NaN, I think it must have been shorthand for "undefined". As an interesting (to nerds ;-D) aside, there are several systems in which 1/0 is infinity, but they usually depend on fancy geometrical tricks, like making the reals occupy a circle or some more complicated form instead of a line. So that +infinity == -infinity. That way you can make the function f(x)=1/x be "well" defined everywhere. I don't like it, but, plenty of people do... -- Posted via http://www.ruby-forum.com/.