Recently I needed some information about the floating point numbers on my machine. So I wrote a tiny C99 program with the line
printf("%a\n", DBL_EPSILON); The answer was "0x1p-52". A search of comp.lang.python shows that I was not alone. Here are some ideas. 1. Add to Python the constants in "float.h" and "limits.h". 2. Add the C99 "%a" format to the "%" operator for strings and allow it in floating point literals. 3. Add full "tostring" and "fromstring" capabilities for Python numeric types. "tostring(x)" would return a string containing the binary representation of x. For example, if x is a Python float, "tostring(x)" would have eight characters. "fromstring(s, atype)" does the reserve, so fromstring(tostring(x), type(x)) == x 4. Add some functions that process floating point types at a low level. I suggest borrowing from C (mantissa, exponent) = frexp(x) where mantissa is a float and exponent is an int. The mantissa can be 0.0 or 0.5 <= mantissa < 1.0. Also x = mamtissa * 2**exponent. If x == 0.0, the function returns (0.0, 0). (This is almost a quote from Harbison and Steele.) 5. Add the C99 constants and functions involving special floating point values: "FP_INFINITE", "FP_NAN", "FP_NORMAL", "FP_SUBNORMAL", "FP_ZERO", "fpclassify", "isfinite", "isinf", "isnan", "isnormal", "signbit", "copysign", "nan", "nextafter", and "nexttoward". There has been controversy about these in the past, but I am in favor of them. The documentation should discuss portability. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com