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

@ -13,6 +13,28 @@ double _Py_force_double(double x)
}
#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)
{