On Feb 4, 7:52 pm, Scott David Daniels <scott.dani...@acm.org> wrote: > You are missing the whole thing that mes floating point tricky. > I _believe_ that the epsilon is the smallest positive x such that > 1.0 != 1.0 + x
Nitpick alert: this isn't quite the same thing, since that definition is affected by rounding. For example, if you're using IEEE 754 doubles but (somehow) you've got a round-half-up rounding mode then this makes epsilon 2**-53 rather than 2**-52, because 1 + 2**-53 rounds to 1 + 2**-52 != 1. (This confused the hell out of me many years ago when I was reading Numerical Recipes, and trying to figure out why on earth IEEE 754 and the VAX format had different epsilons even though both had 53-bit mantissas. The answer is that IEEE 754 uses round-half-even as standard, and VAX uses round-half-up. Oh, and the authors of Numerical Recipes used the 1 != 1+x definition...) Python's float_info.epsilon comes straight from C's DBL_EPSILON, which is defined very carefully in the C99 standard as: """the difference between 1 and the least value greater than 1 that is representable in the given floating point type""" (taking the 'given floating point type' to be double). Mark -- http://mail.python.org/mailman/listinfo/python-list