57 lines
2.9 KiB
Plaintext
57 lines
2.9 KiB
Plaintext
|
NOTEWORTHY CHANGES IN GNU MP IN VERSION 2
|
||
|
|
||
|
* Division routines in the mpz class have changed. There are three classes of
|
||
|
functions, that rounds the quotient to -infinity, 0, and +infinity,
|
||
|
respectively. The first class of functions have names that begin with
|
||
|
mpz_fdiv (f is short for floor), the second class' names begin with mpz_tdiv
|
||
|
(t is short for trunc), and the third class' names begin with mpz_cdiv (c is
|
||
|
short for ceil).
|
||
|
|
||
|
The old division routines beginning with mpz_m are similar to the new
|
||
|
mpz_fdiv, with the exception that some of the new functions return useful
|
||
|
values.
|
||
|
|
||
|
The old function names can still be used. All the old functions names will
|
||
|
now do floor division, not trunc division as some of them used to. This was
|
||
|
changed to make the functions more compatible with common mathematical
|
||
|
practice.
|
||
|
|
||
|
The mpz_mod and mpz_mod_ui functions now compute the mathematical mod
|
||
|
function. I.e., the sign of the 2nd argument is ignored.
|
||
|
|
||
|
* The mpq assignment functions do not canonicalize their results. A new
|
||
|
function, mpq_canonicalize must be called by the user if the result is not
|
||
|
known to be canonical.
|
||
|
* The mpn functions are now documented. These functions are intended for
|
||
|
very time critical applications, or applications that need full control over
|
||
|
memory allocation. Note that the mpn interface is irregular and hard to
|
||
|
use.
|
||
|
* New functions for arbitrary precision floating point arithmetic. Names
|
||
|
begin with `mpf_'. Associated type mpf_t.
|
||
|
* New and improved mpz functions, including much faster GCD, fast exact
|
||
|
division (mpz_divexact), bit scan (mpz_scan0 and mpz_scan1), and number
|
||
|
theoretical functions like Jacobi (mpz_jacobi) and multiplicative inverse
|
||
|
(mpz_invert).
|
||
|
* New variable types (mpz_t and mpq_t) are available that makes syntax of
|
||
|
mpz and mpq calls nicer (no need for & before variables). The MP_INT and
|
||
|
MP_RAT types are still available for compatibility.
|
||
|
* Uses GNU configure. This makes it possible to choose target architecture
|
||
|
and CPU variant, and to compile into a separate object directory.
|
||
|
* Carefully optimized assembly for important inner loops. Support for DEC
|
||
|
Alpha, Amd 29000, HPPA 1.0 and 1.1, Intel pentium and generic x86, Intel
|
||
|
i960, Motorola MC68000, MC68020, MC88100, and MC88110, Motorola/IBM
|
||
|
PowerPC, National NS32000, IBM POWER, MIPS R3000, R4000, SPARCv7,
|
||
|
SuperSPARC, generic SPARCv8, and DEC VAX. Some support also for ARM,
|
||
|
Clipper, IBM ROMP (RT), and Pyramid AP/XP.
|
||
|
* Faster. Thanks to the assembler code, new algorithms, and general tuning.
|
||
|
In particular, the speed on machines without GCC is improved.
|
||
|
* Support for machines without alloca.
|
||
|
* Now under the LGPL.
|
||
|
|
||
|
INCOMPATIBILITIES BETWEEN GMP 1 AND GMP 2
|
||
|
|
||
|
* mpq assignment functions do not canonicalize their results.
|
||
|
* mpz division functions round differently.
|
||
|
* mpz mod functions now really compute mod.
|
||
|
* mpz_powm and mpz_powm_ui now really use mod for reduction.
|