diff Python/sysmodule.c @ 53185:97ae7a709c1d

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
author Mark Dickinson <dickinsm@gmail.com>
date Thu, 16 Apr 2009 19:52:09 +0000
parents bb5de24a343f
children 1b15a57e1f02
line wrap: on
line diff
--- a/Python/sysmodule.c	Thu Apr 16 18:37:24 2009 +0000
+++ b/Python/sysmodule.c	Thu Apr 16 19:52:09 2009 +0000
@@ -1025,6 +1025,7 @@
 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 @@
 	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;