pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/devel/gmp Update to GMP 5.0.1



details:   https://anonhg.NetBSD.org/pkgsrc/rev/4db9eff7fb1b
branches:  trunk
changeset: 571489:4db9eff7fb1b
user:      asau <asau%pkgsrc.org@localhost>
date:      Sat Feb 13 09:43:40 2010 +0000

description:
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.

diffstat:

 devel/gmp/Makefile         |   4 ++--
 devel/gmp/distinfo         |   9 ++++-----
 devel/gmp/patches/patch-ad |  17 -----------------
 3 files changed, 6 insertions(+), 24 deletions(-)

diffs (50 lines):

diff -r a669c45f6ad0 -r 4db9eff7fb1b devel/gmp/Makefile
--- a/devel/gmp/Makefile        Sat Feb 13 08:30:59 2010 +0000
+++ b/devel/gmp/Makefile        Sat Feb 13 09:43:40 2010 +0000
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.57 2009/08/16 13:42:33 wiz Exp $
+# $NetBSD: Makefile,v 1.58 2010/02/13 09:43:40 asau Exp $
 
-DISTNAME=      gmp-4.3.1
+DISTNAME=      gmp-5.0.1
 CATEGORIES=    devel math
 MASTER_SITES=  ${MASTER_SITE_GNU:=gmp/}
 EXTRACT_SUFX=  .tar.bz2
diff -r a669c45f6ad0 -r 4db9eff7fb1b devel/gmp/distinfo
--- a/devel/gmp/distinfo        Sat Feb 13 08:30:59 2010 +0000
+++ b/devel/gmp/distinfo        Sat Feb 13 09:43:40 2010 +0000
@@ -1,9 +1,8 @@
-$NetBSD: distinfo,v 1.29 2009/09/18 14:33:32 sketch Exp $
+$NetBSD: distinfo,v 1.30 2010/02/13 09:43:40 asau Exp $
 
-SHA1 (gmp-4.3.1.tar.bz2) = acbd1edc61230b1457e9742136994110e4f381b2
-RMD160 (gmp-4.3.1.tar.bz2) = f325d809dde1f87816eea3697bcfe00f3ec8f10d
-Size (gmp-4.3.1.tar.bz2) = 1881090 bytes
+SHA1 (gmp-5.0.1.tar.bz2) = 6340edc7ceb95f9015a758c7c0d196eb0f441d49
+RMD160 (gmp-5.0.1.tar.bz2) = 3e89ebf5294639e1c926b92d9786bbdd0c8fa587
+Size (gmp-5.0.1.tar.bz2) = 2006109 bytes
 SHA1 (patch-aa) = a53db34c8ecf38d6556a59a0fa7382456c30fab6
 SHA1 (patch-ab) = e768eca25c117871041d12a618e38d9d252f25e5
 SHA1 (patch-ac) = 9c7e6817632596bfd6c86a30e3b2d7f78fccd5ff
-SHA1 (patch-ad) = 618ccdbe8083a79229af119bd5963d5deeff0616
diff -r a669c45f6ad0 -r 4db9eff7fb1b devel/gmp/patches/patch-ad
--- a/devel/gmp/patches/patch-ad        Sat Feb 13 08:30:59 2010 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-$NetBSD: patch-ad,v 1.5 2009/09/18 14:33:32 sketch Exp $
-
---- gmp-h.in.orig      Fri Sep 18 15:20:31 2009
-+++ gmp-h.in   Fri Sep 18 15:21:05 2009
-@@ -463,12 +463,6 @@
- #define __GMP_EXTERN_INLINE  __inline
- #endif
- 
--/* Recent enough Sun C compilers accept "extern inline" */
--#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \
--  && ! defined (__GMP_EXTERN_INLINE)
--#define __GMP_EXTERN_INLINE  extern inline
--#endif
--
- /* Somewhat older Sun C compilers accept "static inline" */
- #if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \
-   && ! defined (__GMP_EXTERN_INLINE)



Home | Main Index | Thread Index | Old Index