summaryrefslogtreecommitdiffstats
path: root/Python/sysmodule.c
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2009-04-16 19:52:09 (GMT)
committerMark Dickinson <dickinsm@gmail.com>2009-04-16 19:52:09 (GMT)
commitb08a53a99def3fa949643974f713b5b189e21bc7 (patch)
tree6f7663d510099fd7acfa328ae5a5c88e3eddb1a7 /Python/sysmodule.c
parent579b65c2d695eb468fb97568ff7d2ad9d261b2b3 (diff)
downloadcpython-b08a53a99def3fa949643974f713b5b189e21bc7.zip
cpython-b08a53a99def3fa949643974f713b5b189e21bc7.tar.gz
cpython-b08a53a99def3fa949643974f713b5b189e21bc7.tar.bz2
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
Diffstat (limited to 'Python/sysmodule.c')
-rw-r--r--Python/sysmodule.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 443d8eb..262f5a1 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -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;