cpython/Modules/_decimal
Stefan Krah 0774e9b9f5 Raise InvalidOperation if exponents of zeros are clamped during exact
conversion in the Decimal constructor. Exact here refers to the
representation and not to the value (clamping does not change the value).
2012-04-05 15:21:58 +02:00
..
libmpdec Use abort() rather than exit() to appease tools like rpmlint. abort() is used 2012-03-30 14:12:20 +02:00
tests Raise InvalidOperation if exponents of zeros are clamped during exact 2012-04-05 15:21:58 +02:00
_decimal.c Raise InvalidOperation if exponents of zeros are clamped during exact 2012-04-05 15:21:58 +02:00
docstrings.h Issue #7652: Integrate the decimal floating point libmpdec library to speed 2012-03-21 18:25:23 +01:00
ISSUES.txt Issue #7652: Integrate the decimal floating point libmpdec library to speed 2012-03-21 18:25:23 +01:00
README.txt Issue #7652: Integrate the decimal floating point libmpdec library to speed 2012-03-21 18:25:23 +01:00


About
=====

_decimal.c is a wrapper for the libmpdec library. libmpdec is a fast C
library for correctly-rounded arbitrary precision decimal floating point
arithmetic. It is a complete implementation of Mike Cowlishaw/IBM's
General Decimal Arithmetic Specification.


Build process for the module
============================

As usual, the build process for _decimal.so is driven by setup.py in the top
level directory. setup.py autodetects the following build configurations:

   1) x64         - 64-bit Python, x86_64 processor (AMD, Intel)

   2) uint128     - 64-bit Python, compiler provides __uint128_t (gcc)

   3) ansi64      - 64-bit Python, ANSI C

   4) ppro        - 32-bit Python, x86 CPU, PentiumPro or later

   5) ansi32      - 32-bit Python, ANSI C

   6) ansi-legacy - 32-bit Python, compiler without uint64_t

   7) universal   - Mac OS only (multi-arch)


It is possible to override autodetection by exporting:

   PYTHON_DECIMAL_WITH_MACHINE=value, where value is one of the above options.


NOTE
====
 
decimal.so is not built from a static libmpdec.a since doing so led to
failures on AIX (user report) and Windows (mixing static and dynamic CRTs
causes locale problems and more).