Issue #1580: use short float repr where possible.

- incorporate and adapt David Gay's dtoa and strtod
   into the Python core
 - on platforms where we can use Gay's code (almost
   all!), repr(float) is based on the shortest
   sequence of decimal digits that rounds correctly.
 - add sys.float_repr_style attribute to indicate
   whether we're using Gay's code or not
 - add autoconf magic to detect and enable SSE2
   instructions on x86/gcc
 - slight change to repr and str:  repr switches
   to exponential notation at 1e16 instead of
   1e17, str switches at 1e11 instead of 1e12
This commit is contained in:
Mark Dickinson 2009-04-16 19:52:09 +00:00
parent 579b65c2d6
commit b08a53a99d
19 changed files with 3866 additions and 19 deletions

View file

@ -1025,6 +1025,7 @@ platform -- platform identifier\n\
executable -- pathname of this Python interpreter\n\
prefix -- prefix used to find the Python library\n\
exec_prefix -- prefix used to find the machine-specific Python library\n\
float_repr_style -- string indicating the style of repr() output for floats\n\
"
)
#ifdef MS_WINDOWS
@ -1428,6 +1429,15 @@ _PySys_Init(void)
FlagsType.tp_init = NULL;
FlagsType.tp_new = NULL;
/* float repr style: 0.03 (short) vs 0.029999999999999999 (legacy) */
#ifndef PY_NO_SHORT_FLOAT_REPR
SET_SYS_FROM_STRING("float_repr_style",
PyUnicode_FromString("short"));
#else
SET_SYS_FROM_STRING("float_repr_style",
PyUnicode_FromString("legacy"));
#endif
#undef SET_SYS_FROM_STRING
if (PyErr_Occurred())
return NULL;