diff options
author | Mark Dickinson <dickinsm@gmail.com> | 2009-04-16 19:52:09 (GMT) |
---|---|---|
committer | Mark Dickinson <dickinsm@gmail.com> | 2009-04-16 19:52:09 (GMT) |
commit | b08a53a99def3fa949643974f713b5b189e21bc7 (patch) | |
tree | 6f7663d510099fd7acfa328ae5a5c88e3eddb1a7 /Python/pymath.c | |
parent | 579b65c2d695eb468fb97568ff7d2ad9d261b2b3 (diff) | |
download | cpython-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/pymath.c')
-rw-r--r-- | Python/pymath.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Python/pymath.c b/Python/pymath.c index 5d09b4c..2e049be 100644 --- a/Python/pymath.c +++ b/Python/pymath.c @@ -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) { |