On Sun, 07 Feb 2010 00:52:48 +0000, duncan smith wrote: > Hello, > I'm trying to find a clean and reliable way of uncovering > information about 'extremal' values for floats on versions of Python > earlier than 2.6 (just 2.5 actually). I don't want to add a dependence > on 3rd party modules just for this purpose. e.g. For the smallest > positive float I'm using,
Assuming that your architecture is based on binary floats: >>> x = 1.0/2 >>> while 0.0 + x != 0.0: ... smallest = x ... x /= 2.0 ... >>> smallest 4.9406564584124654e-324 which is the smallest number that can be distinguished from zero on my system. If you're running on some weird platform with non-binary floats (perhaps a Russian ternary mainframe, or an old supercomputer with decimal floats) then you're on your own. I calculated this using Python 2.5. In 2.6, I see this: >>> sys.float_info sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.2204460492503131e-16, radix=2, rounds=1) So there's obviously a difference between how I calculate the smallest number and what Python thinks. The reason for this is left as an exercise. -- Steven -- http://mail.python.org/mailman/listinfo/python-list