chromium / native_client / nacl-gcc / f80d6b9ee7f94755c697ffb7194fb01dd0c537dd / . / gmp-4.3.1 / NEWS

Copyright 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, | |

2009 Free Software Foundation, Inc. | |

This file is part of the GNU MP Library. | |

The GNU MP Library is free software; you can redistribute it and/or modify | |

it under the terms of the GNU Lesser General Public License as published by | |

the Free Software Foundation; either version 3 of the License, or (at your | |

option) any later version. | |

The GNU MP Library is distributed in the hope that it will be useful, but | |

WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |

or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |

License for more details. | |

You should have received a copy of the GNU Lesser General Public License | |

along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. | |

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

---------------- | |

Local variables: | |

mode: text | |

fill-column: 76 | |

End: |