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