Deprecated since release 2.2. See the references at the end of this section for
information about packages which provide similar functionality. This module will be removed
in Python 2.3.
This is an optional module. It is only available when Python is configured to include it,
which requires that the GNU MP software is installed.
This module implements the interface to part of the GNU MP library, which defines arbitrary
precision integer and rational number arithmetic routines. Only the interfaces to the integer
(mpz_*()) routines are provided. If not stated otherwise, the
description in the GNU MP documentation can be applied.
Support for rational numbers
can be implemented in Python. For an example, see the Rat
module, provided as Demos/classes/Rat.py in the Python source
In general, mpz-numbers can be used just like other standard Python
numbers, e.g., you can use the built-in operators like
as well as the standard built-in functions like abs(), int(), ..., divmod(), pow().
Please note: the bitwise-xor operation has been implemented as a bunch of ands,
inverts and ors, because the library lacks an mpz_xor()
function, and I didn't need one.
You create an mpz-number by calling the function mpz() (see below
for an exact description). An mpz-number is printed like this:
- Create a new mpz-number. value can be an integer, a long, another mpz-number,
or even a string. If it is a string, it is interpreted as an array of radix-256 digits,
least significant digit first, resulting in a positive number. See also the binary() method, described below.
- The type of the objects returned by mpz() and most other
functions in this module.
A number of extra functions are defined in this module. Non mpz-arguments are
converted to mpz-values first, and the functions return mpz-numbers.
||base, exponent, modulus)
pow(base, exponent) % modulus. If
== 0, return
mpz(1). In contrast to the C library function, this
version can handle negative exponents.
- Return the greatest common divisor of op1 and op2.
- Return a tuple
(g, s, t), such that
+ b*t == g == gcd(a, b).
- Return the square root of op. The result is rounded towards zero.
- Return a tuple
(root, remainder), such that
+ remainder == op.
||numerator, denominator, modulus)
- Returns a number q such that
q * denominator % modulus
== numerator. One could also implement this function in Python, using gcdext().
An mpz-number has one method:
- Convert this mpz-number to a binary string, where the number has been stored as an array
of radix-256 digits, least significant digit first.
The mpz-number must have a value greater than or equal to zero, otherwise ValueError will be raised.