Subject: CVS commit: pkgsrc/devel/gmp
From: Aleksej Saushev
Date: 2010-02-13 10:43:40
Message id: 20100213094340.8B56A175DF@cvs.netbsd.org

Log Message:
Update to GMP 5.0.1

Changes in GMP 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 in GMP 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 in GMP 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 improved 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.

Files:
RevisionActionfile
1.58modifypkgsrc/devel/gmp/Makefile
1.30modifypkgsrc/devel/gmp/distinfo
1.5removepkgsrc/devel/gmp/patches/patch-ad