*** NEW GMP MODULE FOR PYTHON ***
This is release 0.95 of the new gmp module. To use it, you
also need the GNU Multiprecision Library, version 2.0 or better.
Changes since 0.94
* texinfo documentation written
* a few bugfixes
Changes since 0.93:
* gmp.digits() no longer dumps core
Changes since 0.92:
* A fatal off-by-one bug in conversion from mpz integers to python
longs is fixed.
* The constructor gmp.mpz can now take a string of digits and a base
as arguments. You no longer need to use longs when constructing mpz
integers from strings.
* A corresponding .digits(base) method is added.
gmp-2.0.2 is available at all GNU mirrors is available at
all gnu mirrors, for example ftp://lysator.liu.se/pub/gnu/gmp-2.0.2.tar.gz
This gmp module is an almost complete rewrite of the mpz module
distributed with Python. Most important differences:
* The code requires gmp-2.0. Work arounds for bugs in earlier
versions of the gmp library are removed.
* Modular exponentiation is no longer broken.
* Some optimizations for special cases involving the numbers 0 or 1 are
removed, for simplicity. Perhaps this or something better can be
put back later, if it turns out to be important for performance.
* New functions is_square() and is_prime(). (The latter is
probabilistic, but `is_probably_prime' is too awkward a name).
* Several methods of mpz objects are also available as functions.
* The source is adapted to the new python naming conventions.
* The source is cleaner and more straight-forward, in my opinion.
* The size of the source is reduced significantly.
Also, I changed the name, from mpz to gmp. This is because one may
want to add other gmp types; rational numbers and floats.
The gmp module should be compatible with the old mpz module. For 100%
source compatibility, simply do
import gmp
mpz=gmp
Or change all references to mpz to gmp. However, the modules are
incompatible in the sense that they can't be used at the same time. I
think this is beause of global state inside the gmp library, or memory
allocation, but I haven't investigated that thoroughly.
To install, put the file gmpmodule.c into the Python-1.3/Modules
directory, insert the lines
GMP-2.0=/path/to/gmp/installation
gmp gmpmodule.c -I$(GMP-2.0)/include -L$(GMP-2.0)/lib -lgmp
to the Setup file. Commenting out the old mpz module from the Setup
file is recommended. Then type make in the main Python build
directory.
Until the gmp module is incorporated into the official python source,
bugs can be reported to me. Bugs in the gmp-2.0 library should be
reported to bug-gmp@prep.ai.mit.edu, see the manual for details.
Of course, I appreciate not only bug report, but also any other
comments or improvements you may have.
Happy hacking,
/Niels Möller