Mercurial > cpython-lru_cache-weakref
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) {
