diff Python/pymath.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 f9f2ed79b00f
children c5c8680ee0b1
line wrap: on
line diff
--- a/Python/pymath.c	Thu Apr 16 18:37:24 2009 +0000
+++ b/Python/pymath.c	Thu Apr 16 19:52:09 2009 +0000
@@ -13,6 +13,28 @@
 }
 #endif
 
+#ifdef USING_X87_FPU
+#  ifdef HAVE_GCC_ASM_FOR_X87
+
+/* inline assembly for getting and setting the 387 FPU control word on
+   gcc/x86 */
+
+unsigned short _Py_get_387controlword(void) {
+    unsigned short cw;
+    __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
+    return cw;
+}
+
+void _Py_set_387controlword(unsigned short cw) {
+    __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
+}
+
+#  else
+#    error "Unable to get and set x87 control word"
+#  endif
+#endif
+
+
 #ifndef HAVE_HYPOT
 double hypot(double x, double y)
 {