51c586b89d
GNU MP is a library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers. It has a rich set of functions, and the functions have a regular interface. GMP is necessary for GCC >= 4.2.
587 lines
23 KiB
Plaintext
587 lines
23 KiB
Plaintext
Copyright 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
|
|
2009, 2010, 2011 Free Software Foundation, Inc.
|
|
|
|
Verbatim copying and distribution of this entire article is permitted
|
|
in any medium, provided this notice is preserved.
|
|
|
|
|
|
Changes between GMP version 5.0.1 and 5.0.2
|
|
|
|
BUGS FIXED
|
|
* Many minor bugs related to portability fixed.
|
|
|
|
* The support for HPPA 2.0N now works, after an assembly bug fix.
|
|
|
|
* A test case type error has been fixed. The symptom of this bug
|
|
was spurious 'make check' failures.
|
|
|
|
SPEEDUPS
|
|
* None, except indirectly through recognition of new CPUs.
|
|
|
|
FEATURES
|
|
* Fat builds are now supported for 64-bit x86 processors also under Darwin.
|
|
|
|
MISC
|
|
* None.
|
|
|
|
|
|
Changes between GMP version 5.0.0 and 5.0.1
|
|
|
|
BUGS FIXED
|
|
* Fat builds fixed.
|
|
|
|
* Fixed crash for huge multiplies when old FFT_TABLE2 type of parameter
|
|
selection tables' sentinel was smaller than multiplied operands.
|
|
|
|
* The solib numbers now reflect the removal of the documented but preliminary
|
|
mpn_bdivmod function; we correctly flag incompatibility with GMP 4.3.
|
|
GMP 5.0.0 has this wrong, and should perhaps be uninstalled to avoid
|
|
confusion.
|
|
|
|
SPEEDUPS
|
|
* Multiplication of large numbers has indirectly been sped up through
|
|
better FFT tuning and processor recognition. Since many operations
|
|
depend on multiplication, there will be a general speedup.
|
|
|
|
FEATURES
|
|
* More Core i3, i5 an Core i7 processor models are recognised.
|
|
|
|
* Fixes and workarounds for Mac OS quirks should make this GMP version
|
|
build using many of the different versions of "Xcode".
|
|
|
|
MISC
|
|
* The amount of scratch memory needed for multiplication of huge numbers
|
|
have been reduced substantially (but is still larger than in GMP 4.3.)
|
|
|
|
* Likewise, the amount of scratch memory needed for division of large
|
|
numbers have been reduced substantially.
|
|
|
|
* The FFT tuning code of tune/tuneup.c has been completely rewritten,
|
|
and new, large FFT parameter selection tables are provided for many
|
|
machines.
|
|
|
|
* Upgraded to the latest autoconf, automake, libtool.
|
|
|
|
|
|
Changes between GMP version 4.3.X and 5.0.0
|
|
|
|
BUGS FIXED
|
|
* None (contains the same fixes as release 4.3.2).
|
|
|
|
SPEEDUPS
|
|
* Multiplication has been overhauled:
|
|
(1) Multiplication of larger same size operands has been improved with
|
|
the addition of two new Toom functions and a new internal function
|
|
mpn_mulmod_bnm1 (computing U * V mod (B^n-1), B being the word base.
|
|
This latter function is used for the largest products, waiting for a
|
|
better Schoenhage-Strassen U * V mod (B^n+1) implementation.
|
|
(2) Likewise for squaring.
|
|
(3) Multiplication of different size operands has been improved with the
|
|
addition of many new Toom function, and by selecting underlying
|
|
functions better from the main multiply functions.
|
|
|
|
* Division and mod have been overhauled:
|
|
(1) Plain "schoolbook" division is reimplemented using faster quotient
|
|
approximation.
|
|
(2) Division Q = N/D, R = N mod D where both the quotient and remainder
|
|
are needed now runs in time O(M(log(N))). This is an improvement of
|
|
a factor log(log(N))
|
|
(3) Division where just the quotient is needed is now O(M(log(Q))) on
|
|
average.
|
|
(4) Modulo operations using Montgomery REDC form now take time O(M(n)).
|
|
(5) Exact division Q = N/D by means of mpz_divexact has been improved
|
|
for all sizes, and now runs in time O(M(log(N))).
|
|
|
|
* The function mpz_powm is now faster for all sizes. Its complexity has
|
|
gone from O(M(n)log(n)m) to O(M(n)m) where n is the size of the modulo
|
|
argument and m is the size of the exponent. It is also radically
|
|
faster for even modulus, since it now partially factors such modulus
|
|
and performs two smaller modexp operations, then uses CRT.
|
|
|
|
* The internal support for multiplication yielding just the lower n limbs
|
|
has been improved by using Mulders' algorithm.
|
|
|
|
* Computation of inverses, both plain 1/N and 1/N mod B^n have been
|
|
improved by using well-tuned Newton iterations, and wrap-around
|
|
multiplication using mpn_mulmod_bnm1.
|
|
|
|
* A new algorithm makes mpz_perfect_power_p asymptotically faster.
|
|
|
|
* The function mpz_remove uses a much faster algorithm, is better tuned,
|
|
and also benefits from the division improvements.
|
|
|
|
* Intel Atom and VIA Nano specific optimisations.
|
|
|
|
* Plus hundreds of smaller improvements and tweaks!
|
|
|
|
FEATURES
|
|
* New mpz function: mpz_powm_sec for side-channel quiet modexp
|
|
computations.
|
|
|
|
* New mpn functions: mpn_sqr, mpn_and_n, mpn_ior_n, mpn_xor_n, mpn_nand_n,
|
|
mpn_nior_n, mpn_xnor_n, mpn_andn_n, mpn_iorn_n, mpn_com, mpn_neg,
|
|
mpn_copyi, mpn_copyd, mpn_zero.
|
|
|
|
* The function mpn_tdiv_qr now allows certain argument overlap.
|
|
|
|
* Support for fat binaries for 64-bit x86 processors has been added.
|
|
|
|
* A new type, mp_bitcnt_t for bignum bit counts, has been introduced.
|
|
|
|
* Support for Windows64 through mingw64 has been added.
|
|
|
|
* The cofactors of mpz_gcdext and mpn_gcdext are now more strictly
|
|
normalised, returning to how GMP 4.2 worked. (Note that also release
|
|
4.3.2 has this change.)
|
|
|
|
MISC
|
|
* The mpn_mul function should no longer be used for squaring,
|
|
instead use the new mpn_sqr.
|
|
|
|
* The algorithm selection has been improved, the number of thresholds have
|
|
more than doubled, and the tuning and use of existing thresholds have
|
|
been improved.
|
|
|
|
* The tune/speed program can measure many of new functions.
|
|
|
|
* The mpn_bdivmod function has been removed. We do not consider this an
|
|
incompatible change, since the function was marked as preliminary.
|
|
|
|
* The testsuite has been enhanced in various ways.
|
|
|
|
|
|
Changes between GMP version 4.3.1 and 4.3.2
|
|
|
|
Bugs:
|
|
* Fixed bug in mpf_eq.
|
|
* Fixed overflow issues in mpz_set_str, mpz_inp_str, mpf_set_str, and
|
|
mpf_get_str.
|
|
* Avoid unbounded stack allocation for unbalanced multiplication.
|
|
* Fixed bug in FFT multiplication.
|
|
|
|
Speedups:
|
|
* None, except that proper processor recognition helps affected processors.
|
|
|
|
Features:
|
|
* Recognise more "Core 2" processor variants.
|
|
* The cofactors of mpz_gcdext and mpn_gcdext are now more strictly
|
|
normalised, returning to how GMP 4.2 worked.
|
|
|
|
|
|
Changes between GMP version 4.3.0 and 4.3.1
|
|
|
|
Bugs:
|
|
* Fixed bug in mpn_gcdext, affecting also mpz_gcdext and mpz_invert.
|
|
The bug could cause a cofactor to have a leading zero limb, which
|
|
could lead to crashes or miscomputation later on.
|
|
* Fixed some minor documentation issues.
|
|
|
|
Speedups:
|
|
* None.
|
|
|
|
Features:
|
|
* Workarounds for various issues with Mac OS X's build tools.
|
|
* Recognise more IBM "POWER" processor variants.
|
|
|
|
|
|
Changes between GMP version 4.2.X and 4.3.0
|
|
|
|
Bugs:
|
|
* Fixed bug in mpz_perfect_power_p with recognition of negative perfect
|
|
powers that can be written both as an even and odd power.
|
|
* We might accidentally have added bugs since there is a large amount of
|
|
new code in this release.
|
|
|
|
Speedups:
|
|
* Vastly improved assembly code for x86-64 processors from AMD and Intel.
|
|
* Major improvements also for many other processor families, such as
|
|
Alpha, PowerPC, and Itanium.
|
|
* New sub-quadratic mpn_gcd and mpn_gcdext, as well as improved basecase
|
|
gcd code.
|
|
* The multiply FFT code has been slightly improved.
|
|
* Balanced multiplication now uses 4-way Toom in addition to schoolbook,
|
|
Karatsuba, 3-way Toom, and FFT.
|
|
* Unbalanced multiplication has been vastly improved.
|
|
* Improved schoolbook division by means of faster quotient approximation.
|
|
* Several new algorithms for division and mod by single limbs, giving
|
|
many-fold speedups.
|
|
* Improved nth root computations.
|
|
* The mpz_nextprime function uses sieving and is much faster.
|
|
* Countless minor tweaks.
|
|
|
|
Features:
|
|
* Updated support for fat binaries for x86_32 include current processors
|
|
* Lots of new mpn internal interfaces. Some of them will become public
|
|
in a future GMP release.
|
|
* Support for the 32-bit ABI under x86-apple-darwin.
|
|
* x86 CPU recognition code should now default better for future
|
|
processors.
|
|
* The experimental nails feature does not work in this release, but
|
|
it might be re-enabled in the future.
|
|
|
|
Misc:
|
|
* The gmp_version variable now always contains three parts. For this
|
|
release, it is "4.3.0".
|
|
|
|
|
|
Changes between GMP version 4.2.3 and 4.2.4
|
|
|
|
Bugs:
|
|
* Fix bug with parsing exponent '+' sign in mpf.
|
|
* Fix an allocation bug in mpf_set_str, also affecting mpf_init_set_str, and
|
|
mpf_inp_str.
|
|
|
|
Speedups:
|
|
* None, except that proper processor recognition helps affected processors.
|
|
|
|
Features:
|
|
* Recognize new AMD processors.
|
|
|
|
|
|
Changes between GMP version 4.2.2 and 4.2.3
|
|
|
|
Bugs:
|
|
* Fix x86 CPU recognition code to properly identify recent AMD and Intel
|
|
64-bit processors.
|
|
* The >> operator of the C++ wrapper gmpxx.h now does floor rounding, not
|
|
truncation.
|
|
* Inline semantics now follow the C99 standard, and works with recent GCC
|
|
releases.
|
|
* C++ bitwise logical operations work for more types.
|
|
* For C++, gmp.h now includes cstdio, improving compiler compatibility.
|
|
* Bases > 36 now work properly in mpf_set_str.
|
|
|
|
Speedups:
|
|
* None, except that proper processor recognition helps affected processors.
|
|
|
|
Features:
|
|
* The allocation functions now detect overflow of the mpz_t type. This means
|
|
that overflow will now cause an abort, except when the allocation
|
|
computation itself overflows. (Such overflow can probably only happen in
|
|
powering functions; we will detect powering overflow in the future.)
|
|
|
|
|
|
Changes between GMP version 4.2.1 and 4.2.2
|
|
|
|
* License is now LGPL version 3.
|
|
|
|
Bugs:
|
|
* Shared library numbers corrected for libcxx.
|
|
* Fixed serious bug in gmpxx.h where a=a+b*c would generate garbage.
|
|
Note that this only affects C++ programs.
|
|
* Fix crash in mpz_set_d for arguments with large negative exponent.
|
|
* Fix 32-bit ABI bug with Itanium assembly for popcount and hamdist.
|
|
* Fix assembly syntax problem for powerpc-ibm-aix with AIX native assembler.
|
|
* Fix problems with x86 --enable-fat, where the compiler where told to
|
|
generate code for the build machine, not plain i386 code as it should.
|
|
* Improved recognition of powerpc systems wrt Altivec/VMX capability.
|
|
* Misc minor fixes, mainly workarounds for compiler/assembler bugs.
|
|
|
|
Speedups:
|
|
* "Core 2" and Pentium 4 processors, running in 64-bit mode will get a
|
|
slight boost as they are now specifically recognized.
|
|
|
|
Features:
|
|
* New support for x86_64-solaris
|
|
* New, rudimentary support for x86-apple-darwin and x86_64-apple-darwin.
|
|
(Please see http://gmplib.org/macos.html for more information.)
|
|
|
|
|
|
Changes between GMP version 4.2 and 4.2.1
|
|
|
|
Bugs:
|
|
* Shared library numbers corrected.
|
|
* Broken support for 32-bit AIX fixed.
|
|
* Misc minor fixes.
|
|
|
|
Speedups:
|
|
* Exact division (mpz_divexact) now falls back to plain division for large
|
|
operands.
|
|
|
|
Features:
|
|
* Support for some new systems.
|
|
|
|
|
|
Changes between GMP version 4.1.4 and 4.2
|
|
|
|
Bugs:
|
|
* Minor bug fixes and code generalizations.
|
|
* Expanded and improved test suite.
|
|
|
|
Speedups:
|
|
* Many minor optimizations, too many to mention here.
|
|
* Division now always subquadratic.
|
|
* Computation of n-factorial much faster.
|
|
* Added basic x86-64 assembly code.
|
|
* Floating-point output is now subquadratic for all bases.
|
|
* FFT multiply code now about 25% faster.
|
|
* Toom3 multiply code faster.
|
|
|
|
Features:
|
|
* Much improved configure.
|
|
* Workarounds for many more compiler bugs.
|
|
* Temporary allocations are now made on the stack only if small.
|
|
* New systems supported: HPPA-2.0 gcc, IA-64 HP-UX, PowerPC-64 Darwin,
|
|
Sparc64 GNU/Linux.
|
|
* New i386 fat binaries, selecting optimised code at runtime (--enable-fat).
|
|
* New build option: --enable-profiling=instrument.
|
|
* New memory function: mp_get_memory_functions.
|
|
* New Mersenne Twister random numbers: gmp_randinit_mt, also now used for
|
|
gmp_randinit_default.
|
|
* New random functions: gmp_randinit_set, gmp_urandomb_ui, gmp_urandomm_ui.
|
|
* New integer functions: mpz_combit, mpz_rootrem.
|
|
* gmp_printf etc new type "M" for mp_limb_t.
|
|
* gmp_scanf and friends now accept C99 hex floats.
|
|
* Numeric input and output can now be in bases up to 62.
|
|
* Comparisons mpz_cmp_d, mpz_cmpabs_d, mpf_cmp_d recognise infinities.
|
|
* Conversions mpz_get_d, mpq_get_d, mpf_get_d truncate towards zero,
|
|
previously their behaviour was unspecified.
|
|
* Fixes for overflow issues with operands >= 2^31 bits.
|
|
|
|
Caveats:
|
|
* mpfr is gone, and will from now on be released only separately. Please see
|
|
www.mpfr.org.
|
|
|
|
|
|
Changes between GMP version 4.1.3 and 4.1.4
|
|
|
|
* Bug fix to FFT multiplication code (crash for huge operands).
|
|
* Bug fix to mpf_sub (miscomputation).
|
|
* Support for powerpc64-gnu-linux.
|
|
* Better support for AMD64 in 32-bit mode.
|
|
* Upwardly binary compatible with 4.1.3, 4.1.2, 4.1.1, 4.1, 4.0.1, 4.0,
|
|
and 3.x versions.
|
|
|
|
|
|
Changes between GMP version 4.1.2 and 4.1.3
|
|
|
|
* Bug fix for FFT multiplication code (miscomputation).
|
|
* Bug fix to K6 assembly code for gcd.
|
|
* Bug fix to IA-64 assembly code for population count.
|
|
* Portability improvements, most notably functional AMD64 support.
|
|
* mpz_export allows NULL for countp parameter.
|
|
* Many minor bug fixes.
|
|
* mpz_export allows NULL for countp parameter.
|
|
* Upwardly binary compatible with 4.1.2, 4.1.1, 4.1, 4.0.1, 4.0, and 3.x
|
|
versions.
|
|
|
|
|
|
Changes between GMP version 4.1.1 and 4.1.2
|
|
|
|
* Bug fixes.
|
|
|
|
|
|
Changes between GMP version 4.1 and 4.1.1
|
|
|
|
* Bug fixes.
|
|
* New systems supported: NetBSD and OpenBSD sparc64.
|
|
|
|
|
|
Changes between GMP version 4.0.1 and 4.1
|
|
|
|
* Bug fixes.
|
|
* Speed improvements.
|
|
* Upwardly binary compatible with 4.0, 4.0.1, and 3.x versions.
|
|
* Asymptotically fast conversion to/from strings (mpz, mpq, mpn levels), but
|
|
also major speed improvements for tiny operands.
|
|
* mpn_get_str parameter restrictions relaxed.
|
|
* Major speed improvements for HPPA 2.0 systems.
|
|
* Major speed improvements for UltraSPARC systems.
|
|
* Major speed improvements for IA-64 systems (but still sub-optimal code).
|
|
* Extended test suite.
|
|
* mpfr is back, with many bug fixes and portability improvements.
|
|
* New function: mpz_ui_sub.
|
|
* New functions: mpz_export, mpz_import.
|
|
* Optimization for nth root functions (mpz_root, mpz_perfect_power_p).
|
|
* Optimization for extended gcd (mpz_gcdext, mpz_invert, mpn_gcdext).
|
|
* Generalized low-level number format, reserving a `nails' part of each
|
|
limb. (Please note that this is really experimental; some functions
|
|
are likely to compute garbage when nails are enabled.)
|
|
* Nails-enabled Alpha 21264 assembly code, allowing up to 75% better
|
|
performance. (Use --enable-nails=4 to enable it.)
|
|
|
|
|
|
Changes between GMP version 4.0 and 4.0.1
|
|
|
|
* Bug fixes.
|
|
|
|
|
|
Changes between GMP version 3.1.1 and 4.0
|
|
|
|
* Bug fixes.
|
|
* Speed improvements.
|
|
* Upwardly binary compatible with 3.x versions.
|
|
* New CPU support: IA-64, Pentium 4.
|
|
* Improved CPU support: 21264, Cray vector systems.
|
|
* Support for all MIPS ABIs: o32, n32, 64.
|
|
* New systems supported: Darwin, SCO, Windows DLLs.
|
|
* New divide-and-conquer square root algorithm.
|
|
* New algorithms chapter in the manual.
|
|
* New malloc reentrant temporary memory method.
|
|
* New C++ class interface by Gerardo Ballabio (beta).
|
|
* Revamped configure, featuring ABI selection.
|
|
* Speed improvements for mpz_powm and mpz_powm_ui (mainly affecting small
|
|
operands).
|
|
* mpz_perfect_power_p now properly recognizes 0, 1, and negative perfect
|
|
powers.
|
|
* mpz_hamdist now supports negative operands.
|
|
* mpz_jacobi now accepts non-positive denominators.
|
|
* mpz_powm now supports negative exponents.
|
|
* mpn_mul_1 operand overlap requirements relaxed.
|
|
* Float input and output uses locale specific decimal point where available.
|
|
* New gmp_printf, gmp_scanf and related functions.
|
|
* New division functions: mpz_cdiv_q_2exp, mpz_cdiv_r_2exp, mpz_divexact_ui.
|
|
* New divisibility tests: mpz_divisible_p, mpz_divisible_ui_p,
|
|
mpz_divisible_2exp_p, mpz_congruent_p, mpz_congruent_ui_p,
|
|
mpz_congruent_2exp_p.
|
|
* New Fibonacci function: mpz_fib2_ui.
|
|
* New Lucas number functions: mpz_lucnum_ui, mpz_lucnum2_ui.
|
|
* Other new integer functions: mpz_cmp_d, mpz_cmpabs_d, mpz_get_d_2exp,
|
|
mpz_init2, mpz_kronecker, mpz_lcm_ui, mpz_realloc2.
|
|
* New rational I/O: mpq_get_str, mpq_inp_str, mpq_out_str, mpq_set_str.
|
|
* Other new rational functions: mpq_abs, mpq_cmp_si, mpq_div_2exp,
|
|
mpq_mul_2exp, mpq_set_f.
|
|
* New float tests: mpf_integer_p, mpf_fits_sint_p, mpf_fits_slong_p,
|
|
mpf_fits_sshort_p, mpf_fits_uint_p, mpf_fits_ulong_p, mpf_fits_ushort_p.
|
|
* Other new float functions: mpf_cmp_d, mpf_get_default_prec, mpf_get_si,
|
|
mpf_get_ui, mpf_get_d_2exp.
|
|
* New random functions: gmp_randinit_default, gmp_randinit_lc_2exp_size.
|
|
* New demo expression string parser (see demos/expr).
|
|
* New preliminary perl interface (see demos/perl).
|
|
* Tuned algorithm thresholds for many more CPUs.
|
|
|
|
|
|
Changes between GMP version 3.1 and 3.1.1
|
|
|
|
* Bug fixes for division (rare), mpf_get_str, FFT, and miscellaneous minor
|
|
things.
|
|
|
|
|
|
Changes between GMP version 3.0 and 3.1
|
|
|
|
* Bug fixes.
|
|
* Improved `make check' running more tests.
|
|
* Tuned algorithm cutoff points for many machines. This will improve speed for
|
|
a lot of operations, in some cases by a large amount.
|
|
* Major speed improvements: Alpha 21264.
|
|
* Some speed improvements: Cray vector computers, AMD K6 and Athlon, Intel P5
|
|
and Pentium Pro/II/III.
|
|
* The mpf_get_prec function now works as it did in GMP 2.
|
|
* New utilities for auto-tuning and speed measuring.
|
|
* Multiplication now optionally uses FFT for very large operands. (To enable
|
|
it, pass --enable-fft to configure.)
|
|
* Support for new systems: Solaris running on x86, FreeBSD 5, HP-UX 11, Cray
|
|
vector computers, Rhapsody, Nextstep/Openstep, MacOS.
|
|
* Support for shared libraries on 32-bit HPPA.
|
|
* New integer functions: mpz_mul_si, mpz_odd_p, mpz_even_p.
|
|
* New Kronecker symbol functions: mpz_kronecker_si, mpz_kronecker_ui,
|
|
mpz_si_kronecker, mpz_ui_kronecker.
|
|
* New rational functions: mpq_out_str, mpq_swap.
|
|
* New float functions: mpf_swap.
|
|
* New mpn functions: mpn_divexact_by3c, mpn_tdiv_qr.
|
|
* New EXPERIMENTAL function layer for accurate floating-point arithmetic, mpfr.
|
|
To try it, pass --enable-mpfr to configure. See the mpfr subdirectory for
|
|
more information; it is not documented in the main GMP manual.
|
|
|
|
|
|
Changes between GMP version 3.0 and 3.0.1
|
|
|
|
* Memory leaks in gmp_randinit and mpz_probab_prime_p fixed.
|
|
* Documentation for gmp_randinit fixed. Misc documentation errors fixed.
|
|
|
|
|
|
Changes between GMP version 2.0 and 3.0
|
|
|
|
* Source level compatibility with past releases (except mpn_gcd).
|
|
* Bug fixes.
|
|
* Much improved speed thanks to both host independent and host dependent
|
|
optimizations.
|
|
* Switch to autoconf/automake/libtool.
|
|
* Support for building libgmp as a shared library.
|
|
* Multiplication and squaring using 3-way Toom-Cook.
|
|
* Division using the Burnikel-Ziegler method.
|
|
* New functions computing binomial coefficients: mpz_bin_ui, mpz_bin_uiui.
|
|
* New function computing Fibonacci numbers: mpz_fib_ui.
|
|
* New random number generators: mpf_urandomb, mpz_rrandomb, mpz_urandomb,
|
|
mpz_urandomm, gmp_randclear, gmp_randinit, gmp_randinit_lc_2exp,
|
|
gmp_randseed, gmp_randseed_ui.
|
|
* New function for quickly extracting limbs: mpz_getlimbn.
|
|
* New functions performing integer size tests: mpz_fits_sint_p,
|
|
mpz_fits_slong_p, mpz_fits_sshort_p, mpz_fits_uint_p, mpz_fits_ulong_p,
|
|
mpz_fits_ushort_p.
|
|
* New mpf functions: mpf_ceil, mpf_floor, mpf_pow_ui, mpf_trunc.
|
|
* New mpq function: mpq_set_d.
|
|
* New mpz functions: mpz_addmul_ui, mpz_cmpabs, mpz_cmpabs_ui, mpz_lcm,
|
|
mpz_nextprime, mpz_perfect_power_p, mpz_remove, mpz_root, mpz_swap,
|
|
mpz_tdiv_ui, mpz_tstbit, mpz_xor.
|
|
* New mpn function: mpn_divexact_by3.
|
|
* New CPU support: DEC Alpha 21264, AMD K6 and Athlon, HPPA 2.0 and 64,
|
|
Intel Pentium Pro and Pentium-II/III, Sparc 64, PowerPC 64.
|
|
* Almost 10 times faster mpz_invert and mpn_gcdext.
|
|
* The interface of mpn_gcd has changed.
|
|
* Better support for MIPS R4x000 and R5000 under Irix 6.
|
|
* Improved support for SPARCv8 and SPARCv9 processors.
|
|
|
|
|
|
Changes between GMP version 2.0 and 2.0.2
|
|
|
|
* Many bug fixes.
|
|
|
|
|
|
Changes between GMP version 1.3.2 and 2.0
|
|
|
|
* 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.
|