fix getsup (HH)
[luatex.git] / source / libs / gmp / gmp-src / ChangeLog
blob7956d943c4715717a08e8d009b71cb1cc46583e0
1 2016-12-16  Torbjörn Granlund  <tg@gmplib.org>
3         * Version 6.1.2 released.
5 2016-12-13  Torbjörn Granlund  <tg@gmplib.org>
7         * longlong.h: Test LONGLONG_STANDALONE in two more places.
9 2016-12-07  Torbjörn Granlund  <tg@gmplib.org>
11         * gmp-h.in: Check yet another symbol for FILE.
13 2016-12-02  Torbjörn Granlund  <tg@gmplib.org>
15         Merge configure changes from before 6.1.1:
17         2016-03-25  Torbjörn Granlund  <torbjorng@google.com>
19         * config.guess: Prefix all arm CPUs with "arm" to accommodate our
20         matchers.
21         * configure.ac (arm): Match arm CPUs consistently.
23         2016-03-21  Torbjörn Granlund  <torbjorng@google.com>
25         * configure.ac: Support many arm64 processors.
27         2016-03-20  Torbjörn Granlund  <torbjorng@google.com>
29         * config.guess (arm*): Handle big.LITTLE CPUs by extracting the
30         lexically largest id.
31         * config.guess (arm*): Add many aarch64 CPUs.
32         * config.guess (main): Corresponding changes.
34         * configure.ac (arm*): Support cortex-a5 better.
36         2016-01-15  Torbjörn Granlund  <torbjorng@google.com>
38         * config.guess (s390): Don't assume /proc/cpuinfo exists.
40         2016-01-13  Torbjörn Granlund  <torbjorng@google.com>
42         * config.guess: Reorder and generalise ppc code.
44 2016-12-01  Torbjörn Granlund  <tg@gmplib.org>
46         * tests/misc.c (tests_rand_start): Make shift well-defined.
48         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
49         * gmp-h.in: Bump version.
51 2016-11-29  Torbjörn Granlund  <tg@gmplib.org>
53         * gmp-h.in (__GNU_MP__): Bump.
55         * mpz/inp_raw.c: Rewrite size computation to avoid overflow.
57         * mpz/kronsz.c: Use ABS_CAST to avoid undefined code.
59 2016-11-27  Torbjörn Granlund  <tg@gmplib.org>
61         * tune/time.c (cgt_works_p): Add a missing verbosity check.
63         * configure.ac: Make udiv_w_sdiv use conditional on enable_assembly.
65 2016-11-25  Marc Glisse  <marc.glisse@inria.fr>
67         * tests/cxx/t-ops2.cc (checkz): Avoid left shift of negative number.
69 2016-11-22  Torbjörn Granlund  <tg@gmplib.org>
71         * configure.ac (x86): Define LINUX for GNU/Linux systems.
72         * mpn/x86_64/fat/fat_entry.asm: Set PRETEND_PIC for GNU/Linux.
74 2016-11-21  Torbjörn Granlund  <tg@gmplib.org>
76         * acinclude.m4 (mpn_lshift_com optimization 2): Make it well-defined
77         also for 32-bit systems.
78         (mpn_lshift_com optimization 2): Free allocated memory.
80 2016-11-01  Torbjörn Granlund  <tg@gmplib.org>
82         * mpn/generic/dive_1.c: Remove a forgotten dummy while-loop.  (Spotted
83         by Peter Barfuss.)
85 2016-10-31   Oleg Oshmyan  <chortos@inbox.lv>
87         * gmp-impl.h (x86_64 MPN_IORD_U): Use proper asm constraint.
89 2016-10-24  Torbjörn Granlund  <tg@gmplib.org>
91         * config.guess: Recognise Itanium Poulson.
93 2016-10-15  Torbjörn Granlund  <tg@gmplib.org>
95         * configure.ac (arm*-*-*): Amend last change.
97 2016-10-14  Torbjörn Granlund  <tg@gmplib.org>
99         * configure.ac
100         (arm*-*-*): Rewrite arm support to handle armv8 CPUs in 32-bit mode.
102 2016-08-24  Vlad Zakharov <vzakhar@synopsys.com>
104         * longlong.h (arc add_ssaaaa, sub_ddmmss): Replace obsolete 'J'
105         constraint with 'Cal'.
107 2016-08-22  Marc Glisse  <marc.glisse@inria.fr>
109         * longlong.h (umul_ppmm from __umulsidi3): Protect with do ...
110         while (0).
112 2016-06-18  Torbjörn Granlund  <tg@gmplib.org>
114         * Version 6.1.1 released.
116 2015-03-20  Marc Glisse  <marc.glisse@inria.fr>
118         * configure.ac (WANT_ASSEMBLY): Remove.
119         (NO_ASM): Remove from CFLAGS, add to AC_DEFINE.
120         * tests/misc.c: Test NO_ASM instead of WANT_ASSEMBLY.
122 2016-02-25  Pavel Kopyl  <p.kopyl@samsung.com>
124         * acinclude.m4 (GMP_ASM_UNDERSCORE): Tighten gurkmacka detection.
126 2016-01-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
128         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
129         * gmp-h.in: Bump version.
131 2016-01-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
133         * tests/cxx/clocale.c: Do not re-define localeconv for mingw.
134         * tests/misc/t-locale.c: Likewise (Thanks Alexander).
136 2015-12-26  Torbjörn Granlund  <torbjorng@google.com>
138         * tests/misc.c (tests_start): Assert library version.
140 2015-12-19  Marc Glisse  <marc.glisse@inria.fr>
142         * gmp-impl.h (fft_table_nk): Use gmp_uint_least32_t.
143         * mpn/generic/trialdiv.c (gmp_primes_ptab): Likewise.
145 2015-12-14  Torbjörn Granlund  <torbjorng@google.com>
147         * mpn/x86_64/fat/fat.c (gmp_workaround_skylake_cpuid_bug):
148         New function.
149         (__gmpn_cpuvec_init): Handle more BMI2 crippled CPUs.
151 2015-12-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
153         * tests/arm32call.asm: bx->ret to support thumb-less chips
154           (thanks Martin Husemann).
156 2015-12-13  Torbjörn Granlund  <torbjorng@google.com>
158         * config.sub: Fix spelling of kabylake.
159         * acinclude.m4: Likewise.
160         * mpn/x86_64/fat/fat.c: Likewise.
162 2015-12-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
164         * tests/misc/t-printf.c: Test a sequence of '%'.
165         * printf/doprnt.c: Avoid buffer overread with long long limbs.
167 2015-12-06  Torbjörn Granlund  <torbjorng@google.com>
169         * configure.ac (arm*): Conditionally define NOTHUMB.
170         Simplify and generalise.
171         * mpn/arm/arm-defs.m4 (ret): New macro, conditional on NOTHUMB.
172         * mpn/arm/*.asm: Use ret.
174 2015-12-03  Torbjörn Granlund  <torbjorng@google.com>
176         * config.guess: Work around skylake cpuid bug.
177         Fix spelling of kabylake.
179 2015-12-01  Torbjörn Granlund  <torbjorng@google.com>
181         * mpn/x86_64/coreibwl/mul_basecase.asm: Add FUNC_EXITs.
183 2015-11-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
185         * gmp-impl.h (MPN_TOOM22_MUL_MINSIZE): Consider ToomX2 limits
186           (thanks Paul).
187         * tests/mpn/t-toom22.c: Keep on testing small sizes.
189 2015-11-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
191         * Version 6.1.0 released.
193         * mpz/inits.c [__CHECKER__]: Init limb, not pointer.
194         * mpz/init.c [__CHECKER__]: Likewise (spotted by Vicente Benjumea).
195         * tests/mpf/t-pow_ui.c: Use another mpf for the size limit.
197 2015-10-30  Torbjörn Granlund  <torbjorng@google.com>
199         * mpf/pow_ui.c: Add log(e) precision bits.
201         * doc/gmp.texi (Floating-point): Rewrite mpf introduction.
203 2015-10-29 Marco Bodrato <bodrato@mail.dm.unipi.it>
205         * demos/factorize.c: mpz_div_2exp => mpz_tdiv_q_2exp.
206         * demos/perl/GMP.xs: Likewise.
207         * tests/mpf/t-pow_ui.c: Use reference value to check the size.
209         * mini-gmp/mini-gmp.c: Removed a typo (spotted by Paul Zimmermann).
210         * doc/gmp.texi (Floating-point): Remove "infinite precision" claim.
212         * gmp-h.in: Update version.
214 2015-10-28  Torbjörn Granlund  <torbjorng@google.com>
216         * tests/mpf/t-pow_ui.c: New file.
217         * tests/mpf/Makefile.am (check_PROGRAMS): Compile it.
219         * mpf/pow_ui.c: Rewrite for accuracy and performance.
221 2015-10-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
223         * configfsf.guess: Updated to version 2015-10-21, for a typo.
225         * tests/cxx/t-ops.cc (check_mpq): Compare also with mpz.
226         (check_mpf): Compare also with mpz and mpq.
228 2015-10-25  Torbjörn Granlund  <torbjorng@google.com>
230         * configure.ac: Avoid passing ambiguous -march=skylake.
232 2015-10-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
234         * Version 6.1.0-rc1 published.
236         * gmp-h.in: Revert version for RC.
238 2015-10-20  Torbjörn Granlund  <torbjorng@google.com>
240         * mpn/x86/pentium4/sse2/popcount.asm: Use LEAL.
241         * mpn/x86/k7/invert_limb.asm: Likewise.
243 2015-10-18  Torbjörn Granlund  <torbjorng@google.com>
245         * mpn/arm64/gmp-mparam.h: New file.
247 2015-10-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
249         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
250         * gmp-h.in: Bump version.
252 2015-10-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
254         * tests/mpf/t-cmp_si.c: Initialise a variable (only when error arise)
255         * mpn/generic/toom43_mul.c: Insert parentheses around & expressions.
256         * mpn/generic/toom52_mul.c: Likewise.
257         * tests/mpn/t-minvert.c: Remove an unused var.
258         * tests/mpz/t-cong_2exp.c: Likewise.
260 2015-10-16  Hans Wennborg <hwennborg at google.com>
262         * mpn/generic/div_qr_2.c: Insert parentheses around & expressions.
263         * mpn/generic/toom44_mul.c: Likewise.
264         * mpn/generic/toom53_mul.c: Likewise.
265         * mpn/generic/toom62_mul.c: Likewise.
266         * tests/mpn/t-bdiv.c: Simplify conditional printing of whitespace.
267         * tests/mpn/t-div.c: Likewise.
269 2015-10-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
271         * configfsf.sub: Updated to version 2015-08-20, from gnulib.
272         * configfsf.guess: Updated to version 2015-09-14, from gnulib.
274 2015-10-14  Torbjörn Granlund  <torbjorng@google.com>
276         * demos/pexpr.c (main): Clear out a variable.
278         * mpn/generic/sqrlo_basecase.c: Move things before addmul_1 to reduce
279         register pressure.
281         * .hgignore: Add 'compile' and 'test-driver'.
283         * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Simplify, add ASSERT.
284         * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise.
286         * tune/tuneup.c (tune_mu_bdiv): Start at measured BDIV_DC_ thresholds.
288 2015-10-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
290         * mpf/clears.c, mpf/inits.c, mpq/clears.c, mpq/inits.c,
291         * mpz/clears.c, mpz/inits.c: Keep on supporting empty list.
293 2015-10-13  Marc Glisse  <marc.glisse@inria.fr>
295         * gmpxx.h (__GMPP_DEFINE_BINARY_TYPE_FUNCTION): Allow mixed operations.
296         (__gmp_cmp_function, __gmp_binary_equal, __gmp_binary_less):
297         Handle mixed operations.
298         (__gmp_cmp_function): Move before __gmp_binary_equal.
300 2015-10-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
302         * mpf/pow_ui.c: Increased precision of partial results.
304 2015-10-12  Torbjörn Granlund  <torbjorng@google.com>
306         * configure.ac: Reject AVX for NetBSD.
308 2015-10-11  Torbjörn Granlund  <torbjorng@google.com>
310         * configure.ac (fat_path): Add skylake.
312 2015-10-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
314         * gen-fib.c: Correct the name of the program in error message.
315         * gen-fac.c: Likewise.
317         * mpf/get_str.c: Increase precision of base^e computation.
319 2015-10-09  Torbjörn Granlund  <torbjorng@google.com>
321         * config.guess: Recognise cabylake and goldmont and more versions of
322         skylake and silvermont.
323         * acinclude.m4 (X86_64_PATTERN): Add cabylake and goldmont.
324         * config.sub: Corresponding changes.
325         * configure.ac: Corresponding changes.
326         * mpn/x86_64/fat/fat.c: Corresponding changes.
328 2015-09-12  Torbjörn Granlund  <torbjorng@google.com>
330         * mpf/clear.c, mpf/clears.c, mpf/inits.c, mpq/clear.c, mpq/clears.c
331         * mpq/inits.c, mpz/clear.c, mpz/clears.c, mpz/inits.c:
332         Streamline, use macros.
334 2015-09-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
336         * mpz/cfdiv_r_2exp.c: Use mpn_neg and MPZ_NEWALLOC.
337         * mpz/cfdiv_q_2exp.c: Use MPZ_REALLOC return value.
339 2015-09-12  Torbjörn Granlund  <torbjorng@google.com>
341         * tests/mpf/t-cmp_si.c (check_data): Set precision reflecting data.
343 2015-09-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
345         * mpf/cmp_z.c: New file implementing mpf_cmp_z.
346         * mpf/Makefile.am (libmpf_la_SOURCES): Add it.
347         * Makefile.am (MPF_OBJECTS): Add generate object to libs.
348         * gmp-h.in: Declare new function.
349         * tests/mpf/t-cmp_si.c: Test also the new function.
350         * doc/gmp.texi: Document it.
352 2015-09-06  Torbjörn Granlund  <torbjorng@google.com>
354         * Wrap remaining limb allocations in __GMP_ALLOCATE_FUNC_LIMBS.
356         * mpn/x86/fat/fat.c (fake_cpuid_table): Add missing commas.
357         * mpn/x86_64/fat/fat.c: Likewise.
359         * mpn/x86/fat/fat.c (fake_cpuid_table): Improve struct type.
360         * mpn/x86/fat/fat.c: Likewise.
362 2015-09-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
364         * tests/mpq/t-cmp_z.c (sizes_test): New function, tests sizes.
366 2015-09-03  Torbjörn Granlund  <torbjorng@google.com>
368         * acinclude.m4 (GMP_C_HIDDEN_ALIAS): New.
369         * configure.ac (GMP_C_HIDDEN_ALIAS): Invoke.
371 2015-09-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
373         * mpq/cmp.c (mpq_cmp_numden): Cast to avoid over/underflow.
374         * tests/mpn/t-toom22.c (MIN_AN): Use defined value.
375         * tests/mpz/t-fac_ui.c: Check big factorial modulo a larger prime.
376         * mpn/generic/bsqrtinv.c: Use sqrlo+mullo_n instead of powlo(,,3,,).
377         * mpq/div.c: Move a branch out of the normal flow.
379 2015-08-31  Torbjörn Granlund  <torbjorng@google.com>
381         * mpn/x86/fat/fat.c (fake_cpuid_table): Update similarly to
382         corresponding x86_64 code.
384 2015-08-31 Marco Bodrato <bodrato@mail.dm.unipi.it>
386         * mpq/cmp.c (mpq_cmp_z): New function to compare mpq with mpz,
387         asked by Vincent Delecroix for the SageMath project.
388         * gmp-h.in: Declare it.
389         * doc/gmp.texi: Document it.
390         * tests/mpq/t-cmp_z.c: New file to test mpq_cmp_z (from t-cmp.c).
391         * tests/mpq/Makefile.am (check_PROGRAMS): Add t-cmp_z.
393         * mpn/generic/powlo.c: Use mpn_sqrlo.
395 2015-08-29  Torbjörn Granlund  <torbjorng@google.com>
397         * mpn/x86_64/fat/fat.c (fake_cpuid_table): Add CPU aliases.
399 2015-08-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
401         * configure.ac (AH_VERBATIM): Add HAVE_NATIVE_mpn_mullo_basecase.
402         * mpn/generic/sqrlo.c (mpn_sqrlo): Use mullo_basecase when faster.
403         * mpn/generic/sqrlo_basecase.c: More readable #defines.
405         * tune/tuneup.c (tune_sqrlo): New function to tune sqrlo thresholds.
406         (all): Call it, after multiplication and FFT.
407         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add sqrlo{,_basecase}.c .
408         * gmp-impl.h: Add all SQRLO_*_THRESHOLD* defs, for tuning and default.
409         * mpn/generic/sqrlo.c: Remove default threshold definitions.
410         * mpn/generic/sqrlo_basecase.c: Use SQRLO_DC_THRESHOLD_LIMIT.
411         * mpn/minithres/gmp-mparam.h: New SQRLO_*_THRESHOLDs.
413         * tune/tuneup.c (tune_mullo): Set MULLO_MUL_N_THRESHOLD to never
414         whenever the FFT threshold does not exist.
416         * mpf/cmp.c: Remove some branches.
418 2015-08-25  Torbjörn Granlund  <torbjorng@google.com>
420         * mpn/x86_64/x86_64-defs.m4: Output computed numbers in base-10 instead
421         of base-16 to avoid bugs on Solaris, FreeBSD, and old NetBSD.
423 2015-08-23  Torbjörn Granlund  <torbjorng@google.com>
425         * mpn/x86_64/fat/fat.c (fake_cpuid_table): Add more entries, handle
426         Broadwell separately.
428         * configure.ac (fat_path): Add coreibwl.
430 2015-08-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
432         * mpn/generic/rootrem.c (logbased_root): New function.
433         (mpn_rootrem_internal): Use it to estimate highest 9 bits of the root.
435         * gmp-impl.h (MPQ_PTR_SWAP, MPQ_SRCPTR_SWAP): New macros.
437 2015-08-17  Torbjörn Granlund  <torbjorng@google.com>
439         * acinclude.m4 (X86_64_PATTERN): Add skylake.
440         * config.guess: Corresponding changes.
441         * config.sub: Corresponding changes.
442         * configure.ac: Corresponding changes.
443         * mpn/x86_64/skylake/gmp-mparam.h: New file.
445 2015-08-15  Torbjörn Granlund  <torbjorng@google.com>
447         * mpn/generic/mullo_basecase.c: Provide alternative code, make default.
449 2015-08-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
451         * tests/refmpn.c (refmpn_sqrlo): New function.
452         * tests/tests.h: Define it.
454         * mpn/generic/sqrlo.c: New file, new function.
455         * mpn/generic/sqrlo_basecase.c: New file, new function.
456         * gmp-impl.h (mpn_sqrlo, mpn_sqrlo_basecase): Declare them.
457         * configure.ac (gmp_mpn_functions): Add new files.
459         * tests/mpn/t-sqrlo.c: New file, new test.
460         * tests/mpn/Makefile.am (check_PROGRAMS): Add new test.
461         * tests/devel/try.c: Support mpn_sqrlo and mpn_sqrlo_basecase.
463         * tune/common.c (speed_mpn_sqrlo{,_basecase}): New functions.
464         * tune/speed.c: Support new functions.
465         * tune/speed.h (SPEED_ROUTINE_MPN_MULLO_BASECASE): Update.
466         (SPEED_ROUTINE_MPN_SQRLO): New macro.
468         * mpn/generic/rootrem.c: Avoid divisions if not needed.
470         * tests/mpn/t-broot.c: Test also k=1.
471         * mpz/aorsmul_i.c: Move branches out of main line.
473 2015-07-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
475         * mpn/generic/sqrtrem.c (mpn_dc_sqrt): Support odd sizes.
477 2015-07-16  Torbjörn Granlund  <torbjorng@google.com>
479         * tune/speed.c: Remove now redundant MPN_FILL.
481         * configure.ac (hppa-hpux): Never use O3 optimisation.
483 2015-07-09  Torbjörn Granlund  <torbjorng@google.com>
485         * mpn/ia64/add_n_sub_n.asm: Make it work for HP-UX.
486         * mpn/ia64/addmul_2.asm: Likewise.
487         * mpn/ia64/aors_n.asm: Likewise.
488         * mpn/ia64/aorsorrlshC_n.asm: Likewise.
489         * mpn/ia64/cnd_aors_n.asm: Likewise.
490         * mpn/ia64/gcd_1.asm: Likewise.
491         * mpn/ia64/lshiftc.asm: Likewise.
492         * mpn/ia64/mod_34lsub1.asm: Likewise.
493         * mpn/ia64/mul_2.asm: Likewise.
494         * mpn/ia64/sec_tabselect.asm: Likewise.
495         * mpn/ia64/sqr_diag_addlsh1.asm: Likewise.
497 2015-07-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
499         * gmp-impl.h (MPN_FILL): New macro, generalise MPN_ZERO.
501         * mpn/generic/sqrtrem.c (mpn_dc_sqrt): New function not computing remainder.
502         (mpn_dc_sqrtrem): Use tdiv_q instead of divrem, use given scratch space.
503         (mpn_sqrtrem): Use mpn_dc_sqrt for both even and odd sizes.
505 2015-06-24  Torbjörn Granlund  <torbjorng@google.com>
507         * mpn/x86_64/fastsse/com.asm: Disalllow zero size operands.
509         * mpn/x86_64/fastsse/copyi.asm: Suppress looping in basecase code.
511 2015-06-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
513         * mpn/generic/sqrtrem.c (mpn_sqrtrem2): Simplify branches.
514         (mpn_dc_sqrtrem): Don't compute remainder if not needed.
516 2015-06-23  Torbjörn Granlund  <torbjorng@google.com>
518         * gmp-impl.h: Remove K&R stringize support.
519         * tests/devel/try.c: Likewise.
520         * tests/t-constants.c: Likewise.
521         * tests/mpf/t-fits.c: Likewise.
522         * tests/mpz/t-fits.c: Likewise.
524         * configure.ac (AC_C_STRINGIZE): Remove.
526 2015-06-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
528         * tests/devel/try.c: Support mpn_sqrt (sqrtrem with remainder = NULL).
529         * mpn/generic/sqrtrem.c: Reorder branches for single limb operands.
531 2015-06-15  Torbjörn Granlund  <torbjorng@google.com>
533         * config.guess: Rewrite code for AVX handling to deal with broken cpuid
534         states.
536 2015-06-11  Torbjörn Granlund  <torbjorng@google.com>
538         * mpn/x86/k7/gcd_1.asm: Align stack for calls.
539         * mpn/x86/p6/gcd_1.asm: Amend last change: align for PIC and non-PIC.
541 2015-06-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
543         * mpn/generic/sqrtrem.c: Use sqrtrem1 for single limb operands.
545         * tests/mpz/t-root.c: Check also mpz_root return value.
546         * mpn/generic/rootrem.c: Shorten first and last loop.
548         * mpn/generic/toom2_sqr.c: Add some ASSERTs.
549         * mpn/generic/toom22_mul.c: Likewise.
550         * tests/mpn/t-toom22.c: stop testing some unsafe (unused) corner cases.
552 2015-06-08  Torbjörn Granlund  <torbjorng@google.com>
554         * mpn/x86/p6/gcd_1.asm: Align stack for calls.
556 2015-06-06  Torbjörn Granlund  <torbjorng@google.com>
558         * config.sub: Recognise any arm*neon CPU.
559         * configure.ac (powerpc): Add p8 directory for power8 and later.
560         * mpn/powerpc64/mode64/p8/invert_limb.asm: New file.
562 2015-06-01  Torbjörn Granlund  <torbjorng@google.com>
564         * tune/speed.c (routine): Measure "mpn_sqrt" and "mpn_root", which are
565         really the corresponding "rem" functions with NULL remainder argument.
567         * tune/speed.h (SPEED_ROUTINE_MPN_SQRTROOT_CALL): New.
568         (SPEED_ROUTINE_MPN_SQRTREM, SPEED_ROUTINE_MPN_ROOTREM): Remove.
570         * tune/common.c (speed_mpn_sqrt, speed_mpn_root): New functions.
571         (speed_mpn_sqrtrem): Use SPEED_ROUTINE_MPN_SQRTROOT_CALL
572         (speed_mpn_rootrem): Likewise.
574 2015-05-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
576         * mpf/cmp_ui.c: Use macros, remove branches, correct nails.
577         * mpf/cmp_si.c: Likewise.
578         * mpf/int_p.c: Use a simpler loop to ignore zero limbs.
580         * mpf/sqrt_ui.c: Special case for sqrt(1).
581         * tests/mpf/t-sqrt_ui.c: Test special cases.
583         * gmp-h.in: Declare (and inline) mpn_zero_p.
584         * gmp-impl.h: Remove mpn_zero_p.
585         * mpn/generic/zero_p: New file to include the function in the library.
586         * configure.ac (gmp_mpn_functions): Add it.
587         * doc/gmp.texi: Document it.
589         * mpz/combit.c: Call mpn_zero_p only if size is not zero.
590         * mpz/scan1.c: Likewise.
591         * tests/mpn/t-brootinv.c: Likewise.
592         * tests/mpn/t-div.c: Likewise.
593         * tests/mpn/t-minvert.c: Likewise.
595         * mini-gmp/mini-gmp.h: Declare mpn_zero_p.
596         * mini-gmp/mini-gmp.c: Define mpn_zero_p as a function, not a macro.
598 2015-05-28  Niels Möller  <nisse@lysator.liu.se>
600         * doc/gmp.texi (Low-level Functions): Document mpn_divexact_1 and
601         mpn_cnd_swap (the latter was forgotten for the 2015-02-08 change).
603 2015-05-28  Linus Nordberg  <linus@nordberg.se>
605         * configure.ac: Remove double quotes in help strings, make some
606         clarifications.
608 2015-05-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
610         * mpq/div.c: Reduce memory use.
611         * tests/mpq/reuse.c: Test also mpq_FUNCTION (x,x,x).
612         * mpz/swap.c: Use _SWAP macros.
614 2015-05-18  Torbjörn Granlund  <torbjorng@google.com>
616         * configure.ac (arm): Let compiler decide about arm vs thumb encoding.
618 2015-05-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
620         * gmp-h.in (mpn_neg): Niels' code using mpn_neg.
621         * gmp-h.in (mpn_com): Unconditionally declare prototype.
623 2015-05-17  Torbjörn Granlund  <torbjorng@google.com>
625         * mpn/arm/v6/sqr_basecase.asm: Rewrite for speed.
627 2015-05-16  Torbjörn Granlund  <torbjorng@google.com>
629         * mpn/arm/v6/addmul_2.asm: Rewrite for speed and size.
631 2015-05-15  Torbjörn Granlund  <torbjorng@google.com>
633         * mpn/arm/v7a/cora7/gmp-mparam.h: New file.
634         * mpn/arm/v7a/cora8/gmp-mparam.h: New file.
635         * configure.ac (arm): Point to new directories.
637 2015-05-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
639         * mpn/generic/invertappr.c: Reduce memory usage.
640         * gmp-impl.h (mpn_invertappr_itch): Update accordingly.
641         * tune/tuneup.c (tune_invertappr, tune_invert): Update min_size.
643         * mpn/generic/mu_div_qr.c: Pass scratch memory to mpn_invertappr.
644         * mpn/generic/mu_divappr_q.c: Likewise.
646 2015-05-12  Felix Janda  <felix.janda@posteo.de>
648         * mpn/powerpc32/elf.m4 (LEA): Adopt to new ABI.
650 2015-05-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
652         * mpn/generic/invertappr.c: Reduce memory usage.
653         * gmp-impl.h (mpn_invertappr_itch): Update accordingly.
655 2015-05-01  Torbjörn Granlund  <torbjorng@google.com>
657         * tune/tuneup.c (all): Make GCD tuning last since it is not robust.
659 2015-04-27  Torbjörn Granlund  <torbjorng@google.com>
661         * mpn/x86_64/coreibwl/gmp-mparam.h: New file.
663 2015-04-26  Torbjörn Granlund  <torbjorng@google.com>
665         * mpn/x86_64/coreibwl/mul_basecase.asm: New file.
666         * mpn/x86_64/coreibwl/sqr_basecase.asm: New file.
668 2015-04-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
670         * tune/common.c (speed_mpn_neg, speed_mpz_2fac_ui): New functions.
671         (speed_mpn_add_1, speed_mpn_add_1_inplace): New functions.
672         (speed_mpn_sub_1, speed_mpn_sub_1_inplace): New functions.
673         * tune/speed.h: Declare them all.
674         * tune/speed.c (routine): Added mpn_neg, mpn_add_1, mpn_sub_1,
675         mpn_add_1_inplace, mpn_sub_1_inplace, and mpz_2fac_ui.
677 2015-04-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
679         * mpn/generic/invert.c: Split add in the correction test.
680         * mpn/generic/invertappr.c: Cleanup of loops and branches.
682         * mpn/generic/hgcd_reduce.c: Use TMP_ALLOC_LIMBS_3.
683         * mpn/generic/powm.c: Use TMP_ALLOC_LIMBS_2.
684         * mpn/generic/rootrem.c: Likewise.
685         * mpn/generic/remove.c: Remove redundant #ifdef.
686         * mpn/generic/perfpow.c: Likewise.
688 2015-04-21  Torbjörn Granlund  <torbjorng@google.com>
690         * printf/sprintffuns.c (gmp_sprintf_final): Remove extra parameters.
692         * mpn/arm/v6/popham.asm: Add MULFUNC_PROLOGUE.
693         * mpn/powerpc64/mode64/rsh1aors_n.asm: Likewise.
694         * mpn/powerpc64/mode64/p6/aorsmul_1.asm: Likewise.
696 2015-04-19  Torbjörn Granlund  <torbjorng@google.com>
698         * mpn/x86_64/x86_64-defs.m4 (oplist): Fix typo.
699         (mulx): Simplify.
700         (adcx, adox): New defines, using helper function adx.
701         * mpn/x86_64/coreibwl/mul_1.asm: New file.
702         * mpn/x86_64/coreibwl/addmul_1.asm: New file.
703         * configure.ac (x86_64): Put coreibwl in appropriate code path.
705         * configure.ac (x86_64): Pass more exact Intel CPU options.
707 2015-04-13  Torbjörn Granlund  <torbjorng@google.com>
709         * longlong.h (arm): Rewrite.  Support thumb2; use gcc builtins for
710         count_leading_zeros, use accurate code selection critera.
712 2015-04-13  Marc Glisse  <marc.glisse@inria.fr>
714         * configure.ac (x86_64): Extend noavx to ABI=64.
716 2015-04-10  Torbjörn Granlund  <torbjorng@google.com>
718         * mpn/alpha/ev6/mod_1_4.asm: Use LDGP.
720 2015-04-01  Torbjörn Granlund  <torbjorng@google.com>
722         * configure.ac (sparc): Don't use use -xO4, it miscompiles by design.
724 2015-03-24  Torbjörn Granlund  <torbjorng@google.com>
726         * mpn/generic/mul_fft.c (mpn_fft_best_k): Don't make pointers `static'
727         just because they point to static (i.e., file-local) data.
729 2015-03-15  Torbjörn Granlund  <torbjorng@google.com>
731         * acinclude.m4 (X86_64_PATTERN): Add CPU code names.
733         * config.guess: Add more CPUs, use CPU code names.
734         * config.sub: Corresponding changes.
735         * configure.ac: Corresponding changes.
737 2015-02-21  Niels Möller  <nisse@lysator.liu.se>
739         * gmp-h.in (mpn_divexact_1): New public declaration.
740         * gmp-impl.h: Moved from here.
742 2015-02-08  Niels Möller  <nisse@lysator.liu.se>
744         * doc/gmp.texi (Low-level Functions): Document mpn_cnd_swap.
746         * mpn/generic/cnd_swap.c (mpn_cnd_swap): New file, moved function
747         here. Also changed cnd argument type from int to mp_limb_t.
748         * mpn/generic/sec_invert.c (mpn_cnd_swap): Old location.
749         * configure.ac: Added cnd_swap.
750         * gmp-h.in (mpn_cnd_swap): Added prototype.
752 2015-01-19  Torbjörn Granlund  <torbjorng@google.com>
754         * configure.ac (arm): Provide architecture specific configs in addition
755         to implementation specific configs.
757         * config.guess (arm): Use configfsf.guess's guess as default before
758         conditionally appending "neon".
760 2015-01-08  Torbjörn Granlund  <torbjorng@google.com>
762         * config.guess: Match POWER8 for AIX.
764         * longlong.h: Add many casts inside assembly input operands, this
765         insures proper zero extension.
767 2014-12-27  Marc Glisse  <marc.glisse@inria.fr>
769         * gmpxx.h (__gmp_unary_expr): Use __gmp_resolve_ref.
770         (__gmp_expr): New specialization for unary expressions with
771         a builtin argument.
773 2014-12-26  Marc Glisse  <marc.glisse@inria.fr>
775         * gmp-impl.h (tmp_debug_entry_t): Change block to type void*.
777 2014-12-22  Torbjörn Granlund  <torbjorng@google.com>
779         * longlong.h (mips64, mips32): Work around one clang bug.
781 2014-12-18  Torbjörn Granlund  <torbjorng@google.com>
783         * longlong.h (umul_ppmm): Use input temps in more places.
785 2014-12-10  Marc Glisse  <marc.glisse@inria.fr>
787         * tests/cxx/clocale.c (localeconv, nl_langinfo): Match glibc's
788         prototype in C++.
790 2014-12-09  Torbjörn Granlund  <torbjorng@google.com>
792         * configure.ac (powerpc): Remove hardwired -mpowerpc, causes clang
793         problems.  Optionally pass -m32.
795 2014-12-08  Marc Glisse  <marc.glisse@inria.fr>
797         * config.guess (ultrasparc*-*-*): Update for T4 and T5.
798         * config.sub (ultrasparc*-*-*): Update for T5.
799         * configure.ac (ultrasparc*-*-*): Update for T5.
801         * longlong.h (sparc64): Define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
802         with VIS3.
804         * tests/misc/t-locale.c (localeconv, nl_langinfo): Match glibc's
805         prototype in C++.
806         * tests/mpf/t-get_si.c (check_limbdata): Avoid narrowing conversion
807         from -1 to unsigned inside {}.
809 2014-12-02  Torbjörn Granlund  <torbjorng@google.com>
811         * config.guess (arm*-*-*): Redirect stderr.
813 2014-11-26  Torbjörn Granlund  <torbjorng@google.com>
815         * configure.ac (arm*-*-*): Optionally pass redundant fpu mode options
816         in order to placate clang.
818         * mpn/arm/neon/lshiftc.asm: Avoid insn form missing from clang.
820 2014-11-24  Torbjörn Granlund  <torbjorng@google.com>
822         * configure.ac (mips*-*-*): Provide ABI synonyms (for clang pretending
823         to be gcc).
825 2014-11-18  Torbjörn Granlund  <torbjorng@google.com>
827         From Hannes Mehnert:
828         * config.guess (arm*-*-*): Base guesses on first matching /proc/cpuinfo
829         line.
831 2014-11-17  Torbjörn Granlund  <torbjorng@google.com>
833         * longlong.h (__longlong_h_C): New macro.
834         (mpn_umul_ppmm, etc): Use it for C++ support.
836 2014-11-15  Torbjörn Granlund  <torbjorng@google.com>
838         * tests/mpz/reuse.c: Make function vectors 'static'.
840         * tests/mpn/logic.c (check_one): Make string variable 'const'.
842         * tests/mpz/t-perfpow.c (tests): Make 'static'.
844         * tune/tuneup.c (fftmes): Remove an unused variable.
846 2014-11-15  Marc Glisse  <marc.glisse@inria.fr>
848         * tests/amd64check.c (calling_conventions_fenv): Mark as extern "C".
849         * tests/x86check.c (calling_conventions_fenv): Likewise.
851 2014-11-13  Hans Wennborg  <hwennborg@google.com>
853         * mpn/generic/toom_interpolate_8pts.c: Fix operator precedence in
854         ASSERT.
856 2014-11-13  Torbjörn Granlund  <torbjorng@google.com>
858         * tune/speed.h: Add casts for C++ compatibility.
859         (speed_cyclecounter): Mark as extern "C".
860         (mpn_mod_1_1p_1, mpn_mod_1_1p_2): Correct prototype.
862         * tune/tune-gcd-p.c: Add casts for C++ compatibility.
864         * tune/tuneup.c: Add casts for C++ compatibility.
865         (mpn_divrem_1_tune, mpn_mod_1_tune): Mark as extern "C".
866         (INSERT_FFTTAB): Produce sentinels differently to silence compiler.
868 2014-11-12  Torbjörn Granlund  <torbjorng@google.com>
870         * gen-psqr.c: Add casts for C++ compatibility.
872         * tests/misc/t-scanf.c: Include config.h early for HAVE_xxx.
874 2014-11-08  Torbjörn Granlund  <torbjorng@google.com>
876         * mpn/x86/x86-defs.m4 (LEA, LEAL): Make sure to put eip stub code in
877         text segment.
878         * mpn/x86/darwin.m4: Likewise.
880         * tune/speed.h (i386 speed_cyclecounter): Remove inline asm code, rely
881         on external version.
883 2014-11-06  Torbjörn Granlund  <torbjorng@google.com>
885         * config.guess: Ignore appended letters such E in POWER8E.
886         * configure.ac: Supply cflags for power8, power9.
888 2014-11-03  Torbjörn Granlund  <torbjorng@google.com>
890         * mpn/powerpc32/addmul_1.asm: Avoid negative stack pointer references.
891         * mpn/powerpc32/lshift.asm: Likewise.
892         * mpn/powerpc32/lshiftc.asm: Likewise.
893         * mpn/powerpc32/p3-p7/aors_n.asm: Likewise.
894         * mpn/powerpc32/rshift.asm: Likewise.
895         * mpn/powerpc32/sec_tabselect.asm: Likewise.
896         * mpn/powerpc32/submul_1.asm: Likewise.
897         * mpn/powerpc32/vmx/mod_34lsub1.asm: Likewise.
899 2014-10-13  Torbjörn Granlund  <torbjorng@google.com>
901         * acinclude.m4 (freebsd hacked gcc): Test for crash-prone FreeBSD gcc.
903 2014-10-03  Peter Breitenlohner <peb@mppmu.mpg.de>
905         * mpn/generic/sec_tabselect.c: Adjust type to silence compiler.
907 2014-10-01  Torbjörn Granlund  <torbjorng@google.com>
909         * All Makefile.am: INCLUDES => AM_CPPFLAGS.
911         * configure.ac (arm64): Set gcc_cflags_maybe to enable Neon (for clang
912         pretending to be gcc).
914 2014-09-24  Marc Glisse  <marc.glisse@inria.fr>
916         * longlong.h (arm64 count_trailing_zeros, count_leading_zeros): Use
917         gcc's builtins.
918         (arm64 umul_ppmm): Use macro arguments only once.
920 2014-09-22  Marc Glisse  <marc.glisse@inria.fr>
922         * mpn/arm64/lshift.asm: Avoid negative immediates.
923         * mpn/arm64/rshift.asm: Likewise.
925 2014-09-13  Marc Glisse  <marc.glisse@inria.fr>
927         * mpn/generic/div_qr_1n_pi1.c: Honor NO_ASM.
928         * mpn/generic/div_qr_1n_pi2.c: Likewise.
929         * mpn/generic/div_qr_1u_pi2.c: Likewise.
930         * mpn/generic/div_qr_2.c: Likewise.
931         * mpn/generic/mod_1_1.c: Likewise.
932         * mpn/generic/redc_2.c: Likewise.
934 2014-08-31  Torbjörn Granlund  <tege@gmplib.org>
936         * mpn/arm64/lshift.asm: New file.
937         * mpn/arm64/rshift.asm: New file.
939 2014-09-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
941         * gmp-impl.h (TMP_ALLOC_LIMBS_3): New macro to allocate 3 blocks.
942         (mpn_remove): Update declaration with mp_srcptr arguments.
943         * mpn/generic/remove.c: Use TMP_ALLOC_LIMBS_3. mp_srcptr for args.
945         * mpn/generic/perfpow.c (pow_equals): TMP_DECL only where needed.
946         (perfpow): Use TMP_ALLOC_LIMBS_3.
947         (mpn_perfect_power_p): Skip useless allocations. Use mpn_remove.
948         * tests/mpz/t-perfpow.c (check_random): Check more perfect powers.
950         * mpn/generic/divis.c: Use TMP_ALLOC_LIMBS_2. Share a count.
952 2014-08-30  Torbjörn Granlund  <tege@gmplib.org>
954         * mpn/arm64/mod_34lsub1.asm: New file.
956 2014-08-27  Niels Möller  <nisse@lysator.liu.se>
958         * mini-gmp/mini-gmp.c (mpz_abs_sub_bit): Do full normalization,
959         needed if mpz_clrbit clears the most significant one bit.
961 2014-08-23  Torbjörn Granlund  <tege@gmplib.org>
963         * mpn/arm64/bdiv_dbm1c.asm: New file.
965         * mpn/arm64/com.asm: New file.
967         * mpn/arm64/sec_tabselect.asm: New file.
969         * mpn/arm64/popcount.asm: New file.
970         * mpn/arm64/hamdist.asm: New file.
972         * configure.ac: Put generic arm/neon earlier in path.
974 2014-08-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
976         * mpq/canonicalize.c: Earlier check for negative denominator.
977         * mpq/set_d.c: Stricter allocation.
979 2014-08-03  Torbjörn Granlund  <tege@gmplib.org>
981         * mpn/x86_64/bobcat/mul_1.asm: Fix typo in offset affecting DOS64.
983 2014-07-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
985         * mpn/generic/fib2_ui.c: remove #if HAVE_NATIVE_mpn_rsblsh_n.
986         * mpz/fib2_ui.c: Use tabulated values, when available.
987         * mpz/fib_ui.c: #if HAVE_NATIVE_mpn_addlsh1_n, use it.
989         * mpq/cmp_ui.c: Remove a branch.
990         * mpq/cmp_si.c: Likewise.
992         * mpn/generic/toom_interpolate_7pts.c: Replace an in-place add
993         with add_n + INCR_U.
995         * tests/mpf/t-fits.c: use ui_sub instead of sub_ui+neg.
997         * mini-gmp/mini-gmp.c: Remove some useless variables.
999 2014-07-27  Torbjörn Granlund  <tege@gmplib.org>
1001         * mpn/x86/k7/gcd_1.asm: Use LEAL.
1003         * mpn/x86/x86-defs.m4 (LEAL): New.
1004         (LEA): Append to `load_eip' instead of ASM_END, like darwin.m4.
1005         * mpn/x86/darwin.m4 (LEAL): New.
1007 2014-07-26  Torbjörn Granlund  <tege@gmplib.org>
1009         * mpn/x86/pentium/mode1o.asm: Add Darwin PIC code.
1010         * mpn/x86/pentium/bdiv_q_1.asm: Likewise.
1011         * mpn/x86/pentium/dive_1.asm: Likewise.
1012         * mpn/x86/pentium/popcount.asm: Likewise.
1013         * mpn/x86/pentium/hamdist.asm: Likewise.
1014         * mpn/x86/k6/gcd_1.asm: Likewise.
1016         * mpn/x86: Append ASM_END to many files.
1017         * tests/x86call.asm: Append ASM_END.
1019         * mpn/x86/fat/fat_entry.asm (FAT_ENTRY, FAT_INIT):
1020         Support Darwin.
1022         * mpn/x86/darwin.m4 (ASM_END): New, body from EPILOGUE_cpu.
1023         (EPILOGUE_cpu): Remove.
1025         * mpn/x86/x86-defs.m4 (LEA): Put `mov_eip_' thunks in ASM_END instead
1026         of EPILOGUE_cpu.
1028 2014-07-05  Niels Möller  <nisse@lysator.liu.se>
1030         * doc/gmp.texi (Low-level Functions): Document that scratch need
1031         for mpn_sec_add_1 and mpn_sec_sub_1 are at most n limbs.
1032         (Low-level Functions): Document allowed overlap for mpn_addmul_1
1033         and mpn_submul_1.
1035 2014-07-02  Torbjörn Granlund  <tege@gmplib.org>
1037         * mpn/x86_64/x86_64-defs.m4: Fix quoting.
1039         * mpn/x86_64/atom/redc_1.asm: Enforce proper stack allocation.
1040         * mpn/x86_64/bobcat/redc_1.asm: Likewise.
1041         * mpn/x86_64/core2/divrem_1.asm: Likewise.
1042         * mpn/x86_64/core2/gcd_1.asm: Likewise.
1043         * mpn/x86_64/core2/redc_1.asm: Likewise.
1044         * mpn/x86_64/coreihwl/redc_1.asm: Likewise.
1045         * mpn/x86_64/coreinhm/redc_1.asm: Likewise.
1046         * mpn/x86_64/coreisbr/redc_1.asm: Likewise.
1047         * mpn/x86_64/divrem_1.asm: Likewise.
1048         * mpn/x86_64/divrem_2.asm: Likewise.
1049         * mpn/x86_64/gcd_1.asm: Likewise.
1050         * mpn/x86_64/mod_1_1.asm: Likewise.
1051         * mpn/x86_64/mod_1_2.asm: Likewise.
1052         * mpn/x86_64/mod_1_4.asm: Likewise.
1054 2014-06-30  Torbjörn Granlund  <tege@gmplib.org>
1056         * config.sub: Generalise x86 patterns.
1058 2014-06-17  Marc Glisse  <marc.glisse@inria.fr>
1060         * gmpxx.h (__gmp_gcd_function, __gmp_lcm_function): New classes.
1061         (gcd, lcm): New functions.
1062         * doc/gmp.texi (C++ Interface Integers): Document them.
1063         * tests/cxx/t-ops2.cc (checkz): Test them.
1065 2014-06-16  Torbjörn Granlund  <tege@gmplib.org>
1067         * mpf/mul.c: Postpone TMP_MARK.
1069         * mpn/generic/perfpow.c (perfpow): Combine TMP_ALLOCs.
1071 2014-06-15  Torbjörn Granlund  <tege@gmplib.org>
1073         * tests/refmpn.c (refmpn_mul): Rewrite to avoid O(n) recursion depth.
1075 2014-06-09  Torbjörn Granlund  <tege@gmplib.org>
1077         * mpn/generic/mullo_n.c: Remove default THRESHOLDs.
1078         * gmp-impl.h: Put MULLO THRESHOLDs here.  Improve various THRESHOLD
1079         defaults.
1081 2014-06-08  Torbjörn Granlund  <tege@gmplib.org>
1083         * gmp-impl.h (TMP_ALLOC): Decrease limit to about half.
1085         * mpn/generic/toom53_mul.c: Replace many TMP_SALLOC invocations
1086         by a single TMP_ALLOC.
1087         * mpn/generic/toom42_mul.c: Likewise.
1089         * mpn/generic/sec_sqr.c: Don't unconditionally call mpn_sqr_basecase
1090         since it fails for non-cryptographic sizes for some obsolete CPUs.
1092         * mpn/generic/sec_powm.c: Remove own squaring code, instead use
1093         mpn_mul_basecase.
1095         * tests/mpn/logic.c (main): Don't use TMP_SALLOC_LIMBS.
1097         * mpn/generic/dcpi1_div_q.c: Avoid TMP_SALLOC_LIMBS.
1098         * mpn/generic/dcpi1_div_qr.c: Likewise.
1100 2014-06-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
1102         * mpn/generic/mul.c: Tighter allocation in Toom{2,3}X branches.
1104 2014-06-06  Torbjörn Granlund  <tege@gmplib.org>
1106         * mpn/generic/mul.c: Swap some TMP_SALLOC_LIMBS for TMP_ALLOC_LIMBS
1107         and some TMP_ALLOC_LIMBS for TMP_SALLOC_LIMBS.
1109 2014-05-31 Marco Bodrato <bodrato@mail.dm.unipi.it>
1111         * mpf/ui_sub.c: Remove buggy code, use a wrapper to mpf_sub.
1112         * tests/mpf/t-sub.c: More corner cases and strict checking.
1113         * mpf/sub.c: Use more mpn_ primitives and macros.
1115         * tests/mpf/t-int_p.c: Test numbers with both integer and
1116         fractionary parts.
1118         * mpf/int_p.c: Delay zero branch and use mpn_zero_p.
1119         * mpf/fits_s.h: No special case for SIZ == 0.
1120         * mpf/fits_u.h: Likewise.
1122 2014-05-29  Marc Glisse  <marc.glisse@inria.fr>
1124         * gmp-h.in: Include <limits.h>.
1125         (__GMP_UINT_MAX, __GMP_ULONG_MAX, __GMP_USHRT_MAX): Remove.
1126         * gmp-impl.h (ULONG_MAX, UINT_MAX, USHRT_MAX, LONG_MAX, INT_MAX,
1127         SHRT_MAX): Remove unnecessary redefinition.
1128         * tests/t-gmpmax.c: Remove file.
1129         * tests/Makefile.am: Remove t-gmpmax.
1131 2014-05-22 Marco Bodrato <bodrato@mail.dm.unipi.it>
1133         * tests/mpf/t-sub.c (check_data): Test also ui_sub and sub_ui.
1135 2014-05-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
1137         * gen-fac.c: +1 in the init2 argument before setbit.
1138         * gen-fib.c: Likewise. (Thanks Niels)
1139         * mini-gmp/mini-gmp.c: Likewise.
1140         * rand/randmts.c: Likewise.
1142         * mpn/generic/invert.c: Remove unused TMP_MARK.
1143         * mpn/generic/invertappr.c: Avoid a branch.
1144         * mpz/millerrabin.c (millerrabin): Consider the rare case n is a power.
1146 2014-05-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
1148         * mini-gmp/mini-gmp.c: Micro-optimisations.
1150         * gen-fib.c: Use mpz_setbit.
1151         * gen-psqr.c: Skip even numbers when looking for primes.
1153         * mpn/generic/invert.c: Avoid a branch.
1154         * mpn/generic/toom2_sqr.c: Avoid a few branches in the odd case.
1155         * mpn/generic/toom22_mul.c: Likewise.
1157 2014-05-08  Marc Glisse  <marc.glisse@inria.fr>
1159         * gmpxx.h (std::common_type): Remove partial specialization for two
1160         identical expressions. New partial specialization for a single type.
1161         * tests/cxx/t-cxx11.cc: Test it.
1163 2014-04-14  Niels Möller  <nisse@lysator.liu.se>
1165         * doc/gmp.texi (mpz_invert): Clarify behavior in the zero ring.
1167 2014-04-04  Marc Glisse  <marc.glisse@inria.fr>
1169         * longlong.h (i386): Add comment about "cc" clobber.
1171 2014-04-04  Torbjorn Granlund  <tege@gmplib.org>
1173         * acinclude.m4 (X86_64_PATTERN): Generalise patterns to allow "noavx"
1174         suffix.
1176         * mpn/generic/div_qr_1n_pi1.c: Conditionalise ARM asm on !__thumb__.
1178 2014-04-03  Marc Glisse  <marc.glisse@inria.fr>
1180         * mpn/arm64/mul_1.asm, mpn/arm64/gcd_1.asm: Use official b.cond syntax.
1181         * mpn/arm64/invert_limb.asm, mpn/arm64/aorsmul_1.asm: Prefix
1182         immediates with #.
1184 2014-04-03  Torbjorn Granlund  <tege@gmplib.org>
1186         * config.guess: Append "noavx" for CPUs which have AVX but where the
1187         kernel does not support it.
1188         * configure.ac: Accept "noavx" cpu name suffixes.  Conditionally pass
1189         -mno-avx.
1191 2014-04-02  Torbjorn Granlund  <tege@gmplib.org>
1193         * mpn/x86_64/k8/redc_1.asm: Workaround for Darwin assembler quirk.
1195 2014-03-28  Torbjorn Granlund  <tege@gmplib.org>
1197         * mpn/generic/mod_1_1.c: Conditionalise ARM asm on !__thumb__.
1199 2014-03-31  Marc Glisse  <marc.glisse@inria.fr>
1201         * mpn/arm/dive_1.asm, mpn/arm/invert_limb.asm: Use RODATA.
1202         * acinclude.m4 ([long long reliability tests]): Declare functions.
1203         (GMP_PROG_CC_FOR_BUILD_WORKS, GMP_PROG_EXEEXT_FOR_BUILD,
1204         GMP_C_FOR_BUILD_ANSI, GMP_CHECK_LIBM_FOR_BUILD): Replace exit(0) with
1205         return 0, no declaration needed.
1206         (GMP_CHECK_LIBM_FOR_BUILD): Include <math.h> to declare log.
1208 2014-03-30  Marc Glisse  <marc.glisse@inria.fr>
1210         * README: Remove mention to Berkeley MP compatibility.
1212 2014-03-26  Torbjorn Granlund  <tege@gmplib.org>
1214         * mpn/powerpc64/mode64/gcd_1.asm: Provide default for
1215         BMOD_1_TO_MOD_1_THRESHOLD.
1217 2014-03-24  Torbjorn Granlund  <tege@gmplib.org>
1219         * Version 6.0.0 released.
1221         * mpn: Update countless gmp-mparam.h files.
1223 2014-03-22  Torbjorn Granlund  <tege@gmplib.org>
1225         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
1226         * gmp-h.in: Bump version.
1228 2014-03-17  Torbjorn Granlund  <tege@gmplib.org>
1230         * configure.ac: Remove clipper, i960, ns32k, pyr, a29k, z8000.
1231         * mpn/clipper: Remove directory and all its files.
1232         * mpn/i960: Likewise.
1233         * mpn/ns32k: Likewise.
1234         * mpn/pyr: Likewise.
1235         * mpn/a29k: Likewise.
1236         * mpn/z8000: Likewise.
1237         * mpn/Makefile.am (TARG_DIST): Purge removed directories.
1238         * doc/gmp.texi: Remove special mentions of removed architectures.
1240 2014-03-12 Marco Bodrato <bodrato@mail.dm.unipi.it>
1242         * mini-gmp/mini-gmp.c (mpz_probab_prime_p): Micro-optimisation.
1244 2014-03-12  Torbjorn Granlund  <tege@gmplib.org>
1246         * mpn/x86/bd2/gmp-mparam.h: New file.
1247         * mpn/x86_64/bd2/gmp-mparam.h: New file.
1249 2014-03-06  Niels Möller  <nisse@lysator.liu.se>
1251         * tests/mpz/t-pprime_p.c (check_composites): New function.
1252         (check_primes): New function.
1253         (main): Call them. Also use TESTS_REPS.
1255         * mini-gmp/mini-gmp.c (gmp_millerrabin): New internal function.
1256         (mpz_probab_prime_p): New function.
1257         * mini-gmp/mini-gmp.h (mpz_probab_prime_p): Declare it.
1258         * mini-gmp/tests/t-pprime_p.c: New test program.
1259         * mini-gmp/tests/Makefile (CHECK_PROGRAMS): Added t-pprime_p.
1261 2014-03-03  Niels Möller  <nisse@lysator.liu.se>
1263         * mini-gmp/mini-gmp.c (mpz_congruent_p): New function.
1264         * mini-gmp/mini-gmp.h: Declare it.
1265         * mini-gmp/tests/t-cong.c: New file, based on tests/mpz/t-cong.c.
1266         * mini-gmp/tests/Makefile (CHECK_PROGRAMS): Added t-cong.
1268         * mini-gmp/tests/testutils.c (dump): New function. Deleted static
1269         functions in other files.
1270         (mpz_set_str_or_abort): Moved function here, from...
1271         * mini-gmp/tests/t-cmp_d.c: ... old location.
1273         * mini-gmp/tests/t-reuse.c (dump3): Renamed, from ...
1274         (dump): ...old name.
1276 2014-03-01  Niels Möller  <nisse@lysator.liu.se>
1278         * mpn/generic/sec_powm.c (mpn_sec_powm): Clarify comment and
1279         asserts.
1281 2014-02-28  Torbjorn Granlund  <tege@gmplib.org>
1283         * mpn/x86_64/fat/fat.c (fake_cpuid): Handle id 7, make bold claims.
1285 2014-02-27  Torbjorn Granlund  <tege@gmplib.org>
1287         * mpn/x86_64/fat/fat_entry.asm: Zero ecx for the benefit of new BMI2
1288         feature test.
1290         * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Run CPUVEC_SETUP_coreihwl
1291         conditionally on BMI2 availability.
1293         * config.guess: Revert "coreihwl" to "coreisbr" if cpuid indicates that
1294         BMI2 is missing.
1295         (x86 cpuid, 2 variants): Zero ecx for the benefit of new BMI2 feature
1296         test.
1298 2014-02-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
1300         * mini-gmp/mini-gmp.c (mpn_sqrtrem): New function.
1301         * mini-gmp/mini-gmp.h: Declare it.
1302         * mini-gmp/tests/t-sqrt.c: Test it.
1304 2014-02-17  Niels Möller  <nisse@lysator.liu.se>
1306         * mpn/generic/div_qr_1.c (mpn_div_qr_1): Revert yesterday's fix.
1307         Hopefully no longer needed.
1309         * mpn/s390_64/gmp-mparam.h (DIV_QR_1_NORM_THRESHOLD): Up to 1.
1310         * mpn/s390_64/z10/gmp-mparam.h (DIV_QR_1_NORM_THRESHOLD): Up to 1.
1312         * tune/tuneup.c (tune_div_qr_1): Ensure DIV_QR_1_NORM_THRESHOLD,
1313         DIV_QR_1_UNNORM_THRESHOLD >= 1.
1315 2014-02-16 Marco Bodrato <bodrato@mail.dm.unipi.it>
1317         * mpn/generic/div_qr_1.c: Disallow DIV_QR_1_NORM_THRESHOLD==0.
1319 2014-02-15  Torbjorn Granlund  <tege@gmplib.org>
1321         * tests/mpn/t-div.c: Fix typo.
1323 2014-02-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
1325         * doc/gmp.texi (mpz_roinit_n, MPZ_ROINIT_N): Document that
1326         at least a readable limb is required.
1327         * mini-gmp/mini-gmp.c (mpz_div_qr): init + set = init_set .
1329 2014-02-14  Niels Möller  <nisse@lysator.liu.se>
1331         * doc/gmp.texi (Low-level Functions): Update docs for
1332         mpn_sec_powm, to specify that left-over exponent bits must be
1333         zero.
1335 2014-02-11  Niels Möller  <nisse@lysator.liu.se>
1337         * Makefile.am (EXTRA_DIST): Distribute COPYING.LESSERv3,
1338         COPYINGv2, and COPYINGv3.
1340         * doc/gmp.texi (Low-level Functions): Updated mpn_sec_powm docs.
1342         * mpn/generic/sec_powm.c (mpn_sec_powm): Replaced exponent limb
1343         count argument by bit count. Don't leak high exponent bits, and
1344         drop the requirement that the most significant exponent limb is
1345         non-zero.
1346         (mpn_sec_powm_itch): Analogous interface change.
1347         * gmp-h.in: Updated prototypes.
1348         * mpz/powm_sec.c (mpz_powm_sec): Update mpn_sec_powm* calls.
1349         * tune/tuneup.c (tune_powm_sec): Likewise. Also deleted code
1350         fiddling with the high exponent bits.
1352 2014-02-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
1354         * mini-gmp/tests/t-limbs.c: New test for mpz_limbs_*.
1355         * mini-gmp/tests/Makefile (CHECK_PROGRAMS): Add it.
1357 2014-02-09  Niels Möller  <nisse@lysator.liu.se>
1359         * tune/tuneup.c (tune_powm_sec): Avoid timing of the nonsensical
1360         parameters nbits = 1, winsize = 2. Decrement tabulated values, to
1361         better match the > comparison when the table is used.
1363         * mpn/generic/sec_powm.c (win_size): Comment why we always get
1364         win_size(eb) <= eb. Make the table const.
1365         (mpn_sec_powm): Deleted handling of winsize > initial ebi. For
1366         now, replaced with an ASSERT_ALWAYS.
1368 2014-02-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
1370         * mini-gmp/mini-gmp.c (mpz_realloc2, mpz_limbs_read, mpz_limbs_modify
1371         mpz_limbs_write, mpz_limbs_finish, mpz_roinit_n): New functions.
1372         (mpn_perfect_square_p): New function.
1373         * mini-gmp/mini-gmp.h: Declare them.
1375         * mini-gmp/tests/t-mul.c: Use roinit and limbs_read to test mpn.
1376         * mini-gmp/tests/t-sqrt.c: Test also mpn_perfect_square_p.
1378 2014-02-08  Niels Möller  <nisse@lysator.liu.se>
1380         * mpn/generic/sec_invert.c (mpn_cnd_neg_itch): #if:ed out unused
1381         function.
1383         * mpn/generic/sec_div.c: Simplified code for the normalized case.
1385         * tests/mpn/t-div.c (main): Test mpn_sec_div_qr and mpn_sec_div_r
1386         with normalized d.
1388 2014-02-04  Niels Möller  <nisse@lysator.liu.se>
1390         * doc/gmp.texi (Low-level Functions): Document mpn_sec_add_1 and
1391         mpn_sec_sub_1.
1393 2014-02-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
1395         * mini-gmp/mini-gmp.c (mpn_rootrem): Allow NULL argument.
1397         * mini-gmp/mini-gmp.c (mpn_zero): New function.
1398         (mpz_perfect_square_p): New function.
1399         * mini-gmp/mini-gmp.h: Declare them.
1401         * mini-gmp/tests/t-sqrt.c: Test mpz_perfect_square_p.
1402         * mini-gmp/tests/t-root.c: Test also 1-th root, allow perfect powers.
1404 2014-01-29  Torbjorn Granlund  <tege@gmplib.org>
1406         * doc/gmp.texi (Floating-point Functions): Revise.
1408 2014-01-29  Niels Möller  <nisse@lysator.liu.se>
1410         * README: Don't refer to specific COPYING* files, instead refer to
1411         manual for details.
1413         * COPYING.LIB: Renamed, to...
1414         * COPYING.LESSERv3: ... new name.
1415         * COPYING: Renamed, to...
1416         * COPYINGv3: ... new name.
1417         * COPYINGv2: New file, GPLv2.
1419         * doc/gmp.texi (Copying): Document dual licensing.
1421 2014-01-27  Torbjorn Granlund  <tege@gmplib.org>
1423         * Update library files license to use LGPL3+ and GPL2+.
1425 2014-01-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
1427         * tests/mpn/t-aors_1.c: Check sec_aors_1 red zones (not smart).
1429         * mpn/generic/sec_aors_1.c: Mark the 2nd argument as const.
1430         * gmp-h.in (mpn_sec_add_1, mpn_sec_sub_1): Likewise.
1432 2014-01-24  Torbjorn Granlund  <tege@gmplib.org>
1434         * mpn/x86_64/fat/fat.c (fake_cpuid_table): Use proper steamroller and
1435         excavator values.
1437         * config.guess: Amend last AMD change.
1439         * mpn/s390_64/lshift.asm: Align loop.
1440         * mpn/s390_64/rshift.asm: Likewise.
1441         * mpn/s390_64/lshiftc.asm: Likewise.
1442         * mpn/s390_64: Add z10 cycle numbers.
1444 2014-01-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
1446         * printf/repl-vsnprintf.c: Feed case 'z' in switch (type) with case 'z'
1447         in switch (fchar).
1449         * mini-gmp/tests/t-aorsmul.c: New file, test for mpz_{add,sub}mul{,_ui}
1450         * mini-gmp/tests/Makefile: Add t-aorsmul.
1452 2014-01-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
1454         * acinclude.m4 (GMP_FUNC_VSNPRINTF): Get rid of varargs.
1456 2014-01-20  Torbjorn Granlund  <tege@gmplib.org>
1458         * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Fix duplicate entries for
1459         AMD "jaguar".
1461         * demos/expr: Get rid of varargs code and references.
1463 2014-01-19  Torbjorn Granlund  <tege@gmplib.org>
1465         * config.guess: Add new AMD CPUs (piledriver, steamroller, excavator,
1466         jaguar).
1467         * config.sub: Corresponding updates.
1468         * configure.ac: Likewise.
1469         * acinclude.m4 (X86_64_PATTERN): Likewise.
1470         * mpn/x86_64/fat/fat.c: Likewise.
1472         * Rename mpn_sec_minvert => mpn_sec_invert, many files affected.
1473         * mpn/generic/sec_invert.c: New name for sec_minvert.c.
1475         * doc/gmp.texi: Undocument mpz_array_init.
1477         * acinclude.m4 (GMP_C_STDARG): Comment out.
1478         * configure.ac: Suppress GMP_C_STDARG invocation.
1480         * Get rid of varargs code and references, many file affected.
1482         * Use mpq_t in favour of MP_RAT, many mpq files affected.
1484         * Get rid of BYTES_PER_MP_LIMB, most files affected.
1486         * mpz/iset.c: Avoid overflow in allocation computation.
1487         * mpz/mul.c: Likewise.
1488         * mpf/init.c: Likewise.
1489         * mpf/init2.c: Likewise.
1490         * mpf/iset.c: Likewise.
1491         * mpf/iset_d.c: Likewise.
1492         * mpf/iset_si.c: Likewise.
1493         * mpf/iset_str.c: Likewise.
1494         * mpf/iset_ui.c: Likewise.
1496         * mpz/array_init.c: Avoid two overflow scenarios in allocation
1497         computation.
1499         * mpn/s390_64/z10/gmp-mparam.h: New file.
1501         * mpz/clears.c: Call __gmp_free_func ourselves instead of via
1502         mpz_clears.
1503         * mpf/clears.c: Analogous change.
1504         * mpq/clears.c: Analogous change.
1506         * mpz/clear.c: Add cast to avoid overflow of (later ignored) argument.
1507         * mpf/clear.c: Likewise.
1509 2014-01-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
1511         * mini-gmp/mini-gmp.c (mpn_popcount): New function.
1512         (mpz_popcount): Use it.
1513         (mpz_addmul_ui, mpz_addmul, mpz_submul_ui, mpz_submul): Added.
1514         * mini-gmp/mini-gmp.h: Declare them.
1516 2014-01-18  Niels Möller  <nisse@lysator.liu.se>
1518         * tests/mpn/t-aors_1.c: Test also mpn_sec_add_1 and mpn_sec_sub_1.
1520         * tests/mpn/t-minvert.c (main): Pass smallest allowed bit_size
1521         argument to mpn_sec_minvert.
1523 2014-01-18  Marc Glisse  <marc.glisse@inria.fr>
1525         * doc/gmp.texi (C++ Interface Limitations): Warn against C++11 auto.
1527 2014-01-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
1529         * tests/t-parity.c: Use 1UL to generate unsigned constants.
1530         * tests/t-constants.c: Disable a non portable (unneeded) check.
1532 2014-01-18  Niels Möller  <nisse@lysator.liu.se>
1534         * mpn/generic/sec_aors_1.c (mpn_sec_add_1, mpn_sec_sub_1): New
1535         file.
1537         * mpn/generic/sec_minvert.c (mpn_sec_add_1_itch, mpn_sec_add_1):
1538         Deleted static definitions.
1539         (mpn_cnd_swap): Use volatile.
1541         * configure.ac (gmp_mpn_functions): sec_add_1 and sec_sub_1.
1542         (GMP_MULFUNC_CHOICES): Set up for sec_aors_1.
1544 2014-01-16  Niels Möller  <nisse@lysator.liu.se>
1546         * tune/common.c (speed_mpn_sec_minvert): New function.
1547         * tune/speed.h: Declare it.
1548         (SPEED_ROUTINE_MPN_SEC_MINVERT): New macro.
1549         * tune/speed.c (routine): Added mpn_sec_minvert.
1551         * mini-gmp/mini-gmp.c (mp_bits_per_limb): New const value.
1552         * mini-gmp/mini-gmp.h: Declare it.
1554 2014-01-12  Marc Glisse  <marc.glisse@inria.fr>
1556         * demos/expr/expr.h: Add extern "C" for C++.
1558 2014-01-11  Torbjorn Granlund  <tege@gmplib.org>
1560         * doc/gmp.texi (Notes for Particular Systems): Add items about old
1561         NetBSD and current FreeBSD m4 problems.  Add item about FreeBSD's
1562         broken limits.h.
1564 2014-01-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
1566         * gmp-impl.h: Declare all _itch functions using ATTRIBUTE_CONST.
1568 2014-01-05  Torbjorn Granlund  <tege@gmplib.org>
1570         * configure.ac (alpha): Set extra_functions conditionally.
1572         * gmp-h.in (mpn_sec_minvert): Remove formal parameters.
1574         * doc/gmp.texi: Improve doc for several functions.
1576         * mpn/generic/sec_tabselect.c: Declare input arg using 'const'.
1577         * gmp-h.in: Analogous change.
1579         * gmp-h.in: Declare all itch functions using __GMP_ATTRIBUTE_PURE.
1580         * gmp-impl.h: Likewise.
1582 2014-01-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
1584         * tests/mpn/t-minvert.c: Always compare with mpz_invert results,
1585         add red zone to scratch.
1586         * tests/mpn/t-sizeinbase.c: New test.
1587         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-sizeinbase.c .
1588         * tests/mpn/t-div.c: Use mpn_sec_div_*_itch().
1590         * mpn/generic/pow_1.c: Micro-optimisation.
1592 2014-01-04  Torbjorn Granlund  <tege@gmplib.org>
1594         * acinclude.m4 (GMP_PROG_M4): Avoid hex output, since case varies.
1596 2014-01-03  Torbjorn Granlund  <tege@gmplib.org>
1598         * config.guess: Support newer haswell, broadwell, silvermont.
1599         * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Likewise.
1601         * acinclude.m4 (GMP_PROG_M4): Check that eval's radix argument work.
1603         * mpz/invert.c: Rely on gcdext for all operands, removing faulty
1604         special case.
1605         * tests/mpz/t-invert.c: Enforce correct behaviour for |mod| = 1.
1607 2014-01-02  Niels Möller  <nisse@lysator.liu.se>
1609         * doc/gmp.texi (Low-level Functions): Document mpn_sizeinbase.
1611         Enable previously unused mpn_sizeinbase function.
1612         * configure.ac (gmp_mpn_functions): Added sizeinbase.
1613         * gmp-h.in (mpn_sizeinbase): New prototype.
1615 2014-01-02  Marc Glisse  <marc.glisse@inria.fr>
1617         * gmp-impl.h: Always include <limits.h>.
1618         * tests/mpn/t-get_d.c: Remove comment about <limits.h>
1620         * gmp-h.in (__GMP_USHRT_MAX): Use the promoted type.
1621         * gmp-impl.h (USHRT_HIGHBIT, SHRT_MIN, SHRT_MAX): Likewise.
1622         * tests/t-constants.c: Adapt printf strings.
1623         * tests/t-gmpmax.c: Likewise.
1625         * tests/mpn/t-hgcd_appr.c (hgcd_appr_valid_p): Add parentheses.
1627 2014-01-01  Torbjorn Granlund  <tege@gmplib.org>
1629         * doc/gmp.texi (Low-level Functions for cryptography): Update interface
1630         for mpn_sec_div_qr and fix typos in mpn_sec_minvert text.
1632         * mpn/generic/sec_div.c: Rewrite to make mpn_sec_div_qr return high
1633         quotient limb.
1634         * gmp-h.in (mpn_sec_div_qr): Update declaration.
1635         * tests/mpn/t-div.c: Adapt.
1637 2013-12-31  Niels Möller  <nisse@lysator.liu.se>
1639         * doc/gmp.texi (Low-level Functions for cryptography): Document
1640         mpn_sec_minvert.
1642 2013-12-30  Marc Glisse  <marc.glisse@inria.fr>
1644         * doc/gmp.texi (C++ interface internals): Break long line.
1646 2013-12-30  Torbjorn Granlund  <tege@gmplib.org>
1648         * doc/gmp.texi (Low-level Functions for cryptography): New section.
1650 2013-12-29  Niels Möller  <nisse@lysator.liu.se>
1652         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-minvert.
1653         * tests/mpn/t-minvert.c: New file.
1655         * configure.ac (gmp_mpn_functions): Added sec_minvert.
1656         * gmp-h.in (mpn_sec_minvert, mpn_sec_minvert_itch): New
1657         declarations.
1658         * mpn/generic/sec_minvert.c (mpn_sec_minvert)
1659         (mpn_sec_minvert_itch): New functions.
1660         (mpn_sec_add_1, mpn_cnd_neg, mpn_cnd_swap, mpn_sec_eq_ui): New
1661         helper functions.
1663 2013-12-28  Torbjorn Granlund  <tege@gmplib.org>
1665         * mpn/generic/sec_powm.c: Fix an ASSERT.
1667         * gmp-h.in (mpn_sec_mul, mpn_sec_mul_itch): New declarations.
1668         * gmp-h.in (mpn_sec_sqr, mpn_sec_sqr_itch): Likewise.
1669         * mpn/generic/sec_mul.c: New file.
1670         * mpn/generic/sec_sqr.c: New file.
1672         * gmp-h.in (mpn_sec_powm, mpn_sec_powm_itch): New declarations.
1673         * gmp-h.in (mpn_sec_div_qr, mpn_sec_div_qr_itch): Likewise.
1674         * gmp-h.in (mpn_sec_div_r, mpn_sec_div_r_itch): Likewise.
1675         * gmp-impl: Remove declarations of above functions.
1677         * configure.ac (gmp_mpn_functions): Add sec_mul and sec_sqr.
1679 2013-12-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
1681         * Update many file's encoding to UTF-8.
1682         * doc/tasks.html: Update <meta content> accordingly.
1683         * doc/projects.html: Likewise.
1685 2013-12-26  Torbjorn Granlund  <tege@gmplib.org>
1687         * configure.ac: Rename mpn_blah_sec to mpn_sec_blah.
1688         * gmp-impl.h: Corresponding changes.
1689         * mpn/asm-defs.m4: Corresponding changes.
1690         * tune/Makefile.am: Corresponding changes.
1691         * tune/common.c: Corresponding changes.
1692         * tune/speed.c: Corresponding changes.
1693         * tune/speed.h: Corresponding changes.
1694         * tune/tuneup.c: Corresponding changes.
1695         * mpz/powm_sec.c: Update calls.
1696         * tests/mpn/t-div.c: Likewise.
1698         * mpn/generic/sec_powm.c: New name for mpn/generic/powm_sec.c.
1699         * mpn/generic/sec_div.c: New name for mpn/generic/sb_div_sec.c.
1700         * mpn/generic/sec_pi1_div.c: New name for mpn/generic/sbpi1_div_sec.c.
1701         * mpn/generic/sec_tabselect.c: New name for mpn/generic/tabselect.c.
1703         * mpn/alpha/sec_tabselect.asm: New name for tabselect.asm.
1704         * mpn/arm/neon/sec_tabselect.asm: New name for tabselect.asm.
1705         * mpn/arm/sec_tabselect.asm: New name for tabselect.asm.
1706         * mpn/ia64/sec_tabselect.asm: New name for tabselect.asm
1707         * mpn/powerpc32/sec_tabselect.asm: New name for tabselect.asm
1708         * mpn/powerpc64/sec_tabselect.asm: New name for tabselect.asm
1709         * mpn/sparc64/sec_tabselect.asm: New name for tabselect.asm
1710         * mpn/x86/mmx/sec_tabselect.asm: New name for tabselect.asm
1711         * mpn/x86/sec_tabselect.asm: New name for tabselect.asm
1712         * mpn/x86_64/bd1/sec_tabselect.asm: New name for tabselect.asm
1713         * mpn/x86_64/core2/sec_tabselect.asm: New name for tabselect.asm
1714         * mpn/x86_64/coreinhm/sec_tabselect.asm: New name for tabselect.asm
1715         * mpn/x86_64/coreisbr/sec_tabselect.asm: New name for tabselect.asm
1716         * mpn/x86_64/fastsse/sec_tabselect.asm: New name for tabselect.asm
1717         * mpn/x86_64/k10/sec_tabselect.asm: New name for tabselect.asm
1718         * mpn/x86_64/pentium4/sec_tabselect.asm: New name for tabselect.asm
1719         * mpn/x86_64/sec_tabselect.asm: New name for tabselect.asm
1721 2013-12-25  Torbjorn Granlund  <tege@gmplib.org>
1723         * mpz/powm_sec.c: Handle 0^e mod m specially.
1724         * mpn/generic/powm_sec.c: ASSERT that the base is non-zero.
1726 2013-12-23  Torbjorn Granlund  <tege@gmplib.org>
1728         * mpn/generic/powm_sec.c (redcify): Use passed scratch instead of
1729         locally allocated.
1730         (mpn_powm_sec_itch): Accommodate mpn_sb_div_r_sec's scratch needs.
1732 2013-12-20  Mark Sofroniou  <marks@wolfram.com>
1734         * mpn/generic/mul_fft.c: Major overhaul of types.
1736 2013-12-18  Torbjorn Granlund  <tege@gmplib.org>
1738         * doc/gmp.texi (Low-level Functions): Rewrite mpn_set_str docs.
1740 2013-12-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1742         * mpn/powerpc32/darwin.m4: Allow (and ignore) optional
1743         'toc' parameter to PROLOGUE_cpu.
1744         * mpn/powerpc32/elf.m4: Likewise.
1746 2013-12-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1748         * configure.ac: Check for ELFv2 ABI on PowerPC.
1749         * mpn/powerpc64/elf.m4: Set assembler ABI version for ELFv2
1750         and use appropriate PROLOGUE_cpu/EPILOGUE_cpu sequences.
1751         Support optional 'toc' parameter to PROLOGUE_cpu.
1752         * mpn/powerpc64/aix.m4: Allow (and ignore) optional
1753         'toc' parameter to PROLOGUE_cpu.
1754         * mpn/powerpc64/darwin.m4: Likewise.
1756         * mpn/powerpc64/mode64/dive_1.asm (mpn_divexact_1): Add 'toc'
1757         parameter to PROLOGUE.
1758         * mpn/powerpc64/mode64/divrem_1.asm (mpn_divrem_1): Likewise.
1759         * mpn/powerpc64/mode64/divrem_2.asm (mpn_divrem_2): Likewise.
1760         * mpn/powerpc64/mode64/gcd_1.asm (mpn_gcd_1): Likewise.
1761         * mpn/powerpc64/mode64/invert_limb.asm (mpn_invert_limb): Likewise.
1762         * mpn/powerpc64/mode64/mod_1_1.asm (mpn_mod_1_1p_cps): Likewise.
1763         * mpn/powerpc64/mode64/mod_1_4.asm (mpn_mod_1s_4p_cps): Likewise.
1764         * mpn/powerpc64/mode64/mode1o.asm (mpn_modexact_1c_odd): Likewise.
1765         * mpn/powerpc64/mode64/p7/gcd_1.asm (mpn_gcd_1): Likewise.
1766         * mpn/powerpc64/p6/lshift.asm (mpn_lshift): Likewise.
1767         * mpn/powerpc64/p6/lshiftc.asm (mpn_lshiftc): Likewise.
1768         * mpn/powerpc64/p6/rshift.asm (mpn_rshift): Likewise.
1769         * mpn/powerpc64/vmx/popcount.asm (mpn_popcount): Likewise.
1771 2013-12-07  Niels Möller  <nisse@lysator.liu.se>
1773         * configfsf.sub: Updated to version 2013-10-01, from gnulib.
1774         * configfsf.guess: Updated to version 2013-11-29, from gnulib.
1776 2013-12-03  Torbjorn Granlund  <tege@gmplib.org>
1778         * mpn/generic/div_qr_1.c: Make constant args asm inlines become limbs.
1779         * mpn/generic/div_qr_1n_pi1.c: Likewise.
1780         * mpn/generic/div_qr_2.c: Likewise.
1781         * mpn/generic/div_qr_2.c: Likewise.
1782         * mpn/generic/mod_1_1.c: Likewise.
1783         * mpn/generic/mod_1_2.c: Likewise.
1784         * mpn/generic/mod_1_3.c: Likewise.
1785         * mpn/generic/mod_1_4.c: Likewise.
1786         * mpn/generic/mulmid_basecase.c: Likewise.
1787         * mpn/generic/mulmod_bnm1.c: Likewise.
1788         * mpn/generic/sqrmod_bnm1.c: Likewise.
1789         * mpn/sparc64/divrem_1.c: Likewise.
1790         * mpn/sparc64/mod_1_4.c: Likewise.
1792         * mpn/generic/toom_interpolate_7pts.c (BINVERT_15): Fix typo.
1794 2013-11-11  Torbjorn Granlund  <tege@gmplib.org>
1796         * mpn/x86_64/dos64.m4 (CALL): Provide to override default.
1798 2013-11-08  Torbjorn Granlund  <tege@gmplib.org>
1800         * mpn/x86_64/x86_64-defs.m4 (CALL): Swap PIC test and macro defn.
1802         * mpn/generic/div_qr_2.c: Test HAVE_HOST_CPU_FAMILY_x86, not i386.
1804         * doc/gmp.texi: Update many URLs.
1806 2013-11-04  Torbjorn Granlund  <tege@gmplib.org>
1808         * configure.ac: Set symbol OPENBSD for x86-openbsd hosts.
1809         * mpn/x86_64/fat/fat_entry.asm (PRETEND_PIC): New name for
1810         PIC_OR_DARWIN.
1811         (PRETEND_PIC): Set also for OPENBSD.
1813 2013-10-29  Torbjorn Granlund  <tege@gmplib.org>
1815         * printf/doprnt.c (__gmp_doprnt): Use memcpy instead of strcpy.
1817 2013-10-24  Torbjorn Granlund  <tege@gmplib.org>
1819         * mpn/generic/div_qr_1u_pi2.c: New file.
1820         * mpn/generic/div_qr_1n_pi2.c: New file.
1822 2013-10-24  Niels Möller  <nisse@lysator.liu.se>
1824         * mpn/x86_64/div_qr_1n_pi1.asm: Bugfixes, for case n == 1 and
1825         in-place operation.
1826         * mpn/x86_64/k8/div_qr_1n_pi1.asm: Likewise.
1828         * mpn/generic/div_qr_1n_pi1.c (mpn_div_qr_1n_pi1): Bug fixes,
1829         off-by-one MPN_INCR_U, and support for in-place operation.
1831 2013-10-24  Torbjorn Granlund  <tege@gmplib.org>
1833         * mpn/x86/fat/fat.c (fake_cpuid_table): Add Haswell.
1835 2013-10-23  Torbjorn Granlund  <tege@gmplib.org>
1837         * mpn/x86_64/x86_64-defs.m4 (oplist): New define, data from `regnum'.
1838         (regnum): Use x86_lookup, feed oplist.
1840 2013-10-22  Niels Möller  <nisse@lysator.liu.se>
1842         * tests/devel/try.c: Support mpn_div_qr_1n_pi1.
1844         * mpn/x86_64/k8/div_qr_1n_pi1.asm: Moved the below k10 file here.
1845         Applied tweak from Torbjörn to get it to run well on k8.
1847         * mpn/x86_64/k10/div_qr_1n_pi1.asm: New file (renamed above).
1848         Differs from generic x86_64 version by using cmov.
1850         * mpn/x86_64/div_qr_1n_pi1.asm: Reordered arguments to second mul.
1851         Deleted misleading cycle annotations.
1853 2013-10-21  Niels Möller  <nisse@lysator.liu.se>
1855         * configure.ac: Add HAVE_NATIVE_mpn_div_qr_1n_pi1 to config.in.
1857         * mpn/generic/div_qr_1n_pi1.c (mpn_div_qr_1n_pi1): Fix typos
1858         affecting ASSERT.
1860 2013-10-20  Niels Möller  <nisse@lysator.liu.se>
1862         * mpn/x86_64/div_qr_1n_pi1.asm: New file.
1864         * tune/div_qr_1_tune.c (__gmpn_div_qr_1n_pi1): Check
1865         div_qr_1n_pi1_method only when !HAVE_NATIVE_mpn_div_qr_1n_pi1.
1867         * mpn/asm-defs.m4 (define_mpn): Add div_qr_1n_pi1.
1869         * tune/common.c (speed_mpn_div_qr_1): New function, replacing...
1870         (speed_mpn_div_qr_1n, speed_mpn_div_qr_1u): ... deleted functions
1871         (speed_mpn_div_qr_1n_pi1, speed_mpn_div_qr_1n_pi1_1)
1872         (speed_mpn_div_qr_1n_pi1_2): New functions.
1873         * gmp-impl.h [TUNE_PROGRAM_BUILD]: Declare div_qr_1-related tuning
1874         variables.
1875         * tune/tuneup.c (speed_mpn_div_qr_1_tune, tune_div_qr_1): New
1876         functions.
1877         (div_qr_1n_pi1_method, div_qr_1_norm_threshold)
1878         (div_qr_1_unnorm_threshold): New globals.
1879         * tune/speed.c (routine): Replaced mpn_div_qr_1n and mpn_div_qr_1u
1880         by mpn_div_qr_1, requiring ".r" parameter. Added mpn_div_qr_1n_pi1
1881         and variants.
1882         * tune/speed.h (SPEED_ROUTINE_MPN_DIV_QR_1): Use the "r" parameter
1883         as divisor.
1884         * tune/div_qr_1n_pi1_2.c: New file.
1885         * tune/div_qr_1n_pi1_1.c: New file.
1886         * tune/div_qr_1_tune.c: New file.
1887         * tune/Makefile.am (libspeed_la_SOURCES): Added div_qr_1n_pi1_1.c,
1888         div_qr_1n_pi1_2.c, and div_qr_1_tune.c.
1890         * tune/speed.c (routine): Added mpn_div_qr_1n and mpn_div_qr_1u.
1891         * tune/speed.h (SPEED_ROUTINE_MPN_DIV_QR_1): New macro.
1892         (speed_mpn_div_qr_1n, speed_mpn_div_qr_1u): Declare.
1893         * tune/common.c (speed_mpn_div_qr_1n, speed_mpn_div_qr_1u): New
1894         functions.
1896         * gmp-impl.h (mpn_div_qr_1n_pi1): Declare function.
1897         * gmp-h.in (mpn_div_qr_1): Declare function.
1898         * configure.ac (gmp_mpn_functions): Added div_qr_1 and
1899         div_qr_1n_pi1.
1900         * mpn/generic/div_qr_1.c (mpn_div_qr_1): New file and function.
1901         * mpn/generic/div_qr_1n_pi1.c (mpn_div_qr_1n_pi1): New file and
1902         function.
1903         * tests/mpn/t-div.c (main): Test mpn_div_qr_1.
1905 2013-10-17  Torbjorn Granlund  <tege@gmplib.org>
1907         * configure.ac (alpha): Pass -mieee via gcc_cflags_maybe.
1909 2013-10-16  Torbjorn Granlund  <tege@gmplib.org>
1911         * config.guess: Let AMD64 cpuid bit override pessimistic cpu guesses.
1913         * mpn/alpha/unicos.m4 (DATASTART): Accept optional align parameter.
1914         * mpn/alpha/divrem_2.asm: Use provided gp mechanisms.
1915         * mpn/alpha/default.m4 (PROLOGUE): Provide "..ng" post-gp label.
1916         * mpn/alpha/invert_limb.asm: Align table to 8-byte boundary.  Make code
1917         work if table is not fully aligned.  Properly test for BWX.
1919 2013-10-15  Torbjorn Granlund  <tege@gmplib.org>
1921         * mpn/alpha/default.m4 (DATASTART): Use RODATA instead of DATA;
1922         accept optional align parameter.
1923         * mpn/alpha/invert_limb.asm: Align table.
1924         * mpn/alpha/ev5/diveby3.asm: Likewise.
1926 2013-10-11  Torbjorn Granlund  <tege@gmplib.org>
1928         * mpn/x86/k7/mod_1_1.asm: Use 'subl' form to avoid ambiguity.
1929         * mpn/x86/k7/mod_1_4.asm: Likewise.
1931         * configure.ac (X86_64_PATTERN): Append "cc" to cclist_64 and
1932         cclist_x32.
1934 2013-10-08  Torbjorn Granlund  <tege@gmplib.org>
1935             Marc Glisse  <marc.glisse@inria.fr>
1937         * tests/mpf/reuse.c (main): Compare addresses instead of names.
1938         Use larger numbers for exponents.
1940 2013-10-08  Marc Glisse  <marc.glisse@inria.fr>
1942         * doc/mdate-sh, doc/texinfo.tex, install-sh, missing, ylwrap: Remove.
1943         * .bootstrap: Use autoreconf (and in particular automake -a).
1945         * gmp-h.in: Remove __need_size_t. Include <stddef.h>, not <cstddef>.
1947         * tests/mpf/reuse.c (main): Use small numbers as exponents.
1949 2013-10-05  Torbjorn Granlund  <tege@gmplib.org>
1951         * mpn/x86_64/atom/aorsmul_1.asm: Slight tweak.
1953         * doc/gmp.texi (ABI and ISA): Document x32.
1955         * mpn/sparc64/ultrasparct3/dive_1.asm: Use our register names.
1957 2013-09-24  Torbjorn Granlund  <tege@gmplib.org>
1959         * mpn/x86_64/atom/redc_1.asm: New file.
1961 2013-09-23  Torbjorn Granlund  <tege@gmplib.org>
1963         * mpn/x86_64/bobcat/redc_1.asm: Make the code for 1 <= n <= 3 work.
1965 2013-09-22  Torbjorn Granlund  <tege@gmplib.org>
1967         * mpn/x86_64/coreisbr/redc_1.asm: Slightly tweak basecase code.
1969         * mpn/x86_64/core2/redc_1.asm: New file.
1971         * mpn/x86_64/bobcat/redc_1.asm: New file.
1973 2013-09-21  Torbjorn Granlund  <tege@gmplib.org>
1975         * mpn/x86_64/coreinhm/redc_1.asm: New file.
1977 2013-09-21  Marc Glisse  <marc.glisse@inria.fr>
1979         * tests/mpn/t-mulmid.c: Cast arguments of printf to int to match %d.
1980         * tests/rand/t-urbui.c: Use 1UL for unsigned constant.
1981         * mpn/generic/get_str.c: Avoid temporarily pointing outside an array.
1983 2013-09-20  Torbjorn Granlund  <tege@gmplib.org>
1985         * mpn/x86_64/coreisbr/redc_1.asm: New file.
1987         * mpn/x86_64/k8/redc_1.asm: Complete rewrite.
1989         * mpn/x86_64/coreisbr/mullo_basecase.asm: Postpone pushes, short-
1990         circuit a branch.
1991         * mpn/x86_64/coreihwl/mullo_basecase.asm: Short-circuit a branch.
1993         * mpn/x86_64/core2/mullo_basecase.asm: New file.
1995 2013-09-19  Torbjorn Granlund  <tege@gmplib.org>
1997         * mpn/x86_64/fastsse/copyi-palignr.asm: Allocate more stack under DOS.
1999 2013-09-18  Torbjorn Granlund  <tege@gmplib.org>
2001         * mpn/x86_64/core2/mul_basecase.asm: New file.
2002         * mpn/x86_64/core2/sqr_basecase.asm: New file.
2004         * mpn/x86_64/coreihwl/mullo_basecase.asm: New file.
2005         * mpn/x86_64/coreisbr/mullo_basecase.asm: New file.
2007 2013-09-16  Torbjorn Granlund  <tege@gmplib.org>
2009         * mpn/x86_64/fastsse/copyi-palignr.asm: Preserve xmm6-xmm8 under DOS.
2011 2013-09-15  Torbjorn Granlund  <tege@gmplib.org>
2013         * mpn/x86_64/tabselect.asm: Use R8 for bit testing.
2015         * mpn/x86_64/coreihwl/mul_basecase.asm: Replace mul_1 code.
2017         * mpn/x86_64/coreisbr/aorsmul_1.asm: Rewrite.
2019 2013-09-12  Torbjorn Granlund  <tege@gmplib.org>
2021         * mpn/ia64/gcd_1.asm: Use dep for combining table base and low bits.
2023         * mpn/x86_64/fastsse/com-palignr.asm: Implement temp fix to properly
2024         handle overlap.
2026 2013-09-10  Torbjorn Granlund  <tege@gmplib.org>
2028         * mpn/x86_64/fastsse/copyi-palignr.asm: Rewrite rp != up (mod 16) code
2029         to make it handle any allowed overlap.
2031 2013-09-09  Torbjorn Granlund  <tege@gmplib.org>
2033         * mpn/x86_64/atom/com.asm: New file, grabbing fastsse code.
2035         * mpn/x86_64/bd1/copyi.asm: New file, grabbing fastsse code.
2036         * mpn/x86_64/bd1/copyd.asm: Likewise.
2037         * mpn/x86_64/bd1/com.asm: Likewise.
2039         * mpn/x86_64/fastavx/copyi.asm: New file.
2040         * mpn/x86_64/fastavx/copyd.asm: New file.
2042 2013-09-05  Torbjorn Granlund  <tege@gmplib.org>
2044         * mpn/x86_64/coreihwl/aorsmul_1.asm: Streamline.
2046 2013-09-04  Torbjorn Granlund  <tege@gmplib.org>
2048         * mpn/x86_64/coreihwl/sqr_basecase.asm: Implement larger "corner".
2049         Misc tuning.
2051 2013-09-03  Torbjorn Granlund  <tege@gmplib.org>
2053         * mpn/x86_64/coreihwl/redc_1.asm: New file.
2055         * mpn/x86_64/x86_64-defs.m4 (mulx): Handle negative offsets.
2057 2013-08-31  Torbjorn Granlund  <tege@gmplib.org>
2059         * mpn/x86_64/coreisbr/sqr_basecase.asm: New file.
2061         * mpn/x86_64/sqr_diag_addlsh1.asm: New file.
2063 2013-08-30  Torbjorn Granlund  <tege@gmplib.org>
2065         * mpn/x86_64/fat/mul_basecase.c: New file.
2066         * mpn/x86_64/fat/sqr_basecase.c: New file.
2067         * mpn/x86_64/fat/mullo_basecase.c: New file.
2068         * mpn/x86_64/fat/redc_1.c: New file.
2070 2013-08-29  Torbjorn Granlund  <tege@gmplib.org>
2072         * mpn/x86_64/k8/mul_basecase.asm: Move top-level basecase file to k8
2073         subdir.
2074         * mpn/x86_64/k8/sqr_basecase.asm: Likewise.
2075         * mpn/x86_64/k8/redc_1.asm: Likewise.
2076         * mpn/x86_64/k8/mullo_basecase.asm: Likewise.
2077         * mpn/x86_64/k8/mulmid_basecase.asm: Likewise.
2079         * mpn/ia64/aors_n.asm: Clean up some bundlings.
2081         * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Support Haswell.
2082         (fake_cpuid_table): Likewise.
2084         * configure.ac (x86): Remove any mulx paths.  Let bwl path = hwl path.
2085         (fat_path): Add coreihwl.
2087         * mpn/x86_64/coreihwl/aorsmul_1.asm: Move from `mulx' directory, use
2088         mulx() macro.
2089         * mpn/x86_64/coreihwl/mul_1.asm: Likewise.
2090         * mpn/x86_64/coreihwl/mul_2.asm: Likewise.
2091         * mpn/x86_64/coreihwl/mul_basecase.asm: Likewise.
2092         * mpn/x86_64/coreihwl/sqr_basecase.asm: Likewise.
2094         * mpn/x86_64/x86_64-defs.m4 (mulx): New macro.
2095         (regnum, regnumh, ix): Supporting macros.
2097 2013-08-28  Torbjorn Granlund  <tege@gmplib.org>
2099         * mpn/x86_64/coreisbr/divrem_1.asm: New file.
2101 2013-08-23  Torbjorn Granlund  <tege@gmplib.org>
2103         * mpn/x86_64/fastsse/com-palignr.asm: New file, closely based on
2104         copyi-palignr.asm.
2106         * mpn/x86_64/fastsse/copyi.asm Use "test R8(reg)" instead of "bt".
2107         * mpn/x86_64/fastsse/copyd-palignr.asm: Likewise.
2108         * mpn/x86_64/fastsse/copyi-palignr.asm: Likewise.
2109         * mpn/x86_64/fastsse/lshift-movdqu2.asm: Likewise.
2110         * mpn/x86_64/fastsse/lshiftc-movdqu2.asm: Likewise.
2111         * mpn/x86_64/fastsse/rshift-movdqu2.asm: Likewise.
2112         * mpn/x86_64/fastsse/tabselect.asm: Likewise.
2114         * mpn/sparc64/ultrasparct3/sqr_diag_addlsh1.asm: New file.
2116         * mpn/alpha/aorslsh2_n.asm: New file.
2117         * mpn/alpha/aorslsh1_n.asm: Rewrite.
2118         * mpn/alpha/ev6/aorslsh1_n.asm: New file.
2120 2013-08-21  Torbjorn Granlund  <tege@gmplib.org>
2122         * mpn/alpha/sqr_diag_addlsh1.asm: New file.
2123         * mpn/alpha/sqr_diagonal.asm: Remove.
2124         * mpn/alpha/ev6/sqr_diagonal.asm: Remove.
2126 2013-08-20  Torbjorn Granlund  <tege@gmplib.org>
2128         * mpn/powerpc32/sqr_diag_addlsh1.asm: New file.
2129         * mpn/powerpc32/sqr_diagonal.asm: Remove.
2131 2013-08-15  Torbjorn Granlund  <tege@gmplib.org>
2133         * mpn/x86_64/coreihwl/mulx/sqr_basecase.asm: New file.
2135 2013-08-05  Torbjorn Granlund  <tege@gmplib.org>
2137         * mpn/x86_64/coreisbr/aors_n.asm: Complete rewrite.
2139 2013-08-04  Torbjorn Granlund  <tege@gmplib.org>
2141         * mpn/x86_64/coreihwl/mulx/mul_basecase.asm: New file.
2143         * mpn/x86_64/bd1/mul_2.asm: New file.
2145         * mpn/x86_64/coreihwl/gmp-mparam.h: New file.
2147 2013-08-03  Torbjorn Granlund  <tege@gmplib.org>
2149         * mpn/x86_64/coreihwl/mulx/mul_2.asm: New file.
2150         * mpn/x86_64/coreihwl/mulx/addmul_2.asm: New file.
2152         * mpn/x86_64/coreinhm/aorsmul_1.asm: New file.
2154         * mpn/x86_64/coreisbr/mul_basecase.asm: Save some O(n) and O(1) cycles.
2156         * mpn/x86_64/coreisbr/mul_2.asm: New file.
2158 2013-08-02  Torbjorn Granlund  <tege@gmplib.org>
2160         * mpn/x86_64/coreisbr/addmul_2.asm: Complete rewrite.
2162 2013-08-01  Torbjorn Granlund  <tege@gmplib.org>
2164         * mpn/x86_64/bd1/mul_basecase.asm: New file.
2166         * mpn/x86_64/coreisbr/mul_basecase.asm: New file.
2168         * mpn/x86_64/coreihwl/aorsmul_1.asm: New file.
2170 2013-07-31  Torbjorn Granlund  <tege@gmplib.org>
2172         * mpn/x86_64/atom/mul_2.asm: New file.
2173         * mpn/x86_64/atom/addmul_2.asm: New file.
2174         * mpn/x86_64/atom/mul_1.asm: New file.
2175         * mpn/x86_64/atom/aorsmul_1.asm: New file.
2177         * mpn/x86_64/coreihwl/mul_1.asm: New file.
2179         * configure.ac (x86): Add Haswell-specific path.
2181         * configure.in (fat_functions): Add cnd_add_n, cnd_sub_n..
2182         * gmp-impl.h (struct cpuvec_t): Add fields for new fat functions.
2183         * gmp-impl.h: Adjust corresponding declarations.
2185         * mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): Add new fat functions.
2186         * mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): Likewise.
2187         * mpn/x86_64/fat/fat.c (__gmpn_cpuvec): Likewise.
2188         * mpn/x86/fat/fat.c (__gmpn_cpuvec): Likewise.
2190 2013-07-30  Torbjorn Granlund  <tege@gmplib.org>
2192         * mpn/x86_64/coreisbr/popcount.asm: New file.
2194 2013-07-23  Torbjorn Granlund  <tege@gmplib.org>
2196         * mpn/x86_64/bobcat/aors_n.asm: New file.
2198         * mpn/x86_64/pentium4/aorslshC_n.asm: Remove a spurious emms insn.
2200         * mpn/x86_64/bd1/aorrlsh1_n.asm: New file.
2201         * mpn/x86_64/bd1/sublsh1_n.asm: New file.
2203 2013-07-22  Torbjorn Granlund  <tege@gmplib.org>
2205         * mpn/powerpc64/mode64/mod_1_1.asm: Handle little-endian mode.
2206         * mpn/powerpc64/mode64/mod_1_4.asm: Likewise.
2208 2013-07-16  Torbjorn Granlund  <tege@gmplib.org>
2210         * doc/gmp.texi: Declare countless of function arguments as 'const'.
2212 2013-07-15  Torbjorn Granlund  <tege@gmplib.org>
2214         * mpn/x86_64/core2/aors_n.asm: Rewrite.
2216         * mpn/generic/sb_div_sec.c: Compute inverse as floor(B^2/(dh+1)), per
2217         Niels' suggestion.
2218         * mpn/generic/sbpi1_div_sec.c: Remove inverse rounding-up code.
2220 2013-07-14  Torbjorn Granlund  <tege@gmplib.org>
2222         * mpn/powerpc64/mode64/divrem_1.asm: Remove explicit nop after CALL.
2223         * mpn/powerpc64/mode64/divrem_2.asm: Likewise.
2224         * mpn/powerpc64/mode64/mod_1_1.asm: Likewise.
2225         * mpn/powerpc64/mode64/mod_1_4.asm: Likewise.
2227 2013-07-13  Torbjorn Granlund  <tege@gmplib.org>
2229         * mpn/x86/atom/cnd_add_n.asm: New file.
2230         * mpn/x86/atom/cnd_sub_n.asm: New file.o
2232 2013-07-12  Torbjorn Granlund  <tege@gmplib.org>
2234         * mpn/generic/sbpi1_div_sec.c: Partial rewrite.
2236 2013-07-11  Torbjorn Granlund  <tege@gmplib.org>
2238         * mpn/x86_64/cnd_aors_n.asm: Tweak for better speed on K8, bobcat, bd1,
2239         NHM, Atom.
2241 2013-07-05  Torbjorn Granlund  <tege@gmplib.org>
2243         * mpn/powerpc64/p7/copyi.asm: Handle n = 0.
2244         * mpn/powerpc64/p7/copyd.asm: Likewise.
2246 2013-07-04  Torbjorn Granlund  <tege@gmplib.org>
2248         * mpn/powerpc64/mode64/p7/aormul_2.asm: New file.
2250         * mpn/powerpc64/darwin.m4 (EXTRA_REGISTER): New define.
2251         * mpn/powerpc64/aix.m4: New define (actually undefine).
2252         * mpn/powerpc64/elf.m4: Likewise.
2254 2013-07-03  Torbjorn Granlund  <tege@gmplib.org>
2256         * mpn/powerpc64/com.asm: Rewrite.
2258         * mpn/powerpc64/p7/copyi.asm: New file.
2259         * mpn/powerpc64/p7/copyd.asm: New file.
2261 2013-07-02  Torbjorn Granlund  <tege@gmplib.org>
2263         * mpn/powerpc64/mode64/gcd_1.asm: New file.
2264         * mpn/powerpc64/mode64/p7/gcd_1.asm: New file.
2266 2013-07-01  Torbjorn Granlund  <tege@gmplib.org>
2268         * configure.ac: Comment out AC_PROG_F77.
2270         * mpn/powerpc64/mode64/rsh1add_n.asm: Remove.
2271         * mpn/powerpc64/mode64/rsh1sub_n.asm: Remove.
2272         * mpn/powerpc64/mode64/rsh1aors_n.asm: New file, code not based on
2273         removed files.
2275 2013-06-28  Marc Glisse  <marc.glisse@inria.fr>
2277         * cxx/ismpf.cc: Use GMP_DECIMAL_POINT.
2278         * cxx/osmpf.cc: Likewise.
2279         * tests/cxx/t-locale.cc: Likewise.
2281 2013-06-28  Torbjorn Granlund  <tege@gmplib.org>
2283         * mpn/powerpc64/mode64/p7/aorsorrlshC_n.asm: New file.
2284         * mpn/powerpc64/mode64/p7/aorsorrlsh1_n.asm: New file.
2285         * mpn/powerpc64/mode64/p7/aorsorrlsh2_n.asm: New file.
2287         * mpn/powerpc64/mode64/aorsorrlshC_n.asm: Use alias regname.
2289 2013-06-27  Torbjorn Granlund  <tege@gmplib.org>
2291         * mpn/powerpc64/mode64/p7/aors_n.asm: New file.
2293 2013-06-22  Torbjorn Granlund  <tege@gmplib.org>
2295         * aorslshC_n.asm, aorslsh2_n.asm, aorslsh1_n.asm: Remove.
2296         * aorsorrlshC_n.asm, aorsorrlsh1_n.asm, aorsorrlsh2_n.asm: New files.
2298 2013-06-19  Torbjorn Granlund  <tege@gmplib.org>
2300         * mpn/powerpc64/p6/lshift.asm: Rewrite switching-into-loop code.
2301         * mpn/powerpc64/p6/rshift.asm: Likewise.
2302         * mpn/powerpc64/p6/lshiftc.asm: Likewise.
2304 2013-06-17  Torbjorn Granlund  <tege@gmplib.org>
2306         * mpn/powerpc64/p6/lshift.asm: Fix typo in label reference.
2307         For 32-bit mode, zero extend `n' argument and split retval.
2308         * mpn/powerpc64/p6/rshift.asm: Likewise.
2309         * mpn/powerpc64/p6/lshiftc.asm: Likewise.
2311 2013-06-10  Torbjorn Granlund  <tege@gmplib.org>
2313         * mpn/generic/mu_div_q.c: Remove obsolete comment.
2315 2013-06-09  Marc Glisse  <marc.glisse@inria.fr>
2317         * mpn/generic/get_d.c (mpn_get_d): Avoid signed overflow.
2318         * mpz/kronzs.c (mpz_kronecker_si): Use ABS_CAST.
2320 2013-05-31  Torbjorn Granlund  <tege@gmplib.org>
2322         * mpn/generic/mu_div_q.c: Call mpn_mu_divappr_q for entire division,
2323         never just for tail.  (This fixes performance issues at the expense of
2324         memory needs.)
2326 2013-05-26  Torbjorn Granlund  <tege@gmplib.org>
2328         * configure.ac (*sparc*-*-*): Major overhaul.
2330 2013-05-22  Torbjorn Granlund  <tege@gmplib.org>
2332         * doc/gmp.texi (Reporting Bugs): Ask for configure's output.
2334         * mpn/ia64/divrem_2.asm: Don't clobber f16-f18.
2336 2013-05-20  Torbjorn Granlund  <tege@gmplib.org>
2338         * mpn/arm/udiv.asm: Change spacing to work around binutils bug.
2340 2013-05-16  Torbjorn Granlund  <tege@gmplib.org>
2342         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
2344         * tests/misc.c (tests_hardware_getround, tests_hardware_setround):
2345         Avoid assembly dependency unless WANT_ASSEMBLY.
2347         * configure.ac (WANT_ASSEMBLY): Conditionally define.
2349 2013-05-14  Torbjorn Granlund  <tege@gmplib.org>
2351         * configure.ac (arm1156): Don't fall back to plain v6 compiler option.
2353 2013-05-11  Torbjorn Granlund  <tege@gmplib.org>
2355         * mpn/x86_64/coreisbr/mul_1.asm: Handle n = 1 for DOS64.  Streamline.
2356         * mpn/x86_64/coreisbr/aorsmul_1.asm: Streamline.
2358 2013-05-10  Torbjorn Granlund  <tege@gmplib.org>
2360         * mpn/x86_64/coreisbr/aorsmul_1.asm: Fix, then enable DOS64 support.
2361         * mpn/x86_64/coreisbr/mul_1.asm: Enable DOS64 support.
2363         * mpn/x86/p6/mmx/gmp-mparam.h: Set down SQR_TOOM2_THRESHOLD to parent
2364         directory value.
2366 2013-05-09  Torbjorn Granlund  <tege@gmplib.org>
2368         * configure.ac (--enable-fake-cpuid): New option.
2369         * mpn/x86_64/fat/fat.c (WANT_FAKE_CPUID): Remove defaulting.
2370         * mpn/x86/fat/fat.c (WANT_FAKE_CPUID): Likewise.
2372         * mpn/x86_64/bd1/mul_1.asm: Fix typo.
2374 2013-05-07  Torbjorn Granlund  <tege@gmplib.org>
2376         * mpn/x86_64/fat/fat.c (fake_cpuid): Handle 0x80000001 request.
2377         (fake_cpuid_available): Remove unused function.
2379         * mpn/generic/mod_1_1.c: Cast constant udiv_rnnd_preinv arguments.
2380         * mpn/generic/mod_1_2.c: Likewise.
2381         * mpn/generic/mod_1_3.c: Likewise.
2382         * mpn/generic/mod_1_4.c: Likewise.
2383         * mpn/generic/divrem_2.c: Likewise.
2385 2013-05-06  Torbjorn Granlund  <tege@gmplib.org>
2387         * config.guess (power*): Handle all ppc970 variants.
2389 2013-05-03  David S. Miller  <davem@davemloft.net>
2391         * tune/common.c (speed_mpn_addlsh1_n, speed_mpn_sublsh1_n,
2392         speed_mpn_rsblsh1_n, speed_mpn_addlsh2_n, speed_mpn_sublsh2_n,
2393         speed_mpn_rsblsh2_n): Don't define if these routines are macros.
2394         * tune/speed.c (routine): Likewise don't table if they are macros.
2396         * mpn/sparc64/ultrasparct3/addmul_1.asm: Add T4 and T3 timings.
2397         * mpn/sparc64/ultrasparct3/aormul_4.asm: Likewise.
2398         * mpn/sparc64/ultrasparct3/aorslsh_n.asm: Likewise.
2399         * mpn/sparc64/ultrasparct3/cnd_aors_n.asm: Likewise.
2400         * mpn/sparc64/ultrasparct3/submul_1.asm: Likewise.
2402 2013-05-03  Torbjorn Granlund  <tege@gmplib.org>
2404         * mpn/sparc64/ultrasparct3/aorslsh_n.asm: Invoke INITCY where it has
2405         effect.
2407         * gmp-impl.h: Amend last change.
2408         * tests/devel/try.c (choice_array): Don't try to table addlsh1_n etc if
2409         a macro.
2411 2013-05-02  Torbjorn Granlund  <tege@gmplib.org>
2413         * mpn/arm/copyd.asm: Suppress dead pointer update.
2414         * mpn/arm/copyi.asm: Likewise.
2415         * mpn/arm/neon/logops_n.asm: Likewise.
2416         * mpn/arm/neon/tabselect.asm: Likewise.
2417         * mpn/arm/rshift.asm: Likewise.
2418         * mpn/arm/tabselect.asm: Likewise.
2419         * mpn/arm/v6/dive_1.asm: Likewise
2420         * mpn/arm/v7a/cora15/neon/copyi.asm: Likewise.
2422         * mpn/arm/v7a/cora15/neon/com.asm: New file.
2424 2013-05-01  Torbjorn Granlund  <tege@gmplib.org>
2426         * mpn/sparc64/ultrasparct3/aormul_4.asm: New file.
2428         * configure.ac (GMP_MULFUNC_CHOICES): Support mul_3 + addmul_3 and
2429         mul_4 + addmul_4.
2431         * mpn/sparc64/ultrasparct3/aormul_2.asm: Optimise lead-in code.
2433         * mpn/sparc64/ultrasparct3/missing.m4 (addxccc): Allow g2 as input.
2434         (umulxhi): Save and restore o7 to allow it as in/out parameter.
2436 2013-04-29  Torbjorn Granlund  <tege@gmplib.org>
2438         * mpn/arm/v7a/cora15/cnd_aors_n.asm: New file, was mis-named.
2440         * mpn/sparc64/ultrasparct3/addmul_1.asm: Rewrite.
2442         * mpn/sparc64/ultrasparct3/submul_1.asm: Rewrite.
2444         * mpn/sparc64/ultrasparct3/cnd_aors_n.asm: New file.
2446         * gmp-impl.h: Override mpn_addlsh1_n, mpn_addlsh2_n, mpn_sublsh1_n, etc
2447         with mpn_addlsh_n, etc when !HAVE_NATIVE the former but HAVE_NATIVE the
2448         latter.
2450         * mpn/sparc64/ultrasparct3/aorslsh_n.asm: New file.
2452         * configure.ac (sparc-*-*): Recognise t5 along with t3 and t4.
2453         Remove sparc64/ultrasparct1 from path_64 for T3, T3, and T5.
2455 2013-04-27  Mike Frysinger  <vapier@gentoo.org>
2457         * configure.ac (arm*-*-*): Set up path also for plainest CPU variants.
2459 2013-04-27  Torbjorn Granlund  <tege@gmplib.org>
2461         * mpn/arm/v6/popham.asm: New file.
2463         * mpn/arm/v7a/cora15/cnd-aors_n.asm: New file.
2465 2013-04-25  Torbjorn Granlund  <tege@gmplib.org>
2467         * mpn/arm/mod_34lsub1.asm: Clear carry smarter.
2469         * mpn/arm/v7a/cora15/logops_n.asm: Conditionally suppress conditionally
2470         used code.
2472         * mpn/arm/v7a/cora15/submul_1.asm: New file.
2474 2013-04-24  Torbjorn Granlund  <tege@gmplib.org>
2476         * mpn/arm/v7a/cora15/com.asm: New file.
2478         * mpn/arm/v7a/cora15/logops_n.asm: New file.
2480 2013-04-19  Torbjorn Granlund  <tege@gmplib.org>
2482         * mpn/arm/v7a/cora15/aors_n.asm: New file.
2484         * mpn/arm/v7a/cora15/addmul_1.asm: Rewrite.
2486 2013-04-18  Torbjorn Granlund  <tege@gmplib.org>
2488         * mpn/alpha/tabselect.asm: New file.
2490 2013-04-17  Torbjorn Granlund  <tege@gmplib.org>
2492         * mpn/powerpc32/tabselect.asm: New file.
2494         * longlong.h (arm64 count_trailing_zeros): New.
2496         * mpn/arm64/invert_limb.asm: New file.
2498         * mpn/generic/dive_1.c: Rewrite to use Hensel division also for
2499         size = 1.
2501         * mpn/generic/mod_1_1.c (add_mssaaaa): Provide VIS3 variant.
2503         * configure.ac: Remove "missing" from extra_functions_64 for coreibwl.
2505         * mpn/sparc64/ultrasparct3/mul_1.asm: Decrease loop alignment.
2506         * mpn/sparc64/ultrasparct3/aormul_2.asm: Likewise.
2508 2013-04-16  Torbjorn Granlund  <tege@gmplib.org>
2510         * mpn/alpha/invert_limb.asm: Generate table.
2511         * mpn/powerpc64/mode64/invert_limb.asm: Likewise.
2512         * mpn/s390_64/invert_limb.asm: Likewise.
2513         * mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise.
2514         * mpn/x86_64/invert_limb_table.asm: Likewise.
2516 2013-04-15  David S. Miller  <davem@davemloft.net>
2518         * mpn/sparc32/sparc-defs.m4 (LEA64): New macro.
2519         * mpn/sparc64/gcd_1.asm: Use it.
2520         * mpn/sparc64/ultrasparct3/dive_1.asm: Likewise.
2521         * mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise.
2522         * mpn/sparc64/ultrasparct3/mode1o.asm: Likewise.
2524         * mpn/sparc64/gcd_1.asm: Use RODATA, TYPE, and SIZE.
2526 2013-04-15  Torbjorn Granlund  <tege@gmplib.org>
2528         * mpn/sparc64/ultrasparct3/invert_limb.asm: Avoid addend for GOT entry,
2529         it is not portable.
2531         * mpn/sparc64/tabselect.asm: New file.
2533         * mpn/x86/mmx/tabselect.asm: New file.
2534         * configure.ac (x86): Add x86/mmx to path for relevant CPUs.
2536         * mpn/sparc64/gcd_1.asm: Use rdpc for PIC.
2537         * mpn/sparc64/ultrasparct3/mode1o.asm: Use rdpc for PIC.
2538         * mpn/sparc64/ultrasparct3/dive_1.asm: Use rdpc for PIC.
2539         * mpn/sparc64/ultrasparct3/invert_limb.asm: Handle PIC, use rdpc.
2541         * Revert remaining parts of recent sparc LEA changes.
2543 2013-04-14  David S. Miller  <davem@davemloft.net>
2545         * mpn/sparc32/v9/sqr_diagonal.asm: Revert LEA and INT32 changes.
2546         * mpn/sparc64/gcd_1.asm: Likewise.
2548 2013-04-13  Torbjorn Granlund  <tege@gmplib.org>
2550         * mpn/x86_64/bd1/tabselect.asm: New file.
2551         * mpn/x86_64/coreisbr/tabselect.asm: New file.
2552         * mpn/x86_64/k10/tabselect.asm: New file.
2553         * mpn/x86_64/coreinhm/tabselect.asm: New file.
2554         * mpn/x86_64/core2/tabselect.asm: New file.
2555         * mpn/x86_64/pentium4/tabselect.asm: New file.
2557         * mpn/x86_64/fastsse/tabselect.asm: New file.
2558         * mpn/arm/neon/tabselect.asm: Rewrite.
2559         * mpn/arm/tabselect.asm: Rewrite.
2560         * mpn/powerpc64/tabselect.asm: Rewrite.
2561         * mpn/x86_64/tabselect.asm: Rewrite.
2563         * tune/speed.h (SPEED_ROUTINE_MPN_TABSELECT): Implement special code,
2564         making .r argument be table width.
2566 2013-04-11  David S. Miller  <davem@davemloft.net>
2568         * mpn/sparc32/sparc-defs.m4 (LEA): Remove unused local label.
2569         (LEA_LEAF): Likewise.
2571 2013-04-11  Niels Möller  <nisse@lysator.liu.se>
2573         * mpn/arm/v6/submul_1.asm: New file, using the corresponding
2574         addmul_1 loop + complement trick.
2576 2013-04-10  David S. Miller  <davem@davemloft.net>
2578         * acinclude.m4 (GMP_ASM_SPARC_GOTDATA,
2579         GMP_ASM_SPARC_SHARED_THUNKS): New feature tests.
2580         * configure.ac: Call GMP_ASM_SPARC_GOTDATA and
2581         GMP_ASM_SPARC_SHARED_THUNKS on sparc.
2582         * mpn/sparc32/sparc-defs.m4 (LEA, LEA_LEAF, LEA_THUNK): New macros.
2583         * mpn/sparc32/udiv.asm: Convert over to LEA, LEA_LEAF, and LEA_THUNK.
2584         * mpn/sparc32/v8/addmul_1.asm: Likewise.
2585         * mpn/sparc32/v8/mul_1.asm: Likewise.
2586         * mpn/sparc32/v8/supersparc/udiv.asm: Likewise.
2587         * mpn/sparc32/v8/udiv.asm: Likewise.
2588         * mpn/sparc64/gcd_1.asm: Likewise.
2589         * mpn/sparc64/ultrasparct3/dive_1.asm: Likewise.
2590         * mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise.
2591         * mpn/sparc64/ultrasparct3/mode1o.asm: Likewise.
2592         * mpn/sparc32/v9/sqr_diagonal.asm: Likewise and use INT32.
2594 2013-04-09  Torbjorn Granlund  <tege@gmplib.org>
2596         * longlong.h (sparc64): Test __VIS__ instead of __sparc_vis3.
2598         * config.guess (sparc*): Invoke set_cc_for_build to get $dummy.
2600 2013-04-08  Torbjorn Granlund  <tege@gmplib.org>
2602         * config.guess: Rework tmp file names, make sure to remove tmp files.
2604         * mpn/arm/dive_1.asm: Rewrite count-trailing-zeros code, using private
2605         table.
2607         * mpn/arm: Canonicalise arm assembly to use old style "mov ... lsl" for
2608         shift ops.
2610 2013-04-07  Torbjorn Granlund  <tege@gmplib.org>
2612         * mpn/sparc64/ultrasparct3/mod_34lsub1.asm: New file.
2614         * longlong.h (sparc64): Define umul_ppmm, add_ssaaaa, and
2615         count_leading_zeros conditionally under the symbol __sparc_vis3.
2617         * mpn/arm/dive_1.asm: New file.
2618         * mpn/arm/v6/dive_1.asm: New file.
2620         * mpn/arm/v6t2/mode1o.asm: Make trivial change to avoid v6t2...
2621         * mpn/arm/v6/mode1o.asm: ...instruction, move file accordingly.
2623         * mpn/powerpc64/mode64/invert_limb.asm: Put all multiplies low-limb first.
2625 2013-04-04  David S. Miller  <davem@davemloft.net>
2627         * mpn/sparc64/ultrasparct3/add_n.asm: Rewrite.
2628         * mpn/sparc64/ultrasparct3/sub_n.asm: Rewrite.
2630         * mpn/sparc64/ultrasparct3/invert_limb.asm: Align table.
2632 2013-04-04  Torbjorn Granlund  <tege@gmplib.org>
2634         * mpn/sparc32/sparc-defs.m4: Provide dummy lzcnt.
2636         * tests/mpn/logic.c: Seed using RANDS, then use mpz_rrandomb.
2638         * tests/mpn/t-div.c (random_word): Remove.  Let callers invoke urandom.
2640         * mpn/sparc64/ultrasparct3/mul_1.asm: Rewrite.
2642         * mpn/sparc64/ultrasparct3/bdiv_dbm1c.asm: New file.
2643         * mpn/sparc64/ultrasparct3/dive_1.asm: New file.
2644         * mpn/sparc64/ultrasparct3/invert_limb.asm: New file.
2645         * mpn/sparc64/ultrasparct3/mod_1_4.asm: New file.
2646         * mpn/sparc64/ultrasparct3/mode1o.asm: New file.
2648 2013-04-03  Torbjorn Granlund  <tege@gmplib.org>
2650         * mpn/sparc64/ultrasparct3/aormul_2.asm: Reschedule for better speed.
2652 2013-04-02  Torbjorn Granlund  <tege@gmplib.org>
2654         * mpn/sparc64/ultrasparct3/missing.m4: Misc tweaks.
2655          (lzcnt): New.
2656         * mpn/sparc64/ultrasparct3/missing.asm (__gmpn_lzcnt): New function.
2658         * mpn/sparc32/sparc-defs.m4: Put FAKE_T3 stuff here...
2659         * mpn/sparc64/ultrasparct3/aormul_2.asm: ...moved from here.
2661         * mpn/sparc64/ultrasparc1234/lshift.asm: Remove.
2662         * mpn/sparc64/ultrasparc1234/rshift.asm: Remove.
2664 2013-04-01  Torbjorn Granlund  <tege@gmplib.org>
2666         * mpn/sparc64/ultrasparct3/missing.m4 (umulxhi): Don't clobber retaddr,
2667         allowing use in functions that does not do save/restore.
2669         * mpn/sparc64/gcd_1.asm: Tweak for tighter loop.
2671 2013-03-31  David S. Miller  <davem@davemloft.net>
2673         * mpn/sparc64/lshift.asm: New file.
2674         * mpn/sparc64/rshift.asm: New file.
2675         * mpn/sparc64/lshiftc.asm: New file.
2677 2013-03-31  Torbjorn Granlund  <tege@gmplib.org>
2679         * mpn/sparc64/ultrasparct1/lshift.asm: Remove.
2680         * mpn/sparc64/ultrasparct1/rshift.asm: Remove.
2681         * mpn/sparc64/ultrasparct1/lshiftc.asm: Remove.
2683 2013-03-29  Torbjorn Granlund  <tege@gmplib.org>
2685         * mpn/sparc64/ultrasparct3/aormul_2.asm: Always do mulx before umulxhi.
2687 2013-03-28  Torbjorn Granlund  <tege@gmplib.org>
2689         * mpn/sparc64/mod_1_4.c (mpn_mod_1s_4p): Make precomputed arg 'const'.
2690         (mpn_mod_1s_4p_cps): Update from generic code.
2692 2013-03-27  Torbjorn Granlund  <tege@gmplib.org>
2694         * mpn/generic/trialdiv.c: Make variables 'const' to match tables.
2696         * mpn/generic/mod_1_1.c (mpn_mod_1_1p): Make precomputed arg 'const'.
2697         * mpn/generic/mod_1_2.c (mpn_mod_1s_2p): Likewise.
2698         * mpn/generic/mod_1_3.c (mpn_mod_1s_3p): Likewise.
2699         * mpn/generic/mod_1_4.c (mpn_mod_1s_4p): Likewise.
2700         * gmp-impl.h: Update prototypes.
2702         * mpn/x86_64/mulx/aorsmul_1.asm: New file.
2703         * mpn/x86_64/mulx/addmul_1.asm: Remove.
2705 2013-03-26  Niels Möller  <nisse@lysator.liu.se>
2707         Make mpn_cnd_add_n and mpn_cnd_sub_n public.
2708         * doc/gmp.texi (Low-level Functions): Document mpn_cnd_add_n and
2709         mpn_cnd_sub_n.
2710         * gmp-h.in (mpn_cnd_add_n, mpn_cnd_sub_n): Moved prototypes
2711         here...
2712         * gmp-impl.h: ... from here.
2714 2013-03-26  Torbjorn Granlund  <tege@gmplib.org>
2716         * mpn/x86/pentium4/sse2/cnd_add_n.asm: New file.
2717         * mpn/x86/pentium4/sse2/cnd_sub_n.asm: New file.
2718         * mpn/x86/cnd_aors_n.asm: New file.
2720 2013-03-25  David S. Miller  <davem@davemloft.net>
2722         * mpn/sparc64/ultrasparct3/hamdist.asm: New file.
2723         * mpn/sparc64/ultrasparct3/popcount.asm: New file.
2725 2013-03-25  Torbjorn Granlund  <tege@gmplib.org>
2727         * mpn/ia64/aorsorrlshC_n.asm: Generalised from aorslshC_n.asm.
2728         * mpn/ia64/aorsorrlsh1_n.asm: Generalised from aorslsh1_n.asm.
2729         * mpn/ia64/aorsorrlsh2_n.asm: Generalised from aorslsh2_n.asm.
2731 2013-03-24  Torbjorn Granlund  <tege@gmplib.org>
2733         * mpn/arm/v7a/cora15/neon/aorsorrlshC_n.asm: New file.
2734         * mpn/arm/v7a/cora15/neon/aorsorrlsh2_n.asm: New file.
2735         * mpn/arm/v7a/cora15/neon/aorsorrlsh1_n.asm: New file.
2736         * mpn/arm/v7a/cora15/neon/rsh1aors_n.asm: New file.
2738         * configure.ac (GMP_MULFUNC_CHOICES): Support add+sub+rsb lsh files.
2740         * tests/refmpn.c (refmpn_addlsh_nc, refmpn_sublsh_nc): Remove silly
2741         assert of mp_limb being non-negative.
2743 2013-03-21  Torbjorn Granlund  <tege@gmplib.org>
2745         * mpn/arm/neon/lshiftc.asm: New file.
2747         * mpn/arm/v6/sqr_basecase.asm: Trim 'sqr_diag_addlsh1' loop.
2749         * gen-trialdivtab.c: Output just raw data, remove actual variables.
2750         * mpn/generic/trialdiv.c: Put variables from gen-trialdivtab.c here,
2751         and make them 'const'.
2753 2013-03-20  Torbjorn Granlund  <tege@gmplib.org>
2755         * config.guess: Rework arm CPU recognition.
2756         * config.sub: Corresponding updates.
2757         * configure.ac: Likewise.
2759         * mpn/x86_64/mulx/adx/addmul_1.asm: Let FAKE_MULXADX be off by default.
2761         * mpn/arm/v7a/cora15/neon/copyi.asm: Move from "..".
2762         * mpn/arm/v7a/cora15/neon/copyd.asm: Likewise.
2764         * config.guess: Tack on "neon" for appropriate arm CPUs.
2765         * configure.ac (arm*-*-*): Recognise neon suffix for a8, a9, and a15.
2767 2013-03-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
2769         * mpf/fits_u.h: Accept numbers truncating to zero before checking the
2770         sign.
2771         * tests/mpf/t-fits.c: Check new edges.
2773 2013-03-19  Torbjorn Granlund  <tege@gmplib.org>
2775         * tests/arm32check.c: Get printing of clobbered register right.
2777         * mpn/arm/neon/popcount.asm: New file.
2778         * mpn/arm/neon/hamdist.asm: New file.
2780         * tests/Makefile.am (EXTRA_libtests_la_SOURCES): Add arm32call.asm and
2781         arm32check.c.
2783 2013-03-18  Torbjorn Granlund  <tege@gmplib.org>
2785         * configure.ac (arm*-*-*): Define CALLING_CONVENTIONS_OBJS.
2787         * tests/arm32call.asm: New file.
2788         * tests/arm32check.c: New file.
2790         * mpn/arm/arm-defs.m4 (LEA): Rewrite to properly handle repeated use.
2791         (EPILOGUE_cpu): Define.
2793         * mpn/arm/v6/addmul_3.asm: Make code work for PIC.
2795         * tests/x86call.asm: Modernise asm syntax.
2796         * tests/amd64call.asm: Likewise.
2798         * mpn/x86/darwin.m4 (m4append): Move definition from here...
2799         * mpn/asm-defs.m4: ...to here.
2801 2013-03-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
2803         * doc/gmp.texi (--enable-fat): No quote in concept index.
2805         * mpf/swap.c: Reduce the number of variables.
2807 2012-03-17  Marc Glisse  <marc.glisse@inria.fr>
2809         * tests/cxx/t-do-exceptions-work-at-all-with-this-compiler.cc: New file.
2810         * tests/cxx/Makefile.am: Add new file. Reorder the tests.
2812 2013-03-17  Torbjorn Granlund  <tege@gmplib.org>
2814         * mpn/generic/mul_fft.c: Use TMP_BALLOC*, but combine several areas.
2816         * mpz/powm_ui.c (mod): Use TMP_BALLOC in mu code.
2818         * mpn/arm/v6/addmul_3.asm: New file.
2820         * mpn/arm/v7a/cora15/copyd.asm: Tweak.
2822         * mpn/arm64/copyi.asm: New file.
2823         * mpn/arm64/copyd.asm: New file.
2825 2013-03-16  Torbjorn Granlund  <tege@gmplib.org>
2827         * mpn/arm/v6/addmul_2.asm: Tweak for better A9 performance.
2829 2013-03-14  Torbjorn Granlund  <tege@gmplib.org>
2831         * mpn/ia64/cnd_aors_n.asm: New file.
2833         * mpn/arm64/cnd_aors_n.asm: New file.
2835         * mpn/arm64/aors_n.asm (ADDSUB): Remove unused definition.
2837         * mpn/ia64/aors_n.asm: Remove a redundant ASM_START.
2839         * mpn/arm/cnd_aors_n.asm: Avoid ARM conditional insn execution.
2841         * mpn/x86_64/missing.asm: Move from mulx/adx since we cannot currently
2842         prune missing.asm from path.
2843         * mpn/x86_64/mulx/adx/missing-call.m4: Likewise.
2844         * mpn/x86_64/mulx/adx/missing-inline.m4: Likewise.
2845         * mpn/x86_64/mulx/adx/addmul_1.asm: Update hardwired path.
2847 2013-03-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
2849         * mpz/cong_2exp.c: Write loops in a cleaner way.
2850         * mini-gmp/mini-gmp.c: Likewise.
2851         * gmp-impl.h (mpz_zero_p): Likewise.
2853 2013-03-12  Niels Möller  <nisse@lysator.liu.se>
2855         New names mpn_cnd_add_n and mpn_cnd_sub_n.
2856         * mpn/generic/cnd_add_n.c (mpn_cnd_add_n): Renamed file and
2857         function, from addcnd.c:mpn_addcnd_n.
2858         * mpn/generic/cnd_sub_n.c (mpn_cnd_sub_n): Renamed, from
2859         subcnd.c:mpn_subcnd_n.
2860         * mpn/arm/cnd_aors_n.asm: Renamed file, from aorscnd.asm, and
2861         renamed functions.
2862         * mpn/x86_64/cnd_aors_n.asm: Analogous renaming.
2863         * mpn/powerpc64/mode64/cnd_aors_n.asm: Analogous renaming.
2864         * gmp-impl.h (mpn_cnd_add_n, mpn_cnd_add_n): Updated prototypes
2865         with new names.
2866         * configure.ac: Updated for new names.
2867         * tests/refmpn.c (refmpn_cnd_add_n): Renamed, from refmpn_addcnd_n.
2868         (refmpn_cnd_sub_n): Renamed, from refmpn_subcnd_n.
2869         * tests/tests.h (refmpn_cnd_add_n, refmpn_cnd_sub_n): Updated
2870         prototypes with new names.
2871         * tune/common.c (speed_mpn_cnd_add_n): Renamed, from
2872         speed_mpn_addcnd_n, call mpn_cnd_add_n.
2873         (speed_mpn_cnd_sub_n): Renamed, from speed_mpn_subcnd_n, call
2874         mpn_cnd_sub_n.
2875         * tune/speed.h (speed_mpn_cnd_add_n, speed_mpn_cnd_sub_n): Updated
2876         prototypes with new names.
2877         * tune/speed.c (routine): Updated list with new names.
2878         * tests/devel/try.c: Updated for new mpn_cnd_* names.
2879         * mpn/generic/sbpi1_div_sec.c: Likewise.
2880         * mpn/generic/powm_sec.c: Likewise.
2882 2013-03-12  Torbjorn Granlund  <tege@gmplib.org>
2884         * configure.ac: Add "missing" to extra_functions_64 for coreibwl.
2886         * mpn/x86_64/mulx/adx/addmul_1.asm: Simplify.  Make FAKE_MULXADX the
2887         default awaiting proper qemu behaviour.
2889 2013-03-11  Torbjorn Granlund  <tege@gmplib.org>
2891         * mpn/x86_64/aorscnd_n.asm: Read 32 bits for 'n' arguments on DOS64.
2893         * tests/mpz/t-powm_ui.c: Test larger arguments.  General cleanup.
2895         * mpz/powm_ui.c (mod): Adhere to mpn_mu_div_qr's overlap requirements.
2897 2013-03-10  Niels Möller  <nisse@lysator.liu.se>
2899         * mpn/generic/sbpi1_div_sec.c: Update calls of mpn_addcnd_n and
2900         mpn_subcnd_n.
2901         * mpn/generic/powm_sec.c (MPN_REDC_1_SEC, MPN_REDC_2_SEC)
2902         (mpn_powm_sec): Update calls of mpn_subcnd_n.
2904         * tests/tests.h (refmpn_addcnd_n, refmpn_subcnd_n): Update
2905         declarations.
2906         * tests/refmpn.c (refmpn_addcnd_n, refmpn_subcnd_n): Similar
2907         reorder of arguments.
2908         * tests/devel/try.c (call): Pass condition first, for
2909         TYPE_ADDCND_N and TYPE_SUBCND_N.
2911         * tune/common.c (speed_mpn_addcnd_n, speed_mpn_subcnd_n): Update
2912         to pass condition as first argument.
2914         * gmp-impl.h (mpn_addcnd_n, mpn_subcnd_n): Updated declarations.
2916         * mpn/generic/addcnd_n.c (mpn_addcnd_n): Reordered arguments, make
2917         condition the first argument.
2918         * mpn/generic/subcnd_n.c (mpn_subcnd_n): Likewise.
2919         * mpn/arm/aorscnd_n.asm: Likewise.
2920         * mpn/x86_64/aorscnd_n.asm: Likewise.
2921         * mpn/powerpc64/mode64/aorscnd_n.asm: Likewise.
2923 2013-03-10  Torbjorn Granlund  <tege@gmplib.org>
2925         * mpn/x86_64/mulx/adx/missing.asm: Simulate some mulx/adx insns.
2926         * mpn/x86_64/mulx/adx/missing-call.m4: Call variant.
2927         * mpn/x86_64/mulx/adx/missing-inline.m4: Inline variant.
2929         * mpn/sparc64/ultrasparct3/missing.asm: Simulate some v9-2011 insns.
2930         * mpn/sparc64/ultrasparct3/missing.m4: Inline or invoke missing.asm for
2931         v9-2011 insn.
2933         * configure.ac: Strip `haswell' from paths for now.
2935         * mpn/x86_64/mulx/addmul_1.asm: New.
2936         * mpn/x86_64/mulx/mul_1.asm: Rewrite file from `haswell' subdir.
2937         * mpn/x86_64/mulx/adx/addmul_1.asm: Likewise.
2938         * mpn/x86_64/haswell: Remove.
2940         * mpn/arm/v7a/cora15/mul_1.asm: New file.
2941         * mpn/arm/v7a/cora15/addmul_1.asm: New file.
2943 2013-03-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
2945         * tests/mpz/t-cong_2exp.c: Improve coverage.
2947 2013-03-09  Torbjorn Granlund  <tege@gmplib.org>
2949         * mpn/sparc64/ultrasparc1234/add_n.asm: Use g5 instead of g4.
2950         * mpn/sparc64/ultrasparc1234/sub_n.asm: Likewise.
2952         * mpn/sparc64/ultrasparct3/aormul_2.asm: Fix a typo.
2954 2013-03-07  Torbjorn Granlund  <tege@gmplib.org>
2956         * mpn/arm/v7a/cora9/gmp-mparam.h: New file.
2958         * configure.ac (GMP_MULFUNC_CHOICES): Support mul_2 + addmul_2.
2960         * mpn/sparc64/ultrasparct3/aormul_2.asm: New file.
2962         * mpn/sparc64/ultrasparct3/submul_1.asm: Optimise out two carry
2963         propagating adds.
2965 2013-03-06  David Miller  <davem@davemloft.net>
2967         * config.guess: Recognize UltraSparc T4 under Linux.
2968         * configure.ac: Add sparc64/ultrasparct3 to path_64 when T3 or T4.
2969         Append -xarch=v8plusd or -xarch=v9d to command line, as needed.
2970         * mpn/sparc64/ultrasparct3/mul_1.asm: New file.
2971         * mpn/sparc64/ultrasparct3/addmul_1.asm: New file.
2972         * mpn/sparc64/ultrasparct3/submul_1.asm: New file.
2973         * mpn/sparc64/ultrasparct3/add_n.asm: New file.
2974         * mpn/sparc64/ultrasparct3/sub_n.asm: New file.
2976         * mpn/sparc32/ultrasparct1/mul_1.asm: Unroll main loop one time, add
2977         T2/T3/T4 timings.
2978         * mpn/sparc32/ultrasparct1/addmul_1.asm: Likewise.
2979         * mpn/sparc32/ultrasparct1/submul_1.asm: Likewise.
2981 2013-03-04  Torbjorn Granlund  <tege@gmplib.org>
2983         * mpn/arm/neon/lorrshift.asm: New file.
2985 2013-03-03  Torbjorn Granlund  <tege@gmplib.org>
2987         * mpn/arm/v7a/cora15/copyd.asm: New file.
2988         * mpn/arm/v7a/cora15/copyi.asm: New file.
2990         * mpn/arm64/logops_n.asm: New file.
2991         * mpn/arm64/gcd_1.asm: New file.
2992         * mpn/arm64/aorsmul_1.asm: New file.
2993         * mpn/arm64/addmul_1.asm: Remove.
2994         * mpn/arm64/aors_n.asm: Complete rewrite.
2996         * mpn/arm/tabselect.asm: New file.
2997         * mpn/arm/neon/tabselect.asm: New file.
2999         * mpn/arm/copyi.asm: Software pipeline.
3000         * mpn/arm/copyd.asm: Likewise.
3002         * config.guess: Rework tmp file handling to resemble configfsf.guess's.
3004 2013-03-03  Niels Möller  <nisse@lysator.liu.se>
3006         * doc/gmp.texi (Integer Special Functions): Document
3007         mpz_limbs_read, mpz_limbs_write, mpz_limbs_modify,
3008         mpz_limbs_finish, mpz_roinit_n and MPZ_ROINIT_N.
3010         * mpz/roinit_n.c (mpz_roinit_n): Normalize the input.
3012 2013-02-27  Niels Möller  <nisse@lysator.liu.se>
3014         * tune/common.c (speed_measure): Increase repetition count if we
3015         get a zero measurement.
3017 2013-02-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
3019         * mini-gmp/mini-gmp.c (mpz_div_q_2exp): Adjust only if needed.
3020         (mpn_common_scan): New service function to unify scan loops.
3021         (mpz_scan0, mpz_scan1): Simplify by using mpn_common_scan.
3022         (mpz_make_odd): Simplify, assume in-place operation on positive.
3023         (mpn_scan0, mpn_scan1): New functions.
3024         * mini-gmp/mini-gmp.h (mpn_scan0, mpn_scan1): New declarations.
3025         * mini-gmp/tests/t-scan.c: Test also mpn_scan0 and mpn_scan1.
3027 2013-02-26  Niels Möller  <nisse@lysator.liu.se>
3029         * tests/mpz/t-limbs.c (check_roinit): Test MPZ_ROINIT_N only if
3030         compiler supports c99.
3032 2013-02-25  Niels Möller  <nisse@lysator.liu.se>
3034         * mini-gmp/tests/t-double.c (testmain): Declare double variables
3035         as volatile, to drop extended precision.
3037         * mini-gmp/tests/testutils.c (testfree): New function. Use it
3038         everywhere where test programs deallocate storage allocated via
3039         the mini-gmp allocation functions, including uses of mpz_get_str
3040         for various test failure messages.
3042         * mpz/limbs_finish.c (mpz_limbs_finish): New file and function.
3043         * mpz/limbs_modify.c (mpz_limbs_modify): New file and function.
3044         * mpz/limbs_read.c (mpz_limbs_read): New file and function.
3045         * mpz/limbs_write.c (mpz_limbs_write): New file and function.
3046         * mpz/roinit_n.c (mpz_roinit_n): New file and function.
3047         * gmp-h.in: Declare new functions.
3048         (MPZ_ROINIT_N): New macro.
3049         * mpz/Makefile.am (libmpz_la_SOURCES): Added new files.
3050         * Makefile.am (MPZ_OBJECTS): Added new object files.
3052         * tests/mpz/t-limbs.c: New testcase.
3053         * tests/mpz/Makefile.am (check_PROGRAMS): Added t-limbs.
3055 2013-02-22  Torbjorn Granlund  <tege@gmplib.org>
3057         * configure.ac: Fix typo in adx/mulx path stripping code.
3058         * config.sub: Match coreibwl.
3060 2013-02-20  Niels Möller  <nisse@lysator.liu.se>
3062         * tests/mpq/t-get_d.c (check_random): Rewrote to make test less
3063         dependent on float operations. Fixes problem with m68k-linux and
3064         extended float precision.
3066 2013-02-20  Torbjorn Granlund  <tege@gmplib.org>
3068         * mpn/x86_64/haswell/mulx/adx/addmul_1.asm: New file.
3070         * configure.ac: Support coreibwl.  Use proper name for ADX extension.
3071         * acinclude.m4 (GMP_ASM_X86_ADX): Rename from GMP_ASM_X86_ADOX.
3073         * tests/tests.h (TESTS_REPS): Keep count >= 1.
3075 2013-02-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
3077         * mini-gmp/mini-gmp.c: Move asserts to work-around a compiler bug.
3078         (mpz_export): Reorder branches.
3079         (mpz_mul_ui): Avoid temporary allocation (mpn_mul_1 can work in-place).
3081         * mini-gmp/tests/t-reuse.c: Fix typo causing the same negation
3082         condition to be applied to all operands. (See 2013-02-03, Torbjorn)
3084 2013-02-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
3086         * gmpxx.h (mpq_class, mpf_class) [init_ui, init_si, assign_si]:
3087         Optimise _si using _ui for positive arguments.
3088         (__gmp_hypot_function): Use _mul_ui to square an ui, abs for si.
3090         * mini-gmp/mini-gmp.c (mpz_mul): Read sizes just once.
3091         (mpn_set_str_other): Remove a redundant variable.
3092         (mpz_abs_add): Use SWAP once, to order sizes.
3093         (mpz_mul_ui): Micro-optimisation.
3094         (mpz_rootrem): Use _init2 before _setbit.
3095         (mpz_set_str): Optimise-out a variable.
3096         (mpz_import): Normalise only if needed.
3097         (mpn_div_qr_1): Speed-up the d=1 case, delaying a branch.
3099         * rand/randmts.c: Use init2, as size of variables is known in advance.
3100         (mangle_seed): Get a single argument.
3102         * mpz/remove.c: Delay allocation in the generic case; use swap
3103         instead of set.
3104         * mpn/generic/remove.c: Delay (possibly smaller) allocation.
3106 2013-02-17  Marc Glisse  <marc.glisse@inria.fr>
3108         * cxx/osdoprnti.cc: Use <stdarg.h> and <string.h> rather than <cstdarg>
3109         and <cstring> (revert 2002-12-21).
3111         * tests/cxx/Makefile.am: Link with libm.
3112         * tests/cxx/t-ops2.cc: Comment about more tests. Use <math.h> rather
3113         than <cmath> and using namespace. Don't include <iostream>.
3115         * gmpxx.h (__GMPXX_BITS_TO_LIMBS, __GMPQ_NUM_DBL_LIMBS,
3116         __GMPQ_DEN_DBL_LIMBS, __GMPXX_TMPQ_D): New macros.
3117         (__gmp_binary_plus, __gmp_binary_minus, __gmp_binary_multiplies,
3118         __gmp_binary_divides, __gmp_binary_equal, __gmp_binary_less,
3119         __gmp_cmp_function): Use __GMPXX_TMPQ_D.
3120         * tests/cxx/t-ops2.cc: Test __GMPXX_TMPQ_D on DBL_MIN, DBL_MAX.
3122         * gmpxx.h (__gmp_binary_multiplies, __gmp_binary_divides): Use
3123         __GMPXX_CONSTANT_TRUE.
3125 2013-02-16  Marc Glisse  <marc.glisse@inria.fr>
3127         * gmpxx.h: Include <algorithm>.
3129 2013-02-16  Torbjorn Granlund  <tege@gmplib.org>
3131         * mpn/Makefile.am (TARG_DIST): Add arm64.
3133         * mpn/x86_64/x86_64-defs.m4 (PROTECT): Emit '.hidden' instead of
3134         '.protected" to please Sun's assembler, but also for semantic reasons.
3136 2013-02-15  Torbjorn Granlund  <tege@gmplib.org>
3138         * configure.ac (arm64*-*-*): Match this.
3140         * mpn/arm64/aors_n.asm: New file.
3141         * mpn/arm64/addmul_1.asm: New file.
3142         * mpn/arm64/mul_1.asm: New file.
3144 2013-02-15  Marc Glisse  <marc.glisse@inria.fr>
3146         * gmpxx.h (__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS,
3147         __GMPXX_DEFINE_ARITHMETIC_ASSIGNMENTS): New macros.
3148         (mpz_class, mpq_class, mpf_class) [init_ui, init_si, init_d,
3149         assign_ui, assign_si, assign_d]: New functions.
3150         (__gmp_expr::__gmp_expr, __gmp_expr::operator=): Replace with macros.
3151         (__GMPXX_CONSTANT_TRUE): New macro.
3153 2013-02-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
3155         * gmp-impl.h (NEG_CAST, ABS_CAST): Use __GMP_CAST.
3156         * mpz/fits_s.h: Use NEG_CAST.
3158 2013-02-14  Marc Glisse  <marc.glisse@inria.fr>
3160         * gmpxx.h (__gmp_binary_greater): Forward to __gmp_binary_less.
3161         (__gmp_binary_equal): Forward to itself after swapping operands.
3163 2013-02-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
3165         * mp_dv_tab.c (__gmp_digit_value_tab): Remove a line of unused values.
3166         * mpf/set_str.c: Update offset accordingly.
3167         * mpz/inp_str.c: Likewise.
3168         * mpz/set_str.c: Likewise.
3170         * gmp-h.in (mpq_cmp_ui): Optimise comparison with 1/1.
3171         * tests/mpq/t-cmp_ui.c: Test special comparisons: 0/1, 1/1.
3173         * mpz/clrbit.c: Reorganise branches.
3174         * mpz/setbit.c: Likewise.
3175         * mpz/combit.c: Same micro-optimisations as in set/clr.
3177         * mpz/aors_ui.h: No realloc if size was zero.
3178         * mpz/ior.c: Use macros: MPZ_REALLOC and MPN_INCR_U.
3180         * gmp-impl.h (NEG_CAST): New macro, used by ABS_CAST.
3181         * mpq/cmp_si.c: Use NEG_CAST.
3182         * mpz/cmp_si.c: Reorganise branches.
3184 2013-02-13  Torbjorn Granlund  <tege@gmplib.org>
3186         * acinclude.m4 (GMP_ASM_X86_MULX, GMP_ASM_X86_ADOX): New feature tests.
3187         * configure.ac: Use new feature tests.
3189         * mpn/x86_64/haswell/mulx/mul_1.asm: File moved to cope with older
3190         assemblers.
3191         * configure.ac: Update haswell path to include "mulx".
3193 2013-02-12  Torbjorn Granlund  <tege@gmplib.org>
3195         * configure.ac: Recognise haswell.
3196         * config.guess: Recognise haswell.
3197         * config.sub: Match haswell.
3199         * mpn/x86_64/haswell/mul_1.asm: New file, mainly for testing HNI.
3201 2013-02-12 Marco Bodrato <bodrato@mail.dm.unipi.it>
3203         * gmp-impl.h (MPZ_PROVOKE_REALLOC): Remove unused macro.
3204         * gen-fac.c (gen_consts): Remove obsolete code, use swap instead of set.
3205         * mini-gmp/mini-gmp.c (fac_ui, bin_uiui): Use shorter and faster code.
3207         * mpn/generic/mulmod_bnm1.c: Reorganise branches.
3208         * mini-gmp/mini-gmp.c: Reduce branches.
3210         * mpz/bin_ui.c: Avoid a copy when n < 0.
3211         * mpz/mfac_uiui.c: Reduce memory usage.
3212         * mpz/primorial_ui.c: Use MPZ_NEWALLOC.
3214         * mpz/import.c: Use BITS_TO_LIMBS and MPZ_NEWALLOC.
3215         * mpz/inp_raw.c: Likewise.
3216         * mpz/rrandomb.c: Likewise.
3217         * mpz/urandomb.c: Likewise.
3218         * mpn/generic/random2.c: Likewise.
3220         * mpn/generic/brootinv.c: Micro-optimisation.
3222         * mpf/set_str.c: Don't chech base==0 when base is strictly positive.
3224 2013-02-10  Torbjorn Granlund  <tege@gmplib.org>
3226         * Version 5.1.1 released.
3228 2013-02-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
3230         * tune/speed.h (SPEED_ROUTINE_MPN_MUL): Use operands from struct s.
3231         * tune/README: Document new parameter syntax mpn_mul.<#> .
3233 2013-02-06  Niels Möller  <nisse@lysator.liu.se>
3235         * tests/mpz/t-jac.c (check_large_quotients): Rewrote. Now uses a
3236         more efficient method for generating the test inputs.
3238 2013-02-05  Torbjorn Granlund  <tege@gmplib.org>
3240         * tests/mpn/t-div.c: Limit random dbits to avoid an infinite loop.
3242 2013-02-03  Torbjorn Granlund  <tege@gmplib.org>
3244         * tests/mpz/reuse.c: Fix typo causing the same negation condition to be
3245         applied to all operands.  Fix condition for when to invoke mpz_remove.
3246         Make different-size random operands.
3248 2013-02-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
3250         * mpz/remove.c: Correct the sign in case of reuse.
3252 2013-02-01  Torbjorn Granlund  <tege@gmplib.org>
3254         * gmp-impl.h (DIGITS_IN_BASE_PER_LIMB): Add a cast.
3255         (LIMBS_PER_DIGIT_IN_BASE): Likewise.
3257         * tests/refmpn.c (refmpn_mul): Use toom6h instead of toom44 for the
3258         largest operands.
3260 2013-01-31  Torbjorn Granlund  <tege@gmplib.org>
3262         * mpn/generic/toom44_mul.c: Revert last change in favour of a simple
3263         change (thanks Marco!).
3264         * mpn/generic/toom4_sqr.c: Likewise.
3266 2013-01-30  Torbjorn Granlund  <tege@gmplib.org>
3268         * mpn/generic/toom44_mul.c (MAYBE_mul_toom44): Take toom6h and toom8h
3269         into account, using new macro MUL_NEXTALG_THRESHOLD.
3270         * mpn/generic/toom4_sqr.c (MAYBE_sqr_toom4): Likewise.
3272 2013-01-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
3274         * mpz/remove.c: init+set=init_set, cast before shifting.
3276         * mpz/cmp_si.c: Use ABS_CAST.
3278 2013-01-26  Torbjorn Granlund  <tege@gmplib.org>
3280         * tests/mpn/logic.c: Set things up to always test library logops, not
3281         gmp-impl.h's inlined variants.  Test also mpn_com.
3283         * tests/mpn/t-mod_1.c: Test also mpn_mod_1s_3p.
3285         * mpn/generic/mod_1_3.c: Swap some lines to make it similar to mod_4.c.
3287         * tests/mpz/reuse.c: Fix typo in last change.
3289 2013-01-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
3291         * mini-gmp/mini-gmp.c (mpz_cmpabs_d, mpz_cmp_d): Simplify.
3292         (mpz_set_str): Behaviour more adherent to the real GMP.
3294         * mini-gmp/tests/t-str.c: Cast size_t to unsigned long, for printf.
3295         * mini-gmp/tests/t-import.c: Likewise.
3296         * mini-gmp/tests/t-comb.c: Remove an unused var.
3297         * mini-gmp/tests/t-div.c: Remove unused args passed to fprintf.
3298         * mini-gmp/tests/t-double.c: Use float immediates with float vars.
3300 2013-01-22  Torbjorn Granlund  <tege@gmplib.org>
3302         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
3303         * gmp-h.in: Bump version.
3305         * tests/mpz/reuse.c: Delete always zero 'failures' and code depending
3306         on it.  Replace rotating progress with real measure.
3308         * Makefile.am (check-mini-gmp): Fix typo in last change.
3310 2013-01-22  Niels Möller  <nisse@lysator.liu.se>
3312         * mini-gmp/mini-gmp.c (mpz_cmp_d): Simplified, just sort out
3313         signs, then call mpz_cmpabs_d.
3315         * mini-gmp/tests/testutils.h: Include stdio.h and stdlib.h.
3316         (numberof): New define.
3318         * mini-gmp/tests/t-cmp_d.c: New file, copied from
3319         tests/mpz/t-cmp_d.c with minor changes.
3320         * mini-gmp/tests/Makefile (CHECK_PROGRAMS): Added t-cmp_d,
3322         * mini-gmp/mini-gmp.c (mpz_cmpabs_d): New function.
3323         * mini-gmp/mini-gmp.h: Declare it.
3325 2013-01-21  Niels Möller  <nisse@lysator.liu.se>
3327         * mini-gmp/tests/t-str.c (testmain): Test mpz_out_str, using
3328         the tmpfile function for i/o.
3330 2013-01-20  Torbjorn Granlund  <tege@gmplib.org>
3332         * Makefile.am (check-mini-gmp): Set also DYLD_LIBRARY_PATH for the
3333         benefit of Darwin.
3335         * tests/mpn/t-div.c: Test mpn_sb_div_qr_sec and mpn_sb_div_r_sec.
3336         (main): Separate divisor into normalised (dnp) and unnormalised (dup),
3337         pass appropriate variant to each function.
3338         (main): Make negative `test' index value mean divisor bits, for better
3339         small operands coverage.
3340         (main): Put random junk at qp[] instead of zeroing.
3342         * tests/mpz/t-remove.c: Back out last change which left `divisor_size'
3343         uninitialised; achieve change's aim with a parameter tweak.
3345 2013-01-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
3347         * mini-gmp/tests/testutils.c (testhalves): New function, test default
3348         memory functions.
3349         * mini-gmp/tests/testutils.h (testhalves): Declare it
3350         * mini-gmp/tests/t-logops.c: Use testhalves.
3352         * mini-gmp/mini-gmp.c (mpz_init_set_str): New function.
3353         * mini-gmp/mini-gmp.h (mpz_init_set_str): Declare it.
3354         * mini-gmp/tests/t-str.c: Test mpz_init_set_str.
3356 2013-01-20  Torbjorn Granlund  <tege@gmplib.org>
3358         * tests/memory.c (PTRLIMB): New macro, used for conformant casting.
3360 2013-01-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
3362         * mini-gmp/tests/t-double.c (testmain): Get the current free
3363         function using mp_get_memory_functions.
3364         * mini-gmp/tests/t-str.c (testmain): Likewise.
3366         * mini-gmp/tests/testutils.h (tu_free): Remove declaration.
3368         * mini-gmp/tests/testutils.c (block_check, tu_free): Mark static.
3370         * tests/mpz/t-set_str.c: Check also failing conditions.
3372         * tests/mpz/t-remove.c: Test removal of 1.
3374 2013-01-18  Niels Möller  <nisse@lysator.liu.se>
3376         * mini-gmp/tests/t-str.c (test_small): New function, exercising
3377         parsing of whitespace and base prefixes.
3378         (testmain): Call it.
3380         * mini-gmp/tests/t-gcd.c (gcdext_valid_p): Fixed memory leak.
3382         * mini-gmp/tests/t-double.c (testmain): Call tu_free rather than
3383         free, for storage allocated by mpz_get_str.
3384         * mini-gmp/tests/t-str.c (testmain): Likewise.
3386         * mini-gmp/tests/testutils.c (block_init, block_check): New
3387         functions.
3388         (tu_alloc, tu_realloc, tu_free): New functions.
3389         (main): Use mp_set_memory_functions.
3390         * mini-gmp/tests/testutils.h (tu_free): Declare.
3392         * mini-gmp/tests/testutils.h: New file, declarations for test
3393         programs.
3395         * mini-gmp/tests/testutils.c (main): New file, with shared main
3396         function for all the test programs. Also includes mini-gmp.c.
3397         Calls testmain after initialization. All other test programs
3398         updated to define testmain rather than main.
3400 2013-01-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
3402         * mini-gmp/tests/t-signed.c: Slightly larger coverage.
3403         * mini-gmp/tests/t-double.c: Test also mpz_init_set_d.
3405 2013-01-18  Torbjorn Granlund  <tege@gmplib.org>
3407         * mpn/generic/set_str.c (normalization_steps): Eliminate set-but-unused
3408         variable.
3410         * mini-gmp/tests/t-div.c: Test mpz_divisible_p and mpz_divisible_ui_p.
3412         * tests/tests.h (TESTS_REPS): Fix printf argument type clashes.
3414         * mini-gmp/tests/t-div.c: Test also mpz_mod, mpz_mod_ui.  Compare
3415         mpz_divisible_p just to ceil, to save time.
3417         * mini-gmp/mini-gmp.c: Prefix some names with GMP_.
3419 2013-01-16 Marco Bodrato <bodrato@mail.dm.unipi.it>
3421         * mini-gmp/tests/t-double.c: Test mpz_cmp_d.
3422         * mini-gmp/mini-gmp.c (mpz_cmp_d): Correct multiword comparison.
3424         * mini-gmp/mini-gmp.c (mpz_set_str): Handle the empty string.
3425         * mini-gmp/tests/t-str.c: Test base <= 0.
3427 2013-01-15  Niels Möller  <nisse@lysator.liu.se>
3429         * mini-gmp/tests/t-str.c (main): Use x->_mp_d rather than x[0]._mp_d.
3430         * mini-gmp/tests/t-invert.c (main): Likewise.
3432         * mini-gmp/tests/t-mul.c (main): Test mpn_mul_n and mpn_sqr.
3434         * mini-gmp/tests/hex-random.h (enum hex_random_op): New value
3435         OP_SQR.
3437         * mini-gmp/tests/mini-random.c (mini_random_op3): Renamed, from...
3438         (mini_random_op): ... old name. Updated callers.
3439         (mini_random_op2): New function.
3441         * mini-gmp/tests/hex-random.c (hex_random_op3): Renamed, from...
3442         (hex_random_op): ... old name. Updated callers.
3443         (hex_random_op2): New function.
3445 2013-01-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
3447         * mini-gmp/tests/t-logops.c: Improve popcount/hamdist testing.
3448         * mini-gmp/tests/t-signed.c: Test more cases.
3450 2013-01-15  Torbjorn Granlund  <tege@gmplib.org>
3452         From Mike Frysinger:
3453         * configure.ac: Add x32 ABI for x86_64.
3455 2013-01-14  Niels Möller  <nisse@lysator.liu.se>
3457         * mini-gmp/tests/t-str.c (main): Added tests for mpn_get_str and
3458         mpn_set_str.
3460 2013-01-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
3462         * doc/gmp.texi (gmp_version): Remove "was used" repetition.
3463         (Upward compatibility): Mention mpn_bdivmod, GMP 4 -> GMP 5.
3465 2013-01-13  Marc Glisse  <marc.glisse@inria.fr>
3467         * doc/gmp.texi: Let mpn_sqrtrem reference mpn_perfect_square_p instead
3468         of mpz_perfect_square_p.
3470 2013-01-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
3472         * mini-gmp/tests/t-comb.c: New test program, testing both
3473         mpz_fac_ui and mpz_bin_uiui.
3474         * mini-gmp/tests/Makefile (CHECK_PROGRAMS): Added t-comb.
3476         * mini-gmp/mini-gmp.c (mpz_mul_si): Simplify.
3477         (mpz_mul_ui, mpz_mul, mpz_div_qr): Replace init+REALLOC with init2.
3479         * mini-gmp/mini-gmp.c (NEG_CAST): New macro.
3480         (mpz_mul_si, mpz_set_si, mpz_cmp_si): Use NEG_CAST.
3482         * mini-gmp/mini-gmp.c (mpz_set_si, mpz_cmp_si): Simplify by using
3483         the _ui variant.
3485         * mini-gmp/tests/t-root.c: Use mpz_ui_pow_ui, when base fits an ui.
3487         * mini-gmp/tests/t-mul.c: Test also mpz_mul_si.
3488         * mini-gmp/tests/t-sub.c: Test also mpz_ui_sub.
3490         * mini-gmp/mini-gmp.c (mpz_fits_slong_p): Correct range.
3491         * mini-gmp/tests/t-signed.c: New test program, for get/set/cmp_si.
3492         * mini-gmp/tests/Makefile (CHECK_PROGRAMS): Added t-signed.
3494         * mini-gmp/mini-gmp.c (mpz_hamdist): Handle different sizes.
3495         * mini-gmp/tests/t-logops.c: Test also popcount and hamdist.
3497 2013-01-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
3499         * mpz/export.c: Less restrictive ASSERTs.
3500         * mini-gmp/mini-gmp.c (mpz_export, mpz_import): Likewise.
3501         * mini-gmp/tests/t-import.c: Test also size=0 or count=0.
3503 2013-01-10  Torbjorn Granlund  <tege@gmplib.org>
3505         * mini-gmp/tests/t-import.c (main): Don't drop off function end.
3507         * Makefile.am (check-mini-gmp): Set LD_LIBRARY_PATH to allow testing
3508         with dynamic main GMP build.
3510 2013-01-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
3512         * mini-gmp/mini-gmp.c (mpz_export): Support op=0 countp=NULL.
3514 2013-01-08  Niels Möller  <nisse@lysator.liu.se>
3516         * mini-gmp/tests/t-import.c: New test program, testing both
3517         mpz_import and mpz_export.
3518         * mini-gmp/tests/Makefile (CHECK_PROGRAMS): Added t-import.
3520         * mini-gmp/tests/mini-random.c (mini_rrandomb_export): New
3521         function.
3522         * mini-gmp/tests/mini-random.h: Declare it.
3523         * mini-gmp/tests/hex-random.c (hex_rrandomb_export): New function.
3524         * mini-gmp/tests/hex-random.h: Declare it.
3526         * mini-gmp/mini-gmp.c (mpz_export): Compute accurate word count up
3527         front, to avoid generating any high zero words.
3529 2013-01-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
3531         * mini-gmp/README: Document base limitation for conversions.
3532         * mini-gmp/mini-gmp.c (mpz_set_str): Remove goto.
3533         (mpz_import, mpz_export): Correctly use order/endianness.
3535 2013-01-05  Torbjorn Granlund  <tege@gmplib.org>
3537         * longlong.h (aarch64): Make add_ssaaaa and sub_ddmmss actually work.
3539 2013-01-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
3541         From shuax:
3542         * mini-gmp/mini-gmp.c (mpz_import): Reset limb after storing it.
3544 2013-01-04  Torbjorn Granlund  <tege@gmplib.org>
3546         From Marko Lindqvist:
3547         * configure.ac: Use AC_CONFIG_HEADERS instead of the obsolete
3548         AM_CONFIG_HEADER.
3550 2013-01-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
3552         * tests/mpz/bit.c: Wider testing for mpz_combit.
3553         * tests/mpz/logic.c: Check the -2^n case.
3555         * mpz/ior.c: Fixed an allocation bug in the -2^n case.
3557 2012-12-31  Torbjorn Granlund  <tege@gmplib.org>
3559         * mpn/generic/get_d.c: Minor reorg, add vax D code.
3561         * gmp-impl.h (double_extract): New union type for vax D floats.
3563         * tests/mpq/t-get_d.c (check_random): Limit exponents on vax.
3565 2012-12-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
3567         * tests/mpz/bit.c (check_clr_extend): Check _set shrink.
3569 2012-12-29  Torbjorn Granlund  <tege@gmplib.org>
3571         * demos/calc/calc.c: Remove generated file from repo.
3572         * demos/calc/calc.h: Likewise.
3573         * demos/calc/calclex.c: Likewise.
3575 2012-12-27  Torbjorn Granlund  <tege@gmplib.org>
3577         * mpn/generic/get_d.c: Complete rewrite of non-IEEE code.
3579         * tests/mpq/t-get_d.c (main): Suppress check_random for vax.
3581 2012-12-25  Torbjorn Granlund  <tege@gmplib.org>
3583         * mpn/x86_64/bdiv_q_1.asm: Use LEA for binvert_limb_table.
3585 2012-12-23  Torbjorn Granlund  <tege@gmplib.org>
3587         * tests/mpz/t-get_d.c (check_onebit): Decrease vax limit to avoid
3588         overflow in last, unused 'want' value.
3590         * config.guess: Recognise AMD family 22 as a future bobcat.
3592 2012-12-21  Torbjorn Granlund  <tege@gmplib.org>
3594         * configure.ac: Rename configure.in.
3596 2012-12-17  Torbjorn Granlund  <tege@gmplib.org>
3598         * Version 5.1.0 released.
3600         * configure.in (none-*-*): Allow this again, but print a warning.
3602 2012-12-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
3604         * mpz/n_pow_ui.c: Fix typos in an ASSERT.
3606 2012-12-16  Torbjorn Granlund  <tege@gmplib.org>
3608         * mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr): Explicitly use
3609         MPN_COPY_INCR for slightly overlapping copy.
3611 2012-12-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
3613         * tests/mpn/toom-sqr-shared.h: Skip ALLOCs if the test is skipped.
3615 2012-12-13  Torbjorn Granlund  <tege@gmplib.org>
3617         * mpn/x86_64/dos64.m4 (PIC): Move definition early.
3618         (JMPENT): Remove PIC variant.
3620         * mpn/x86_64/darwin.m4 (JUMPTABSECT): Define to .text, instead of
3621         something sensible.
3623 2012-12-12  Torbjorn Granlund  <tege@gmplib.org>
3625         * mpn/x86_64/x86_64-defs.m4 (JMPENT): New macro.
3626         * mpn/x86_64/dos64.m4: Likewise.
3627         * mpn/x86_64/darwin.m4: Likewise.
3628         * mpn/x86_64/mod_34lsub1.asm: Use JMPENT to properly support PIC.
3629         * mpn/x86_64/mullo_basecase.asm: Likewise.
3630         * mpn/x86_64/sqr_basecase.asm: Likewise.
3632 2012-12-11  Torbjorn Granlund  <tege@gmplib.org>
3634         * mpn/x86_64/mod_34lsub1.asm: Try different jump table for the benefit
3635         of broken Apple linkers.
3637 2012-12-09  Torbjorn Granlund  <tege@gmplib.org>
3639         * configure.in: Make GMP_NONSTD_ABI ABI specific.
3641 2012-12-08  Torbjorn Granlund  <tege@gmplib.org>
3643         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
3644         * gmp-h.in: Bump version.
3646 2012-12-06 Marco Bodrato <bodrato@mail.dm.unipi.it>
3648         * tests/mpq/reuse.c: New test (adapted from mpf/reuse.c).
3649         * tests/mpq/Makefile.am (check_PROGRAMS): Add reuse.
3651         * mpz/abs.c: Use NEWALLOC.
3652         * mpz/neg.c: Likewise.
3653         * mpz/com.c: Reduce branches.
3655 2012-12-05  Niels Möller  <nisse@lysator.liu.se>
3657         * mpn/generic/brootinv.c (mpn_brootinv): Make valgrind happier, at
3658         the cost of a redundant MPN_ZERO.
3660         * mpz/jacobi.c (mpz_jacobi): Check for asize == 0 or bsize == 0
3661         before using the low limbs.
3663 2012-12-05  Torbjorn Granlund  <tege@gmplib.org>
3665         * mpn/generic/set_str.c (mpn_dc_set_str): Work around a valgrind issue.
3667         * mpz/powm_ui.c: Don't assume >= 2 limbs in mod argument.
3669         * tests/tests.h (TESTS_REPS): Handle float GMP_CHECK_REPFACTOR.
3671         * longlong.h: Refine cpp test for vax.
3672         * tests/mpn/t-get_d.c: Likewise.
3673         * tests/mpz/t-get_d.c: Likewise.
3674         * tests/mpz/t-cmp_d.c: Likewise.
3675         * tests/mpz/t-get_d.c: Likewise.
3676         * tests/mpq/t-get_d.c: Likewise.
3677         * tests/mpf/t-get_d.c: Likewise.
3679 2012-11-30  Torbjorn Granlund  <tege@gmplib.org>
3681         * gen-fac.c (gen_consts): Correct printf types.
3683         * mpn/arm/v7a/cora15/gmp-mparam.h: New file.
3685         * configure.in (arm*-*-*): New compiler optional "tune".  Pass value for
3686         selected processors.  Add more specific path components.
3688 2012-11-29  Torbjorn Granlund  <tege@gmplib.org>
3690         From Andoni Morales Alastruey:
3691         * longlong.h: Conditionalise ARM asm on !__thumb__.
3693 2012-11-28  Torbjorn Granlund  <tege@gmplib.org>
3695         * config.guess (arm*-*-*): Support specific ARM processors.
3696         * config.sub: Match arm CPUs.
3697         * configure.in (arm*-*-*): Likewise.
3699         * mpz/powm.c: Move new_b out since it lives on through b.
3701         * configure.in (arm*-*-*): Pass -marm to deal with compilers defaulting
3702         to thumb code.
3704 2012-11-26  Torbjorn Granlund  <tege@gmplib.org>
3706         * tests/cxx/t-ops2.cc (checkz): Reduce huge numbers to avoid vax
3707         overflow.
3709 2012-11-25  Torbjorn Granlund  <tege@gmplib.org>
3711         * mpn/generic/get_d.c: Reinsert non-IEEE code.
3713         * mpn/vax/add_n.asm: New file.
3714         * mpn/vax/add_n.s: Remove.
3715         * mpn/vax/addmul_1.asm: New file.
3716         * mpn/vax/addmul_1.s: Remove.
3717         * mpn/vax/lshift.asm: New file.
3718         * mpn/vax/lshift.s: Remove.
3719         * mpn/vax/mul_1.asm: New file.
3720         * mpn/vax/mul_1.s: Remove.
3721         * mpn/vax/rshift.asm: New file.
3722         * mpn/vax/rshift.s: Remove.
3723         * mpn/vax/sub_n.asm: New file.
3724         * mpn/vax/sub_n.s: Remove.
3725         * mpn/vax/submul_1.asm: New file.
3726         * mpn/vax/submul_1.s: Remove.
3728         * mpn/vax/elf.m4: New file.
3729         * configure.in (vax*-*-*elf*): New case, grabbing vax/elf.m4.
3731         * tests/mpn/t-get_d.c (check_onebit): Get vax bounds right.
3732         (main): Switch off check_rand for vax.
3734 2012-11-22  Niels Möller  <nisse@lysator.liu.se>
3736         * mini-gmp/tests/run-tests: Copied latest version from GNU Nettle.
3737         Minor fix to the use of $EMULATOR, and proper copyright notice.
3739 2012-11-16  Torbjorn Granlund  <tege@gmplib.org>
3741         * mpn/generic/powm_sec.c (redcify): Use mpn_sb_div_r_sec.
3743         * mpn/generic/sb_div_sec.c: New file.
3744         * mpn/generic/sbpi1_div_sec.c: New file.
3745         * configure.in (gmp_mpn_functions): Add new files.
3746         * gmp-impl.h: Declare new functions.
3748 2012-11-12  Torbjorn Granlund  <tege@gmplib.org>
3750         * longlong.h: Add ARM64 support.
3751         * longlong.h: Add AVR support.
3753         * mpn/powerpc64/mode64/divrem_1.asm: Tune, simplify.
3755         * mpq/md_2exp.c: Use MPN_COPY_INCR, not MPN_COPY_DECR.
3756         * tests/mpq/t-md_2exp.c (check_random): New function.
3758 2012-11-10  Torbjorn Granlund  <tege@gmplib.org>
3760         * mpn/generic/remove.c (mpn_bdiv_qr_wrap): Make static.
3762 2012-11-04  Torbjorn Granlund  <tege@gmplib.org>
3764         * mpz/powm_ui.c: Rewrite.
3766 2012-11-01  Niels Möller  <nisse@lysator.liu.se>
3768         * mpn/generic/brootinv.c (mpn_brootinv): Input size in limbs
3769         rather than bits. Use single-precision iterations for the first
3770         limb.
3771         * mpn/generic/perfpow.c (is_kth_power): Update mpn_brootinv call.
3772         * tests/mpn/t-brootinv.c (main): Likewise.
3773         * tune/speed.h (SPEED_ROUTINE_MPN_BROOTINV): Likewise.
3774         * gmp-impl.h (mpn_brootinv): Updated prototype.
3776         * mpn/generic/hgcd2.c (mpn_hgcd2): Removed redundant loop exit
3777         tests in the single-precision loop.
3779         * mpz/combit.c (mpz_combit): Rewrite, optimizing for the common
3780         case.
3782 2012-10-31  Niels Möller  <nisse@lysator.liu.se>
3784         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-brootinv.
3785         * tests/mpn/t-brootinv.c: New file
3787         * mpn/generic/broot.c (mpn_broot_invm1): Avoid a mullo_n in the
3788         loop, and do powering as a plain mpn_sqr followed by mpn_powlo.
3790         * tune/speed.c (routine): Added mpn_broot, mpn_broot_invm1,
3791         mpn_brootinv.
3793         * tune/common.c (speed_mpn_broot, speed_mpn_broot_invm1)
3794         (speed_mpn_brootinv): New functions.
3795         * tune/speed.h (SPEED_ROUTINE_MPN_BROOT)
3796         (SPEED_ROUTINE_MPN_BROOTINV): New macros.
3798         * mpn/generic/broot.c (mpn_broot_invm1): Made non-static (mainly
3799         for benchmarking).
3800         * gmp-impl.h (mpn_broot_invm1): Declare it.
3802 2012-10-28  Torbjorn Granlund  <tege@gmplib.org>
3804         * configure.in (gmp_mpn_functions): Add new files.
3805         * gmp-impl.h: Declare new functions.
3806         * mpn/generic/perfpow.c: Overhaul.
3807         (binv_root, binv_sqroot): Remove.
3808         * mpn/generic/brootinv.c: New file, code from overhauled binv_root.
3809         * mpn/generic/bsqrtinv.c: New file, code from overhauled binv_sqroot.
3810         * mpn/generic/bsqrt.c: New file.
3812         * tests/mpn/t-broot.c: Add a forgotten TMP_MARK.
3814 2012-10-28  Niels Möller  <nisse@lysator.liu.se>
3816         * mpn/generic/broot.c (mpn_broot): New file and function.
3817         * configure.in (gmp_mpn_functions): Add broot.
3818         * gmp-impl.h (mpn_broot): Declare.
3819         * tests/mpn/t-broot.c: New testcase.
3820         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-broot.
3822 2012-10-27  Torbjorn Granlund  <tege@gmplib.org>
3824         * mpn/generic/remove.c: Get remainder allocation right.
3826 2012-10-25  Torbjorn Granlund  <tege@gmplib.org>
3828         * longlong.h: De-support old POWER asm syntax.
3830         * tests/mpz/t-remove.c: Run more tests, but use a tad smaller operands.
3832         * mpn/generic/remove.c (mpn_bdiv_qr_wrap): New function.
3833         (mpn_remove): Call mpn_bdiv_qr_wrap.
3834         * mpz/remove.c: Enable suppressed mpn_remove call.
3836 2012-10-17  Torbjorn Granlund  <tege@gmplib.org>
3838         * mpz/powm_ui.c (mpz_powm_ui): Deflect to mpz_powm for large exponent.
3840 2012-09-10  Torbjorn Granlund  <tege@gmplib.org>
3842         * demos/factorize.c: Rewrite no more current form.  Implement Lucas
3843         prime proving, and make its use the default.
3844         * demos/primes.h: New file.
3846 2012-08-24  Torbjorn Granlund  <tege@gmplib.org>
3848         * demos/factorize.c: Overhaul.
3850 2012-08-06 Marco Bodrato <bodrato@mail.dm.unipi.it>
3852         * doc/gmp.texi (mpn_neg): Correctly document returned type.
3854         * gmp-impl.h (_mpz_newalloc, log_n_max): mark with inline (spotted by Niels).
3856 2012-07-28  Marc Glisse  <marc.glisse@inria.fr>
3858         * gmpxx.h (std::common_type): New partial specializations with builtin
3859         types.
3860         * tests/cxx/t-cxx11.cc: Test it.
3862 2012-07-21  Torbjorn Granlund  <tege@gmplib.org>
3864         * mpn/powerpc32/vmx/mod_34lsub1.asm: Fix r0 clobbering issue with
3865         "large" code affecting elf+darwin PIC.
3867 2012-07-21  Marc Glisse  <marc.glisse@inria.fr>
3869         * gmpxx.h (__GMPXX_CONSTANT): Disable for g++-3.4.
3871 2012-06-26  Torbjorn Granlund  <tege@gmplib.org>
3873         * Makefile.am (LIBMP_LT_*): Remove these.
3875 2012-06-26  Marc Glisse  <marc.glisse@inria.fr>
3877         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Update comment for 5.1.0.
3879 2012-06-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
3881         * configure.in (CALLING_CONVENTIONS_OBJS): Disable any use of
3882         assembly code with the --disable-assembly option.
3883         * mpz/oddfac_1.c: Use the ASSERT_CODE macro.
3884         * gen-trialdivtab.c (mpz_log2): Use mpz_sizeinbase (., 2).
3886         * gmp-impl.h (MPN_SIZEINBASE_16): Replace with MPN_SIZEINBASE_2EXP
3887         from mpz/export.c .
3888         * mpz/export.c (MPN_SIZEINBASE_2EXP): Removed.
3889         * mpn/generic/sizeinbase.c: Use MPN_SIZEINBASE.
3891         * mpz/nextprime.c: Use MPN_SIZEINBASE_2EXP to count bits.
3892         * mpn/generic/perfpow.c: Likewise.
3893         * mpn/generic/rootrem.c: Likewise.
3894         * mpz/get_d_2exp.c: Likewise.
3895         * mpn/generic/powm_sec.c: Likewise, nailify.
3896         * mpn/generic/powlo.c: Likewise.
3897         * mpn/generic/powm.c: Likewise.
3899         * mini-gmp/mini-gmp.c (mpz_div_r_2exp, mpz_div_q_2exp): Improve
3900         adjustment condition.
3902 2012-06-23  Marc Glisse  <marc.glisse@inria.fr>
3904         * gmpxx.h (numeric_limits): Make content public.
3905         * cxx/limits.cc: New file, proper declarations.
3906         * Makefile.am: List new file.
3907         * cxx/Makefile.am: Likewise.
3908         * cxx/t-misc.cc: Add minimal test for numeric_limits.
3910 2012-06-09  Marc Glisse  <marc.glisse@inria.fr>
3912         * gmpxx.h (__gmp_resolve_expr::srcptr_type): New typedef.
3913         (__gmp_temp): Wrapper for mp*_class, the constructor copies the
3914         precision of its second argument for mpf_t.
3915         (__gmp_expr::eval(p, prec)): Remove.
3916         (__gmp_expr::eval(p)): Use __gmp_temp.
3917         (__gmp_set_expr): Never pass prec to eval().
3919 2012-06-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
3921         * gmp-impl.h (__GMP_WITHIN_CONFIGURE): Use the same #if as in gmp-h.in.
3922         (MPN_NORMALIZE_NOT_ZERO): Tighter ASSERT.
3923         (MPZ_NEWALLOC): New macro.
3924         * mpq: Use the new macro when possible.
3925         * mpz/bin_uiui.c: Likewise.
3926         * mpz/oddfac_1.c: Likewise.
3927         * mpz/prodlimbs.c: Likewise.
3929         * mini-gmp/mini-gmp.c (mpz_realloc): remove a branch.
3931 2012-06-04  Torbjorn Granlund  <tege@gmplib.org>
3933         * mpn/powerpc64/aix.m4 (ASM_START): Claim machine type "any".
3935 2012-06-03  Niels Möller  <nisse@lysator.liu.se>
3937         * mpn/generic/gcdext.c (mpn_gcdext): Deleted code for handling
3938         impossible case u1 == 0, Simplified test for unlikely case u0 == 0.
3940 2012-06-02  Torbjorn Granlund  <tege@gmplib.org>
3942         * mpn/arm/lshiftc.asm: New file.
3944 2012-06-01  Torbjorn Granlund  <tege@gmplib.org>
3946         * mpn/arm/aorslsh1_n.asm: Use cmp/cmn instead of subs/adds in more
3947         places.
3949         * mpz/get_str.c: Don't strip leading zeros since current mpn_get_str
3950         won't generate any.  Misc streamlining.
3951         * mpz/out_str.c: Analogous changes.
3953         * tests/mpz/io.c: Use a wider range of bases.
3955         * tests/mpz/t-cong.c (check_random): Rewrite random generation for
3956         exponentially distributed operand sizes.
3958 2012-06-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
3960         * mpq: Use more macros and MPZ_REALLOC return value when possible.
3962         * gmp-impl.h (LIMBS): Removed, was an alias for PTR.
3963         * mpz/combit.c: Use PTR and CNST_LIMB.
3965         * tests/mpn/t-bdiv.c: Test also mpn_bdiv_qr.
3966         * mpn/generic/bdiv_qr.c: Add an ASSERT.
3968         * mpn/generic/remove.c: Add a zero limb to use bdiv_qr...
3970 2012-05-31  Marc Glisse  <marc.glisse@inria.fr>
3972         * gmpxx.h (mpq_class::mpq_class): Handle mpq_class(0,1).
3973         * tests/cxx/t-constr.cc: Test it.
3975 2012-05-30  Torbjorn Granlund  <tege@gmplib.org>
3977         * mpn/x86_64 (FUNC_ENTRY): New name for DOS64_ENTRY.
3978         * mpn/x86_64 (FUNC_EXIT): New name for DOS64_EXIT.
3980 2012-05-29 Marco Bodrato <bodrato@mail.dm.unipi.it>
3982         * mpz/remove.c: Optimise branches.
3984         * mpn/generic/toom6h_mul.c: less branches in the LIKELY balanced path.
3985         * mpn/generic/toom8h_mul.c: Likewise.
3987 2012-05-29  Torbjorn Granlund  <tege@gmplib.org>
3989         * mpn/arm/v5/mod_1_1.asm: New file.
3991 2012-05-28  Niels Möller  <nisse@lysator.liu.se>
3993         * mpn/generic/gcdext.c (compute_v): Simplified carry handling a
3994         bit, reduced stated scratch need from 2n+1 to 2n. Also comment and
3995         ASSERT improvements.
3997 2012-05-27  Torbjorn Granlund  <tege@gmplib.org>
3999         * config.guess: Add new x86 CPUs.
4000         * mpn/x86/fat/fat.c: Likewise.
4001         * mpn/x86_64/fat/fat.c: Likewise.
4003 2012-05-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
4005         * mpn/x86_64/fat/fat.c: abort iff longmode-capable-bit is turned off.
4007         * mpn/generic/toom8h_mul.c: mark UNLIKELY branches.
4009 2012-05-26  Torbjorn Granlund  <tege@gmplib.org>
4011         * mpz: Use MPZ_REALLOC return value when possible.
4013 2012-05-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
4015         * mini-gmp/tests/t-div.c: Test all _qr, _q, _r variants.
4016         * mini-gmp/tests/t-lcm.c: Test the _ui variant.
4018         * mini-gmp/mini-gmp.c (mpz_mod, mpz_mod_ui): New functions.
4019         * mini-gmp/mini-gmp.h (mpz_mod, mpz_mod_ui): Prototypes.
4021         * mpz/scan1.c: Simplify, and add a shortcut for scan1(z, 0).
4023 2012-05-24  Torbjorn Granlund  <tege@gmplib.org>
4025         * mpz/n_pow_ui.c: Cast non-limb count_leading_zeros argument.
4027 2012-05-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
4029         * mpz/remove.c: Support negative divisor.
4030         * tests/mpz/t-remove.c: Test negative divisor.
4032 2012-05-23  Torbjorn Granlund  <tege@gmplib.org>
4034         * tests/mpz/reuse.c: Major rewrite.
4036 2012-05-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
4038         * mpz/sqrt.c: Further simplify.
4039         * mpz/sqrtrem.c: Likewise.
4041         * Mark failing branches with UNLIKELY. Many files affected.
4043 2012-05-22  Torbjorn Granlund  <tege@gmplib.org>
4045         * mpz/sqrt.c: Allocate less for overlapping operands, simplify.
4046         * mpz/sqrtrem.c: Likewise.
4048 2012-05-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
4050         * mpn/generic/toom8_sqr.c: Reduce branches for recursion.
4051         * mpn/generic/toom8h_mul.c: Likewise.
4053         * tests/mpn/t-toom8h.c: Don't use GMP_NUMB_BITS when not yet defined.
4055 2012-05-20  Torbjorn Granlund  <tege@gmplib.org>
4057         * tests/mpz/t-gcd.c: Rewrite.
4059 2012-05-19  Torbjorn Granlund  <tege@gmplib.org>
4061         * tests/mpz/t-gcd.c: Generate larger operands for better gcd code
4062         coverage; distribute size exponentially.
4064 2012-05-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
4066         * mpf/pow_ui.c: Simplify.
4067         * tests/mpf/reuse.c (dsi_func): Exercise pow_ui.
4069         * tests/mpf/t-set_ui.c (check_data): LONG_HIGHBIT -> ULONG_HIGHBIT.
4070         * tests/mpf/t-set.c (check_random): New check, both set and init_set.
4072         * tests/cxx/t-ops.cc (check_mpq): Check squaring.
4073         * tests/mpq/t-equal.c (check_various): Check different den-size.
4075         * mpn/generic/mullo_n.c: Disable MAYBE_ if WANT_FAT_BINARY.
4076         * mpz/cmpabs_d.c: Remove an unused branch.
4078         * tests/mpz/t-get_d_2exp.c (check_zero): New check.
4079         * tests/mpz/t-inp_str.c: A few more cases.
4080         * tests/mpz/t-cmp_d.c: More bases and symbols, a few cases.
4082         * mpz/rootrem.c: Correctly handle odd roots of negatives.
4083         * tests/mpz/t-root.c: Test it.
4085 2012-05-16  Torbjorn Granlund  <tege@gmplib.org>
4087         * tests/mpf/t-eq.c (check_random): New function, meat from old main().
4088         (check_data): New function.
4090 2012-05-13  Torbjorn Granlund  <tege@gmplib.org>
4092         * mpn/arm/rsh1aors_n.asm: New file.
4093         * mpn/arm/v5/mod_1_2.asm: New file.
4095 2012-05-11  Marc Glisse  <marc.glisse@inria.fr>
4097         * gmpxx.h (explicit operator bool): New functions.
4098         * tests/cxx/t-cxx11.cc: Test the above.
4100 2012-05-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
4102         * gmp-impl.h (__gmpn_cpuvec_initialized): Was __gmpn_cpuvec.initialized
4103         * mpn/x86/fat/fat.c: Use separated _initialized variable.
4104         * mpn/x86_64/fat/fat.c: Likewise.
4105         * tests/mpn/t-fat.c: Likewise.
4107         * mpn/generic/toom2_sqr.c: Override global __gmpn_cpuvec_initialized.
4108         * mpn/generic/toom22_mul.c: Likewise.
4109         * mpn/generic/toom3_sqr.c: Likewise.
4110         * mpn/generic/toom33_mul.c: Likewise.
4112 2012-05-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
4114         * mini-gmp/mini-gmp.c: merge mpz_rootrem and mpz_sqrtrem.
4116         * mpn/generic/sqrtrem.c (invsqrttab): Reduce size removing common byte.
4118         * mpz/bin_uiui.c (mul3, mul4, mul8): Remove unneeded shifts.
4119         (MAXFACS): Redefine, using the shared (safer) log_n_max.
4121 2012-05-08  Torbjorn Granlund  <tege@gmplib.org>
4123         * mpn/minithres/gmp-mparam.h (REDC_1_TO_REDC_N_THRESHOLD): Up to 9, for
4124         coherency with ASSERT in mpn/generic/redc_n.c.
4126 2012-05-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
4128         * mpn/minithres/gmp-mparam.h: Updated TOOM6 and FAC_DSC.
4129         * tests/mpn/toom-sqr-shared.h: Don't test if no range.
4131         * mpz/oddfac_1.c: Add ASSERTs to warn about small threshold.
4132         * tune/tuneup.c: Update minimal threshold for FAC_DSC.
4134 2012-05-06  Torbjorn Granlund  <tege@gmplib.org>
4136         * mpn/arm/v6/sqr_basecase.asm: Simplify n=4 code.
4138 2012-05-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
4140         * mpn/generic/invert.c: Mark a branch UNLIKELY.
4141         * tune/tuneup.c (tune_fac_u): Update DSC_THRESHOLD minimum.
4142         * gmp-impl.h (FAC_???_THRESHOLD): Update default values.
4143         (ABOVE_THRESHOLD): New definition with __builtin_constant_p.
4145         * mpn/generic/toom22_mul.c: Disable MAYBE_ if WANT_FAT_BINARY.
4146         * mpn/generic/toom33_mul.c: Likewise.
4147         * mpn/generic/toom2_sqr.c: Likewise.
4148         * mpn/generic/toom3_sqr.c: Likewise.
4150 2012-05-04  Torbjorn Granlund  <tege@gmplib.org>
4152         * tune/tuneup.c: Measure POWM_SEC_TABLE after the REDC thresholds.
4154 2012-05-03  Torbjorn Granlund  <tege@gmplib.org>
4156         * mpn/generic/powm_sec.c: Use redc_2.
4157         (INNERLOOP): Use this mechanism, like plain powm.c.
4158         (WANT_CACHE_SECURITY): Remove, feature now unconditional.
4160 2012-05-02  Torbjorn Granlund  <tege@gmplib.org>
4162         * mpz/bin_uiui.c: Make use of CNST_LIMB.
4164 2012-05-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
4166         * mpz/mfac_uiui.c: Support limb != ui.
4168 2012-05-02  Torbjorn Granlund  <tege@gmplib.org>
4170         * mpn/arm/logops_n.asm: Work around register clobbering issue.
4172         * mpn/arm/aorscnd_n.asm: New file.
4174 2012-05-01  Torbjorn Granlund  <tege@gmplib.org>
4176         * configure.in: Put arm dirs in path in proper prio order.
4178         * mpn/arm/logops_n.asm: New file.
4180         * mpz/2fac_ui.c: Fix assumed typo.
4182         * mpn/arm/v6/gmp-mparam.h: New file.
4184         * mpn/arm/v5/gcd_1.asm: Hack for undefined BMOD_1_TO_MOD_1_THRESHOLD.
4185         * mpn/arm/v6t2/gcd_1.asm: Likewise.
4187 2012-04-30  Torbjorn Granlund  <tege@gmplib.org>
4189         * mpn/arm/v6/sqr_basecase.asm: New file.
4191 2012-04-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
4193         * mpn/generic/comb_tables.c: New file.
4194         * configure.in: Add it.
4195         * gen-fac.c: Define table limits.
4196         * gmp-impl.h: Declare tables.
4197         (log_n_max): New static function.
4198         * mpz/2fac_ui.c: Use shared tables.
4199         * mpz/bin_uiui.c: Likewise.
4200         * mpz/oddfac_1.c: Likewise.
4201         * mpz/primorial_ui.c: Likewise.
4203         * mpz/mfac_uiui.c: New file.
4204         * Makefile.am: Compile it.
4205         * mpz/Makefile.am (libmpz_la_SOURCES): Add mpz_mfac_uiui.c
4206         * gmp-h.in (mpz_mfac_uiui): Declare.
4208         * tests/mpz/t-mfac_uiui.c: New file.
4209         * tests/mpz/Makefile.am: Run it.
4211         * doc/gmp.texi: Document mpz_mfac_uiui, collapsing with other factorial functions.
4213         * tests/mpz/t-lcm.c: Test zero too.
4215         * mpz/prodlimbs.c: Simplify threshold (should be tuned, not guessed).
4217 2012-04-29  Torbjorn Granlund  <tege@gmplib.org>
4219         * mpn/arm/aors_n.asm: Tune for more stable performance.
4221         * mpn/arm/aorslsh1_n.asm: New file.
4223         * mpn/arm/mod_34lsub1.asm: New file.
4225         * mpn/arm/v6t2/divrem_1.asm: New file.
4227 2012-04-28  Torbjorn Granlund  <tege@gmplib.org>
4229         * mpn/thumb/add_n.asm: New file.
4230         * mpn/thumb/sub_n.asm: New file.
4231         * mpn/thumb/add_n.s: Remove broken code.
4232         * mpn/thumb/sub_n.s: Likewise.
4234         * mpn/arm/v6/addmul_1.asm: Rewrite for stable speed, smaller size.
4235         * mpn/arm/v6/mul_1.asm: Likewise.
4237 2012-04-27  Torbjorn Granlund  <tege@gmplib.org>
4239         * configure.in: Search arm/v6t2 for arm7.
4241         * mpn/arm/v5/gcd_1.asm: New file.
4242         * mpn/arm/v6t2/gcd_1.asm: New file.
4244         * mpn/arm/mode1o.asm: New file.
4245         * mpn/arm/v6t2/mode1o.asm: New file.
4247         * mpn/arm/arm-defs.m4 (LEA): New define.
4248         * mpn/arm/invert_limb.asm: Use LEA.
4250 2012-04-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
4252         * mpz/bin_uiui.c (bc_bin_uiui): Nail support.
4253         * tests/cxx/t-ops2.cc: Test 0/3.
4254         * oddfac_1.c: assume n > 26.
4255         * tests/mpz/t-jac.c (mpn_jacobi_n): Enlarge tested sizes.
4257 2012-04-24  Torbjorn Granlund  <tege@gmplib.org>
4259         * mpn/arm/v6/addmul_2.asm: New file.
4260         * mpn/arm/v6/mul_2.asm: New file.
4262 2012-04-23  Torbjorn Granlund  <tege@gmplib.org>
4264         * mpn/arm/aorsmul_1.asm: Tweak loop control for a 6% speed increase.
4266 2012-04-22  Torbjorn Granlund  <tege@gmplib.org>
4268         * configure.in: Recognise ARM sub-architectures.
4270         * configfsf.guess: Update to current FSF version.
4271         * configfsf.sub: Likewise.
4273         * mpn/arm/bdiv_dbm1c.asm: New file.
4275         * mpn/arm/v6/mul_1.asm: New file.
4276         * mpn/arm/v6/addmul_1.asm: New file.
4278 2012-04-22 Marco Bodrato <bodrato@mail.dm.unipi.it>
4280         * gen-fac.c: Renamed, was gen-fac_ui.c .
4281         * Makefile.am: Renamed gen-fac.c and fac_table.h .
4282         * gmp-impl.h: #include "fac_table.h".
4283         * mpz/oddfac_1.c: Use generated constant.
4284         * mpz/bin_ui.c: Small optimisations.
4286         * tune/common.c (speed_mpz_bin_ui): New function.
4287         * tune/speed.h: Declare it.
4288         * tune/speed.c: Use it.
4290 2012-04-21  Torbjorn Granlund  <tege@gmplib.org>
4292         * mpn/arm/mul_1.asm: Cleanup.
4293         * mpn/arm/copyi.asm: Cleanup, assume allocate-on-write cache.
4294         * mpn/arm/copyd.asm: Likewise.
4296         * mpn/arm/add_n.asm: Delete.
4297         * mpn/arm/sub_n.asm: Delete.
4298         * mpn/arm/aors_n.asm: New file, made from old files.
4300         * mpn/arm/addmul_1.asm: Delete.
4301         * mpn/arm/submul_1.asm: Delete.
4302         * mpn/arm/aorsmul_1.asm: New file, made from old files.
4304         * mpn/arm/com.asm: New file.
4305         * mpn/arm/lshift.asm: New file.
4306         * mpn/arm/rshift.asm: New file.
4308 2012-04-20  Torbjorn Granlund  <tege@gmplib.org>
4310         * tests/mpq/io.c: New file.
4311         * tests/mpq/Makefile.am: Run it.
4313         * mpz/clrbit.c: Simplify along the lines of setbit.c.
4315 2012-04-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
4317         * mpz/setbit.c: Simplify.
4319         * gmp-impl.h (LOG2C): Define.
4320         * mpz/fac_ui.c (LOG2C): Remove.
4321         * mpz/2fac_ui.c (LOG2C): Remove.
4322         * mpz/oddfac_1.c (LOG2C): Remove.
4323         * mpn/generic/binvert.c (LOG2C): Remove.
4324         * mpn/generic/invertappr.c (LOG2C): Remove.
4326         * mpz/bin_uiui.c (mpz_goetgheluck_bin_uiui): Move declarations,
4327         and assume that n and k are not small.
4329 2012-04-19  Torbjorn Granlund  <tege@gmplib.org>
4331         * tests/mpz/Makefile.am (check_PROGRAMS): Add t-remove.
4333         * tests/mpz/t-remove.c: Clear out mpz variables.
4335         * tests/mpz/t-cong.c (check_random): Use much larger numbers.
4336         (check_data): Check congruences mod 0.
4338         * tests/mpz/t-divis.c: Test divisibility by zero.
4340         * tests/mpz/reuse.c: Test mpz_mod.
4342         * mpz/setbit.c: Remove dead code.  Use CNST_LIMB.
4343         * mpz/clrbit.c: Use CNST_LIMB.
4345 2012-04-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
4347         * primesieve.c: New file, with functions from mpz/oddfac_1.c .
4348         * mpz/oddfac_1.c (bitwise_primesieve): Re-moved.
4349         * Makefile.am (libgmp_la_SOURCES): Add primesieve.c .
4350         * gmp-impl.h (gmp_primesieve): Declare.
4352         * mpz/bin_uiui.c (mpz_goetgheluck_bin_uiui): New, factor-based
4353         implementation.
4354         * tests/mpz/t-bin.c: Extend tests, to cover _goetgheluck.
4356         * mpz/primorial_ui.c: New file.
4357         * mpz/Makefile.am (libmpz_la_SOURCES): Add mpz/primorial_ui.c
4358         * Makefile.am (MPZ_OBJECTS): Add mpz/primorial_ui$U.lo
4359         * gmp-h.in (mpz_primorial_ui): Declare.
4360         * tests/mpz/t-primorial_ui.c: New test for the new function.
4361         * tests/mpz/Makefile.am (check_PROGRAMS): Add t-primorial_ui.
4362         * doc/gmp.texi: Short documentation for the new function.
4364 2012-04-17  Torbjorn Granlund  <tege@gmplib.org>
4366         * mpn/x86_64/coreisbr/aorsmul_1.asm: Fix some DOS64 issues.
4367         * mpn/x86_64/coreisbr/mul_1.asm: Likewise.
4369         * mpn/x86_64/fastsse/lshiftc-movdqu2.asm: Adhere to DOS64 register
4370         partitioning rules.
4372         * mpn/x86_64/fastsse/copyi-palignr.asm: Implement temporary workaround
4373         to overlap issue.
4375 2012-04-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
4377         * mpz/bin_uiui.c: Support small limbs (fallback on bin_ui).
4379         * tests/mpn/toom-sqr-shared.h: Use a restricted range.
4380         * tests/mpn/t-toom2-sqr.c: Specify correct range.
4381         * tests/mpn/t-toom3-sqr.c: Likewise.
4382         * tests/mpn/t-toom4-sqr.c: Likewise.
4383         * tests/mpn/t-toom6-sqr.c: Likewise.
4384         * tests/mpn/t-toom8-sqr.c: Likewise, but extended.
4385         * tests/mpn/Makefile.am (check_PROGRAMS): Add t-toom?-sqr tests.
4387         * mpn/generic/sbpi1_bdiv_q.c: Move ASSERTs, to support qp = np.
4389 2012-04-17  Torbjorn Granlund  <tege@gmplib.org>
4391         * mpn/x86_64/copyd.asm: Rewrite.
4392         * mpn/x86_64/copyi.asm: Rewrite.
4394 2012-04-16  Torbjorn Granlund  <tege@gmplib.org>
4396         * mpn/x86_64/fastsse/lshift-movdqu2.asm: Add DOS entry/exit sequences.
4397         * mpn/x86_64/fastsse/rshift-movdqu2.asm: Likewise.
4398         * mpn/x86_64/fastsse/lshiftc-movdqu2.asm: Likewise.
4400         * mpn/x86_64/x86_64-defs.m4 (palignr): New macro.
4401         (x86_opcode_regxmm, x86_opcode_regxmm_list): New, made from x86 mmx
4402         counterparts.
4403         (x86_lookup): Copy from x86/x86-defs.m4.
4404         * mpn/x86_64/fastsse/copyd-palignr.asm: Use palignr macro.
4405         * mpn/x86_64/fastsse/copyi-palignr.asm: Likewise.
4407 2012-04-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
4409         * tests/mpz/t-bin.c: Add more tests on small values.
4410         * mpz/bin_uiui.c (mpz_bdiv_bin_uiui): Smaller temporary areas.
4412 2012-04-15  Torbjorn Granlund  <tege@gmplib.org>
4414         * mpn/x86_64/fastsse/copyd-palignr.asm: New file.
4415         * mpn/x86_64/fastsse/copyi-palignr.asm: New file.
4416         * mpn/x86_64/core2/copyd.asm: New file.
4417         * mpn/x86_64/core2/copyi.asm: New file.
4418         * mpn/x86_64/nano/copyd.asm: New file.
4419         * mpn/x86_64/nano/copyi.asm: New file.
4420         * mpn/x86_64/atom/copyd.asm: New file.
4421         * mpn/x86_64/atom/copyi.asm: New file.
4423 2012-04-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
4425         * mpz/bin_uiui.c: Rewrite (some parts are Torbjorn's).
4426         * gen-fac_ui.c: Generate new constants for bin_uiui.
4428         * mini-gmp/mini-gmp.h (mpz_fac_ui, mpz_bin_uiui): New definitions.
4429         * mini-gmp/mini-gmp.c (mpz_fac_ui, mpz_bin_uiui): Trivial
4430         implementation.
4432         * tests/mpz/t-fac_ui.c: Check Wilson's theorem on a big value.
4434         * mpn/generic/invert.c: Remove support for scratch == NULL.
4435         * tune/speed.h (SPEED_ROUTINE_MPN_MUPI_DIV_QR): Allocate scratch
4436         space for mpn_invert.
4438         * mpz/mul_i.h: Small clean-up.
4440         * tests/mpn/toom-sqr-shared.h: New file.
4441         * tests/mpn/t-toom2-sqr.c: New file.
4442         * tests/mpn/t-toom3-sqr.c: New file.
4443         * tests/mpn/t-toom4-sqr.c: New file.
4444         * tests/mpn/t-toom6-sqr.c: New file.
4445         * tests/mpn/t-toom8-sqr.c: New file.
4446         * tests/mpn/Makefile.am (EXTRA_DIST): Add toom-sqr-shared.h .
4448         * mpn/generic/toom62_mul.c: Use add_n, sub_n, when possible.
4450 2012-04-12  Torbjorn Granlund  <tege@gmplib.org>
4452         * mpn/x86_64/fastsse/lshift-movdqu2.asm: New file.
4453         * mpn/x86_64/fastsse/rshift-movdqu2.asm: New file.
4454         * mpn/x86_64/fastsse/lshiftc-movdqu2.asm: New file.
4455         * mpn/x86_64/coreisbr/lshift.asm: New file.
4456         * mpn/x86_64/coreisbr/rshift.asm: New file.
4457         * mpn/x86_64/coreisbr/lshiftc.asm: New file.
4458         * mpn/x86_64/k10/lshift.asm: New file.
4459         * mpn/x86_64/k10/rshift.asm: New file.
4460         * mpn/x86_64/k10/lshiftc.asm: New file.
4462         * mpn/x86_64/fastsse/lshift.asm: Simplify to very basic form.
4464 2012-04-11  Niels Möller  <nisse@lysator.liu.se>
4466         * Makefile.am (check-mini-gmp): Pass -I../.. in EXTRA_CFLAGS, to
4467         locate gmp.h.
4469 2012-04-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
4471         * mini-gmp/mini-gmp.h (mpz_root, mpz_rootrem): define (correctly).
4472         * mini-gmp/mini-gmp.c (mpz_rootrem): Extended code from _root.
4473         (mpz_root): Use mpz_rootrem.
4474         (mpz_mul_ui): Correctly handle negative operands.
4476         * mini-gmp/tests/Makefile (CHECK_PROGRAMS): add t-root.
4477         * mini-gmp/tests/t-root.c: New file.
4478         * mini-gmp/tests/t-reuse.c: Enable root{,rem} tests.
4480 2012-04-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
4482         * gen-fac_ui.c (mpz_root): Remove.
4483         * mini-gmp/mini-gmp.c (mpz_root): New, support negative operands.
4484         * mini-gmp/mini-gmp.h (mpz_root): define.
4485         (mpz_out_str): Test also __STDIO_LOADED (for VMS).
4486         * mpz/2fac_ui.c: Cosmetic change.
4488 2012-04-07  Torbjorn Granlund  <tege@gmplib.org>
4490         * mpn/ia64/gcd_1.asm: Rewrite inner loop to use ctz table.
4492 2012-04-05  Torbjorn Granlund  <tege@gmplib.org>
4494         * mpn/powerpc64/p7/popcount.asm: Properly extend arg n for mode32.
4495         * mpn/powerpc64/p7/hamdist.asm: Likewise.
4497 2012-04-04  Torbjorn Granlund  <tege@gmplib.org>
4499         * mpn/powerpc64/p7/popcount.asm: New file.
4500         * mpn/powerpc64/p7/hamdist.asm: New file.
4502         * longlong.h (ARM count_leading_zeros): Enable for more arch versions.
4504         * mpn/x86_64/gcd_1.asm: Make room for DOS64 regparm shadow area.
4505         * mpn/x86_64/core2/gcd_1.asm: Likewise.
4507 2012-04-03  Torbjorn Granlund  <tege@gmplib.org>
4509         * mpn/x86_64/coreisbr/aorrlsh_n.asm: Make it actually work for DOS64.
4511 2012-04-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
4513         * mpz/oddfac_1.c: Initialize size for ASSERT.
4515 2012-04-02  Torbjorn Granlund  <tege@gmplib.org>
4517         * gmp-h.in (_GMP_H_HAVE_FILE): Test also __STDIO_LOADED (for VMS).
4519         * gmp-impl.h (doprnt_format_t, etc): Remove bogus __GMP_DECLSPECs.
4521 2012-03-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
4523         * mpn/x86_64/sqr_basecase.asm: Speed-up for small cases.
4525 2012-03-29  Torbjorn Granlund  <tege@gmplib.org>
4527         * mpn/sparc64/gcd_1.asm: New file.
4529 2012-03-27  Torbjorn Granlund  <tege@gmplib.org>
4531         * config.guess: Fix typo in coreisbr recognition.
4533 2012-03-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
4535         * mpn/x86_64/gcd_1.asm: Reduce latency.
4536         * mpn/x86_64/mul_basecase.asm: Save one jump.
4538         * mpz/iset_ui.c: Don't realloc.
4540 2012-03-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
4542         * mp_clz_tab.c: Add __clz_tab[128].
4543         * longlong.h (count_trailing_zeros): Use it in pure C variant.
4545 2012-03-20  Torbjorn Granlund  <tege@gmplib.org>
4547         * configure.in (x86 fat_path): Add many missing directories.
4548         * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Rewrite.
4549         (fake_cpuid_table): Add many more CPUs.
4551         * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Minor spacing cleanup.
4553 2012-03-19  Torbjorn Granlund  <tege@gmplib.org>
4555         * mpn/x86/x86-defs.m4 (CALL, PIC_WITH_EBX): New macros.
4556         * mpn/x86/darwin.m4: Likewise.
4557         * mpn/x86/k7/gcd_1.asm: Use new macros to support PIC.
4558         * mpn/x86/p6/gcd_1.asm: Likewise.
4560 2012-03-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
4562         * gen-fac_ui.c: Generate more constants (possible mini-mpz_root).
4563         * mpz/oddfac_1.c: Improve ASSERTs.
4564         (log_n_max): Use precomputed table.
4566         * longlong.h (_PROTO): Remove.
4568 2012-03-18  Torbjorn Granlund  <tege@gmplib.org>
4570         * longlong.h (count_trailing_zeros): Write better pure C default
4571         variant.
4573         * mpn/x86/p6/gcd_1.asm: Remove forgotten x86_64 reference.
4575         * mpn/x86/p6/gmp-mparam.h: Update, to get BMOD_1_TO_MOD_1_THRESHOLD
4576         defined for fat binaries.
4578 2012-03-17  Torbjorn Granlund  <tege@gmplib.org>
4580         * mpn/x86/k7/gcd_1.asm: Rewrite.
4581         * mpn/x86/p6/gcd_1.asm: New file.
4583         * mpn/x86_64/core2/gcd_1.asm: Conditionally suppress reduction calls.
4584         * mpn/x86_64/gcd_1.asm: Rewrite.
4586 2012-03-15  Torbjorn Granlund  <tege@gmplib.org>
4588         * mpn/generic/gcd_1.c: Parameterise zerotab code.
4590         * mpn/x86_64/nano/gcd_1.asm: New file, grabbing core2 asm file.
4592         * mpn/x86_64/core2/gcd_1.asm: Speed up loop code, simplify non-loop
4593         code.
4595 2012-03-13  Torbjorn Granlund  <tege@gmplib.org>
4597         * mpn/x86_64/core2/gcd_1.asm: Add hack to support fat builds.
4599         * mpn/x86_64/core2/gcd_1.asm: Shorten critical path.
4601 2012-03-12  Torbjorn Granlund  <tege@gmplib.org>
4603         * mpn/x86_64/core2/gcd_1.asm: New file.
4604         * mpn/x86_64/k10/gcd_1.asm: New file, grabbing core2 asm file.
4605         * mpn/x86_64/bd1/gcd_1.asm: Likewise.
4607         * mpn/x86_64/bobcat/sqr_basecase.asm: New file.
4608         * mpn/x86_64/bobcat/mul_basecase.asm: Minor tuning.
4610 2012-03-10  Torbjorn Granlund  <tege@gmplib.org>
4612         * configure.in (fat_functions): Add addlsh1_n, addlsh2_n, addmul_2,
4613         mullo_basecase, redc_1, redc_2, sublsh1_n.
4615         * gmp-impl.h (struct cpuvec_t): Add fields for new fat functions.
4616         * gmp-impl.h: Adjust corresponding declarations.
4618         * mpn/generic/redc_2.c (mpn_addmul_2): Make static.
4620         * mpn/x86_64/fat/fat_entry.asm (FAT_INIT): Expand before fat_init to
4621         reduce branch offsets.  Pass plain 0,1,3... in %al since we'd else run
4622         out of 8-bit range.
4624         * mpn/x86_64/fat/fat_entry.asm (fat_init): Scale passed index value.
4625         * mpn/x86/fat/fat_entry.asm (fat_init): Use movzbl for expanding index
4626         value.
4628         * mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): Add new fat functions.
4629         * mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): Likewise.
4630         * mpn/x86_64/fat/fat.c (__gmpn_cpuvec): Likewise.
4631         * mpn/x86/fat/fat.c (__gmpn_cpuvec): Likewise.
4633         * mpn/x86_64/fat/redc_2.c: New file.
4634         * mpn/x86/fat/mullo_basecase.c: New file.
4635         * mpn/x86/fat/redc_1.c: New file.
4636         * mpn/x86/fat/redc_2.c: New file.
4638         * tests/mpn/t-fat.c: Test mullo_basecase.
4640 2012-03-08  Torbjorn Granlund  <tege@gmplib.org>
4642         * mpn/x86_64/coreisbr/addmul_2.asm: Port to DOS64.
4644 2012-02-29  Marc Glisse  <marc.glisse@inria.fr>
4646         * gmpxx.h: Ignore partial C++11 support in g++-4.6.
4647         * tests/cxx/t-cxx11.cc: Likewise.
4649         * gmpxx.h (operator""): New functions.
4650         * tests/cxx/t-cxx11.cc: Test the above.
4651         * doc/gmp.texi: Document the above.
4653 2012-03-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
4655         * acinclude.m4 (GMP_H_ANSI): Remove.
4656         * configure.in: Don't use GMP_H_ANSI.
4657         * gmp-h.in (__GMP_HAVE_PROTOTYPES): Remove.
4659 2012-03-08  Torbjorn Granlund  <tege@gmplib.org>
4661         * mpn/x86_64/fat/fat.c (fake_cpuid_table): Recognise "bulldozer".
4662         (__gmpn_cpuvec_init): Overhaul to match configure.in.
4664         * configure.in: Adjust bulldozer path_64.
4666 2012-03-07  Torbjorn Granlund  <tege@gmplib.org>
4668         * configure.in (x86_64 fat_path): List recently added AMD directories.
4670         * mpn/x86_64/bobcat/copyi.asm: New file.
4671         * mpn/x86_64/bobcat/copyd.asm: New file.
4673         * config.guess: Handle AMD 11h correctly.
4675         * tune/tuneup.c (tune_redc): Better handle situation where redc_2 is
4676         never faster.
4678 2012-03-06  Torbjorn Granlund  <tege@gmplib.org>
4680         * mpn/x86_64/bobcat/mul_basecase.asm: New file.
4682 2012-03-04  Torbjorn Granlund  <tege@gmplib.org>
4684         * mpn/x86_64/bobcat/mul_1.asm: New file.
4685         * mpn/x86_64/bobcat/aorsmul_1.asm: New file.
4687 2012-03-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
4689         * mpz/invert.c: Remove mod 0 branch.
4690         * tests/mpz/t-invert.c: Avoid testing mod 0.
4691         * doc/gmp.texi (mpz_invert): Specify mod 0 is not handled.
4693         * gmp-h.in (__gmp_signed, __gmp_const): Remove.
4694         (__GMP_HAVE_TOKEN_PASTE, __GMP_HAVE_CONST): Remove.
4695         * gmp-impl.h: Strip __GMP_HAVE_TOKEN_PASTE and __GMP_HAVE_CONST.
4696         * demos/expr/: Strip __gmp_const usage from all files.
4698         * tests/mpz/t-powm.c (allsizes_seen): Require unsigned*.
4700 2012-03-03  Torbjorn Granlund  <tege@gmplib.org>
4702         * mpn/x86_64/k8/gmp-mparam.h: New file.
4703         * mpn/x86_64/k10/gmp-mparam.h: New file.
4705         * mpn/generic/hgcd_step.c (mpn_hgcd_step): Remove unused variables.
4706         * mpn/generic/hgcd_jacobi.c (hgcd_jacobi_step): Likewise.
4707         * mpn/generic/hgcd_reduce.c (hgcd_matrix_apply): Likewise.
4708         * mpn/generic/mu_bdiv_qr.c: Likewise.
4709         * mpz/jacobi.c: Likewise.
4710         * mpz/mod.c: Likewise.
4712         * mpn/generic/toom42_mul.c: Remove unread variable.
4713         * mpn/generic/set_str.c (mpn_set_str_compute_powtab): Likewise.
4714         * mpn/generic/rootrem.c (mpn_rootrem_internal): Likewise.
4715         * tests/refmpn.c (refmpn_mul): Likewise.
4716         * mpn/generic/hgcd_appr.c (mpn_hgcd_appr): Propagate mask computation
4717         into ASSERT, remove variable.
4719         * gmp-h.in (__GMP_PROTO): Remove.
4720         * Strip __GMP_PROTO usage from all files.
4721         * Strip prototype parameter names from all files.
4723 2012-03-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
4725         * doc/gmp.texi (mpz_invert): Correctly document result range.
4726         * tests/mpz/t-invert.c: Small range correction.
4728 2012-03-01  Torbjorn Granlund  <tege@gmplib.org>
4730         * mpn/x86_64/mullo_basecase.asm: New file.
4732 2012-02-29  Marc Glisse  <marc.glisse@inria.fr>
4734         * gmpxx.h (std::numeric_limits): New partial specialization.
4736 2012-02-29  Niels Möller  <nisse@lysator.liu.se>
4738         * mini-gmp/tests/t-reuse.c: New test case, based on
4739         tests/mpz/reuse.c.
4741         * mini-gmp/mini-gmp.c (mpz_cdiv_r_ui): New function.
4742         (mpz_fdiv_r_ui): New function.
4743         (mpz_tdiv_r_ui): New function.
4744         (mpz_powm_ui): New function.
4745         (mpz_pow_ui): New function.
4746         (mpz_ui_pow_ui): Use mpz_pow_ui.
4747         (mpz_gcdext): Fixed input/output overlap, for the case of one
4748         input being zero.
4749         (mpz_sqrtrem): Fix for the case r NULL, U zero.
4751         * Makefile.am (check-mini-gmp): Use $(MAKE).
4752         (clean-mini-gmp): New target.
4753         (clean-local, distclean-local): New automake targets. Depend on
4754         clean-mini-gmp.
4756 2012-02-28  Niels Möller  <nisse@lysator.liu.se>
4758         * Makefile.am (check-mini-gmp): New target, for running the
4759         mini-gmp testsuite.
4761         * mini-gmp/tests/Makefile (srcdir, MINI_GMP_DIR): New make
4762         variables. These can be overridden when using a separate build
4763         directory.
4764         (EXTRA_CFLAGS): Renamed, was OPTFLAGS.
4766         * mini-gmp/mini-gmp.c (mpz_abs_add): Don't cache limb pointers
4767         over MPZ_REALLOC, since that breaks in-place operation. Bug
4768         spotted by Torbjörn.
4769         (mpz_and, mpz_ior, mpz_xor): Likewise.
4770         (mpz_cmp): Fixed comparison of negative numbers.
4772 2012-02-27  Torbjorn Granlund  <tege@gmplib.org>
4774         * mpn/x86_64/fastsse/lshiftc.asm: New file.
4775         * mpn/x86_64/fastsse/com.asm: New file.
4777         * mpn/x86_64/bd1/popcount.asm: New file.
4778         * mpn/x86_64/bd1/hamdist.asm: New file.
4780         * mpn/x86_64/fastsse/copyi.asm: New file.
4781         * mpn/x86_64/fastsse/copyd.asm: New file.
4782         * mpn/x86_64/fastsse/lshift.asm: New file.
4784 2012-02-26  Torbjorn Granlund  <tege@gmplib.org>
4786         * mpn/x86_64/coreisbr/addmul_2.asm: New file.
4788         * tests/devel/try.c (param_init): Don't require addmul_N to handle
4789         overlap.
4791         * mpn/x86_64/bd1/mul_1.asm: New file.
4792         * mpn/x86_64/bd1/aorsmul_1.asm: New file.
4794 2012-02-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
4796         * mpz/2fac_ui.c: New file: implements n!!.
4797         * Makefile.am (MPZ_OBJECTS): Add mpz/2fac_ui.
4798         * gmp-h.in: Declare mpz_2fac_ui.
4799         * tests/mpz/t-fac.c: Test mpz_2fac_ui.
4800         * doc/gmp.texi: Document mpz_2fac_ui.
4801         * mpz/Makefile.am (libmpz_la_SOURCES): Add 2fac_ui.c.
4803         * mpz/oddfac_1.c (mpz_oddfac_1): Use umul_ppmm when size = 2.
4805 2012-02-26  Niels Möller  <nisse@lysator.liu.se>
4807         * mini-gmp: New subdirectory. For use by GMP bootstrap, and as a
4808         fallback for applications needing bignums but not high
4809         performance.
4811         * bootstrap.c: New file, replacing dumbmp.c. Uses mini-gmp for the
4812         standard GMP functions, and then defines the few functions
4813         particular for the bootstrap.
4814         * dumbmp.c: Deleted file. A few functions moved to bootstrap.c.
4816         * gen-bases.c: Include bootstrap.c, not dumbmp.c.
4817         * gen-fac_ui.c: Likewise.
4818         * gen-trialdivtab.c: Likewise.
4819         * gen-fib.c: Include bootstrap.c, not dumbmp.c. Use assert rather
4820         than ASSERT. Deleted casts of xmalloc return value.
4821         * gen-psqr.c: Likewise.
4822         (COLLAPSE_ELEMENT): Use memmove rather than mem_copyi.
4824         * Makefile.am: Replaced all uses of dumbmp.c by bootstrap.c.
4825         (EXTRA_DIST, dist-hook): Arrange for distribution of the mini-gmp
4826         files.
4828 2012-02-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
4830         * mpz/invert.c: Use ABSIZ, MPZ_EQUAL_1_P.
4831         * mpz/abs.c: Collapse MPZ_REALLOC(x,.) and PTR(x).
4832         * mpz/aors_ui.h: Likewise.
4833         * mpz/com.c: Likewise.
4834         * mpz/neg.c: Likewise.
4836         * mpz/invert.c: Reply "no-inverse" when modulus is zero.
4837         * tests/mpz/t-invert.c: Add more checks.
4838         * doc/gmp.texi (mpz_invert): Inverse can not be zero.
4840 2012-02-24  Torbjorn Granlund  <tege@gmplib.org>
4842         * tests/mpn/logic.c: New file.
4843         * tests/mpn/Makefile.am (check_PROGRAMS): Add logic.
4845         * tests/mpz/t-invert.c: New file.
4846         * tests/mpz/Makefile.am (check_PROGRAMS): Add t-invert.
4848 2012-02-24  Marc Glisse  <marc.glisse@inria.fr>
4850         * tests/mpq/t-cmp.c: Move NUM and DEN macros...
4851         * tests/mpq/t-cmp_ui.c: Likewise...
4852         * gmp-impl.h: ... to here.
4854         * mpq/abs.c: Use NUM, DEN, SIZ, ALLOC, PTR, MPZ_REALLOC.
4855         * mpq/aors.c: Likewise.
4856         * mpq/canonicalize.c: Likewise.
4857         * mpq/clear.c: Likewise.
4858         * mpq/cmp.c: Likewise.
4859         * mpq/cmp_si.c: Likewise.
4860         * mpq/cmp_ui.c: Likewise.
4861         * mpq/div.c: Likewise.
4862         * mpq/equal.c: Likewise.
4863         * mpq/get_d.c: Likewise.
4864         * mpq/get_den.c: Likewise.
4865         * mpq/get_num.c: Likewise.
4866         * mpq/get_str.c: Likewise.
4867         * mpq/init.c: Likewise.
4868         * mpq/inp_str.c: Likewise.
4869         * mpq/inv.c: Likewise.
4870         * mpq/md_2exp.c: Likewise.
4871         * mpq/mul.c: Likewise.
4872         * mpq/neg.c: Likewise.
4873         * mpq/set.c: Likewise.
4874         * mpq/set_d.c: Likewise.
4875         * mpq/set_den.c: Likewise.
4876         * mpq/set_f.c: Likewise.
4877         * mpq/set_num.c: Likewise.
4878         * mpq/set_si.c: Likewise.
4879         * mpq/set_str.c: Likewise.
4880         * mpq/set_ui.c: Likewise.
4881         * mpq/set_z.c: Likewise.
4882         * mpq/swap.c: Likewise.
4884         * tests/mpq/t-inv.c: New test file.
4885         * tests/mpq/Makefile.am: Add the above.
4887         * gmpxx.h (__gmp_set_expr): Use mpq_set_z.
4889         * mpq/md_2exp.c: Collapse MPZ_REALLOC(x,.) and PTR(x).
4890         * mpq/set_d.c: Likewise.
4891         * mpq/set_f.c: Likewise.
4893 2012-02-24  Niels Möller  <nisse@lysator.liu.se>
4895         * mpn/x86_64/core2/aorsmul_1.asm: Added mpn_addmul_1c and
4896         mpn_submul_1c entry points.
4898 2012-02-23  Marc Glisse  <marc.glisse@inria.fr>
4900         * mpz/abs.c: Use ALLOC, SIZ, ABSIZ, PTR, MPZ_REALLOC.
4901         * mpz/aors_ui.h: Likewise.
4902         * mpz/array_init.c: Likewise.
4903         * mpz/cdiv_q.c: Likewise.
4904         * mpz/cdiv_qr.c: Likewise.
4905         * mpz/cdiv_r.c: Likewise.
4906         * mpz/clear.c: Likewise.
4907         * mpz/clrbit.c: Likewise.
4908         * mpz/cmp_si.c: Likewise.
4909         * mpz/com.c: Likewise.
4910         * mpz/fdiv_q.c: Likewise.
4911         * mpz/fdiv_qr.c: Likewise.
4912         * mpz/fdiv_r.c: Likewise.
4913         * mpz/get_si.c: Likewise.
4914         * mpz/get_str.c: Likewise.
4915         * mpz/init.c: Likewise.
4916         * mpz/inp_str.c: Likewise.
4917         * mpz/iset.c: Likewise.
4918         * mpz/iset_d.c: Likewise.
4919         * mpz/iset_si.c: Likewise.
4920         * mpz/iset_str.c: Likewise.
4921         * mpz/iset_ui.c: Likewise.
4922         * mpz/mod.c: Likewise.
4923         * mpz/neg.c: Likewise.
4924         * mpz/out_str.c: Likewise.
4925         * mpz/random2.c: Likewise.
4926         * mpz/set_si.c: Likewise.
4927         * mpz/set_str.c: Likewise.
4928         * mpz/set_ui.c: Likewise.
4929         * mpz/setbit.c: Likewise.
4930         * mpz/sqrt.c: Likewise.
4931         * mpz/swap.c: Likewise.
4932         * mpz/tdiv_r_2exp.c: Likewise.
4934         * tests/cxx/t-ops.cc: Test mpz_abs reallocation.
4936 2012-02-23  Torbjorn Granlund  <tege@gmplib.org>
4938         * mpn/x86_64/core2/rsh1aors_n.asm: Complete rewrite.
4939         * mpn/x86_64/coreisbr/rsh1aors_n.asm: Move old core2 code here.
4941         * mpn/x86_64/redc_1.asm: Make it work for DOS64 (broken in last edit).
4943 2012-02-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
4945         * mpn/generic/toom_interpolate_8pts.c: Compute carry iif non-trivial.
4947         * mpz/gcdext.c: Adapt to relaxed mpn_gcdext's input requirements.
4949         * mpz/and.c: Use mpn_ logic everywhere. Reduce branches.
4950         * mpz/ior.c: Likewise.
4951         * mpz/xor.c: Likewise.
4953 2012-02-20  Torbjorn Granlund  <tege@gmplib.org>
4955         * mpn/x86_64/coreisbr/mul_1.asm: New file.
4957         * mpn/x86_64/coreisbr/aorsmul_1.asm: New file.
4959         * mpn/x86_64/mod_34lsub1.asm: Avoid ",pt" branch hint since many
4960         assemblers don't support it.
4962 2012-02-19  Torbjorn Granlund  <tege@gmplib.org>
4964         * mpn/generic/redc_1.c: Put back mpn_add_n call, return its carry.
4965         Reintroduce previously removed RP argument.
4966         * mpn/x86_64/redc_1.asm: Likewise.
4968         * mpn/generic/redc_2.c: Remove mpn_sub_n call, return carry from
4969         mpn_add_n call.
4971         * gmp-impl.h (mpn_redc_1, mpn_redc_2): Now return an mp_limb_t.
4973         * tune/speed.h (SPEED_ROUTINE_REDC_1): Adopt to pass RP argument.
4975         * tests/refmpn.c (refmpn_redc_1): Adopt to new redc_1 interface.
4977         * mpn/generic/powm.c (MPN_REDC_1): Pass rp parameter to mpn_redc_1.
4978         * mpn/generic/powm_sec.c (MPN_REDC_1_SEC): Likewise.
4979         * mpn/generic/powm.c (MPN_REDC_2): New macro, use for mpn_redc_2.
4981 2012-02-18  Marc Glisse  <marc.glisse@inria.fr>
4983         * gmpxx.h (std::common_type): New partial specialization in C++11.
4984         * tests/cxx/t-cxx11.cc: Test it.
4986         * gmpxx.h: Don't declare long double functions that are never defined.
4988         * gmpxx.h (__gmp_binary_expr): Let things happen in place: q=q*q+z*z
4989         becomes tmp=z*z, q=q*q, q+=tmp.
4990         * tests/cxx/t-binary.cc: More variable reuse tests.
4992 2012-02-17  Marc Glisse  <marc.glisse@inria.fr>
4994         * gmp-h.in (__GMP_WITHIN_GMP): Test with #ifdef instead of #if, for
4995         the benefit of applications using gcc -Wundef.
4996         (__GMP_WITHIN_GMPXX): Likewise.
4998 2012-02-16  Marc Glisse  <marc.glisse@inria.fr>
5000         * gmpxx.h (__gmp_binary_expr): Let things happen in place: e=a*b-c*d
5001         becomes tmp=c*d, e=a*b, e-=tmp.
5002         * tests/cxx/t-binary.cc: More variable reuse tests.
5004 2012-02-15  Niels Möller  <nisse@lysator.liu.se>
5006         * tune/tuneup.c (mul_toom43_to_toom54_threshold): New global.
5007         (tune_mul): Added tuning of MUL_TOOM43_TO_TOOM54_THRESHOLD.
5008         * tune/speed.h (SPEED_ROUTINE_MPN_TOOM43_FOR_TOOM54_MUL): New macro.
5009         (SPEED_ROUTINE_MPN_TOOM54_FOR_TOOM43_MUL): New macro.
5010         Prototypes for corresponding functions.
5011         * tune/common.c (speed_mpn_toom43_for_toom54_mul): New function.
5012         (speed_mpn_toom54_for_toom43_mul): New function.
5014         * gmp-impl.h (MPN_TOOM43_MUL_MINSIZE): Corrected constant.
5015         (MPN_TOOM53_MUL_MINSIZE): Likewise.
5016         (MPN_TOOM54_MUL_MINSIZE): New constant.
5017         (mpn_toom54_mul): Added prototype.
5018         (MUL_TOOM43_TO_TOOM54_THRESHOLD): New threshold. Default value and
5019         tuning setup.
5021 2012-02-14  Niels Möller  <nisse@lysator.liu.se>
5023         * mpn/generic/toom54_mul.c: New file, originally contributed by
5024         Marco.
5025         * gmp-impl.h (mpn_toom54_mul_itch): New function.
5026         * configure.in (gmp_mpn_functions): Added toom54_mul.
5027         * tests/mpn/t-toom54.c: New file.
5028         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-toom54.
5030 2012-02-13  Niels Möller  <nisse@lysator.liu.se>
5032         * configure.in: Display summary of options.
5034 2012-02-11  Torbjorn Granlund  <tege@gmplib.org>
5036         * tests/tests.h (TESTS_REPS): Print any non-standard repetitions.
5038 2012-02-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
5040         * doc/gmp.texi (Factorial): Shortly describe current algorithm.
5041         (Multiplication Algorithms): Add Toom[68]'n'half, (too) shortly.
5042         * gmp-impl.h (ASSERT_ALWAYS): Consider failures UNLIKELY.
5044 2012-02-10  Niels Möller  <nisse@lysator.liu.se>
5046         * tests/mpz/t-gcd.c (gcdext_valid_p): Enforce slightly stricter
5047         bound for cofactors.
5049         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_hook): Corrected
5050         handling of unlikely (maybe impossible?) case u1n < un. Related to
5051         the 2012-02-05 bugfix of gcdext_subdiv_step.c in the gmp-5.0 repo.
5053 2012-02-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
5055         * gmp-impl.h (mpn_toom3*_itch): Support any recursion depth.
5056         * tests/refmpn.c (refmpn_mul): Restore tight allocations.
5058         * mpz/oddfac_1.c (mpz_oddfac_1): Get ready for n!!
5059         * gmp-impl.h (mpz_oddfac_1): Update signature.
5060         * mpz/fac_ui.c (mpz_fac_ui): Update call to mpz_oddfac_1.
5062 2012-02-09  Marc Glisse  <marc.glisse@inria.fr>
5064         * gmp-impl.h (ABS_CAST): New macro.
5065         * mpf/cmp_si.c: Use ABS_CAST.
5066         * mpf/get_si.c: Use ABS_CAST.
5067         * mpf/iset_si.c: Use ABS_CAST.
5068         * mpf/set_si.c: Use ABS_CAST.
5069         * mpq/set_si.c: Use ABS_CAST.
5070         * mpz/cmp_si.c: Use ABS_CAST.
5071         * mpz/get_si.c: Use ABS_CAST.
5072         * mpz/iset_si.c: Use ABS_CAST.
5073         * mpz/mul_i.h: Use ABS_CAST.
5074         * mpz/set_si.c: Use ABS_CAST.
5076 2012-02-08  Torbjorn Granlund  <tege@gmplib.org>
5078         * mpn/powerpc32/divrem_2.asm: Fix off-by-one condition in invert_limb
5079         code.
5081 2012-02-08  Niels Möller  <nisse@lysator.liu.se>
5083         * doc/gmp.texi (mpz_gcdext): Clarified corner cases in cofactor
5084         canonicalization.
5086 2012-02-07  Niels Möller  <nisse@lysator.liu.se>
5088         * mpn/generic/gcdext.c (mpn_gcdext): Fixed assert, related to the
5089         special case A = (2k+1) G, B = 2 G. Fix copied from gmp-5.0 repo.
5091 2012-02-06  Niels Möller  <nisse@lysator.liu.se>
5093         * mpn/generic/hgcd_matrix.c (hgcd_matrix_update_q): Fixed carry
5094         handling bug. Fix copied from gmp-5.0 repo, where the function is
5095         found in hgcd.c.
5097         * tests/mpz/t-gcd.c (main): Use mpz_rrandomb for test operands,
5098         not mpz_urandomb. Change copied from gmp-5.0 repo.
5099         * tests/mpn/t-hgcd.c (main): Likewise.
5101 2012-02-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
5103         * tests/refmpn.c (refmpn_mul): More conservative allocations.
5105 2012-02-03  Torbjorn Granlund  <tege@gmplib.org>
5107         * mpn/x86_64/bd1/gmp-mparam.h: New file.
5109         * longlong.h (udiv_qrnnd from sdiv_qrnnd): Declare udiv_w_sdiv.
5111         * mpn/generic/udiv_w_sdiv.c: Use c89 function header.
5113 2012-02-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
5115         * mpz/fac_ui.c: mpz_oddfac_1 removed, with many related functions.
5116         * mpz/oddfac_1.c: New file, mpz_oddfac_1 implementation.
5117         * gmp-impl.h: mpz_oddfac_1 declaration.
5118         * Makefile.am (MPZ_OBJECTS): add mpz/oddfac_1$U.lo .
5119         * mpz/Makefile.am (libmpz_la_SOURCES): add oddfac_1.c .
5120         * tune/Makefile.am (fac_ui.c): include mpz/oddfac_1.c .
5122 2012-02-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
5124         * mpn/generic/toom_interpolate_16pts.c: Correct an unlikely 32-bit bug.
5126 2012-02-02  Torbjorn Granlund  <tege@gmplib.org>
5128         * mpn/generic/toom63_mul.c: Allow s+t==n by adjusting an ASSERT.
5129         * mpn/generic/toom_interpolate_8pts.c: Perform final incr iff s+t!=n.
5131         * tests/mpn/t-toom6h.c (MIN_BN): Make more consistent with ASSERT in
5132         tested function.
5134 2012-02-01  Torbjorn Granlund  <tege@gmplib.org>
5136         * tests/mpn/t-mul.c: New file.
5137         * tests/mpn/Makefile.am: Compile it.
5139 2012-02-01  Marc Glisse  <marc.glisse@inria.fr>
5141         * gmpxx.h: Remove check for g++ older than 2.91.
5143 2012-02-01  Niels Möller  <nisse@lysator.liu.se>
5145         * mpn/generic/mul.c: Added diagram on where toom functions can be
5146         called.
5148 2012-02-01  Marc Glisse  <marc.glisse@inria.fr>
5150         * gmpxx.h (__gmp_unary_expr): Make the constructor explicit.
5151         (__gmp_expr(__gmp_expr&&)): New move constructors.
5152         (__gmp_expr::operator=(__gmp_expr&&)): New move assignments.
5153         (swap): Mark as noexcept.
5154         (__GMPXX_USE_CXX11): New macro.
5155         (__GMPXX_NOEXCEPT): New macro.
5156         * tests/cxx/t-cxx11.cc: New file.
5157         * tests/cxx/Makefile.am: Added t-cxx11.
5159 2012-01-31  Torbjorn Granlund  <tege@gmplib.org>
5161         * mpn/generic/powm_sec.c (SQR_BASECASE_LIM): New name for
5162         SQR_BASECASE_MAX.
5163         (SQR_BASECASE_LIM, fat variant): Define to read __gmpn_cpuvec.
5164         (SQR_BASECASE_LIM, native variant): Define to SQR_TOOM2_THRESHOLD
5165         straight, without arithmetic.
5166         (mpn_local_sqr): Use BELOW_THRESHOLD as per Marco's suggestion.
5168 2012-01-30  Torbjorn Granlund  <tege@gmplib.org>
5170         * tests/mpz/t-powm.c: Ensure all sizes are seen.
5172 2012-01-30  Marc Glisse  <marc.glisse@inria.fr>
5174         * gmpxx.h (__gmp_binary_expr): Let things happen in place: d=a+b+c
5175         when d != c.
5176         * tests/cxx/t-binary.cc: Test variable reuse: c=a+b+c.
5178 2012-01-28  Marc Glisse  <marc.glisse@inria.fr>
5180         * gmpxx.h: Don't compute -LONG_MIN.
5182         * doc/gmp.texi (gmp_randclass::get_z_bits): Use mp_bitcnt_t.
5183         * gmpxx.h: Replace unsigned long with mp_bitcnt_t.
5185 2012-01-27  Torbjorn Granlund  <tege@gmplib.org>
5187         * Upgrade to libtool 2.4.2.
5189 2012-01-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
5191         * tests/mpz/t-fac_ui.c: Increase default test cases.
5193         * mpz/prodlimbs.c: New file, mpz_prodlimbs implementation.
5194         * gmp-impl.h: mpz_prodlimbs declaration.
5195         * Makefile.am (MPZ_OBJECTS): add mpz/prodlimbs$U.lo .
5196         * mpz/Makefile.am (libmpz_la_SOURCES): add prodlimbs.c .
5197         (fac_ui.h): remove target (moved up one directory).
5198         * mpz/fac_ui.c: mpz_prodlimbs removed, micro-optimisations.
5200 2012-01-25  Torbjorn Granlund  <tege@gmplib.org>
5202         * tune/tuneup.c: Remove unused tuneup variables.
5204 2012-01-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
5206         * mpz/fac_ui.c: Reduce branches in basecases.
5208 2012-01-18  Marc Glisse  <marc.glisse@inria.fr>
5210         * doc/gmp.texi (mpf_class::mpf_class): Use mp_bitcnt_t.
5212 2012-01-17  Torbjorn Granlund  <tege@gmplib.org>
5214         * configure.in: Add ultrasparc T4 support.
5216         * demos/isprime.c (main): Run 25 millerrabin tests.
5218 2012-01-16 Marco Bodrato <bodrato@mail.dm.unipi.it>
5220         * mpz/fac_ui.c (SIEVE_SEED): Define value for small limb size.
5221         (mpz_oddswing_1): Reduce the number of divisions.
5222         (mpz_oddfac_1): Reduce memory usage.
5223         * mpn/minithres/gmp-mparam.h: Correct minimum for FAC_DSC_.
5224         * tune/tuneup.c (tune_fac_ui): Likewise.
5226 2012-01-15  Niels Möller  <nisse@lysator.liu.se>
5228         * mpz/scan0.c (mpz_scan0): Use ~(mp_bitcnt_t) 0, rather than
5229         ULONG_MAX, when returning "infinity".
5230         * mpz/scan1.c (mpz_scan1): Likewise.
5232 2012-01-12  Torbjorn Granlund  <tege@gmplib.org>
5234         * tests/t-popc.c: Test longer bit strings.
5236 2012-01-12 Marco Bodrato <bodrato@mail.dm.unipi.it>
5238         * mpz/divexact.c: Tight realloc, delayed if variables are reused.
5239         * mpz/lcm.c: Smaller temp space, avoid goto.
5240         * gmp-impl.h (popc_limb): avoid double & (for 8-bits limb).
5242 2012-01-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
5244         * mpn/minithres/gmp-mparam.h: New FAC_ODD_ and FAC_DSC_ thresholds.
5245         * tune/tuneup.c (tune_fac_ui): Correct minimum for FAC_DSC_.
5247 2012-01-07  Torbjorn Granlund  <tege@gmplib.org>
5249         * mpz/mul_2exp.c: Rewrite.
5250         * mpz/tdiv_q_2exp.c: Rewrite.
5252 2012-01-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
5254         * gen-fac_ui.c: Remove currently unused constants; add new odd
5255         double factorial table.
5256         * mpz/fac_ui.c (RECURSIVE_PROD_THRESHOLD): Increase default.
5257         (mpz_oddfac_1): New function: a merge of _bc_odd and _dsc_odd.
5258         (mpz_prodlimbs): More in-place computations.
5260         * tune/tuneup.c (tune_fac_ui): min_is_always for FAC_ODD_.
5262 2012-01-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
5264         * tune/tuneup.c (tune_fac_ui): Compute FAC_DSC before FAC_ODD.
5266 2011-12-31  Torbjorn Granlund  <tege@gmplib.org>
5268         * Makefile.am (fac_ui.h): Put file in top-level dir, not in mpz.
5270 2011-12-31 Marco Bodrato <bodrato@mail.dm.unipi.it>
5272         * tune/Makefile.am (fac_ui.c): New target.
5273         (nodist_tuneup_SOURCES,CLEANFILES): Add fac_ui.c.
5274         * tune/tuneup.c (mpz_fac_ui_tune): Declare prototype.
5275         (fac_odd_threshold,fac_dsc_threshold): New global variables.
5276         (speed_mpz_fac_ui_tune,tune_fac_ui): New functions.
5277         (all): Call tune_fac_ui.
5278         * gmp-impl.h (FAC_ODD_THRESHOLD,FAC_DSC_THRESHOLD):
5279         New thresholds: default values, and setup for tuning.
5280         (FAC_DSC_THRESHOLD_LIMIT): Define (when tuning).
5281         * mpz/fac_ui.c (FAC_ODD_THRESHOLD,FAC_DSC_THRESHOLD):
5282         Default values removed.
5284 2011-12-30  Torbjorn Granlund  <tege@gmplib.org>
5286         * mpz/hamdist.c: Fix typo in a return statement.
5288         * mpn/generic/powm_sec.c (SQR_BASECASE_MAX): Set safely from
5289         SQR_TOOM2_THRESHOLD.
5291 2011-12-17  Torbjorn Granlund  <tege@gmplib.org>
5293         * tests/mpz/t-perfpow.c: Decrease default # of tests.
5295 2011-12-16  Torbjorn Granlund  <tege@gmplib.org>
5297         * tests/refmpn.c (AORS_1): Fix typo in variable type.
5299 2011-12-10  Torbjorn Granlund  <tege@gmplib.org>
5301         * mpn/generic/sbpi1_bdiv_q.c: Delay quotient limb stores in order to
5302         allow quotient and dividend to completely overlap.
5303         * mpn/generic/sbpi1_bdiv_qr.c: Likewise.
5305 2011-12-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
5307         * mpz/fac_ui.c: fac_bc_ui inlined in fac_ui.
5309 2011-12-08  Torbjorn Granlund  <tege@gmplib.org>
5311         * mpn/generic/powm_sec.c: Handle fat binaries better.
5313         * mpz/fac_ui.c (mpz_bc_fac_1): Fix typo in allocation size.
5315         * mpn/x86/fat/com.c: New file.
5317         * mpn/x86_64/pentium4/aors_n.asm: Make it actually work for DOS64.
5318         * mpn/x86_64/pentium4/rsh1aors_n.asm: Conditionalise jump on DOS64
5319         to avoid overhead for standard ABIs.
5321         * mpn/x86_64/gcd_1.asm: Support DOS64.
5323 2011-12-07  Torbjorn Granlund  <tege@gmplib.org>
5325         * configure.in: Fix typo making HAVE_NATIVE_mpn_X fail for fat
5326         functions.
5328         * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Add a missing break.
5330 2011-12-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
5332         * gen-fac_ui.c: Generate two more tables: odd factorial, swing.
5334         * mpz/fac_ui.c: Rewrite.
5336 2011-12-06  Niels Möller  <nisse@lysator.liu.se>
5338         * mpn/generic/hgcd.c (mpn_hgcd): Use hgcd_reduce for first
5339         recursive call.
5341 2011-12-06  Torbjorn Granlund  <tege@gmplib.org>
5343         * tune/mod_1_1-1.c: Redefine the mpn_ functions, not __gmpn_ (for the
5344         benefit of fat builds).
5345         * tune/mod_1_1-2.c: Likewise.
5347 2011-12-05  Torbjorn Granlund  <tege@gmplib.org>
5349         * mpn/x86/fat/lshiftc.c: New file.
5350         * mpn/x86/fat/mod_1_1.c: New file.
5351         * mpn/x86/fat/mod_1_2.c: New file.
5352         * mpn/x86/fat/mod_1_4.c: New file.
5354         * mpn/x86/fat/diveby3.c: Remove no longer fat function.
5355         * mpn/x86_64/fat/diveby3.c: Likewise.
5357         * mpn/x86_64/fat/gcd_1.c: Remove since always provided as asm.
5358         * mpn/x86_64/fat/mode1o.c: Likewise.
5360         * configure.in (fat_functions): Update to more relevant function set.
5361         Add special handling for mod_1_N_cps functions.
5362         * gmp-impl.h (struct cpuvec_t) : Corresponding changes.  Also add
5363         vrious declarations for new functions.
5364         * mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): Corresponding changes.
5365         * mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): Corresponding changes.
5366         * mpn/x86/fat/fat.c (__gmpn_cpuvec): Corresponding changes.
5367         * mpn/x86_64/fat/fat.c (__gmpn_cpuvec): Corresponding changes.
5369         * mpn/x86_64: Port most remaining x86_64 files to DOS64.
5371         * mpn/x86_64/coreisbr/aors_n.asm: Add forgotten DOS64_EXIT.
5373         * mpn/x86_64/x86_64-defs.m4 (LEA): Handle non-PIC code.
5374         * mpn/x86_64/darwin.m4 (LEA): Likewise.
5376 2011-12-04  Torbjorn Granlund  <tege@gmplib.org>
5378         * mpn/x86_64/fat/fat.c (MAKE_FMS): Rewrite to handle modern CPUs.
5379         * mpn/x86/fat/fat.c (MAKE_FMS): Likewise.
5381         * mpn/x86_64/darwin.m4 (PROTECT): Define to potentially useful value.
5383 2011-12-02  Torbjorn Granlund  <tege@gmplib.org>
5385         * mpn/x86_64/invert_limb_table.asm: Use PROTECT.
5386         * mpn/x86_64/invert_limb.asm: Likewise.
5388         * mpn/x86_64/darwin.m4 (PROTECT, IFELF): New defines.
5389         * mpn/x86_64/dos64.m4 (PROTECT, IFELF): New defines.
5390         * mpn/x86_64/x86_64-defs.m4 (PROTECT, IFELF): New defines.
5392 2011-12-01  Torbjorn Granlund  <tege@gmplib.org>
5394         * mpn/x86_64/fat/fat.c: Copy fake cpuid code from x86/fat/fat.c.
5396         * mpn/x86_64 (STD64, IFSTD): New names for ELF64, IFELF (since these
5397         denote all standard calling conventions).
5399         * mpn/x86_64: Add DOS64 ABI support to more files.
5401         * mpn/x86_64/mod_1_1.asm: Finish DOS64 support.
5402         * mpn/x86_64/mod_1_2.asm: Likewise.
5403         * mpn/x86_64/mod_1_4.asm: Likewise.
5405         * configure.in: Add GMP_NONSTD_ABI also for fat builds.
5407         * mpn/x86_64/fat/fat_entry.asm: Rewrite to support DOS64.
5409         * mpn/x86_64/dos64.m4 (IFDOS, IFSTD): New defines.
5410         * mpn/x86_64/x86_64-defs (IFDOS, IFSTD): New defines.
5412         * mpn/x86_64/dive_1.asm: Add DOS64 ABI support.
5413         * mpn/x86_64/mode1o.asm: Likewise.
5415         * mpn/x86_64/mod_34lsub1.asm: Enable for DOS64.
5417         * mpn/x86_64/invert_limb.asm: Wrap .protected decl.
5419         * gmp-impl.h (DECL_divexact_1): Fix typo in return type.
5421         * mpn/x86_64/dos64.m4 (LEA): New define.
5422         (PIC): Define.
5424 2011-11-29  Torbjorn Granlund  <tege@gmplib.org>
5426         * mpn/x86_64: Add DOS64 ABI support to most files.
5428 2011-11-28  Torbjorn Granlund  <tege@gmplib.org>
5430         * mpn/x86_64/mul_basecase.asm: Support ABI DOS64.
5431         * mpn/x86_64/sqr_basecase.asm: Support ABI DOS64.
5432         * mpn/x86_64/aorsmul_1.asm: Support ABI DOS64.
5433         * mpn/x86_64/mul_1.asm: Support ABI DOS64.
5435         * mpn/x86_64/x86_64-defs.m4 (DOS64_ENTRY, DOS64_EXIT): New, empty defs.
5437         * mpn/x86_64/dos64.m4: New file.
5439         * mpn/asm-defs.m4 (ABI_SUPPORT): New dummy macro.
5441         * configure.in (64-bit mingw/cygwin): Define HOST_DOS64,GMP_NONSTD_ABI.
5442         No longer clear out path_64.
5443         (mpn code selection loop): Handle GMP_NONSTD_ABI.
5445         * mpn/generic/udiv_w_sdiv.c: Use CNST_LIMB for some constants.
5447 2011-11-25  Torbjorn Granlund  <tege@gmplib.org>
5449         * x86/*: Many new gmp-mparam.h file for 64-bit CPUs in 32-bit mode.
5451         * configure.in: Overhaul x86/x86_64 support, merging three case
5452         statements into one.
5454 2011-11-24  Torbjorn Granlund  <tege@gmplib.org>
5456         * doc/gmp.texi (Formatted Output Strings): Clarify rules for mpf_t
5457         precision.
5459         * mpn/powerpc32/p7/gmp-mparam.h: New file.
5461         * tune/tuneup.c (tune_mu_div, tune_mu_bdiv): Up min_size to karatsuba's
5462         threshold.
5464 2011-11-22  Torbjorn Granlund  <tege@gmplib.org>
5466         * mpn/powerpc64/mode64/p6/aorsmul_1.asm: New file.
5468         * configure.in: Don't fail fat builds under 64-bit DOS.
5470         * mpn/powerpc64/mode64/aors_n.asm: Align loop for slightly better
5471         power5 performance.
5473 2011-11-21  Torbjorn Granlund  <tege@gmplib.org>
5475         * gmp-h.in (__GNU_MP_RELEASE): Renamed from typo name.
5477 2011-11-20  Torbjorn Granlund  <tege@gmplib.org>
5479         * configure.in: Split x86 CPUs into more subtypes for more accurate
5480         passing of gcc flags.
5482         * mpn/powerpc32/p3-p7/aors_n.asm: New file.
5484         * configure.in: Pass -m32 for powerpc64 with abi=32, using via _maybe
5485         mechanism.
5487         * configure.in: Support powerpc32/p3-p7 directory for affected CPUs.
5489 2011-11-17  Torbjorn Granlund  <tege@gmplib.org>
5491         * tune/speed.c (routine): Add mpn_tabselect.
5492         * tune/common.c (speed_mpn_tabselect): New function.
5493         * tune/speed.h (SPEED_ROUTINE_MPN_COPY_CALL): New macro, made from
5494         old SPEED_ROUTINE_MPN_COPY.
5495         (SPEED_ROUTINE_MPN_COPY): Just invoke SPEED_ROUTINE_MPN_COPY_CALL.
5496         (SPEED_ROUTINE_MPN_TABSELECT): New macro.
5498 2011-11-17  Niels Möller  <nisse@lysator.liu.se>
5500         * tune/tuneup.c (tune_hgcd_appr): Increase stop_since_change.
5502 2011-11-16  Torbjorn Granlund  <tege@gmplib.org>
5504         * mpn/powerpc32/tabselect.asm: New file.
5506         * mpn/powerpc64/mode64/aorscnd_n.asm: New file.
5508 2011-11-15  Niels Möller  <nisse@lysator.liu.se>
5510         * tune/speed.h (speed_mpn_hgcd_appr_lehmer): New prototype.
5511         (mpn_hgcd_lehmer_itch): Likewise.
5512         (mpn_hgcd_appr_lehmer): Likewise.
5513         (mpn_hgcd_appr_lehmer_itch): Likewise.
5514         (MPN_HGCD_LEHMER_ITCH): Deleted macro.
5516         * tune/speed.c (routine): Added mpn_hgcd_appr_lehmer.
5518         * tune/common.c (speed_mpn_hgcd_lehmer): Use mpn_hgcd_lehmer_itch
5519         rather than similarly named macro.
5520         (speed_mpn_hgcd_appr_lehmer): New function.
5522         * tune/Makefile.am (libspeed_la_SOURCES): Added
5523         hgcd_appr_lehmer.c.
5525         * tune/hgcd_appr_lehmer.c: New file.
5527         * tune/tuneup.c (tune_hgcd_appr): Increased min_size to 50; some
5528         machines got small thresholds which appear to be bogus.
5530 2011-11-15  Torbjorn Granlund  <tege@gmplib.org>
5532         * mpn/generic/powm_sec.c (mpn_local_sqr): Remove forgotten TMP_* calls.
5533         (redcify): Likewise.
5534         (mpn_powm_sec): Likewise.
5536         * mpn/generic/powm_sec.c (mpn_powm_sec): Rework scratch usage
5537         (mpn_powm_sec_itch): Rewrite.
5539         * mpn/generic/powm_sec.c (mpn_powm_sec): Use mpn_tabselect also in
5540         initialisation.
5542         * configure.in: Amend 2011-11-03 gcc_cflags change.
5544         * mpn/powerpc64/tabselect.asm: New file.
5545         * mpn/x86_64/tabselect.asm: New file.
5546         * mpn/x86/tabselect.asm: New file.
5547         * mpn/ia64/tabselect.asm: New file.
5549         * mpn/asm-defs.m4 (define_mpn): Add tabselect.
5551         * configure.in (gmp_mpn_functions): Add tabselect.
5552         (HAVE_NATIVE): Add entries for addncd_n, subcnd_n, tabselect.
5554         * mpn/generic/powm_sec.c: Remove mpn_tabselect implementation.
5555         * mpn/generic/tabselect.c: New file with removed code.
5557 2011-11-13  Torbjorn Granlund  <tege@gmplib.org>
5559         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add powm_sec.c.
5561         * mpn/generic/powm_sec.c (win_size): Use POWM_SEC_TABLE
5562         (POWM_SEC_TABLE): Define default.
5564         * tune/tuneup.c (tune_powm_sec): New function computing POWM_SEC_TABLE.
5565         (all): Call new function.
5567         * mpn/generic/powm_sec.c (win_size): Define only when
5568         TUNE_PROGRAM_BUILD is not set.
5570 2011-11-13  Niels Möller  <nisse@lysator.liu.se>
5572         * tune/tuneup.c (tune_hgcd_appr): Use default min_size.
5573         (tune_hgcd_reduce): Increase max_size and step_factor, to 7000
5574         and 0.04, respectively.
5576 2011-11-11  Torbjorn Granlund  <tege@gmplib.org>
5578         * mpn/powerpc64/mode64/sqr_diag_addlsh1.asm: Remove.
5580 2011-11-11  Niels Möller  <nisse@lysator.liu.se>
5582         * tune/hgcd_reduce_2.c: New file.
5583         * tune/hgcd_reduce_1.c: New file.
5585         * tune/tuneup.c (hgcd_appr_threshold): New threshold variable.
5586         (hgcd_reduce_threshold): Likewise.
5587         (tune_hgcd_appr): New function.
5588         (tune_hgcd_reduce): New function.
5589         (all): Call tune_hgcd_appr and tune_hgcd_reduce.
5591         * tune/speed.h (speed_mpn_hgcd_reduce): Declaration.
5592         (speed_mpn_hgcd_reduce_[12]): Likewise.
5593         (mpn_hgcd_reduce_[12]): Likewise.
5594         (SPEED_ROUTINE_MPN_HGCD_REDUCE_CALL): New macro.
5596         * tune/speed.c (routine): Added mpn_hgcd_reduce,
5597         mpn_hgcd_reduce_1, and mpn_hgcd_reduce_2.
5599         * tune/common.c (speed_mpn_hgcd_reduce): New function.
5600         (speed_mpn_hgcd_reduce_[12]): Likewise.
5602         * tune/Makefile.am (libspeed_la_SOURCES): Added hgcd_reduce_1.c
5603         hgcd_reduce_2.c.
5604         (TUNE_MPN_SRCS_BASIC): Added hgcd_appr.c and hgcd_reduce.c.
5606         * mpn/generic/hgcd_appr.c (submul, hgcd_matrix_apply): Deleted
5607         functions, earlier copied to hgcd_reduce.c.
5608         (mpn_hgcd_appr): Use hgcd_reduce.
5610 2011-11-09  Torbjorn Granlund  <tege@gmplib.org>
5612         * mpn/powerpc64/mode64/sqr_basecase.asm: New file.
5614         * mpn/x86_64/aorscnd_n.asm: New file.
5616         * tune/speed.c (routine): Add measuring of mpn_addcnd_n, mpn_subcnd_n.
5617         * tune/common.c (speed_mpn_addcnd_n,speed_mpn_subcnd_n): New functions.
5618         * tune/speed.h: Declare them.
5620         * tests/devel/try.c: Add tests for mpn_addcnd_n and mpn_subcnd_n.
5621         * tests/refmpn.c (refmpn_addcnd_n, refmpn_subcnd_n): New functions.
5622         * tests/tests.h: Declare them.
5624         * configure.in (gmp_mpn_functions): Add addcnd_n and subcnd_n.
5626 2011-11-07  Torbjorn Granlund  <tege@gmplib.org>
5628         * mpn/generic/redc_1.c: Just reduce U operand using Hensel norm, but
5629         not fully canonically; leave add_n and conditional sub_n to caller.
5630         Therefore omit R argument.
5632         * mpn/generic/redc_1_sec.c: Remove.
5634         * gmp-impl.h (mpn_redc_1): Update declaration.
5635         (mpn_redc_1_sec): Remove declaration.
5637         * configure.in (gmp_mpn_functions): Remove redc_1.
5639         * mpn/x86_64/redc_1.asm: Adopt to new defined functionality/interface.
5640         * tune/speed.h (SPEED_ROUTINE_REDC_1): Likewise.
5642         * tests/refmpn.c (refmpn_redc_1): Likewise; also call refmpn_addmul_1
5643         instead of mpn_addmul_1.
5645         * mpn/generic/powm.c (MPN_REDC_1): New macro, use for mpn_redc_1.
5646         * mpn/generic/powm_sec.c (MPN_REDC_1_SEC): New macro, use for
5647         mpn_redc_1_sec.
5649 2011-11-03  Torbjorn Granlund  <tege@gmplib.org>
5651         * dumbmp.c (mpz_sub): Abort for non-handled case.
5653         * mpn/powerpc64/mode64/lshiftc.asm: Move file from here...
5654         * mpn/powerpc64/lshiftc.asm: ...to here, with trivial modifications.
5656         * configure.in: Pass -m32 in more cases, using _maybe mechanism.
5657         Inherit default gcc_cflags in more places.
5659         * mpn/powerpc64/mode64/p7/gmp-mparam.h: New file.
5661 2011-11-02  Torbjorn Granlund  <tege@gmplib.org>
5663         * mpn/s390_64/invert_limb.asm: Slight optimisation.
5665         * configure.in (s390): Set gcc_32_cflags_maybe.
5667         * mpn/s390_32/gmp-mparam.h: Put in proper data.
5668         * mpn/s390_32/esame/gmp-mparam.h: New file.
5670         * mpn/x86_64/bobcat/gmp-mparam.h: New file.
5672         * mpn/s390_32/lshift.asm: New file.
5673         * mpn/s390_32/rshift.asm: New file.
5674         * mpn/s390_32/lshiftc.asm: New file.
5676 2011-10-31  Torbjorn Granlund  <tege@gmplib.org>
5678         * mpn/powerpc64/sqr_diagonal.asm: Move from here...
5679         * mpn/powerpc64/mode32/sqr_diagonal.asm: ...to here.
5681         * mpn/powerpc64/mode64/sqr_diag_addlsh1.asm: New file.
5683         * mpn/s390_64/sqr_basecase.asm: Rewrite sqr_diag_addlsh1 code.
5684         * mpn/s390_32/esame/sqr_basecase.asm: Likewise.
5686 2011-10-29  Torbjorn Granlund  <tege@gmplib.org>
5688         * mpn/s390_64/lshift.asm: Complete rewrite.
5689         * mpn/s390_64/rshift.asm: Likewise.
5691         * mpn/s390_64/lshiftc.asm: New file.
5693 2011-10-28  Torbjorn Granlund  <tege@gmplib.org>
5695         * mpn/s390_32/esame/aors_n.asm: New file, with rewritten add/sub code.
5697 2011-10-27  Torbjorn Granlund  <tege@gmplib.org>
5699         From Per Olofsson:
5700         * gmp-impl.h (BSWAP_LIMB): Rename variable to avoid BSWAP_LIMB_FETCH
5701         clash.
5703         * mpn/s390_32/esame/mul_basecase.asm: New file.
5705         * mpn/s390_32/esame/sqr_basecase.asm: New file.
5707         * mpn/s390_32/logops_n.asm: New file.
5709         * mpn/s390_64/logops_n.asm: Fix rp=up code.  Remove a leftover insn.
5711 2011-10-26  Niels Möller  <nisse@lysator.liu.se>
5713         * gmp-impl.h (mpn_hgcd_reduce, mpn_hgcd_reduce_itch): Added
5714         prototypes.
5715         (HGCD_APPR_THRESHOLD): Set up threshold for tuning.
5716         (HGCD_REDUCE_THRESHOLD): Likewise.
5718         * configure.in (gmp_mpn_functions): Added hgcd_reduce.
5720         * mpn/generic/hgcd_reduce.c: New file.
5722 2011-10-24  Torbjorn Granlund  <tege@gmplib.org>
5724         * mpn/x86_64/sqr_basecase.asm: Put intermediate result into R, don't
5725         allocate any stack space.
5727 2011-10-23  Torbjorn Granlund  <tege@gmplib.org>
5729         * mpn/s390_64/logops_n.asm: Use nc, oc, xc when possible.
5731         * tune/common.c (speed_mpn_and_n, speed_mpn_andn_n, etc):
5732         Pass correct input args.
5734         * mpn/s390_64/mod_34lsub1.asm: Use llgfr for zero extensions.
5736         * mpn/s390_64/mul_basecase.asm: New file.
5738         * mpn/s390_64/sqr_basecase.asm: New file.
5739         * mpn/s390_64/sqr_diag_addlsh1.asm: Removed, lives on in sqr_basecase.
5741         * mpn/s390_64/bdiv_dbm1c.asm: Shave off 1 c/l.
5743         * mpn/s390_64/aorrlsh1_n.asm: New file, developed from aorslsh1_n.asm.
5744         * mpn/s390_64/sublsh1_n.asm: New file.
5745         * mpn/s390_64/aorslsh1_n.asm: Remove file.
5747 2011-10-22  Torbjorn Granlund  <tege@gmplib.org>
5749         * mpn/s390_64/logops_n.asm: New file.
5751         * mpn/s390_64/aors_n.asm: New file, with rewritten add/sub code.
5753 2011-10-20  Torbjorn Granlund  <tege@gmplib.org>
5755         * tune/speed.h (SPEED_ROUTINE_MPN_SQR_DIAL_ADDLSH1_CALL): New macro.
5756         * tune/common.c (speed_mpn_sqr_diag_addlsh1): New function.
5757         * tune/speed.c (routine): Measure mpn_sqr_diag_addlsh1.
5759         * mpn/s390_64/sqr_diag_addlsh1.asm: Rewrite like s390_32/esame code.
5761         * mpn/s390_32/esame/sqr_diag_addlsh1.asm: Save just needed registers.
5763 2011-10-19  Torbjorn Granlund  <tege@gmplib.org>
5765         * mpn/s390_32/esame/add_n.asm: Rewrite, similar to s390_64 code.
5766         * mpn/s390_32/esame/add_n.asm: Likewise.
5768 2011-10-17  Torbjorn Granlund  <tege@gmplib.org>
5770         * mpn/s390_32/esame/aorslsh1_n.asm: New file.
5772 2011-10-16  Torbjorn Granlund  <tege@gmplib.org>
5774         * mpn/s390_32/esame/sqr_diag_addlsh1.asm: New file.
5776         * mpn/s390_32/copyi.asm: New file.
5777         * mpn/s390_32/copyd.asm: New file.
5779         * mpn/s390_64/copyd.asm: Optimise.
5781         * mpn/s390_64/copyi.asm: Rewrite along the lines of glibc memcpy.
5783         * mpn/s390_64/aorslsh1_n.asm: New file.
5785         * mpn/s390_64/mod_34lsub1.asm: New file.
5787         * mpn/s390_64/sqr_diag_addlsh1.asm: New file.
5789 2011-10-15  Torbjorn Granlund  <tege@gmplib.org>
5791         * configure.in (s390): Rewrite support to handle known CPUs.
5792         * config.guess: Recognise s390 CPUs.
5793         * config.sub: Match s390 CPUs.
5794         * acinclude.m4 (S390_PATTERN, S390X_PATTERN): New defines.
5796 2011-10-14  Torbjorn Granlund  <tege@gmplib.org>
5798         From Per Olofsson:
5799         * mpn/generic/popham.c: Add __GMP_NOTHROW to make it match gmp.h.
5800         * mpn/generic/gcd_1.c: Separate declarations and initialisers for the
5801         benefit of C++.
5803         * configure.in: AC_DEFINE HAVE_HOST_CPU_s390_zarch.
5804         * longlong.h (s390): Use it.
5805         (s390 umul_ppmm): Fix typo in pure C variant.
5807 2011-10-13  Torbjorn Granlund  <tege@gmplib.org>
5809         * longlong.h (s390): Put back an accidentally deleted #else.
5811         * configure.in (s390): Unset extra_functions for s390x.
5813 2011-10-12  Torbjorn Granlund  <tege@gmplib.org>
5815         * mpn/s390_64/lshift.asm: Reduce register usage.
5816         * mpn/s390_64/rshift.asm: Likewise.
5818         * longlong.h (s390 umul_ppmm): With new-enough gcc, avoid asm.
5820         From Andreas Krebbel:
5821         * longlong.h (s390 umul_ppmm): Support 32-bit limbs with gcc using
5822         64-bit registers.
5823         (s390 udiv_qrnnd): Likewise.
5825 2011-10-11  Torbjorn Granlund  <tege@gmplib.org>
5827         * configure.in (s390x): Pass -mzarch to gcc in 32-bit mode.
5829         * longlong.h (s390x): Add __CLOBBER_CC for relevant asm patterns.
5830         * mpn/generic/mod_1_1.c (s390x add_mssaaaa): Likewise.
5832         * mpn/s390_64/copyd.asm: New file.
5834 2011-10-10  Niels Möller  <nisse@lysator.liu.se>
5836         * mpn/generic/hgcd_appr.c: Deleted debugging code.
5838         * tests/mpn/t-hgcd_appr.c (main): Added -v flag.
5839         (hgcd_appr_valid_p): Increased margin of non-minimality for
5840         divide-and-conquer algorithm. Display bit counts only if
5841         -v is used.
5843         * mpn/generic/hgcd_appr.c (submul): New (static) function.
5844         (hgcd_matrix_apply): New function.
5845         (mpn_hgcd_appr_itch): Account for divide-and-conquer algorithm.
5846         (mpn_hgcd_appr): Implemented divide-and-conquer.
5848 2011-10-10  Torbjorn Granlund  <tege@gmplib.org>
5850         * mpn/generic/mod_1_1.c (add_mssaaaa): Add s390x variant.  Put arm code
5851         inside __GNUC__.
5853         * tune/time.c (STCK): Use proper memory constraint.
5855         From Marco Trudel:
5856         * tests/mpz/t-scan.c (check_ref): Fix loop end bound.
5858 2011-10-10  Niels Möller  <nisse@lysator.liu.se>
5860         * gmp-impl.h: (HGCD_APPR_THRESHOLD): New threshold.
5862         * mpn/generic/hgcd_appr.c (mpn_hgcd_appr): Interface change.
5863         Destroy inputs, let caller make working copies if needed.
5864         (mpn_hgcd_appr_itch): Reduced scratch need.
5865         * gmp-impl.h: Updated mpn_hgcd_appr prototype.
5866         * tests/mpn/t-hgcd_appr.c (one_test): Make working copies for
5867         hgcd_appr.
5868         * tune/common.c (speed_mpn_hgcd_appr): Use SPEED_ROUTINE_MPN_HGCD_CALL.
5869         * tune/speed.h (SPEED_ROUTINE_MPN_HGCD_APPR_CALL): Deleted.
5871 2011-10-09  Torbjorn Granlund  <tege@gmplib.org>
5873         * mpn/s390_64/copyi.asm: New file.
5874         * mpn/s390_64/lshift.asm: New file.
5875         * mpn/s390_64/rshift.asm: New file.
5877         * mpn/s390_64/add_n.asm: Rewrite using lmg/stmg.
5878         * mpn/s390_64/sub_n.asm: Likewise.
5880         * mpn/s390_64/invert_limb.asm: Save a callee-saves register less.
5882         * tune/time.c (getrusage_backwards_p): Properly cast printed values.
5884         * longlong.h (s390x): Put back UDItype casts to make gcc reloading use
5885         right more for constants.
5886         (s390x count_leading_zeros): Disable until we support z10 specifically.
5887         (s390x add_ssaaaa): Remove algsi/slgsi until we support z10.
5889 2011-10-09  Niels Möller  <nisse@lysator.liu.se>
5891         * mpn/generic/hgcd_matrix.c (mpn_hgcd_matrix_adjust): Declare
5892         matrix argument const.
5894 2011-10-08  Niels Möller  <nisse@lysator.liu.se>
5896         * tests/mpn/t-hgcd_appr.c (hgcd_appr_valid_p): Adjusted the
5897         allowed margin of non-minimality for hgcd_appr.
5899         * mpn/generic/hgcd_appr.c (mpn_hgcd_appr): Fixed handling of
5900         extra_bits, starting at zero, to ensure that we don't produce too
5901         small remainders. Added a final reduction loop when we we
5902         otherwise terminate with extra_bits > 0, to make the returned
5903         remainders closer to minimal.
5905 2011-10-07  Torbjorn Granlund  <tege@gmplib.org>
5907         * longlong.h (s390): Add 32-bit zarch umul_ppmm and udiv_qrnnd.
5908         (s390): Overhaul 32-bit and 64-bit code.
5910 2011-10-07  Niels Möller  <nisse@lysator.liu.se>
5912         * tune/speed.h (speed_mpn_hgcd_appr): New prototype.
5913         (SPEED_ROUTINE_MPN_HGCD_APPR_CALL): New macro.
5914         * tune/common.c (speed_mpn_hgcd_appr): New function.
5915         * tune/speed.c (routine): Added mpn_hgcd_appr.
5917         * tests/mpn/t-hgcd_appr.c: New file.
5918         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-hgcd_appr.
5920         * configure.in (gmp_mpn_functions): Added hgcd_step and hgcd_appr.
5922         * gmp-impl.h: Added prototypes for mpn_hgcd_step,
5923         mpn_hgcd_appr_itch and mpn_hgcd_appr.
5925         * mpn/generic/hgcd_appr.c: New file.
5927         * mpn/generic/hgcd_step.c: New file, extracted from hgcd.c.
5928         (mpn_hgcd_step): Renamed, from...
5929         * mpn/generic/hgcd.c (hgcd_step): ...old name. Renamed and moved
5930         to hgcd_step.c.
5931         (hgcd_hook): Also moved to hgcd_step.c.
5932         (mpn_hgcd): Updated for hgcd_step renaming.
5934 2011-10-06  Torbjorn Granlund  <tege@gmplib.org>
5936         * mpn/s390_64/invert_limb.asm: New file.
5938 2011-10-04  Torbjorn Granlund  <tege@gmplib.org>
5940         * mpn/s390_64/submul_1.asm: New file.
5941         * mpn/s390_32/esame/submul_1.asm: New file.
5943         * mpn/generic/mulmid.c (mpn_mulmid): Move a TMP_DECL to block start.
5945         * mpn/Makefile.am (TARG_DIST): Add s390_32 and s390_64, remove s390 and
5946         z8000x.
5948         * doc/gmp.texi (Custom Allocation): Rephrase a paragraph.
5950         * demos/factorize.c: Run 25 Miller-Rabin tests.
5952         * mpz/nextprime.c: Run 25 mpz_millerrabin tests (was 10).
5954 2011-10-03  Torbjorn Granlund  <tege@gmplib.org>
5956         * configure.in: Support s390x.
5958         * longlong.h: Add support for 64-bit s390x.
5960         * mpn/s390_64: New directory.
5961         * mpn/s390_64/add_n.asm: New file.
5962         * mpn/s390_64/sub_n.asm: New file.
5963         * mpn/s390_64/mul_1.asm: New file.
5964         * mpn/s390_64/addmul_1.asm: New file.
5965         * mpn/s390_64/bdiv_dbm1c.asm: New file.
5966         * mpn/s390_64/gmp-mparam.h: New file, taken from x86_64.
5968         * mpn/s390_32: Directory renamed from mpn/s390.
5969         * mpn/s390_32/gmp-mparam.h: New file, taken from x86_64.
5970         * mpn/s390_32/esame/add_n.asm: New file.
5971         * mpn/s390_32/esame/sub_n.asm: New file.
5972         * mpn/s390_32/esame/mul_1.asm: New file.
5973         * mpn/s390_32/esame/addmul_1.asm: New file.
5974         * mpn/s390_32/esame/bdiv_dbm1c.asm: New file.
5976 2011-10-03  Niels Möller  <nisse@lysator.liu.se>
5978         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-mulmid.
5979         * tests/mpn/t-mulmid.c: New file.
5981         mulmid-related assembly for x86_64, from David Harvey:
5982         * mpn/asm-defs.m4 (define_mpn): Added [add,sub]_err[1,2,3]_n and
5983         mulmid_basecase. Also use m4_not_for_expansion on the
5984         corresponding OPERATION_* symbols.
5985         * mpn/x86_64/aors_err1_n.asm: New file.
5986         * mpn/x86_64/aors_err2_n.asm: Likewise.
5987         * mpn/x86_64/aors_err3_n.asm: Likewise.
5988         * mpn/x86_64/mulmid_basecase.asm: Likewise.
5989         * mpn/x86_64/core2/aors_err1_n.asm: Likewise.
5990         * mpn/x86_64/gmp-mparam.h (MULMID_TOOM42_THRESHOLD): New value.
5991         * mpn/x86_64/core2/gmp-mparam.h (MULMID_TOOM42_THRESHOLD): Likewise.
5993         Tuning of mulmid, from David Harvey:
5994         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Added mulmid.c
5995         mulmid_n.c toom42_mulmid.c.
5996         * tune/speed.h: Prototypes for mulmid-related functions.
5997         (struct speed_params): Increased max number of sources to 5.
5998         (SPEED_ROUTINE_MPN_BINARY_ERR_N_CALL): New macro.
5999         (SPEED_ROUTINE_MPN_BINARY_ERR1_N): Likewise.
6000         (SPEED_ROUTINE_MPN_BINARY_ERR2_N): Likewise.
6001         (SPEED_ROUTINE_MPN_BINARY_ERR3_N): Likewise.
6002         (SPEED_ROUTINE_MPN_MULMID): Likewise.
6003         (SPEED_ROUTINE_MPN_MULMID_N): Likewise.
6004         (SPEED_ROUTINE_MPN_TOOM42_MULMID): Likewise.
6005         * tune/common.c (mpn_[add,sub]_err[1,2,3]_n): New functions.
6006         (speed_mpn_mulmid_basecase): New function.
6007         (speed_mpn_mulmid): New function.
6008         (speed_mpn_mulmid_n): New function.
6009         (speed_mpn_toom42_mulmid): New function.
6010         * tune/speed.c (routine): Added mpn_[add,sub]_err[1,2,3]_n,
6011         mpn_mulmid_basecase, mpn_toom42_mulmid, mpn_mulmid_n, and
6012         mpn_mulmid.
6013         * tune/tuneup.c (mulmid_toom42_threshold): New threshold variable.
6014         (tune_mulmid): New function.
6015         (all): Call tune_mulmid.
6017         Testing of mulmid, from David Harvey:
6018         * tests/refmpn.c (AORS_ERR1_N): New macro.
6019         (refmpn_add_err1_n, refmpn_sub_err1_n): New functions.
6020         (AORS_ERR2_N): New macro.
6021         (refmpn_add_err2_n, refmpn_sub_err2_n): New functions.
6022         (AORS_ERR3_N): New macro.
6023         (refmpn_add_err3_n, refmpn_sub_err3_n): New functions.
6024         (refmpn_mulmid_basecase): New function.
6025         (refmpn_toom42_mulmid): New function, wrapper for
6026         refmpn_mulmid_basecase.
6027         (refmpn_mulmid_n): Likewise.
6028         (refmpn_mulmid): Likewise.
6029         * tests/tests.h: Prototypes for new functions.
6030         * tests/devel/try.c (NUM_SOURCES): Increased to 5.
6031         (struct try_t): Use NUM_SOURCES and NUM_DESTS constants.
6032         (SIZE_4, SIZE_6, SIZE_DIFF_PLUS_3, SIZE_ODD): New constants.
6033         (OVERLAP_NOT_DST2): New flag.
6034         (param_init): New mulmid-related operation types.
6035         (mpn_toom42_mulmid_fun): New function.
6036         (choice_array): Added mulmid-related entries.
6037         (overlap_array): Extended for larger NUM_SOURCES.
6038         (OVERLAP_COUNT): Handle OVERLAP_NOT_DST2.
6039         (call): Support mulmid-related functions.
6040         (pointer_setup): Handle SIZE_4, SIZE_6, and SIZE_DIFF_PLUS_3.
6041         (SIZE_ITERATION): Handle SIZE_ODD.
6042         (SIZE2_FIRST): Handle SIZE_CEIL_HALF.
6043         (SIZE2_LAST): Likewise.
6045         Implementation of mulmid, from David Harvey:
6046         * mpn/generic/add_err1_n.c (mpn_add_err1_n): New file and function.
6047         * mpn/generic/add_err2_n.c (mpn_add_err2_n): Likewise.
6048         * mpn/generic/add_err3_n.c (mpn_add_err3_n): Likewise.
6049         * mpn/generic/sub_err1_n.c (mpn_sub_err1_n): Likewise.
6050         * mpn/generic/sub_err2_n.c (mpn_sub_err2_n): Likewise.
6051         * mpn/generic/sub_err3_n.c (mpn_sub_err3_n): Likewise.
6052         * mpn/generic/mulmid_basecase.c (mpn_mulmid_basecase): Likewise.
6053         * mpn/generic/mulmid_n.c (mpn_mulmid_n): Likewise.
6054         * mpn/generic/toom42_mulmid.c (mpn_toom42_mulmid): Likewise.
6055         * configure.in (gmp_mpn_functions): Added mulmid-related
6056         functions.
6057         (GMP_MULFUNC_CHOICES): Handle aors_err1_n, aors_err2_n, and
6058         aors_err3_n.
6059         * gmp-impl.h: Added prototypes for mulmid functions.
6060         (MPN_TOOM42_MULMID_MINSIZE): New constant.
6061         (MULMID_TOOM42_THRESHOLD): New threshold.
6062         (mpn_toom42_mulmid_itch): New macro.
6064 2011-10-03  Niels Möller  <nisse@lysator.liu.se>
6066         * tune/tune-gcd-p.c (main): Fixed broken loop conditions.
6068 2011-09-26  Torbjorn Granlund  <tege@gmplib.org>
6070         * mpn/sh/sh2/submul_1.asm: Make this old submul_1 implementation
6071         actually compute intended function.
6073         * longlong.h (SH): Recognise predefs for all SH processors as defined
6074         by current gcc versions.
6076 2011-09-25  Torbjorn Granlund  <tege@gmplib.org>
6078         * mpn/sh: Migrate files to '.asm'.
6079         * configure.in: Recognise sh3 and sh4.
6081 2011-09-21  Marc Glisse  <marc.glisse@inria.fr>
6083         * gmpxx.h (mpz_class::swap): New function.
6084         (mpq_class::swap): Likewise.
6085         (mpf_class::swap): Likewise.
6086         (swap): New function.
6087         * tests/cxx/t-assign.cc: Test the above.
6088         * doc/gmp.texi (swap): Document the above.
6090 2011-08-21  Marc Glisse  <marc.glisse@inria.fr>
6092         * tests/cxx/t-ops2.cc: check mul-div by 2.
6094         * gmpxx.h (__GMPXX_CONSTANT): New macro (__builtin_constant_p).
6095         (__gmp_binary_lshift): Move before multiplication. Optimize x << 0.
6096         (__gmp_binary_rshift): Move before division. Optimize x >> 0.
6097         (__gmp_binary_plus): Optimize x + 0. Rewrite rational + integer.
6098         (__gmp_binary_minus): Optimize x - 0 and 0 - x.
6099         Rewrite rational - integer.
6100         (__gmp_binary_multiplies): Optimize x * 2^n.
6101         (__gmp_binary_divides): Optimize x / 2^n.
6102         (__gmp_binary_*): Deduplicate code for symmetric operations.
6104 2011-08-18  Torbjorn Granlund  <tege@gmplib.org>
6106         * printf/doprntf.c (__gmp_doprnt_mpf): For DOPRNT_CONV_FIXED, ask for
6107         one more digit.
6109 2011-08-17  Torbjorn Granlund  <tege@gmplib.org>
6111         * mpf/sub.c: Fix typo in copy condition.  Delay an allocation.
6113 2011-08-12  Torbjorn Granlund  <tege@gmplib.org>
6115         * gmp-impl.h (LIMBS_PER_DIGIT_IN_BASE): Fix typo.
6117 2011-08-10  Torbjorn Granlund  <tege@gmplib.org>
6119         * gmp-impl.h (DIGITS_IN_BASEGT2_FROM_BITS): New.
6120         (DIGITS_IN_BASE_FROM_BITS): Compute more accurate result.
6121         (MPN_SIZEINBASE): Use DIGITS_IN_BASEGT2_FROM_BITS.
6123         * tests/rand/t-lc2exp.c (check_bigc): Call abort after reporting error.
6125 2011-08-09  Torbjorn Granlund  <tege@gmplib.org>
6127         * mpz/out_str.c (mpz_out_str): Reinsert accidentally deleted str_size
6128         adjustment.
6130         * gmp-impl.h (DIGITS_IN_BASE_FROM_BITS): Simplify, also avoiding
6131         overflow for base 2.
6133 2011-08-07  Torbjorn Granlund  <tege@gmplib.org>
6135         * gmp-impl.h (struct bases): Add log2b and logb2 field, remove
6136         chars_per_limb_exactly field.
6137         (DIGITS_IN_BASE_FROM_BITS): New.
6138         (DIGITS_IN_BASE_PER_LIMB): New.
6139         (LIMBS_PER_DIGIT_IN_BASE): New.
6140         * gen-bases.c: Generate log2b and logb2 fields; do not generate
6141         chars_per_limb_exactly field.
6142         * mpf/get_str.c mpf/out_str.c mpf/set_str.c mpn/generic/get_str.c
6143           mpn/generic/sizeinbase.c mpq/get_str.c mpz/inp_str.c mpz/out_str.c
6144           mpz/set_str.c printf/doprntf.c tune/speed.h tune/tuneup.c:
6145         Use new macros.
6147 2011-08-04  Torbjorn Granlund  <tege@gmplib.org>
6149         * dumbmp.c (mpz_root): Reinsert accidentally removed line.
6151 2011-08-03  Torbjorn Granlund  <tege@gmplib.org>
6153         * dumbmp.c (mpz_tdiv_qr): Correctly handle dividend value being equal
6154         to divisor value.
6155         (mpz_root): Create reasonable starting approximation.
6156         (mpz_sqrt): New function.
6157         (mpz_mul_2exp): Add faster block shifting code, disabled for now.
6159 2011-07-15  Torbjorn Granlund  <tege@gmplib.org>
6161         * mpn/arm/invert_limb.asm: Swap around some registers to silence 'as'
6162         warnings.
6164 2011-07-14  Torbjorn Granlund  <tege@gmplib.org>
6166         * mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q): Get mpn_sub_1 size
6167         argument right.
6169 2011-07-04  Torbjorn Granlund  <tege@gmplib.org>
6171         * tests/misc/t-locale.c: Disable test for mingw.
6173         * configure.in (x86_64 *-*-mingw*): Handle also cygwin here; clear out
6174         extra_functions_64.
6176 2011-07-02  Torbjorn Granlund  <tege@gmplib.org>
6178         * config.guess: Don't print newline in x86 cpuid function.
6179         Rewrite x86-64 cpu recognition asm code to work under Windoze.
6181 2011-06-16  Torbjorn Granlund  <tege@gmplib.org>
6183         * acinclude.m4 (GMP_ASM_RODATA): Fix typo in 2011-04-20 change.
6185         * configure.in: Surround tr ranges with [] for portability.
6187 2011-05-25  Niels Möller  <nisse@lysator.liu.se>
6189         * tune/tune-gcd-p.c (search): New function to search for minimum.
6190         (main): Replaced slow linear search.
6192 2011-05-24  Niels Möller  <nisse@lysator.liu.se>
6194         * tune/Makefile.am (EXTRA_PROGRAMS): Added tune-gcd-p. Also added
6195         related automake variables.
6197         * mpn/Makefile.am (tune-gcd-p): Deleted target.
6199         * tune/tune-gcd-p.c: New file, extracted from mpn/generic/gcd.c
6200         and updated.
6201         * mpn/generic/gcd.c: Deleted the corresponding code, including
6202         main function.
6204 2011-05-23  Niels Möller  <nisse@lysator.liu.se>
6206         * mpz/jacobi.c (mpz_jacobi): Simplified by swapping operands when
6207         needed, to get asize >= bsize. Use the reciprocity law generalized
6208         to work when one operand is even.
6210 2011-05-22  Niels Möller  <nisse@lysator.liu.se>
6212         * mpz/jacobi.c (mpz_jacobi): Another bugfix for the asize == 1
6213         case. Sometimes, powers of two in b were taken into account twice.
6215 2011-05-21  Niels Möller  <nisse@lysator.liu.se>
6217         * mpz/jacobi.c (mpz_jacobi): The handling of asize == 1 was
6218         broken. Rewrote it.
6220         * tests/mpz/t-jac.c (mpz_nextprime_step): Sanity check that prime
6221         candidate and step has no common factor.
6222         (check_data): Added some test cases related to the asize == 1 case
6223         in mpz_jacobi.
6225 2011-05-20  Niels Möller  <nisse@lysator.liu.se>
6227         * gmp-impl.h: Jacobi-related prototypes.
6229         * configure.in (gmp_mpn_functions): Added jacobi_2, jacobi,
6230         hgcd2_jacobi, hgcd_jacobi, and removed jacobi_lehmer.
6232         * mpz/jacobi.c (STRIP_TWOS): Deleted macro.
6233         (mpz_jacobi): Partially rewritten, to no longer makes the A
6234         operand odd. Use new mpn_jacobi_n.
6236         * mpn/generic/jacobi_lehmer.c: Deleted file.
6238         * mpn/generic/jacobi.c (mpn_jacobi_n): New subquadratic jacobi
6239         implementation. Supersedes jacobi_lehmer.c.
6241         * mpn/generic/hgcd_jacobi.c (mpn_hgcd_jacobi): New file and
6242         function. A copy of mpn_hgcd, using mpn_hgcd2_jacobi, and with calls to
6243         mpn_jacobi_update when appropriate.
6245         * mpn/generic/jacobi_2.c (mpn_jacobi_2): New file. Extracted from
6246         jacobi_lehmer.c.
6247         * mpn/generic/hgcd2_jacobi.c (mpn_hgcd2_jacobi): Likewise.
6249         * mpn/generic/hgcd.c (hgcd_hook): Avoid using NULL.
6251 2011-05-19  Niels Möller  <nisse@lysator.liu.se>
6253         * tune/hgcd_lehmer.c (__gmpn_hgcd_itch): Don't rename symbols for
6254         the functions moved to hgcd_matrix.c.
6256         * configure.in (gmp_mpn_functions): Added hgcd_matrix.
6258         * mpn/generic/hgcd.c (hgcd_matrix_update_1): Deleted. Several other
6259         helper functions moved to hgcd_matrix.c, see below.
6260         (hgcd_hook): New function.
6261         (hgcd_step): Simplified, using mpn_gcd_subdiv_step and hgcd_hook.
6263         * mpn/generic/hgcd_matrix.c: New file.
6264         (mpn_hgcd_matrix_init): Moved here, from hgcd.c.
6265         (mpn_hgcd_matrix_update_q): Likewise.
6266         (mpn_hgcd_matrix_mul_1): Likewise.
6267         (mpn_hgcd_matrix_mul): Likewise.
6268         (mpn_hgcd_matrix_adjust): Likewise.
6270         * mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): New
6271         argument s, for use by hgcd.
6272         * gmp-impl.h (mpn_gcd_subdiv_step): Update declaration.
6274         * mpn/generic/gcd.c (mpn_gcd): Pass s = 0 to mpn_gcd_subdiv_step.
6275         * mpn/generic/gcdext.c (mpn_gcdext): Likewise. Also added an ASSERT.
6276         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Likewise.
6277         (mpn_gcdext_hook): Added some ASSERTs.
6278         * mpn/generic/jacobi_lehmer.c (mpn_jacobi_lehmer): Likewise.
6280 2011-05-17  Niels Möller  <nisse@lysator.liu.se>
6282         * doc/gmp.texi (mpn_gcd, mpn_gcdext): Document input requirements:
6283         Must have un >= vn > 0, and V normalized.
6284         * mpn/generic/gcdext.c (mpn_gcdext): Added ASSERT for input
6285         normalization.
6286         * mpn/generic/gcd.c (mpn_gcd): Added ASSERTs for input
6287         requirements.
6289 2011-05-15  Marc Glisse  <marc.glisse@inria.fr>
6291         * gmpxx.h (operator<<): Dedup.
6292         * tests/cxx/t-iostream.cc: Test on compound types.
6294         * gmpxx.h (__gmp_binary_expr): Let things happen in place: c=(a+b)/2.
6296 2011-05-10  Marc Glisse  <marc.glisse@inria.fr>
6298         * gmpxx.h (__gmp_unary_expr): Let things happen in place: c=-(a+b).
6299         (operator>>): Clean the commenting out.
6300         * tests/cxx/t-iostream.cc: New file.
6301         * tests/cxx/Makefile.am: Added t-iostream.
6303 2011-05-10  Niels Möller  <nisse@lysator.liu.se>
6305         * doc/gmp.texi (mpz_gcd): Document that gcd(0,0) = 0.
6306         (mpz_gcdext): Document range for cofactors.
6308 2011-05-09  Niels Möller  <nisse@lysator.liu.se>
6310         * mpz/gcdext.c (mpz_gcdext): Increased sp allocation to bsize+1 limbs.
6311         * doc/gmp.texi (mpn_gcdext): Fixed documentation of allocation
6312         requirements; one extra limb is still needed for S.
6314 2011-05-09  Torbjorn Granlund  <tege@gmplib.org>
6316         * mpn/x86/fat/gmp-mparam.h (BMOD_1_TO_MOD_1_THRESHOLD): Define.
6317         * mpn/x86_64/fat/gmp-mparam.h (BMOD_1_TO_MOD_1_THRESHOLD): Define.
6319 2011-05-08  Marc Glisse  <marc.glisse@inria.fr>
6321         * gmpxx.h: Replace unsigned long with mp_bitcnt_t in many places.
6322         * doc/gmp.texi: Likewise.
6324 2011-05-06  Marc Glisse  <marc.glisse@inria.fr>
6326         * gmpxx.h (mpz_class): Make constructor from mp[qf]_class explicit.
6327         (mpq_class): Make constructor from mpf_class explicit.
6328         * doc/gmp.texi: Document the above.
6329         * NEWS: Likewise, and mention the EOF istream fix.
6330         * tests/cxx/t-mix.cc: New file.
6331         * tests/cxx/Makefile.am: Added t-mix.
6333         * tests/cxx/t-assign.cc: Minor tweak.
6334         * tests/cxx/t-misc.cc: Likewise.
6336         * gmpxx.h (__gmp_resolve_temp): Remove.
6337         (__gmp_set_expr): Remove some overloads.
6338         (mpq_class): mpz_init_set the numerator and denominator instead of
6339         mpq_init + mpq_set.
6340         (mpz_class): Dedup the string constructors.
6341         (mpq_class): Likewise.
6343         * tests/cxx/t-ops3.cc: New file.
6344         * tests/cxx/Makefile.am: Added t-ops3.
6346 2011-05-05  Torbjorn Granlund  <tege@gmplib.org>
6348         * mpz/gcdext.c: Correct sgn computation.
6349         Use MPZ_REALLOC.
6351 2011-05-05  Marc Glisse  <marc.glisse@inria.fr>
6353         * mpn/x86_64/fat/fat.c: Update for Sandy Bridge.
6354         * config.guess: warning to keep it in sync with fat.c.
6356 2011-05-05  Torbjorn Granlund  <tege@gmplib.org>
6358         * mpn/x86_64/fat/fat_entry.asm (PIC_OR_DARWIN): New symbol.  Use it to
6359         work around Darwin problems.
6361 2011-05-04  Niels Möller  <nisse@lysator.liu.se>
6363         * mpz/gcdext.c (mpz_gcdext): Reduced temporary allocations. Use
6364         mpz_divexact when computing the second cofactor.
6366 2011-05-03  David Harvey  <dmharvey@cims.nyu.edu>
6368         * configure.in: make invert_limb_table work correctly with
6369         --disable-assembly (from Niels Möller)
6371 2011-05-02  Marc Glisse  <marc.glisse@inria.fr>
6373         * .bootstrap: libtoolize doesn't need -c.
6375         * configfsf.guess: Update to version of 2011-02-02.
6376         * configfsf.sub: Update to version of 2011-03-23.
6378 2011-05-02  Niels Möller  <nisse@lysator.liu.se>
6380         * mpz/gcdext.c (mpz_gcdext): Don't allocate extra limbs at the end
6381         of mpn_gcdext parameters.
6383         * doc/gmp.texi (mpn_gcdext): Updated doc.
6385 2011-05-01  Niels Möller  <nisse@lysator.liu.se>
6387         * mpn/generic/div_qr_2u_pi1.c (mpn_div_qr_2u_pi1): Fixed ASSERT.
6389 2011-04-30  Marc Glisse  <marc.glisse@inria.fr>
6391         * gmp-h.in (mpz_cdiv_q_2exp): Use mp_bitcnt_t to match the definition
6392         and the documentation.
6393         (mpz_remove): Likewise.
6394         (mpf_eq): Likewise.
6396         * ltmain.sh: Remove.
6397         * .bootstrap: Let libtoolize generate ltmain.sh.
6399         * tests/cxx/t-ops2.cc: Add a couple tests.
6400         * tests/cxx/t-rand.cc: Likewise.
6402         * doc/gmp.texi (mpf_urandomb): Explicit the fact that it does not
6403         change the precision.
6405         * gmp-h.in (__GMP_EXTERN_INLINE): Recent g++ uses gnu_inline.
6407 2011-04-28  Torbjorn Granlund  <tege@gmplib.org>
6409         * configure.in (x86_64): Support bobcat specifically.
6410         (x86): Match bobcat and bulldozer, handle like k10.
6412 2011-04-28  David Harvey  <dmharvey@cims.nyu.edu>
6414         * README.HG: update autotools version numbers.
6416 2011-04-27  Torbjorn Granlund  <tege@gmplib.org>
6418         * tune/speed.h (speed_cyclecounter): Always use PIC variant when
6419         compiled with Apple's GCC.
6421         * mpn/x86/darwin.m4 (LEA): Complete rewrite.
6422         (m4append): New macro.
6424 2011-04-26  Torbjorn Granlund  <tege@gmplib.org>
6426         * mpn/sparc32/sparc-defs.m4 (changecom): Don't redefine '!' as it
6427         interferes with expressions.
6429 2011-04-20  Torbjorn Granlund  <tege@gmplib.org>
6431         * acinclude.m4 (GMP_ASM_RODATA): Make 'foo' larger to avoid clang
6432         problems.
6434 2011-04-12  Niels Möller  <nisse@lysator.liu.se>
6436         * mpn/x86_64/invert_limb.asm [PIC]: Declare mpn_invert_limb_table
6437         as .protected.
6439 2011-04-11  Torbjorn Granlund  <tege@gmplib.org>
6441         * mpn/x86/k7/invert_limb.asm: Use deflit for Darwin bug workaround.
6442         Undo 2011-03-28 change.
6444         * mpn/asm-defs.m4 (define_mpn): Use deflit.
6446 2011-04-10  Niels Möller  <nisse@lysator.liu.se>
6448         * mpn/asm-defs.m4 (define_mpn): Added invert_limb_table.
6450         * configure.in: Add invert_limb_table to extra_functions_64 on
6451         x86_64.
6453         * mpn/x86_64/invert_limb.asm: Changed references from approx_tab
6454         mpn_invert_limb_table.
6456         * mpn/x86_64/invert_limb_table.asm (mpn_invert_limb_table): New
6457         file. Extracted approximation table from invert_limb.asm, renamed
6458         and made global.
6460 2011-03-30  Niels Möller  <nisse@lysator.liu.se>
6462         * mpn/x86_64/div_qr_2u_pi1.asm: New file.
6464         * configure.in (gmp_mpn_functions): Add div_qr_2u_pi1.
6466         * gmp-impl.h (mpn_div_qr_2u_pi1): Declare.
6468         * mpn/generic/div_qr_2u_pi1.c (mpn_div_qr_2u_pi1): Moved to
6469         separate file, from...
6470         * mpn/generic/div_qr_2.c: ... old location.
6472         * mpn/generic/div_qr_2n_pi1.c: Renamed file, from...
6473         * mpn/generic/div_qr_2_pi1_norm.c: ...old name.
6474         * mpn/x86_64/div_qr_2n_pi1.asm: Renamed file, from...
6475         * mpn/x86_64/div_qr_2_pi1_norm.asm: ...old name.
6477         * gmp-impl.h (mpn_div_qr_2n_pi1): Use new name in declaration.
6478         * tune/speed.h (speed_mpn_div_qr_2n): Likewise.
6479         (speed_mpn_div_qr_2u): Likewise.
6481         * tune/tuneup.c (tune_div_qr_2): Use new name speed_mpn_div_qr_2n.
6483         * tune/speed.c (routine): Use new names mpn_div_qr_2n and
6484         mpn_div_qr_2u, also on the command line.
6486         * tune/common.c (speed_mpn_div_qr_2n): Renamed, from...
6487         (speed_mpn_div_qr_2_norm): ... old name.
6488         (speed_mpn_div_qr_2u): Renamed, from...
6489         (speed_mpn_div_qr_2_unnorm): ... old name.
6491         * mpn/generic/div_qr_2_pi1_norm.c (mpn_div_qr_2n_pi1): Renamed,
6492         from...
6493         (mpn_div_qr_2_pi1_norm): ...old name.
6494         * mpn/x86_64/div_qr_2_pi1_norm.asm: Likewise.
6496         * mpn/generic/div_qr_2.c (mpn_div_qr_2n_pi2): Renamed, from...
6497         (mpn_div_qr_2_pi2_norm): ... old name.
6498         (mpn_div_qr_2u_pi1): Renamed, from...
6499         (mpn_div_qr_2_pi1_unnorm): ... old name.
6500         (mpn_div_qr_2): Call functions using new names.
6502         * mpn/asm-defs.m4: Renamed div_qr_2-functions to new names.
6504 2011-03-29  Niels Möller  <nisse@lysator.liu.se>
6506         * mpn/x86_64/div_qr_2_pi1_norm.asm: Updated to use a separate rp
6507         argument.
6509         * gmp-impl.h (mpn_div_qr_2_pi1_norm): Updated declaration.
6510         * gmp-h.in (mpn_div_qr_2): Likewise.
6512         * tests/mpn/t-div.c (main): Adapted to new mpn_div_qr2 interface.
6513         * tune/speed.h (SPEED_ROUTINE_MPN_DIV_QR_2): Likewise.
6515         * mpn/generic/div_qr_2.c (mpn_div_qr_2_pi2_norm): Added rp
6516         argument. Don't clobber the input dividend.
6517         (mpn_div_qr_2_pi1_unnorm): Likewise.
6518         (mpn_div_qr_2): Likewise.
6519         * mpn/generic/div_qr_2_pi1_norm.c (mpn_div_qr_2_pi1_norm): Likewise.
6521 2011-03-29  Niels Möller  <nisse@lysator.liu.se>
6523         * mpn/x86/k7/invert_limb.asm: Use mov rather than push and pop.
6524         Earlier load of divisor from stack.
6526 2011-03-28  Torbjorn Granlund  <tege@gmplib.org>
6528         * mpn/x86/k7/invert_limb.asm: Protect movzwl register parameters from
6529         being interpreted as m4 macro parameters.
6531 2011-03-22  Niels Möller  <nisse@lysator.liu.se>
6533         * mpn/x86_64/div_qr_2_pi1_norm.asm: Copied optimized inner loop
6534         from divrem_2.asm.
6536         * mpn/x86_64/div_qr_2_pi1_norm.asm: First working, but poorly
6537         optimized, implementation.
6539         * mpn/asm-defs.m4 (define_mpn): Added div_qr_2_pi[12]_*norm.
6541         * mpn/generic/div_qr_2_pi1_norm.c (mpn_div_qr_2_pi1_norm): Moved
6542         to separate file, from...
6543         * mpn/generic/div_qr_2.c: ... old location.
6545         * gmp-impl.h (mpn_div_qr_2_pi1_norm): Declare.
6547         * configure.in (gmp_mpn_functions): Added div_qr_2_pi1_norm.
6549 2011-03-22  Torbjorn Granlund  <tege@gmplib.org>
6551         * configure.in (powerpc): Reinsert lost AIX cpu_path 32-bit handling.
6552         Reinsert lost linux/bsd cpu_path handling.
6554         * mpn/generic/mod_1_1.c: Disable powerpc asm for _LONG_LONG_LIMB.
6555         * mpn/generic/div_qr_2.c: Likewise.
6557         * mpn/generic/div_qr_2.c: Use asm just for gcc.
6558         Make powerpc add_sssaaaa work for 32-bit case, and use less strict
6559         constraints.
6561 2011-03-21  Niels Möller  <nisse@lysator.liu.se>
6563         * tune/tuneup.c (div_qr_2_pi2_threshold): New global variable.
6564         (tune_div_qr_2): New function.
6565         (all): Call tune_div_qr_2.
6567         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Added div_qr_2.c.
6569         * gmp-impl.h (DIV_QR_2_PI2_THRESHOLD): Setup for tuning.
6571         New 4/2 division loop, based on Torbjörn's work:
6572         * mpn/generic/div_qr_2.c (add_sssaaaa, add_csaac): New macros.
6573         (udiv_qr_4by2): New macro.
6574         (invert_4by2): New function.
6575         (mpn_div_qr_2_pi2_norm): New function.
6576         (DIV_QR_2_PI2_THRESHOLD): New threshold.
6577         (mpn_div_qr_2_pi1_norm): Renamed, from...
6578         (mpn_div_qr_2_norm): ... old name.
6579         (mpn_div_qr_2_pi1_unnorm): Renamed, from...
6580         (mpn_div_qr_2_unnorm): ... old name.
6581         (mpn_div_qr_2): Use mpn_div_qr_2_pi2_norm for large enough
6582         normalized divisors.
6584         * gmp-impl.h (udiv_qr_3by2): Avoid a copy.
6586 2011-03-21  Torbjorn Granlund  <tege@gmplib.org>
6588         * configure.in (hppa): Under linux, treat 64-bit processors as if they
6589         were 32-bit processors.
6591         * mpn/generic/addcnd_n.c: New file.
6592         * mpn/asm-defs.m4 (define_mpn): Add addcnd_n and subcnd_n.
6593         * configure.in (gmp_mpn_functions): Add addcnd_n.
6594         * gmp-impl.h (mpn_addcnd_n): Declare.
6596         * mpn/generic/subcnd_n.c: Combine nails and non-nails functions.
6598         * gmp-impl.h (invert_pi1): Prepend _ to local variables, protect
6599         parameters within () where necessary.
6601         * mpn/asm-defs.m4 (define_mpn): Add div_qr_2.
6602         * configure.in (gmp_mpn_functions): Reinsert mercurial-bug-removed
6603         line.
6605 2011-03-20  Torbjorn Granlund  <tege@gmplib.org>
6607         * configure.in (powerpc): Add cpu_path for all three ABIs.
6608         Rename "aix64" to "mode64" for consistency.
6610 2011-03-16  Marc Glisse  <marc.glisse@inria.fr>
6612         * gmpxx.h (__gmp_binary_not_equal): Remove, use !__gmp_binary_equal.
6613         (__gmp_binary_less_equal): Remove, use !__gmp_binary_greater.
6614         (__gmp_binary_greater_equal): Remove, use !__gmp_binary_less.
6615         * tests/cxx/t-ops2.cc: Typo.
6617 2011-03-20  Niels Möller  <nisse@lysator.liu.se>
6619         * tune/common.c (speed_mpn_div_qr_2_norm): New function.
6620         (speed_mpn_div_qr_2_unnorm): New function.
6621         * tune/speed.c (routine): Recognize above functions.
6622         * tune/speed.h: Declarations for above functions.
6623         (SPEED_ROUTINE_MPN_DIV_QR_2): New macro.
6625         * tests/mpn/t-div.c (main): Added tests for mpn_divrem_2 and
6626         mpn_div_qr_2.
6628         * mpn/generic/div_qr_2.c (mpn_div_qr_2): New file and function.
6629         Intended to eventually replace divrem_2.
6630         * configure.in (gmp_mpn_functions): Add div_qr_2.
6632 2011-03-16  Marc Glisse  <marc.glisse@inria.fr>
6634         * gmpxx.h (__gmp_set_expr): Remove broken declarations.
6636 2011-03-19  Torbjorn Granlund  <tege@gmplib.org>
6638         * mpz/fac_ui.c (mpz_fac_ui): Use MPZ_REALLOC for standard, conditional
6639         reallocation.
6641 2011-03-19  Niels Möller  <nisse@lysator.liu.se>
6643         * mpn/generic/divrem_2.c (mpn_divrem_2): Fixed comment and assert
6644         regarding q and n overlap.
6646 2011-03-16  Marc Glisse  <marc.glisse@inria.fr>
6648         * gmpxx.h (__mpz_set_ui_safe): New inline function.
6649         (__mpz_set_si_safe): Likewise.
6650         (__GMPXX_TMPZ_UI): Use the new function.
6651         (__GMPXX_TMPZ_SI): Likewise.
6652         (__GMPXX_TMPQ_UI): Likewise.
6653         (__GMPXX_TMPQ_SI): Likewise.
6654         * tests/cxx/t-ops2.cc: test converting 0 to stack mpq_t.
6656 2011-03-15  Marc Glisse  <marc.glisse@inria.fr>
6658         * gmpxx.h (__GMPXX_TMPQ_UI): New macro.
6659         (__GMPXX_TMPQ_SI): New macro.
6660         (struct __gmp_binary_multiplies): Rewrite, using the new macros.
6661         (struct __gmp_binary_divides): Likewise.
6663         * gmpxx.h (__GMPZ_ULI_LIMBS): Rewrite.
6664         * tests/cxx/t-ops2.cc: test converting ULONG_MIN to stack mpq_t.
6666 2011-03-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
6668         * mpn/generic/toom_interpolate_16pts.c: Remove ambiguity.
6670 2011-03-14  Torbjorn Granlund  <tege@gmplib.org>
6672         * tune/tuneup.c (tune_mul): Set tuning min size considering print skew.
6674         * doc/gmp.texi: Make reference to "Formatted I/O" chapters from type
6675         specific I/O sections.
6677         * mpn/alpha/add_n.asm: Add _nc entry point.
6678         * mpn/alpha/sub_n.asm: Likewise.
6679         * mpn/mips64/add_n.asm: Likewise.
6680         * mpn/mips64/sub_n.asm: Likewise.
6681         * mpn/sparc64/ultrasparc1234/add_n.asm: Likewise.
6682         * mpn/sparc64/ultrasparc1234/sub_n: Likewise.
6684 2011-03-13  Marc Glisse  <marc.glisse@inria.fr>
6686         * tests/cxx/t-ops2.cc: New file.
6687         * tests/cxx/Makefile.am: Added t-ops2.
6689 2011-03-13  Torbjorn Granlund  <tege@gmplib.org>
6691         * mpn/generic/toom32_mul.c (mpn_toom32_mul): Make 'hi' be limb-sized
6692         for better code.
6694         * gmp-impl.h (MPN_IORD_U): Handle x86_64 as well as x86_32.  Generate
6695         no code for incrementing by constant 0.
6697 2011-03-12  Marc Glisse  <marc.glisse@inria.fr>
6699         * gmpxx.h: Rename __GMPXX_TMP_* to __GMPXX_TMPZ_*. Use in more places.
6701 2011-03-12  Torbjorn Granlund  <tege@gmplib.org>
6703         * mpn/powerpc64/rshift.asm: Accept/return values correctly also for
6704         32-bit ABI.
6705         * mpn/powerpc64/lshift.asm: Likewise.
6707         * tune/powerpc.asm: Use powerpc syntax, not power syntax.
6709         * tune/common.c (speed_udiv_qrnnd_preinv1, etc): Remove.
6710         * tune/speed.c (routine): Remove udiv_qrnnd_preinv1, etc.
6712 2011-03-12  Marc Glisse  <marc.glisse@inria.fr>
6714         * tests/cxx/t-istream.cc: Restrict mpq test in t-istream -s.
6716         * gmpxx.h: Remove leftover #undefs.
6718 2011-03-11  Torbjorn Granlund  <tege@gmplib.org>
6720         * gmp-impl.h (udiv_qrnnd_preinv1, udiv_qrnnd_preinv2,
6721         udiv_qrnnd_preinv2gen): Remove obsolete macros.
6722         (udiv_qrnnd_preinv): New name for udiv_qrnnd_preinv3.
6724 2011-03-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
6726         * gmp-impl.h: Declare many mpn_{sub,add}lsh*_n_ip[12] functions/macros.
6727         * mpn/generic/toom_interpolate_5pts.c: Use mpn_sublsh1_n_ip1.
6729         * tests/devel/try.c: Tests for {add,sub}lsh*_n_ip[12].
6730         * tests/refmpn.c: New reference for mpn_{add,sub}lsh*_n_ip[12].
6731         * tests/tests.h: Declarations for reference functions above.
6733         * tune/common.c: New speed_mpn_{add,sub}lsh*_n_ip[12] functions.
6734         * tune/speed.h: Prototypes for functions above.
6735         * tune/speed.c: Support for mpn_{add,sub}lsh*_n_ip[12].
6737         * mpn/x86/k7/sublsh1_n.asm: Replaced generic sublsh1 code with faster _ip1.
6738         * mpn/x86/atom/sublsh1_n.asm: Changed PROLOGUE accordingly.
6740         * configure.in: Define HAVE_NATIVE_mpn_addlsh*_n*_ip[12].
6741         * mpn/asm-defs.m4: Declare mpn_addlsh*_n*_ip[12].
6743 2011-03-10  Marc Glisse  <marc.glisse@inria.fr>
6745         * tests/cxx/t-istream.cc: Explicit conversion to streampos.
6747 2011-03-10  Torbjorn Granlund  <tege@gmplib.org>
6749         * mpn/x86/atom/sse2/mul_basecase.asm: Suppress wind-down rp updates.
6751         * Move new aorrlsh_n.asm to new k8 dir.  Revert
6752         mpn/x86_64/aorrlsh_n.asm.
6753         * configure.in: Setup path for new k8 directory.
6755 2011-03-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
6757         * mpn/x86/pentium4/sse2/bdiv_dbm1c.asm: New file, was in atom.
6758         * mpn/x86/atom/sse2/bdiv_dbm1c.asm: Grab file above.
6760 2011-03-09  Torbjorn Granlund  <tege@gmplib.org>
6762         * mpn/x86_64/aorrlsh_n.asm: Complete rewrite.
6764         * mpn/x86_64/core2/aorrlsh_n.asm: New file, grabbing another asm file.
6766 2011-03-09  Marc Glisse  <marc.glisse@inria.fr>
6768         * tests/cxx/t-ostream.cc: Use bool instead of int.
6769         * tests/cxx/t-istream.cc: Likewise.
6770         * tests/cxx/t-misc.cc: Likewise.
6772         * cxx/ismpznw.cc: Don't clear eofbit.
6773         * cxx/ismpq.cc: Likewise.
6774         * cxx/ismpf.cc: Likewise.
6775         * tests/cxx/t-istream.cc: Test accordingly.
6777 2011-03-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
6779         * mpn/x86/atom/sse2/bdiv_dbm1c.asm: New file.
6781 2011-03-09  Marc Glisse  <marc.glisse@inria.fr>
6783         * doc/gmp.texi: Remove void return type from constructors. Document
6784         explicit constructors. Document mpf_class::mpf_class(mpf_t).
6786 2011-03-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
6788         * mpn/x86/atom/sse2/sqr_basecase.asm: Postponed pushes. Cleaned
6789         outer loop exit.
6791 2011-03-07  Torbjorn Granlund  <tege@gmplib.org>
6793         * mpn/x86_64/gcd_1.asm: Workaround Oracle assembler bug.
6795         * mpn/x86/atom/sse2/mul_basecase.asm: Replace addmul_1 loops.
6796         Tweak outer loop rp updates.
6798 2011-03-06  Torbjorn Granlund  <tege@gmplib.org>
6800         * mpn/x86/atom/sse2/sqr_basecase.asm: New file.
6802 2011-03-05  Torbjorn Granlund  <tege@gmplib.org>
6804         * mpn/x86_64/bdiv_dbm1c.asm: Write proper feed-in code.
6806 2011-03-04  Torbjorn Granlund  <tege@gmplib.org>
6808         * mpn/x86_64/addmul_2.asm: Rewrite for linear performance.
6810 2011-03-03  Torbjorn Granlund  <tege@gmplib.org>
6812         * mpn/generic/mod_1_1.c (add_mssaaaa): Canonicalise layout.  Add arm
6813         variant.  Enable sparc64 code and powerpc code (the latter for 32-bit
6814         and 64-bit).
6816         * mpn/generic/sqrtrem.c (mpn_dc_sqrtrem): Use mpn_addlsh1_n.
6818         * gmp-impl.h (mpn_addlsh_nc, mpn_rsblsh_nc): Declare.
6819         * mpn/asm-defs.m4: Likewise.
6821         * mpn/x86_64/coreisbr/aorrlsh_n.asm: Disable mpn_rsblsh_n due to
6822         carry-in issues.
6823         * mpn/x86_64/coreinhm/aorrlsh_n.asm: Likewise.
6824         * mpn/x86_64/coreisbr/aorrlsh2_n.asm: Likewise.
6826 2011-03-03  Niels Möller  <nisse@lysator.liu.se>
6828         * mpn/generic/mod_1_1.c (add_mssaaaa): For x86 and x86_64, treat m
6829         as in output operand only. Added sparc32 implementation. Also
6830         added #if:ed out attempts at sparc64 and powerpc64.
6832         * tune/tuneup.c (tune_mod_1): Record result of MOD_1_1P_METHOD
6833         measurement for use by mpn_mod_1_tune. And omit measurement if
6834         mpn_mod_1_1p is native assembly code.
6836         * mpn/generic/mod_1.c (mpn_mod_1_1p) [TUNE_PROGRAM_BUILD]: Macro
6837         to check mod_1_1p_method and call the right function.
6838         (mpn_mod_1_1p_cps) [TUNE_PROGRAM_BUILD]: Likewise.
6840         * gmp-impl.h (MOD_1_1P_METHOD) [TUNE_PROGRAM_BUILD]: Define macro.
6841         (mod_1_1p_method) [TUNE_PROGRAM_BUILD]: Declare variable.
6843 2011-03-02  Torbjorn Granlund  <tege@gmplib.org>
6845         * mpn/x86_64/coreinhm/aorrlsh_n.asm: New file.
6846         * mpn/x86_64/coreisbr/aorrlsh_n.asm: New file.
6848 2011-03-01  Niels Möller  <nisse@lysator.liu.se>
6850         * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p_cps): Eliminated a neg and
6851         two mov instructions.
6853         * mpn/x86/k7/mod_1_1.asm (mpn_mod_1_1p_cps): Simplified
6854         computation, analogous to recent x86_64/mod_1_1.asm changes.
6855         (mpn_mod_1_1p): Corresponding changes. Don't shift b.
6857         * mpn/sparc64/mod_1_4.c (mpn_mod_1s_4p_cps): Use udiv_rnnd_preinv
6858         rather than udiv_rnd_preinv.
6859         (mpn_mod_1s_4p): Likewise.
6861 2011-03-01  Torbjorn Granlund  <tege@gmplib.org>
6863         * mpn/x86/pentium4/sse2/mul_1.asm: Swap entry insns to share more code
6864         between entry points.
6865         * mpn/x86/pentium4/sse2/addmul_1.asm: Likewise.
6867         * mpz/divegcd.c: Rewrite, as per Marc Glisse's suggestion.  Also fix
6868         problem with passing a longlong limb to a _ui function.
6870         * gmp-impl.h (udiv_qrnnd_preinv3): Cast truth value to mask's type.
6871         (udiv_rnnd_preinv): Likewise.
6872         * mpn/generic/mod_1_1.c (mpn_mod_1_1p): Likewise.
6874 2011-02-28  Niels Möller  <nisse@lysator.liu.se>
6876         * mpn/generic/mod_1_1.c (add_mssaaaa): Typo fix, define
6877         add_mssaaaa, not add_sssaaaa.
6879         * tune/tuneup.c (tune_mod_1): Measure mpn_mod_1_1_1 and
6880         mpn_mod_1_1_2, to set MOD_1_1P_METHOD.
6882         * tune/speed.c (routine): Added mpn_mod_1_1_1 and mpn_mod_1_1_2.
6884         * tune/speed.h: Declare speed_mpn_mod_1_1_1, speed_mpn_mod_1_1_2,
6885         mpn_mod_1_1p_1, mpn_mod_1_1p_2, mpn_mod_1_1p_cps_1, and
6886         mpn_mod_1_1p_cps_2.
6888         * tune/common.c (speed_mpn_mod_1_1_1): New function.
6889         (speed_mpn_mod_1_1_2): New function.
6891         * tune/Makefile.am (libspeed_la_SOURCES): Added mod_1_1-1.c
6892         mod_1_1-2.c.
6894         * tune/mod_1_1-1.c: New file.
6895         * tune/mod_1_1-2.c: New file.
6897         * mpn/generic/mod_1_1.c: Implemented an algorithm with fewer
6898         multiplications, configured via MOD_1_1P_METHOD.
6900         * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p_cps): Simplified
6901         computation of B2modb, use B^2 mod (normalized b).
6902         (mpn_mod_1_1p): Corresponding changes. Don't shift b.
6904         * mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Use udiv_rnnd_preinv rather
6905         than udiv_rnd_preinv.
6906         (mpn_mod_1_1p): Likewise.
6907         * mpn/generic/mod_1_4.c: Analogous changes.
6908         * mpn/generic/mod_1_3.c: Analogous changes.
6909         * mpn/generic/mod_1_2.c: Analogous changes.
6910         * mpn/generic/mod_1.c: Analogous changes.
6911         * mpn/generic/pre_mod_1.c: Analogous changes.
6913         * gmp-impl.h (udiv_qrnnd_preinv3): Eliminated unpredictable branch
6914         using masking logic. Further optimization of the nl == constant 0
6915         case, similar to udiv_rnd_preinv.
6916         (udiv_rnnd_preinv): Likewise.
6917         (udiv_rnd_preinv): Deleted, use udiv_rnnd_preinv with nl == 0
6918         instead.
6920         * tests/mpn/t-divrem_1.c (check_data): Added testcase to exercise
6921         the nl == constant 0 special case in udiv_qrnnd_preinv3.
6923 2011-02-28  Torbjorn Granlund  <tege@gmplib.org>
6925         * mpn/generic/rootrem.c (mpn_rootrem): Combine two similar scalar
6926         divisions.  Misc minor cleanup.
6928         * mpn/x86/atom/sse2/aorsmul_1.asm: Shorten software pipeline.
6930         * mpn/x86/atom/mul_basecase.asm: Remove file no longer used.
6932         * mpn/generic/rootrem.c (mpn_rootrem_internal): Delay O(log(U))
6933         allocations until they are known to be needed.
6935 2011-02-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
6937         * mpn/x86/atom/sse2/mul_1.asm: New code.
6939 2011-02-27  Niels Möller  <nisse@lysator.liu.se>
6941         * gmp-impl.h (udiv_rnnd_preinv): New macro.
6943 2011-02-27  Torbjorn Granlund  <tege@gmplib.org>
6945         * mpn/x86/atom/sse2/mul_basecase.asm: New file.
6947 2011-02-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
6949         * mpn/x86/atom/sse2/aorsmul_1.asm: Optimise non-loop code.
6951 2011-02-26  Torbjorn Granlund  <tege@gmplib.org>
6953         * mpn/powerpc64/mode64/aorsmul_1.asm: Add MULFUNC_PROLOGUE.
6954         * mpn/m68k/mc68020/aorsmul_1.asm: Likewise.
6956 2011-02-25  Torbjorn Granlund  <tege@gmplib.org>
6958         * mpn/x86/atom/sse2/aorsmul_1.asm: New file.
6959         * mpn/x86/atom/aorsmul_1.asm: File removed.
6961 2011-02-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
6963         * mpn/x86/atom/sse2/divrem_1.asm: New file (was in x86/atom).
6964         * mpn/x86/atom/sse2/mul_1.asm: Likewise.
6965         * mpn/x86/atom/sse2/popcount.asm: Likewise.
6966         * mpn/x86/atom/divrem_1.asm: ReMoved (in sse2/ now).
6967         * mpn/x86/atom/mul_1.asm: Likewise.
6968         * mpn/x86/atom/popcount.asm: Likewise.
6970         * configure.in: Set up mmx path for atom.
6971         * mpn/x86/atom/mmx/copyd.asm: New file (was in x86/atom).
6972         * mpn/x86/atom/mmx/copyi.asm: Likewise.
6973         * mpn/x86/atom/mmx/hamdist.asm: Likewise.
6974         * mpn/x86/atom/copyd.asm: ReMoved (in mmx/ now).
6975         * mpn/x86/atom/copyi.asm: Likewise.
6976         * mpn/x86/atom/hamdist.asm: Likewise.
6978 2011-02-24  Torbjorn Granlund  <tege@gmplib.org>
6980         * mpn/x86/atom/sse2/mod_1_1.asm: New file.
6981         * mpn/x86/atom/sse2/mod_1_4.asm: New file.
6982         * configure.in: Set up sse2 path for atom.
6984         * mpn/x86/p6/sse2/mod_1_1.asm: New file.
6985         * mpn/x86/p6/sse2/mod_1_4.asm: Fix typo in MULFUNC_PROLOGUE.
6987 2011-02-24  Niels Möller  <nisse@lysator.liu.se>
6989         * mpn/x86/k7/mod_1_1.asm (mpn_mod_1_1p): Rewrite using the same
6990         algorithm as the x86_64 version.
6992 2011-02-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
6994         * mpn/x86/atom/logops_n.asm: New file (same loop as aors_n).
6996 2011-02-23  Niels Möller  <nisse@lysator.liu.se>
6998         * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p): Shaved off one
6999         instruction and one register in the inner loop. Rearranged
7000         registers slightly, and no longer needs the callee-save register
7001         %r12.
7003 2011-02-22  Torbjorn Granlund  <tege@gmplib.org>
7005         * configure.in: Export SHLD_SLOW and SHRD_SLOW to config.m4, also
7006         fixing typo in exporting code.
7008         * mpn/x86_64/nano/gmp-mparam.h (SHLD_SLOW, SHRD_SLOW): Define.
7009         * mpn/x86_64/atom/gmp-mparam.h (SHLD_SLOW, SHRD_SLOW): Define.
7011 2011-02-22  Niels Möller  <nisse@lysator.liu.se>
7013         * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p): Rewrite.
7015 2011-02-22 Marco Bodrato <bodrato@mail.dm.unipi.it>
7017         * mpn/x86/atom/lshiftc.asm: New file (a copy of lshift.asm with a handful of neg added).
7019 2011-02-21  Torbjorn Granlund  <tege@gmplib.org>
7021         * mpn/x86/aors_n.asm: Move _nc entry to after main code.  Align loop
7022         and _n entry for claimed performance.  Normalise mnemonic usage.
7024         * mpn/x86/atom/aorrlsh1_n.asm: New file (code from rsblsh_1, slightly
7025         slower for addlsh_1 for large operands, but much faster for small).
7026         * mpn/x86/atom/addlsh1_n.asm: Remove.
7027         * mpn/x86/atom/rsblsh1_n.asm: Remove.
7029 2011-02-20  Marc Glisse  <marc.glisse@inria.fr>
7031         * mpq/aors.c: Rewrite to remove redundant division.
7033 2011-02-20  Torbjorn Granlund  <tege@gmplib.org>
7035         * mpn/x86/atom/lshift.asm: New file.
7036         * mpn/x86/atom/rshift.asm: Normalise mnemonic usage.
7038         * gmp-impl.h (mpn_divexact_by7): Relax inclusion condition.
7040         * mpz/divegcd.c (mpz_divexact_by5): New conditionally enabled function.
7041         (mpz_divexact_by3): Wrap inside appropriate conditions.
7042         (mpz_divexact_gcd): Rewrite.
7044         * mpn/x86/bdiv_dbm1c.asm: Save a jump.
7046 2011-02-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
7048         * mpn/x86/atom/aorslshC_n.asm: New file.
7049         * mpn/x86/atom/sublsh2_n.asm: New file.
7051         * mpn/x86/atom/aors_n.asm: New code.
7052         * mpn/x86/atom/rshift.asm: Atom64 code adapted to 32-bit.
7053         * mpn/x86/atom/lshift.asm: Likewise.
7055 2011-02-19  Torbjorn Granlund  <tege@gmplib.org>
7057         * mpn/x86_64/atom/rsh1aors_n.asm: New file.
7059         * mpn/x86_64/atom/lshift.asm: New file.
7060         * mpn/x86_64/atom/rshift.asm: New file.
7061         * mpn/x86_64/atom/lshiftc.asm: New file.
7063 2011-02-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
7065         * mpn/x86/atom/aorsmul_1.asm: Small improvements for small sizes.
7066         * mpn/x86/atom/aorrlshC_n.asm: Tiny size improvements.
7068 2011-02-16  Torbjorn Granlund  <tege@gmplib.org>
7070         * configure.in: Fix k8/k10 32-bit path setup problem.
7072 2011-02-16 Marco Bodrato <bodrato@mail.dm.unipi.it>
7074         * mpn/x86/atom/aorsmul_1.asm: Revive an old k7/aorsmul.
7076 2011-02-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
7078         * gmp-impl.h (mpn_sublsh_n): Declare.
7079         * mpn/asm-defs.m4: Likewise.
7081         * mpn/x86/atom/aorrlshC_n.asm: New file (was k7).
7082         * mpn/x86/k7/aorrlshC_n.asm: ReMoved.
7083         * mpn/x86/atom/aorrlsh2_n.asm: Grab atom/aorrlshC_n.asm.
7084         * mpn/x86/atom/rsblsh1_n.asm: Grab atom/aorrlshC_n.asm.
7086 2011-02-13  Torbjorn Granlund  <tege@gmplib.org>
7088         * mpn/x86_64/atom/aorrlsh2_n.asm: New file.
7090 2011-02-12  Torbjorn Granlund  <tege@gmplib.org>
7092         * mpn/x86_64/aorrlsh_n.asm: Minor tweaks, update c/l numbers.
7094         * mpn/x86_64/atom/sublsh1_n.asm: New file.
7096         * mpn/x86_64/atom/aorrlsh1_n.asm: New file.
7098 2011-02-11  Torbjorn Granlund  <tege@gmplib.org>
7100         * mpn/powerpc64/mode64/mod_1_1.asm: Fix Darwin syntax issues.
7102 2011-02-10  Torbjorn Granlund  <tege@gmplib.org>
7104         * mpn/powerpc64/mode64/mod_1_4.asm: Tune away a cycle for 970.
7106 2011-02-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
7108         * mpn/x86/k7/addlsh1_n.asm: Faster core loop (Torbjorn's).
7110         * configure.in: Add HAVE_NATIVE_{add,sub,rsb}lsh{,1,2}_nc.
7111         * tests/tests.h: refmpn_{add,sub,rsb}lsh{,1,2}_nc prototypes.
7112         * tests/refmpn.c: New refmpn_{add,sub,rsb}lsh{,1,2}_nc.
7113         * tests/devel/try.c: Tests for mpn_{add,sub,rsb}lsh{,1,2}_nc.
7115         * mpn/x86/k7/aorrlshC_n.asm: New file.
7116         * mpn/x86/atom/aorrlsh2_n.asm: Grab k7/aorrlshC_n.asm.
7117         * mpn/x86/atom/rsblsh1_n.asm: Grab k7/aorrlshC_n.asm.
7119 2011-02-06 Marco Bodrato <bodrato@mail.dm.unipi.it>
7121         * mpn/x86/k7/addlsh1_n.asm: New file.
7122         * mpn/x86/k7/sublsh1_n.asm: New file.
7123         * mpn/x86/atom/addlsh1_n.asm: Grab k7/addlsh1_n.asm.
7124         * mpn/x86/atom/sublsh1_n.asm: Grab k7/sublsh1_n.asm.
7126 2011-02-05  Torbjorn Granlund  <tege@gmplib.org>
7128         * gmp-impl.h (mpn_addlsh1_nc, mpn_addlsh2_nc, mpn_sublsh1_nc,
7129         mpn_sublsh2_nc, mpn_rsblsh1_nc, mpn_rsblsh2_nc): Declare.
7130         * mpn/asm-defs.m4: Likewise.
7132         * mpn/x86_64/coreisbr/aorrlshC_n.asm: New file.
7133         * mpn/x86_64/coreisbr/aorrlsh1_n.asm: New file.
7134         * mpn/x86_64/coreisbr/aorrlsh2_n.asm: New file.
7136         * mpn/x86_64/coreisbr/aors_n.asm: New file, based on old
7137         atom/aors_n.asm.
7138         * mpn/x86_64/atom/aors_n.asm: Grab coreisbr/aors_n.asm.
7140 2011-02-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
7142         * gmp-impl.h (mpn_toom6_mul_n_itch): Handle threshold == zero.
7143         (mpn_toom8_mul_n_itch): Likewise.
7144         (MPN_TOOM6H_MIN, MPN_TOOM8H_MIN): Define.
7145         * tests/mpn/t-toom6h.c: No tests below MPN_TOOM6H_MIN.
7146         * tests/mpn/t-toom8h.c: No tests below MPN_TOOM8H_MIN.
7148         * mpz/lucnum_ui.c: Use mpn_addlsh2_n.
7150 2011-02-04  Torbjorn Granlund  <tege@gmplib.org>
7152         * mpn/x86_64/atom/rsh1aors_n.asm: Add a MULFUNC_PROLOGUE.
7153         * mpn/x86_64/atom/dive_1.asm: Likewise.
7154         * mpn/x86_64/atom/popcount.asm: Likewise.
7155         * mpn/x86_64/core2/popcount.asm: Likewise.
7156         * mpn/x86_64/coreinhm/hamdist.asm: Likewise.
7157         * mpn/x86_64/coreinhm/popcount.asm: Likewise.
7158         * mpn/x86_64/nano/popcount.asm: Likewise.
7159         * mpn/x86_64/pentium4/popcount.asm: Likewise.
7161 2011-02-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
7163         * mpn/x86/atom/mode1o.asm: New file, grabbing another asm file.
7164         * mpn/x86/atom/mul_1.asm: Claim mul_1c.
7166 2011-02-02  Niels Möller  <nisse@lysator.liu.se>
7168         * tune/speed.h (SPEED_ROUTINE_MPN_HGCD_CALL): Fixed one
7169         speed_operand_dst call.
7171 2011-02-01  Torbjorn Granlund  <tege@gmplib.org>
7173         * tune/speed.h (struct speed_params): Allow for 4 dst operands.
7174         * tune/common.c (TOLERANCE): Increase from 0.5% to 1%.
7176         * tune/speed.h (SPEED_ROUTINE_MPN_HGCD_CALL): New macro, mainly based
7177         on old speed_mpn_hgcd, but with speed_operand_src calls (as suggested
7178         by Niels).
7179         * tune/common.c (speed_mpn_hgcd): Invoke SPEED_ROUTINE_MPN_HGCD_CALL.
7180         (speed_mpn_hgcd_lehmer): Likewise.
7182         * configure.in: Set up 32-bit x86 paths for new corei* CPU strings.
7184 2011-01-31  Torbjorn Granlund  <tege@gmplib.org>
7186         * config.guess: Recognise new Intel processors.
7188         * config.guess: Support 'coreinhm' and 'coreisbr'.
7189         * config.sub: Likewise.
7190         * configure.in: Likewise.
7192 2011-01-30  Torbjorn Granlund  <tege@gmplib.org>
7194         * configure.in: Support x86/geode.
7195         * mpn/x86/geode/gmp-mparam.h: New file.
7197 2011-01-29 Marco Bodrato <bodrato@mail.dm.unipi.it>
7199         * mpn/x86/atom/addlsh1_n.asm: Removed.
7200         * mpn/x86/atom/rsh1add_n.asm: Likewise.
7202 2011-01-28  Torbjorn Granlund  <tege@gmplib.org>
7204         * mpn/alpha/ev6/slot.pl: Add some missing insns.
7206 2011-01-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
7208         * mpn/x86/atom/copyd.asm: New file, grabbing another asm file.
7209         * mpn/x86/atom/copyi.asm: Likewise.
7210         * mpn/x86/atom/aors_n.asm: Likewise.
7211         * mpn/x86/atom/addlsh1_n.asm: Likewise.
7212         * mpn/x86/atom/aorsmul_1.asm: Likewise.
7213         * mpn/x86/atom/bdiv_q_1.asm: Likewise.
7214         * mpn/x86/atom/dive_1.asm: Likewise.
7215         * mpn/x86/atom/divrem_1.asm: Likewise.
7216         * mpn/x86/atom/hamdist.asm: Likewise.
7217         * mpn/x86/atom/logops_n.asm: Likewise.
7218         * mpn/x86/atom/lshift.asm: Likewise.
7219         * mpn/x86/atom/mod_34lsub1.asm: Likewise.
7220         * mpn/x86/atom/mul_1.asm: Likewise.
7221         * mpn/x86/atom/mul_basecase.asm: Likewise.
7222         * mpn/x86/atom/popcount.asm: Likewise.
7223         * mpn/x86/atom/rsh1add_n.asm: Likewise.
7224         * mpn/x86/atom/rshift.asm: Likewise.
7225         * mpn/x86/atom/sqr_basecase.asm: Likewise.
7227 2011-01-27  Torbjorn Granlund  <tege@gmplib.org>
7229         * mpn/x86_64/atom/rsh1aors_n.asm: New file, grabbing another asm file.
7230         * mpn/x86_64/atom/popcount.asm: Likewise.
7231         * mpn/x86_64/atom/dive_1.asm: Likewise.
7232         * mpn/x86_64/nano/popcount.asm: Likewise.
7234 2011-01-26  Torbjorn Granlund  <tege@gmplib.org>
7236         * mpn/alpha/invert_limb.asm: Complete rewrite.
7238 2011-01-25  Torbjorn Granlund  <tege@gmplib.org>
7240         * mpn/powerpc32/invert_limb.asm: New file.
7242 2011-01-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
7244         * mpn/x86/pentium4/sse2/bdiv_q_1.asm: New file.
7245         * mpn/x86/k7/bdiv_q_1.asm: New file.
7247 2011-01-24  Torbjorn Granlund  <tege@gmplib.org>
7249         * tune/tuneup.c (tune_mul_n, tune_sqr): Loop, re-measuring thresholds
7250         until no tiny ranges remain.
7252 2011-01-23  Torbjorn Granlund  <tege@gmplib.org>
7254         * mpn/ia64/mul_2.asm: Tweak to 1.5 c/l, less overhead.
7256         * mpn/ia64/addmul_2.asm: Rewrite, adding mpn_addmul_2s entry point.
7258 2011-01-22  Torbjorn Granlund  <tege@gmplib.org>
7260         * mpn/ia64/aors_n.asm: Fix some incorrect bundle types.
7262         * mpn/ia64/sqr_diagonal.asm: Remove.
7264         * mpn/ia64/sqr_diag_addlsh1.asm: New file.
7266         * mpn/ia64/ia64-defs.m4: Define some shorter convenience mnemonics.
7268         * mpn/generic/sqr_basecase.c (MPN_SQR_DIAG_ADDLSH1): New macro, using
7269         new function mpn_sqr_diag_addlsh1 or defining its equivalent.
7271         * gmp-impl.h (mpn_addmul_2s): Declare.
7272         (mpn_sqr_diag_addlsh1): Declare.
7273         * mpn/asm-defs.m4 (define_mpn): Add addmul_2s and sqr_diag_addlsh1.
7275         * configure.in: Add HAVE_NATIVEs for mpn_sqr_diag_addlsh1 and
7276         mpn_addmul_2s.
7277         (gmp_mpn_functions_optional): Add sqr_diag_addlsh1.
7279 2011-01-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
7281         * tests/devel/try.c: Initial support for mpn_bdiv_q_1.
7282         * mpn/x86/pentium/bdiv_q_1.asm: New file.
7283         * mpn/x86/p6/bdiv_q_1.asm: New file.
7285 2011-01-20  Torbjorn Granlund  <tege@gmplib.org>
7287         * tune/speed.c (run_gnuplot): Update to current gnuplot syntax.
7289         * mpn/powerpc64/mode64/aorsmul_1.asm: Trim away 0.5 c/l for submul_1
7290         for POWER5.
7292 2011-01-19  Torbjorn Granlund  <tege@gmplib.org>
7294         * mpn/x86_64/core2/rsh1aors_n.asm: New file.
7296 2011-01-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
7298         * mpn/x86/bdiv_q_1.asm: New file (same core alg. as dive_1).
7300 2011-01-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
7302         * mpn/generic/divexact.c: Avoid COPY if not needed.
7304 2011-01-14  Torbjorn Granlund  <tege@gmplib.org>
7306         * gmp-impl.h (struct cpuvec_t): Add field bmod_1_to_mod_1_threshold.
7307         * configure.in (fat_thresholds): Add BMOD_1_TO_MOD_1_THRESHOLD.
7309 2011-01-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
7311         * mpz/mul.c: Remove redundant size computation.
7313 2011-01-08  Torbjorn Granlund  <tege@gmplib.org>
7315         * tests/devel/try.c (types enum): Add TYPE_MUL_5 and TYPE_MUL_6.
7316         (param_init): Support new types.
7317         (choice_array): Support testing of mpn_mul_5 and mpn_mul_6.
7318         (call): Support new routines.
7320         * tests/refmpn.c (refmpn_mul_5, refmpn_mul_6): New functions.
7321         * tests/tests.h (refmpn_mul_5, refmpn_mul_6): Declare.
7322         Remove parameter names from some other functions.
7324         * gmp-impl.h (mpn_mul_5, mpn_mul_6): Declare.
7325         * mpn/asm-defs.m4: Likewise, also declare mpn_addmul_5, mpn_addmul_6,
7326         mpn_addmul_7, and mpn_addmul_8.
7328         * configure.in (gmp_mpn_functions_optional): Add mul_5 and mul_6.
7330         * tune/speed.c (routine): Add measuring of mpn_mul_5 and mpn_mul_6.
7331         * tune/common.c (speed_mpn_mul_5, speed_mpn_mul_6): New functions.
7332         * tune/speed.h: Declare new functions.
7334 2011-01-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
7336         * mpz/aors.h: Remove #ifdef BERKELEY_MP, and cleanup.
7337         * mpz/cmp.c: Likewise.
7338         * mpz/gcd.c: Likewise.
7339         * mpz/mul.c: Likewise.
7340         * mpz/powm.c: Likewise.
7341         * mpz/set.c: Likewise.
7342         * mpz/sqrtrem.c: Likewise.
7343         * mpz/tdiv_qr.c: Likewise.
7345 2010-12-28  Torbjorn Granlund  <tege@gmplib.org>
7347         * mpn/minithres/gmp-mparam.h: Update with several recent thresholds.
7349 2010-12-19  Torbjorn Granlund  <tege@gmplib.org>
7351         * mpn/x86/k7/mod_1_1.asm: Canonicalise cmov forms.
7352         * mpn/x86/k7/mod_1_4.asm: Likewise.
7353         * mpn/x86/pentium4/sse2/mod_1_1.asm: Likewise.
7354         * mpn/x86/pentium4/sse2/mod_1_4.asm: Likewise.
7355         * mpn/x86_64/core2/divrem_1.asm: Likewise.
7356         * mpn/x86_64/divrem_1.asm: Likewise.
7357         * mpn/x86_64/mod_1_1.asm: Likewise.
7358         * mpn/x86_64/mod_1_2.asm: Likewise.
7359         * mpn/x86_64/mod_1_4.asm: Likewise.
7361         * mpn/x86/k7/gcd_1.asm: Rewrite.  Remove slow 'div' loop.  Call
7362         mpn_mod_1 for operands with mode than BMOD_1_TO_MOD_1_THRESHOLD limbs.
7363         Misc cleanups.
7365 2010-12-18  Torbjorn Granlund  <tege@gmplib.org>
7367         * mpn/x86_64/gcd_1.asm: Call mpn_mod_1 for operands with mode than
7368         BMOD_1_TO_MOD_1_THRESHOLD limbs.
7370         * configure.in: Generalise code for putting THRESHOLDs in config.m4.
7371         Add BMOD_1_TO_MOD_1_THRESHOLD to list.
7373         * mpn/x86_64/core2/divrem_1.asm: Tweak slightly, correct cycle counts.
7375         * mpn/x86_64/addmul_2.asm: Remove constant index.
7376         * mpn/x86_64/lshiftc.asm: Likewise.
7377         * mpn/x86_64/pentium4/lshift.asm: Likewise.
7378         * mpn/x86_64/pentium4/lshiftc.asm: Likewise.
7379         * mpn/x86_64/pentium4/rshift.asm: Likewise.
7381 2010-12-16  Torbjorn Granlund  <tege@gmplib.org>
7383         * mpn/x86_64/mod_34lsub1.asm: Complete rewrite.
7384         * mpn/x86_64/pentium4/mod_34lsub1.asm: New file, old
7385         mpn/x86_64/mod_34lsub1.asm.
7387 2010-12-15  Torbjorn Granlund  <tege@gmplib.org>
7389         * mpn/powerpc64/vmx/popcount.asm: Rewrite to use vperm count table.
7391 2010-12-14  Torbjorn Granlund  <tege@gmplib.org>
7393         * mp-h.in: Remove.
7394         * configure.in: Remove mp-h.in from AC_OUTPUT invocation.
7396 2010-12-13  Torbjorn Granlund  <tege@gmplib.org>
7398         * mpz/mod.c: Rewrite.
7400         * mpn/x86_64/corei/popcount.asm: New file.
7401         * mpn/x86_64/corei/hamdist.asm: New file.
7403         * mpn/x86_64/k10/hamdist.asm: New file.
7405         * configure.in: Amend last change for lame /bin/sh.
7407 2010-12-12  Torbjorn Granlund  <tege@gmplib.org>
7409         * configure.in: Comment out M4=m4-not-needed.
7411         * mpn/x86_64/k10/popcount.asm: New file.
7412         * configure.in: Setup special path for k10 and later AMD CPUs.
7413         Remove special x86_64'k8' path, since directory is non-existent.
7415 2010-12-11  Torbjorn Granlund  <tege@gmplib.org>
7417         * mpn/sparc32/ultrasparct1: New directory.
7418         * mpn/sparc32/ultrasparct1/add_n.asm: New file.
7419         * mpn/sparc32/ultrasparct1/sub_n.asm: New file.
7420         * mpn/sparc32/ultrasparct1/mul_1.asm: New file.
7421         * mpn/sparc32/ultrasparct1/addmul_1.asm: New file.
7422         * mpn/sparc32/ultrasparct1/submul_1.asm: New file.
7423         * mpn/sparc32/ultrasparct1/sqr_diagonal.asm: New file.
7425         * config.guess: Support Ultrasparc T2 and T3.
7426         * config.sub: Likewise.
7427         * configure.in: Likewise.
7429         * config.guess: Generalise BSD Sparc recognition by allowing any
7430         caps (needed for OpenBSD which spells things innovatively).
7432 2010-12-01  Torbjorn Granlund  <tege@gmplib.org>
7434         * config.guess: Match new AMD processors, allow finer distinctions
7435         among old ones.
7436         * acinclude.m4 (X86_64_PATTERN): Likewise.
7437         * config.sub: Likewise.
7438         * configure.in: Rudimentarily support new AMD processors.
7440         * configure.in (--enable_assembly): New option.
7441         (target none-*-*): Disable, give error.
7443 2010-11-29  Torbjorn Granlund  <tege@gmplib.org>
7445         * mpn/x86/x86-defs.m4 (LEA): Support non-PIC code.
7446         * mpn/x86/darwin.m4 (LEA): Likewise.
7448         * tests/amd64call.asm: Rewrite for code size, and to match calls and
7449         returns.
7451         * tests/x86call.asm: Rewrite for code size, to support PIC, and to
7452         match calls and returns.
7453         * tests/x86check.c: Rewrite.
7455 2010-11-22  Torbjorn Granlund  <tege@gmplib.org>
7457         * mpz/get_str.c: Make all bases either work or return an error.
7458         * mpz/out_str.c: Likewise.
7459         * mpq/get_str.c: Likewise.
7460         * mpf/get_str.c: Likewise.
7462 2010-11-14  Torbjorn Granlund  <tege@gmplib.org>
7464         * tests/misc/t-printf.c: Add explicit casts for type conversions.
7465         * mpn/generic/toom62_mul.c: Likewise.
7467 2010-11-13  Torbjorn Granlund  <tege@gmplib.org>
7469         * mpn/generic/get_d.c: Misc cleanup.  Fail with a syntax error for
7470         non-IEEE fp formats.
7472         * tests/devel/try.c (malloc_region): Add explicit casts for type
7473         conversions.
7475         * acinclude.m4 (GMP_ASM_RODATA): Make test code snippet C++ compatible.
7476         (GMP_C_DOUBLE_FORMAT): Likewise.
7477         (GMP_FUNC_VSNPRINTF): Likewise.
7479         * config.guess (x86): Make test C snippet C++ compatible.
7481 2010-11-12  Torbjorn Granlund  <tege@gmplib.org>
7483         * Makefile.am: Remove mpbsd.
7484         * configure.in: Remove mpbsd.
7485         * doc/configuration: Remove mpbsd mentions.
7486         * doc/gmp.texi: Remove mpbsd docs.
7487         * tests/Makefile.am: Remove mpbsd.
7488         * libmp.sym: Remove.
7489         * mpbsd: Remove directory and files.
7490         * tests/mpbsd: Remove directory and files.
7492 2010-11-11  Torbjorn Granlund  <tege@gmplib.org>
7494         * mpn/x86_64/atom/aors_n.asm: Don't rely on ZF after 'bt' insn.
7495         Use 64-bit 'test' to support operands of 2^32 limbs and more.
7497         * rand: New directory, move rand*.c and randmt.h here.
7498         * rand/Makefile.am: New file.
7499         * Makefile.am (SUBDIRS): Add rand.
7500         (RANDOM_OBJECTS): New variable.
7501         (libgmp_la_SOURCES): Remove random objects.
7502         (libgmp_la_DEPENDENCIES): Add RANDOM_OBJECTS.
7503         * configure.in (AC_OUTPUT): Add rand/Makefile.
7505         * ansi2knr.1: File removed.
7506         * ansi2knr.c: File removed.
7508 2010-11-10  Torbjorn Granlund  <tege@gmplib.org>
7510         Make it possible to compile GMP with g++:
7512         * gmp-impl.h: Declare __gmp_digit_value_tab here.
7513         * mpbsd/min.c: ...not here.
7514         * mpbsd/xtom.c: ...nor here.
7515         * mpf/set_str.c: ...nor here.
7516         * mpz/inp_str.c: ...nor here.
7517         * mpz/set_str.c: ...nor here.
7519         * mpn/generic/toom43_mul.c: Add casts for logical operations on enums.
7520         * mpn/generic/toom44_mul.c: Likewise.
7521         * mpn/generic/toom4_sqr.c: Likewise.
7522         * mpn/generic/toom52_mul.c: Likewise.
7523         * mpn/generic/toom53_mul.c: Likewise.
7524         * mpn/generic/toom62_mul.c: Likewise.
7526         * mpz/clrbit.c: Clean up typing using MPZ_REALLOC.
7527         * mpz/setbit.c: Likewise.
7529         * mpz/powm.c: Avoid variable name 'new'.
7531         * randlc2x.c: Add explicit casts for type conversions.
7532         * tests/misc/t-printf.c: Likewise.
7533         * tests/misc/t-scanf.c: Likewise.
7534         * tests/misc.c: Likewise.
7535         * tests/mpz/convert.c: Likewise.
7536         * tests/refmpn.c: Likewise.
7538         * tests/tests.h: Unconditionally use <sstream> for now.
7540         * tests/memory.c: Include "tests.h.
7542         * mp_get_fns.c: Add a __GMP_NOTHROW for coherency with prototype.
7543         * mp_set_fns.c: Likewise.
7544         * mpf/cmp.c: Likewise.
7545         * mpf/cmp_si.c: Likewise.
7546         * mpf/cmp_ui.c: Likewise.
7547         * mpf/fits_s.h: Likewise.
7548         * mpf/fits_u.h: Likewise.
7549         * mpf/get_dfl_prec.c: Likewise.
7550         * mpf/get_prc.c: Likewise.
7551         * mpf/get_si.c: Likewise.
7552         * mpf/get_ui.c: Likewise.
7553         * mpf/int_p.c: Likewise.
7554         * mpf/set_dfl_prec.c: Likewise.
7555         * mpf/set_prc_raw.c: Likewise.
7556         * mpf/size.c: Likewise.
7557         * mpf/swap.c: Likewise.
7558         * mpq/equal.c: Likewise.
7559         * mpq/swap.c: Likewise.
7560         * mpz/cmp.c: Likewise.
7561         * mpz/cmp_si.c: Likewise.
7562         * mpz/cmp_ui.c: Likewise.
7563         * mpz/cmpabs.c: Likewise.
7564         * mpz/cmpabs_ui.c: Likewise.
7565         * mpz/cong_2exp.c: Likewise.
7566         * mpz/divis_2exp.c: Likewise.
7567         * mpz/fits_s.h: Likewise.
7568         * mpz/get_si.c: Likewise.
7569         * mpz/hamdist.c: Likewise.
7570         * mpz/scan0.c: Likewise.
7571         * mpz/scan1.c: Likewise.
7572         * mpz/sizeinbase.c: Likewise.
7573         * mpz/swap.c: Likewise.
7574         * mpz/tstbit.c: Likewise.
7575         * tal-reent.c: Likewise.
7577 2010-11-09  Torbjorn Granlund  <tege@gmplib.org>
7579         * configure.in: Get rid of K&R support.
7580         * Makefile.am: Likewise.
7581         * mpn/Makefile.am: Likewise.
7582         * doc/configuration: Update docs wrt K&R support.
7583         * doc/gmp.texi: Likewise.
7585         * configure.in (AC_INIT): Amend bug reporting address with manual
7586         reference.
7588 2010-11-06  Torbjorn Granlund  <tege@gmplib.org>
7590         * config.guess: If cpuid says we have 32bit-only x86 but
7591         configfsf.guess return x86_64, return the latter.
7593         * mpn/x86_64/aors_n.asm: Rewrite not to rely on ZF after 'bt' insn.
7595 2010-10-09  Torbjorn Granlund  <tege@gmplib.org>
7597         * mpn/generic/trialdiv.c: Update documentation.
7599 2010-10-04  Torbjorn Granlund  <tege@gmplib.org>
7601         * mpn/x86_64/gcd_1.asm: Use m4_lshift to avoid << operator.
7602         * mpn/x86_64/aorrlshC_n.asm: Likewise.
7603         * mpn/x86_64/pentium4/aorslshC_n.asm: Likewise.
7604         * mpn/x86/k7/gcd_1.asm: Likewise.
7606 2010-08-20  Niels Möller  <nisse@lysator.liu.se>
7608         Suggested by Ozkan Sezer:
7609         * configure.in: If $M4 is already set in the environment, don't
7610         touch it. Fixed the case that no assembler files are used, and
7611         GMP_PROG_M4 is omitted.
7613 2010-08-08  Torbjorn Granlund  <tege@gmplib.org>
7615         * mpn/x86_64/fat/fat.c: Recognise many more processors.
7617 2010-06-30  Torbjorn Granlund  <tege@gmplib.org>
7619         * mpn/x86_64/divrem_2.asm: Tune.
7621 2010-06-19  Niels Möller  <nisse@lysator.liu.se>
7623         * tune/speed.h (SPEED_ROUTINE_MPN_MOD_1_1): Pass normalized
7624         divisor to the benchmarked function.
7626 2010-06-15  Torbjorn Granlund  <tege@gmplib.org>
7628         * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p_cps): Rewrite.
7629         * mpn/x86_64/mod_1_2.asm (mpn_mod_1s_2p_cps): Rewrite.
7630         * mpn/x86_64/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite.
7632         * gmp-impl.h (udiv_rnd_preinv): Simplify.
7634         * mpn/x86/k7/mod_1_1.asm: New file.
7635         * mpn/x86/pentium4/sse2/mod_1_1.asm (mpn_mod_1_1p_cps): Rewrite.
7636         * mpn/x86/k7/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite.
7637         * mpn/x86/pentium4/sse2/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite.
7639         * mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Store results as they are
7640         computed.
7641         * mpn/generic/mod_1_2.c (mpn_mod_1s_2p_cps): Likewise.
7642         * mpn/generic/mod_1_4.c (mpn_mod_1s_4p_cps): Likewise.
7644         * mpn/x86/k7/invert_limb.asm: Moved from mpn/x86/invert_limb.asm.
7646 2010-06-15  Niels Möller  <nisse@lysator.liu.se>
7648         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-mod_1.
7649         * tests/mpn/t-mod_1.c: New file.
7651 2010-05-25  Torbjorn Granlund  <tege@gmplib.org>
7653         * mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr_itch): Trim out space
7654         for inverse, since that is passed in already.
7656 2010-05-24  Torbjorn Granlund  <tege@gmplib.org>
7658         * mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr_itch): New function.
7659         * gmp-impl.h: Declare it.
7660         * tune/common.c (speed_mpn_mupi_div_qr): Use new itch function.
7661         * tune/speed.h (SPEED_ROUTINE_MPN_MUPI_DIV_QR): Pass parameters right
7662         for new itch function.
7664         * mpn/powerpc32/lshiftc.asm: New file.
7666 2010-05-22  Torbjorn Granlund  <tege@gmplib.org>
7668         * tune/tuneup.c (tune_mod_1): Revert to version of 2010-05-06.
7670 2010-05-17  Torbjorn Granlund  <tege@gmplib.org>
7672         * configure.in (ia64): Get 32-bit sizeof test right.
7674         * tune/tuneup.c (tune_mod_1): Undo unintensional change to tuning of
7675         PREINV_MOD_1_TO_MOD_1_THRESHOLD.
7677 2010-05-16  Torbjorn Granlund  <tege@gmplib.org>
7679         * mpn/sparc64/mod_1.c: Rewrite.
7680         * mpn/sparc64/sparc64.h (umul_ppmm_s): New macro.
7681         * mpn/sparc64/mod_1_4.c: New file.
7683         * mpn/generic/divrem_1.c: Minor cleanup.
7684         * mpn/generic/mod_1.c: Likewise.
7685         * mpn/generic/mod_1_1.c: Likewise.
7686         * mpn/generic/mod_1_2.c: Likewise.
7687         * mpn/generic/mod_1_3.c: Likewise.
7688         * mpn/generic/mod_1_4.c: Likewise.
7690         * configure.in (ia64-hpux): Do sizeof tests for 32-bit and 64-bit ABI.
7692         * tune/tuneup.c (tune_mod_1): Completely finish MOD_1_N tuning before
7693         tuning MOD_1U_TO_MOD_1_1_THRESHOLD.
7695 2010-05-14  Torbjorn Granlund  <tege@gmplib.org>
7697         * mpn/generic/redc_2.c: Use asm code just for GNU C.
7699 2010-05-13  Torbjorn Granlund  <tege@gmplib.org>
7701         * mpn/sparc64/ultrasparc1234: New directory.  Move all code that uses
7702         floating-point into this directory.
7703         * configure.in: Point to ultrasparc1234 for appropriate CPUs.
7705         * mpn/sparc64/ultrasparct1/add_n.asm: New file.
7706         * mpn/sparc64/ultrasparct1/addlsh2_n.asm: New file.
7707         * mpn/sparc64/ultrasparct1/addmul_1.asm: New file.
7708         * mpn/sparc64/ultrasparct1/lshift.asm: New file.
7709         * mpn/sparc64/ultrasparct1/mul_1.asm: New file.
7710         * mpn/sparc64/ultrasparct1/rsblsh2_n.asm: New file.
7711         * mpn/sparc64/ultrasparct1/rshift.asm: New file.
7712         * mpn/sparc64/ultrasparct1/sublsh1_n.asm: New file.
7713         * mpn/sparc64/ultrasparct1/sublshC_n.asm: New file.
7714         * mpn/sparc64/ultrasparct1/addlsh1_n.asm: New file.
7715         * mpn/sparc64/ultrasparct1/addlshC_n.asm: New file.
7716         * mpn/sparc64/ultrasparct1/lshiftc.asm: New file.
7717         * mpn/sparc64/ultrasparct1/rsblsh1_n.asm: New file.
7718         * mpn/sparc64/ultrasparct1/rsblshC_n.asm: New file.
7719         * mpn/sparc64/ultrasparct1/sub_n.asm: New file.
7720         * mpn/sparc64/ultrasparct1/sublsh2_n.asm: New file.
7721         * mpn/sparc64/ultrasparct1/submul_1.asm: New file.
7722         * mpn/sparc64/ultrasparct1/gmp-mparam.h: New file.
7724         * configure.in: Give ultrasparct1 and ultrasparct2 special code path.
7726         * mpn/x86_64/pentium4/gmp-mparam.h: Disable mpn_addlsh_n, mpn_rsblsh_n.
7728 2010-05-12  Niels Möller  <nisse@lysator.liu.se>
7730         * mpz/jacobi.c (mpz_jacobi): Fixed off-by-one error in use of
7731         scratch space.
7733         * tune/common.c (speed_mpz_powm_sec): New function.
7734         * tune/speed.h: Declare speed_mpz_powm_sec.
7735         * tune/speed.c (routine): Added speed_mpz_powm_sec.
7737         * tune/common.c (speed_mpn_addlsh_n, speed_mpn_sublsh_n)
7738         (speed_mpn_rsblsh_n): New functions.
7739         * tune/speed.h: Declare new functions.
7740         * tune/speed.c (routine): Add new functions.
7742 2010-05-12  Torbjorn Granlund  <tege@gmplib.org>
7744         * mpn/x86_64/mod_1_4.asm: Tune for more processors.
7746         * mpn/x86_64/pentium4/lshiftc.asm: New file.
7748 2010-05-11  Niels Möller  <nisse@lysator.liu.se>
7750         * mpz/jacobi.c (mpz_jacobi): Deleted old implementation.
7751         Reorganized new implementation, to handle small inputs efficiently.
7753         * tests/mpz/t-jac.c (check_large_quotients): Reduced test sizes.
7754         (check_data): One more input pair related to a fixed bug.
7755         (main): Enable check_large_quotients.
7757 2010-05-10  Torbjorn Granlund  <tege@gmplib.org>
7759         * mpn/x86_64/aorrlsh2_n.asm: Fix typo.
7761 2010-05-09  Torbjorn Granlund  <tege@gmplib.org>
7763         * mpn/x86_64/aorrlshC_n.asm: New file based on aorrlsh2_n.asm.
7764         * mpn/x86_64/aorrlsh2_n.asm: Now just include aorrlshC_n.asm.
7765         * mpn/x86_64/core2/aorrlsh1_n.asm: New file, include ../aorrlshC_n.asm.
7766         * mpn/x86_64/core2/aorrlsh2_n.asm: Likewise.
7768         * mpn/x86_64/core2/sublshC_n.asm: New file based on aorslsh1_n.asm.
7769         * mpn/x86_64/core2/aorslsh1_n.asm: Remove.
7770         * mpn/x86_64/core2/sublsh1_n.asm: Just include sublshC_n.asm.
7771         * mpn/x86_64/core2/sublsh2_n.asm: Likewise.
7773 2010-05-08  Torbjorn Granlund  <tege@gmplib.org>
7775         * mpn/x86_64/atom/gmp-mparam.h: Disable mpn_rsh1add_n, mpn_rsh1sub_n.
7777         * mpn/x86_64/pentium4/aorslshC_n.asm: New file based on aorslsh1_n.asm.
7778         * mpn/x86_64/pentium4/aorslsh1_n.asm: Now just include aorslshC_n.asm.
7779         * mpn/x86_64/pentium4/aorslsh2_n.asm: New file.
7781 2010-05-07  Torbjorn Granlund  <tege@gmplib.org>
7783         * mpn/sparc64: Support operands of >= 2^32 limbs.
7785         * mpn/sparc64/lshiftc.asm: New file.
7787         * mpn/ia64/divrem_2.asm: Complete rewrite.
7789 2010-05-06  Torbjorn Granlund  <tege@gmplib.org>
7791         * tune/tuneup.c (all): Don't call tune_divrem_2.
7793         * mpn/generic/divrem_2.c: Complete rewrite.
7795         * tune/tuneup.c (tune_mod_1): Fix typo.
7797 2010-05-05  Torbjorn Granlund  <tege@gmplib.org>
7799         * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p): Use macro register names.
7800         (mpn_mod_1_1p_cps): Rewrite.
7802         * mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Micro-optimise.
7804         * longlong.h: Undo 2009-03-01 change for powerpc64, it gives poor code.
7806         * mpn/x86/pentium4/sse2/mod_1_1.asm: New file.
7808         * mpn/powerpc64/mode64/mod_1_1.asm: New file.
7810         * tune/tuneup.c (tune_mod_1): Use more typical divisor, for the benefit
7811         of machines with early-out multipliers.
7813 2010-05-04  Torbjorn Granlund  <tege@gmplib.org>
7815         * tune/tuneup.c (tune_mod_1): Fix typo.
7817         * mpn/generic/mod_1_1.c: Undo last change.
7818         * mpn/x86_64/mod_1_1.asm: Likewise.
7820 2010-05-03  Niels Möller  <nisse@lysator.liu.se>
7822         * mpn/generic/jacobi_lehmer.c (jacobi_hook): New function.
7823         (mpn_jacobi_subdiv_step): Deleted function.
7824         (mpn_jacobi_lehmer): Use general mpn_gcd_subdiv_step.
7826         * mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): Reorganized
7827         to use a single hook function.
7828         * mpn/generic/gcdext.c (mpn_gcdext): Adapted to new hook
7829         interface.
7830         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_hook): New unified hook
7831         function.
7832         * mpn/generic/gcd.c (gcd_hook): Renamed from gcd_done, and adapted
7833         to new hook interface.
7834         * gmp-impl.h (gcd_subdiv_step_hook): New typedef, now a function
7835         type, not a struct.
7836         (mpn_gcdext_hook): Declare.
7838 2010-05-03  Torbjorn Granlund  <tege@gmplib.org>
7840         * mpn/generic/mod_1_1.c: Avoid multiply for 2 limb feed-in.
7841         * mpn/generic/mod_1_2.c: Likewise.
7842         * mpn/generic/mod_1_3.c: Likewise.
7843         * mpn/generic/mod_1_4.c: Likewise.
7844         * mpn/x86_64/mod_1_1.asm: Likewise.
7845         * mpn/x86_64/mod_1_2.asm: Likewise.
7846         * mpn/x86_64/mod_1_4.asm: Likewise.
7847         * mpn/x86/k7/mod_1_4.asm: Likewise.
7848         * mpn/x86/pentium4/sse2/mod_1_4.asm: Likewise.
7849         * mpn/alpha/ev6/mod_1_4.asm: Likewise.
7851         * tune/tuneup.c (tune_mod_1): Measure MOD_1_1_TO_MOD_1_2_THRESHOLD and
7852         MOD_1_2_TO_MOD_1_4_THRESHOLD before MOD_1U_TO_MOD_1_1_THRESHOLD for
7853         correctness.
7855         * mpn/powerpc64/sqr_diagonal.asm: Complete rewrite.
7857         * mpn/powerpc64/mode64/mod_1_4.asm: New file.
7859 2010-05-02  Torbjorn Granlund  <tege@gmplib.org>
7861         * config.guess: Recognise power7.
7863         * configure.in: Major overhaul of powerpc support.
7865         * mpn/powerpc64/p6/lshift.asm: New file.
7866         * mpn/powerpc64/p6/lshiftc.asm: Likewise.
7867         * mpn/powerpc64/p6/rshift.asm: Likewise.
7869 2010-04-30  Torbjorn Granlund  <tege@gmplib.org>
7871         * configure.in (powerpc64): Support CPU specific mode-less subdirs.
7873         * mpn/powerpc64/aix.m4 (PROLOGUE_cpu): Use "named csect" making
7874         requested alignment actually honoured.
7876 2010-04-30  Niels Möller  <nisse@lysator.liu.se>
7878         * mpn/generic/jacobi_lehmer.c (mpn_jacobi_2): Fixed handling of
7879         the case bl == 1. Fixed missing application of reciprocity.
7881 2010-04-29  Niels Möller  <nisse@lysator.liu.se>
7883         * configure.in (gmp_mpn_functions): Deleted gcdext_subdiv_step.
7885         * mpn/generic/gcdext.c (mpn_gcdext): Use new generalized
7886         mpn_gcd_subdiv_step.
7888         * mpn/generic/gcdext_lehmer.c (gcdext_update): New function.
7889         (gcdext_done): New function.
7890         (gcdext_hook): New const hook struct.
7891         (mpn_gcdext_lehmer_n): Use new generalized mpn_gcd_subdiv_step.
7893         * mpn/generic/gcd.c (gcd_done): New function.
7894         (gcd_hook): New const hook struct.
7895         (mpn_gcd): Adapted to new mpn_gcd_subdiv_step interface.
7897         * mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): Reorganized
7898         function. Added hook function pointers to the argument list, so
7899         the same function can be used for gcd, gcdext, and jacobi.
7901         * gmp-impl.h (struct gcd_subdiv_step_hook): New struct.
7902         (mpn_gcdext_subdiv_step): Deleted prototype.
7903         (struct gcdext_ctx): New struct.
7904         (gcdext_hook): Declare const struct.
7905         (mpn_gcd_subdiv_step): Updated prototype.
7907         * mpn/generic/gcdext_subdiv_step.c: Deleted file.
7909 2010-04-28  Torbjorn Granlund  <tege@gmplib.org>
7911         * mpn/powerpc64/lshift.asm: Rewrite.
7912         * mpn/powerpc64/rshift.asm: Likewise.
7913         * mpn/powerpc64/mode64/lshiftc.asm: New file.
7915         * mpn/powerpc64/aix.m4: Align functions to 32-byte boundary.
7916         * mpn/powerpc64/darwin.m4: Likewise.
7917         * mpn/powerpc64/elf.m4: Likewise.
7919 2010-04-28  Niels Möller  <nisse@lysator.liu.se>
7921         * tests/mpz/t-jac.c (check_data): Added some more test cases.
7923         * mpn/generic/jacobi_lehmer.c (mpn_jacobi_2): Bugfix, count
7924         trailing zeros, not leading.
7926 2010-04-27  Torbjorn Granlund  <tege@gmplib.org>
7928         * mpn/powerpc64/mode64/p6/mul_basecase.asm: New file.
7930 2010-04-23  Niels Möller  <nisse@lysator.liu.se>
7932         * gmp-impl.h (MPN_GCD_LEHMER_N_ITCH): Deleted.
7933         (mpn_gcd_lehmer_n): Deleted declaration.
7935         * mpn/generic/gcd.c (gcd_2): Moved from gcd_lehmer.c.
7936         (mpn_gcd): Inlined the code from mpn_gcd_lehmer_n. Also use
7937         MPN_GCD_SUBDIV_STEP_ITCH rather than MPN_GCD_LEHMER_N_ITCH.
7939 2010-04-22  Torbjorn Granlund  <tege@gmplib.org>
7941         * mpn/powerpc64/mode64/bdiv_dbm1c.asm: Swap multiply insns to make them
7942         consecutive, for the benefit of POWER6.
7944         * mpn/powerpc64/mode64/p6/gmp-mparam.h: New file.
7946 2010-04-21  Torbjorn Granlund  <tege@gmplib.org>
7948         * mpn/generic/gcd_lehmer.c: Deleted file.
7950         * mpn/powerpc64/mode64/divrem_1.asm: Swap multiply insns to make them
7951         consecutive, for the benefit of POWER6.
7952         * mpn/powerpc64/mode64/dive_1.asm: Likewise.
7953         * mpn/powerpc64/mode64/divrem_2.asm: Likewise.
7954         * mpn/powerpc64/mode64/mul_1.asm: Likewise.
7955         * mpn/powerpc64/mode64/aorsmul_1.asm: Likewise.
7957         * mpn/powerpc64/mode64/aorslshC_n.asm: Swap ldx operands as a temporary
7958         workaround for POWER6 pipeline glitch.
7960 2010-04-19  Niels Möller  <nisse@lysator.liu.se>
7962         * mpz/jacobi.c (mpz_jacobi): New implementation using
7963         mpn_jacobi_lehmer. Currently #if:ed out.
7965         * mpn/generic/jacbase.c (mpn_jacobi_base)
7966         [JACOBI_BASE_METHOD < 4]: Support inputs with a >= b.
7968         * gmp-impl.h (mpn_jacobi_lehmer): Added prototype.
7969         (jacobi_table): Declare.
7970         (mpn_jacobi_init): New inline function.
7971         (mpn_jacobi_finish): Likewise.
7972         (mpn_jacobi_update): Likewise.
7974         * mpn/generic/jacobi_lehmer.c (mpn_jacobi_lehmer): New file, new
7975         function.
7977         * configure.in (gmp_mpn_functions): Added jacobi_lehmer.
7979 2010-04-14  Niels Möller  <nisse@lysator.liu.se>
7981         * configure.in (gmp_mpn_functions): Added
7982         matrix22_mul1_inverse_vector.
7983         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Added
7984         matrix22_mul1_inverse_vector.c.
7986         * gmp-impl.h (mpn_matrix22_mul1_inverse_vector): Updated for
7987         rename of mpn_matrix22_mul1_inverse_vector.
7988         * mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer_n): Likewise.
7989         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Likewise.
7990         * mpn/generic/hgcd.c (hgcd_step): Likewise.
7992         * mpn/generic/matrix22_mul1_inverse_vector.c
7993         (mpn_matrix22_mul1_inverse_vector): New file, function moved and
7994         renamed...
7995         * mpn/generic/hgcd2.c (mpn_hgcd_mul_matrix1_inverse_vector):
7996         ...from here.
7998 2010-04-12  Torbjorn Granlund  <tege@gmplib.org>
8000         * tests/mpn/t-toom6h.c (SIZE_LOG): Define.
8001         * tests/mpn/t-toom8h.c (SIZE_LOG): Likewise.
8003 2010-04-10  Torbjorn Granlund  <tege@gmplib.org>
8005         * mpn/ia64/lorrshift.asm: Rewrite feed-in and wind-down code.
8007         * mpn/ia64/aorslsh1_n.asm: Adapt to new aorslsh1_n.
8008         * mpn/ia64/aorslsh1_n.asm: Likewise.
8010         * mpn/ia64/aors_n.asm: Complete rewrite.
8011         * mpn/ia64/aorslsh1_n.asm: Likewise.
8013         * mpn/ia64/add_n_sub_n.asm: Misc cleanups.  Add slotting comments.
8015         * mpn/ia64/lshiftc.asm: New file.
8017         * mpn/x86_64/pentium4/gmp-mparam.h: No longer disable rsh1add_n and
8018         rsh1sub_n; instead disable rsblsh1_n, addlsh2_n, rsblsh2_n.
8020         * mpn/x86/divrem_2.asm: Use "orb" instead of "or" to work around
8021         Solaris assembler bug.
8022         * mpn/x86_64/mpn/x86_64/divrem_2.asm: Likewise.
8024         * mpn/x86/aors_n.asm: Use operand-less shift-by-1 insn form.
8025         * mpn/x86/pentium/aors_n.asm: Likewise.
8026         * mpn/x86_64/invert_limb.asm: Likewise.
8028         * mpn/x86_64/pentium4/aors_n.asm: Let non-nc code fall into nc code.
8030         * mpn/x86_64/pentium4/rsh1aors_n.asm: New file.
8032 2010-03-25  Torbjorn Granlund  <tege@gmplib.org>
8034         * mpn/ia64/add_n_sub_n.asm: New file.
8036         * mpn/generic/toom33_mul.c: Fix mpn_add_n_sub_n usage.
8037         * mpn/generic/toom3_sqr.c: Likewise.
8038         * mpn/generic/toom63_mul.c: Likewise.
8040         * mpn/generic/add_n_sub_n.c: Renamed from addsub_n.c.
8042 2010-03-23  Torbjorn Granlund  <tege@gmplib.org>
8044         * mpn/x86_64/divrem_2.asm: Use mpn_invert_limb instead of div insn.
8046         * mpn/ia64/aorslshC_n.asm: New file, generalised from last iteration of
8047         aorslsh1_n.asm.
8048         * mpn/ia64/aorslsh1_n.asm: Use aorslshC_n.asm.
8049         * mpn/ia64/aorslsh1_n.asm: New file, use aorslshC_n.asm.
8051 2010-03-20  Torbjorn Granlund  <tege@gmplib.org>
8053         * mpn/powerpc64/mode64/invert_limb.asm: Rewrite to exploit cancellation
8054         in the Newton iteration.
8056 2010-03-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
8058         * mpn/generic/toom_interpolate_8pts.c: Use mpn_sublsh2_n.
8060 2010-03-20  Torbjorn Granlund  <tege@gmplib.org>
8062         * mpn/powerpc64/mode64/aorslshC_n.asm: New file, generalised from
8063         last iteration of aorslsh1_n.asm.
8064         * mpn/powerpc64/mode64/aorslsh1_n.asm: Use aorslshC_n.asm.
8065         * mpn/powerpc64/mode64/aorslsh1_n.asm: New file, use aorslshC_n.asm.
8067 2010-03-19  Torbjorn Granlund  <tege@gmplib.org>
8069         * mpn/x86_64/nano/dive_1.asm: New file.
8071         * mpn/x86_64/divrem_1.asm: Avoid shld since it is slow on several CPU
8072         types.  Unconditionally provide code for normalised and unnormalised
8073         divisors.  Cleanup labels.
8075         * mpn/x86_64/core2/divrem_1.asm: Remove special code for normalised
8076         divisors.  Cleanup labels.
8078         * mpn/generic/toom_interpolate_6pts.c: Call mpn_sublsh2_n and
8079         mpn_sublsh_n with correct args.
8081         * tests/devel/try.c: Use enum for TYPE_*.
8083         * tests/devel/try.c: Test mpn_sublsh2_n.
8084         * tests/refmpn.c (refmpn_sublsh2_n): New function.
8085         * tests/tests.h (refmpn_sublsh2_n): Declare.
8087         * mpn/powerpc64/mode64/aorslsh1_n.asm: New file, with faster
8088         mpn_addlsh1_n and mpn_sublsh1_n.
8089         * mpn/powerpc64/mode64/addlsh1_n.asm: Delete.
8090         * mpn/powerpc64/mode64/sublsh1_n.asm: Delete.
8092 2010-03-18  Torbjorn Granlund  <tege@gmplib.org>
8094         * configure.in (*-*-aix): Define gcc_32_cflags_maybe, ar_32_flags and
8095         nm_32_flags.
8097         * mpn/x86/pentium4/sse2/addlsh1_n.asm: Tune for slightly better speed.
8098         Misc cleanups.  Add cycle table.
8100         * mpn/x86_64/copyi.asm: Update cycle table.
8101         * mpn/x86_64/copyd.asm: Likewise.
8102         * mpn/x86_64/rsh1aors_n.asm: Likewise.
8103         * mpn/x86_64/dive_1.asm: Likewise.
8105         * mpn/x86/pentium4/sse2/add_n.asm: Misc cleanups.  Add cycle table.
8106         * mpn/x86/pentium4/sse2/sub_n.asm: Likewise.
8108 2010-03-16  Torbjorn Granlund  <tege@gmplib.org>
8110         * mpn/x86_64/divrem_1.asm: Use mpn_invert_limb instead of div insn.
8111         * mpn/x86_64/core2/divrem_1.asm: Likewise.
8113         * tune/speed.c (routine): Add FLAG_R_OPTIONAL for many binops.
8115 2010-03-15  Torbjorn Granlund  <tege@gmplib.org>
8117         * mpn/alpha/ev6/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite.
8119         * mpn/ia64/aors_n.asm: Insert explicitly typed nops to trigger intended
8120         bundling.
8121         * mpn/ia64/aorslsh1_n.asm: Likewise.
8122         * mpn/ia64/dive_1.asm: Likewise.
8124 2010-03-13  Torbjorn Granlund  <tege@gmplib.org>
8126         * mpn/x86/pentium4/sse2/submul_1.asm: Rewrite.
8128         * mpn/powerpc64/mode64/aorsmul_1.asm: New file, faster than old code
8129         for both mpn_addmul_1 and mpn_submul_1.
8130         * mpn/powerpc64/mode64/addmul_1.asm: Remove.
8131         * mpn/powerpc64/mode64/submul_1.asm: Remove.
8133 2010-03-11  Niels Möller  <nisse@lysator.liu.se>
8135         * mpn/generic/gcd_lehmer.c (gcd_2): Use sub_ddmmss.
8137         * mpn/generic/jacbase.c (mpn_jacobi_base): Reorganized the
8138         JACOBI_BASE_METHOD 4 slightly. Now requires that b > 1.
8140 2010-03-10  Torbjorn Granlund  <tege@gmplib.org>
8142         * mpn/x86_64/divrem_1.asm: Make fraction code take documented # of
8143         cycles.  Annotate code for more CPUs.  Misc cleanups.
8144         * mpn/x86_64/core2/divrem_1.asm: Annotate code for more CPUs.
8146         * mpn/alpha/ev6/mod_1_4.asm: New file.
8148         * mpn/ia64/mod_34lsub1.asm: New file.
8150         * doc/gmp.texi (Language Bindings): Update Python site, add Ruby.
8152 2010-03-10  Niels Möller  <nisse@lysator.liu.se>
8154         * tune/tuneup.c (tune_jacobi_base): Consider mpn_jacobi_base_4.
8155         * tune/speed.c (routine): Added mpn_jacobi_base_4.
8156         * tune/common.c (speed_mpn_jacobi_base_4): New function.
8157         * tune/speed.h (speed_mpn_jacobi_base_4): Declare it.
8158         * tune/Makefile.am (libspeed_la_SOURCES): Added jacbase4.c.
8159         * tune/jacbase4.c: New file.
8161         * mpn/generic/jacbase.c (mpn_jacobi_base): New function, for
8162         JACOBI_BASE_METHOD 4.
8164 2010-03-09  Niels Möller  <nisse@lysator.liu.se>
8166         * tests/mpz/t-jac.c (check_large_quotients): Also generate inputs
8167         with large quotients and a large gcd.
8169 2010-03-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
8171         * tests/mpz/t-bin.c (randomwalk): New test-generator function.
8173 2010-03-07  Torbjorn Granlund  <tege@gmplib.org>
8175         * tune/speed.c (routine): Force r argument for several mod_1 calls.
8177 2010-03-06  Torbjorn Granlund  <tege@gmplib.org>
8179         * mpn/x86_64/divrem_1.asm: Disable SPECIAL_CODE_FOR_NORMALIZED_DIVISOR.
8180         Misc clean up.
8182         * mpn/x86_64/mod_1_1.asm: New file.
8183         * mpn/x86_64/mod_1_2.asm: New file.
8184         * mpn/x86_64/mod_1_4.asm: Update cycle counts.
8186         * tests/tests.h (TESTS_REPS): Fix typo.
8188 2010-03-03  Torbjorn Granlund  <tege@gmplib.org>
8190         * mpn/x86_64/core2/divrem_1.asm: New file.
8192 2010-02-26  Niels Möller  <nisse@lysator.liu.se>
8194         * tune/speed.c (routine): Added udiv_qrnnd_preinv3.
8196         * tune/common.c (speed_udiv_qrnnd_preinv3): New function.
8197         * tune/speed.h: Added prototype for it.
8199 2010-02-26  Niels Möller  <nisse@lysator.liu.se>
8201         * tests/mpz/t-jac.c (check_large_quotients): New test. Currently
8202         disabled, since it's quite slow.
8203         (mpz_nextprime_step): New function.
8205 2010-02-26  Torbjorn Granlund  <tege@gmplib.org>
8207         * mpn/pa64/aors_n.asm: Fix typo in last change.
8209 2010-02-25  Niels Möller  <nisse@lysator.liu.se>
8211         * tests/mpz/t-jac.c (ref_jacobi): New reference implementation,
8212         using factorization and legendre symbols computed by powm.
8214         * tests/devel/try.c (param_init, call): Don't pass negative values
8215         for the second argument to mpz_jacobi and refmpz_jacobi.
8217         * tests/refmpz.c (refmpz_jacobi): Require that b is odd and positive.
8219         * tests/devel/try.c (param_init): Support mpz_legendre.
8220         (choice_array): Added mpz_kronecker (apparently forgotten) and
8221         mpz_legendre.
8222         (call): Added TYPE_MPZ_LEGENDRE.
8223         (try_one): Added support for DATA_SRC1_ODD_PRIME.
8225         * tests/refmpz.c (refmpz_legendre): Rewrote using powm.
8227 2010-02-25  Torbjorn Granlund  <tege@gmplib.org>
8229         * config.guess: Make "corei" default for unrecognised Intel P6 CPUs.
8231         * tests/mpz/t-perfpow.c (check_random): Use mp_limb_t type for limb
8232         variables.
8234         * tests/mpn/t-toom6h.c (COUNT): Define.
8235         * tests/mpn/t-toom8h.c (COUNT): Define.
8237         * tests/mpn/t-div.c: Cast a switch index to placate HP's cc.
8238         * tests/mpn/t-bdiv.c: Likewise.
8240         * mpn/pa64/aors_n.asm: Fix support of the 2.0n ABI.
8242 2010-02-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
8244         * tests/mpz/t-bin.c (data): Replace (2k,k), tested by twos ().
8245         * tests/mpf/t-inp_str.c (data): Test also "+" in the exponent.
8247 2010-02-23  Torbjorn Granlund  <tege@gmplib.org>
8249         * mpn/generic/mod_1_3.c: Cast a switch index to placate HP's cc.
8251         * mpn/generic/sqrtrem.c: Use CNST_LIMB.
8253 2010-02-20  Niels Möller  <nisse@lysator.liu.se>
8255         * tune/speed.h (mpn_gcd_accel): Deleted prototype.
8256         (mpn_hgcd_lehmer): New prototype.
8257         (MPN_HGCD_LEHMER_ITCH): New macro (previously in gmp-impl.h).
8259         * tune/Makefile.am (libspeed_la_SOURCES): Added hgcd_lehmer.c.
8260         * tune/hgcd_lehmer.c: New file.
8261         * tune/gcd_accel.c: Deleted obsolete file.
8263         * gmp-impl.h (MPN_HGCD_LEHMER_ITCH): Deleted macro.
8265         * mpn/generic/hgcd.c (mpn_hgcd_lehmer): Deleted function,
8266         (mpn_hgcd): Don't call mpn_hgcd_lehmer, instead use inlined loop
8267         around hgcd_step.
8268         (mpn_hgcd_itch): Substitute n for MPN_HGCD_LEHMER_ITCH (n).
8270 2010-02-19  Niels Möller  <nisse@lysator.liu.se>
8272         * Makefile.am (mpn/jacobitab.h): Added the rules needed to
8273         generate this file.
8275         * gen-jacobitab.c: New file.
8277 2010-02-19  Torbjorn Granlund  <tege@gmplib.org>
8279         * mpn/generic/powm.c: Honour SQR_BASECASE_THRESHOLD in innerloop
8280         expansions.
8282 2010-02-16  Niels Möller  <nisse@lysator.liu.se>
8284         * tune/time.c (cgt_works_p): Added rudimentary sanity check for
8285         clock_gettime working.
8287 2010-02-15  Niels Möller  <nisse@lysator.liu.se>
8289         * tune/time.c (speed_time_init): Make use of cycle counter
8290         configurable, via the speed_option_cycles_broken flag.
8291         * tune/common.c (speed_option_cycles_broken): New global variable.
8292         (speed_option_set): Recognize option "cycles-broken".
8294         * tune/time.c (cycles_works_p): Deleted hack to disable cycle
8295         counter on linux. Needs to be replaced by something more
8296         selective.
8298 2010-02-11  Niels Möller  <nisse@lysator.liu.se>
8300         * tune/time.c (speed_time_init): Fix speed_time_string when using
8301         clock_gettime.
8302         (cycles_works_p): On linux, don't use the cycle counter.
8304         * tune/Makefile.am: Add $(TUNE_LIBS) when linking programs.
8306         * configure.in: Check if -lrt is needed for clock_gettime, and if
8307         so, add that flag to TUNE_LIBS.
8309 2010-02-07  Torbjorn Granlund  <tege@gmplib.org>
8311         * tune/tuneup.c (tune_redc): Set min_size and min_is_always when
8312         measuring REDC_1_TO_REDC_2_THRESHOLD.
8313         (tune_mod_1): Set min_size for PREINV_MOD_1_TO_MOD_1_THRESHOLD.
8315         * mpn/x86_64/aorrlsh_n.asm (cnt): Fix a typo.
8316         * mpn/x86_64/lshsub_n.asm: Likewise.
8318 2010-02-05  Torbjorn Granlund  <tege@gmplib.org>
8320         * Version 5.0.1 released.
8322         * mpn/generic/powm.c: Use rp target area for power table computation in
8323         order to use less scratch.
8325         * mpn/generic/binvert.c (mpn_binvert_itch): Enable more economical
8326         mpn_mulmod_bnm1_itch call.
8328         * mpn/generic/mu_div_qr.c: Remove always true #if.
8329         * mpn/generic/mu_divappr_q.c: Likewise.
8330         * mpn/generic/mu_bdiv_q.c: Likewise.
8331         * mpn/generic/mu_bdiv_qr.c: Likewise.
8333 2010-02-01  Torbjorn Granlund  <tege@gmplib.org>
8335         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*):
8336         Bump version info.
8338         * mpn/powerpc64/mode64/gmp-mparam.h: Remove {MUL,SQR}_FFT_TABLE2.
8339         * mpn/x86/p6/gmp-mparam.h: Likewise.
8340         * mpn/x86/p6/mmx/gmp-mparam.h: Likewise.
8341         * mpn/generic/mul_fft.c: Don't depend on FFT_TABLE2, it was broken.
8343 2010-01-29  Torbjorn Granlund  <tege@gmplib.org>
8345         * mpn/generic/mul_fft.c (mpn_mul_fft_internal): Remove arguments n, m,
8346         k and rec; add argument sqr.  Don't call mpn_mul_fft_decompose here,
8347         instead do that in all callers.
8348         (mpn_mul_fft): Trim allocation when squaring, and use TMP_ALLOC*, not
8349         explicit alloc/free.
8350         (mpn_fft_div_2exp_modF): Avoid a scalar division.
8351         (mpn_fft_mul_modF_K): Replace some multiplies by K with shifting by k.
8352         (mpn_fft_mul_2exp_modF): Make function more symmetrical.
8354 2010-01-27  Torbjorn Granlund  <tege@gmplib.org>
8356         * mpn/generic/mu_div_q.c (mpn_mu_div_q_itch): Rewrite.
8357         * mpn/generic/mu_div_qr.c (mpn_mu_div_qr_itch): Re-enable
8358         better mulmod itch estimate.
8359         * mpn/generic/mu_divappr_q.c (mpn_mu_divappr_q_itch): Likewise.
8360         * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Likewise.
8361         * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise.
8363 2010-01-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
8365         * mpn/generic/mu_div_qr.c (mpn_mu_div_qr_itch): Disabled guessed
8366         estimate, enabled a conservative one.
8367         * mpn/generic/mu_divappr_q.c (mpn_mu_divappr_q_itch): Likewise.
8368         * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Likewise.
8369         * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise.
8371 2010-01-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
8373         * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Partial rewrite to
8374         reduce memory usage.
8375         * mpn/generic/sqrmod_bnm1.c (mpn_sqrmod_bnm1): Likewise.
8376         (mpn_sqrmod_bnm1_next_size): New function.
8378         * gmp-impl.h (mpn_mulmod_bnm1_itch): Accepts 3 parameters now.
8379         (mpn_sqrmod_bnm1_itch): New inline function.
8380         (mpn_sqrmod_bnm1_next_size): Declaration and mangling.
8381         * mpn/generic/nussbaumer_mul.c: Use the new functions.
8383         * mpn/generic/invertappr.c (mpn_ni_invertappr): Use new syntax for
8384         mpn_mulmod_bnm1_itch.
8385         * mpn/generic/mu_divappr_q.c (mpn_mu_divappr_q_itch): Likewise.
8386         * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Likewise.
8387         * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise.
8388         * mpn/generic/mu_div_qr.c (mpn_mu_div_qr_itch): Likewise.
8389         * mpn/generic/binvert.c (mpn_binvert_itch): Likewise.
8390         * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL): Likewise.
8391         (SPEED_ROUTINE_MPN_MULMOD_BNM1_ROUNDED): Likewise.
8393         * tests/mpn/t-sqrmod_bnm1.c, tests/mpn/t-mulmod_bnm1.c: Test
8394         reduced memory usage.
8396 2010-01-25  Torbjorn Granlund  <tege@gmplib.org>
8398         * tune/tuneup.c (INSERT_FFTTAB): New macro, like old insertion code but
8399         also inserting a sentinel.
8400         (fftmes): Use INSERT_FFTTAB for inserting new measurements.
8401         Limit k range to best_k - 4 ... best_k + 4.
8403 2010-01-23  Torbjorn Granlund  <tege@gmplib.org>
8405         * gmp-h.in (__GNU_MP_VERSION_PATCHLEVEL): Bump.
8406         (__GMP_MP_RELEASE): New macro.
8408         * mpf/div.c: Rewrite to use mpn_div_q.
8410 2010-01-21  Torbjorn Granlund  <tege@gmplib.org>
8412         * Add FFT_TABLE3 tables for a basic set of machines.
8414         * configure.in: Use -mtune=nocona for 64-bit pentium4.
8416         * config.guess: Recognise many more Intel processors.
8418         * tune/common.c: Whitespace cleanup.
8419         (speed_mpn_matrix22_mul): Rewrite.
8421 2010-01-21  Niels Möller  <nisse@lysator.liu.se>
8423         * mpn/generic/nussbaumer_mul.c (mpn_nussbaumer_mul): Take
8424         advantage of new mpn_mulmod_bnm1 interface, to reduce allocation.
8426         * tests/mpn/t-mulmod_bnm1.c (ref_mulmod_bnm1, main): Adapted to
8427         mpn_mulmod_bnm1 interface change.
8429         * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Interface change,
8430         in case an + bn < rn, only write an + bn output limbs. New input
8431         requirement, an + bn > rn/2.
8432         * mpn/generic/sqrmod_bnm1.c (mpn_sqrmod_bnm1): Corresponding
8433         changes.
8435 2010-01-19  Torbjorn Granlund  <tege@gmplib.org>
8437         * tune/tuneup.c (fftmes): Round up initial n according to initial k.
8438         Limit k to 24 in loop.  Remove an obsolete always-true condition.
8439         Remove a redundant trace printout.
8441 2010-01-18  Torbjorn Granlund  <tege@gmplib.org>
8443         * tune/tuneup.c (fftmes): New function
8444         (fft): Rewrite.
8445         (mpn_mul_fft_lcm): New function, copied from mpn/generic/mul_fft.c.
8446         (fftfill): New function, code taken from mul_fft.c (mpn_mul_fft).
8447         (cached_measure): New function.
8449         * gmp-impl.h (struct fft_table_nk): Moved from mul_fft.c.
8450         (MUL_FFT_TABLE3, SQR_FFT_TABLE3): Provide dummy versions for tuneup
8451         builds.
8452         (FFT_TABLE3_SIZE): Increase value for tuneup builds.
8454         * mpn/generic/mul_fft.c: Handle a new FFT threshold table type ("3").
8455         Misc cleanups to old table type code.
8457 2010-01-16  Torbjorn Granlund  <tege@gmplib.org>
8459         * mpn/x86_64/darwin.m4: Fix typo in last change.
8461 2010-01-15  Torbjorn Granlund  <tege@gmplib.org>
8463         * gmp-h.in (__GMP_EXTERN_INLINE): Remove "extern" for newer Sun C.
8465         * gmp-impl.h (GMP_LIMB_BYTES): New define.
8467         * mpn/x86_64/darwin.m4 (LEA): New define.
8469         * mpn/x86/invert_limb.asm (approx_tab): Use DEF_OBJECT.
8470         Rename and globalise it to work around Mac OS bug.
8472         With Philip McLaughlin:
8473         * mpn/x86_64/gcd_1.asm (ctz_table): Don't use local prefix, but
8474         use DEF_OBJECT...END_OBJECT.
8475         Keep stack pointer at ABI mandated alignment over call.
8477 2010-01-12  Torbjorn Granlund  <tege@gmplib.org>
8479         * tune/speed.c (routine): Remove obsolete mpn_dc_tdiv_qr and
8480         mpn_dc_div_qr_n.
8481         * tune/common.c (speed_mpn_dc_tdiv_qr, speed_mpn_dcpi1_div_qr_n):
8482         Remove now unused functions.
8483         * tune/speed.h (SPEED_ROUTINE_MPN_DC_DIVREM_N,
8484         SPEED_ROUTINE_MPN_DC_DIVREM_SB, SPEED_ROUTINE_MPN_DC_TDIV_QR): Remove
8485         now unused macros.
8487         * mpn/x86_64/fat/fat_entry.asm (mpn_cpuid_available): Remove function.
8489         * ltmain.sh: Upgrade from 1.5.24 to 2.2.6b.
8490         * ylwrap: New file.
8491         * .bootstrap: Remove explicit versions.
8493         * doc/gmp.texi (Block-wise Barrett Division): New node.
8495         * mpn/generic/powm.c: Change some #if to plain 'if' to avoid fat build
8496         problems.
8498 2010-01-11  Torbjorn Granlund  <tege@gmplib.org>
8500         * tune/speed.h (SPEED_ROUTINE_MPN_PI1_DIV): Accept arguments for size
8501         restrictions.
8502         * tune/common.c (speed_mpn_sbpi1_div_qr, speed_mpn_dcpi1_div_qr,
8503         (speed_mpn_sbpi1_divappr_q, speed_mpn_dcpi1_divappr_q): Pass size
8504         limits for SPEED_ROUTINE_MPN_PI1_DIV.
8506         * tune/speed.c (routine): Allow .r argument for mpn_sbpi1_divappr_q and
8507         mpn_dcpi1_divappr_q.
8509 2010-01-08  Torbjorn Granlund  <tege@gmplib.org>
8511         * Version 5.0.0 released.
8513         * mpn/generic/div_q.c: Handle mpn_*_divappr_q returning high limb
8514         everywhere.
8516 2010-01-07  Torbjorn Granlund  <tege@gmplib.org>
8518         * Update MUL_FFT_TABLE2 and SQR_FFT_TABLE2 for many machines.
8520         * mpn/generic/mu_div_q.c: Account for divisor truncation error as well
8521         as mpn_mu_divappr_q's error.
8523         * mpn/generic/mu_div_q.c: Handle mpn_preinv_mu_divappr_q returning a
8524         high limb.
8526         * tests/mpn/t-bdiv.c: Move a random call for debugability.
8527         * tests/mpn/t-div.c: Likewise.
8529         * mpn/generic/mu_divappr_q.c: Rewrite quotient round-up code.
8531         * mpn/generic/mu_div_qr.c: Handle carry-out from a carry propagation
8532         subtract.
8533         * mpn/generic/mu_divappr_q.c: Likewise.
8535         * mpn/generic/mu_divappr_q.c
8536         (mpn_preinv_mu_divappr_q, mpn_mu_divappr_q): Declare dividend constant.
8537         * gmp-impl.h: Likewise.
8539         * perfpow.c (mpn_perfect_power_p): Call mpn_divexact instead of
8540         mpn_bdiv_q (with too little scratch space!).
8542         From Niels Möller:
8543         * tests/mpn/t-div.c (check_one): Get rid of the poorly managed variable
8544         tn.
8546         * mpn/minithres/gmp-mparam.h: Add all lately defined thresholds.
8548         * mpn/generic/div_q.c: Use SB division for small quotients as well as
8549         small divisors.  Fix typo in itch call.
8551 2010-01-06  Niels Möller  <nisse@lysator.liu.se>
8553         * tests/mpn/t-div.c (check_one): Checking based on multiplication,
8554         refmpn_mul, rather than refmpn_tdiv_qr.
8556 2010-01-06 Marco Bodrato <bodrato@mail.dm.unipi.it>
8558         * mpn/generic/toom8h_mul.c: Avoid overflows of mp_size_t.
8560 2010-01-06  Torbjorn Granlund  <tege@gmplib.org>
8562         * gmp-h.in (__GNU_MP__): Bump.
8563         (__GNU_MP_VERSION,__GNU_MP_VERSION_MINOR,__GNU_MP_VERSION_PATCHLEVEL):
8564         Bump version info.
8565         * mp-h.in (__GNU_MP__): Bump.
8566         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*):
8567         Bump version info.
8569         * doc/gmp.texi: Rewrite mpn_gcdext text.  Remove some out-of-date
8570         text in Algorithms chapter.
8572         * mpn/generic/div_q.c: Properly handle np=scratch.  Fix critical typo
8573         in final adjustment code.  Misc cleanups.
8575         * mpn/generic/rootrem.c: Use mpn_div_q.
8576         * mpz/tdiv_q.c: Likewise.
8578         * tests/mpn/t-div.c: Test mpn_div_q.
8579         (SIZE_LOG): Up to 17.
8581         * mpn/generic/div_q.c: New file.
8582         * configure.in (gmp_mpn_functions): Add div_q.
8584         * mpn/generic/mu_div_q.c: Actually declare dividend constant.
8586 2010-01-04  Torbjorn Granlund  <tege@gmplib.org>
8588         * tune/tuneup.c (fft): Separate tuning of modf and full products.
8589         (struct fft_param_t): New field, mul_modf_function.
8590         (tune_fft_sqr): Fix typo.
8591         (tune_fft_mul, tune_fft_sqr): Initialise mul_modf_function field.
8592         * tune/common.c (speed_mpn_fft_mul, speed_mpn_fft_sqr): New functions.
8594         * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_ROUNDED): Clean up.
8596         * mpn/generic/mul.c: Simplify rational expression.
8598         * gmp-impl.h: Cleanup threshold variables; remove obsolete ones and
8599         make all possibly needed definitions for existing ones.
8600         * tune/tuneup.c (tune_mul): Write fractions-compensated values to
8601         threshold variables.
8603 2010-01-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
8605         * tune/common.c, tune/speed.c, tune/speed.h: Support measuring
8606         mpn_toom43_mul.
8608         * mpn/generic/toom_interpolate_6pts.c: Small reorganisation.
8610 2010-01-03  Torbjorn Granlund  <tege@gmplib.org>
8612         * gmp-impl.h (MUL_TO_MULMOD_BNM1_FOR_2NXN_THRESHOLD): Default to
8613         INV_MULMOD_BNM1_THRESHOLD/2 instead.
8615         * gmp-impl.h (INV_APPR_THRESHOLD, INV_MULMOD_BNM1_THRESHOLD): Default
8616         here...
8617         * mpn/generic/invert.c, mpn/generic/invertappr.c: ...not here.
8619         * tests/mpn/t-div.c: Rewrite operand generation code.
8621 2010-01-02  Torbjorn Granlund  <tege@gmplib.org>
8623         * gmp-impl.h (MUL_TO_MULMOD_BNM1_FOR_2NXN_THRESHOLD): Default to
8624         INV_MULMOD_BNM1_THRESHOLD.
8626 2010-01-02  Marco Bodrato <bodrato@mail.dm.unipi.it>
8628         * mpn/generic/dcpi1_div_q.c: Handle divappr approximation problem more
8629         efficiently.
8630         * mpn/generic/mu_div_q.c: Likewise.
8632         * mpn/generic/invert.c: Remove duplicated code.
8634 2010-01-01  Torbjorn Granlund  <tege@gmplib.org>
8636         * gmp-impl.h (MUL_TO_MULMOD_BNM1_FOR_2NXN_THRESHOLD): Default to 0.
8638         * mpn/generic/mu_div_qr.c: Rewrite to use mpn_mulmod_bnm1.  Clean up
8639         scratch usage.  Improve itch functions.
8640         * mpn/generic/mu_divappr_q.c: Likewise.
8641         * mpn/generic/mu_bdiv_qr.c: Likewise.
8642         * mpn/generic/mu_div_q.c: Likewise.
8644         * mpn/generic/dcpi1_bdiv_qr.c: Add parameter ASSERTs.
8645         * mpn/generic/dcpi1_bdiv_q.c: Likewise.
8647         * tests/mpn/t-bdiv.c: Replace with unit testing code, based on t-div.c.
8648         Increase COUNT to 500.
8650         * tests/mpn/t-div.c: Avoid generating too small test operands.
8651         Move SB suppression limit downwards.  Increase COUNT to 200.
8653 2009-12-31  Torbjorn Granlund  <tege@gmplib.org>
8655         * mpn/generic/tdiv_qr.c: Handle numerator/remainder overlap in MU case.
8657         * tests/tests.h (TESTS_REPS): New macro.
8658         * tests/mpz/dive.c: Use larger operands, decrease default reps, use
8659         TESTS_REPS.
8660         * tests/mpz/convert.c: Likewise.
8661         * tests/mpz/t-sqrtrem.c: Likewise.
8662         * tests/mpz/reuse: Likewise.
8663         * tests/mpz/t-root.c: Likewise.
8664         * tests/mpz/t-tdiv.c: Likewise.
8665         * tests/mpz/t-gcd.c: Likewise.
8666         * tests/mpz/t-powm.c: Likewise.
8668 2009-12-31  Marco Bodrato <bodrato@mail.dm.unipi.it>
8670         * mpn/generic/toom8_sqr.c (SQR_TOOM8_MAX): Avoid overflow.
8671         * mpn/generic/toom6_sqr.c (SQR_TOOM6_MAX): Likewise.
8673         * mpn/generic/mulmod_bnm1.c: Don't mention MISUSE any more,
8674         simply consider UNLIKELY any unexpected size.
8676 2009-12-31  Torbjorn Granlund  <tege@gmplib.org>
8678         * tune/tuneup.c (speed_mpn_sbordcpi1_div_qr): New function.
8679         (tune_mu_div): Use it.
8681 2009-12-30  Torbjorn Granlund  <tege@gmplib.org>
8683         * tune/tuneup.c (tune_mu_bdiv, tune_dc_bdiv, tune_mu_div)
8684         (tune_dc_div): Clear global s.r to make speed functions do 2n/n.
8686         * tune/speed.c (routine): New entries for mpn_mu_div_qr and
8687         mpn_mupi_div_qr.  Allow .r parameter for mpn_sbpi1_div_qr,
8688         mpn_dcpi1_div_qr.
8689         * tune/speed.h (SPEED_ROUTINE_MPN_PI1_DIV, SPEED_ROUTINE_MPN_MU_DIV_QR)
8690         (SPEED_ROUTINE_MPN_MUPI_DIV_QR): Handle .r parameter.
8692         * tests/mpz/t-tdiv.c: Increase operands size again.
8694         * mpn/generic/tdiv_qr.c: Attempt to choose between DC and MU cleverer.
8696         * mpn/generic/tdiv_qr.c: Don't overwrite rp with unnecessary temporary
8697         alloc.
8699 2009-12-29  Torbjorn Granlund  <tege@gmplib.org>
8701         * tune/tuneup.c (tune_mu_div): Tune MUPI_DIV_QR_THRESHOLD.
8702         * tune/speed.h (struct speed_params): Allow 3 source operands.
8703         (SPEED_ROUTINE_MPN_MUPI_DIV_QR): New macro.
8704         * tune/common.c (speed_mpn_mupi_div_qr): New function.
8706         * mpn/generic/tdiv_qr.c: Call mpn_mu_div_qr.
8708         * tests/mpz/t-tdiv.c: Use larger test operands.
8710         * mpn/generic/mu_div_qr.c (mpn_mu_div_qr2): Remove code for dn==1.
8712         * mpz/mul.c: Call mpn_sqr directly.  Use PTR,SIZ,ALLOC.
8714         * tune/tuneup.c (tune_mu_div): Set min_size to 6, DC functions require
8715         this.
8717         * tests/mpn/t-div.c: Call mu_div functions with operands that generate
8718         a high quotient limb.
8720         * mpn/generic/mu_div_qr.c: Rewrite to return a high quotient limb,
8721         to let dividend argument be constant, and as a general cleanup.
8722         * mpn/generic/mu_divappr_q.c: Likewise.
8723         * mpn/generic/mu_div_q.c: Likewise.
8724         * gmp-impl.h: Update declarations of changed functions.
8726         * mpn/generic/invertappr.c (mpn_invertappr): Allocate scratch space
8727         when caller passed NULL.
8729 2009-12-28  Torbjorn Granlund  <tege@gmplib.org>
8731         * mpn/generic/toom_couple_handling.c: Prefix name with mpn_.
8732         * gmp-impl.h: Likewise.
8733         * mpn/generic/toom63_mul.c: Likewise.
8734         * mpn/generic/toom6_sqr.c: Likewise.
8735         * mpn/generic/toom6h_mul.c: Likewise.
8736         * mpn/generic/toom8_sqr.c: Likewise.
8737         * mpn/generic/toom8h_mul.c: Likewise.
8739         * configure.in (gmp_mpn_functions_optional) Move "com" from here...
8740         (gmp_mpn_functions): ...to here.
8741         * mpn/generic/com.c: New file.
8742         * (mpn_com): New name for mpn_com_n.  Make public.
8743         * (mpn_neg): Analogous changes.
8745         * tune/tuneup.c (tune_mu_div, tune_mu_bdiv): Set step_factor.
8747         * tune/common.c, tune/speed.c, tune/speed.h: Support measuring
8748         mpn_lshiftc.
8750         * tests/devel/try.c: Test mpn_lshiftc.
8751         * tests/refmpn.c (refmpn_com): New function.
8752         (refmpn_lshiftc): Likewise.
8754         * configure.in (gmp_mpn_functions_optional) Move lshiftc from here...
8755         (gmp_mpn_functions): ...to here.
8756         * mpn/generic/lshiftc.c: New file.
8757         * mpn/x86_64/lshiftc.asm: New file.
8758         * mpn/x86_64/core2/lshiftc.asm: New file.
8759         * mpn/generic/mul_fft.c (mpn_lshiftc): Remove.
8761         * mpn/x86_64/core2/lshift.asm: Tweak for better Core iN performance.
8762         * mpn/x86_64/core2/rshift.asm: Likewise.
8764 2009-12-27  Marco Bodrato <bodrato@mail.dm.unipi.it>
8766         * mpn/generic/mul.c: Use toom6h and toom8h for almost balanced.
8768         * mpn/generic/mullo_n.c (mpn_dc_mullo_n): New ratio, to be used in
8769         Toom-8 range.
8771 2009-12-27  Torbjorn Granlund  <tege@gmplib.org>
8773         * (mpn_sqr): New name for mpn_sqr_n.  Many files affected.
8775         * tune/tuneup.c (tune_mullo): Up step_factor for MULLO_MUL_N_THRESHOLD.
8776         (tune_invertappr, tune_invert, tune_binvert): Let max_size default.
8778         * tune/tuneup.c (tune_mu_div, tune_mu_bdiv) New functions.
8779         * tune/speed.h (SPEED_ROUTINE_MPN_MU_DIV_Q): New macro.
8780         (SPEED_ROUTINE_MPN_MU_DIV_QR): Likewise.
8781         (SPEED_ROUTINE_MPN_MU_BDIV_Q): Likewise.
8782         (SPEED_ROUTINE_MPN_MU_BDIV_QR): Likewise.
8783         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add bdiv_q.c and bdiv_qr.c.
8784         * tune/common.c (speed_mpn_mu_div_qr): New function.
8785         (speed_mpn_mu_divappr_q): Likewise.
8786         (speed_mpn_mu_div_q): Likewise.
8787         (speed_mpn_mu_bdiv_q): Likewise.
8788         (speed_mpn_mu_bdiv_qr): Likewise.
8790         * mpn/*/gmp-mparam.h: Fix incorrect MOD_1U_TO_MOD_1_1_THRESHOLD 0
8791         values.
8793         * gmp-impl.h (MODEXACT_1_ODD_THRESHOLD): Remove.
8794         (BMOD_1_TO_MOD_1_THRESHOLD): New parameter, with the reverse meaning of
8795         MODEXACT_1_ODD_THRESHOLD.
8796         (MPN_MOD_OR_MODEXACT_1_ODD): Use BMOD_1_TO_MOD_1_THRESHOLD.
8797         * mpn/generic/divis.c, mpz/{cong.c,cong_ui.c,divis_ui.c}: Likewise.
8798         * tune/tuneup.c (tune_modexact_1_odd): Tune BMOD_1_TO_MOD_1_THRESHOLD;
8799         Do not assume native mpn_modexact_1_odd is faster than mpn_mod_1.
8800         (tuned_speed_mpn_mod_1): Remove variable.
8801         (tune_mod_1): Fix thinkos.  Suppress printing of "always" etc.
8802         (all): Measure for divrem_1, mod_1, divexact_1, etc first, since Toom
8803         depends on some of them.
8805         * mpn/generic/toom22_mul.c (TOOM22_MUL_REC): New name for
8806         TOOM22_MUL_MN_REC.
8808 2009-12-26  Niels Möller  <nisse@lysator.liu.se>
8810         * tests/mpn/t-toom32.c (MIN_AN, MIN_BN, MAX_BN): Relax
8811         requirements a bit.
8813         * mpn/generic/toom32_mul.c (mpn_toom32_mul): Relax requirement on
8814         input sizes, to support s+t>=n (used to be s+t>=n+2). Keep high
8815         limbs of the evaluated values in scalar variables.
8817         * mpn/generic/sbpi1_divappr_q.c (mpn_sbpi1_divappr_q): Remove
8818         unused variables.
8820         * mpn/generic/toom32_mul.c (mpn_toom32_mul): Fixed left-over use
8821         of mpn_addsub_n which should be mpn_add_n_sub_n.
8823 2009-12-26  Marco Bodrato <bodrato@mail.dm.unipi.it>
8825         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add new toom files (spotted by Torbjorn).
8827         * gmp-impl.h (mpn_toom6_sqr_itch): Rename to mpn_toom6_mul_n_itch and redefine.
8828         (mpn_toom8_sqr_itch): Rename to mpn_toom8_mul_n_itch and redefine.
8829         * mpn/generic/mul_n.c: Use renamed _itch macros.
8831 2009-12-25  Niels Möller  <nisse@lysator.liu.se>
8833         * tests/mpn/t-toom32.c (MIN_AN, MIN_BN, MAX_BN): Tightened requirements.
8834         * gmp-impl.h (mpn_toom32_mul_itch): Updated. Less scratch needed
8835         by toom32 itself, and also the pointwise multiplications are
8836         currently mpn_mul_n with no supplied scratch.
8837         * mpn/generic/toom32_mul.c (mpn_toom32_mul): Reorganized
8838         interpolation to use less scratch space. No longer supports the
8839         most extreme size ratios.
8841 2009-12-25  Torbjorn Granlund  <tege@gmplib.org>
8843         * tune/tuneup.c (tune_preinv_mod_1): Purge.
8844         (tune_mod_1): Use speed_mpn_mod_1_tune for
8845         PREINV_MOD_1_TO_MOD_1_THRESHOLD
8847         * mpn/generic/dcpi1_divappr_q.c: Handle 2n/n properly.  Don't use full
8848         precision in mpn_sbpi1_divappr_q call.  Misc cleanup.
8850         * tune/tuneup.c (tune_mod_1): Add a check_size for
8851         PREINV_MOD_1_TO_MOD_1_THRESHOLD.
8853 2009-12-24  Torbjorn Granlund  <tege@gmplib.org>
8855         * tune/mod_1_div.c (MOD_1N_TO_MOD_1_1_THRESHOLD,
8856         (MOD_1U_TO_MOD_1_1_THRESHOLD): Set.
8857         * tune/mod_1_inv.c (MOD_1N_TO_MOD_1_1_THRESHOLD,
8858         (MOD_1U_TO_MOD_1_1_THRESHOLD): Set.
8860         * gmp-impl.h (USE_PREINV_MOD_1): Remove.
8861         (MPN_MOD_OR_PREINV_MOD_1): Define to choose functions dynamically in
8862         terms of PREINV_MOD_1_TO_MOD_1_THRESHOLD (used to choose statically
8863         using USE_PREINV_MOD_1).
8864         * mpn/generic/perfsqr.c (PERFSQR_MOD_PP): Corresponding updates.
8866         * tune/tuneup.c (tune_mod_1): Rewrite.
8867         * gmp-impl.h (MOD_1N_TO_MOD_1_1_THRESHOLD): New.
8868         (MOD_1U_TO_MOD_1_1_THRESHOLD): New name for MOD_1_1_THRESHOLD.
8869         (MOD_1_1_TO_MOD_1_2_THRESHOLD): Mew name for MOD_1_2_THRESHOLD.
8870         (MOD_1_2_TO_MOD_1_4_THRESHOLD): New name for MOD_1_4_THRESHOLD.
8871         * mpn/generic/mod_1.c: Corresponding updates.
8873 2009-12-24  Marco Bodrato <bodrato@mail.dm.unipi.it>
8875         * mpn/generic/mul_n.c: Use also toom6h and toom8h.
8876         * mpn/generic/sqr_n.c: Use also toom6 and toom8.
8877         * gmp-impl.h: Initial support for tuning of Toom-6half and Toom-8half.
8878         * tune/tuneup.c: Tune Toom-6half and Toom-8half thresholds.
8880 2009-12-24  Torbjorn Granlund  <tege@gmplib.org>
8882         * mpn/generic/mod_1_4.c: Get ASSERT right.
8883         * mpn/generic/mod_1_3.c: Likewise.
8884         * mpn/generic/mod_1_2.c: Likewise.
8886         * mpn/generic/powm_sec.c: Use SQR_TOOM2_THRESHOLD as limit for a native
8887         mpn_sqr_basecase, not TUNE_SQR_TOOM2_MAX.
8889 2009-12-23  Marco Bodrato <bodrato@mail.dm.unipi.it>
8891         * tune/common.c, tune/speed.c, tune/speed.h: Support for measuring
8892         mpn_toom8h_mul and mpn_toom8_sqr speed.
8894         * mpn/generic/toom_eval_pm2exp.c: Fix ASSERTs.
8896         * mpn/generic/toom8h_mul.c: New file.
8897         * mpn/generic/toom8_sqr.c: New file.
8898         * mpn/generic/toom_interpolate_16pts.c: New file.
8899         * gmp-impl.h: Provide corresponding declarations.
8900         * configure.in (gmp_mpn_functions): List toom_interpolate_16pts,
8901         toom8h_mul, and toom8h_sqr.
8902         * tests/mpn/t-toom8h.c: New test program.
8904         * mpn/generic/toom6_sqr.c: New file, was part of toom6h_mul.
8905         * mpn/generic/toom6h_mul.c: Removed _sqr.
8907         * mpn/generic/mulmod_bnm1.c: Nailify CRT.
8908         * mpn/generic/sqrmod_bnm1.c: Likewise.
8910         * mpn/generic/mullo_n.c: Split dc_mullo_n function;
8911         ALLOC memory at once.
8913         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Update.
8915         * mpn/generic/toom6h_mul.c: Add prefix to toom_interpolate_12pts.
8916         * mpn/generic/toom_interpolate_12pts.c: Likewise.
8918         * mpn/generic/invertappr.c (mpn_bc_invertappr): Use mpn_divrem_2.
8919         * mpn/generic/invert.c: Faster basecase, use mpn_sbpi1_div_q.
8921         * mpn/generic/toom_eval_pm2exp.c: Assert support for degree 3.
8922         * mpn/generic/toom6h_mul.c: Avoid obsolete _itch function.
8924 2009-12-23  Torbjorn Granlund  <tege@gmplib.org>
8926         * tune/common.c, tune/speed.c, tune/speed.h: Support for measuring
8927         mpn_mod_1_1p, mpn_mod_1s_2p, mpn_mod_1s_3p, mpn_mod_1s_4p.
8929         * tests/mpz/t-powm.c: Test mpz_powm_sec.
8931         * mpz/powm_sec.c: New file.
8932         * gmp-h.in: Declare it.
8933         * Makefile.am, mpz/Makefile.am: Compile it.
8934         * doc/gmp.texi: Document it.
8936         * mpn/generic/powm_sec.c (mpn_powm_sec_itch): New function.
8937         (mpn_powm_sec): Use passed scratch, no local allocation.
8938         Allow exp argument = 1.
8939         (win_size): Start loop from 1.
8941         * mpn/generic/powm.c (win_size): Start loop from 1.
8943 2009-12-22  Torbjorn Granlund  <tege@gmplib.org>
8945         * tests/mpn/t-div.c: New file.
8946         * tests/mpn/Makefile.am: Compile it.
8948         * mpn/generic/mu_divappr_q.c: Handle quotient overflow.
8950         * mpn/generic/mu_div_q.c (mpn_mu_div_q_itch): New function.
8952 2009-12-22  Niels Möller  <nisse@lysator.liu.se>
8954         * mpn/generic/sbpi1_div_q.c: Use udiv_qr_3by2.  Intended to change
8955         nothing after preprocessing.
8957         * mpn/generic/sbpi1_divappr_q.c: For the last call to udiv_qr_3by2,
8958         avoid using memory locations as output parameters, and revert to
8959         explicitly copying n1 and n0 to memory.
8961         * gmp-impl.h (udiv_qr_3by2): Tweaked to expand to precisely the
8962         same code as was used before the introduction of this macro.
8963         Eliminated some local variables, instead do multiple updates to
8964         the output parameters.
8966 2009-12-22  Torbjorn Granlund  <tege@gmplib.org>
8968         * tests/mpn/t-toom6h.c (MIN_AN): Set to MUL_TOOM6H_THRESHOLD to avoid
8969         invalid recursive sizes.
8971         * tests/mpn/t-bdiv.c: Get itch function calls right.
8973         * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Rewrite.
8974         * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Simplify.
8976         * mpn/generic/bdiv_qr.c (mpn_bdiv_qr): Simplify, don't allocate.
8977         (mpn_bdiv_qr_itch): Conditionalise on MU_BDIV_QR_THRESHOLD.
8979 2009-12-18  Niels Möller  <nisse@lysator.liu.se>
8981         * tests/mpn/t-bdiv.c: Add red-zones.
8983 2009-12-21  Torbjorn Granlund  <tege@gmplib.org>
8985         * mpn/generic/sbpi1_div_q.c: Fix fixup code to work for qn = 0.
8987         * mpn/generic/dcpi1_divappr_q.c: Handle qn = 1 and qn = 2 for initial
8988         quotient block (code block copied from dcpi1_div_qr.c).
8990         * mpn/generic/dcpi1_div_qr.c: Rewrite singular case giving q limb of
8991         GMP_NUMB_MAX.  Remove an impossible qn = 0 case.
8993         * mpn/generic/dcpi1_bdiv_q.c: Remove a spurious mpn_sub_1.
8995         * mpn/generic/mul.c: Put back call to mpn_mul_n.
8997         * tune/tuneup.c (all): Call tune_mulmod_bnm1 before tuning fft due to
8998         dependency on mulmod_bnm1 from both mul_fft_mul and from mullo_n.
9000         * mpn/generic/dcpi1_divappr_q.c: ASSERT that dn >= 6 and nn > dn.
9001         * mpn/generic/dcpi1_div_q.c: ASSERT that dn >= 6 and nn-dn >= 3.
9002         * mpn/generic/dcpi1_div_qr.c: ASSERT that dn >= 6 and nn-dn >= 3.
9004         * mpn/generic/bdiv_q_1.c (mpn_pi1_bdiv_q_1): Renamed from
9005         mpn_bdiv_q_1_pi1.
9006         * All references changed.
9008         * configure.in: Add --enable-old-fft-full.
9009         * tune/speed.c (routine): Conditionalise mpn_mul_fft_full references on
9010         WANT_OLD_FFT_FULL.
9011         * tune/common.c (speed_mpn_mul_fft_full)
9012         (speed_mpn_mul_fft_full_sqr): Likewise.
9013         * mpn/generic/mul_fft.c (mpn_mul_fft_full): Include iff
9014         WANT_OLD_FFT_FULL.
9016 2009-12-21  Marco Bodrato <bodrato@mail.dm.unipi.it>
9018         * gmp-impl.h (mpn_toom6h_mul_itch): New inline function.
9019         (MUL_TOOM6H_THRESHOLD): Default value.
9020         (SQR_TOOM6_THRESHOLD): Default value.
9021         * mpn/generic/toom6h_mul.c: Remove definitions moved to gmp-impl.h.
9022         * tune/common.c, tune/speed.c, tune/speed.h: Support for measuring
9023         mpn_toom6h_mul and mpn_toom6_sqr speed.
9025         * mpn/generic/toom63_mul.c: Remove unused TMP_*.
9027         * mpn/generic/toom_eval_pm2rexp.c: New file.
9028         * gmp-impl.h: Provide corresponding declaration.
9029         * configure.in (gmp_mpn_functions): List toom_eval_pm2rexp.
9030         * mpn/generic/toom6h_mul.c: Use shared toom_eval_pm2rexp.
9032         * mpn/generic/toom_couple_handling.c: New file, helper function
9033         for high degree Toom.
9034         * gmp-impl.h: Provide corresponding declaration.
9035         * configure.in (gmp_mpn_functions): List toom_couple_handling.
9036         * mpn/generic/toom6h_mul.c: Use shared toom_couple_handling.
9037         * mpn/generic/toom63_mul.c: Likewise.
9039         * mpn/generic/toom6h_mul.c: New file.
9040         * mpn/generic/toom_interpolate_12pts.c: New file.
9041         * gmp-impl.h: Provide corresponding declarations.
9042         * configure.in (gmp_mpn_functions): List toom_interpolate_12pts,
9043         toom6h_mul.
9044         * tests/mpn/t-toom6h.c: New test program.
9046         * tests/mpn/t-mulmod_bnm1.c (ref_mulmod_bnm1): Use ref_mul.
9047         * tests/mpn/t-sqrmod_bnm1.c (ref_sqrmod_bnm1): Likewise.
9049 2009-12-20  Marco Bodrato <bodrato@mail.dm.unipi.it>
9051         * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): New CRT.
9052         * mpn/generic/sqrmod_bnm1.c (mpn_sqrmod_bnm1): Likewise.
9054 2009-12-20  Torbjorn Granlund  <tege@gmplib.org>
9056         * Change all bit counts for bignums to use mp_bitcnt_t.
9058         * mpn/generic/bdivmod.c: File removed.  All references purged.
9060         * mpn/generic/mul_fft.c (mpn_mul_fft_full): Disable.
9062         * gmp-impl.h: Define mpn_fft_mul as an alias for mpn_nussbaumer_mul.
9063         * mpn/generic/mul.c: Refer mpn_fft_mul.
9064         * mpn/generic/mul_n.c: Likewise.
9065         * mpn/generic/sqr_n.c: Likewise.
9066         * mpn/generic/mullo_n.c: Likewise.
9068         * mpn/generic/mul.c: Loop also over mpn_nussbaumer_mul, as suggested by
9069         Marco.  Use TMP_SALLOC_LIMBS in more places.  Clean up ws allocation.
9071 2009-12-19  Marco Bodrato <bodrato@mail.dm.unipi.it>
9073         * mpn/generic/toom_interpolate_8pts.c: Nailify.
9075 2009-12-19  Torbjorn Granlund  <tege@gmplib.org>
9077         * mpn/generic/mul.c: Major rewrite.  Use toom43, toom53, toom63.
9078         Call mpn_nussbaumer_mul for largest operands.
9080         * tune/speed.h (SPEED_ROUTINE_MPN_TOOM32_FOR_TOOM43_MUL): New macro.
9081         (SPEED_ROUTINE_MPN_TOOM43_FOR_TOOM32_MUL): New macro.
9082         (SPEED_ROUTINE_MPN_TOOM32_FOR_TOOM53_MUL): New macro.
9083         (SPEED_ROUTINE_MPN_TOOM53_FOR_TOOM32_MUL): New macro.
9084         (SPEED_ROUTINE_MPN_TOOM42_FOR_TOOM53_MUL): New macro.
9085         (SPEED_ROUTINE_MPN_TOOM53_FOR_TOOM42_MUL): New macro.
9086         * tune/common.c (speed_mpn_toom63_mul): New function.
9087         (speed_mpn_toom32_for_toom43_mul): New function.
9088         (speed_mpn_toom43_for_toom32_mul): New function.
9089         (speed_mpn_toom32_for_toom53_mul): New function.
9090         (speed_mpn_toom53_for_toom32_mul): New function.
9091         (speed_mpn_toom42_for_toom53_mul): New function.
9092         (speed_mpn_toom53_for_toom42_mul): New function.
9093         * tune/tuneup.c (tune_mul_n): New name for old tune_mul.
9094         (tune_sqr_n): New name for old tune_sqr.
9095         (tune_mul): New function, for unbalanced multiplication.
9096         * gmp-impl.h: Provide declarations for corresponding threshold vars.
9098         * gmp-impl.h (mpn_rsh1add_nc, mpn_rsh1sub_nc): Declare.
9099         * mpn/asm-defs.m4: Likewise.
9100         * configure.in: Add corresponding HAVE_NATIVEs.
9101         * mpn/x86_64/rsh1aors_n.asm: Add _nc entry point.
9103 2009-12-18  Niels Möller  <nisse@lysator.liu.se>
9105         * mpz/divexact.c: Rewrite to use mpn_divexact.
9107         * mpn/generic/bdiv_q_1.c (mpn_bdiv_q_1): Deleted some unused
9108         variables.
9110         * mpn/generic/toom52_mul.c (mpn_toom52_mul)
9111         [HAVE_NATIVE_mpn_add_n_sub_n]: Moved declaration of cy to avoid a
9112         compiler warning.
9114         * gmp-impl.h (gmp_pi1_t): Eliminated inv21 member.
9115         (invert_pi1): ...and don't store it here.
9117         * mpn/generic/toom63_mul.c (mpn_toom63_mul): Simplified
9118         calculation of block size n.
9119         * gmp-impl.h (mpn_toom63_mul_itch): Likewise.
9121         * mpn/generic/toom_eval_pm2exp.c (mpn_toom_eval_pm2exp): Fixed
9122         output asserts.
9124 2009-12-18  Torbjorn Granlund  <tege@gmplib.org>
9126         * tests/mpn/t-toom63.c: New test program.
9128 2009-12-18  Marco Bodrato <bodrato@mail.dm.unipi.it>
9130         * mpn/generic/invert.c: Nailify.
9131         * mpn/generic/invertappr.c: Nailify.
9132         * mpn/generic/mulmod_bnm1.c: Nailify.
9133         * mpn/generic/sqrmod_bnm1.c: Nailify.
9135         * tests/mpn/t-invert.c: New test program.
9137         * mpn/generic/toom63_mul.c: New file.
9138         * mpn/generic/toom_interpolate_8pts.c: New file.
9139         * gmp-impl.h: Provide corresponding declarations.
9140         * configure.in (gmp_mpn_functions): List toom_interpolate_8pts and
9141         toom63_mul.
9143 2009-12-17  Torbjorn Granlund  <tege@gmplib.org>
9145         * mpn/generic/mul.c: Move allocation of ws to where it is used.
9146         Identify toom22, 32, 42, in that order (in two places).  Use midline
9147         between toom22, 32, 42.
9148         * mpn/generic/toom22_mul.c (TOOM22_MUL_MN_REC): Call also
9149         mpn_toom32_mul.
9151         * doc/gmp.texi: Update References section.  Update Contributors
9152         section.  Misc updates.
9154         * gmp-impl.h: Renew default values for all THRESHOLDs.
9156 2009-12-17  Niels Möller  <nisse@lysator.liu.se>
9158         * mpn/generic/divexact.c (mpn_divexact): Don't require that the
9159         dividend is normalized. Use MPN_DIVREM_OR_PREINV_DIVREM_1. When
9160         shifting, allocate and process only the low qn+1 limbs. Eliminated
9161         code for the impossible case nn < qn.
9163         * mpn/generic/dcpi1_div_qr.c (mpn_dcpi1_div_qr): Added some input
9164         asserts.
9166         * mpn/generic/dcpi1_div_qr.c (mpn_dcpi1_div_qr): In the case that
9167         the initial quotient block is a single limb, use 3/2 division,
9168         thereby eliminating the only use of gmp_pi1_t->inv21.
9170 2009-12-17  Marco Bodrato <bodrato@mail.dm.unipi.it>
9172         * mpn/generic/invert.c: Added some comment.
9173         * mpn/generic/invertappr.c: Slightly better threshold handling.
9174         * gmp-impl.h (INV_NEWTON_THRESHOLD): Default to 200.
9176         * mpn/generic/nussbaumer_mul.c: New file.
9177         * configure.in (gmp_mpn_functions): Add nussbaumer_mul.
9178         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add nussbaumer_mul.
9179         * gmp-impl.h (mpn_nussbaumer_mul): Added prototype and name-mangling.
9180         * tune/speed.h (speed_mpn_nussbaumer_mul): Declare function.
9181         * tune/common.c (speed_mpn_nussbaumer_mul): New function.
9182         * tune/speed.c (routine): Add speed_mpn_nussbaumer_mul.
9184         * mpn/generic/sqrmod_bnm1.c: New file.
9185         * configure.in (gmp_mpn_functions): Add sqrmod_bnm1.
9186         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add sqrmod_bnm1.
9187         * gmp-impl.h (mpn_sqrmod_bnm1): Added prototype and name-mangling.
9188         (SQRMOD_BNM1_THRESHOLD): support for the new threshold.
9189         * tune/speed.h (speed_mpn_sqrmod_bnm1): Declare function.
9190         * tune/common.c (speed_mpn_sqrmod_bnm1): New function.
9191         * tune/speed.c (routine): Add speed_mpn_sqrmod_bnm1.
9192         * tests/mpn/t-mulmod_bnm1.c: Attribution.
9193         * tests/mpn/t-sqrmod_bnm1.c: New test file.
9194         * tests/mpn/Makefile.am (check_PROGRAMS): Add t-sqrmod_bnm1.
9196         * tune/tuneup.c: Tune SQRMOD_BNM1_THRESHOLD.
9198         * mpn/generic/nussbaumer_mul.c (mpn_nussbaumer_mul): Mimic fft_mul,
9199         use squaring if operands coincide.
9200         * tune/speed.h (speed_mpn_nussbaumer_mul_sqr): Declare function.
9201         * tune/common.c (speed_mpn_nussbaumer_mul_sqr): New function.
9202         * tune/speed.c (routine): Add speed_mpn_nussbaumer_mul_sqr.
9204 2009-12-17  Torbjorn Granlund  <tege@gmplib.org>
9206         * mpn/generic/bdiv_q.c (mpn_bdiv_q_itch): Rewrite.
9208 2009-12-16  Torbjorn Granlund  <tege@gmplib.org>
9210         * tests/mpn/t-bdiv.c (bdiv_q_valid_p, bdiv_qr_valid_p): Call refmpn_mul
9211         instead of refmpn_mul_basecase.
9212         * tests/mpn/toom-shared.h: Likewise.
9213         * tests/refmpn.c (refmpn_mullo_n,refmpn_sqr,refmpn_mul_any): Likewise.
9215         * minithres/gmp-mparam.h: Add new thresholds, trim old values.
9217         * mpn/generic/powm.c: Use mp_bitcnt_t for bit counts.
9218         Handle REDC_1_TO_REDC_N_THRESHOLD < MUL_TOOM22_THRESHOLD in
9219         non-WANT_REDC_2 INNERLOOP expansion code.
9220         * mpn/generic/powm_sec.c: Use mp_bitcnt_t for bit counts.
9222 2009-12-16  Niels Möller  <nisse@lysator.liu.se>
9224         * tests/mpz/t-gcd.c (main): Added test case to exercise the
9225         unlikely u0 == u1 case in mpn_gcdext_lehmer_n.
9227         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Get ASSERT
9228         right.
9230 2009-12-16  Torbjorn Granlund  <tege@gmplib.org>
9232         * tests/mpz/t-mul.c: Misc cleanups.
9233         (mul_basecase): Remove.
9234         (ref_mpn_mul): Remove.
9235         * tests/refmpn.c (refmpn_mul): New function, mainly from t-mul.c's
9236         ref_mpn_mul.
9237         (refmpn_mullo_n): Add a missing free.
9239         * tune/speed.c (routine): Measure speed_mpn_{sb,dc}pi1_div_qr,
9240         mpn_{sb,dc}pi1_divappr_q, mpn_{sb,dc}pi1_bdiv_qr, and
9241         mpn_{sb,dc}pi1_bdiv_q.
9243         * mpn/generic/invertappr.c: New file, meat from invert.c.
9244         * mpn/generic/invert.c: Leave just mpn_invert.c.
9245         * configure.in (gmp_mpn_functions): Add invertappr.
9246         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add invertappr.c.
9247         * gmp-impl.h (mpn_invert_itch, mpn_invertappr_itch): New macros.
9249 2009-12-15  Torbjorn Granlund  <tege@gmplib.org>
9251         * mpn/generic/gcdext_subdiv_step.c: Get an ASSERT right.
9253 2009-12-15  Niels Möller  <nisse@lysator.liu.se>
9255         * mpn/generic/sbpi1_div_qr.c (mpn_sbpi1_div_qr): A very small step
9256         towards nail support.
9258 2009-12-15  Marco Bodrato <bodrato@mail.dm.unipi.it>
9260         * gmp-impl.h (mpn_ni_invertappr): Added prototype and name-mangling.
9261         * mpn/generic/mulmod_bnm1.c: Comment representation of class [0].
9263 2009-12-14  Niels Möller  <nisse@lysator.liu.se>
9265         * mpn/generic/sbpi1_divappr_q.c (mpn_sbpi1_divappr_q): Use
9266         udiv_qr_3by2.
9268 2009-12-14  Torbjorn Granlund  <tege@gmplib.org>
9270         * tune/tuneup.c (tune_binvert): Remove BINV_MULMOD_BNM1_THRESHOLD
9271         tuning, it was always zero and caused BINV_NEWTON_THRESHOLD to be
9272         wrong (as pointed out by Marco).
9273         * (BINV_MULMOD_BNM1_THRESHOLD): Clean from other files too.
9275 2009-12-14  Marco Bodrato <bodrato@mail.dm.unipi.it>
9277         * mpn/generic/invert.c: Improved comments.
9278         (mpn_bc_invertappr): Conditionally re-enable mpn_dcpi1_divappr_q.
9280 2009-12-14  Niels Möller  <nisse@lysator.liu.se>
9282         * gmp-impl.h (udiv_qr_3by2): Fix typo in argument list.
9284 2009-12-13  Niels Möller  <nisse@lysator.liu.se>
9286         * gmp-impl.h (udiv_qr_3by2): New macro.
9287         * mpn/generic/sbpi1_div_qr.c (mpn_sbpi1_div_qr): Use udiv_qr_3by2.
9289 2009-12-13  Torbjorn Granlund  <tege@gmplib.org>
9291         * mpn/generic/dcpi1_divappr_q.c (mpn_dcpi1_divappr_q): Avoid a buffer
9292         overrun.
9294         * mpn/generic/mul_fft.c (mpn_mul_fft_full): Handle carry-out from 2nd
9295         mpn_mul_fft, add an ASSERT for the 1st mpn_mul_fft.  Replace some
9296         comments on cc's range with ASSERTs.
9298         * mpn/generic/gcdext.c (compute_v): Normalise tp[] after mpn_mul.
9300         * mpz/powm.c: Rework buffer handling.
9302 2009-12-13  Niels Möller  <nisse@lysator.liu.se>
9304         * tests/mpn/toom-shared.h (main): Use refmpn_mul_basecase to check
9305         results (slow!). Iteration counts of all toom tests reduced
9306         considerably.
9308 2009-12-13  Marco Bodrato <bodrato@mail.dm.unipi.it>
9310         * mpn/generic/invert.c (mpn_invertapp): Split in _bc and _ni.
9311         (mpn_bc_invertappr): New function, the basecase.
9312         (mpn_ni_invertapp): New function, Newton iteration.
9313         (mpn_invert): Use mpn_ni_invertapp.
9314         * tune/tuneup.c (tune_invert): Min for INV_APPR_THRESHOLD.
9315         (tune_invertappr): Min for INV_NEWTON_THRESHOLD.
9317         * tune/speed.h (SPEED_ROUTINE_MPN_NI_INVERTAPPR): New macro.
9318         (speed_mpn_ni_invertappr): Declare function.
9319         * tune/common.c (speed_mpn_ni_invertappr): New function.
9320         * tune/speed.c (routine): Add speed_mpn_ni_invertappr.
9322         * tune/tuneup.c (tune_invertappr): Use speed_mpn_ni_invertappr to
9323         tune INV_MULMOD_BNM1_THRESHOLD.
9325 2009-12-12  Torbjorn Granlund  <tege@gmplib.org>
9327         * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Rewrite.
9329 2009-12-12  Marco Bodrato <bodrato@mail.dm.unipi.it>
9331         * tests/mpn/t-mulmod_bnm1.c (main): Disable B^n+1 stressing test
9332         for odd sizes.
9334         * mpn/generic/invert.c: Complete rewrite. Uses Newton iterations.
9335         * gmp-impl.h (mpn_invertappr): Added prototype and name-mangling.
9336         (mpn_invertappr_itch): Added prototype and name-mangling.
9337         (INV_APPR_THRESHOLD): Support for a new tunable const.
9338         * tune/speed.h (SPEED_ROUTINE_MPN_INVERTAPPR): New macro.
9339         (speed_mpn_invertappr): Declare function.
9340         * tune/common.c (speed_mpn_invertappr): New function.
9341         * tune/speed.c (routine): Add speed_mpn_invertappr.
9342         * tune/tuneup.c (tune_invertappr): New function: was tune_invert.
9343         (tune_invert): Now tune only INV_APPR_THRESHOLD.
9344         (all): Enable call to tune_invert and tune_invertappr.
9346 2009-12-11  Torbjorn Granlund  <tege@gmplib.org>
9348         * mpn/generic/binvert.c: Use mpn_mulmod_bnm1 instead of FFT wrapping.
9349         Old, evidently broken wrapping code removed.
9350         * tune/tuneup.c (tune_binvert): Tune BINV_MULMOD_BNM1_THRESHOLD.
9351         * gmp-impl.h: Provide declarations for corresponding threshold var.
9353         * tests/mpn/t-bdiv.c (COUNT): Decrease to keep run time reasonable.
9355         * tune/tuneup.c (tune_invert): Tune INV_MULMOD_BNM1_THRESHOLD.
9356         * gmp-impl.h: Provide declarations for corresponding threshold var.
9358         * tests/mpn/t-mulmod_bnm1.c: Avoid a division by zero.
9360         * configure.in: Set up different paths for different 64-bit sparc
9361         processors.
9362         * mpn/sparc64/ultrasparc34/gmp-mparam.h: New file.
9364 2009-12-10  Torbjorn Granlund  <tege@gmplib.org>
9366         * mpn/*/gmp-mparam.h: Regenerate many of these files.
9368 2009-12-10  Niels Möller  <nisse@lysator.liu.se>
9370         * gmp-impl.h (mpn_divexact): Removed scratch pointer from
9371         prototype.
9372         * mpn/generic/gcdext.c (divexact): Deleted, moved to...
9373         * mpn/generic/divexact.c (mpn_divexact): New implementation (moved
9374         from gcdext.c). The bidirectional divexact is kept but #if:ed out.
9375         Interface change, since the new code doesn't take a scratch
9376         argument.
9378         * tests/mpn/t-mulmod_bnm1.c (main): Ensure that an >= bn. Lowered
9379         MIN_N to 1. Various fixes to handle n == 1 properly.
9381         * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Small interface
9382         change, require an >= bn.
9384         * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Fixed non-recursive
9385         case to not write beyond end of result area.
9387 2009-12-09  Torbjorn Granlund  <tege@gmplib.org>
9389         * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL): New macro, made
9390         from now deleted SPEED_ROUTINE_MPN_MULMOD_BNM1.
9391         * tune/common.c (speed_mpn_bc_mulmod_bnm1): New function.
9392         (speed_mpn_mulmod_bnm1): Use SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL.
9393         * tune/speed.c (routine): Add mpn_bc_mulmod_bnm1.
9395         * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1_next_size): Rewrite.
9397         * tune/tuneup.c (tune_mulmod_bnm1): Rewrite.
9399 2009-12-08  Marco Bodrato <bodrato@mail.dm.unipi.it>
9401         * mpn/generic/mulmod_bnm1.c (mpn_bc_mulmod_bnm1,
9402         mpn_bc_mulmod_bnp1): Added a parameter for scratch area, possibly
9403         same as result area (as suggested by Niels Möller).
9404         (mpn_mulmod_bnm1): Calls changed accordingly.
9406 2009-12-08  Niels Möller  <nisse@lysator.liu.se>
9408         * mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]: Use
9409         table lookup for count_trailing_zeros. Binary algorithm still
9410         disabled by default.
9412         * mpn/generic/gcdext.c (divexact): Local definition of divexact,
9413         using mpn_bdiv_q.
9414         (compute_v): Use it.
9416         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-bdiv.
9418         * tests/mpn/t-bdiv.c: New file.
9420         * mpn/generic/bdiv_q.c (mpn_bdiv_q): Fixed bad quotient length,
9421         should have qn == nn.
9423         * mpn/generic/bdiv_qr.c (mpn_bdiv_qr): Pass correct nn length to
9424         the lower-level functions.
9426 2009-12-08  Torbjorn Granlund  <tege@gmplib.org>
9428         * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_ROUNDED): New define.
9429         * tune/common.c (speed_mpn_mulmod_bnm1_rounded): New function.
9430         * tune/speed.c (routine): Add mpn_mulmod_bnm1_rounded for measuring
9431         mpn_mulmod_bnm1 at recommended sizes.
9433         * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1_next_size): Rewrite.
9434         (mpn_bc_mulmod_bnm1): Use mpn_add_n instead of mpn_add.
9436         * tune/speed.c (routine): Add mpn_invert.
9438         * tune/tuneup.c (tune_invert): New function.
9439         * tune/speed.h (SPEED_ROUTINE_MPN_INVERT): New macro.
9440         * tune/common.c (speed_mpn_invert): New function.
9441         * gmp-impl.h: Provide declarations for corresponding threshold var.
9442         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add invert.c.
9444 2009-12-08  Marco Bodrato <bodrato@mail.dm.unipi.it>
9446         * tests/devel/try.c: Test mpn_addlsh2_n and mpn_{add,sub}lsh_n;
9447         mpn_rsblsh_n now tests all shift values.
9448         * tests/refmpn.c (refmpn_addlsh_n, refmpn_sublsh_n): New functions.
9449         (refmpn_addlsh1_n): Use generic refmpn_addlsh_n.
9450         (refmpn_sublsh1_n): Use generic refmpn_sublsh_n.
9451         (refmpn_addlsh2_n): New function.
9452         * tests/tests.h: Declare new functions.
9454 2009-12-06  Torbjorn Granlund  <tege@gmplib.org>
9456         * tune/tuneup.c (tune_mulmod_bnm1): Up min_size to 12.
9458         * Globally: Rename *mullow* to *mullo*, *MULLOW* to *MULLO*.
9460         * configure.in: Don't include ev5 directory for ev6* and ev7.  Misc
9461         alpha path cleanups.
9462         * mpn/alpha/add_n.asm: Replaced by mpn/alpha/ev5/add_n.asm.
9463         * mpn/alpha/sub_n.asm: Replaced by mpn/alpha/ev5/sub_n.asm.
9464         * mpn/alpha/lshift.asm: Replaced by mpn/alpha/ev5/lshift.asm.
9465         * mpn/alpha/rshift.asm: Replaced by mpn/alpha/ev5/rshift.asm.
9466         * mpn/alpha/com_n.asm: New, moved from mpn/alpha/ev5/rshift.asm.
9467         * mpn/alpha/ev5/diveby3.asm: New, moved from mpn/alpha/diveby3.asm.
9469         * mpn/powerpc64/mode64/diveby3.asm: Remove, it is slower than
9470         mpn_bdiv_dbm1c on all hardware.
9472         * mpn/generic/powm_sec.c: Rework logic for mpn_sqr_basecase size limit.
9474         * gmp-impl.h (mpn_redc_1_sec): Declare.
9475         * configure.in (gmp_mpn_functions): Add redc_1_sec.
9477 2009-12-06  Marco Bodrato <bodrato@mail.dm.unipi.it>
9479         * tests/devel/try.c (try_one): DATA_SRC0_HIGHBIT sets the high bit.
9481 2009-12-05  Marco Bodrato <bodrato@mail.dm.unipi.it>
9483         * mpn/generic/toom_eval_dgr3_pm1.c: Change return value: 0 or ~0.
9484         * mpn/generic/toom_eval_dgr3_pm2.c: Likewise.
9485         * mpn/generic/toom_eval_pm1.c: Likewise.
9486         * mpn/generic/toom_eval_pm2exp.c: Likewise.
9487         * mpn/generic/toom_eval_pm2.c: Rewrite to use mpn_addlsh2_n.
9489         * mpn/generic/toom_interpolate_5pts.c: Param sa is a flag, not a sign.
9491         * mpn/generic/toom33_mul.c: Adapt to changes above.
9492         * mpn/generic/toom3_sqr.c: Likewise.
9493         * mpn/generic/toom42_mul.c: Likewise.
9494         * mpn/generic/toom43_mul.c: Reduce branches.
9495         * mpn/generic/toom44_mul.c: Likewise.
9496         * mpn/generic/toom53_mul.c: Likewise.
9497         * mpn/generic/toom62_mul.c: Likewise.
9499         * mpn/generic/toom52_mul.c: Use toom_eval_ functions.
9501         * mpn/generic/toom4_sqr.c: Avoid C99 construct.
9502         * mpn/generic/toom_interpolate_7pts.c: Likewise.
9504 2009-12-05  Torbjorn Granlund  <tege@gmplib.org>
9506         * mpn/generic/redc_1_sec.c: New file.
9507         * mpn/generic/powm_sec.c: Use redc_1_sec.  Use dummy full subtract
9508         instead of mpn_cmp since the latter leaks to the side channel.
9509         (mpn_local_sqr_n): New function, with associated macros.
9510         (mpn_powm_sec): Use mpn_local_sqr_n.
9512         * configure.in (HAVE_NATIVE): Add missing functions, then sort.
9514 2009-12-04  Torbjorn Granlund  <tege@gmplib.org>
9516         * tune/tuneup.c (tune_dc_div): Up min_size to 6.
9517         (tune_mod_1): Set MOD_1_1_THRESHOLD min_size to 2.
9519         * tune/speed.h: Negate "binvert"-type inverses, as required.
9521         * mpn/generic/redc_1.c: Add ASSERTs.
9522         * mpn/generic/redc_2.c: Likewise.
9524         * mpn/generic/sbpi1_bdiv_q.c: Simplify loops, indexing.
9526 2009-12-03  Yann Droneaud  <yann@droneaud.fr>
9528         * acinclude.m4 ([long long reliability test 1]): Add a "static" for C99
9529         inline semantics compatibility.
9531 2009-12-03  Torbjorn Granlund  <tege@gmplib.org>
9533         * configure.in: Move intptr_t test into common AC_CHECK_TYPES.
9535         * mpn/generic/gcdext.c: Add a TMP_FREE.
9537 2009-12-03  Niels Möller  <nisse@lysator.liu.se>
9539         * mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]:
9540         Added various masking tricks.
9542         * mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]:
9543         Reimplemented binary gcdext, with proper canonicalization.
9545         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Handle v == 0
9546         from mpn_gcdext_1.
9547         * mpn/generic/gcdext_1.c (mpn_gcdext_1): Allow inputs with a < b,
9548         assertions fixed accordingly.
9550 2009-12-03  Torbjorn Granlund  <tege@gmplib.org>
9552         * tune/tuneup.c: Tune DC_DIVAPPR_Q_THRESHOLD.  Rewrite
9553         DC_DIV_QR_THRESHOLD tuning code.
9554         (tune_dc_div): Rewrite.
9555         * tune/speed.h (SPEED_ROUTINE_MPN_PI1_DIV): New macro.
9556         * tune/common.c (speed_mpn_sbpi1_div_qr, speed_mpn_dcpi1_div_qr,
9557         speed_mpn_sbpi1_divappr_q, speed_mpn_sbpi1_bdiv_qr): New functions.
9558         * gmp-impl.h: Provide declarations for corresponding threshold vars.
9559         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add dcpi1_divappr_q.c.
9561         * tune/tuneup.c (tune_binvert): Up max_size.
9563 2009-12-02  Marco Bodrato <bodrato@mail.dm.unipi.it>
9565         * tests/devel/try.c: Test mpn_rsblsh2_n and mpn_rsblsh_n.
9566         * tests/refmpn.c (refmpn_rsblsh_n, refmpn_rsblsh2_n): New functions.
9567         (refmpn_rsblsh1_n): Use generic refmpn_rsblsh_n.
9568         * tests/tests.h: Declare new functions.
9570 2009-12-03  Niels Möller  <nisse@lysator.liu.se>
9572         * mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step):
9573         Select the right cofactor in the cases A == B or A == 2B.
9575         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Deleted
9576         handling of ap[0] == 0 and bp[0] == 0; these cases don't happen.
9577         Select the right cofactor in the case ap[0] == bp[0].
9578         * mpn/generic/gcdext.c (mpn_gcdext): Analogous changes.
9580 2009-12-02  Niels Möller  <nisse@lysator.liu.se>
9582         * gmp-h.in (mpn_gcdext_1): Updated prototype.
9583         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Updated for
9584         signed cofactors from gcdext_1.
9585         * mpn/generic/gcdext_1.c (mpn_gcdext_1): Use Euclid's algorithm,
9586         and return signed cofactors.
9588 2009-12-02  Torbjorn Granlund  <tege@gmplib.org>
9590         * doc/gmp.texi (Low-level Functions): Document mpn_sqr_n.
9592         * tune/speed.c (routine): Add mpn_binvert.
9594         * tune/tuneup.c: Tune BINV_NEWTON_THRESHOLD.
9595         (tune_binvert): New function.
9596         * tune/speed.h (SPEED_ROUTINE_MPN_BINVERT): New macro.
9597         * tune/common.c (speed_mpn_binvert): New function.
9598         * gmp-impl.h: Provide declarations for corresponding threshold var.
9599         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add binvert.c.
9601         * tune/tuneup.c: Tune DC_BDIV_QR_THRESHOLD and DC_BDIV_Q_THRESHOLD.
9602         (tune_dc_bdiv): New function.
9603         (tune_dc_div): New name for tune_dc.
9604         * tune/speed.h (SPEED_ROUTINE_MPN_PI1_BDIV_QR,
9605         SPEED_ROUTINE_MPN_PI1_BDIV_Q): New macros.
9606         * tune/common.c (speed_mpn_sbpi1_bdiv_qr, speed_mpn_dcpi1_bdiv_qr,
9607         speed_mpn_sbpi1_bdiv_q, speed_mpn_dcpi1_bdiv_q): New functions.
9608         * gmp-impl.h: Provide declarations for corresponding threshold vars.
9609         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add dcpi1_bdiv_qr.c and
9610         dcpi1_bdiv_q.c.
9612 2009-12-01  Marco Bodrato <bodrato@mail.dm.unipi.it>
9614         * mpn/generic/toom53_mul.c: Removed double computation of vinf.
9616         * mpn/x86_64/aorrlsh_n.asm: Correct return value for rsblsh_n.
9617         * mpn/asm-defs.m4 (define_mpn): Add rsblsh_n.
9618         * gmp-impl.h (mpn_rsblsh_n): Added prototype and name-mangling.
9620         * mpn/generic/fib2_ui.c: Reduce the amount of temporary storage.
9621         Use mpn_rsblsh_n.
9623 2009-12-01  Torbjorn Granlund  <tege@gmplib.org>
9625         * mpn/generic/redc_n.c: Rework temp allocation.
9627         * mpn/generic/dcpi1_bdiv_qr.c (mpn_dcpi1_bdiv_qr_n_itch): Add pi1 also
9628         to this function.
9630         * mpn/generic/dcpi1_bdiv_q.c: Get the mpn_sbpi1_bdiv_q call right.
9631         Misc cleanups.
9633         * tune/speed.c (routine): Fix typo in last change.
9634         Add mpn_redc_2.
9636         * tune/speed.h (SPEED_ROUTINE_REDC_N): Set min size properly.
9638 2009-12-01  Niels Möller  <nisse@lysator.liu.se>
9640         * tune/speed.c (routine): Added mpn_toom42_mul and mpn_redc_n.
9641         * tune/speed.h (SPEED_ROUTINE_MPN_TOOM42_MUL): New macro.
9642         (speed_mpn_toom42_mul): Declare function.
9643         * tune/common.c (speed_mpn_toom42_mul): New function.
9644         * gmp-impl.h (MPN_TOOM42_MUL_MINSIZE): New constant.
9646 2009-11-30  Marco Bodrato <bodrato@mail.dm.unipi.it>
9648         * mpn/generic/fib2_ui.c: Use mpn_rsblsh2_n.
9650 2009-11-29  Torbjorn Granlund  <tege@gmplib.org>
9652         * mpn/x86_64/pentium4/gmp-mparam.h
9653         (HAVE_NATIVE_mpn_addlsh1_n, HAVE_NATIVE_mpn_sublsh1_n): Don't undef.
9655         * Makefile.am (EXTRA_DIST): Remove macos.
9657 2009-11-28  Torbjorn Granlund  <tege@gmplib.org>
9659         * tune/tuneup.c (tune_redc): Set min_size to 16 for redc_n tuning.
9661         * mpn/x86_64/sqr_basecase.asm (SQR_TOOM2_THRESHOLD_MAX): Avoid quoting
9662         to allow configure.in parse it more easily.  Trim from 120 to 80.
9664 2009-11-28  Marco Bodrato <bodrato@mail.dm.unipi.it>
9666         * mpn/generic/mulmod_bnm1.c: Basecases made simpler, this also corrects
9667         a bug affecting previous version.
9669 2009-11-28  Torbjorn Granlund  <tege@gmplib.org>
9671         * configure.in: Handle atom also in 32-bit mode.
9672         * mpn/x86/atom/gmp-mparam.h: New file.
9674         * gmp-impl.h (MULMOD_BNM1_THRESHOLD): Default.
9676         * mpn/generic/redc_n.c: Use mpn_mulmod_bnm1 instead of mpn_mul_n.
9678         * Use TMP_ALLOC_LIMBS consistently.
9679         * Finish renaming BITS_PER_MP_LIMB to GMP_LIMB_BITS.
9681         * macos: Remove entire directory.
9683 2009-11-27  Torbjorn Granlund  <tege@gmplib.org>
9685         * mpn/x86_64/corei/gmp-mparam.h: New file.
9686         * mpn/x86_64/core2/gmp-mparam.h: Now for just core2.
9687         * mpn/powerpc64/mode64/p3/gmp-mparam.h: New file.
9688         * mpn/powerpc64/mode64/p4/gmp-mparam.h: New file.
9689         * mpn/powerpc64/mode64/p5/gmp-mparam.h: New file.
9691         * config.guess: Return "corei" for core i7 and core i5.
9692         * config.sub: Recognise "corei".
9693         * acinclude.m4 (X86_64_PATTERN): Add corei.
9694         * configure.in (powerpc): Set up more CPU-specific paths.
9695         (x86): Handle corei.
9697         * mpz/powm.c: Allow input operand overlap also when exponent = 1.
9698         Misc cleanups.
9700 2009-11-26  Marco Bodrato <bodrato@mail.dm.unipi.it>
9702         * tests/mpn/t-mulmod_bnm1.c: New test file.
9703         * tests/mpn/Makefile.am (check_PROGRAMS): Add t-mulmod_bnm1.
9705         * mpn/generic/mullow_n.c: Comments on Mulders' trick implementation.
9707 2009-11-26  Torbjorn Granlund  <tege@gmplib.org>
9709         * mpn/generic/powm.c: Make comments reflect current code state.
9711         * tests/devel/try.c: Make mpn_mullow_n testing actually work.
9713 2009-11-25  Torbjorn Granlund  <tege@gmplib.org>
9715         * mpz/powm.c: Clean up unused defs.
9717 2009-11-24  Torbjorn Granlund  <tege@gmplib.org>
9719         * tune/tuneup.c (tune_redc): Rewrite.
9720         * mpn/generic/powm.c: Use REDC_1_TO_REDC_2_THRESHOLD,
9721         REDC_1_TO_REDC_N_THRESHOLD, and REDC_2_TO_REDC_N_THRESHOLD.
9722         Get rid of previous REDC params, including LOCAL_REDC_N_THRESHOLD.
9723         (WANT_REDC_2): Define.
9724         * gmp-impl.h: Corresponding changes.
9726 2009-11-23  Torbjorn Granlund  <tege@gmplib.org>
9728         * mpn/generic/powm.c: Fix typo.
9729         Define LOCAL_REDC_N_THRESHOLD, use in REDC_2_THRESHOLD...
9730         REDC_N_THRESHOLD chain.
9732 2009-11-22  Torbjorn Granlund  <tege@gmplib.org>
9734         * tune/tuneup.c (tune_mullow): Set min_size to 1.
9736         * mpn/generic/powm_sec.c: Use just mpn_mul_basecase and
9737         mpn_sqr_basecase for multiplication and squaring.
9739         * tune/tuneup.c: Tune REDC_2_THRESHOLD and REDC_N_THRESHOLD.
9740         (tune_redc): New function.
9741         (tune_powm): Remove function.
9742         * tune/speed.h (SPEED_ROUTINE_REDC_2, SPEED_ROUTINE_REDC_N): New.
9743         * tune/common.c (speed_mpn_redc_2, speed_mpn_redc_n): New.
9745         * mpz/powm.c: Complete rewrite.  Use mpn_powm and mpn_powlo.
9746         * mpn/generic/powm.c: Rewrite.
9747         * mpn/generic/redc_n.c: New file.
9748         * configure.in (gmp_mpn_functions): Add redc_n.
9749         * gmp-impl.h (REDC_2_THRESHOLD, REDC_N_THRESHOLD): Default, and define
9750         for tuneup.
9752 2009-11-21  Marco Bodrato <bodrato@mail.dm.unipi.it>
9754         * mpn/generic/mullow_n.c: Disable Mulders' trick for small operands,
9755         use fft for bigger ones.
9756         * tests/mpn/t-mullo.c: New test file.
9758 2009-11-22  Torbjorn Granlund  <tege@gmplib.org>
9760         * tune/tuneup.c (tune_mullow): Rewrite.
9762 2009-11-21  Marco Bodrato <bodrato@mail.dm.unipi.it>
9764         * gmp-impl.h: Removed unused macros (CACHED_ABOVE_THRESHOLD and
9765         CACHED_BELOW_THRESHOLD).
9767         * mpn/generic/mullow_n.c: Use Mulders' trick.
9768         * tune/tuneup.c (tune_mullow): MULLOW_MUL_N_THRESHOLD range of
9769         search depends on FFT tuning;
9770         (all): Anticipate tune_fft_{mul,sqr}.
9772         * tune/speed.c (routine): Add entry related to mpn_mulmod_bnm1.
9774 2009-11-19  Niels Möller  <nisse@lysator.liu.se>
9776         * mpn/generic/toom_eval_dgr3_pm2.c (mpn_toom_eval_dgr3_pm2)
9777         [HAVE_NATIVE_mpn_add_n_sub_n]: Fixed typo in mpn_add_n_sub_n call
9778         (spotted by Marco Bodrato).
9779         * mpn/generic/toom_eval_pm2.c (mpn_toom_eval_pm2): Likewise.
9780         * mpn/generic/toom_eval_pm2exp.c (mpn_toom_eval_pm2exp): Likewise.
9782         * mpn/generic/toom_eval_pm2.c (mpn_toom_eval_pm2) [HAVE_NATIVE_mpn_addlsh_n]:
9783         Fixed missing declaration.
9785         * mpn/asm-defs.m4 (define_mpn): Add addlsh_n.
9786         * gmp-impl.h (mpn_addlsh_n): Added prototype and name-mangling.
9788 2009-11-19  Niels Möller  <nisse@lysator.liu.se>
9790         * mpn/generic/toom_eval_pm2.c (mpn_toom_eval_pm2): New file.
9791         * mpn/generic/toom53_mul.c (mpn_toom53_mul): Use mpn_toom_eval_pm2.
9792         * mpn/generic/toom62_mul.c (mpn_toom62_mul): Likewise.
9793         * configure.in (gmp_mpn_functions): Added toom_eval_dgr3_pm2.
9795 2009-11-18  Torbjorn Granlund  <tege@gmplib.org>
9797         * gmp-impl.h (mpn_and_n, etc): Adapt to now-public logic functions.
9799         * config.guess: Recognise VIA nano.
9800         * config.sub: Likewise.
9801         * configure.in: Generalise x86_64 support; recognise VIA nano.
9803 2009-11-16  Torbjorn Granlund  <tege@gmplib.org>
9805         * tune/speed.c (routine): Add measurement of mpn_addlsh2_n,
9806         mpn_sublsh2_n, mpn_rsblsh2_n.
9807         * tune/common.c: Add speed routines for lsh2 functions.
9809         * mpn/generic/divis.c: Use MU_BDIV_QR_THRESHOLD.
9811         * configure.in (gmp_mpn_functions_optional): Add *lsh_n functions.
9813         * mpn/generic/toom_eval_pm2exp.c: Make HAVE_NATIVE_mpn_addlsh_n code
9814         work.
9816         * mpn/x86_64/aorrlsh2_n.asm: Optimise inner loop.
9818         * configure.in (gmp_mpn_functions_optional): Remove copyi,copyd, they
9819         are now in gmp_mpn_functions.  Analogously move logical functions.
9821 2009-11-16  Marco Bodrato <bodrato@mail.dm.unipi.it>
9823         * mpn/generic/toom53_mul.c: Use addlsh2 for evaluation (and fix typo).
9824         * mpn/generic/toom_eval_dgr3_pm2.c: Likewise (affects toom44 and 43).
9826         * mpn/asm-defs.m4: Fix comments for op_lsh2 new functions.
9827         * gmp-impl.h: Likewise.
9828         * tests/mpz/t-fac_ui.c: Fix a comment.
9830 2009-11-15  Torbjorn Granlund  <tege@gmplib.org>
9832         * mpn/x86_64/aorrlsh2_n.asm: New file.
9833         * configure.in: Add support for addlsh2_n, sublsh2_n, and rsblsh2_n,
9834         including mulfuncs.
9835         * gmp-impl.h (mpn_addlsh2_n, mpn_sublsh2_n, mpn_rsblsh2_n): Declare.
9836         * mpn/asm-defs.m4: Likewise.
9838         * mpn/generic/copyi.c: New file.
9839         * mpn/generic/copyd.c: Likewise.
9840         * mpn/generic/zero.c: Likewise.
9841         * gmp-h.in: Declare new functions.
9842         * configure.in (gmp_mpn_functions): Add new functions.
9844 2009-11-15  Marco Bodrato <bodrato@mail.dm.unipi.it>
9846         * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1_next_size): fix typo
9848         * mpn/generic/toom33_mul.c: Use rsblsh1 for evaluation.
9849         * mpn/generic/toom3_sqr.c: Likewise.
9851 2009-11-14  Torbjorn Granlund  <tege@gmplib.org>
9853         * mpn/generic/toom52_mul.c: Use mpn_addlsh1_n.
9855         * mpn/generic/toom52_mul.c: Toggle the right flag bit in an
9856         HAVE_NATIVE_mpn_add_n_sub_n arm.
9858         * tests/mpz/t-remove.c: New file.
9860         * mpn/generic/remove.c: Major overhaul.  Add parameter 'cap'.
9862         * mpn/generic/binvert.c: Fix typo in last change.
9864         * mpn/generic/bdiv_qr.c: Make it actually work.  Also use passed-in
9865         scratch space.
9867         * mpn/generic/mu_bdiv_qr.c: Reset FFT parameters for each call.
9869 2009-11-12  Torbjorn Granlund  <tege@gmplib.org>
9871         * mpn/x86/k7/gcd_1.asm (MASK): Compute from MAXSHIFT.
9873 2009-11-11  Torbjorn Granlund  <tege@gmplib.org>
9875         * mpn/generic/binvert.c: Simplify, fix comments.
9877         * tests/devel/try.c: Test mpn_invert and mpn_binvert.
9879         * tests/refmpn.c (refmpn_invert, refmpn_binvert): New functions.
9880         * tests/tests.h: Declare new functions.
9882 2009-11-10  Torbjorn Granlund  <tege@gmplib.org>
9884         * configure.in: Supply compiler options for atom in 32-bit mode.
9886         * acinclude.m4 (X86_64_PATTERN): New.
9887         * configure.in: Setup and use X86_64_PATTERN.
9889         * mpn/x86_64/fat/fat.c: New file.
9890         * mpn/x86_64/fat/fat_entry.asm: New file.
9891         * mpn/x86_64/fat: Copy C placeholder files from mpn/x86/fat.
9892         * mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): New, copied from
9893         mpn/x86/x86-defs.m4.
9894         * configure.in: Move down x86 fat setup code until after ABI has been
9895         determined; generalise to handle x86_64.
9897 2009-11-09  Torbjorn Granlund  <tege@gmplib.org>
9899         * mpn/x86/fat/mod_1.c: New file.
9901         * acinclude.m4 (GMP_C_FOR_BUILD_ANSI): Avoid poor quoting.
9903 2009-11-08  Torbjorn Granlund  <tege@gmplib.org>
9905         * gmp-impl.h (MPN_LOGOPS_N_INLINE): Rewrite, update interface.  Callers
9906         updated.
9907         * mpn/generic/logops_n.c: New file.
9908         * doc/gmp.texi (Low-level Functions): Document logical mpn functions.
9910 2009-11-07  Torbjorn Granlund  <tege@gmplib.org>
9912         * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1): Adapt to new
9913         mpn_mulmod_bnm1 interface.
9915 2009-11-07  Marco Bodrato <bodrato@mail.dm.unipi.it>
9917         * mpn/generic/mulmod_bnm1.c: New interface, with size
9918         specified for all operands in mpn_mulmod_bnm1.
9919         * gmp-impl.h: Changed mpn_mulmod_bnm1 prototype.
9921 2009-11-05  Torbjorn Granlund  <tege@gmplib.org>
9923         * mpn/x86/k7/gcd_1.asm: Actually use div-reduced value.
9924         Mnemonic cleanup.
9926         * mpn/x86_64/gcd_1.asm: New file.
9928 2009-11-03  Torbjorn Granlund  <tege@gmplib.org>
9930         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add sqr_n.c.
9932 2009-11-03  Marco Bodrato <bodrato@mail.dm.unipi.it>
9934         * mpn/generic/toom_interpolate_6pts.c: removed an addmul_1 and cleanup.
9936 2009-11-02  Torbjorn Granlund  <tege@gmplib.org>
9938         * configure.in (gmp_mpn_functions): Remove obsolete functions
9939         dc_divrem_n and sb_divrem_mn.
9940         * gmp-impl.h: Misc cleanup.
9941         (mpn_sb_divrem_mn, mpn_dc_divrem_n): Remove.
9942         (DIV_DC_THRESHOLD): Remove.
9943         * mpn/generic/dc_divrem_n.c: Remove.
9944         * mpn/generic/sb_divrem_mn.c: Remove.
9945         * mpn/generic/tdiv_qr.c: Use DC_DIV_QR_THRESHOLD, not DIV_DC_THRESHOLD.
9947         * tests/devel/try.c: Replace mpn_sb_divrem_mn by mpn_sbpi1_div_qr.
9948         * tests/refmpn.c (refmpn_sb_div_qr): New name for refmpn_sb_divrem_mn.
9950         * tune/Makefile.am (libspeed_la_SOURCES): Remove sb_div.c and sb_inv.c.
9951         (TUNE_MPN_SRCS_BASIC): Remove sb_divrem_mn.c.
9952         * tune/common.c (speed_mpn_dcpi1_div_qr_n): New function.
9953         Remove mpn_sb_divrem_mn related functions.
9954         * tune/speed.c (routine): Remove entries related to mpn_dc_divrem and
9955         mpn_sb_divrem.
9956         (routine): New entry for mpn_dc_div_qr_n.
9957         * tune/speed.h (SPEED_ROUTINE_MPN_DC_DIVREM_CALL): Compute inverse
9958         needed by pi1 calls.
9959         (SPEED_ROUTINE_MPN_SB_DIVREM_M3): Remove.
9960         * tune/tuneup.c (tune_sb_preinv): Remove.
9961         (tune_dc): Update to measure DC_DIV_QR_THRESHOLD.
9963         * mpn/generic/sb_divappr_q.c: Remove.
9965 2009-11-01  Torbjorn Granlund  <tege@gmplib.org>
9967         * gmp-impl.h: Misc minor cleanups.
9969 2009-10-31  Torbjorn Granlund  <tege@gmplib.org>
9971         * gmp-impl.h (toom itch functions): Simplify, make some into macros.
9972         (MPN_KARA_MUL_N_TSIZE, MPN_KARA_SQR_N_TSIZE): Remove.
9973         * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove.
9974         * mpn/generic/mul_n.c (mpn_sqr_n): Move from here...
9975         * mpn/generic/sqr_n.c: ...to this new file.
9976         * configure.in (gmp_mpn_functions): Add sqr_n.
9978         * Globally change
9979           MUL_TOOM3_THRESHOLD => MUL_TOOM33_THRESHOLD,
9980           MUL_KARATSUBA_THRESHOLD => MUL_TOOM22_THRESHOLD,
9981           SQR_KARATSUBA_THRESHOLD => SQR_TOOM2_THRESHOLD,
9982         and associated names analogously.
9984 2009-10-31  Niels Möller  <nisse@lysator.liu.se>
9986         * mpn/generic/toom_interpolate_7pts.c: Changed evaluation points,
9987         replacing -1/2 by -2.
9988         * mpn/generic/toom44_mul.c: Updated to use new evaluation points,
9989         and use mpn_toom_eval_dgr3_pm2.
9990         * mpn/generic/toom4_sqr.c (mpn_toom4_sqr): Likewise.
9991         * mpn/generic/toom53_mul.c (mpn_toom53_mul): Updated to use new
9992         evaluation points, and use mpn_toom_eval_pm1 and
9993         mpn_toom_eval_pm2exp.
9994         * mpn/generic/toom62_mul.c (mpn_toom62_mul): Likewise.
9996         * mpn/generic/toom_eval_pm2exp.c: New file.
9997         * mpn/generic/toom_eval_pm1.c: New file.
9999         * mpn/generic/toom43_mul.c (mpn_toom43_mul): Use
10000         mpn_toom_eval_dgr3_pm2.
10002 2009-10-30  Torbjorn Granlund  <tege@gmplib.org>
10004         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add toom2* and toom3* files.
10006 2009-10-30  Niels Möller  <nisse@lysator.liu.se>
10008         * configure.in (gmp_mpn_functions): Added toom_eval_dgr3_pm2.
10009         * gmp-impl.h: Added prototype for mpn_toom_eval_dgr3_pm2.
10010         * mpn/generic/toom_eval_dgr3_pm2.c: New file.
10012 2009-10-29  Niels Möller  <nisse@lysator.liu.se>
10014         * mpn/generic/toom43_mul.c (mpn_toom43_mul): Use
10015         mpn_toom_eval_dgr3_pm1.
10016         * mpn/generic/toom42_mul.c (mpn_toom42_mul): Likewise.
10018 2009-10-29  Torbjorn Granlund  <tege@gmplib.org>
10020         * mpn/generic/mulmod_bnm1.c: Replace some add_1 by INCR.
10022         * gmp-impl.h (mpn_mulmod_bnm1_itch): New macro.
10024         * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Call mpn_mul_fft.
10025         (mpn_mulmod_bnm1_next_size): Adopt to SS FFT.
10027         * mpn/generic/mul_fft.c (mpn_mul_fft): Make it return high limb.
10028         (mpn_mul_fft_internal): Likewise.
10030         * mpn/generic/mulmod_bnm1.c: New file, by Niels Möller.
10031         * configure.in (gmp_mpn_functions): Add mulmod_bnm1.
10032         * gmp-impl.h: Add related declarations.
10033         * tune/tuneup.c: Tune MULMOD_BNM1_THRESHOLD.
10034         * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1): New macro.
10035         * tune/common.c (speed_mpn_mulmod_bnm1): New function.
10036         * Makefile.am (TUNE_MPN_SRCS_BASIC): Add mulmod_bnm1.c.
10038         * gmp-impl.h (mpn_kara_mul_n, mpn_kara_sqr_n): Remove declarations.
10039         * tune/common.c: Remove/rename kara functions.
10040         * tune/speed.h: Likewise.
10042         * tests/devel/try.c: Clean up usage of %p printf arguments.
10044         * gmp-impl.h: Update MUL/SQR MINSIZE macros to reflect new function
10045         names and limitations
10046         * tune/tuneup.c: Use updated macro names.
10047         * tune/speed.h: Likewise.
10048         * tests/devel/try.c: Test new mul/sqr functions, remove old tests.
10050 2009-10-29  Niels Möller  <nisse@lysator.liu.se>
10052         * tune/speed.c: Added support for mpn_toom4_sqr,
10054         * tune/speed.h (SPEED_ROUTINE_MPN_TOOM4_SQR): New macro.
10055         (SPEED_ROUTINE_MPN_KARA_MUL_N): Deleted.
10056         (SPEED_ROUTINE_MPN_TOOM3_MUL_N): Deleted.
10057         (SPEED_ROUTINE_MPN_TOOM2_SQR): Use mpn_toom2_sqr_itch.
10059         * gmp-impl.h (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove
10060         declarations.
10061         (mpn_toom2_sqr_itch): Add margin for recursive calls.
10063 2009-10-28  Niels Möller  <nisse@lysator.liu.se>
10065         * mpn/generic/mul_n.c (mpn_kara_mul_n): Deleted old Karatsuba
10066         implementation.
10067         (mpn_kara_sqr_n): Likewise deleted.
10069         * mpn/generic/mul_n.c (mpn_sqr_n): Use mpn_toom2_sqr and
10070         mpn_toom3_sqr, not the old implementations.
10072         * gmp-impl.h (MPN_TOOM3_MUL_N_TSIZE): Deleted, replaced by
10073         mpn_toom33_mul_itch.
10074         (MPN_TOOM3_SQR_N_TSIZE): Deleted, replaced by
10075         mpn_toom3_sqr_itch.
10076         (mpn_toom33_mul_itch): Needs more scratch.
10077         (mpn_toom3_sqr_itch): Likewise.
10078         * tune/speed.h (SPEED_ROUTINE_MPN_TOOM3_MUL_N): Use
10079         mpn_toom33_mul_itch.
10080         (SPEED_ROUTINE_MPN_TOOM3_SQR_N): Use mpn_toom3_sqr_itch.
10081         * mpn/generic/mul_n.c (mpn_mul_n): Use mpn_toom33_mul_itch.
10082         (mpn_sqr_n): Use mpn_toom3_sqr_itch.
10084         * mpn/generic/toom33_mul.c (mpn_toom33_mul): Avoid TMP_ALLOC. Needs
10085         some more supplied scratch instead.
10086         * mpn/generic/toom3_sqr.c (mpn_toom3_sqr): Likewise.
10088 2009-10-26  Torbjorn Granlund  <tege@gmplib.org>
10090         * gmp-impl.h (invert_pi1): Streamline, as suggested by Niels.
10092 2009-10-24  Torbjorn Granlund  <tege@gmplib.org>
10094         * mpn/generic/bdiv_q.c: Update to call new functions.
10095         * mpn/generic/bdiv_qr.c: Likewise.
10096         * mpn/generic/binvert.c: Likewise.
10097         * mpn/generic/divexact.c: Likewise.
10098         * mpn/generic/divis.c: Likewise.
10099         * mpn/generic/perfpow.c: Likewise.
10100         * mpn/generic/tdiv_qr.c: Likewise.
10101         * mpn/generic/dcpi1_bdiv_q.c: New file.
10102         * mpn/generic/dcpi1_bdiv_qr.c: New file.
10103         * mpn/generic/dcpi1_div_q.c: New file.
10104         * mpn/generic/dcpi1_div_qr.c: New file.
10105         * mpn/generic/dcpi1_divappr_q.c: New file.
10106         * mpn/generic/sbpi1_bdiv_q.c: New file.
10107         * mpn/generic/sbpi1_bdiv_qr.c: New file.
10108         * mpn/generic/sbpi1_div_q.c: New file.
10109         * mpn/generic/sbpi1_div_qr.c: New file.
10110         * mpn/generic/sbpi1_divappr_q.c: New file.
10111         * mpn/generic/dc_bdiv_q.c: Removed.
10112         * mpn/generic/dc_bdiv_qr.c: Removed.
10113         * mpn/generic/dc_div_q.c: Removed.
10114         * mpn/generic/dc_div_qr.c: Removed.
10115         * mpn/generic/dc_divappr_q.c: Removed.
10116         * mpn/generic/sb_bdiv_q.c: Removed.
10117         * mpn/generic/sb_bdiv_qr.c: Removed.
10118         * mpn/generic/sb_div_q.c: Removed.
10119         * mpn/generic/sb_div_qr.c: Removed.
10121         * configure.in (gmp_mpn_functions): Add new division functions, remove
10122         obsolete division functions.
10124         * gmp-impl.h: Add declarations of new division functions, remove
10125         corresponding obsolete declarations.
10126         (gmp_pi1_t, gmp_pi2_t): New types.
10127         (invert_pi1): New macro for computing 2/1 and 3/2 inverses.
10129 2009-10-23  Niels Möller  <nisse@lysator.liu.se>
10131         * gmp-impl.h (mpn_toom62_mul_itch): New function.
10133         * tests/mpn/t-toom53.c: New test program.
10134         * tests/mpn/t-toom62.c: New test program.
10136 2009-10-23  Torbjorn Granlund  <tege@gmplib.org>
10138         * mpn/generic/get_d.c: Fix code handling denorms for 64-bit machines.
10139         * tests/mpf/t-get_d.c (test_denorms): New function.
10141 2009-10-23  Niels Möller  <nisse@lysator.liu.se>
10143         * mpn/generic/toom52_mul.c (mpn_toom52_mul): Use supplied scratch
10144         space, not TMP_ALLOC. Interface change, now requires input sizes
10145         such that s + t >= 5.
10147         * gmp-impl.h (mpn_toom52_mul_itch): New function.
10149         * tests/mpn/t-toom52.c: New test program.
10151 2009-10-22  Torbjorn Granlund  <tege@gmplib.org>
10153         * mpn/x86_64/sqr_basecase.asm: Tune for speed and a 7% size decrease.
10155 2009-10-22  Niels Möller  <nisse@lysator.liu.se>
10157         * tests/mpn/t-toom44.c: New test program.
10158         * tests/mpn/t-toom33.c: New test program.
10160         * tests/mpn/toom-shared.h (main): Reorganized input generation.
10161         Users are now supposed to define macros MAX_AN, MIN_BN and MAX_BN.
10162         Updated existing toom test programs.
10164 2009-10-22  Torbjorn Granlund  <tege@gmplib.org>
10166         * tests/devel/try.c: Fix typos in last change.
10168 2009-10-21  Torbjorn Granlund  <tege@gmplib.org>
10170         * mpn/asm-defs.m4 (define_mpn): Add mullow_basecase.
10172         * tests/devel/try.c: Test mpn_mullow_n.
10174         * tests/refmpn.c (refmpn_mullow_n): New function.
10175         * tests/tests.h: Declare it.
10177 2009-10-21  Niels Möller  <nisse@lysator.liu.se>
10179         * tests/mpn/toom-shared.h (main): Check for writes outside of the
10180         product or scratch area.
10182         * gmp-impl.h (mpn_toom43_mul_itch): New function.
10184         * mpn/generic/toom43_mul.c (mpn_toom43_mul): Use supplied scratch
10185         space, not TMP_ALLOC. Interface change, now requires input sizes
10186         such that s + t >= 5.
10188 2009-10-20  Niels Möller  <nisse@lysator.liu.se>
10190         * tests/mpn/toom-shared.h (MIN_BLOCK): New constant, which can be
10191         overridden by users. Needed by t-toom42 and t-toom43.
10193         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-toom32,
10194         t-toom42 and t-toom43.
10195         * tests/mpn/t-toom43.c: New test program.
10196         * tests/mpn/t-toom42.c: New test program.
10197         * tests/mpn/t-toom32.c: New test program.
10199         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-toom22.
10200         * tests/mpn/t-toom22.c: New test file.
10201         * tests/mpn/toom-shared.h: New file. Test framework for Toom
10202         functions.
10204 2009-10-14  Niels Möller  <nisse@lysator.liu.se>
10206         * mpn/generic/hgcd.c (mpn_hgcd_itch): Thanks to the new
10207         mpn_matrix22_mul_strassen, the scratch need is reduced by 16%.
10209 2009-10-14  Marco Bodrato  <bodrato@mail.dm.unipi.it>
10211         * mpn/generic/matrix22_mul.c (mpn_matrix22_mul_strassen): New
10212         Strassen-like algorithm, to reduce the amount of temporary
10213         storage.
10214         (mpn_matrix22_mul_itch): Updated to reflect the reduced storage
10215         need.
10217 2009-10-03  Torbjorn Granlund  <tege@gmplib.org>
10219         * Rename mpn_addsub_n to mpn_add_n_sub_n.
10221 2009-10-01  Torbjorn Granlund  <tege@gmplib.org>
10223         * mpn/generic/tdiv_qr.c: Call mpn_divrem_1 and mpn_dc_div_qr instead of
10224         old functions.
10226         * mpn/generic/mul_n.c: Call toom22 and toom33 instead of old functions.
10228         * mpn/generic/toom42_mul.c (TOOM42_MUL_N_REC): Renamed from
10229         TOOM22_MUL_N_REC.  Unconditionally call the generic mpn_mul_n.
10230         * mpn/generic/toom32_mul.c: Analogous changes.
10232 2009-09-28  Niels Möller  <nisse@lysator.liu.se>
10234         * mpn/x86_64/invert_limb.asm: Rewrite. Exploit cancellation in the
10235         Newton iteration.
10237 2009-09-27  Niels Möller  <nisse@lysator.liu.se>
10239         * mpn/x86/invert_limb.asm: Reduce register usage. Eliminated $1
10240         arguments to add, sub and shift.
10242 2009-09-25  Niels Möller  <nisse@lysator.liu.se>
10244         * mpn/x86/invert_limb.asm: New file.
10246 2009-09-24  Torbjorn Granlund  <tege@gmplib.org>
10248         * mpn/generic/toom33_mul.c: Use new toom functions for all recursive
10249         products.
10250         * mpn/generic/toom3_sqr.c: Likewise.
10251         * mpn/generic/toom44_mul.c: Likewise.
10252         * mpn/generic/toom4_sqr.c: Likewise.
10254         * mpn/generic/add_n.c: Relax operand overlap ASSERTs.
10255         * mpn/generic/sub_n.c: Likewise.
10257 2009-09-15  Torbjorn Granlund  <tege@gmplib.org>
10259         Suggested by Uwe Mueller:
10260         * printf/doprnt.c: Use "%ld" for exponent printing.
10261         * printf/doprntf.c (__gmp_doprnt_mpf): Make expval "long".
10263 2009-09-14  Torbjorn Granlund  <tege@gmplib.org>
10265         * configure.in: Handle mingw64.
10266         * gmp-impl.h (gmp_intptr_t): Declare.
10267         * tests/amd64check.c (calling_conventions_values): Use CNST_LIMB.
10268         * tests/memory.c: Use gmp_intptr_t; print pointers using C90 "%p".
10269         * tests/misc.c: Use gmp_intptr_t.
10270         * tests/mpq/t-get_str.c: Print pointers using C90 "%p".
10272 2009-08-12  Torbjorn Granlund  <tege@gmplib.org>
10274         * mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Remove silly ASSERT code.
10276         * mpn/asm-defs.m4 (define_mpn): Remove mod_1s_1p, add mod_1_1p.
10278         * mpn/arm/invert_limb.asm: Complete rewrite.
10280         * longlong.h: Document LONGLONG_STANDALONE and NO_ASM.
10282 2009-08-05  Torbjorn Granlund  <tege@gmplib.org>
10284         * tests/mpz/dive_ui.c (check_random): Avoid zero divisors.
10286 2009-07-31  Torbjorn Granlund  <tege@gmplib.org>
10288         * mpn/generic/mod_1_1.c: Tweak to handle any modulus (possibility
10289         pointed out by Per Austrin).
10290         (mpn_mod_1_1p): Renamed from mpn_mod_1s_1p.
10291         (mpn_mod_1_1p_cps): Renamed from mpn_mod_1s_1p_cps.
10292         *mpn/generic/mod_1.c (mpn_mod_1): Reorganise to call mpn_mod_1_1p for
10293         any modulus.
10295 2009-07-28  Torbjorn Granlund  <tege@gmplib.org>
10297         * configure.in: Pass arch for x86 also in 64-bit mode.
10299 2009-07-26  Torbjorn Granlund  <tege@swox.com>
10301         * config.guess (_cpuid): Recognise more Intel "Core" processors.
10303 2009-07-13  Torbjorn Granlund  <tege@gmplib.org>
10305         * mpf/eq.c: Rewrite.
10307         * tests/mpf/t-eq.c: New test.
10309 2009-07-06  Torbjorn Granlund  <tege@gmplib.org>
10311         * gmp-impl.h (__mp_bases): Remove this alias.
10313         * mpf/get_str.c: Use less overflow prone expression for computing limb
10314         allocation.
10315         * mpz/inp_str.c: Likewise.
10316         * mpf/set_str.c: Likewise.
10317         * mpz/set_str.c: Likewise.
10319 2009-07-03  Niels Möller  <nisse@lysator.liu.se>
10321         * mpn/generic/gcd_1.c (mpn_gcd_1): Use masking tricks to reduce
10322         the number of branches in the loop.
10324 2009-06-28  Torbjorn Granlund  <tege@gmplib.org>
10326         * demos/factorize.c (factor_using_pollard_rho): Rewrite.
10328         * mpz/clears.c: New file.
10329         * mpq/clears.c: New file.
10330         * mpf/clears.c: New file.
10331         * gmp-h.in (mpz_clears, mpq_clears, mpf_clears): Declare.
10332         * mpz/Makefile.am: Add clears.c.
10333         * mpq/Makefile.am: Add clears.c.
10334         * mpf/Makefile.am: Add clears.c.
10335         * Makefile.am: Add these also to respective OBJECTS variables.
10336         * doc/gmp.texi: Document inits function and clears functions.
10338 2009-06-20  Torbjorn Granlund  <tege@gmplib.org>
10340         * mp-h.in (mp_bitcnt_t): Declare here too.
10342 2009-06-19  Torbjorn Granlund  <tege@gmplib.org>
10344         * mpq/inits.c: New file.
10345         * mpf/inits.c: New file.
10346         * gmp-h.in (mpz_inits, mpq_inits, mpf_inits): Declare .
10348         * mpn/generic/remove.c: New file.
10349         * configure.in (gmp_mpn_functions): Add remove.
10350         * gmp-impl.h (mpn_remove): Declare.
10352         * gmp-h.in (mp_bitcnt_t): New basic type.
10353         * mpn/generic/perfpow.c (mp_bitcnt_t): Remove private definition.
10355         * mpn/generic/bdiv_qr.c: Make it actually work.
10357         * mpn/x86_64/core2/aorsmul_1.asm: Rewrite to use shorter pipeline and
10358         to need fewer registers.
10360 2009-06-17  Torbjorn Granlund  <tege@gmplib.org>
10362         * mpn/x86_64/rsh1aors_n.asm: New file.
10363         * mpn/x86_64/rsh1add_n.asm: Remove.
10364         * mpn/x86_64/rsh1sub_n.asm: Remove.
10366         * mpz/inits.c: New file.
10368         * gen-trialdivtab.c: Wrap limb constants into CNST_LIMB.
10370         With Martin Boij:
10371         * mpn/generic/perfpow.c (binv_root, binv_sqroot): Change from being
10372         recursive to being iterative.
10373         (mpn_perfect_power_p): Reorganise temp memory usage to avoid a buffer
10374         overrun.  Trim allocation of next and prev.  Never create oversize
10375         products in the multiplicity binary search.
10377         * mpn/generic/dc_div_q.c: Add missing TMP_FREE.
10379 2009-06-16  Torbjorn Granlund  <tege@gmplib.org>
10381         Revert:
10382         * mpn/generic/perfpow.c (perfpow): Test exponents up to ub, inclusive.
10384 2009-06-16  Martin Boij  <mboij@kth.se>
10386         * mpn/generic/perfpow.c (logs): Use more conservative table.
10388 2009-06-15  Torbjorn Granlund  <tege@gmplib.org>
10390         * mpn/pa64/aors_n.asm: New file.
10391         * mpn/pa64/add_n.asm: Remove.
10392         * mpn/pa64/sub_n.asm: Remove.
10394         * mpn/generic/perfpow.c (perfpow): Test exponents up to ub, inclusive.
10396 2009-06-14  Torbjorn Granlund  <tege@gmplib.org>
10398         * mpn/x86_64/bdiv_q_1.asm: Optimise away a mov insn.
10399         * mpn/x86_64/dive_1.asm: Likewise.
10401         * mpn/generic/perfpow.c (binv_root): Use mpn_bdiv_q_1, not
10402         mpn_divexact_itch for 2-adic division.
10403         (all functions): Micro optimise.
10405         * Makefile.am (libmp_la_SOURCES): Add nextprime.c.
10407 2009-06-13  Torbjorn Granlund  <tege@gmplib.org>
10409         * gmp-h.in (mpn_perfect_power_p): Declare.
10410         * configure.in (gmp_mpn_functions): Add perfpow.
10411         * mpz/perfpow.c: Now trivial, simply calls mpn_perfect_power_p.
10413 2009-06-13  Martin Boij  <mboij@kth.se>
10415         * mpn/generic/perfpow.c: New file.
10416         * tests/mpz/t-perfpow.c: Rewrite.
10418 2009-06-12  Torbjorn Granlund  <tege@gmplib.org>
10420         * mpn/generic/bdiv_qr.c: New file.
10421         * mpn/generic/bdiv_q.c: New file.
10422         * configure.in (gmp_mpn_functions): Add bdiv_qr and bdiv_q.
10423         * gmp-impl.h: Declare new functions.
10425         * nextprime.c: New file.
10426         * gmp-impl.h (gmp_primesieve_t, gmp_init_primesieve, gmp_nextprime):
10427         Declare.
10428         * Makefile.am (libgmp_la_SOURCES): Add nextprime.c.
10430 2009-06-11  Torbjorn Granlund  <tege@gmplib.org>
10432         * mpn/generic/trialdiv.c: New file.
10433         * gen-trialdivtab.c: New file.
10434         * configure.in (gmp_mpn_functions): Add trialdiv.
10435         * gmp-impl.h (mpn_trialdiv): Declare
10436         * Makefile.am: Add rules for gen-trialdivtab and trialdiv.
10438         * longlong.h (arm count_leading_zeros): Define for armv5.
10440         * gmp-impl.h: Move down toom itch functions to after we've #defined
10441         all THRESHOLDs.
10443         * dumbmp.c (isprime): Replace with slightly less inefficient code.
10444         (mpz_tdiv_r): New function.
10446 2009-06-11  Niels Möller  <nisse@lysator.liu.se>
10448         Support for mpn_toom32_mul in speed:
10449         * tune/speed.c (routine): Added mpn_toom32_mul.
10450         * tune/speed.h (SPEED_ROUTINE_MPN_TOOM32_MUL): New macro.
10451         * tune/common.c (speed_mpn_toom32_mul): New function.
10453         * gmp-impl.h (mpn_toom32_mul_itch): Count scratch space needed
10454         for the calls to mpn_toom22_mul.
10455         (ABOVE_THRESHOLD): Moved this and related macros so it can be used
10456         by mpn_toom32_mul_itch.
10457         (mpn_toom22_mul_itch): Count scratch space for recursive calls.
10459 2009-06-11  Torbjorn Granlund  <tege@gmplib.org>
10461         * mpn/x86/k7/mod_1_4.asm: New file, mainly for k7, but perhaps useful
10462         also for k6 and non-sse p6.
10464 2009-06-10  Torbjorn Granlund  <tege@gmplib.org>
10466         * mpn/x86_64/mod_1_4.asm: Minor size reducing tweaks.
10468         * mpn/x86/mod_1.asm: Remove obsolete file.
10469         * mpn/x86/k7/mmx/mod_1.asm: Likewise.
10470         * mpn/x86/pentium4/sse2/mod_1.asm: Likewise.
10471         * mpn/x86/p6/mod_1.asm: Likewise.
10472         * mpn/x86/pentium/mod_1.asm: Likewise.
10474 2009-06-08  Niels Möller  <nisse@lysator.liu.se>
10476         * mpn/generic/toom4_sqr.c (mpn_toom4_sqr): Reorganized, to reduce
10477         the need for scratch space, and get rid of TMP_ALLOC. Also use
10478         mpn_toom_eval_dgr3_pm1.
10480         * mpn/generic/toom_interpolate_6pts.c (mpn_toom_interpolate_6pts):
10481         Stricter ASSERTs based on maximum size of polynomial coefficients.
10482         Improved comments on the signedness of intermediate values.
10484 2009-06-07  Torbjorn Granlund  <tege@gmplib.org>
10486         * mpn/generic/toom2_sqr.c: Make it actually work.
10488         * mpn/generic/toom3_sqr.c: Reduce local scratch space.
10490 2009-06-05  Torbjorn Granlund  <tege@gmplib.org>
10492         * mpn/generic/mul_fft.c (FFT_TABLE2_SIZE): Default to 200.
10493         (MUL_FFT_TABLE2_SIZE, SQR_FFT_TABLE2_SIZE): Let these decide
10494         FFT_TABLE2_SIZE if they are defined.
10495         (struct nk): Use bit field.
10497 2009-06-05  Niels Möller  <nisse@lysator.liu.se>
10499         * mpn/generic/toom44_mul.c (mpn_toom44_mult): Use
10500         mpn_toom_eval_dgr3_pm1.
10502         * mpn/generic/toom_eval_dgr3_pm1.c: New file.
10504         * mpn/generic/toom_interpolate_7pts.c (mpn_toom_interpolate_7pts):
10505         Minor cleanup, use mpn_add rather than mpn_add_n + MPN_INCR_U.
10507         * mpn/generic/toom44_mul.c (mpn_toom44_mul): Reorganized, to
10508         reduce the need for scratch space, and get rid of TMP_ALLOC.
10510 2009-06-05  Torbjorn Granlund  <tege@gmplib.org>
10512         * mpn/generic/toom_interpolate_7pts.c: Fall back mpn_divexact_byN to
10513         mpn_bdiv_q_1_pi1, if the latter is NATIVE.
10515 2009-06-04  Torbjorn Granlund  <tege@gmplib.org>
10517         * mpn/x86_64/bdiv_q_1.asm: New file.
10519         * configure.in (HAVE_NATIVE): Add recently added functions.
10520         (GMP_MULFUNC_CHOICES): Handle addlsh_n, sublsh_n, rsblsh_n.
10522         * tune/common.c (speed_mpn_bdiv_q_1, speed_mpn_bdiv_q_1_pi1):
10523         New functions.
10524         * tune/speed.c (routine): Add mpn_bdiv_q_1 and mpn_bdiv_q_1_pi1.
10525         * tune/speed.h (SPEED_ROUTINE_MPN_BDIV_Q_1_PI1): New #define.
10526         (SPEED_ROUTINE_MPN_BDIV_Q_1): Mew #define.
10528         * configure.in (gmp_mpn_functions): Add bdiv_q_1.
10529         * mpn/generic/bdiv_q_1.c: New file.
10530         * mpn/asm-defs.m4 (define_mpn): Add mpn_bdiv_q_1 and mpn_bdiv_q_1_pi1.
10531         * gmp-impl.h (mpn_bdiv_q_1, mpn_bdiv_q_1_pi1): Declare.
10533         * mpn/x86_64/lshift.asm: Cleanup.
10534         * mpn/x86_64/rshift.asm: Cleanup.
10536         * mpn/x86_64/addlsh1_n.asm: Removed.
10537         * mpn/x86_64/aorrlsh1_n.asm: Generalised addlsh1_n.asm to handle
10538         addlsh1_n and rsblsh1_n functionality.
10540         * tests/refmpn.c (refmpn_rsblsh1_n): New function.
10541         * tests/devel/try.c: Test mpn_rsblsh1_n.
10542         * tests/tests.h: Declare refmpn_rsblsh1_n.
10543         * tune/common.c (speed_mpn_rsblsh1_n): New function.
10544         * tune/speed.c (routine): Add mpn_rsblsh1_n.
10545         * tune/speed.h (mpn_rsblsh1_n): Declare.
10547         * configure.in (gmp_mpn_functions_optional): Add rsblsh1_n.
10548         (GMP_MULFUNC_CHOICES): Handle rsblsh1_n defined with a mulfunc.
10549         * mpn/asm-defs.m4 (define_mpn): Add rsblsh1_n.
10550         * gmp-impl.h (mpn_rsblsh1_n): Declare.
10552         * mpn/generic/toom32_mul.c: Consistently use TOOM22_MUL_N_REC.
10554 2009-06-03  Marco Bodrato  <bodrato@mail.dm.unipi.it>
10556         * mpn/generic/toom43_mul.c: New file.
10557         * mpn/generic/toom52_mul.c: New file.
10558         * mpn/generic/toom_interpolate_6pts.c: New file.
10560 2009-06-03  Torbjorn Granlund  <tege@gmplib.org>
10562         * configure.in (gmp_mpn_functions): Add toom43_mul, toom52_mul, and
10563         toom_interpolate_6pts, but also some previously forgotten functions.
10564         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Likewise.
10565         * gmp-impl.h: Declare new functions. Sort toom function declarations.
10567         * gmp-impl.h: Rename  toom4_* flags enum to toom7_*.  Relevant C files
10568         updated.
10570         * mpn/generic/toom_interpolate_7pts (divexact_2exp): Remove.
10572 2009-06-02  Torbjorn Granlund  <tege@gmplib.org>
10574         * demos/factorize.c: Add -q command line option.
10576 2009-06-02  Marco Bodrato  <bodrato@mail.dm.unipi.it>
10578         * mpn/generic/toom_interpolate_7pts.c: Streamline, resulting in speed
10579         improvements.
10581         * mpn/generic/toom_interpolate_5pts.c: Likewise, but also completely
10582         do away with explicit scratch space.
10583         * gmp-impl.h (mpn_toom_interpolate_5pts): Update prototype.
10585         * mpn/generic/mul_n.c (mpn_toom3_sqr_n, mpn_toom3_mul_n):
10586         Update toom_interpolate_5pts call without scratch space parameter.
10587         * mpn/generic/toom3_sqr.c: Likewise.
10588         * mpn/generic/toom42_mul.c: Likewise.
10589         * mpn/generic/toom33_mul.c: Likewise.
10591         * mpn/generic/toom33_mul.c: Reduce local scratch space.
10592         * mpn/generic/toom32_mul.c: Rewrite to not use local scratch space.
10594 2009-06-02  Torbjorn Granlund  <tege@gmplib.org>
10596         * mpn/generic/toom22_mul.c (TOOM22_MUL_MN_REC): New macro, use it for
10597         oo point.
10599 2009-06-01  Torbjorn Granlund  <tege@gmplib.org>
10601         * mpn/generic/mul.c: Loop to avoid excessive recursion in toom33 and
10602         toom44 slicing code.
10604         * mpz/remove.c: Correctly handle multiplicity that does not fit an int.
10606         * Makefile.am (dist-hook): Check library version consistency.
10608         * mpn/generic/mul.c: Rewrite.
10610 2009-05-29  Torbjorn Granlund  <tege@gmplib.org>
10612         * tests/mpz/t-divis.c (check_random): Create huge test operands.
10614         * mpn/generic/toom44_mul.c: Allocate temp space using one TMP_ALLOC
10615         call, not multiple TMP_SALLOC.
10616         * mpn/generic/toom4_sqr.c: Likewise.
10618         * gmp-impl.h (mpn_toom22_mul_itch): Replace totally wrong code.
10620         * mpn/generic/mullow_n.c: Relax overlap requirement implied by ASSERT.
10622         * mpn/generic/divis.c: Rewrite.
10624         * gmp-impl.h (mpn_mu_bdiv_qr): Now returns mp_limb_t.
10625         (mpn_toom2_sqr_itch): Simplify.
10627         * mpn/generic/mu_bdiv_qr.c: Implement properly.
10629 2009-05-27  Torbjorn Granlund  <tege@gmplib.org>
10631         * mpn/generic/mod_1_1.c: Add proper ASSERT functionality cps function.
10632         * mpn/generic/mod_1_2.c: Likewise.
10633         * mpn/generic/mod_1_3.c: Likewise.
10634         * mpn/generic/mod_1_4.c: Likewise.
10636         * tune: Add speed measuring of toom22, toom33, and toom44.
10638         * mpn/generic/toom22_mul.c: Handle potentially unbalanced coefficient
10639         product better.
10641 2009-05-26  Torbjorn Granlund  <tege@gmplib.org>
10643         * tests/mpz/t-mul.c (ref_mpn_mul): Use mpn_toom44_mul in FFT range for
10644         better huge-operands performance.
10646 2009-05-24  Torbjorn Granlund  <tege@gmplib.org>
10648         * acinclude.m4 (GMP_ASM_LSYM_PREFIX): Try "$L" too, before "$".
10650 2009-05-23  Torbjorn Granlund  <tege@gmplib.org>
10652         * gmp-impl.h (mpn_mod_1s_1p,mpn_mod_1s_2p,mpn_mod_1s_3p,mpn_mod_1s_4p):
10653         Declare using __GMP_ATTRIBUTE_PURE.
10655         * tune/tuneup.c (tune_mod_1): Specify check_size for measuring mod_1_N
10656         functions.
10657         (one): Remove redundant size loop exit condition.
10659 2009-05-20  Torbjorn Granlund  <tege@gmplib.org>
10661         * mpn/x86/pentium4/sse2/mod_1_4.asm: New file.
10662         * mpn/x86/p6/sse2/mod_1_4.asm: New file (grabbing pentium4 code).
10664 2009-05-18  Torbjorn Granlund  <tege@gmplib.org>
10666         * gmp-h.in (__GNU_MP_VERSION_MINOR): Bump to 4.
10667         (__GNU_MP_VERSION_PATCHLEVEL): Set to -1.
10669         * mpn/x86_64/mod_1_4.asm: New file.
10671         * mpn/asm-defs.m4: Correct names for mod_1_N functions.
10672         Add defines for corresponding cps functions.
10674         * mpn/generic/mod_1_2.c: Support any sizes > 1.
10675         * mpn/generic/mod_1_3.c: Likewise.
10676         * mpn/generic/mod_1_4.c: Likewise.
10678 2009-05-12  Torbjorn Granlund  <tege@gmplib.org>
10680         * Version 4.3.1 released.
10682 2009-05-11  Torbjorn Granlund  <tege@gmplib.org>
10684         * gmp-h.in (__GNU_MP_VERSION_MINOR): Bump.
10686         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*):
10687         Bump version info.
10689 2009-05-09  Torbjorn Granlund  <tege@gmplib.org>
10691         * tests/mpz: Add MPZ_CHECK_FORMAT to many tests.
10693 2009-05-07  Torbjorn Granlund  <tege@gmplib.org>
10695         * mpn/x86/pentium4/sse2/mul_basecase.asm: Avoid L(ret), "ret" is
10696         defined in x86-defs.m4.
10698 2009-05-06  Torbjorn Granlund  <tege@gmplib.org>
10700         * mpn/x86/p6/aors_n.asm: Use L() for labels.
10701         * mpn/x86/pentium4/sse2/addmul_1.asm: Likewise.
10702         * mpn/x86/pentium4/sse2/mul_1.asm: Likewise.
10703         * mpn/x86/pentium4/sse2/mul_basecase.asm: Likewise.
10704         * mpn/x86/pentium4/sse2/sqr_basecase.asm: Likewise.
10705         * mpn/x86_64/lshift.asm: Likewise.
10706         * mpn/x86_64/rshift.asm: Likewise.
10708         * tests/cxx/t-locale.cc (point_string): Declare as extern "C" to
10709         placate compilers that mangle variable names.
10711 2009-05-04  Torbjorn Granlund  <tege@gmplib.org>
10713         * tests/mpz/t-gcd.c: Generate operands that are multiple of each other.
10715 2009-05-01  Torbjorn Granlund  <tege@gmplib.org>
10717         * gmp-h.in (__GMP_EXTERN_INLINE): Support for more systems.
10718         (gmp_randinit_set): Add missing __GMP_DECLSPEC.
10720 2009-04-28  Torbjorn Granlund  <tege@gmplib.org>
10722         * mpn/generic/neg_n.c: New file.
10723         * configure.in (gmp_mpn_functions): Add neg_n.
10724         * mpn/asm-defs.m4 (define_mpn): Add neg_n.
10725         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Add neg_n.c.
10726         * gmp-h.in: Handle mpn_neg_n properly.
10728         * mpn/generic/toom_interpolate_7pts.c (divexact_2exp): Nailify.
10730         * mpn/generic/gcdext.c: Change some MPN_NORMALIZE to
10731         MPN_NORMALIZE_NOT_ZERO.
10732         * mpn/generic/gcdext_lehmer.c: Likewise.
10733         Add a MPN_NORMALIZE_NOT_ZERO.
10735         * mpn/generic/binvert.c: Remove own mpn_neg_n.
10737         * tests/mpz/t-gcd.c: Add some MPZ_CHECK_FORMAT calls.
10739 2009-04-27  Torbjorn Granlund  <tege@gmplib.org>
10741         * mpn/Makefile.am (TARG_DIST): Add minithres.
10743         * mpn/generic/bdiv_dbm1c.c: Handle nails.
10745 2009-04-26  Torbjorn Granlund  <tege@gmplib.org>
10747         * config.guess: Recognise more POWER processor types.
10749 2009-04-25  Torbjorn Granlund  <tege@gmplib.org>
10751         * mpn/x86/pentium4/sse2/popcount.asm: Work around Apple reloc bug.
10752         * mpn/x86/darwin.m4: Define symbol "DARWIN".
10754 2009-04-19  Torbjorn Granlund  <tege@gmplib.org>
10756         * mpn/generic/powm.c (mpn_redc_n): Use ASSERT_ALWAYS, not abort().
10757         * mpn/generic/powm_sec.c: Likewise.
10759         * mpn/powerpc64/aix.m4 (EXTERN_FUNC): New define.  Add dummy variants
10760         for other m4 files.
10761         * mpn/powerpc64/mode64/divrem_1.asm: Use EXTERN_FUNC.
10762         * mpn/powerpc64/mode64/divrem_1.asm: Likewise.
10764 2009-04-16  Torbjorn Granlund  <tege@gmplib.org>
10766         * mpn/x86_64/x86_64-defs.m4 (JUMPTABSECT): New define.
10767         * mpn/x86_64/darwin.m4: Likewise.
10768         * mpn/x86_64/sqr_basecase.asm: Rework switch code using JUMPTABSECT.
10770         * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer):
10771         Remove an unused variable.
10773         * mpn/x86/x86-defs.m4 (LEA): Get SIZE arguments right.
10775 2009-04-14  Torbjorn Granlund  <tege@gmplib.org>
10777         * Version 4.3.0 released.
10779         * scanf/doscan.c (__gmp_doscan): Pad 3-operand scanf call with dummy
10780         argument.
10781         * scanf/sscanffuns.c (scan): Disable vsscanf variant for now.
10783 2009-04-13  Torbjorn Granlund  <tege@gmplib.org>
10785         * scanf/sscanffuns.c (scan): Rewrite to use stdarg.
10787         * tests/mpz/t-root.c: Rewrite.  Add unconditional gcc 4.3.2 tests.
10789 2009-04-09  Torbjorn Granlund  <tege@gmplib.org>
10791         * mpn/generic/powm.c: New file.
10792         * mpn/generic/powlo.c: New file.
10793         * mpn/generic/powm_sec.c: New file.
10794         * configure.in (gmp_mpn_functions): List new functions.
10796 2009-04-08  Torbjorn Granlund  <tege@gmplib.org>
10798         * mpz/urandomm.c: Amend last fix.
10800 2009-04-06  Torbjorn Granlund  <tege@gmplib.org>
10802         * configure.in: Support Sun cc for x86_64.
10804         * mpz/urandomm.c: Handle operand overlap.
10806 2009-03-11  Torbjorn Granlund  <tege@gmplib.org>
10808         * configure.in (powerpc): Brave removing -Wa,-mppc64, in the hope that
10809         GCC now passes the proper options.
10811 2009-03-09  Torbjorn Granlund  <tege@gmplib.org>
10813         * mpn/x86_64/divrem_1.asm: Add a nop to save a cycle in unnormalised
10814         case.
10816 2009-03-05  Torbjorn Granlund  <tege@gmplib.org>
10818         * ia64/gmp-mparam.h, arm/gmp-mparam.h, x86/p6/mmx/gmp-mparam.h,
10819         pa32/hppa2_0/gmp-mparam.h sparc32/v9/gmp-mparam.h: Update.
10821 2009-03-03  Torbjorn Granlund  <tege@gmplib.org>
10823         * mpn/ia64/bdiv_dbm1c.asm: Accept/return carry.
10825 2009-03-02  Torbjorn Granlund  <tege@gmplib.org>
10827         * configure.in (64-bit sparc/solaris): Pass -xO3, not -O3 to solaris
10828         system compiler.
10830 2009-03-01  Torbjorn Granlund  <tege@gmplib.org>
10832         * longlong.h (mips, powerpc): Provide assembly-free umul_ppmm for newer
10833         gcc.
10835 2009-02-04  Torbjorn Granlund  <tege@gmplib.org>
10837         * mpn/generic/redc_2.c: Remove code for testing and timing.  Update
10838         to current FSF header.
10839         * mpn/generic/redc_1.c: Update to current FSF header.
10841 2009-01-21  Torbjorn Granlund  <tege@gmplib.org>
10843         * mpz/powm.c (redc): Remove.
10844         (mpz_powm): Use mpn_redc_1 instead of redc.
10846         * tests/mpz/t-powm.c: Rewrite reference code.
10848 2009-01-18  Torbjorn Granlund  <tege@gmplib.org>
10850         * tests/mpz: Increase reps for many tests.
10852         * mpn/generic/rootrem.c (mpn_rootrem_internal): Use MPN_DECR_U instead of
10853         mpn_sub_1 (works around gcc 4.3 bugs and is also faster).
10855 2009-01-16  Torbjorn Granlund  <tege@gmplib.org>
10857         * tests/tests.h: Declare refmpn_divrem_2.
10859 2009-01-15  Torbjorn Granlund  <tege@gmplib.org>
10861         * mpz/perfpow.c: Add TMP_FREE before every return statement.
10863         * mpn/generic/rootrem.c (mpn_rootrem_internal): Add a missing TMP_FREE.
10865         * configure.in (gcc_cflags, gcc_64_cflags): Revert from -O3 to -O2,
10866         the change was accidental and cause too much miscompilation.
10868 2009-01-14  Torbjorn Granlund  <tege@gmplib.org>
10870         * tune/tuneup.c (tune_mod_1): Run MOD_1_x_THRESHOLD tests also when
10871         longlong.h specified UDIV_PREINV_ALWAYS.
10873         * mpn/generic/mod_1.c (mpn_mod_1): Properly check for normalisation
10874         divisor.
10876 2009-01-13  Torbjorn Granlund  <tege@gmplib.org>
10878         * tune/tuneup.c (tune_mod_1): Tune for MOD_1_1_THRESHOLD,
10879         MOD_1_2_THRESHOLD, and MOD_1_4_THRESHOLD.
10881         * mpn/generic/mod_1.c: Rewrite.
10882         * mpn/generic/mod_1_1.c: New file.
10883         * mpn/generic/mod_1_2.c: New file.
10884         * mpn/generic/mod_1_3.c: New file.
10885         * mpn/generic/mod_1_4.c: New file.
10886         * configure.in (gmp_mpn_functions): Add mod_1_*.
10887         * mpn/asm-defs.m4 (define_mpn): Add mod_1_*.
10888         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Add mod_1_*.c.
10889         * gmp-impl.h: Declare new mpn_mod_1s_* functions and associated
10890         THRESHOLD macros.
10891         (udiv_rnd_preinv): New macro.
10893 2009-01-12  Torbjorn Granlund  <tege@gmplib.org>
10895         * tune/tuneup.c (tune_gcd_dc,tune_gcdext_dc): Lower step_factor to 0.1.
10897 2009-01-08  Torbjorn Granlund  <tege@gmplib.org>
10899         * tests/mpz/t-nextprime.c: New test file.
10900         * tests/mpz/Makefile.am (check_PROGRAMS): Add t-nextprime.
10902         From Niels Möller:
10903         * mpz/nextprime.c: Handle large prime gaps by limiting incr.
10905 2009-01-04  Torbjorn Granlund  <tege@gmplib.org>
10907         * mpz/and.c, mpz/ior.c, mpz/xor.c: Re-read only necessary source
10908         pointers after reallocation.  Misc cleanup.
10910         * gmp-impl.h (MPN_TOOM44_MAX_N): New define, replaces MPN_TOOM3_MAX_N.
10912         * mpn/x86/fat/diveby3.c: New file.
10914 2008-12-30  Niels Möller  <nisse@lysator.liu.se>
10916         * doc/gmp.texi (Greatest Common Divisor Algorithms): Updated
10917         section on GCD algorithms.
10919 2008-12-29  Torbjorn Granlund  <tege@gmplib.org>
10921         * doc/gmp.texi (Multiplication Algorithms): Add descriptions of Toom-4
10922         and unbalanced multiplication.
10923         (Radix to Binary): Add warning that text is outdated,
10924         (Contributors): Fix typos.
10926         * mpn/generic/toom*.c: Use coherent MAYBE_ macros for trimming
10927         unreachable recursive functions.
10928         * gmp-impl.h: Update toom itch functions.
10930         * mpn/x86_64/sqr_basecase.asm: Slightly increase stack allocation, to
10931         placate tuneup.
10933 2008-12-28  Torbjorn Granlund  <tege@gmplib.org>
10935         * mpn/x86_64/pentium4/aors_n.asm: Tune prologue code.
10937         * mpn/x86_64/pentium4/aorslsh1_n.asm: New file.
10939         * mpn/x86_64/darwin.m4: Define symbol "DARWIN".
10940         * mpn/x86_64/invert_limb.asm: Work around darwin quirks.
10942         * mpn/x86_64/sqr_basecase.asm: Further optimize, support Darwin.
10944         * mpn/x86_64/invert_limb.asm: New file.
10946 2008-12-27  Torbjorn Granlund  <tege@gmplib.org>
10948         * mpn/x86_64/core2/aorslsh1_n.asm: New file.
10950 2008-12-26  Torbjorn Granlund  <tege@gmplib.org>
10952         * mpz/perfpow.c: Handle negative arguments properly.
10953         * tests/mpz/t-perfpow.c: New file.
10954         * tests/mpz/Makefile.am (check_PROGRAMS): Add t-perfpow.
10956 2008-12-23  Torbjorn Granlund  <tege@gmplib.org>
10958         * tests/mpz/t-mul.c (dump_abort): Improve error message.
10960         * gcd.c gcd_subdiv_step.c gcdext.c gcdext_subdiv_step.c:
10961         Remove private mpn_zero_p.
10963         * tune/tuneup.c (tune_mul): Tune for MUL_TOOM44_THRESHOLD.
10964         (tune_sqr): Tune for SQR_TOOM4_THRESHOLD.
10966         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add toom44_mul.c and
10967         toom4_sqr.c.
10969         * configure.in (gmp_mpn_functions): Toom function updates.
10971         * Rename mpn/mul_toomMN.c to mpn/toomMN_mul.c.  Function names changed
10972         accordingly.
10974         * mpn/toomMN_mul.c: Add scratch parameter.  Do recursive multiplies
10975         properly.  Misc tuning.  Remove CHECK and TIMING code.
10977         * mpn/toom2_sqr.c, mpn/toom3_sqr.c, mpn/toom4_sqr.c: New files.
10979         * gmp-impl.h (mpn_toomMN_mul_itch): Several new functions.
10980         (mpn_zero_p): New functions.
10981         Add various TOOM4/TOOM44 related parameters.
10982         Update mpn_toomMN_mul prototypes.
10984         * mpn/generic/mul_n.c (mpn_mul_n): Call mpn_toom44_mul.  Use TMP_BALLOC
10985         instead of malloc.
10986         (mpn_sqr_n): Analogous changes.
10988         * mpn/generic/mul.c: Update unbalanced toom code to pass scratch space.
10990 2008-12-21  Torbjorn Granlund  <tege@gmplib.org>
10992         * mpz/nextprime.c: Add TMP_SDECL/MARK/FREE.
10994 2008-12-20  Torbjorn Granlund  <tege@gmplib.org>
10996         * mpn/generic/sqrtrem.c (mpn_sqrtrem1): Rewrite, improve interface.
10997         (invsqrttab): New table, remove table approx_tab.
10998         (mpn_sqrtrem2): Optimize, update mpn_sqrtrem1 call.
10999         (mpn_sqrtrem): Update mpn_sqrtrem1 call.
11001 2008-12-18  Torbjorn Granlund  <tege@gmplib.org>
11003         * mpz/nextprime.c: Run 10 mpz_millerrabin tests (was 5).
11004         Give credit to authors.
11006         * mpn/x86_64/redc_1.asm: Align stack as mandated by ABI.
11008         * mpn/x86_64/divrem_2.asm: Add some comments.
11010         * mpn/x86_64/darwin.m4: New file.
11011         * configure.in: Use x86_64/darwin.m4.
11013 2008-12-15  Torbjorn Granlund  <tege@gmplib.org>
11015         * doc/projects.html: Remove GCD and division projects, update text on
11016         multiplication.
11018         * doc/tasks.html: Add a caution about that the file is somewhat
11019         outdated.
11021 2008-12-14  Torbjorn Granlund  <tege@gmplib.org>
11023         * mpn/alpha/ev6/aorsmul_1.asm: New file (same code for mpn_addmul_1,
11024         much improved for mpn_submul_1).
11025         * mpn/alpha/ev6/addmul_1: File removed.
11026         * mpn/alpha/ev6/submul_1: File removed.
11028 2008-12-09  Torbjorn Granlund  <tege@gmplib.org>
11030         From David Harvey:
11031         * mpn/x86_64/mul_basecase.asm: Further tweaks for code size and speed.
11033         * mpn/powerpc64/mode64/divrem_1.asm: Rewrite.
11035         * mpn/powerpc64/mode64/mul_basecase.asm: New file.
11037 2008-12-08  Torbjorn Granlund  <tege@gmplib.org>
11039         * mpn/powerpc64/mode64/gmp-mparam.h: New file.
11041         * gmp-impl.h: Additional cleanups.
11042         (mpn_set_str_compute_powtab): New prototype.
11043         (mpn_powm, mpn_powlo): New prototypes.
11045         * mpz/pow_ui.c: Handle some small exponents locally.
11047 2008-12-07  Torbjorn Granlund  <tege@gmplib.org>
11049         * mpn/generic/set_str.c: Remove prototypes (they are in gmp-impl.h).
11051         * tune/set_strs.c, tune/set_strb.c: Make prototypes effective by moving
11052         the #define mpn_set_str* before including gmp-impl.h.
11054         * All files: Change _PROTO => __GMP_PROTO.
11056         * tune/speed.c (routine): Remove non-working choice mpn_set_str_subquad.
11057         * tune/common.c (speed_mpn_dc_set_str): Remove, it is broken.
11059         * mpn/generic/toom_interpolate_7pts.c (divexact_2exp): Make this static,
11060         and inline it.
11062         * gmp-impl.h: Major cleanup.
11063         (Remove formal parameter names.  Use __GMP_PROTO consistently.  Move
11064         __GMP_PROTO and __MPN use to adjacent lines for declared function.
11065         Fix typos.  Remove code inside #if 0.)
11067         * configure.in (gmp_mpn_functions): Add mul_toom33.  Reformat.
11069 2008-12-05  Torbjorn Granlund  <tege@gmplib.org>
11071         * mpn/generic/redc_1.c: New file.
11072         * mpn/generic/redc_2.c: New file.
11074         * configure.in (gmp_mpn_functions): List redc_1 and redc_2.
11075         (HAVE_NATIVE): Likewise.
11077         * tune/common.c (speed_mpn_redc_1): Renamed from speed_redc.
11078         * tune/speed.c (routine): Remove "redc", and "mpn_redc_1".
11079         * tune/speed.h (SPEED_ROUTINE_REDC_1): Renamed from SPEED_ROUTINE_REDC.
11080         Updated call.
11081         * tune/tuneup.c (tune_powm): Update redc call.
11083 2008-12-04  Torbjorn Granlund  <tege@gmplib.org>
11085         * mpn/x86_64/sqr_basecase.asm: Inline a combined diagonal product code
11086         and addlsh1 loop.  Misc cleanup.
11088 2008-12-02  Torbjorn Granlund  <tege@gmplib.org>
11090         * mpn/x86_64/sqr_basecase.asm: New file.
11092 2008-11-30  Torbjorn Granlund  <tege@gmplib.org>
11094         * mpn/generic/sqr_basecase.c: Fix typo in mpn_addmul_2s variant.
11096 2008-11-28  Torbjorn Granlund  <tege@gmplib.org>
11098         * mpn/x86_64/redc_1.asm: Rewrite.
11100 2008-11-27  Torbjorn Granlund  <tege@gmplib.org>
11102         * tests/refmpn.c (refmpn_redc_1): New function.
11104 2008-11-25  Torbjorn Granlund  <tege@gmplib.org>
11106         * mpn/x86/k7/aorsmul_1.asm: Actually handle mpn_submul_1.
11108 2008-11-23  Torbjorn Granlund  <tege@gmplib.org>
11110         * mpn/x86_64/divrem_1.asm: Rewrite.
11112         * alpha/divrem_2.asm: New file.
11113         * powerpc32/divrem_2.asm: New file.
11114         * powerpc64/mode64/divrem_2.asm: New file.
11115         * x86/divrem_2.asm: New file.
11116         * x86_64/divrem_2.asm: New file.
11117         * tests/refmpn.c (refmpn_divrem_2): New function.
11119 2008-11-22  Torbjorn Granlund  <tege@gmplib.org>
11121         * mpn/x86/k7/mul_1.asm: Rewrite for smaller size and better speed.
11122         * mpn/x86/k7/aorsmul_1.asm: Likewise.
11124         * acinclude.m4 (GMP_VERSION): Include last component even when zero.
11126 2008-11-21  Torbjorn Granlund  <tege@gmplib.org>
11128         * mpn/x86_64/README: Rewrite.
11130         * tests/devel/try.c (malloc_region, mprotect_maybe): Add casts for
11131         printf type correctness.
11133         * gmp-h.in (__GNU_MP_VERSION_MINOR): Bump.
11135         * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*):
11136         Bump version info.
11138 2008-11-20  Torbjorn Granlund  <tege@gmplib.org>
11140         * gmp-impl.h: Rename modlimb_invert to binvert_limb.
11141         * tune/speed.h: Likewise.
11142         * tune/modlinv.c: Likewise.
11143         * tune/common.c: Likewise.
11144         * tests/t-modlinv.c: Likewise.
11145         * tests/t-constants.c: Likewise.
11146         * mpn/sparc64/mode1o.c: Likewise.
11147         * mpn/alpha/dive_1.c: Likewise.
11148         * mpn/sparc64/dive_1.c: Likewise.
11149         * mpn/generic/mode1o.c: Likewise.
11150         * mpn/generic/dive_1.c: Likewise.
11151         * mpn/generic/bdivmod.c: Likewise.
11152         * mpn/alpha/mode1o.asm: Likewise.
11153         * mpn/asm-defs.m4: Likewise.
11154         * mpn/ia64/mode1o.asm: Likewise.
11155         * mpn/powerpc32/README: Likewise.
11156         * mpn/powerpc32/mode1o.asm: Likewise.
11157         * mpn/powerpc64/mode64/dive_1.asm: Likewise.
11158         * mpn/powerpc64/mode64/mode1o.asm: Likewise.
11159         * mpn/x86/dive_1.asm: Likewise.
11160         * mpn/x86/k6/mmx/dive_1.asm: Likewise.
11161         * mpn/x86/k6/mode1o.asm: Likewise.
11162         * mpn/x86/k7/dive_1.asm: Likewise.
11163         * mpn/x86/k7/mode1o.asm: Likewise.
11164         * mpn/x86/p6/dive_1.asm: Likewise.
11165         * mpn/x86/p6/mode1o.asm: Likewise.
11166         * mpn/x86/pentium/dive_1.asm: Likewise.
11167         * mpn/x86/pentium/mode1o.asm: Likewise.
11168         * mpn/x86/pentium4/sse2/dive_1.asm: Likewise.
11169         * mpn/x86/pentium4/sse2/mode1o.asm: Likewise.
11170         * mpn/x86_64/dive_1.asm: Likewise.
11171         * mpn/x86_64/mode1o.asm: Likewise.
11173         * mpn/x86_64/aors_n.asm: Replace with slightly faster, more alignment
11174         neutral loop.
11176 2008-11-18  Torbjorn Granlund  <tege@gmplib.org>
11178         * configure.in: Remove gcd_finda related declarations.
11179         * gmp-impl.h (mpn_gcd_finda): Remove declaration.
11180         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Remove gcd_finda.
11181         * mpn/asm-defs.m4: Remove define_mpn(gcd_finda).
11182         * mpn/x86/k6/gcd_finda.asm: Remove file.
11183         * tests/devel/try.c (param_init): Remove mpn_gcd_finda.
11184         (choice_array): Remove mpn_gcd_finda.
11185         * tests/mpn/t-instrument.c (check): Remove testing of mpn_gcd_finda.
11186         * tests/refmpn.c (refmpn_gcd_finda): Remove.
11187         * tests/tests.h (refmpn_gcd_finda): Remove declaration.
11188         * tune/common.c (speed_mpn_gcd_finda): Remove.
11189         * tune/gcd_finda_gen.c: Remove file.
11190         * tune/speed.h (speed_mpn_gcd_finda): Remove declaration.
11191         * tune/speed.c (routine): Remove mpn_gcd_finda entry.
11193         * tests/mpz/t-powm.c: Print test number when failing a test.
11195         * mpn/x86_64/redc_1.asm (CALL): Move from here...
11196         * mpn/x86_64/x86_64-defs.m4: ...to here.
11198         * gmp-impl.h (mpn_jacobi_base): Remove parameter names.
11200 2008-11-11  Torbjorn Granlund  <tege@gmplib.org>
11202         * tests/mpf/t-conv.c: Add some specific tests, supplementing the random
11203         tests.
11205 2008-11-09  Torbjorn Granlund  <tege@gmplib.org>
11207         * mpf/set_str.c: Default 'base' before letting exp_base inherit it.
11209         * tests/cxx/t-prec.cc: Use the right precision for all float constants.
11211 2008-11-08  Torbjorn Granlund  <tege@gmplib.org>
11213         * doc/gmp.texi (Float Comparison): Update mpf_eq documentation.
11215         * mpf/eq.c: Compare the right number of bits.
11217 2008-11-02  Torbjorn Granlund  <tege@gmplib.org>
11219         Undo, it made testing too slow:
11220         * tests/mpz/t-mul.c: Use slower geometric progression for operand
11221         sizes.
11223         * mpn/x86/k7/mod_34lsub1.asm: Use movzb for masking low 8 bits.
11225 2008-10-31  Niels Möller  <nisse@lysator.liu.se>
11227         * mpn/generic/hgcd2.c (div1): New function (taken from old gcdext
11228         implementation)
11229         (mpn_hgcd2): Use single precision for the second half of the work.
11231 2008-10-30  Torbjorn Granlund  <tege@gmplib.org>
11233         * mpn/x86/p6/sse2/gmp-mparam.h: New file.
11235 2008-10-29  Torbjorn Granlund  <tege@gmplib.org>
11237         * configure.in (x86 fat_path): Add "x86/p6/sse2".
11239         * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Recognize sse2 capable p6
11240         (pentiumm, core2).
11242         * mpn/x86/p6/sse2/mul_1.asm: New file.
11243         * mpn/x86/p6/sse2/addmul_1.asm: New file.
11244         * mpn/x86/p6/sse2/submul_1.asm: New file.
11245         * mpn/x86/p6/sse2/mul_basecase.asm: New file.
11246         * mpn/x86/p6/sse2/sqr_basecase.asm: New file.
11247         * mpn/x86/p6/sse2/popcount.asm: New file.
11249         * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Handle "extended" fields for
11250         model and family.
11252 2008-10-28  Torbjorn Granlund  <tege@gmplib.org>
11254         From Mickael Gastineau:
11255         * gmp-h.in (gmp_urandomm_ui, gmp_urandomb_ui): Add __GMP_DECLSPEC.
11257 2008-10-27  Torbjorn Granlund  <tege@gmplib.org>
11259         * gmp-h.in (mpn_gcdext_1): Remove bogus __GMP_ATTRIBUTE_PURE.
11261 2008-10-27  Niels Möller  <nisse@lysator.liu.se>
11263         * tune/common.c (speed_mpn_hgcd): Call mpn_hgcd_matrix_init once
11264         for each call to mpn_hgcd.
11265         (speed_mpn_hgcd_lehmer): Likewise.
11267 2008-10-26  Torbjorn Granlund  <tege@gmplib.org>
11269         * configure.in: Point to p6/sse2 for pentiumm and core2.
11271         * gmp-impl.h (mpn_add_nc, mpn_sub_nc): Move these macros to after fat
11272         definitions.
11274         * tune/common.c, tune/speed.c, tune/speed.h:
11275         Add speed measurement of mpn_bdiv_dbm1c.
11277 2008-10-24  Torbjorn Granlund  <tege@gmplib.org>
11279         * mpn/x86_64/gmp-mparam.h (MUL_FFT_TABLE2, SQR_FFT_TABLE2): Extend.
11281         * mpz/nextprime.c: Move declarations to function beginning.
11283 2008-10-23  Niels Möller  <nisse@lysator.liu.se>
11285         * gmp-impl.h (DECL_gcdext_1): Deleted.
11287 2008-10-22  Torbjorn Granlund  <tege@gmplib.org>
11289         * mpn/x86_64/atom/aors_n.asm: New file.
11290         * mpn/x86_64/atom/gmp-mparam.h: New file.
11292 2008-10-21  Torbjorn Granlund  <tege@gmplib.org>
11294         With Neils Möller:
11295         * mpz/nextprime.c: Rewrite.
11297         * tests/devel/try.c (main): Use strtol for 's' and 'S' optargs.
11299         * mpn/x86_64/pentium4/rshift.asm: Misc cleanups.
11300         * mpn/x86_64/pentium4/lshift.asm: Likewise.
11302         * mpn/x86_64/pentium4/aors_n.asm: Use fewer registers.
11304         * configure.in: Set up specific path for x86_64/atom.
11306 2008-10-21  Niels Möller  <nisse@lysator.liu.se>
11308         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Removed
11309         qstack.c.
11310         * mpn/generic/qstack.c: Deleted obsolete file.
11312 2008-10-20  Torbjorn Granlund  <tege@gmplib.org>
11314         * mpn/x86_64/core2/aorsmul_1.asm: New file.
11316 2008-10-19  Torbjorn Granlund  <tege@gmplib.org>
11318         * mpn/x86_64/aors_n.asm: Remove redundant MULFUNC_PROLOGUE.
11320         * gmp-impl.h (popc_limb): Remove redundant checks of GMP_LIMB_BITS
11321         inside several of these macros.
11323 2008-10-17  Torbjorn Granlund  <tege@gmplib.org>
11325         * tests/mpz/t-mul.c: Use slower geometric progression for operand
11326         sizes.  Do every other tests for same size operands.
11328 2008-10-15  Torbjorn Granlund  <tege@gmplib.org>
11330         * mpn/x86_64/mul_basecase.asm: Simplify addressing in epilogue.
11332         * mpn/mips64/divrem_1.asm: Remove file, it is n32-only, and uses an old
11333         algorithm.
11335         * config.guess, config.sub, configure.in: Support Intel Atom processor.
11337 2008-10-10  Torbjorn Granlund  <tege@gmplib.org>
11339         * mpq/mul.c: Fix typo in last change.
11341 2008-10-09  Torbjorn Granlund  <tege@gmplib.org>
11343         * tests/refmpn.c (refmpn_sb_divrem_mn): Work around a gcc bug.
11345 2008-10-08  Torbjorn Granlund  <tege@gmplib.org>
11347         * mpq/mul.c: Use TMP_ALLOC.  Cleanup.
11348         * mpq/div.c: Likewise.
11350         * mpn/x86_64/mul_basecase.asm: Use lea directly for loading entry point
11351         addresses.
11353 2008-10-09  Niels Möller  <nisse@lysator.liu.se>
11355         * mpn/x86/k7/gmp-mparam.h: Updated GCD-related values.
11357 2008-10-05  Torbjorn Granlund  <tege@gmplib.org>
11359         * mpn/generic/mul_fft.c (mpn_mul_fft_internal): Do store
11360         mpn_fft_norm_modF return value, if (rec).
11362 2008-10-04  Torbjorn Granlund  <tege@gmplib.org>
11364         * mpn/x86_64/aorsmul_1.asm: Replace with faster code.
11365         * mpn/x86_64/mul_1.asm: Likewise.
11366         * mpn/x86_64/addmul_2.asm: Likewise.
11367         * mpn/x86_64/mul_2.asm: Likewise.
11368         * mpn/x86_64/mul_basecase.asm: Likewise.
11370 2008-10-02  Torbjorn Granlund  <tege@gmplib.org>
11372         * mpn/minithres/gmp-mparam.h: Update FFT values.
11374 2008-10-02  Niels Möller  <nisse@lysator.liu.se>
11376         * hgcd.c (mpn_hgcd_matrix_mul): Fixed normalization bug.
11378 2008-09-24  Torbjorn Granlund  <tege@gmplib.org>
11380         * configure.in: Handle --enable-minithres.
11381         * mpn/minithres/gmp-mparam.h: Update all values.
11383 2008-09-22  Torbjorn Granlund  <tege@gmplib.org>
11385         * tune/speed.c (routine): New entry for mpn_mul.
11386         * tune/speed.h (SPEED_ROUTINE_MPN_MUL): Renamed from
11387         SPEED_ROUTINE_MPN_MUL_BASECASE.
11388         (speed_mpn_mul): Renamed from speed_mpn_mul_basecase.
11389         (SPEED_ROUTINE_MPN_MUL): Allocate our own memory of xp operand.
11391         * tune/common.c: Corresponding changes.
11393 2008-09-22  Niels Möller  <nisse@lysator.liu.se>
11395         * mpn/generic/gcdext.c (hgcd_mul_matrix_vector): New function,
11396         replaces addmul2_n. Needs less copying.
11397         (mpn_gcdext): Use hgcd_mul_matrix_vector. Updated for interface
11398         change in mpn_gcdext_subdiv_step
11400         * mpn/generic/hgcd.c (hgcd_matrix_mul_1): Rewritten to use
11401         mpn_hgcd_mul_matrix1_vector.
11402         (hgcd_step): Updated for interface change in
11403         mpn_hgcd_mul_matrix1_inverse_vector.
11405         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Updated for
11406         interface changes in mpn_hgcd_mul_matrix1_vector,
11407         mpn_hgcd_mul_matrix1_inverse_vector and mpn_gcdext_subdiv_step.
11409         * mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer_n): Updated for
11410         interface change in mpn_hgcd_mul_matrix1_inverse_vector.
11412         * mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step): Use
11413         separate scratch arguments for the quotient and for the cofactor
11414         update.
11416         * mpn/generic/hgcd2.c (mpn_hgcd_mul_matrix1_vector): Interface
11417         change. Store first element in rp and leave ap unmodified. No
11418         additional scratch space or copying needed. Callers that require
11419         modification in place still need to copy one of the inputs.
11420         (mpn_hgcd_mul_matrix1_inverse_vector): Likewise.
11422 2008-09-22  Niels Möller <nisse@lysator.liu.se>  <nisse@king.swox.se>
11424         * mpn/generic/hgcd.c (hgcd_matrix_mul_1): Use mpn_addaddmul_1msb0.
11425         * mpn/generic/hgcd2.c (mpn_hgcd_mul_matrix1_vector): Likewise.
11427         * mpn/generic/gcd.c: Use libspeed for timing measurements.
11429         * gmp-impl.h: Declare mpn_addaddmul_1msb0.
11430         * mpn/asm-defs.m4: Added addaddmul_1msb0.
11431         * mpn/x86_64/addaddmul_1msb0.asm: New file.
11432         * configure.in (gmp_mpn_functions_optional): Added
11433         addaddmul_1msb0.
11434         (HAVE_NATIVE): List addaddmul_1msb0.
11436 2008-09-21  Torbjorn Granlund  <tege@gmplib.org>
11438         * mpn/generic/get_str.c (GET_STR_DC_THRESHOLD): Remove default.
11439         (GET_STR_PRECOMPUTE_THRESHOLD): Likewise.
11440         Misc code cleanups.
11442         * gmp-impl.h (mpn_dc_set_str_itch): Allocate GMP_LIMB_BITS more limbs.
11444         Revert:
11445         * mpn/generic/set_str.c:
11446         (mpn_dc_set_str): Remove impossible case, replace by an ASSERT.
11448 2008-09-18  Torbjorn Granlund  <tege@gmplib.org>
11450         * mpn/alpha/ev6/gmp-mparam.h (DIVEXACT_BY3_METHOD): Define.
11452         * mpn/ia64/diveby3.asm: Remove.
11453         * mpn/x86/diveby3.asm: Remove.
11454         * mpn/x86/k6/diveby3.asm: Remove.
11455         * mpn/x86/k7/diveby3.asm: Remove.
11456         * mpn/x86/p6/diveby3.asm: Remove.
11457         * mpn/x86/pentium/diveby3.asm: Remove.
11458         * mpn/x86_64/diveby3.asm: Remove.
11459         * mpn/x86/pentium4/sse2/diveby3.asm: Remove.
11461         * configure.in (HAVE_NATIVE): List divexact_by3c.
11463         * gmp-impl.h (mpn_divexact_by3c): Override gmp-h.in's definition.
11464         (DIVEXACT_BY3_METHOD): Don't default to 0 if
11465         HAVE_NATIVE_mpn_divexact_by3c.
11467 2008-09-18  Niels Möller  <nisse@lysator.liu.se>
11469         * mpn/generic/gcd.c (main): Added code for tuning of CHOOSE_P.
11471         * mpn/generic/hgcd.c (mpn_hgcd_matrix_mul): Assert that inputs are
11472         normalized.
11474 2008-09-17  Niels Möller <nisse@lysator.liu.se>  <nisse@king.swox.se>
11476         * mpn/generic/gcdext.c (mpn_gcdext): p = n/5 caused a
11477         slowdown for large inputs. As a compromise, use p = n/2 for the
11478         first iteration, and p = n/3 for the rest. Handle the first
11479         iteration specially, since the initial u0 and u1 are trivial.
11481         * mpn/x86_64/gmp-mparam.h (GCDEXT_DC_THRESHOLD): Reduced threshold
11482         from 409 to 390.
11484         * mpn/generic/gcdext.c (CHOOSE_P): New macro. Use p = n/5.
11485         (mpn_gcdext): Use CHOOSE_P, and generalized the calculation of
11486         scratch space.
11488         * tune/tuneup.c (tune_hgcd): Use default step factor.
11490         * mpn/x86_64/gmp-mparam.h: (GCD_DC_THRESHOLD): Reduced from 493 to
11491         412.
11493         * mpn/generic/gcd.c (CHOOSE_P): New macro, to determine the
11494         split when calling hgcd. Use p = 2n/3, as that seems better than
11495         the more obvious split p = n/2.
11496         (mpn_gcd): Use CHOOSE_P, and generalized the calculation of
11497         scratch space.
11499 2008-09-16  Torbjorn Granlund  <tege@gmplib.org>
11501         * mpn/generic/toom_interpolate_7pts.c: Use new mpn_divexact_byN
11502         functions.
11504         * gmp-impl.h (mpn_divexact_by3, mpn_divexact_by5, mpn_divexact_by7,
11505         mpn_divexact_by9, mpn_divexact_by11, mpn_divexact_by13,
11506         mpn_divexact_by15): New macros, defined in terms of mpn_bdiv_dbm1.
11508         * configure.in (gmp_mpn_functions): List bdiv_dbm1c.
11509         (HAVE_NATIVE): Likewise.
11510         * mpn/asm-defs.m4: Define bdiv_dbm1c.
11511         * gmp-impl.h (mpn_bdiv_dbm1c): Declare.
11512         (mpn_bdiv_dbm1): New macro.
11513         * mpn/generic/bdiv_dbm1c.c: New file.
11514         * mpn/alpha/bdiv_dbm1c.asm: New file.
11515         * mpn/ia64/bdiv_dbm1c.asm: New file.
11516         * mpn/powerpc32/bdiv_dbm1c.asm: New file.
11517         * mpn/powerpc64/mode64/bdiv_dbm1c.asm: New file.
11518         * mpn/x86/bdiv_dbm1c.asm: New file.
11519         * mpn/x86_64/bdiv_dbm1c.asm: New file.
11521         * mpn/generic/diveby3.c: Add mpn_bdiv_dbm1c based function.
11522         Choose function depending on DIVEXACT_BY3_METHOD.
11523         * gmp-impl.h (DIVEXACT_BY3_METHOD): Provide default.
11525 2008-09-16  Niels Möller  <nisse@lysator.liu.se>
11527         * mpn/generic/hgcd.c (mpn_hgcd_addmul2_n): Moved function to
11528         gcdext.c, where it is used.
11529         * mpn/generic/gcdext.c (addmul2_n): Moved and renamed, was
11530         mpn_hgcd_addmul2_n. Made static. Deleted input normalization.
11531         Deleted rn argument.
11532         (mpn_gcdext): Updated calls to addmul2_n, and added assertions.
11534         * gmp-impl.h (MPN_HGCD_MATRIX_INIT_ITCH): Increased storage by 4 limbs.
11535         (MPN_HGCD_LEHMER_ITCH): Reduced storage by one limb.
11536         (MPN_GCD_SUBDIV_STEP_ITCH): Likewise.
11537         (MPN_GCD_LEHMER_N_ITCH): Likewise.
11539         * mpn/generic/hgcd.c (mpn_hgcd_matrix_init): Use two extra limbs.
11540         (hgcd_step): Use overlapping arguments to mpn_tdiv_qr.
11541         (mpn_hgcd_matrix_mul): Deleted normalization code. Tighter bounds
11542         for the element size of the product. Needs two extra limbs of
11543         storage for the elements.
11544         (mpn_hgcd_itch): Updated storage calculation.
11546         * mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): Use
11547         overlapping arguments to mpn_tdiv_qr. Use mpn_zero_p.
11549         * mpn/generic/gcd.c (mpn_gcd): Use mpn_zero_p.
11551 2008-09-15  Niels Möller  <nisse@lysator.liu.se>
11553         * mpn/generic/hgcd.c (mpn_hgcd_matrix_init): Updated for deleted
11554         tp pointer.
11555         (hgcd_matrix_update_q): Likewise.
11556         (mpn_hgcd_matrix_mul): Likewise.
11557         (mpn_hgcd_itch): Updated calculation of scratch space.
11559         * gmp-impl.h (struct hgcd_matrix): Deleted tp pointer.
11560         (MPN_HGCD_MATRIX_INIT_ITCH): Reduced storage.
11561         (mpn_hgcd_step, MPN_HGCD_STEP_ITCH): Deleted declarations.
11563 2008-09-15  Niels Möller <nisse@lysator.liu.se>  <nisse@king.swox.se>
11565         * mpn/x86_64/gmp-mparam.h (MATRIX22_STRASSEN_THRESHOLD): New
11566         threshold.
11568         * mpn/generic/hgcd.c (mpn_hgcd_matrix_mul): Use mpn_matrix22_mul.
11569         (mpn_hgcd_itch): Updated calculation of scratch space. Use
11570         count_leading_zeros to get the recursion depth.
11572         * mpn/generic/gcd.c (mpn_gcd): Fixed calculation of scratch space,
11573         and use mpn_hgcd_itch.
11575 2008-09-15  Niels Möller  <nisse@lysator.liu.se>
11577         * tune/tuneup.c (tune_matrix22_mul): New function.
11578         (all): Use it.
11580         * tune/common.c (speed_mpn_matrix22_mul): New function.
11582         * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Added matrix22_mul.c.
11584         * tests/mpn/t-matrix22.c: Use MATRIX22_STRASSEN_THRESHOLD to
11585         select sizes for tests.
11587         * gmp-impl.h (MATRIX22_STRASSEN_THRESHOLD): New threshold
11589         * configure.in (gmp_mpn_functions): Added matrix22_mul.
11590         * gmp-impl.h: Added declarations for mpn_matrix22_mul and related
11591         functions.
11593         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Added
11594         matrix22_mul.c.
11595         * tests/mpn/Makefile.am (check_PROGRAMS): Added t-matrix22.
11597         * tests/mpn/t-matrix22.c: New file.
11598         * mpn/generic/matrix22_mul.c: New file.
11600 2008-09-11  Niels Möller  <nisse@king.swox.se>
11602         * tune/tuneup.c: Updated tuning of gcdext.
11604         * mpn/x86_64/gmp-mparam.h (GCDEXT_DC_THRESHOLD): Reduced threshold
11605         from 713 to 409.
11607 2008-09-11  Niels Möller  <nisse@lysator.liu.se>
11609         * gmp-impl.h: Updated for gcdext changes.
11610         (GCDEXT_DC_THRESHOLD): New constant, renamed from
11611         GCDEXT_SCHOENHAGE_THRESHOLD.
11613         * mpn/generic/gcdext.c (compute_v): Accept non-normalized a and b
11614         as inputs.
11615         (mpn_gcdext): Rewrote and simplified. Now uses the new mpn_hgcd
11616         interface.
11618         * mpn/generic/hgcd.c (mpn_hgcd_addmul2_n): Renamed from addmul2_n
11619         and made non-static. Changed interface to take non-normalized
11620         inputs, and only two size arguments.
11621         (mpn_hgcd_matrix_mul): Simplified using new mpn_hgcd_addmul2_n.
11623         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_itch): Deleted
11624         function.
11625         (mpn_gcdext_lehmer_n): Renamed from mpn_gcd_lehmer. Now takes
11626         inputs of equal size. Moved the code for the division step to a
11627         separate function...
11628         * mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step): New
11629         file, new function.
11631         * configure.in (gmp_mpn_functions): Added gcdext_subdiv_step.
11633 2008-09-10  Torbjorn Granlund  <tege@gmplib.org>
11635         * tests/devel/anymul_1.c: Include <string.h>.
11637         * gmp-h.in: Unconditionally include <cstdio>.
11639 2008-09-10  Niels Möller  <nisse@lysator.liu.se>
11641         * tune/common.c: #if:ed out speed_mpn_gcd_binary and
11642         speed_mpn_gcd_accel.
11643         * tune/speed.c (routine): #if:ed out mpn_gcd_binary, mpn_gcd_accel
11644         and find_a.
11645         * tune/Makefile.am (libspeed_la_SOURCES): Removed gcd_bin.c
11646         gcd_accel.c gcd_finda_gen.c.
11647         * tune/tuneup.c: Enable tuning of GCD_DC_THRESHOLD.
11649         * mpn/generic/gcd.c (mpn_gcd): Rewrote and simplified. Now uses
11650         the new mpn_hgcd interface.
11652         * */gmp-mparam.h: Renamed GCD_SCHOENHAGE_THRESHOLD to
11653         GCD_DC_THRESHOLD.
11655         * mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer_n): Renamed (was
11656         mpn_gcd_lehmer). Now takes inputs of equal size.
11658         * mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer): Reintroduced gcd_2,
11659         to get better performance for small inputs.
11661         * mpn/generic/hgcd.c: Don't hardcode small HGCD_THRESHOLD.
11662         * mpn/x86_64/gmp-mparam.h (HGCD_THRESHOLD): Reduced from 145 to
11663         120.
11664         * */gmp-mparam.h: Renamed HGCD_SCHOENHAGE_THRESHOLD to
11665         HGCD_THRESHOLD.
11667 2008-09-09  Torbjorn Granlund  <tege@gmplib.org>
11669         * doc/gmp.texi: Fix a typo and clarify mpn_gcdext docs.
11671 2008-09-09  Niels Möller  <nisse@lysator.liu.se>
11673         * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): Adapted
11674         to new hgcd interface.
11676         * gmp-impl.h (MPN_HGCD_LEHMER_ITCH): New macro.
11678         * hgcd.c (mpn_hgcd_lehmer): Renamed function, from hgcd_base. Made
11679         non-static.
11681         * gcd_lehmer.c (mpn_gcd_lehmer): Use hgcd2 also for n == 2.
11683         * gcdext_lehmer.c (mpn_gcdext_lehmer): Simplified code for
11684         division step. Added proper book-keeping of swaps, which affect
11685         the sign of the returned cofactor.
11687         * tests/mpz/t-gcd.c (one_test): Display co-factor when mpn_gcdext
11688         fails.
11690         * gcd_lehmer.c (mpn_gcd_lehmer): At end of loop, need to handle
11691         the special case n == 1 correctly.
11693         * gcd_subdiv_step.c (mpn_gcd_subdiv_step): Simplified function.
11694         The special cancellation logic is not needed here.
11696 2008-09-08  Torbjorn Granlund  <tege@gmplib.org>
11698         * mpn/generic/invert.c: Add working but slow code.
11700         * mpn/x86_64/x86_64-defs.m4 (R32, R8): New macros.
11702         * mpn/ia64/submul_1.asm: Move some labels for broader assembler
11703         compatibility.
11705         * gmp-impl.h (mpn_mul_3, mpn_mul_4): Declare.
11706         * tests/tests.h (refmpn_mul_3, refmpn_mul_4): Declare.
11707         * tests/try.c (param_init): Set things up for mpn_mul_3 and mpn_mul_4.
11708         (choice_array): Likewise.
11709         (call): Likewise.
11710         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES):
11711         Add mul_3.c and mul_4.
11712         * mpn/asm-defs.m4: Define mul_3 and mul_4.
11713         * tests/refmpn.c (refmpn_mul_N): New function.
11714         (refmpn_mul_2): Remove old definition, call refmpn_mul_N.
11715         (refmpn_mul_3, refmpn_mul_4): New functions.
11716         * tune/common.c (speed_mpn_mul_3, speed_mpn_mul_4): New functions.
11717         * tune/speed.h (speed_mpn_mul_3, speed_mpn_mul_4): Declare.
11718         * tune/speed.c (routine): New entries for mpn_mul_2 and mpn_mul_3.
11720         * ltmain.sh: Update to libtool 1.5.24.
11722         * mpn/generic/mul_toom22.c: Compute s and t more cleverly.
11724 2008-09-08  Niels Möller  <nisse@lysator.liu.se>
11726         * tests/mpn/t-hgcd.c: Updated tests. Rewrite of hgcd_ref.
11728         * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_itch): New function.
11729         (mpn_gcdext_lehmer): Various bugfixes.
11731         * gcdext.c (mpn_gcdext): Allocate scratch space for gcdext_lehmer.
11733         * mpn/generic/gcd_lehmer.c (gcd_2): ASSERT that inputs are odd.
11734         (mpn_gcd_lehmer): Added tp argument, for scratch space. Make both
11735         arguments odd before calling gcd_2.
11737         * mpn/generic/hgcd.c (mpn_hgcd): Allow the trivial case n <= 2,
11738         and return 0 immediately.
11740         * gmp-impl.h (MPN_EXTRACT_NUMB): New macro.
11742         * configure.in (gmp_mpn_functions): Added gcdext_lehmer.
11744 2008-09-05  Torbjorn Granlund  <tege@gmplib.org>
11746         * mpn/generic/toom_interpolate_7pts.c: Use mpn_divexact_by3c instead of
11747         divexact_odd.
11749         * doc/texinfo.tex: Update to 2007-06-29.13.
11751         * doc/gmp.texi: Update GMP site URL.  Fix some typos.
11753         * demos/pexpr.c (main): Allow bases up to 62.
11755         * gmp-impl.h: Remove formal parameter names from function prototypes.
11757         * config.guess: Recognize recent AMD and Itanium CPUs.
11758         Default X86 CPU recognition to configfsf.guess' value.
11760         * configure.in: Handle core2 separately from athlon64.
11762 2008-09-05  Niels Möller  <nisse@lysator.liu.se>
11764         * */Makefile.in, configure, aclocal.m4, config.in: Removed files
11765         from repository. They're instead generated by automake and
11766         autoconf before distribution.
11768 2008-08-25  Torbjorn Granlund  <tege@gmplib.org>
11770         * mpf/set_str.c: Allocate mantissa space based on mantissa size,
11771         not on destination variable space.
11772         * mpf/set_str.c: Accept unary plus before exponent.
11774 2008-08-06  Torbjorn Granlund  <tege@gmplib.org>
11776         * mpn/generic/mul_toom22.c: Add statistics gathering functionality,
11777         triggered by cpp predef STAT.
11779         From David Harvey:
11780         * mpn/generic/mul_toom22.c: Decrease scratch space usage.
11782 2008-08-02  Torbjorn Granlund  <tege@gmplib.org>
11784         * tests/misc/t-scanf.c: Avoid negative arguments to _ui functions.
11785         * tests/misc/t-printf.c: Likewise.
11787         * acinclude.m4 (X86_PATTERN): Add geode.
11789         * acinclude.m4 (CL_AS_NOEXECSTACK): Avoid -q flag to grep.
11791 2008-08-01  Torbjorn Granlund  <tege@gmplib.org>
11793         * acinclude.m4 (CL_AS_NOEXECSTACK): New.
11794         * configure.in: Use CL_AS_NOEXECSTACK.
11795         * mpn/Makeasm.am: Use ASM_FLAGS (defined by CL_AS_NOEXECSTACK).
11797         * gmpxx.h (__GMP_DBL_LIMBS): Use DBL_MAX_EXP instead of
11798         std::numeric_limits<double>::max_exponent for better portability.
11800 2008-07-29  Torbjorn Granlund  <tege@gmplib.org>
11802         * gmpxx.h (__GMP_DBL_LIMBS): New #define.
11803         (__GMP_ULI_LIMBS): New #define.
11804         (__GMPXX_TMP_UI): New macro.
11805         (__GMPXX_TMP_SI): New macro.
11806         (__GMPXX_TMP_D): New macro.
11807         (struct __gmp_binary_and): Rewrite, using the new macros.
11808         (struct __gmp_binary_ior): Likewise.
11809         (struct __gmp_binary_xor): Likewise.
11811 2008-07-28  Torbjorn Granlund  <tege@gmplib.org>
11813         * tests/cxx/t-binary.cc: Add some tests for logical operations.
11815 2008-07-24  Torbjorn Granlund  <tege@gmplib.org>
11817         * gmpxx.h: Use __GMPZ_* instead of __GMPZZ_* for bitwise ops, remove
11818         __GMPZZ_*.
11819         Remove repeated #undefs.
11820         (__gmp_alloc_cstring): Declare freefunc as extern "C".
11822 2008-07-23  Torbjorn Granlund  <tege@gmplib.org>
11824         * gmp-h.in (__GMP_CC): New define, undocumented for now.
11825         (__GMP_CFLAGS): Likewise.
11827 2008-07-21  Torbjorn Granlund  <tege@gmplib.org>
11829         * tests/amd64check.c: Fix a printf type clash.
11831         * mpz/realloc.c: Amend last fix.
11833         * gmp-h.in: Include <cstdlib> for C++.
11834         * gmp-h.in: Handle new gcc 4.3 inline semantics defaults.
11836         * configfsf.guess: Update to version of 2008-04-14.
11837         * configfsf.sub: Update to version of 2008-06-16.
11839         * configure.in: Separate core2 and athlon64 flags handling.
11841 2008-06-19  Torbjorn Granlund  <tege@gmplib.org>
11843         * config.guess: Recognize pentiumm and AMD geode.
11844         * config.sub: Likewise.
11845         * configure.in: Likewise.
11847 2008-06-02  Torbjorn Granlund  <tege@gmplib.org>
11849         * configure.in: Disallow odd nails sizes.
11850         * configure.in: Inherit default gcc_cflags/gcc_64_cflags everywhere.
11852 2008-05-23  Torbjorn Granlund  <tege@gmplib.org>
11854         * mpz/init2.c: Rewrite to avoid internal overflow and to detect mpz_t
11855         overflow.
11856         * mpz/realloc2.c: Likewise.
11857         * mpz/realloc.c: Detect mpz_t overflow.
11859 2008-05-22  Torbjorn Granlund  <tege@gmplib.org>
11861         * configure.in (sparc): Remove -fast, it causes documented
11862         miscompilation.
11864         * config.guess: Properly handle the "extended" variants of x86 cpuid.
11866 2008-05-09  Torbjorn Granlund  <tege@gmplib.org>
11868         * gmp-impl.h (mpn_mul_fft): Now void.
11869         (udiv_qrnnd_preinv3): Special case for constant (nl).
11871 2008-05-08  Torbjorn Granlund  <tege@gmplib.org>
11873         * mpn/generic/mul_fft.c: Clean up types in TRACE (printf (...)).
11874         (TRACE): Redefine to allow command line control.
11875         (mpn_mul_fft_internal): Now void, remove return value.
11876         (mpn_mul_fft): Likewise.
11877         (MPN_FFT_TABLE2_SIZE): Up size fro 256 to 512.
11878         (mpn_fft_fft): Call mpn_fft_mul_2exp_modF just once instead of twice,
11879         then add/subtract result.  Get rid of temp allocation as a result.
11880         Remove some redundant CNST_LIMB.
11881         (mpn_fft_fftinv): Analogous changes.
11882         (mpn_fft_sub_modF): Re-enable, now needed by mpn_fft_fft and
11883         mpn_fft_fftinv.
11885 2008-03-10  Torbjorn Granlund  <tege@gmplib.org>
11887         * tests/mpz/t-mul.c (main): Let GMP_CHECK_FFT mean largest allowed
11888         power-of-2 of test operands.
11890 2008-02-28  Torbjorn Granlund  <tege@gmplib.org>
11892         * tests/cxx/t-binary.cc (check_mpz): Expect floor rounding for right
11893         shift.
11895 2008-02-27  Torbjorn Granlund  <tege@gmplib.org>
11897         * mpz/mul_i.h: Check sml's size (not the signed small_mult).
11899         * longlong.h (umul_ppmm) [alpha]: Define using __builtin_alpha_umulh
11900         when possible.
11902         * longlong.h (count_trailing_zeros): Force destination register mode.
11904         * gmpxx.h (struct __gmp_binary_rshift): Use floor rounding, not
11905         truncation.
11907         * gmpxx.h (__gmp_binary_and, __gmp_binary_ior, __gmp_binary_xor):
11908         Add variants with unsigned long int argument.
11910         * config.sub: Recog geode.
11911         * config.guess: Likewise.
11912         * acinclude.m4 (X86_PATTERN): Likewise.
11914 2008-02-10  Torbjorn Granlund  <tege@gmplib.org>
11916         * mpn/x86/p6/aors_n.asm: Use Zdisp to work around GNU as bug.
11917         * mpn/x86/x86-defs.m4 (Zdisp): Add more instructions.
11919 2008-02-08  Torbjorn Granlund  <tege@gmplib.org>
11921         * mpn/x86_64/aors_n.asm: New file.
11922         * mpn/x86_64/add_n.asm: Delete.
11923         * mpn/x86_64/sub_n.asm: Delete.
11925 2008-02-07  Torbjorn Granlund  <tege@gmplib.org>
11927         * mpn/x86/k6/mmx/dive_1.asm: Fix typo in last change.
11929 2007-12-10  Torbjorn Granlund  <tege@swox.com>
11931         * mpf/set_str.c (mpf_set_str): Write own code for converting the
11932         exponent, avoids strtol base < 36 limitation.
11934 2007-10-28  Torbjorn Granlund  <tege@swox.com>
11936         * gmp-impl.h (mpn_dc_get_str_itch): New macro.
11937         (mpn_dc_get_str_powtab_alloc): New macro.
11938         (struct powers): Add field "shift".
11940         * mpn/generic/get_str.c: Compute powers without low zero limbs; all
11941         functions modified.  Correct temporary allocation.  Misc cleanups.
11943         * mpn/generic/set_str.c: Compute powers without low zero limbs; all
11944         functions modified.
11945         (mpn_dc_set_str): Remove impossible case, replace by an ASSERT.
11947 2007-10-26  Torbjorn Granlund  <tege@swox.com>
11949         * mpn/generic/set_str.c: Remove default thresholds, not in gmp-impl.h.
11950         (mpn_dc_set_str): Insert ASSERT_ALWAYS in a presumably dead code arm.
11952 2007-10-22  Torbjorn Granlund  <tege@swox.com>
11954         * gmp-impl.h (mpn_add_nc): Define as inline function, unless NATIVE.
11955         (mpn_sub_nc): Likewise.
11957 2007-10-17  Torbjorn Granlund  <tege@swox.com>
11959         * tests/misc/t-printf.c: Fix a printf type clash.
11960         * tests/mpq/t-get_str.c: Likewise.
11961         * tests/mpz/t-import.c: Likewise.
11963         * acinclude.m4: Conditionally disable some tests when compiled by a C++
11964         compiler.
11966         * gmp-impl.h (udiv_qrnnd_preinv3): Remove an unused variable.
11968         * mpn/generic/hgcd.c: Add some WANT_ASSERTs to shut up warnings.
11970 2007-10-08  Torbjorn Granlund  <tege@swox.com>
11972         * mpn/powerpc64/elf.m4 (LEAL): Define as an alias for LEA.
11973         * mpn/powerpc32/darwin.m4 (LEAL): Likewise.
11974         * mpn/powerpc64/aix.m4: Likewise.
11976         * mpn/powerpc64/vmx/popcount.asm: Use LEAL.
11978         * mpn/powerpc64/darwin.m4 (LEAL): New name for LEA, since it is only
11979         usable for local symbols.
11980         (LEA): Replace with code for external references.
11982         * mpn/powerpc32/vmx/mod_34lsub1.asm: Use LEAL.
11984 2007-10-07  Torbjorn Granlund  <tege@swox.com>
11986         * mpn/x86/dive_1.asm: Use LEA, remove explicit movl_eip_*.
11987         * mpn/x86/k6/mode1o.asm: Likewise.
11988         * mpn/x86/k6/mmx/dive_1.asm: Likewise.
11989         * mpn/x86/k7/dive_1.asm: Likewise.
11990         * mpn/x86/k7/mode1o.asm: Likewise.
11991         * mpn/x86/p6/dive_1.asm: Likewise.
11992         * mpn/x86/p6/mode1o.asm: Likewise.
11993         * mpn/x86/pentium4/sse2/dive_1.asm: Likewise.
11994         * mpn/x86/pentium4/sse2/mode1o.asm: Likewise.
11995         * mpn/x86/pentium4/sse2/popcount.asm: Likewise.
11997         * mpn/x86/p6/aors_n.asm: Table cycle counts.
11999         * mpn/x86/k7/mod_34lsub1.asm: Fix over-optimistic cycle count claims.
12001         * mpn/x86/x86-defs.m4 (DEF_OBJECT, END_OBJECT): New define's.
12003         * mpn/x86/darwin.m4 (LEA): Put also movl_eip_XX into EPILOGUE_cpu.
12004         Expect target register to have prepended %.
12006         * mpn/x86_64/add_n.asm: Use L() for labels.
12007         * mpn/x86_64/addlsh1_n.asm: Likewise.
12008         * mpn/x86_64/addmul_2.asm: Likewise.
12009         * mpn/x86_64/aorrlsh_n.asm: Likewise.
12010         * mpn/x86_64/aorsmul_1.asm: Likewise.
12011         * mpn/x86_64/com_n.asm: Likewise.
12012         * mpn/x86_64/copyd.asm: Likewise.
12013         * mpn/x86_64/copyi.asm: Likewise.
12014         * mpn/x86_64/diveby3.asm: Likewise.
12015         * mpn/x86_64/logops_n.asm: Likewise.
12016         * mpn/x86_64/lshsub_n.asm: Likewise.
12017         * mpn/x86_64/mul_1.asm: Likewise.
12018         * mpn/x86_64/mul_2.asm: Likewise.
12019         * mpn/x86_64/mul_basecase.asm: Likewise.
12020         * mpn/x86_64/popham.asm: Likewise.
12021         * mpn/x86_64/redc_1.asm: Likewise.
12022         * mpn/x86_64/rsh1add_n.asm: Likewise.
12023         * mpn/x86_64/rsh1sub_n.asm: Likewise.
12024         * mpn/x86_64/rshift.asm: Likewise.
12025         * mpn/x86_64/sub_n.asm: Likewise.
12026         * mpn/x86_64/sublsh1_n.asm Likewise.
12027         * mpn/x86_64/pentium4/aors_n.asm: Likewise.
12028         * mpn/x86_64/pentium4/lshift.asm: Likewise.
12029         * mpn/x86_64/pentium4/rshift.asm: Likewise.
12031         * mpn/x86_64/x86_64-defs.m4: New file, defining LEA, DEF_OBJECT, and
12032         END_OBJECT.
12034         * mpn/generic/mul.c: Put TMP_DECL as last decl.
12036 2007-10-06  Torbjorn Granlund  <tege@swox.com>
12038         * mpn/x86/pentium4/sse2/popcount.asm: New file.
12040 2007-09-26  Torbjorn Granlund  <tege@swox.com>
12042         * mpz/get_str.c: Cast a char index to int to shut up compilers.
12044         * mpn/generic/dc_div_qr.c: Pass dummy scratch argument to mpn_invert.
12045         * mpn/generic/dc_divappr_q.c: Likewise.
12046         * mpn/generic/mu_div_qr.c: Likewise.
12047         * mpn/generic/mu_divappr_q.c: Likewise.
12048         * mpn/generic/mu_div_q.c: Likewise.
12049         * mpn/generic/divexact.c: Likewise.
12051         * mpn/generic/invert.c: New file, placeholder for now.
12053 2007-09-24  Torbjorn Granlund  <tege@swox.com>
12055         * mpn/generic/toom_interpolate_5pts.c: New file, contents from
12056         mpn/generic/mul_n.c
12057         * mpn/generic/mul_n.c (mpn_toom3_interpolate): Function removed.
12059         * mpn/generic/toom_interpolate_7pts.c: New file.
12061         * mpn/x86/k7/mmx/popham.asm: Table cycle counts.
12063         * mpn/x86/k6/README: Update URLs.
12065         * mpn/powerpc32/README: Update URL's, company names.
12067         * mpn/generic/get_d.c: Complete rewrite.
12069         * mpn/generic/mul_toom33.c: New file.
12071         * mpn/generic/mul_toom22.c: Make orthogonal with other toomXY files.
12072         * mpn/generic/mul_toom32.c: Likewise.
12073         * mpn/generic/mul_toom42.c: Likewise.
12075         * mpn/alpha/invert_limb.asm: Update cycle counts.  Fix a comment typo.
12077         * mpf/get_str.c: Include stdlib.h, not stdio.h for NULL.
12079         * doc/gmp.texi: Fix a typo.
12081         * memory.c (__gmp_default_allocate, __gmp_default_reallocate):
12082         Cast size operands in error fprintf's.
12084         * longlong.h (sub_ddmmss) [powerpc 64]: Add more variants for constant
12085         args.
12087         * gmp-impl.h (udiv_qrnnd_preinv3): New define.
12088         * gmp-impl.h (ULONG_PARITY): Exclude masquerading __INTEL_COMPILER from
12089         ia64 asm.
12091         * gmp-h.in (mpn_neg_n): New function.
12093 2007-09-18  Torbjorn Granlund  <tege@swox.com>
12095         * demos/pexpr.c (main): Add -v option.
12096         (enum op_t): New tag TIMING.
12097         (mpz_eval_expr): Execute TIMING.
12098         (fns): Add TIMING entry.
12100         * gmp-impl.h: Add decls and THRESHOLDs for new toom multiplication
12101         functions and division functions.
12103 2007-09-10  Torbjorn Granlund  <tege@swox.com>
12105         * mpn/powerpc32/addlsh1_n.asm: Use L() for labels.
12106         * mpn/powerpc32/sublsh1_n.asm: Likewise.
12108 2007-09-09  Torbjorn Granlund  <tege@swox.com>
12110         * mpn/x86/x86-defs.m4 (LEA): New define.
12111         * mpn/x86/darwin.m4: New file, for now just defining LEA.
12112         * configure.in: Pick up x86/darwin.m4.
12113         * mpn/x86/*: Use LEA for PIC references.
12115         * configure.in: For X86/32, treat core2 like pentium3.
12117 2007-09-06  Torbjorn Granlund  <tege@swox.com>
12119         * tests/amd64check.c (calling_conventions_values): Put constants,
12120         dynamic values in this array (was in scalars).
12121         (calling_conventions_check): Corresponding changes.
12122         * tests/amd64call.asm: Rewrite to be PIC, smaller, using amd64check.c's
12123         array.
12125 2007-09-04  Torbjorn Granlund  <tege@swox.com>
12127         * mpn/x86/pentium4/sse2/mul_basecase.asm: Misc cleanups.
12128         * mpn/x86/pentium4/sse2/sqr_basecase.asm: Likewise.
12130         * mpn/x86_64/mod_34lsub1.asm: Optimize loop, reduce code size.
12132         * tests/amd64call.asm: Remove bogus no-op moves.
12134 2007-09-03  Torbjorn Granlund  <tege@swox.com>
12136         From Richard Guenther:
12137         * gmp-h.in (__GMP_EXTERN_INLINE): Declare conditionally on
12138         __GNUC_STDC_INLINE__.
12140         * tests/cxx/t-locale.cc: #include <cstdlib>, for abort.
12142         * mpn/x86_64/core2/popcount.asm: New file.
12143         * mpn/x86_64/pentium4/popcount.asm: New file.
12145         * mpn/x86_64/addmul_2.asm: New file.
12146         * mpn/x86_64/mul_2.asm: New file.
12148         * mpn/x86_64/aorsmul_1.asm: Use 32-bit mov for zeroing registers
12149         (saves space).
12151 2007-09-01  Torbjorn Granlund  <tege@swox.com>
12153         * configure.in: Handle athlon64, core2, and pentium4 separately for
12154         64-bit ABI.
12156         * config.sub: Recog athlon64, core2, and opteron.
12158         * config.guess: Do two x86 variants, for 32-bit ABI and 64-bit ABI.
12159         Return "athlon64" and "core2", not x86_64.
12161 2007-08-31  Torbjorn Granlund  <tege@swox.com>
12163         From Patrick Pelissier:
12164         * gmp-h.in: Don't refer to FILE from C++ unless we've seen FILE.
12166 2007-08-30  Torbjorn Granlund  <tege@swox.com>
12168         * demos/isprime.c: Include string.h for strcmp.
12170         * demos/factorize.c (main): Declare to int.
12172 2007-06-22  Torbjorn Granlund  <tege@swox.com>
12174         * mpn/x86_64/pentium4/lshift.asm: Minor tuning.
12175         * mpn/x86_64/pentium4/rshift.asm: Likewise.
12177 2007-05-30  Torbjorn Granlund  <tege@swox.com>
12179         * mpn/powerpc64/mode64/aors_n.asm: Add _nc entry points.
12181 2007-05-22  Torbjorn Granlund  <tege@swox.com>
12183         * tests/memory.c: Cast calls to new mem* calls to avoid unaligned ops.
12185 2007-05-16  Torbjorn Granlund  <tege@swox.com>
12187         * tests/mpz/convert.c: Tweak operand sizes for best coverage.
12189         * tests/memory.c: Add red zones around allocations.
12191 2007-05-15  Torbjorn Granlund  <tege@swox.com>
12193         * mpn/ia64/mul_1.asm: Make mul_1c entry point actually work.
12195         * mpn/generic/set_str.c (mpn_dc_set_str): Avoid calling mpn_add_n when
12196         ln == 0.
12198         * tests/mpz/convert.c (string_urandomb): New function.
12199         (main): Use it by enabling ifdef'ed out code.
12201 2007-04-30  Torbjorn Granlund  <tege@swox.com>
12203         * mpn/x86_64/mul_basecase.asm: Complete rewrite.
12205         * mpn/x86_64/copyi.asm: Use short shift-by-one form.  Misc cleanups.
12206         * mpn/x86_64/copyi.asm: Likewise.
12207         * mpn/x86_64/popham.asm: Likewise.
12209         * mpn/x86_64/aorsmul_1.asm: Cleanup formatting.
12211 2007-04-25  Torbjorn Granlund  <tege@swox.com>
12213         * mpz/divexact.c: Handle undefined case of |N| < |D| to avoid segfaults.
12215 2007-02-24  Torbjorn Granlund  <tege@swox.com>
12217         * doc/gmp.texi (Toom 3-Way Multiplication): Fix typo.
12218         (mpz_scan0, mpz_scan1): Fix typos.
12219         (Float Internals): Rewrite paragraph about struct types.
12221 2007-02-12  Torbjorn Granlund  <tege@swox.com>
12223         * mpn/x86/pentium4/sse2/sqr_basecase.asm: Complete rewrite (except
12224         diagonal code).
12226 2007-02-05  Torbjorn Granlund  <tege@swox.com>
12228         * mpn/generic/mul_fft.c (mpn_fft_fft): New name for mpn_fft_fft_sqr,
12229         old mpn_fft_fft removed.
12230         (mpn_mul_fft_internal): Call mpn_fft_fft separately for each operand.
12231         (mpn_fft_add_modF): Rewrite to avoid random branches.
12232         (mpn_fft_sub_modF): Likewise.
12234         * mpn/x86/pentium4/sse2/addmul_1.asm: Complete rewrite.
12235         * mpn/x86/pentium4/sse2/mul_1.asm: Complete rewrite.
12236         * mpn/x86/pentium4/sse2/mul_basecase.asm: Complete rewrite, based on
12237         new addmul and mul code.
12239 2007-01-31  Torbjorn Granlund  <tege@swox.com>
12241         * mpn/generic/get_str.c (mpn_sb_get_str): Get loop count for frac
12242         development right.
12244         * mpn/powerpc32/vmx/mod_34lsub1.asm: New file.
12246         * mpn/powerpc32/aors_n.asm: New file, complete rewrite.
12247         * mpn/powerpc32/add_n.asm: Remove.
12248         * mpn/powerpc32/sub_n.asm: Remove.
12250 2007-01-25  Torbjorn Granlund  <tege@swox.com>
12252         * mpn/x86_64/core2/aors_n.asm: Add _nc entry points, minor cleanups.
12254         * mpn/x86_64/core2/lshift.asm: Rewrite.
12255         * mpn/x86_64/core2/rshift.asm: Rewrite.
12257         * mpn/x86_64/pentium4/lshift.asm: Swap some loop insns for a small
12258         speedup.
12259         * mpn/x86_64/pentium4/rshift.asm: New file, based on lshift.asm.
12261         * mpn/x86_64/pentium4/gmp-mparam.h: New file.
12263         * mpn/x86_64/pentium4/aors_n.asm: Complete rewrite of add/subtract
12264         code.
12265         * mpn/x86_64/pentium4/add_n.asm: Remove.
12266         * mpn/x86_64/pentium4/sub_n.asm: Remove.
12268 2007-01-20  Torbjorn Granlund  <tege@swox.com>
12270         * mpn/x86_64/lshift.asm: Add special case for cnt=1.
12272 2007-01-19  Torbjorn Granlund  <tege@swox.com>
12274         * mpn/x86_64/aorsmul_1.asm: New file, written from scratch, finally at
12275         3.0 c/l on K8 (addmul_1 was 3.3; submul_1 was 3.5).
12276         * mpn/x86_64/addmul_1.asm: Remove.
12277         * mpn/x86_64/submul_1.asm: Remove.
12279 2006-12-29  Torbjorn Granlund  <tege@swox.com>
12281         * randmt.c (__gmp_randclear_mt): Initialize ALLOC field, like in
12282         __gmp_randinit_mt_noseed.
12283         (__gmp_randclear_mt, __gmp_randinit_mt_noseed): Make similar functions
12284         look similar.
12285         (__gmp_randclear_mt): Pass actually allocated size.
12287         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Add mul_toom22.c,
12288         mul_toom32.c, mul_toom42.c.
12290         * configure.in: Recognize athlon64 and core2 as alternatives to x86_64.
12291         Provide special settings for core2.
12293         * configure.in (gmp_mpn_functions): Add mul_toom22, mul_toom32,
12294         mul_toom42.
12296         * mpn/generic/mul_toom22.c: New file.
12297         * mpn/generic/mul.c: Use mpn_mul_toom22.  Trim cutoff points between
12298         the mpn_mul_toomN2 functions.  Handle balanced operands at function
12299         entry.
12301 2006-12-29  Marco Bodrato  <bodrato@mail.dm.unipi.it>
12303         * mpn/generic/mul_n.c: Rewrite interpolation code.
12305 2006-12-28  Torbjorn Granlund  <tege@swox.com>
12307         * mpn/generic/mul_toom32.c: New file.
12308         * mpn/generic/mul_toom42.c: New file.
12309         * mpn/generic/mul.c: Use mpn_mul_toom32 and mpn_mul_toom42 for
12310         unbalanced operands.
12312 2006-12-17  Torbjorn Granlund  <tege@swox.com>
12314         * mpn/x86_64/aorrlsh_n.asm: New file.
12315         * mpn/x86_64/lshsub_n.asm: New file.
12317         * mpn/x86_64/core2/aors_n.asm: New file.
12318         * mpn/x86_64/core2/lshift.asm: New file.
12319         * mpn/x86_64/core2/rshift.asm: New file.
12321         * mpn/x86/p6/aors_n.asm: Replace K7 grabbing code with P6 specific
12322         code.
12324         * mpn/x86/p6/lshsub_n.asm: New file.
12326 2006-11-23  Torbjorn Granlund  <tege@swox.com>
12328         * tune/speed.h (SPEED_ROUTINE_MPN_MUL_BASECASE): Allocate space for xp
12329         locally, s->xp might be insufficient.
12331 2006-11-22  Torbjorn Granlund  <tege@swox.com>
12333         * randmt.c (__gmp_randinit_mt_noseed): Initialize ALLOC field of result
12334         param.
12336 2006-11-06  Torbjorn Granlund  <tege@swox.com>
12338         * tune/set_strp.c: New file.
12340 2006-11-04  Torbjorn Granlund  <tege@swox.com>
12342         * extract-dbl.c: Rewrite to handle nails better, and for general
12343         optimization.
12345         * mpz/bin_uiui.c: Simplify.
12347         * longlong.h (umul_ppmm) [mmix]: New.
12349         * tune/tuneup.c, tune/common.c, tune/speed.c, tune/speed.h,
12350         tune/set_strb.c, tune/set_strs.c: Add tuning and speed measurements
12351         of separate SET_STR_DC_THRESHOLD and SET_STR_PRECOMPUTE_THRESHOLD.
12352         Add tuning and speed measurement of mpn_addsub_n.
12354 2006-10-31  Torbjorn Granlund  <tege@swox.com>
12356         * gmpxx.h: Remove ternary stuff, it is hardly an optimization and it
12357         writes to destination before reading all source operands.
12359 2006-10-25  Torbjorn Granlund  <tege@swox.com>
12361         * mpn/generic/set_str.c: Complete rewrite.
12362         * mpn/generic/get_str.c: Likewise.
12364         * gmp-impl.h (struct powers, powers_t): New types.
12365         Restructure GET_STR_* and SET_STR_* thresholds.
12367 2006-09-21  Torbjorn Granlund  <tege@swox.com>
12369         * mpn/generic/rootrem.c: Remove some redundant casts.
12371 2006-07-12  Torbjorn Granlund  <tege@swox.com>
12373         * mpn/alpha/ev6/nails/addmul_2.asm: Make it run at claimed speed.
12374         * mpn/alpha/ev6/nails/addmul_4.asm: Likewise.
12376         * mpf/get_str.c: Avoid copying result when not needed.  Misc cleanups.
12378         * tests/amd64call.asm: Use jmp instead of jmpq to placate Solaris.
12380 2006-06-30  Torbjorn Granlund  <tege@swox.com>
12382         * configure.in (powerpc-*): Remove repeated path component.
12384 2006-06-15  Torbjorn Granlund  <tege@swox.com>
12386         * configure.in: (ia64-*-linux*): Don't use -O3.
12388 2006-06-14  Torbjorn Granlund  <tege@swox.com>
12390         * mpq/get_str.c: Fix upper base limit boundary in an ASSERT.
12392         * tests/refmpn.c (refmpn_sb_divrem_mn): Use ASSERT_CARRY for add-back.
12394 2006-05-31  Torbjorn Granlund  <tege@swox.com>
12396         * tests/mpz/t-set_d.c (check_data): Add more data points.
12398         * mpz/set_d.c: Handle negative return values from __gmp_extract_double.
12400 2006-05-17  Torbjorn Granlund  <tege@swox.com>
12402         * configure.in: Clear out gcc_cflags_cpu and gcc_cflags_arch for a fat
12403         build.
12405 2006-05-16  Torbjorn Granlund  <tege@swox.com>
12407         * demos/primes.c (find_primes): Increase mpz_probab_prime_p cnt to 10.
12409         * mpn/generic/addsub_n.c: Fix criteria form when to call _nc functions.
12411 2006-05-12  Torbjorn Granlund  <tege@swox.com>
12413         * config.guess: Recognize more ppc processor types.
12415 2006-05-11  Torbjorn Granlund  <tege@swox.com>
12417         * tune/speed.c (usage): Update URL for gnuplot and quickplot.
12419 2006-05-10  Torbjorn Granlund  <tege@swox.com>
12421         * configure.in (powerpc-*-*): Pass -maltivec to assembler for
12422         appropriate CPUs.
12424 2006-05-08  Torbjorn Granlund  <tege@swox.com>
12426         * mpn/powerpc32/aix.m4 (LEA): Remove [RW] attribute.
12428 2006-05-03  Torbjorn Granlund  <tege@swox.com>
12430         * mpn/powerpc64/vmx/popcount.asm: Conditionally zero extend n.
12432 2006-04-27  Torbjorn Granlund  <tege@swox.com>
12434         * mpz/divexact.c: Call mpz_tdiv_q for large operands.
12436         * configure.in (powerpc-*-darwin): Remove -fast, it affects PIC.
12438 2006-04-26  Torbjorn Granlund  <tege@swox.com>
12440         * config.guess: Try to recognize Ultrasparc T1 (as ultrasparct1).
12441         * config.sub: Handle ultrasparct1.
12443 2006-04-25  Torbjorn Granlund  <tege@swox.com>
12445         * mpn/sparc64/gmp-mparam.h: Retune, without separation of GNUC and
12446         non-GNUC data.
12448 2006-04-20  Torbjorn Granlund  <tege@swox.com>
12450         * tests/mpz/convert.c: Increase operands range.
12452 2006-04-19  Torbjorn Granlund  <tege@swox.com>
12454         * configure.in: Support powerpc eABI.
12455         * mpn/powerpc32/eabi.m4: New file.
12457         * configure.in: Support powerpc *bsd.
12458         * mpn/powerpc64/elf.m4: New name for mpn/powerpc64/linux64.m4.
12459         * mpn/powerpc32/elf.m4: New name for mpn/powerpc32/linux.m4.
12461         * mpn/powerpc64/linux64.m4 (ASM_END): Quote TOC_ENTRY.
12463 2006-04-18  Torbjorn Granlund  <tege@swox.com>
12465         * configure.in (gmp_mpn_functions_optional): Add lshiftc.
12466         (HAVE_NATIVE): Add lshiftc.
12468         * mpn/powerpc64/mode64/invert_limb.asm: Use LEA, not LDSYM.
12469         * mpn/powerpc64/mode64/mode1o.asm: Likewise.
12470         * mpn/powerpc64/mode64/dive_1.asm: Likewise.
12472         * mpn/powerpc64/linux64.m4 (TOC_ENTRY): Define to empty.
12473         * mpn/powerpc64/aix.m4 (TOC_ENTRY): Likewise.
12474         * mpn/powerpc32/aix.m4 (TOC_ENTRY): Likewise.
12476         * mpn/powerpc32/aix.m4 (EXTERN): New, copied form powerpc64/aix.m4.
12477         * mpn/powerpc32/mode1o.asm: Use EXTERN.
12478         * mpn/powerpc32/linux.m4 (EXTERN): Provide dummy definition.
12479         * mpn/powerpc32/darwin.m4 (EXTERN): Likewise.
12481 2006-04-13  Torbjorn Granlund  <tege@swox.com>
12483         * mpn/generic/mul_fft.c: Use new thresholds mechanism if MUL_FFT_TABLE2
12484         is defined.
12485         (mpn_lshiftc): New name for mpn_lshift_com (for consistency with some
12486         stuff already in 4.1.4.
12487         (mpn_fft_mul_2exp_modF): Reorganize initial operand reductions to avoid
12488         divisions.
12490         * tests/devel/try.c (choice_array): Add mpn_addsub_n[c].
12492 2006-04-11  Torbjorn Granlund  <tege@swox.com>
12494         * aclocal.m4: Regenerate with patched libtool.
12496         * mpn/asm-defs.m4 (ASM_END): Provide (empty) default.
12498 2006-04-08  Torbjorn Granlund  <tege@swox.com>
12500         * configure.in (gmp_mpn_functions_optional): Add addsub.
12502         * gmpxx.h: Remove missed MPFR references.
12504         * gmp-impl.h (LIMBS_PER_DOUBLE): Adjust formula to not be pessimistic.
12506         * gmp-impl.h (TMP_*, WANT_TMP_DEBUG): Don't expect marker argument;
12507         define TMP_SALLOC and TMP_BALLOC.
12509         * mpn/minithres/gmp-mparam.h: New file.
12511         * tests/mpz/t-io_raw.c: Fix printf type/arg mismatches.
12512         * tests/mpz/t-export.c: Likewise.
12513         * tests/mpz/io.c: Likewise.
12514         * tests/t-constants.c: Likewise.
12516         * mpn/ia64/popcount.asm: Append "cond.dptk" to conditional branches to
12517         placate icc.
12518         * mpn/ia64/hamdist.asm: Likewise.
12519         * mpn/ia64/lorrshift.asm: Likewise.
12520         * mpn/ia64/dive_1.asm: Likewise.
12522 2006-04-05  Torbjorn Granlund  <tege@swox.com>
12524         * tal-notreent.c (__gmp_tmp_mark): Add "struct" tag for tmp_marker.
12525         (__gmp_tmp_free): Likewise.
12527         * mpn/generic/mul_fft.c: Optimize many scalar divisions and mod
12528         operations into masks and shifts.
12529         (mpn_fft_mul_modF_K): Fix a spurious ASSERT_NOCARRY.
12531 2006-03-26  Torbjorn Granlund  <tege@swox.com>
12533         * Version 4.2 released.
12535         * mpn/powerpc64/aix.m4 (LEA): Renamed from LDSYM.
12536         * mpn/powerpc64/darwin.m4: Likewise.
12537         * mpn/powerpc64/linux64.m4: Likewise.
12538         * mpn/powerpc64/vmx/popcount.asm: Use LEA, not LDSYM.
12540 2006-03-23  Torbjorn Granlund  <tege@swox.com>
12542         * gmp-impl.h: (class gmp_allocated_string): Prefix strlen with std::.
12544         * gmpxx.h (__GMP_DEFINE_TERNARY_EXPR2): Remove for now.
12545         (struct __gmp_ternary_addmul2): Likewise.
12546         (struct __gmp_ternary_submul2): Likewise.
12548         * gmpxx.h: #include <cstring>.
12549         (struct __gmp_alloc_cstring): Prefix strlen with std::.
12551         * mpn/x86/pentium/com_n.asm: Add TEXT and ALIGN.
12552         * mpn/x86/pentium/copyi.asm: Likewise.
12553         * mpn/x86/pentium/copyd.asm: Likewise.
12555 2006-03-22  Torbjorn Granlund  <tege@swox.com>
12557         * gmp-h.in: Add a "using std::FILE" for C++.
12558         (_GMP_H_HAVE_FILE): Check also _ISO_STDIO_ISO_H.
12560         * gmpxx.h: Remove mpfr code.
12561         * tests/cxx: Likewise.
12563         * gmp-impl.h (FORCE_DOUBLE): Rename a tempvar to avoid a clash with
12564         GNU/Linux public include file.
12566         * configure.in (powerpc64, darwin): New optional, gcc_cflags_subtype.
12567         Grab powerpc32/darwin.m4 for ABI=mode32.
12569         * configure.in: Use host_cpu whenever just the cpu type is needed.
12571 2006-03-08  Torbjorn Granlund  <tege@swox.com>
12573         * mpz/get_si.c: Fix a typo.
12575         * tests/mpq/t-get_d.c (check_random): Improve random generation for
12576         nails.
12578 2006-02-28  Torbjorn Granlund  <tege@swox.com>
12580         * tests/mpq/t-get_d.c (check_random): New function.
12581         (main): Call check_random.
12583         * mpq/set_d.c: Make choices based on LIMBS_PER_DOUBLE, not
12584         BITS_PER_MP_LIMB.  Make it work for LIMBS_PER_DOUBLE == 4.
12585         Use MPZ_REALLOC.
12587         * mpz/set_d.c: Make it work for LIMBS_PER_DOUBLE == 4.
12589         * extract-dbl.c: Make it work for LIMBS_PER_DOUBLE > 3.
12591 2006-02-27  Torbjorn Granlund  <tege@swox.com>
12593         * mpz/cmp_d.c: Declare `i'.
12594         * mpz/cmpabs_d.c: Likewise.
12596 2006-02-23  Torbjorn Granlund  <tege@swox.com>
12598         * mpn/powerpc32/vmx/copyd.asm: Set right VRSAVE bits.
12599         * mpn/powerpc32/vmx/copyi.asm: Likewise.
12601 2006-02-22  Torbjorn Granlund  <tege@swox.com>
12603         * mpn/powerpc32/vmx/logops_n.asm: New file.
12605         * mpn/powerpc32/diveby3.asm: Rewrite.
12607 2006-02-21  Torbjorn Granlund  <tege@swox.com>
12609         * mpn/powerpc32/vmx/copyi.asm: New file.
12610         * mpn/powerpc32/vmx/copyd.asm: New file.
12612 2006-02-17  Torbjorn Granlund  <tege@swox.com>
12614         * mpn/alpha/ev6/nails/aors_n.asm (CYSH): Import proper setting from
12615         deleted mpn_sub_n.
12617 2006-02-16  Torbjorn Granlund  <tege@swox.com>
12619         * mpn/alpha/ev6/addmul_1.asm: Correct slotting comments.
12621 2006-02-15  Torbjorn Granlund  <tege@swox.com>
12623         * tests/devel/anymul_1.c: Copy error reporting code from addmul_N.c.
12625         * tests/devel/addmul_N.c: New file.
12626         * tests/devel/mul_N.c: New file.
12628         * mpn/alpha/default.m4 (PROLOGUE_cpu): Align functions at 16-byte
12629         boundary.
12631         * mpn/alpha/ev6/nails/aors_n.asm: New file.
12632         * mpn/alpha/ev6/nails/add_n.asm: Remove.
12633         * mpn/alpha/ev6/nails/sub_n.asm: Remove.
12635         * mpn/alpha/ev6/nails/addmul_1.asm: Rewrite.
12636         * mpn/alpha/ev6/nails/submul_1.asm: Likewise.
12637         * mpn/alpha/ev6/nails/mul_1.asm: Likewise.
12639         * mpn/alpha/ev6/nails/addmul_2.asm: Use L() for labels.
12640         * mpn/alpha/ev6/nails/addmul_3.asm: Use L() for labels.
12641         * mpn/alpha/ev6/nails/addmul_4.asm: Use L() for labels.
12643 2006-02-13  Torbjorn Granlund  <tege@swox.com>
12645         * mpn/powerpc32/diveby3.asm: Trivially reorder loop insns to save
12646         1 c/l.
12648         * mpn/x86_64/dive_1.asm: Use movabsq to support large model non-PIC.
12650         * mpn/x86_64/rsh1add_n.asm: Replace high register with rbx.
12651         * mpn/x86_64/rsh1sub_n.asm: Likewise.
12653 2006-02-10  Torbjorn Granlund  <tege@swox.com>
12655         * mpn/powerpc64/sqr_diagonal.asm: Software pipeline.
12657         * mpn/powerpc64/vmx/popcount.asm: Add prefetching.
12659 2006-02-07  Torbjorn Granlund  <tege@swox.com>
12661         * mpn/powerpc64/mode64/diveby3.asm: Rewrite.
12663 2006-02-04  Torbjorn Granlund  <tege@swox.com>
12665         * mpn/powerpc64/vmx/popcount.asm: Remove mpn_hamdist partial code.
12666         Move compare for huge n so that it is always executed.
12668 2006-02-03  Torbjorn Granlund  <tege@swox.com>
12670         * mpn/powerpc32/linux.m4 (LEA): Add support for PIC.
12672         * configure.in (powerpc): New optional, gcc_cflags_subtype.
12674         * mpn/x86_64/pentium4/add_n.asm: New file.
12675         * mpn/x86_64/pentium4/sub_n.asm: New file.
12676         * mpn/x86_64/pentium4/lshift.asm: New file.
12678         * mpn/powerpc64/linux64.m4 (PROLOGUE_cpu): Align function start to
12679         16-multiple.
12680         * mpn/powerpc64/aix.m4: Likewise.
12681         * mpn/powerpc64/darwin.m4: Likewise.
12683         * mpn/powerpc64/copyi.asm: Align loop to 16-multiple.
12684         * mpn/powerpc64/copyd.asm: Likewise
12686         * configure.in (powerpc): Add vmx to relevant paths.
12688         * mpn/powerpc64/linux64.m4 (DEF_OBJECT): Accept 2nd argument, for
12689         alignment.
12690         * mpn/powerpc64/aix.m4: Likewise.
12691         * mpn/powerpc64/darwin.m4: Likewise.
12693         * mpn/powerpc32/linux.m4 (DEF_OBJECT, END_OBJECT): New macros,
12694         inherited from powerpc64 versions.
12695         * mpn/powerpc32/aix.m4: Likewise.
12696         * mpn/powerpc32/darwin.m4: Likewise.
12698         * mpn/powerpc64/vmx/popcount.asm: New file, for ppc32 and ppc64.
12699         * mpn/powerpc32/vmx/popcount.asm: New file, grabbing above file.
12701 2006-01-22  Torbjorn Granlund  <tege@swox.com>
12703         * configure.in: Generalize OS-dependent patterns for powerpcs.
12705 2006-01-20  Torbjorn Granlund  <tege@swox.com>
12707         * mpn/x86_64/popham.asm: Optimize.
12709         * config.guess: Recognize power4 and up under linux-gnu.
12710         * config.sub: Generalize power recognition code.
12711         * acinclude.m4 (POWERPC64_PATTERN): Add 64-bit powerpc processors.
12712         * configure.in: Recognize powerpc processors masquerading as power
12713         processors.
12715 2006-01-19  Torbjorn Granlund  <tege@swox.com>
12717         * mpn/x86_64/logops_n.asm: Rewrite for more stable speed and smaller
12718         code.
12719         * mpn/x86_64/com_n.asm: Likewise.
12721 2006-01-18  Torbjorn Granlund  <tege@swox.com>
12723         * mpn/x86_64/addlsh1_n.asm: Rewrite to use indexed addressing.
12724         * mpn/x86_64/sublsh1_n.asm: Likewise.
12726 2006-01-17  Torbjorn Granlund  <tege@swox.com>
12728         * mpn/generic/diveby3.c: Use GMP standard parameter names.  Nailify
12729         alternative code.  Use restrict for params.
12731         * configure.in: Recognize andn_n as not needing nailification.
12733         * tests/mpq/t-equal.c (check_various): Disable a test that gives common
12734         factors for GMP_NUMB_BITS == 62.
12736 2006-01-16  Torbjorn Granlund  <tege@swox.com>
12738         * mpn/generic/get_str.c (mpn_sb_get_str): Fix digit count computation,
12739         was inaccurate for nails.
12741 2006-01-15  Torbjorn Granlund  <tege@swox.com>
12743         * mpn/x86_64/mode1o.asm: Remove unneeded carry register zeroing.
12745 2006-01-08  Torbjorn Granlund  <tege@swox.com>
12747         * mpn/alpha/ev6/sqr_diagonal.asm: New file.
12749 2006-01-06  Torbjorn Granlund  <tege@swox.com>
12751         * mpn/powerpc64/mode64/mod_34lsub1.asm: Tune to 1.5 c/l.
12753         * mpn/generic/mullow_n.c (MUL_BASECASE_ALLOC): New #define.
12754         (mpn_mullow_n): Use it.
12756         * mpn/powerpc64/mode64/dive_1.asm: Use EXTERN.
12757         * mpn/powerpc64/mode64/mode1o.asm: Likewise.
12759         * mpn/powerpc64/aix.m4 (EXTERN): Define to import symbol.
12760         (LDSYM): Remove [RW] attribute.
12761         * mpn/powerpc64/linux64.m4 (EXTERN): Dummy definition.
12762         * mpn/powerpc64/darwin.m4 (EXTERN): Likewise.
12764 2006-01-05  Torbjorn Granlund  <tege@swox.com>
12766         * mpn/powerpc64/mode64/mode1o.asm: New file.
12768         * mpn/powerpc64/mode64/dive_1.asm: Use L() for labels.  Invoke ASM_END.
12770         * mpn/powerpc64/mode64/invert_limb.asm: Invoke ASM_END.
12772         * mpn/powerpc64/linux64.m4: Move toc entry generation from direct at
12773         DEF_OBJECT to delayed via LDSYM, define ASM_END to output it.
12774         * mpn/powerpc64/aix.m4: Likewise.
12775         * mpn/powerpc64/darwin.m4: Define a dummy ASM_END.
12777         * mpn/powerpc64/mode64/addmul_1.asm: Add POWER5 timings.
12778         * mpn/powerpc64/mode64/mul_1.asm: Likewise.
12780         * mpn/powerpc64/mode64/submul_1.asm: Tweak to save 1.5 c/l for POWER5.
12782 2006-01-04  Torbjorn Granlund  <tege@swox.com>
12784         * mpn/powerpc64/mode64/dive_1.asm: New file.
12786         * mpn/powerpc64/mode64/invert_limb.asm: Add missing ASM_START.
12788         * mpn/powerpc64/mode64/addmul_1.asm: Fix a comment typo.
12790         * mpn/x86_64/diveby3.asm: Rewrite.
12792 2006-01-03  Torbjorn Granlund  <tege@swox.com>
12794         * configure.in: Update bugs reporting address.
12796         * mpn/powerpc64/mode64/diveby3.asm: Trim a cycle off of POWER4 timing.
12797         Misc cleanup.
12799 2006-01-02  Torbjorn Granlund  <tege@swox.com>
12801         * mpn/powerpc64/linux64.m4 (CALL): New macro.
12802         * mpn/powerpc64/aix.m4: Likewise.
12803         * mpn/powerpc64/darwin.m4: Likewise, also define macro "DARWIN".
12805 2005-12-28  Torbjorn Granlund  <tege@swox.com>
12807         * mpn/powerpc64/mode64/mod_34lsub1.asm: New file.
12809 2005-12-26  Torbjorn Granlund  <tege@swox.com>
12811         * mpn/x86_64/mod_34lsub1.asm: New file.
12813 2005-12-20  Torbjorn Granlund  <tege@swox.com>
12815         * mpn/x86_64/submul_1.asm: Save a push/pop by not using register r12.
12816         Use addq instead of leaq for pointer updates; schedule them.  (These
12817         changes shaves one cycle of overhead and 0.25 c/l.)
12819 2005-12-18  Torbjorn Granlund  <tege@swox.com>
12821         * mpf/ui_div.c: Implement workaround for GCC bug triggered on alpha.
12822         * mpf/set_q.c: Likewise.
12824 2005-12-16  Torbjorn Granlund  <tege@swox.com>
12826         * mpn/generic/tdiv_qr.c: Remove statement with no effect.
12827         Rename dead variable to `dummy'.
12829 2005-12-15  Torbjorn Granlund  <tege@swox.com>
12831         * demos/pexpr.c (setup_error_handler): Add a missing ";".
12833 2005-11-27  Torbjorn Granlund  <tege@swox.com>
12835         * mpn/generic/mul.c: Crudely call mpn_mul_fft_full before checking
12836         for unbalanced operands.
12838         * mpn/generic/mul_fft.c: Remove many scalar divisions.
12839         (mpn_mul_fft_lcm): Simplify.
12840         (mpn_mul_fft_decompose): Rewrite to handle arbitrarily unbalanced
12841         operands.
12843 2005-11-22  Torbjorn Granlund  <tege@swox.com>
12845         * configure.in: Properly recognize all 32-bit Solaris releases.
12847 2005-11-10  Torbjorn Granlund  <tege@swox.com>
12849         * mpn/generic/mul_fft.c: Inline mpn_fft_mul_2exp_modF,
12850         mpn_fft_add_modF and mpn_fft_normalize.
12852 2005-11-02  Torbjorn Granlund  <tege@swox.com>
12854         * tests/mpz/reuse.c: Increase operand size, decrease # of reps.
12856         * mpz/rootrem.c: Adapt to new mpn_rootrem.
12857         * mpz/root.c: Likewise.
12859         * tests/mpz/reuse.c: Test mpz_rootrem.
12861         With Paul Zimmermann:
12862         * mpn/generic/rootrem.c: Complete rewrite.
12864 2005-10-31  Torbjorn Granlund  <tege@swox.com>
12866         * mpz/pprime_p.c (mpz_probab_prime_p): Considerably limit trial
12867         dividing.
12869         * mpz/perfpow.c (mpz_perfect_power_p): Use mpz_divisible_ui_p instead
12870         of mpz_tdiv_ui.
12872         * mpz/divegcd.c: Correct probability number for GCD == 1.
12874         * mpn/x86_64/mul_basecase.asm: Remove an obsolete comment.
12876         * mpn/x86: Add cycle counts for array of x86 processors.
12878         * mpn/x86/k7/mod_34lsub1.asm: Remove spurious mentions of ebp.
12880         * mpn/powerpc32: Add POWER5 timings.
12882         * mpn/powerpc32/README: Describe global reference variations.
12884         * mpn/ia64/divrem_2.asm: Add some comments.
12886         * mpn/ia64/divrem_1.asm: Reformat.
12888         * mpn/ia64/addmul_2.asm: Correct a comment on slotting.
12889         * mpn/ia64/logops_n.asm: Likewise.
12891         * mpn/ia64/addmul_1.asm: Remove a redundant preg mutex decl.
12893         * mpn/generic/dive_1.c: Whitespace cleanup.
12895         * mpn/alpha/ev6/nails/addmul_1.asm: Correct comments on slotting.
12896         * mpn/alpha/ev6/nails/addmul_2.asm: Likewise.
12897         * mpn/alpha/ev6/nails/addmul_4.asm: Likewise.
12899         * mpf/out_str.c: List some allocation improvement ideas.
12901         * doc/gmp.texi: Update many URLs and email addresses.
12903         * gmp-h.in (_GMP_H_HAVE_FILE): Check also _STDIO_H_INCLUDED.
12905 2005-10-26  Torbjorn Granlund  <tege@swox.com>
12907         * tune/tuneup.c (tune_mullow): Update param.max_size for each threshold
12908         measurement.
12910         * configure.in (POWERPC64_PATTERN/*-*-darwin*): Set
12911         SPEED_CYCLECOUNTER_OBJ_mode64 and cyclecounter_size_mode64.
12912         (POWERPC64_PATTERN/*-*-linux*): Likewise.
12914 2005-10-03  Torbjorn Granlund  <tege@swox.com>
12916         * demos/factorize.c (factor_using_division_2kp): Honor verbose flag.
12917         (factor_using_pollard_rho): Divide out new factor before it's
12918         clobbered.  Don't stop factoring after a composite factor was found.
12920 2005-09-17  Torbjorn Granlund  <tege@swox.com>
12922         * demos/pexpr.c (fns): Add factorial keywords.
12924 2005-08-16  Torbjorn Granlund  <tege@swox.com>
12926         * tune/Makefile.am (EXTRA_DIST): Change "amd64" => "x86_64".
12927         * mpn/Makefile.am (TARG_DIST): Change "amd64" => "x86_64".
12929 2005-08-15  Torbjorn Granlund  <tege@swox.com>
12931         * configure.in: Change "amd64" => "x86_64".
12933 2005-06-13  Torbjorn Granlund  <tege@swox.com>
12935         * mpn/generic/pre_mod_1.c: Canonicalize variable names.
12937         * mpn/generic/divrem.c: Rate qxn test as UNLIKELY.
12939         * mpn/generic/gcdext.c (sanity_check_row): Invoke TMP_MARK.
12941         * tune/tuneup.c (tune_mullow): Fix all max_size fields.
12943         * gmp-impl.h (SQR_TOOM3_THRESHOLD_LIMIT): New #define.
12944         * tune/tuneup.c (tune_sqr): Use SQR_TOOM3_THRESHOLD_LIMIT.
12945         (sqr_toom3_threshold): Initialize from SQR_TOOM3_THRESHOLD_LIMIT.
12947         * mpn/generic/mul_n.c (mpn_sqr_n): Use SQR_TOOM3_THRESHOLD_LIMIT.
12949         * gmp-impl.h (mpn_nand_n, mpn_iorn_n, mpn_nior_n, mpn_xnor_n):
12950         Handle nails.
12952 2005-06-13  Niels Möller  <nisse@lysator.liu.se>
12954         * mpn/generic/gcdext.c (gcdext_schoenhage): Check for the
12955         (unlikely) case that one of the hgcd/euclid steps results in two
12956         remainders of one limb each. Then use gcdext_1.
12958 2005-06-12  Torbjorn Granlund  <tege@swox.com>
12960         * mpn/alpha/ev6/sub_n.asm: Analogous changes as to add_n.asm last.
12962 2005-06-11  Torbjorn Granlund  <tege@swox.com>
12964         * mpn/alpha/ev6/add_n.asm: Rewrite inner loop to load later.
12965         Add mpn_add_nc entry.
12967         * mpn/alpha/ev6/addmul_1.asm: Remove redundant initial loads.
12969 2005-06-09  Torbjorn Granlund  <tege@swox.com>
12971         * mpn/ia64/dive_1.asm: Fix issues with HP-UX.
12973 2005-06-08  Torbjorn Granlund  <tege@swox.com>
12975         * mpn/ia64/diveby3.asm: Update TODO list.
12977         * mpn/ia64/mode1o.asm: Fix comment typos.
12979         * mpn/ia64/dive_1.asm: New file.
12981 2005-06-07  Torbjorn Granlund  <tege@swox.com>
12983         * mpn/ia64/mode1o.asm: Add prefetching.
12985         * mpn/generic/dive_1.c: Use variable h for upper umul_ppmm result.
12987 2005-06-06  Torbjorn Granlund  <tege@swox.com>
12989         * mpn/ia64/hamdist.asm: Complete rewrite.
12990         * mpn/ia64/popcount.asm: Rewrite to use multi-pronged feed-in.
12992         * mpn/ia64/aors_n.asm: Rewrite feed-in code.
12993         * mpn/ia64/rsh1aors_n.asm: Likewise.
12994         * mpn/ia64/aorslsh1_n.asm: Likewise.
12995         * mpn/ia64/lorrshift.asm: Likewise.
12997 2005-06-04  Torbjorn Granlund  <tege@swox.com>
12999         * tests/devel/try.c (choice_array): Exclude mpn_preinv_mod_1 unless
13000         USE_PREINV_MOD_1.
13001         (choice_array): Exclude mpn_sqr_basecase if SQR_KARATSUBA_THRESHOLD
13002         is zero.
13004 2005-06-03  Torbjorn Granlund  <tege@swox.com>
13006         * mpn/alpha/ev6/addmul_1.asm: Prefix all labels with "$".
13007         * mpn/alpha/ev6/mul_1.asm: Likewise.
13009 2005-06-02  Torbjorn Granlund  <tege@swox.com>
13011         * tests/refmpn.c (refmpn_divmod_1c_workaround): Implement workaround
13012         to gcc 3.4.x bug triggered on powerpc64 with 32-bit ABI.
13014 2005-06-01  Torbjorn Granlund  <tege@swox.com>
13016         * tests/devel/try.c (main): Fix a typo.
13018 2005-05-31  Torbjorn Granlund  <tege@swox.com>
13020         * mpn/alpha/ev6/addmul_1.asm: Rewrite for L1 cache, add prefetch.
13022 2005-05-30  Torbjorn Granlund  <tege@swox.com>
13024         * tests/misc.c (tests_rand_start): Mask random seed to 32 bits.
13026 2005-05-29  Torbjorn Granlund  <tege@swox.com>
13028         * mpn/powerpc64/mode32/mul_1.asm: Handle BROKEN_LONGLONG_PARAM.
13029         * mpn/powerpc64/mode32/addmul_1.asm: Likewise.
13030         * mpn/powerpc64/mode32/submul_1.asm: Likewise.
13032         * mpn/powerpc32/mode1o.asm: Rewrite to actually work.
13034         * mpn/powerpc32/aix.m4 (LEA): New macro.
13035         (ASM_END): New macro.
13037         * mpn/powerpc32/linux.m4: New file.
13038         * mpn/powerpc32/darwin.m4: New file.
13039         * configure.in: Use linux.m4 and darwin.m4.
13040         (powerpc64-linux-gnu): Add support for mode32.
13042 2005-05-25  Torbjorn Granlund  <tege@swox.com>
13044         * mpn/generic/mullow_n.c: Remove FIXME mentioning fixed flaw.
13046         * tests/mpz/t-cmp_d.c (check_one): Fix printf fmt string typo.
13048         * demos/isprime.c: #include stdlib.h.
13049         * tests/rand/t-urbui.c: Likewise.
13050         * tests/rand/t-urmui.c: Likewise.
13052         * tests/mpz/t-popcount.c (check_random): Remove spurious printf arg.
13054         * mpn/ia64/lorrshift.asm: Cleanup code layout.
13055         * mpn/ia64/popcount.asm: Likewise.
13057 2005-05-24  Torbjorn Granlund  <tege@swox.com>
13059         * tests/devel/try.c (param_init) [TYPE_GET_STR]: Set retval field.
13060         (compare): Handle SIZE_GET_STR as SIZE_RETVAL.
13062         * tests/refmpn.c (refmpn_get_str): Rewrite to make it work.
13064 2005-05-23  Torbjorn Granlund  <tege@swox.com>
13066         * mpn/amd64/add_n.asm: Add mpn_add_nc entry point.
13067         * mpn/amd64/sub_n.asm: Add mpn_sub_nc entry point.
13069         * longlong.h (many places): Remove lvalue casts.
13071         * gmp-impl.h (MPF_SIGNIFICANT_DIGITS): Cast prec to avoid overflow
13072         for > 4G digits.
13074         * mpn/alpha/ev6/add_n.asm: Prefetch using ldl.
13075         * mpn/alpha/ev6/sub_n.asm: Likewise.
13077         * mpn/alpha/ev6/slot.pl (optable): Recognize negq and ldl.
13079         * mpn/ia64/aors_n.asm: Prefetch using lfetch.
13080         * mpn/ia64/lorrshift.asm: Likewise.
13081         * mpn/ia64/popcount.asm: Likewise.
13082         * mpn/ia64/diveby3.asm: Likewise.
13084 2005-05-22  Torbjorn Granlund  <tege@swox.com>
13086         * mpn/alpha/ev67/popcount.asm: Prefetch.
13087         * mpn/alpha/ev67/hamdist.asm: Prefetch.
13089         * longlong.h (add_ssaaaa) [x86]: Remove lvalue casts.
13090         (sub_ddmmss) [x86]: Likewise.
13092         * tests/devel/try.c (param_init) [TYPE_MPZ_JACOBI]: Add DATA_SRC1_ODD.
13093         (param_init) [TYPE_MPZ_KRONECKER]: Clear inherited DATA_SRC1_ODD.
13094         (param_init) [TYPE_DIVEXACT_1]: Use symbolic name DIVISOR_LIMB.
13096 2005-05-21  Torbjorn Granlund  <tege@swox.com>
13098         * tests/devel/try.c (param_init) [TYPE_MPZ_JACOBI]: Initialize divisor
13099         field according to UDIV_NEEDS_NORMALIZATION.
13101         * mpz/mul_i.h: Remove left-over TMP_XXXX marker arguments.
13103 2005-05-20  Torbjorn Granlund  <tege@swox.com>
13105         * mpn/x86/pentium4/sse2/addmul_1.asm (mpn_addmul_1c): Put carry in
13106         proper register.
13108         * mpn/generic/sqr_basecase.c (mpn_sqr_basecase, addmul_2 version):
13109         Avoid accesses out-of-bound in MPN_SQR_DIAGONAL applicate code.
13111 2005-05-19  Torbjorn Granlund  <tege@swox.com>
13113         * mpn/alpha/diveby3.asm: Make it actually work.
13115         * gmp-impl.h (MULLOW_BASECASE_THRESHOLD_LIMIT): New #define.
13116         * mpn/generic/mullow_n.c: Use fixed stack allocation for the smallest
13117         operands; use TMP_S* allocation for medium operands.
13119         * gmp-impl.h: Remove nested TUNE_PROGRAM_BUILD test.
13121 2005-05-18  Torbjorn Granlund  <tege@swox.com>
13123         * mpn/generic/mul_n.c: Make squaring and multiplication code more
13124         similar.  Use TMP_S* functions.
13126         * gmp-impl.h (TMP_DECL, TMP_MARK, TMP_FREE): Get rid of argument.
13127         (TMP_SALLOC): New macro for "small" allocations.
13128         (TMP_BALLOC): New macro for "big" allocations.
13129         (TMP_SDECL, TMP_SMARK, TMP_SFREE): New macros for functions that use
13130         just TMP_SALLOC.
13131         (WANT_TMP_ALLOCA): Make default functions choose alloca or reentrant
13132         functions, depending on size.
13134         * *.c: Remove TMP_XXXX marker arguments.
13136         * acinclude.m4 (WANT_TMP): Want tal-reent.lo also for alloca case.
13138 2005-05-16  Torbjorn Granlund  <tege@swox.com>
13140         * mpn/ia64/gmp-mparam.h: Further extend FFT tables.
13142 2005-05-15  Torbjorn Granlund  <tege@swox.com>
13144         * gmp-impl.h (udiv_qrnnd_preinv2): Pull an add into add_ssaaaa.
13145         (udiv_qrnnd_preinv2gen): Likewise.
13147 2005-05-14  Torbjorn Granlund  <tege@swox.com>
13149         * longlong.h (add_ssaaaa) [x86_64]: Restrict allowed immediate
13150         operands.
13151         * (sub_ddmmss) [x86_64]: Likewise.
13153 2005-05-02  Torbjorn Granlund  <tege@swox.com>
13155         * acinclude.m4 (GMP_HPC_HPPA_2_0): Make gmp_tmp_v1 sed pattern handle
13156         version numbers like B.11.X.32509-32512.GP.
13158         * mpn/m68k/aors_n.asm: Correct MULFUNC_PROLOGUE.
13160         * mpn/powerpc64/mode64/aors_n.asm: Add a MULFUNC_PROLOGUE.
13162         * mpf/inp_str.c: Use plain int for mpf_set_str return value (works
13163         around gcc 4 bug).
13165         * acinclude.m4 (GMP_ASM_POWERPC_PIC_ALWAYS): Handle darwin's assembly
13166         syntax.
13167         (long long reliability test 1): New GMP_PROG_CC_WORKS_PART test.
13168         (long long reliability test 2): New GMP_PROG_CC_WORKS_PART test.
13170         * configure.in: Add mode64 support for darwin.  Use darwin.m4.
13171         Add cflags_opt flags for mode32 darwin.
13173         * mpn/powerpc64: Use L() for all asm files.
13175         * mpn/asm-defs.m4 (PIC_ALWAYS): Define PIC just iff PIC_ALWAYS = "yes".
13177         * mpn/powerpc64/darwin.m4: New file.
13179         * mpn/powerpc64/linux64.m4: Remove TOCREF, add LDSYM.
13180         Rework DEF_OBJECT to need just one argument.
13181         * mpn/powerpc64/aix.m4: Likewise.
13183         * mpn/powerpc64/mode64/invert_limb.asm: Load approx_tab address with
13184         LDSYM.  Optimize somewhat.  Remove 2nd DEF_OBJECT operand.
13186 2005-05-01  Torbjorn Granlund  <tege@swox.com>
13188         * mpn/generic/popham.c: Compute final summation differently for 64-bit.
13190         * tests/mpz/t-popcount.c (check_random): New function.
13191         (main): Call it.
13193 2005-04-28  Torbjorn Granlund  <tege@swox.com>
13195         * mpn/amd64/add_n.asm: Use r9 instead of rbx to save push/pop.
13196         * mpn/amd64/sub_n.asm: Likewise.
13198 2005-04-09  Torbjorn Granlund  <tege@swox.com>
13200         * mpn/powerpc64/copyi.asm: If HAVE_ABI_mode32, ignore upper 32 bits of
13201         mp_size_t argument.
13202         * mpn/powerpc64/copyd.asm: Likewise.
13203         * mpn/powerpc64/sqr_diagonal.asm: Likewise.
13204         * mpn/powerpc64/lshift.asm: Likewise.
13205         * mpn/powerpc64/rshift.asm: Likewise.
13206         * mpn/powerpc64/logops_n.asm: Likewise.
13207         * mpn/powerpc64/com_n.asm: Likewise.
13209 2005-04-08  Torbjorn Granlund  <tege@swox.com>
13211         * mpn/generic/rootrem.c: Allocate PP_ALLOC limbs also for qp.
13213 2005-04-07  Torbjorn Granlund  <tege@swox.com>
13215         * mpn/powerpc32/add_n.asm: Add nc entry point.
13216         * mpn/powerpc32/sub_n.asm: Likewise.
13218         * mpn/amd64/*.asm: Add Prescott/Nocona cycle/limb numbers.
13220         * mpn/alpha/add_n.asm: Add correct cycle/limb numbers.
13221         * mpn/alpha/sub_n.asm: Likewise.
13222         * mpn/alpha/ev5/add_n.asm: Likewise.
13223         * mpn/alpha/ev5/sub_n.asm: Likewise.
13225 2005-03-31  Torbjorn Granlund  <tege@swox.com>
13227         * mpn/x86/k7/gmp-mparam.h: Fix typo in last change.
13229 2005-03-19  Torbjorn Granlund  <tege@swox.com>
13231         * mpn/amd64/gmp-mparam.h: Update.
13233         * mpn/alpha/gmp-mparam.h: Update.
13234         * mpn/alpha/ev5/gmp-mparam.h: Update.
13235         * mpn/alpha/ev6/gmp-mparam.h: Update.
13237         * mpn/ia64/gmp-mparam.h: Update.
13239         * mpn/x86/p6/mmx/gmp-mparam.h: Update.
13240         * mpn/x86/pentium4/sse2/gmp-mparam.h: Update.
13241         * mpn/x86/k7/gmp-mparam.h: Update.
13243         * tests/mpz/t-gcd.c (main): Honor command line reps argument.
13245         * tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL): Simplify and correct code
13246         for generating test operands.
13248 2005-03-17  Niels Möller  <nisse@lysator.liu.se>
13250         * mpn/generic/hgcd.c (qstack_adjust): New argument d, saying how much
13251         to adjust the top quotient.
13252         (hgcd_adjust): The quotient can be off by either 1 or 2.
13254 2005-03-16  Torbjorn Granlund  <tege@swox.com>
13256         * tests/mpz/t-gcd.c (MAX_SCHOENHAGE_THRESHOLD): Set to largest of
13257         gcd,gcdext thresholds.
13259 2005-03-15  Niels Möller  <nisse@lysator.liu.se>
13261         * mpn/generic/gcdext.c (gcdext_schoenhage): When calling gcdext_lehmer,
13262         reuse all temporary limb storage, including the storage used for the
13263         qstack.
13265 2005-03-09  Torbjorn Granlund  <tege@swox.com>
13267         * mpn/amd64/logops_n.asm: Add MULFUNC_PROLOGUE.
13269 2005-03-05  Torbjorn Granlund  <tege@swox.com>
13271         * mpn/amd64/gmp-mparam.h: Extend MUL_FFT_TABLE and SQR_FFT_TABLE.
13272         * mpn/ia64/gmp-mparam.h: Likewise.
13274 2005-02-17  Torbjorn Granlund  <tege@swox.com>
13276         * mpn/ia64/divrem_1.asm: Add preinv entry point.
13278 2005-01-13  Torbjorn Granlund  <tege@swox.com>
13280         * gmp-impl.h (MPN_SIZEINBASE): Count bits in type size_t.
13281         (MPN_SIZEINBASE_16): Likewise.
13283 2004-12-17  Torbjorn Granlund  <tege@swox.com>
13285         * tune/speed.c (run_gnuplot): Use lines, not linespoints.
13286         Output a reset gnuplot command initially.
13288 2004-12-04  Torbjorn Granlund  <tege@swox.com>
13290         * mpn/generic/random2.c (gmp_rrandomb): Rework again.
13291         * mpz/rrandomb.c (gmp_rrandomb): Likewise.
13293         * mpn/amd64/redc_1.asm: Call via PLT when PIC.
13295 2004-11-29  Torbjorn Granlund  <tege@swox.com>
13297         * mpn/amd64/divrem_1.asm: Add preinv entry point.
13298         * mpn/amd64/gmp-mparam.h: Set USE_PREINV_DIVREM_1 to 1.
13300 2004-11-24  Torbjorn Granlund  <tege@swox.com>
13302         * mpn/alpha/diveby3.asm: Use correct prefetch instruction.
13304 2004-11-19  Torbjorn Granlund  <tege@swox.com>
13306         * mpn/alpha/diveby3.asm: Add ",gp" glue in PROLOGUE.
13307         Add r31 dummy operand to `br' instruction.
13309 2004-11-17  Torbjorn Granlund  <tege@swox.com>
13311         * mpn/powerpc64/mode64/addmul_1.asm: Rewrite.
13312         * mpn/powerpc64/mode64/mul_1.asm: Rewrite.
13314         * configure.in: Invoke AC_C_RESTRICT.
13316 2004-11-16  Torbjorn Granlund  <tege@swox.com>
13318         * mpn/alpha/diveby3.asm: New file.
13320 2004-11-13  Torbjorn Granlund  <tege@swox.com>
13322         * mpn/amd64/popham.asm: New file.
13324 2004-11-12  Torbjorn Granlund  <tege@swox.com>
13326         * mpn/amd64/add_n.asm: Correct cycle count.
13327         * mpn/amd64/sub_n.asm: Likewise.
13329         * mpn/amd64/dive_1.asm: Speed divisors with many factors of 2.
13331 2004-11-11  Torbjorn Granlund  <tege@swox.com>
13333         * mpn/amd64/dive_1.asm: New file.
13335 2004-11-10  Torbjorn Granlund  <tege@swox.com>
13337         * mpn/generic/popham.c: Add comment.
13339 2004-11-09  Torbjorn Granlund  <tege@swox.com>
13341         * mpn/amd64/com_n.asm: New file.
13343         * mpn/amd64/logops_n.asm: New file.
13345 2004-11-08  Torbjorn Granlund  <tege@swox.com>
13347         * mpn/powerpc64/com_n.asm: New file.
13349 2004-11-05  Torbjorn Granlund  <tege@swox.com>
13351         * mpn/amd64/diveby3.asm: New file.
13353         * config.guess: Strip any PPC string in /proc/cpuinfo.
13354         Recognize 970 in that code.
13356 2004-11-01  Torbjorn Granlund  <tege@swox.com>
13358         * mpn/amd64/mul_basecase.asm: New file.
13360         * mpn/amd64/redc_1.asm: New file.
13362 2004-10-25  Torbjorn Granlund  <tege@swox.com>
13364         * mpn/powerpc64/mode64/addlsh1_n.asm: Correct cycle counts.
13366         * mpn/powerpc64/README: Update POWER5/PPC970 pipeline information.
13368         * mpn/generic/mul_basecase.c (MAX_LEFT): Add comment.
13370         * doc/gmp.texi: Consistently use "x86" denotation.
13371         (Assembler SIMD Instructions): Mention SSE2 usage.
13373         * demos/pexpr.c (main): Handle "negative" base in mpz_sizeinbase call.
13375 2004-10-18  Torbjorn Granlund  <tege@swox.com>
13377         * mpn/powerpc64/mode64/submul_1.asm: Shave 2 cycles/limb with new carry
13378         inversion trick.
13380 2004-10-16  Torbjorn Granlund  <tege@swox.com>
13382         * configure.in: Support icc under x86.
13383         (ia64-*-linux*): Pass -no-gcc to icc.
13385 2004-10-15  Torbjorn Granlund  <tege@swox.com>
13387         * longlong.h (ia64 umul_ppmm): Add version for icc.
13389         * configure.in: Support icc under ia64-*-linux*.
13391         * acinclude.m4: New "compiler works" test for icc 8.1 bug.
13392         (GMP_PROG_CC_IS_GNU): Don't let Intel's icc fool us it is GCC.
13394 2004-10-14  Torbjorn Granlund  <tege@swox.com>
13396         * mpn/generic/gcdext.c: Add a few missing TMP_MARK.
13398 2004-10-14  Torbjorn Granlund  <tege@swox.com>
13400         * acinclude.m4 (GMP_ASM_W32): Try also "data4".
13402         * mpn/ia64/logops_n.asm: Don't use naked "br", rejected by Intel
13403         assembler.
13404         * mpn/ia64/aors_n.asm: Likewise.
13406         * mpn/ia64/divrem_2.asm: Add ".prologue".
13408         * mpn/ia64/hamdist.asm: Put alloc first in bundle, enforced by the
13409         Intel assembler.
13411         * longlong.h: Exclude masquerading __INTEL_COMPILER from ia64 asm.
13412         * gmp-impl.h: Likewise.
13414 2004-10-12  Torbjorn Granlund  <tege@swox.com>
13416         * mpn/ia64/mul_2.asm: Rewrite function entry code, write new code for
13417         n=2.
13418         * mpn/ia64/addmul_2.asm: Likewise.
13420         * tests/devel/try.c: Handle mpn_mul_2 like mpn_addmul_2.
13422         * tune/speed.c (routine): Make R parameter optional for mpn_mul_2.
13424 2004-10-11  Torbjorn Granlund  <tege@swox.com>
13426         * mpn/sparc64/addmul_1.asm: Update a comment.
13428         * tests/devel/aors_n.c: #include tests.h.
13429         * tests/devel/anymul_1.c: Likewise.
13430         * tests/devel/shift.c: Likewise.
13431         * tests/devel/copy.c: Likewise.
13433         * tests/devel/aors_n.c: Handle also mpn_addlsh1_n, mpn_sublsh1_n,
13434         mpn_rsh1add_n, and mpn_rsh1sub_n.
13436         * mpn/ia64/submul_1.asm: Add TODO item.
13438         * mpn/ia64/aors_n.asm: Rewrite function entry code (again).
13439         * mpn/ia64/aorslsh1_n.asm: Likewise.
13440         * mpn/ia64/logops_n.asm: Likewise.
13442         * mpn/ia64/rsh1aors_n.asm: Tune function entry and feed-in code.
13443         * mpn/ia64/lorrshift.asm: Likewise.  Remove several spurious loads.
13445         * tests/devel/Makefile.am (EXTRA_PROGRAMS): Updates for yesterday's
13446         file removals and additions.
13448 2004-10-10  Torbjorn Granlund  <tege@swox.com>
13450         * mpn/ia64/copyi.asm: Tune function entry code.
13451         * mpn/ia64/copyd.asm: Likewise.
13453         * mpn/ia64/logops_n.asm: Tune function entry and feed-in code for speed
13454         and size.
13455         * mpn/ia64/aors_n.asm: Likewise.
13457         * mpn/powerpc64/logops_n.asm: Correct cycles counts.
13458         * mpn/powerpc64/mode64/aors_n.asm: Likewise.
13460         * tests/devel/copy.c: Handle both MPN_COPY_INCR and MPN_COPY_DECR.
13462         * tests/devel/logops_n.c: New file, handle all logical operations.
13464         * tests/devel/anymul_1.c: New file, handle mpn_mul_1, mpn_addmul_1, and
13465         mpn_submul_1
13466         * tests/devel/mul_1.c: Remove.
13467         * tests/devel/addmul_1.c: Remove.
13468         * tests/devel/submul_1.c: Remove.
13470         * tests/devel/shift.c: New file, handle mpn_lshift and mpn_rshift.
13471         * tests/devel/lshift.c: Remove.
13472         * tests/devel/rshift.c: Remove.
13474         * tests/devel/aors_n.c: New file, handle mpn_add_n and mpn_sub_n.
13475         * tests/devel/add_n.c: Remove.
13476         * tests/devel/sub_n.c: Remove.
13478 2004-10-09  Torbjorn Granlund  <tege@swox.com>
13480         * mpn/powerpc64/linux64.m4: Define DEF_OBJECT, END_OBJECT, and TOCREF.
13481         * mpn/powerpc64/aix.m4: Likewise.
13482         * mpn/powerpc64/mode64/invert_limb.asm: Use DEF_OBJECT, END_OBJECT, and
13483         TOCREF for approx_tab.
13485         * mpn/amd64/mul_1.asm: Add mpn_mul_1c entry point.
13487 2004-10-08  Torbjorn Granlund  <tege@swox.com>
13489         * mpn/powerpc64/copyi.asm: New file.
13490         * mpn/powerpc64/copyd.asm: New file.
13491         * gmp-h.in: Remove PPC MPN_COPY variants.
13492         * gmp-impl.h: Likewise.
13494         * mpn/powerpc64/logops_n.asm: New file.
13496         * mpn/powerpc64/mode64/invert_limb.asm: New file.
13498 2004-10-07  Torbjorn Granlund  <tege@swox.com>
13500         * mpn/powerpc64/mode64/aors_n.asm: New file, optimized for POWER4 and
13501         its derivatives.
13502         * mpn/powerpc64/mode64/add_n.asm: Delete.
13503         * mpn/powerpc64/mode64/sub_n.asm: Delete.
13505         * configfsf.guess: Patch HP-UX code to accommodate HP compiler's new
13506         inability to read from stdin.
13508         * mpn/powerpc64/mode64/addsub_n.asm: Remove accidentally added file.
13510 2004-10-02  Torbjorn Granlund  <tege@swox.com>
13512         * mpn/amd64/README: Update for new developments, fix typos.
13514         * mpn/amd64/mul_1.asm: Tweak addressing (3.25 => 3.0 cycles/limb).
13516         * mpn/amd64/addmul_1.asm: Remove unreachable code block.
13518 2004-09-30  Torbjorn Granlund  <tege@swox.com>
13520         * mpn/amd64/addmul_1.asm: Rewrite, now 3.25 cycles/limb.
13522         * mpn/ia64/addmul_1.asm: Slightly enhance cross-jumping for code
13523         density.
13524         * mpn/ia64/mul_1.asm: Analogous changes.
13526 2004-09-29  Torbjorn Granlund  <tege@swox.com>
13528         * gmp-impl.h (x86 ULONG_PARITY): Work around GCC change of "q" register
13529         flag.
13531 2004-09-28  Torbjorn Granlund  <tege@swox.com>
13533         * mpn/ia64/divrem_1.asm: Add cycle counts to loop.
13535         * mpn/ia64/divrem_2.asm: New file.
13537 2004-09-28  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
13539         * mpn/generic/mul_fft.c (mpn_mul_fft): Fix a bug in the choice of the
13540         recursive fft parameters.
13542 2004-09-20  Torbjorn Granlund  <tege@swox.com>
13544         * tests/misc.c (tests_rand_start): Default to strtoul for re-seeding.
13546         * tests/mpz/t-mul.c (ref_mpn_mul): Fudge tmp allocation for toom3.
13548 2004-09-19  Torbjorn Granlund  <tege@swox.com>
13550         * tests/misc.c (tests_rand_start): Shift tv_usec for better seeding.
13552 2004-09-18  Torbjorn Granlund  <tege@swox.com>
13554         * tests/misc.c (tests_rand_start): Invoke fflush after printing seed.
13556         * tests/mpz/t-mul.c (main): Check environment for GMP_CHECK_FFT, run
13557         extra FFT tests if set.
13558         (ref_mpn_mul): Use library code for kara and toom, but skewded so that
13559         we never use the same algorithm that we're testing.
13560         (mul_kara): Delete.
13561         (debug_mp): Print just one line of large numbers.
13562         (ref_mpn_mul): Rework usage of tp temporary space.
13564 2004-09-15  Torbjorn Granlund  <tege@swox.com>
13566         * mpn/ia64/mul_2.asm: For HAVE_ABI_32, convert vp.
13567         * mpn/ia64/addmul_2.asm: Likewise.
13569 2004-09-13  Torbjorn Granlund  <tege@swox.com>
13571         * mpn/ia64/invert_limb.asm: Rewrite.
13573         * mpn/ia64/logops_n.asm: Insert some more stops.
13575 2004-09-12  Torbjorn Granlund  <tege@swox.com>
13577         * mpn/ia64/gmp-mparam.h: Update.
13578         * mpn/amd64/gmp-mparam.h: Update.
13580         * mpn/ia64/sqr_diagonal.asm: Shave off a few cycles.
13582 2004-09-11  Torbjorn Granlund  <tege@swox.com>
13584         * mpn/ia64/mul_2.asm: New file.
13585         * mpn/ia64/addmul_2.asm: New file.
13587         * mpn/ia64/addmul_1.asm: Tune a cycle from prologue.
13589         * mpn/ia64/lorrshift.asm: Insert stops after several branches.
13590         * mpn/ia64/aorslsh1_n.asm: Likewise.
13591         * mpn/ia64/rsh1aors_n.asm: Likewise.
13593         * mpn/generic/sqr_basecase.c: In variant for HAVE_NATIVE_mpn_addmul_2,
13594         accumulate carry also for when HAVE_NATIVE_mpn_addlsh1_n.
13596 2004-09-07  Torbjorn Granlund  <tege@swox.com>
13598         * mpn/ia64/submul_1.asm: Rewrite.
13600         * mpn/ia64/addmul_1.asm: Format to placate HP-UX assembler.
13601         * mpn/ia64/mul_1.asm: Likewise.
13603 2004-09-02  Torbjorn Granlund  <tege@swox.com>
13605         * mpn/ia64/mul_1.asm: Optimize feed-in code.
13606         * mpn/ia64/addmul_1.asm: Rewrite feed-in code.
13608 2004-08-29  Torbjorn Granlund  <tege@swox.com>
13610         * tests/mpz/t-sizeinbase.c: Disable mpz_fake_bits and check_sample.
13612 2004-07-16  Torbjorn Granlund  <tege@swox.com>
13614         * mpn/ia64/addmul_1.asm: Format to placate HP-UX assembler.
13616 2004-06-17  Kevin Ryde  <kevin@swox.se>
13618         * doc/gmp.texi: Use @. when sentence ends with a capital, for good
13619         spacing in tex.
13620         (Language Bindings): Add gmp-d, reported by Ben Hinkle.  Update SWI
13621         Prolog URL, reported by Jan Wielemaker.
13623 2004-06-09  Torbjorn Granlund  <tege@swox.com>
13625         * configure.in: Handle --enable-fat.  Use that to enable x86 fat
13626         builds, remove magic meaning of i386-*-*.
13628 2004-06-03  Kevin Ryde  <kevin@swox.se>
13630         * gmp-impl.h (memset): Use a local char* pointer, in case parameter is
13631         something else (eg. tune/common.c).  Reported by Emmanuel Thomé.
13633 2004-06-01  Kevin Ryde  <kevin@swox.se>
13635         * config.guess (i?86-*-*): Avoid "Illegal instruction" message which
13636         goes to stdout on 80386 freebsd4.9.
13638 2004-05-23  Niels Möller  <nisse@lysator.liu.se>
13640         * mpn/generic/gcdext.c (gcdext_1_u): New function.
13641         (mpn_gcdext): Use it.
13643 2004-05-23  Torbjorn Granlund  <tege@swox.com>
13645         * mpn/generic/gcdext.c (gcdext_1_odd): Use masking to avoid jumps.
13647 2004-05-22  Torbjorn Granlund  <tege@swox.com>
13649         * mpn/x86/pentium4/sse2/addmul_1.asm: Add Prescott cycle numbers.
13651         * mpn/amd64/divrem_1.asm: Shave a cycle from fraction development code.
13653         * mpn/powerpc32/lshift.asm: Add more cycle numbers.
13654         * mpn/powerpc32/rshift.asm: Likewise.
13656         * mpn/ia64/addmul_1.asm: Reformat.
13658 2004-05-21  Torbjorn Granlund  <tege@swox.com>
13660         * gmp-impl.h (mpn_mullow_n, mpn_mullow_basecase): Declare.
13662         * tune/Makefile.am: Compile gcdext.c.
13664         * gmp-impl.h (GET_STR_THRESHOLD_LIMIT): Lower outrageous value to 150.
13665         (GCDEXT_SCHOENHAGE_THRESHOLD): Set reasonable default.  Override when
13666         TUNE_PROGRAM_BUILD.
13667         (GCDEXT_THRESHOLD): Remove.
13669         * tune/tuneup.c (gcdext_schoenhage_threshold): New variable.
13670         (gcdext_threshold): Remove variable.
13671         (tune_gcd_schoenhage): Lower step_factor to 0.1.
13672         (tune_gcdext_schoenhage): New function, based on tune_gcd_schoenhage.
13673         (tune_gcdext): Remove function.
13674         (all): Corresponding changes.
13676 2004-05-21  Niels Möller  <nisse@lysator.liu.se>
13678         * mpn/generic/gcdext.c: Complete rewrite.  Uses fast Lehmer code for
13679         small operands, and Schoenhage code for large operands.
13681         * tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL): Ensure first operand is
13682         not smaller than 2nd operand.
13684 2004-05-17  Kevin Ryde  <kevin@swox.se>
13686         * gmp-h.in (mpz_get_ui): Use #if instead of plain if, and for nails
13687         use ?: same as normal case, to avoid warnings from Borland C++ 6.0.
13688         Reported by delta trinity.
13690 2004-05-15  Kevin Ryde  <kevin@swox.se>
13692         * tune/time.c (getrusage_backwards_p): New function
13693         (speed_time_init): Use it to exclude broken netbsd1.4.1 getrusage.
13694         * configure.in (m68*-*-netbsd1.4*): Remove code pretending getrusage
13695         doesn't exist.
13696         * tune/README (NetBSD 1.4.1 m68k): Update notes.
13698         * configure.in (mips*-*-* ABI=n32): Remove gcc_n32_ldflags and
13699         cc_n32_ldflags, libtool knows to put the linker in n32 mode.
13701 2004-05-15  Torbjorn Granlund  <tege@swox.com>
13703         * config.guess (powerpc*-*-*): Add more processor types to mfpvr code.
13704         * configure.in: Generalize powerpc subtype matching code.
13706         * mpz/fac_ui.c: Misc cleanups, spelling corrections.
13708 2004-05-14  Kevin Ryde  <kevin@swox.se>
13710         * mpf/sub.c: When one operand cancels high limbs of the other, strip
13711         high zeros on the balance before truncating to destination precision.
13712         Truncating first loses accuracy and can lead to a result 0 despite
13713         operands being not equal.  Reported by John Abbott.
13714         Also, ensure exponent is zero when result is zero, for instance if
13715         operands are exactly equal.
13716         * tests/mpf/t-sub.c (check_data): New function, exercising these.
13718 2004-05-12  Kevin Ryde  <kevin@swox.se>
13720         * configure.in (AC_PROG_RANLIB): New macro, supposedly required by
13721         automake, though it doesn't complain.
13723         * demos/expr/Makefile.am (ARFLAGS): Add a default setting, to
13724         workaround an automake bug.
13726 2004-05-10  Kevin Ryde  <kevin@swox.se>
13728         * */Makefile.in, install-sh, aclocal.m4: Update to automake 1.8.4.
13730         * doc/gmp.texi (Demonstration Programs): Add a remark about expression
13731         evaluation in the main gmp library.
13733         * demos/expr/exprfa.c (mpf_expr_a): Correction to mpX_init, use
13734         mpf_init2 to follow requested precision.
13735         * demos/expr/exprza.c, demos/expr/exprqa.c: Use wrappers for mpX_init,
13736         to make parameters match.
13738         * demos/expr/run-expr.c: Don't use getopt, to avoid needing configury
13739         for optarg declaration.  Remove TRY macro, rename foo and bar to var_a
13740         and var_b, for clarity.
13741         * demos/expr/expr-impl.h: Don't use expr-config.h.
13742         * configure.in (demos/expr/expr-config.h): Remove.
13743         * demos/expr/expr-config.in: Remove file.
13745 2004-05-08  Kevin Ryde  <kevin@swox.se>
13747         * doc/configuration (Configure): Update for current automake not
13748         copying acinclude.m4 into aclocal.m4.
13750         * configure.in, Makefile.am, doc/gmp.texi, doc/configuration,
13751         tests/cxx/Makefile.am, demos/expr/Makefile.am, demos/expr/README,
13752         demos/expr/expr.c, demos/expr/expr.h, demos/expr/expr-config-h.in,
13753         demos/expr/expr-impl.h, demos/expr/run-expr.c, demos/expr/t-expr.c:
13754         MPFR now published separately, remove various bits.
13755         * mpfr/*, tests/cxx/t-headfr.cc, demos/expr/exprfr.c,
13756         demos/expr/exprfra.c: Remove.
13758 2004-05-07  Kevin Ryde  <kevin@swox.se>
13760         * tests/cxx/Makefile.am (TESTS_ENVIRONMENT): Amend c++ shared library
13761         path hack, on k62-unknown-dragonfly1.0 /usr/bin/make runs its commands
13762         "set -e", so we need an "|| true" in case there's nothing to copy (for
13763         instance in a static build).
13765 2004-05-06  Kevin Ryde  <kevin@swox.se>
13767         * mpn/alpha/mode1o.c: Remove, in favour of ...
13768         * mpn/alpha/mode1o.asm: New file.
13769         * mpn/alpha/alpha-defs.m4 (bwx_available_p): New macro.
13771         * tune/amd64.asm: Save rbx in r10 rather than on the stack.
13773         * configure.in (x86_64-*-*): Try also "-march=k8 -mno-sse2", in case
13774         we're in ABI=32 on an old OS not supporting xmm regs.
13775         (GMP_GCC_PENTIUM4_SSE2, GMP_OS_X86_XMM): Run these tests under
13776         -march=k8 too, and not under ABI=64.
13778         * doc/gmp.texi (Converting Integers): For mpz_get_d, note truncation
13779         and overflows.  For mpz_get_d_2exp note truncation, note result if
13780         OP==0, and cross reference libc frexp.
13781         (Rational Conversions): For mpq_get_d, note truncation and overflows.
13782         (Converting Floats): For mpf_get_d, note truncation and overflows.
13783         For mpf_get_d_2exp, note truncation, note result if OP==0.
13784         (Assembler Code Organisation): Note nails subdirectories.
13785         Clarification of get_d_2exp OP==0 reported by Sylvain Pion.
13787 2004-05-05  Torbjorn Granlund  <tege@swox.com>
13789         * mpn/generic/mullow_n.c, mpn/generic/mullow_basecase.c: New files
13790         (mainly by Niels Möller).
13791         * configure.in, mpn/Makefile.am: Add them.
13793         * gmp-impl.h (MULLOW_BASECASE_THRESHOLD, MULLOW_DC_THRESHOLD,
13794         MULLOW_MUL_N_THRESHOLD): Override for TUNE_PROGRAM_BUILD.
13796         * tune/Makefile.am: Compile mullow_n.c.
13797         * tune/common.c (speed_mpn_mullow_n, speed_mpn_mullow_basecase):
13798         New functions.
13799         * tune/speed.c (routine): Add entries for mpn_mullow_n and
13800         mpn_mullow_basecase.
13801         * tune/speed.h (SPEED_ROUTINE_MPN_MULLOW_N_CALL,
13802         SPEED_ROUTINE_MPN_MULLOW_BASECASE): New #defines.
13803         * tune/tuneup.c (tune_mullow): New function.
13805         * gmp-impl.h (invert_limb): Compute branch-freely.
13807 2004-05-02  Kevin Ryde  <kevin@swox.se>
13809         * mpn/amd64/mode1o.asm: Use movabsq to support large model non-PIC.
13810         Use 32-bit insns to save code bytes, and to save a couple of cycles on
13811         the initial setup multiplies.
13813 2004-05-01  Kevin Ryde  <kevin@swox.se>
13815         * doc/gmp.texi (References): Update gcc online docs url to
13816         gcc.gnu.org.
13818         * configure.in (mips*-*-irix[6789]*): Correction to m4 quoting of this
13819         pattern.  (Believe the mips64*-*-* part also used picks up all current
13820         irix6 tuples anyway.)  Reported by Rainer Orth.
13822 2004-04-30  Kevin Ryde  <kevin@swox.se>
13824         * acinclude.m4 (GMP_PROG_CC_X86_GOT_EAX_EMITTED,
13825         GMP_ASM_X86_GOT_EAX_OK): New macros.
13826         (GMP_PROG_CC_WORKS): Use them to detect an old gas bug tickled by
13827         recent gcc.  Reported by David Newman.
13829         * doc/gmp.texi (Reentrancy): Note also gmp_randinit_default as an
13830         alternative to gmp_randinit.
13832 2004-04-29  Torbjorn Granlund  <tege@swox.com>
13834         * configfsf.guess: Update to 2004-03-12.
13835         * configfsf.sub: Likewise.
13837 2004-04-27  Torbjorn Granlund  <tege@swox.com>
13839         * mpz/rrandomb.c (gmp_rrandomb): Rework to avoid extra limb allocation
13840         and to generate even numbers.
13841         * mpn/generic/random2.c (gmp_rrandomb): Likewise.
13843 2004-04-25  Kevin Ryde  <kevin@swox.se>
13845         * gmp-impl.h (FORCE_DOUBLE): Don't use an asm with a match constraint
13846         on a memory output, apparently not supported and provokes a warning
13847         from gcc 3.4.
13849 2004-04-24  Kevin Ryde  <kevin@swox.se>
13851         * longlong.h (count_leading_zeros_gcc_clz,
13852         count_trailing_zeros_gcc_ctz): New macros.
13853         (count_leading_zeros, count_trailing_zeros) [x86]: Use them on gcc
13854         3.4.
13856         * configure.in (x86-*-* gcc_cflags_cpu): Give a -mtune at the start of
13857         each option list, for use by gcc 3.4 to avoid deprecation warnings
13858         about -mcpu.
13860         * mpz/aorsmul.c, mpz/aorsmul_i.c, mpz/cfdiv_q_2exp.c,
13861         mpz/cfdiv_r_2exp.c, mpq/aors.c, mpf/ceilfloor.c: Give REGPARM_ATTR()
13862         on function definition too, as demanded by gcc 3.4.
13864 2004-04-22  Kevin Ryde  <kevin@swox.se>
13866         * tests/rand/t-lc2exp.c (check_bigc1): New test.
13868         * doc/fdl.texi: Tweak @appendixsubsec -> @appendixsec to match our
13869         preference for this in an @appendix, and because texi2pdf doesn't
13870         support @appendixsubsec directly within an @appendix.
13872 2004-04-20  Kevin Ryde  <kevin@swox.se>
13874         * doc/texinfo.tex: Update to 2004-04-07.08 from texinfo 4.7.
13875         * doc/gmp.texi, mpfr/mpfr.texi (@copying): Don't put a line break in
13876         @ref within @copying, recent texinfo.tex doesn't like that.
13878         * demos/perl/GMP.xs (static_functable): Treat cygwin the same as mingw
13879         DLLs.
13881         * */Makefile.in, install-sh: Update to automake 1.8.3.
13882         * ltmain.sh, aclocal.m4, configure: Update to libtool 1.5.6.
13884         * gmp-impl.h (LIMB_HIGHBIT_TO_MASK): Use a compile-time constant
13885         expression, rather than a configure test.
13886         * acinclude.m4, configure.in (GMP_C_RIGHT_SHIFT): Remove, no longer
13887         needed.
13888         * tests/t-hightomask.c: New file.
13889         * tests/Makefile.am (check_PROGRAMS): Add it.
13891         * macos/configure (parse_top_configure): Look for PACKAGE_NAME and
13892         PACKAGE_VERSION now used by autoconf.
13893         (what_objects): Only demand 9 object files, as for instance occurs in
13894         the scanf directory.
13895         (asm files): Transform labels L(foo) -> Lfoo.  Take func name from
13896         PROLOGUE to support empty "EPILOGUE()".  Recognise and substitute
13897         register name "define()"s.
13898         * macos/Makefile.in (CmnObjs): Add tal-notreent.o.
13900 2004-04-19  Torbjorn Granlund  <tege@swox.com>
13902         * tune/speed.h (SPEED_ROUTINE_MPN_ROOTREM): New #define.
13903         (speed_mpn_rootrem): Declare.
13904         * tune/common.c (speed_mpn_rootrem): New function.
13905         * tune/speed.c (routine): Add entry for mpn_rootrem.
13907 2004-04-16  Kevin Ryde  <kevin@swox.se>
13909         * doc/fdl.texi: Update from FSF, just fixing a couple of typos.
13911         * macos/configure, macos/Makefile.in: Add printf and scanf directories.
13913         * tests/mpz/t-gcd.c (check_data): New function, exercising K6
13914         gcd_finda bug.
13916 2004-04-14  Kevin Ryde  <kevin@swox.se>
13918         * doc/gmp.texi (Reentrancy, Random State Initialization): Note
13919         gmp_randinit use of gmp_errno is not thread safe.  Reported by Vincent
13920         Lefèvre.
13922         * doc/gmp.texi (Random State Initialization): Add index entries for
13923         gmp_errno and constants.
13925         * mpn/m68k/README: Update _SHORT_LIMB -> __GMP_SHORT_LIMB.
13927         * configure.in (--enable-mpbsd): Typo Berkley -> Berkeley in help msg.
13929 2004-04-12  Kevin Ryde  <kevin@swox.se>
13931         * demos/perl/GMP.xs (static_functable): New macro, use it for all
13932         function tables, to support mingw DLL builds.
13933         * demos/perl/INSTALL (NOTES FOR PARTICULAR SYSTEMS): Remove note on
13934         DLLs, should be ok now.
13936         * demos/perl/sample.pl: Print the module and library versions in use.
13938         * demos/perl/GMP.pm, Makefile.PL (VERSION): Set to '2.00'.
13939         * demos/perl/GMP.pm (COPYRIGHT): New in the doc section.
13941         * Makefile.am: Note 4.1.3 libtool versioning info, and REVISION policy.
13943         * tal-debug.c: Add <stdlib.h> for abort.
13945 2004-04-07  Torbjorn Granlund  <tege@swox.com>
13947         * tests/refmpf.c (refmpf_add_ulp): Adjust exponent when needed.
13949         * mpn/generic/random2.c: Rewrite (clone mpz/rrandomb.c).
13951 2004-04-07  Kevin Ryde  <kevin@swox.se>
13953         * mpn/x86/k6/gcd_finda.asm: Correction jbe -> jb in initial setups.
13954         Zero flag is wrong here, it relects only the high limb of the compare,
13955         leading to n1>=n2 not satisfied and wrong results.  cp[1]==0x7FFFFFFF
13956         with cp[0]>=0x80000001 provokes this.
13958         * doc/gmp.texi (BSD Compatible Functions): Note "pow" name clash under
13959         the pow function description too.
13960         (Language Bindings): Add XEmacs (betas at this stage).  Reported by
13961         Jerry James.
13963         * tests/refmpn.c (refmpn_mod2): Correction to ASSERTs, r==a is allowed.
13965         * gen-psqr.c (generate_mod): Cast mpz_invert_ui_2exp args, for K&R.
13966         * gen-bases.c, gen-fib.c, gen-psqr.c: For mpz_out_str, use stdout
13967         instead of 0, in case a K&R treats int and FILE* params differently.
13969 2004-04-04  Kevin Ryde  <kevin@swox.se>
13971         * gmp-impl.h (BSWAP_LIMB) [amd64]: New macro.
13972         (FORCE_DOUBLE): Use this for amd64 too.
13974         * tests/amd64check.c, tests/amd64call.asm: New files, derived in part
13975         from x86check.c and x86call.asm.
13976         * tests/Makefile.am (EXTRA_libtests_la_SOURCES): Add them.
13977         * configure.in (x86_64-*-* ABI=64): Use them.
13979 2004-04-03  Kevin Ryde  <kevin@swox.se>
13981         * mpn/amd64/mode1o.asm: New file.
13982         * mpn/amd64/amd64-defs.m4 (ASSERT): New macro.
13984         * mpn/x86/k7/mmx/divrem_1.asm, mpn/x86/pentium4/sse2/divrem_1.asm: Add
13985         note on how "dr" part of algorithm is handled.
13987         * mpn/x86/k7/dive_1.asm, mpn/x86/k7/mod_34lsub1.asm,
13988         mpn/x86/k7/mode1o.asm: Note Hammer (32-bit mode) speeds.
13990 2004-03-31  Kevin Ryde  <kevin@swox.se>
13992         * doc/gmp.texi (Language Bindings): Add GOO, MLGMP and Numerix.
13994         * mpf/mul_2exp.c, mpf/div_2exp.c: Rate u==0 as UNLIKELY.
13996 2004-03-28  Torbjorn Granlund  <tege@swox.com>
13998         * mpn/amd64/divrem_1.asm: Trim a few cycles.
14000 2004-03-27  Torbjorn Granlund  <tege@swox.com>
14002         * mpn/amd64/sublsh1_n.asm: Fix typo.
14004         * mpn/generic/divrem_1.c: Fix typo.
14006         * mpn/generic/sqr_basecase.c: Fix typo.
14008         * mpn/amd64/divrem_1.asm: New file.
14010 2004-03-20  Kevin Ryde  <kevin@swox.se>
14012         * longlong.h (power, powerpc): Add comments on how we select this code.
14014         * gmp-h.in (mpz_get_ui): Use ?: instead of mask style, gcc treats the
14015         two identically but ?: is a bit clearer.
14017         * insert-dbl.c: Remove file, no longer used, scaling is now integrated
14018         in mpn_get_d.
14019         * Makefile.am (libgmp_la_SOURCES): Remove insert-dbl.c.
14020         * gmp-impl.h (__gmp_scale2): Remove prototype.
14022 2004-03-17  Kevin Ryde  <kevin@swox.se>
14024         * mpn/x86/fat/fat.c (__gmpn_cpuvec_init, fake_cpuid_table): Add x86_64.
14026         * mpq/get_d.c: Use mpn_tdiv_qr, demand den>0 per canonical form.
14028 2004-03-16  Torbjorn Granlund  <tege@swox.com>
14030         * mpn/generic/sqr_basecase.c: Add versions using mpn_addmul_2 and
14031         mpn_addmul_2s.
14033 2004-03-14  Kevin Ryde  <kevin@swox.se>
14035         * mpf/mul_ui.c: Incorporate carry from low limbs, for exactness.
14036         * tests/mpf/t-mul_ui.c: New file.
14037         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
14039         * mpf/div.c: Use mpn_tdiv_qr.  Use just one TMP_ALLOC.  Use full
14040         divisor, since truncating can lose accuracy.
14041         * tests/mpf/t-div.c: New file.
14042         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
14044         * tests/mpf/t-set_q.c, tests/mpf/t-ui_div.c (check_various): Amend
14045         bogus 99/4 test.
14046         * tests/mpf/t-ui_div.c (check_rand): Exercise r==v overlap.
14048         * tests/refmpf.c, tests/tests.h (refmpf_set_overlap): New function.
14050         * mpf/cmp_si.c [nails]: Correction, cast vval in exp comparisons, for
14051         when vval=-0x800..00 and limb==longlong.
14053         * mpf/cmp_si.c [nails]: Correction, return usign instead of 1 when
14054         uexp==2 but value bigger than an mp_limb_t.
14055         * tests/mpf/t-cmp_si.c (check_data): Add test cases.
14057         * tests/trace.c (mpf_trace): Use ABS(mp_trace_base) to allow for
14058         negative bases used for upper case hex in integer traces.
14060 2004-03-12  Torbjorn Granlund  <tege@swox.com>
14062         * mpn/generic/sb_divrem_mn.c: Correct header comment.
14064 2004-03-11  Kevin Ryde  <kevin@swox.se>
14066         * aclocal.m4, configure, ltmain.sh: Downgrade to libtool 1.5, version
14067         1.5.2 doesn't remove .libs/*.a files when rebuilding, which is bad for
14068         development when changing contents or with duplicate named files like
14069         we have.
14071         Revert this, ie restore AR_FLAGS=cq:
14072         * acinclude.m4 (GMP_PROG_AR): Remove AR_FLAGS=cq, libtool 1.5.2 now
14073         does this itself on detecting duplicate object filenames in piecewise
14074         linking mode.
14076         * randbui.c, randmui.c [longlong+nails]: Correction to conditionals
14077         for second limb.
14079         * mpz/aors_ui.h, mpz/cdiv_q_ui.c, mpz/cdiv_qr_ui.c, mpz/cdiv_r_ui.c,
14080         mpz/cdiv_ui.c, mpz/fdiv_q_ui.c, mpz/fdiv_qr_ui.c, mpz/fdiv_r_ui.c,
14081         mpz/fdiv_ui.c, mpz/gcd_ui.c, mpz/iset_ui.c, mpz/lcm_ui.c,
14082         mpz/set_ui.c, mpz/tdiv_q_ui.c, mpz/tdiv_qr_ui.c, mpz/tdiv_r_ui.c,
14083         mpz/tdiv_ui.c, mpz/ui_sub.c, mpf/div_ui.c, mpf/mul_ui.c
14084         [longlong+nails]: Amend #if to avoid warnings about shift amount.
14086 2004-03-07  Kevin Ryde  <kevin@swox.se>
14088         * mpf/reldiff.c: Use rprec+ysize limbs for d, to ensure accurate
14089         result.  Inline mpf_abs(d,d) and mpf_cmp_ui(x,0), and rate the latter
14090         UNLIKELY.
14092         * mpf/ui_div.c: Use mpn_tdiv_qr.  Use just one TMP_ALLOC.  Use full
14093         divisor, since truncating can lose accuracy.
14094         * tests/mpf/t-ui_div.c: New file.
14095         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
14097         * mpf/set_q.c: Expand TMP_ALLOC_LIMBS_2, to make conditional clearer
14098         and avoid 1 limb alloc when not wanted.
14100         * gmp-impl.h (WANT_TMP_DEBUG): Define to 0 if not defined.
14101         (TMP_ALLOC_LIMBS_2): Use "if" within macro rather than "#if", for less
14102         preprocessor conditionals.
14104         * mpf/mul_2exp.c, mpf/div_2exp.c: Add some comments.
14106         * tests/refmpn.c (refmpn_sb_divrem_mn, refmpn_tdiv_qr): Nailify.
14108 2004-03-04  Kevin Ryde  <kevin@swox.se>
14110         * gen-psqr.c (print): Add CNST_LIMB in PERFSQR_MOD_TEST, for benefit
14111         of K&R.
14112         * tests/mpn/t-perfsqr.c (PERFSQR_MOD_1): Use CNST_LIMB for K&R.
14114         * doc/configuration (Configure): Remove mkinstalldirs, no longer used.
14116         * acinclude.m4 (GMP_PROG_AR): Remove AR_FLAGS=cq, libtool 1.5.2 now
14117         does this itself on detecting duplicate object filenames in piecewise
14118         linking mode.
14120         * configure.in (hppa2.0*-*-*): Test sizeof(long) == 4 or 8 to verify
14121         ABI=2.0n versus ABI=2.0w.  In particular this lets CC=cc_bundled
14122         correctly fall back to ABI=2.0n (we don't automatically add CC=+DD64
14123         to that compiler, currently).
14125         * doc/gmp.texi (Reentrancy): Note C++ mpf_class constructors using
14126         global default precision.
14127         (Random State Miscellaneous): Describe gmp_urandomb_ui as giving N
14128         bits.
14129         (C++ Interface Floats): Describe operator= copying the value, not the
14130         precision, and what this can mean about copy constructor versus
14131         default constructor plus assignment.
14133         * mpf/set_q.c: Use mpn_tdiv_qr rather than mpn_divrem, so no shifting.
14134         Don't truncate the divisor, it can make the result inaccurate.
14135         * tests/mpf/t-set_q.c: New file.
14136         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
14138         * mpf/set.c: Use MPN_COPY_INCR, in case r==u and ABSIZ(u) > PREC(r)+1.
14139         No actual bug here, because MPN_COPY has thusfar been an alias for
14140         MPN_COPY_INCR, only an ASSERT failure.
14141         * tests/mpf/t-set.c: New file.
14142         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
14144         * mpf/set.c, mpf/iset.c: Do MPN_COPY last, for possible tail call.
14146         * mpf/set_d.c: Rate d==0 as UNLIKELY.  Store size before extract call,
14147         to shorten lifespan of "negative".
14149         * mpf/init.c, mpf/init2.c, mpf/iset_d.c, mpf/iset_si.c,
14150         mpf/iset_str.c, mpf/iset_ui.c: Store prec before alloc call, for one
14151         less live quantity across that call.
14152         * mpf/init.c, mpf/init2.c, mpf/iset_str.c: Store size and exp before
14153         alloc call, to overlap with other operations.
14155         * tests/refmpf.c, tests/tests.h (refmpf_fill, refmpf_normalize,
14156         refmpf_validate, refmpf_validate_division): New functions.
14158         * tests/refmpn.c, tests/tests.h (refmpn_copy_extend,
14159         refmpn_lshift_or_copy_any, refmpn_rshift_or_copy_any): New functions.
14161         * tal-debug.c: Add <string.h> for strcmp.
14163         * tests/cxx/t-istream.cc (check_mpz, check_mpq, check_mpf): Use size_t
14164         for loop index, to quieten g++ warning.
14166 2004-03-02  Kevin Ryde  <kevin@swox.se>
14168         * tests/mpn/t-hgcd.c: Use __GMP_PROTO on prototypes.
14170 2004-03-01  Torbjorn Granlund  <tege@swox.com>
14172         With Karl Hasselström:
14173         * mpn/generic/dc_divrem_n.c (mpn_dc_div_2_by_1): New function, with
14174         meat from old mpn_dc_divrem_n.  Accept scratch parameter.  Rewrite to
14175         avoid a recursive call.
14176         (mpn_dc_div_3_by_2): New function, with meat from old
14177         mpn_dc_div_3_halves_by_2.  Accept scratch parameter.
14178         (mpn_dc_divrem_n): Now just allocate scratch space and call new
14179         mpn_dc_div_2_by_1.
14181 2004-02-29  Kevin Ryde  <kevin@swox.se>
14183         * longlong.h (count_leading_zeros) [alpha gcc]: New version, inlining
14184         mpn/alpha/cntlz.asm cmpbge technique.
14186         * aclocal.m4, configure, install-sh, missing, ltmain.sh,
14187         */Makefile.in: Update to automake 1.8.2 and libtool 1.5.2.
14189         * doc/gmp.texi (C++ Interface Integers): Note / and % rounding follows
14190         C99 / and %.
14191         (Exact Remainder): Index entries for divisibility testing algorithm.
14193         * tune/time.c (speed_endtime): Return 0.0 for negative time measured.
14194         Revise usage comments for clarity.
14195         * tune/common.c (speed_measure): Recognise speed_endtime 0.0 for
14196         failed measurement.
14198         * tests/mpn/t-get_d.c (check_rand): Correction to nhigh_mask setup.
14200 2004-02-27  Torbjorn Granlund  <tege@swox.com>
14202         * tune/tuneup.c (tune_dc, tune_set_str): Up param.step_factor.
14204         * tests/mpz/t-gcd.c: Decrease # of tests to 50.
14206 2004-02-27  Kevin Ryde  <kevin@swox.se>
14208         * tests/devel/try.c: Add a comment that this is not for Cray systems.
14210         * mpf/set_q.c: Don't support den(q)<0, demand canonical form in the
14211         usual way.
14213 2004-02-24  Torbjorn Granlund  <tege@swox.com>
14215         From Kevin:
14216         * mpn/generic/mul_fft.c (mpn_fft_add_modF): Loop until normalization
14217         criterion met.
14219 2004-02-22  Kevin Ryde  <kevin@swox.se>
14221         * acinclude.m4 (GMP_PROG_CC_WORKS, GMP_OS_X86_XMM, GMP_PROG_CXX_WORKS):
14222         Remove files that might look like compiler output, so our "||"
14223         alternatives are not fooled.
14225         * acinclude.m4 (GMP_PROG_CC_WORKS): Add test for lshift_com code
14226         mis-compiled by certain IA-64 HP cc at +O3.
14228         * gmp-impl.h (USE_LEADING_REGPARM): Disable under prof or gprof, for
14229         the benefit of freebsd where .mcount clobbers registers.  Spotted by
14230         Torbjorn.
14231         * configure.in (WANT_PROFILING_PROF, WANT_PROFILING_GPROF): New
14232         AC_DEFINEs.
14234 2004-02-21  Kevin Ryde  <kevin@swox.se>
14236         * configure.in (sparc64-*-*bsd*): Amend -m32 setup for ABI=32, so it's
14237         not used in ABI=64 on the BSD systems.
14239 2004-02-18  Niels Möller  <nisse@lysator.liu.se>
14241         * tests/mpz/t-gcd.c (gcdext_valid_p): New function.
14242         (ref_mpz_gcd): Deleted function.
14243         (one_test): Rearranged to call mpz_gcdext first, so that the
14244         returned value can be validated.
14245         (main): Don't use ref_mpz_gcd.
14247 2004-02-18  Torbjorn Granlund  <tege@swox.com>
14249         * gmp-impl.h (MPN_TOOM3_MAX_N): Move to !WANT_FFT section.
14251         * tests/mpz/t-mul.c: Exclude special huge operands unless WANT_FFT.
14253         * mpz/rrandomb.c (gmp_rrandomb): Rewrite.
14255         * mpn/generic/mul_n.c (mpn_toom3_sqr_n): Remove write-only variable c5.
14257 2004-02-18  Kevin Ryde  <kevin@swox.se>
14259         * mpf/iset_si.c, mpf/iset_ui.c, mpf/set_si.c, mpf/set_ui.c [nails]:
14260         Always store second limb, to avoid a conditional.
14262         * tests/mpf/t-get_ui.c: New file.
14263         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
14264         * tests/mpf/t-get_si.c (check_limbdata): Further tests.
14265         * gmp-impl.h (MP_EXP_T_MAX, MP_EXP_T_MIN): New defines.
14267         * mpf/get_ui.c, mpf/get_si.c: Remove size==0 test, it's covered by
14268         other conditions.  Attempt greater clarity by expressing conditions as
14269         based on available data range.
14270         * mpf/get_si.c [nails]: Correction, don't bail on exp > abs_size,
14271         since may still have second limb above radix point available.
14272         * mpf/get_ui.c: Nailify.
14274 2004-02-16  Kevin Ryde  <kevin@swox.se>
14276         * mpz/scan0.c, mpz/scan1.c: Use count_trailing_zeros, instead of
14277         count_leading_zeros on limb&-limb.
14279         * mpf/sqrt.c: Use "/ 2" for exp, avoiding C undefined behaviour on
14280         ">>" of negatives.  Correction to comment, exp is rounded upwards.
14281         SIZ(r) always prec now, no need for tsize expression.  Store EXP(r)
14282         and SIZ(r) where calculated to reduce variable lifespans.  Make tsize
14283         mp_size_t not mp_exp_t, though of course those are currently the same.
14285         * gmp-h.in (GMP_ERROR_ALLOCATE, GMP_ERROR_BAD_STRING,
14286         GMP_ERROR_UNUSED_ERROR): Remove, never used or documented, and we
14287         don't want to use globals for communicating error information.
14289         * mpz/gcd_ui.c [nails]: Correction, actually return a value.
14291         * mpn/generic/addmul_1.c, mpn/generic/submul_1.c [nails==1]: Add code.
14293 2004-02-15  Kevin Ryde  <kevin@swox.se>
14295         * tests/mpz/t-jac.c (check_data): Remove unnecessary variable
14296         "answer".
14298 2004-02-14  Torbjorn Granlund  <tege@swox.com>
14300         * mpn/ia64/aors_n.asm: Break a group with a RAW conflict.
14302 2004-02-14  Kevin Ryde  <kevin@swox.se>
14304         * acinclude.m4 (GMP_C_RIGHT_SHIFT): Note that it's "long"s which we're
14305         concerned about.
14307         * mpn/generic/mul_n.c: Add some remarks about toom3 high zero
14308         stripping.
14310         * mpn/generic/scan0.c, mpn/generic/scan1.c: Remove design issue
14311         remarks.  What to do about going outside `up' space is a problem, but
14312         anything to address it would be an incompatible change.
14314 2004-02-12  Torbjorn Granlund  <tege@swox.com>
14316         * tests/mpn/t-hgcd.c: Remove unused variables.
14318         * mpn/ia64/hamdist.asm: Remove bundling incompatible with HP-UX
14319         assembler.  Misc HP-UX changes.
14320         * mpn/ia64/gcd_1.asm: Add some syntax to placid the HP-UX assembler.
14322 2004-02-11  Kevin Ryde  <kevin@swox.se>
14324         * longlong.h (power, powerpc): Use HAVE_HOST_CPU_FAMILY_power and
14325         HAVE_HOST_CPU_FAMILY_powerpc rather than various cpp defines.
14327         * gmp-impl.h: Add remarks about limits.h and Cray etc.
14329         * mpn/ia64/mul_1.asm: Don't put .pred directives on labelled lines,
14330         hpux 11.23 assembler doesn't like that.
14331         * mpn/ia64/README: Add a note on this.
14333         * dumbmp.c (mpz_mul): Set ALLOC(r) for new data block used.  Reported
14334         by Jason Moxham.
14336         * mpn/pa32/README, mpn/pa64/README (REFERENCES): New sections.
14338 2004-02-10  Torbjorn Granlund  <tege@swox.com>
14340         * tests/mpz/t-gcd.c: Decrease # of tests run.
14342         * mpn/*/gmp-mparam.h: Add HGCD values, update TOOM values.
14344 2004-02-01  Torbjorn Granlund  <tege@swox.com>
14346         From Kevin:
14347         * config.guess: Recognize AMD's hammer processors, return x86_64.
14349 2004-01-31  Niels Möller  <nisse@lysator.liu.se>
14351         * mpn/generic/hgcd.c (mpn_cmp_sum3): Declare static.
14353 2004-01-25  Niels Möller  <nisse@lysator.liu.se>
14355         * tests/mpn/Makefile.am (check_PROGRAMS): Add t-hgcd.
14357         * mpn/generic/hgcd.c (hgcd_jebelean): Simplify, use mpn_cmp_sum3.
14358         (mpn_cmp_sum3): New function.
14359         (mpn_diff_smaller_p): Remove.
14360         (hgcd_final, hgcd_jebelean, hgcd_small_1, hgcd_small_2, euclid_step):
14361         Remove tp,talloc arguments.  Callers changed.
14363 2004-01-25  Torbjorn Granlund  <tege@swox.com>
14365         * tune/tuneup.c (all): Reenable calls of tune_gcd_schoenhage and
14366         tune_hgcd.
14368         * mpn/generic/gcd.c: Reenable Schoenhage code.
14370         With Niels Möller:
14371         * mpn/generic/hgcd.c: Add const and inline to several functions.
14372         (qstack_push_start qstack_push_end qstack_push_quotient): Remove.
14373         (euclid_step): Insert removed functions here.
14374         (hgcd_adjust): Simplify, don't handle d != 1.
14375         (qstack_adjust): Corresponding changes.
14376         (mpn_hgcd2_lehmer_step): Remove redundant tests for bh against zero.
14377         (hgcd_start_row_p): Tweak.
14378         (hgcd_final): Shorten life of ralloc.
14380 2004-01-24  Kevin Ryde  <kevin@swox.se>
14382         * tests/mpf/t-sqrt.c (check_rand1): Further diagnostic printouts.
14384         * mpn/generic/sqrtrem.c (mpn_sqrtrem): Add ASSERT_MPN.
14385         (mpn_dc_sqrtrem): Add casts for K&R.
14387         * mpf/sqrt_ui.c: Nailify.
14389         * mpf/set_z.c: Do MPN_COPY last, for possible tail call.
14391         * doc/gmp.texi (Miscellaneous Float Functions): For mpf_random2, note
14392         exponent is in limbs.
14394         * mpn/ia64/README: Add remark about concentrating on itanium-2.
14396 2004-01-22  Kevin Ryde  <kevin@swox.se>
14398         * mpf/sqrt.c: Change tsize calculation to get prec limbs result
14399         always, previously got prec+1 when exp was odd.
14400         * tests/mpf/t-sqrt.c (check_rand1): New function, code from main.
14401         (check_rand2): New function.
14403         * mpf/sqrt_ui.c: Change rsize calculation to get prec limbs result,
14404         previously got prec+1.
14405         * tests/mpf/t-sqrt_ui.c: New file.
14406         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
14408         * tests/refmpf.c, tests/tests.h (refmpf_add_ulp,
14409         refmpf_set_prec_limbs): New functions.
14411         * mpz/get_d_2exp.c, mpf/get_d_2exp.c: Remove x86+m68k force to double,
14412         mpn_get_d now does this.  Remove res==1.0 check for round upwards,
14413         mpn_get_d now rounds towards zero.  Move exp store to make mpn_get_d a
14414         tail call.
14416         * configure.in (x86-*-*): Use ABI=32 rather than ABI=standard.
14417         Use gcc -m32 when available, to force mode on bi-arch amd64 gcc.
14418         * configure.in, acinclude.m4 (x86_64-*-*): Merge into plain x86 setups
14419         as ABI=64.  Support ABI=32, using athlon code.  Use gcc -mcpu=k8,
14420         -march=k8.
14421         (amd64-*-*): Remove pattern, config.sub only gives x86_64.
14422         * doc/gmp.texi (ABI and ISA): Add x86_64 dual ABIs.
14424         * mpn/amd64/README: Add reference to ABI spec.
14426 2004-01-17  Niels Möller  <nisse@lysator.liu.se>
14428         * mpn/generic/hgcd.c (hgcd_adjust): Backed out mpn_addlsh1_n
14429         change for now.
14431         * mpn/generic/hgcd.c (hgcd_adjust): Fixed calls of mpn_addlsh1_n.
14433 2004-01-17  Kevin Ryde  <kevin@swox.se>
14435         * tune/README: Remove open/mpn versions of toom3, no longer exist.
14436         * tune/powerpc64.asm: Remove unused L(again).
14437         * tune/time.c (mftb): Note single mftb possible for powerpc64.
14439         * mpn/generic/mode1o.c: Use "c<s" to do underflow detection in last
14440         step, for better parallelism.
14442         * mpn/generic/get_d.c: Preserve comments about hppa fcnv,udw,dbl from
14443         previous mpz_get_d code.
14445         * tune/freq.c: Add some comments about systems not covered.
14447         * gmp-h.in (_GMP_H_HAVE_FILE): Add _MSL_STDIO_H for Metrowerks.
14448         Reported by Tomas Zahradnicky.
14450 2004-01-16  Niels Möller  <nisse@lysator.liu.se>
14452         * mpn/generic/hgcd.c (mpn_diff_smaller_p): Use MPN_DECR_U.
14453         (hgcd_adjust): Use mpn_addlsh1_n when available.
14455 2004-01-16  Kevin Ryde  <kevin@swox.se>
14457         * configure.in (powerpc64-*-linux*): Try gcc64.  Try -m64 with
14458         "cflags_maybe" to get it used in all probing.  Add sizeof-long-8 test
14459         to check the mode is right if -m64 is not applicable.
14461 2004-01-15  Kevin Ryde  <kevin@swox.se>
14463         * configure.in (--with-readline=detect): Check for readline/readline.h
14464         and readline/history.h.  Report result of detection.
14466 2004-01-14  Niels Möller  <nisse@lysator.liu.se>
14468         * tune/speed.c (routine): Disabled speed_mpn_hgcd_lehmer.
14469         * tune/common.c (speed_mpn_hgcd_lehmer): Disabled function.
14471         * mpn/generic/hgcd.c (mpn_hgcd_lehmer_itch, mpn_hgcd_lehmer)
14472         (mpn_hgcd_equal): Deleted functions.
14474         * mpn/generic/gcd.c (hgcd_start_row_p): Deleted function.
14475         (gcd_schoenhage): Deleted assertion code using mpn_hgcd_lehmer.
14477         * mpn/generic/hgcd.c (hgcd_final): Fixed ASSERT typos.
14478         (mpn_hgcd): To use Lehmer's algorithm, call hgcd_final directly,
14479         not mpn_hgcd_lehmer.
14481         * mpn/generic/gcd.c (gcd_schoenhage): Updated for changes to
14482         mpn_hgcd and mpn_hgcd_fix. (Schoenhage code is still disabled).
14484         * gmp-impl.h (mpn_hgcd_fix): Updated prototype.
14486         * mpn/generic/hgcd.c (mpn_hgcd_fix): Replaced a bunch of arguments
14487         by a pointer const struct hgcd_row *s. Updated callers.
14489         * mpn/generic/hgcd.c (hgcd_start_row_p): Use const for the input.
14490         Moved function definition before hgcd_jebelean.
14491         (hgcd_jebelean): Interface change, analogous to hgcd2.
14492         (mpn_hgcd_fix): Normalize v. Require that v > 0.
14493         (hgcd_adjust): Fix bug in carry update.
14494         (mpn_hgcd): Reorganized again, to adapt to mpn_hgcd/hgcd_jebelean
14495         now sometimes returning 1. Reintroduced hgcd_adjust.
14497         * mpn/generic/hgcd.c (hgcd_final): Streamlined logic for the first
14498         hgcd2 call.
14500         * mpn/generic/hgcd2.c (mpn_hgcd2): Interface change. Return 1
14501         instead of 2, in the no progress case r0=A, r1=B.
14503         * mpn/generic/hgcd.c (hgcd_adjust): Changed arguments and return
14504         value. Now takes a struct hgcd_row * and the uv size, and returns
14505         updated uvsize.
14506         (hgcd_final): Special handling of the case hgcd2 returning 1. Now
14507         uses hgcd_adjust, instead of a full Euclid division.
14509 2004-01-13  Niels Möller  <nisse@lysator.liu.se>
14511         * mpn/generic/hgcd.c (euclid_step, hgcd_case0): Merged into a
14512         single function euclid_step.
14513         (mpn_hgcd): Reorganized the logic for the second recursive call.
14514         Avoid unnecessary Euclid steps.
14516         * tests/mpn/t-hgcd.c (hgcd_values): One more test value.
14518         * tests/mpn/t-hgcd.c (hgcd_values): Added values that trigged the
14519         hgcd_jebelean bug.
14521         * mpn/generic/hgcd.c (hgcd_jebelean): Fixed off by one error.
14522         (mpn_hgcd): Simplified the logic for the first recursive call. Now
14523         it uses only the correct values from the recursive call, and
14524         doesn't do tricks with hgcd_adjust (hgcd_adjust will probably be
14525         reintroduced later, though).
14527         * tests/mpn/t-hgcd.c (mpz_mpn_equal, hgcd_ref_equal)
14528         (hgcd_ref_init, hgcd_ref_clear): New functions.
14529         (hgcd_ref): Reference implementation of hgcd, using mpz.
14530         (one_test): Use hgcd_ref. Don't use mpn_hgcd_lehmer.
14531         (main): Skip one_step if both input values are zero.
14533 2004-01-12  Niels Möller  <nisse@lysator.liu.se>
14535         * mpn/generic/hgcd.c (hgcd_final): Rewritten, now uses Lehmer
14536         steps instead of a division loop.
14537         (mpn_hgcd_lehmer): Deleted old Lehmer code, instead just
14538         initialize and then call hgcd_final.
14540         * tests/tests.h: Added refmpn_free_limbs prototype.
14541         * tests/refmpn.c (refmpn_free_limbs): New function.
14543         * tests/mpn/t-hgcd.c: Try the same kind of random inputs as for
14544         mpz/t-gcd.
14546 2004-01-11  Niels Möller  <nisse@lysator.liu.se>
14548         * mpn/generic/hgcd.c (mpn_hgcd_lehmer): Rewritten, after some more
14549         analysis of the size reduction for one Lehmer step.
14551         * tests/mpn/t-hgcd.c: New file.
14553 2004-01-11  Torbjorn Granlund  <tege@swox.com>
14555         With Niels Möller:
14556         * mpn/generic/hgcd.c (hgcd_normalize): Fix ASSERTs.
14557         (hgcd_mul): Normalize R[1].uvp[1].  Add some more ASSERTs.
14558         (hgcd_update_uv): Streamline.  ASSERT that input and output is
14559         normalized.
14561 2004-01-11  Kevin Ryde  <kevin@swox.se>
14563         * mpn/alpha/ev6/slot.pl: New file, derived in part from
14564         mpn/x86/k6/cross.pl.
14566         * mpn/alpha/alpha-defs.m4 (ASSERT): New macro.
14568         * mpn/asm-defs.m4 (m4_ifdef): New macro, avoiding OSF 4.0 m4 bug.
14569         (m4_assert_defined): Use it.
14571         * mpn/alpha/default.m4, mpn/alpha/unicos.m4 (LDGP): New macro.
14572         * mpn/alpha/ev67/gcd_1.asm: Use it to re-establish gp after jsr.
14574         * configure.in, demos/calc/Makefile.am: Use -lcurses or -lncurses with
14575         readline, when available.
14577         * longlong.h (sub_ddmmss) [generic]: Use al<bl for the borrow rather
14578         than __x>al, since the former can be done without waiting for __x,
14579         helping superscalar chips, in particular alpha ev5 and ev6.
14581         * longlong.h (sub_ddmmss) [ia64]: New macro.
14583         * tests/t-sub.c: New file.
14584         * tests/Makefile.am (check_PROGRAMS): Add it.
14585         * tests/refmpn.c, tests/tests.h (refmpn_sub_ddmmss): New function.
14587 2004-01-09  Kevin Ryde  <kevin@swox.se>
14589         * mpn/x86/p6/mod_34lsub1.asm: New file, derived in part from
14590         mpn/x86/mod_34lsub1.asm.
14592         * configure.in (IA64_PATTERN): Use -mtune on gcc 3.4.
14594 2004-01-07  Kevin Ryde  <kevin@swox.se>
14596         * gmp-h.in, mp-h.in (__GMP_SHORT_LIMB): Renamed from _SHORT_LIMB, to
14597         keep in our namespace.  (Not actually used anywhere currently.)
14598         Reported by Patrick Pelissier.
14600         * mp-h.in: Use "! defined (__GMP_WITHIN_CONFIGURE)" in the same style
14601         as gmp-h.in (though mp-h.in is not actually used during configure).
14603         * mp-h.in (__GMP_DECLSPEC_EXPORT, __GMP_DECLSPEC_IMPORT) [__GNUC__]:
14604         Use __dllexport__ and __dllimport__ to keep out of application
14605         namespace.  Same previously done in gmp-h.in.
14607 2004-01-06  Kevin Ryde  <kevin@swox.se>
14609         * configfsf.sub, configfsf.guess: Update to 2004-01-05.
14610         * configure.in (amd64-*-* | x86_64-*-*): Update comments on what
14611         configfsf.sub does.
14613 2004-01-04  Kevin Ryde  <kevin@swox.se>
14615         * mpn/alpha/README (REFERENCES): Add tru64 assembly manuals.
14616         (ASSEMBLY RULES): Note what gcc says about !literal! etc.
14618 2004-01-03  Kevin Ryde  <kevin@swox.se>
14620         * mpn/alpha/ev67/gcd_1.asm: New file.
14622         * mpn/x86/pentium4/sse2/rsh1add_n.asm: New file, derived in part from
14623         mpn/x86/pentium4/sse2/addlsh1_n.asm.
14625         * mpn/x86/p6/p3mmx/popham.asm: Note measured speeds.
14627         * mpn/ia64/hamdist.asm: Correction to inputs vs locals in alloc (makes
14628         no difference to the generated code).  Corrections to a couple of
14629         comments.
14631         * mpn/x86/pentium4/sse2/addlsh1_n.asm (PARAM_CARRY): Remove macro, not
14632         used, no such parameter.
14634         * mpn/generic/gcd.c: Use <stdio.h> for NULL.
14636         * doc/gmp.texi (Single Limb Division): Correction to tex expression
14637         for (1/2)x1.  And minor wording tweaks elsewhere.
14639         * gmp-impl.h (mpn_rsh1add_n, mpn_rsh1sub_n): Correction to comments
14640         about how carries returned.
14642         * longlong.h (umul_ppmm) [generic]: Add comments about squaring
14643         (dropped from tasks list)
14645 2003-12-31  Kevin Ryde  <kevin@swox.se>
14647         * demos/perl/GMP.xs (scan0, scan1): Return ~0 for not-found.
14648         * demos/perl/GMP.pm: Describe this, remove the note about ULONG_MAX
14649         being the same as ~0 (which is not true in old perl).
14650         * demos/perl/test.pl: Update tests.
14651         * demos/perl/typemap (gmp_UV): New type.
14653         * demos/perl/test.pl (fits_slong_p): Comment out uv_max test, it won't
14654         necessarily exceed a long.
14656         * demos/perl/GMP.pm: Add a remark about get_str to the bugs section.
14658         * mpn/generic/sqrtrem.c, mpz/fac_ui.c, tests/mpf/reuse.c: Add casts
14659         for K&R.
14660         * tests/mpf/t-muldiv.c: Make ulimb, vlimb into ulongs, which is how
14661         they're used, for the benefit of K&R calling.
14663         * doc/gmp.texi (Square Root Algorithm): Add a summary of the algorithm.
14664         And add further index entries in various places.
14666         * mpz/lucnum_ui.c, mpz/lucnum2_ui.c: Use mpn_addlsh1_n when available.
14668         * gmp-impl.h, mpn/generic/mul_n.c (mpn_addlsh1_n, mpn_sublsh1_n,
14669         mpn_rsh1add_n, mpn_rsh1sub_n): Move descriptions to gmp-impl.h with
14670         the prototypes, for ease of locating.
14672 2003-12-30  Torbjorn Granlund  <tege@swox.com>
14674         * tune/tuneup.c (all): Disable calls of tune_gcd_schoenhage and
14675         tune_hgcd for now.
14677 2003-12-29  Torbjorn Granlund  <tege@swox.com>
14679         * tests/mpz/t-gcd.c: Rewrite, based on suggestions by Kevin.
14681         * mpn/ia64/mul_1.asm: Amend TODO list.
14683         * mpn/sparc64/README: Remove mpn_Xmul_2, done.
14684         Add blurb about L1 cache conflicts.
14686         * mpn/generic/gcd.c: Disable Schoenhage code for now.
14688 2003-12-29  Kevin Ryde  <kevin@swox.se>
14690         * mpn/generic/mul_fft.c, mpz/root.c, mpq/cmp_ui.c: Add casts for K&R.
14692 2003-12-27  Kevin Ryde  <kevin@swox.se>
14694         * tests/mpz/t-mul.c (mul_kara, mul_basecase): Use __GMP_PROTO.
14696         * mpn/generic/gcd.c (NHGCD_SWAP4_2, NHGCD_SWAP3_LEFT),
14697         mpn/generic/hgcd.c (HGCD_SWAP4_LEFT, HGCD_SWAP4_RIGHT, HGCD_SWAP4_2,
14698         HGCD_SWAP3_LEFT): Aggregate initializers for automatics is an
14699         ANSI-ism, avoid.
14701         * Makefile.am (AUTOMAKE_OPTIONS): Restore this, giving no directory on
14702         ansi2knr to avoid a circular build rule.
14703         * configure.in (AM_INIT_AUTOMAKE): Note options also in Makefile.am.
14705         * configure.in (cflags_maybe): Don't loop adding cflags_maybe if the
14706         user has set CFLAGS.
14708 2003-12-24  Torbjorn Granlund  <tege@swox.com>
14710         * mpn/generic/gcd.c (gcd_schoenhage_itch): Avoid unary "+".
14711         (mpn_gcd): Allocate scratch space on heap for gcd_schoenhage.
14712         (mpn_gcd): Don't invoke MPN_NORMALIZE on input operands.
14714 2003-12-23  Kevin Ryde  <kevin@swox.se>
14716         * configure.in (*sparc*-*-*): Test sizeof(long)==4 or 8 for ABIs, to
14717         get the right mode when the user sets the CFLAGS.
14718         (testlist): Introduce "any_<abi>_testlist" to apply to all compilers.
14720         * demos/perl/typemap (MPZ_ASSUME, MPQ_ASSUME, MPF_ASSUME): Remove
14721         output rules, these are only meant for inputs.
14722         (MPZ_MUTATE): Remove, not used since changes for magic.
14724         * demos/perl/GMP.xs (mpz_class_hv, mpq_class_hv, mpf_class_hv): New
14725         variables, initialized in BOOT.
14726         * demos/perl/GMP.xs, demos/perl/typemap: Use them and explicit
14727         sv_bless, to save a gv_stashpv for every new object.
14729 2003-12-22  Kevin Ryde  <kevin@swox.se>
14731         * mpn/alpha/mode1o.c, mpn/alpha/dive_1.c: Moved from ev5/mode1o.c and
14732         ev5/dive_1.c, these are good for ev4, and would like them in a generic
14733         alpha build.
14735 2003-12-21  Kevin Ryde  <kevin@swox.se>
14737         * doc/gmp.texi (Integer Logic and Bit Fiddling): Say "bitwise" in
14738         mpz_and, mpz_ior and mpz_xor, to avoid any confusion with what C means
14739         by "logical".  Reported by Rüdiger Schütz.
14741         * gmp-h.in (_GMP_H_HAVE_FILE): Note why defined(EOF) is not good.
14743 2003-12-20  Torbjorn Granlund  <tege@swox.com>
14745         * mpn/generic/hgcd.c (mpn_diff_smaller_p): Use mpn_cmp instead of
14746         mpn_sub_n where possible.  Use mp_size_t for relevant variables.
14748 2003-12-20  Kevin Ryde  <kevin@swox.se>
14750         * tune/speed.h (SPEED_TMP_ALLOC_LIMBS): Correction to last change,
14751         don't want "- 1" on the TMP_ALLOC_LIMBS.
14753         * demos/expr/expr.h: Test #ifdef MPFR_VERSION_MAJOR for when mpfr.h is
14754         included, not GMP_RNDZ which is now an enum.
14756         * demos/expr/exprfra.c (e_mpfr_ulong_p): Use mpfr_integer_p and
14757         mpfr_fits_ulong_p.
14758         (e_mpfr_get_ui_fits): Use mpfr_get_ui.
14760         * mpfr/*: Update to mpfr cvs head 2003-12-20.
14762         * configure, config.in: Update to autoconf 2.59.
14763         * */Makefile.in, configure, aclocal.m4, ansi2knr.c, install-sh,
14764         doc/mdate-sh: Update to automake 1.8.
14766         * mkinstalldirs: Remove, not required by automake 1.8.
14767         * doc/gmp.texi (Build Options): HTML is a usual target in automake 1.8.
14769         * configure.in (AC_PREREQ): Require autoconf 2.59.
14770         (AM_INIT_AUTOMAKE): Require automake 1.8.
14771         (AC_C_INLINE): Use rather than GMP_C_INLINE, now has #ifndef
14772         __cplusplus we want.
14773         (gettimeofday): Use AC_CHECK_FUNCS rather than our workaround code,
14774         autoconf now ok.
14776         * acinclude.m4 (GMP_C_INLINE): Remove.
14777         (GMP_H_EXTERN_INLINE): Use AC_C_INLINE.
14778         (GMP_PROG_AR): Comment on automake $ARFLAGS.
14780 2003-12-19  Niels Möller  <nisse@lysator.liu.se>
14782         * mpn/generic/hgcd.c (mpn_diff_smaller_p): Rewrote function. Tried
14783         to explain how it works.
14784         (slow_diff_smaller_p, wrap_mpn_diff_smaller_p) [WANT_ASSERT]: Use
14785         CPP to wrap assertion checks around all calls to
14786         mpn_diff_smaller_p.
14788         * mpn/generic/hgcd.c (mpn_addmul2_n_1) [nails]: Fixed carry handling.
14790         * mpn/generic/hgcd.c (mpn_diff_smaller_p) [nails]: Use
14791         GMP_NUMB_MAX, not MP_LIMB_T_MAX.
14792         (mpn_hgcd_itch): Improved size calculation.
14793         (mpn_hgcd_max_recursion): Moved function from qstack.c. Should to
14794         be recompiled when HGCD_SCHOENHAGE_THRESHOLD is tuned.
14796         * mpn/generic/qstack.c (mpn_hgcd_max_recursion): ... moved from
14797         here.
14799 2003-12-19  Torbjorn Granlund  <tege@swox.com>
14801         * tests/mpf/t-get_d.c: Print message before aborting.
14803         * mpn/generic/hgcd2.c (mpn_hgcd2): Substitute always-zero variable
14804         with 0.  Remove bogus comment.
14806         * mpn/generic/get_d.c: Make ONE_LIMB case actually work for nails.
14808 2003-12-18  Niels Möller  <niels@lysator.liu.se>
14810         * mpn/generic/hgcd.c (hgcd_update_r): Assert that the output r2 is
14811         smaller than the input r1.
14813 2003-12-18  Torbjorn Granlund  <tege@swox.com>
14815         * mpz/get_d.c: Don't include longlong.h.
14817         * tests/mpz/t-mul.c (ref_mpn_mul): Handle un == vn specially, to avoid
14818         a dummy r/w outside of allocated area.
14820 2003-12-18  Kevin Ryde  <kevin@swox.se>
14822         * mpn/alpha/unicos.m4 (ALIGN): Add comments on what GCC does.
14824         * configure.in (fat setups), acinclude.m4 (GMP_INIT): Obscure
14825         include() from automake 1.8 aclocal.
14826         * acinclude.m4: Quote names in AC_DEFUN, for automake 1.8 aclocal.
14828 2003-12-17  Niels Möller  <nisse@lysator.liu.se>
14830         * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer) [nails]:
14831         Enabled code also for GMP_NAIL_BITS > 0.
14832         * tune/speed.c [nails]: Enable speed_mpn_hgcd and
14833         speed_mpn_hgcd_lehmer.
14834         * tune/tuneup.c (tune_hgcd) [nails]: Likewise.
14836         * mpn/generic/gcd.c [nails]: Use Schönhage's algorithm also for
14837         GMP_NAIL_BITS > 0.
14839         * mpn/generic/hgcd.c [nails]: Enable the code for GMP_NAIL_BITS > 0.
14840         (MPN_EXTRACT_LIMB) [nails]: Handle nails.
14841         (__gmpn_hgcd_sanity): Allocate temporaries on the heap, not on the
14842         stack. Also check that r[i] >= r[i+1].
14843         (mpn_hgcd2_lehmer_step) [nails]: Handle nails.
14844         (mpn_hgcd_lehmer): When we temporarily have r3 > r2, avoid
14845         trigging that assert in __gmpn_hgcd_sanity.
14846         (mpn_hgcd): Likewise.
14848         * mpn/generic/hgcd2.c (div2) [nails]: Alternative nail-aware
14849         version.
14850         (SUB_2): New macro of Kevin's, which reduces do sub_ddmmss in the
14851         non-nail case.
14852         (HGCD2_STEP): Use SUB_2, not sub_ddmmss. Added alternative version
14853         for K&R compilers.
14854         (mpn_hgcd2) [nails]: Use SUB_2, not sub_ddmmss. New nail-aware
14855         code for checking Jebelean's condition.
14857 2003-12-13  Kevin Ryde  <kevin@swox.se>
14859         * mpq/get_d.c: Amend comments per mpn_get_d change.
14860         (limb2dbl): Remove, no longer used.
14862         * gmp-impl.h (DIVREM_1_NORM_THRESHOLD etc) [nails]: Correction to
14863         comments, MP_SIZE_T_MAX means preinv never.
14865         * gmp-impl.h (DIVEXACT_1_THRESHOLD, MODEXACT_1_ODD_THRESHOLD) [nails]:
14866         Remove overrides, divexact_1 and modexact_1 have been nailified.
14868         * mpz/inp_str.c (mpz_inp_str_nowhite): Use ASSERT_ALWAYS for EOF value
14869         requirement.
14871         * tests/refmpn.c (refmpn_rsh1add_n, refmpn_rsh1sub_n): Parens around
14872         GMP_NUMB_BITS - 1 with ">>", to quieten gcc -Wall.
14873         * tests/t-constants.c (main), tests/t-count_zeros.c (check_clz),
14874         tests/t-modlinv.c (one), tests/mpz/t-jac.c (try_si_zi),
14875         tests/mpq/t-get_d.c (check_onebit): : Correction to printfs.
14876         * tests/mpn/t-fat.c: Add <string.h> for memcpy.
14877         * tests/mpz/t-scan.c (check_ref): Remove unused variable "isigned".
14878         * tests/mpq/t-get_d.c (check_onebit): Remove unused variable "limit".
14879         * tests/mpf/t-set_si.c, tests/mpf/t-set_ui.c (check_data): Braces for
14880         initializers.
14881         * tests/devel/try.c (mpn_divexact_by3_fun, mpn_modexact_1_odd_fun):
14882         Correction to return values.
14884         * doc/gmp.texi (Miscellaneous Integer Functions): Note mpz_sizeinbase
14885         can be used to locate the most significant bit.  Reword a bit for
14886         clarity.
14888 2003-12-12  Niels Möller  <niels@lysator.liu.se>
14890         * mpn/generic/hgcd.c (__gmpn_hgcd_sanity): Fixed stack buffer
14891         overrun.
14892         * mpn/generic/hgcd.c: Improved comments.
14894 2003-12-11  Torbjorn Granlund  <tege@swox.com>
14896         * gmp-impl.h: Change asm => __asm__, tabify.
14897         * mpz/get_d_2exp.c: Likewise.
14898         * mpf/get_d_2exp.c: Likewise.
14900         * tests/cxx/t-ops.cc: #if .. #endif out tests that cause ambiguities.
14902 2003-12-10  Torbjorn Granlund  <tege@swox.com>
14904         * tests/mpz/t-gcd.c: Generate operands with sizes as a geometric
14905         progression, to allow for larger operands and less varying timing.
14907         * tune/tuneup.c (tune_gcd_schoenhage): Set param.step_factor.
14908         (tune_hgcd): Likewise.
14910 2003-12-10  Kevin Ryde  <kevin@swox.se>
14912         * demos/perl/test.pl: Should be $] for perl version in old perl.
14914         * configure.in (sparc64-*-*): Single block of gcc configs for all
14915         systems, on unknown systems try both ABI 32 and 64.
14917         * configure.in (LIBGMP_LDFLAGS, LIBGMPXX_LDFLAGS): New AC_SUBSTs with
14918         options to generate .def files with windows DLLs.
14919         * Makefile.am (libgmp_la_LDFLAGS, libgmpxx_la_LDFLAGS): Use them.
14921         * mpn/generic/gcd.c: Use ABOVE_THRESHOLD / BELOW_THRESHOLD, to follow
14922         convention and cooperate with tune/tuneup.c.
14924         * tune/tuneup.c (tune_gcd_schoenhage): Increase max_size to 3000, side
14925         default 1000 is approx the crossover point on athlon.
14927         * tune/common.c, tune/speed.c, tune/speed.h, tune/speed-ext.c,
14928         tune/tuneup.c (SPEED_TMP_ALLOC_LIMBS): Take variable as parameter
14929         rather than returning a value, avoids alloca in a function call.
14930         * tune/common.c, tune/speed.h (speed_tmp_alloc_adjust): Remove, now
14931         inline in SPEED_TMP_ALLOC_LIMBS, and using ptr-NULL for alignment
14932         extraction.
14934         * gmpxx.h (__gmp_binary_equal, __gmp_binary_not_equal,
14935         __gmp_binary_less, __gmp_binary_less_equal, __gmp_binary_greater,
14936         __gmp_binary_greater_equal, __gmp_cmp_function): Use mpfr_cmp_si and
14937         mpfr_cmp_d.
14938         * tests/cxx/t-ops.cc: Exercise this.
14940         * demos/perl/Makefile.PL: Don't install sample.pl and test2.pl.
14942         * demos/perl/GMP.xs (use_sv): Prefer PV over IV or NV to avoid any
14943         rounding.
14944         * demos/perl/test.pl: Exercise this.
14946         * demos/perl/GMP/Mpf.pm (overload_string): Corrections to $# usage.
14947         * demos/perl/test.pl: Exercise this.
14949 2003-12-08  Kevin Ryde  <kevin@swox.se>
14951         * demos/perl/GMP.pm: Correction to canonicalize example.
14953         * demos/perl/GMP.xs: New type check scheme, support magic scalars,
14954         support UV when available.  Remove some unused local variables.
14955         (coerce_long): Check range of double.
14956         (get_d_2exp): Remove stray printf.
14958         * demos/perl/test.pl: Exercise magic, rearrange to make it clearer
14959         what's being tested.
14961 2003-12-07  Kevin Ryde  <kevin@swox.se>
14963         * mpn/generic/hgcd.c (mpn_hgcd): Use BELOW_THRESHOLD, to follow the
14964         convention of N<THRESH for the lower algorithm, not <=.  Fixes
14965         algorithm selection in tuneup.c.
14967         * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): Use intended
14968         align_xp, align_yp.
14970         * tune/tuneup.c (mul_toom3_threshold): Use MUL_TOOM3_THRESHOLD_LIMIT,
14971         for the benefit of ASSERT in mpn_mul_n.
14973         * tune/tuneup.c (tune_mul): Correction to toom3 param.min_size, should
14974         use MPN_TOOM3_MUL_N_MINSIZE.
14976         * tune/speed.c (check_align_option): Correction to printf format.
14977         * tune/freq.c (freq_sysctl_hw_model): Remove unused "i" variable.
14979         * scanf/doscan.c: Correction to a couple of trace printfs.
14980         Add <stdlib.h> for strtol.
14982         * tests/misc/t-scanf.c (test_sscanf_eof_ok): New function.
14983         (check_misc): Use it to suppress tests broken by libc.
14984         And should be EOF rather than -1 in various places.
14986 2003-12-06  Torbjorn Granlund  <tege@swox.com>
14988         * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer):
14989         Move SPEED_TMP_ALLOC_LIMBS invocations out from calls.
14991         * mpn/generic/get_str.c (mpn_get_str, POW2_P case):
14992         Don't append extra '\0' byte.
14994 2003-12-05  Niels Möller  <niels@lysator.liu.se>
14996         * tune/common.c (speed_mpn_hgcd_lehmer, speed_mpn_hgcd):
14997         Updated for the renaming hgcd_sanity -> ASSERT_HGCD.
14999         * mpn/generic/gcd.c (gcd_schoenhage): TMP_DECL must be the final
15000         declaration in the declaration section of a block.
15002         * tune/speed.h (mpn_gcd_accel): Added prototype.
15004 2003-12-05  Torbjorn Granlund  <tege@swox.com>
15006         * randmt.c (__gmp_mt_recalc_buffer): Put parens around "&" expressions
15007         inside "!=".
15009         * mpf/get_str.c: Remove unused variable "fracn".
15011 2003-12-03  Kevin Ryde  <kevin@swox.se>
15013         * configure.in, Makefile.am (LIBGMP_LDFLAGS, LIBGMPXX_LDFLAGS): New
15014         AC_SUBSTs, use them to create .def files with Windows DLLs.
15015         * doc/gmp.texi (Notes for Particular Systems): Update notes on mingw
15016         DLL with MS C.
15018         * mpz/export.c: Allow NULL for countp.
15019         * doc/gmp.texi (Integer Import and Export): Describe this.
15020         Suggested by Jack Lloyd.
15022         * mpn/x86/p6/aors_n.asm: New file, grabbing the K7 code.
15023         Superiority of this reported by Patrick Pelissier.
15025 2003-11-30  Kevin Ryde  <kevin@swox.se>
15027         * mpn/alpha/ev67/popcount.asm, mpn/alpha/ev67/hamdist.asm: New files.
15029         * mpn/alpha/ev67: New directory.
15030         * configure.in (alphaev67, alphaev68, alphaev7*): Use it.
15032         * doc/gmp.texi (GMPrefu, GMPpxrefu): Change back to plain ref and
15033         pxref, remove macros.
15034         (GMPreftopu, GMPpxreftopu): Remove URL parameter, rename to GMPreftop
15035         and GMPpxreftop.
15036         (Debugging): Remove debauch, seems to have disappeared.
15037         (Language Bindings): Corrections to URLs for CLN, Omni F77, Pike.
15039 2003-11-29  Kevin Ryde  <kevin@swox.se>
15041         * demos/perl/GMP/Mpf.pm (overload_string): Use $OFMT to avoid warnings
15042         about $#.
15044         * demos/perl/GMP.xs (fits_slong_p): Use LONG_MAX+1 to avoid possible
15045         rounding of 0x7F..FF in a double on 64-bit systems.
15047         * configure.in (ppc601-*-*): Remove this case, it never matched
15048         anything, the name adopted is powerpc601.
15049         (powerpc601-*-*): Use gcc -mcpu=601, xlc -qarch=601.
15051         * configure.in: Introduce ${cc}_cflags_maybe, used if they work.
15052         (*sparc*-*-*) [ABI=32]: Add gcc_cflags_maybe=-m32 to force that mode.
15054         * doc/gmp.texi (Introduction to GMP): Add AMD64 to optimizations list.
15055         (Build Options): Add cpu types alphaev7 and amd64.  Update texinfo
15056         html cross reference.
15058 2003-11-28  Niels Möller  <nisse@lysator.liu.se>
15060         * tune/tuneup.c (tune_hgcd): Disable if GMP_NAIL_BITS > 0.
15061         * tune/speed.c (routine): Likewise.
15062         * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): Likewise.
15064         * mpn/generic/gcd.c, mpn/generic/hgcd.c, mpn/generic/hgcd2.c
15065         [GMP_NAIL_BITS]: Disabled new code if we have nails.
15067         * mpn/generic/gcd.c (MPN_LEQ_P): Copied macro definition (needed
15068         for compilation with --enable-assert).
15070         * tune/tuneup.c (hgcd_schoenhage_threshold,
15071         gcd_schoenhage_threshold): New variables.
15072         (tune_hgcd, tune_gcd_schoenhage): New functions.
15073         (all): Call tune_hgcd and tune_gcd_schoenhage.
15075         * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer)
15076         (speed_mpn_gcd_accel): New functions.
15077         * tune/speed.c (routine): Added mpn_hgcd, mpn_hgcd_lehmer and
15078         mpn_gcd _accel.
15079         * tune/speed.h: Added corresponding prototypes.
15081         * tune/gcd_accel.c: New file.
15083         * tune/gcd_bin.c (GCD_SCHOENHAGE_THRESHOLD): Set to MP_SIZE_T_MAX.
15085         * tune/Makefile.am (libspeed_la_SOURCES): Added gcd_accel.c.
15086         (TUNE_MPN_SRCS_BASIC): Added hgcd.c.
15088         * mpn/x86/k7/gmp-mparam.h (HGCD_SCHOENHAGE_THRESHOLD)
15089         (GCD_SCHOENHAGE_THRESHOLD): Tuned values.
15091         * mpn/generic/gcd.c (mpn_gcd, gcd_binary_odd): Renamed the
15092         old mpn_gcd function (which implements accelerated binary gcd) to
15093         gcd_binary_odd.
15094         (gcd_binary): New function, with the additional book keeping
15095         needed when using gcd_binary_odd to compute the gcd of non-odd
15096         numbers.
15097         (hgcd_tdiv): New function.
15098         (gcd_lehmer): New function, currently #if:ed out.
15099         (hgcd_start_row_p): New function, duplicated from hgcd.c.
15100         (gcd_schoenhage_itch): New function.
15101         (gcd_schoenhage): New function.
15102         (mpn_gcd): New advertised gcd function, which calls
15103         mpn_gcd_binary_odd or mpn_gcd_schoenhage, depending on the size of
15104         the input.
15106         * mpn/generic/hgcd.c (mpn_hgcd2_lehmer_step): Renamed function
15107         (was lehmer_step), and made non-static. Updated callers.
15109         * gmp-impl.h (GCD_LEHMER_THRESHOLD): #if:ed out this macro.
15110         (mpn_hgcd2_lehmer_step): Added prototype.
15112 2003-11-27  Niels Möller  <nisse@lysator.liu.se>
15114         * tests/mpz/t-gcd.c (gcd_values): Moved definition, so that we
15115         don't need to forward declare the array.
15117 2003-11-26  Niels Möller  <nisse@lysator.liu.se>
15119         * mpn/generic/hgcd.c (mpn_hgcd2_fix): Deleted duplicate definition
15120         (the function belongs to hgcd2.c).
15122 2003-11-26  Torbjorn Granlund  <tege@swox.com>
15124         * tests/mpz/t-gcd.c: Generate random operands up to 32767 bits;
15125         decrease # of test to 1000.
15126         (gcd_values): Remove oversize test case.
15128 2003-11-26  Niels Möller  <niels@lysator.liu.se>
15130         * gmp-impl.h: Added name mangling for hgcd-related functions. Also
15131         use __GMP_PROTO.
15132         (MPN_LEQ_P, MPN_EXTRACT_LIMB): Moved macros to hgcd.c.
15133         * mpn/generic/hgcd.c, mpn/generic/hgcd2.c, mpn/generic/qstack.c:
15134         Adapted to name changes.
15136         * tests/mpz/t-gcd.c (main): Added some tests with non-random
15137         input.
15139 2003-11-25  Niels Möller  <nisse@lysator.liu.se>
15141         * gmp-impl.h (MPN_LEQ_P, MPN_EXTRACT_LIMB): New macros.
15142         (struct qstack, struct hgcd2_row, struct hgcd2, struct hgcd_row)
15143         (struct hgcd): New structs. Also added prototypes for new hgcd,
15144         hgcd2, qstack and gcd functions.
15146         * configure.in (gmp_mpn_functions): Added hgcd2, hgcd and qstack.
15148         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Added hgcd2.c,
15149         hgcd.c and qstack.c.
15151         * mpn/generic/hgcd.c, mpn/generic/hgcd2.c, mpn/generic/qstack.c:
15152         New files, needed for the sub-quadratic gcd.
15154 2003-11-25  Kevin Ryde  <kevin@swox.se>
15156         * doc/gmp.texi (Language Bindings): Add Axiom.
15158 2003-11-22  Kevin Ryde  <kevin@swox.se>
15160         * mpn/alpha/README: More notes on assembler syntax variations.
15162         * mpn/alpha/alpha-defs.m4, mpn/alpha/unicos.m4 (unop): Should be ldq_u
15163         not bis, and move to alpha-defs.m4 since it can be happily used
15164         everywhere.
15166         * mpn/alpha/alpha-defs.m4, mpn/alpha/default.m4, mpn/alpha/unicos.m4
15167         (bigend): Move to alpha-defs.m4 and base it on HAVE_LIMB_BIG_ENDIAN or
15168         HAVE_LIMB_LITTLE_ENDIAN, so as not to hard code system endianness.
15170         * mpn/alpha/alpha-defs.m4: New file.
15171         * configure.in (alpha*-*-*): Use it.
15173 2003-11-21  Kevin Ryde  <kevin@swox.se>
15175         * mpfr/*: Update to mpfr-2-0-2-branch 2003-11-21.
15177         * mpn/alpha/ev5/com_n.asm: Change "not" to "ornot r31", since "not"
15178         isn't recognised by on Cray Unicos.  Add missing "gp" to PROLOGUE.
15179         * mpn/alpha/README: Add a note on "not".
15181 2003-11-19  Torbjorn Granlund  <tege@swox.com>
15183         * mpn/alpha/aorslsh1_n.asm: Slightly rework feed-in code, avoiding
15184         spurious reads beyond operand limits.
15186         * mpn/alpha/ev5/com_n.asm: Add ASM_START/ASM_END.
15188         * mpn/generic/mul_fft.c (mpn_fft_zero_p): Remove unused function.
15189         (mpn_lshift_com): Make static, nailify properly.
15191 2003-11-19  Kevin Ryde  <kevin@swox.se>
15193         * mpn/generic/diveby3.c: Use a "q" variable to make it clearer what
15194         the code is doing.
15196         * mpn/powerpc32/750/lshift.asm, mpn/powerpc32/750/rshift.asm: New
15197         files.
15199         * mpn/alpha/ev5/com_n.asm: New file.
15201         * doc/gmp.texi (Assembler Functional Units, Assembler Writing Guide):
15202         New sections by Torbjorn, tweaked by me.
15204 2003-11-17  Torbjorn Granlund  <tege@swox.com>
15206         * mpn/powerpc32: Add power4/powerpc970 cycle counts.
15207         Use cmpwi instead of cmpi to placate darwin.
15209 2003-11-15  Kevin Ryde  <kevin@swox.se>
15211         * config.guess: Add comments on MacOS "machine" command.
15213         * tests/devel/try.c (main): Use gmp_randinit_default explicitly on
15214         __gmp_rands, since RANDS doesn't allow seeding.
15216         * doc/gmp.texi (Assigning Integers): Remove notes on possible change
15217         to disallow whitespace, this would be an incompatible change and
15218         really can't be made.
15219         (Toom 3-Way Multiplication): Updates for Paul's new code.
15221         * mpn/generic/mul_n.c (toom3_interpolate, mpn_toom3_mul_n): Put
15222         if/else braces around whole of #if code, for readability.
15224         * tests/refmpn.c (refmpn_addlsh1_n, refmpn_sublsh1_n,
15225         refmpn_rsh1add_n, refmpn_rsh1sub_n): Add ASSERTs for operand overlaps
15226         etc.
15228         * mpfr/*: Update to mpfr-2-0-2-branch 2003-11-15.
15230 2003-11-14  Torbjorn Granlund  <tege@swox.com>
15232         * mpn/alpha/aorslsh1_n.asm: Use Cray-friendly syntax for "br".
15234 2003-11-13  Torbjorn Granlund  <tege@swox.com>
15236         * mpn/alpha/aorslsh1_n.asm: New file.
15238 2003-11-12  Kevin Ryde  <kevin@swox.se>
15240         * acinclude.m4 (GMP_PROG_CC_WORKS): Add case provoking AIX power2
15241         assembler, test code by Torbjorn.
15242         * configure.in (power*-*-*): Add a comment about -mcpu=rios2 fallback.
15244         * tune/speed.c (main): Use gmp_randinit_default explicitly on
15245         __gmp_rands, since RANDS doesn't allow seeding.
15247         * mpfr/*: Update to mpfr-2-0-2-branch 2003-11-12.
15249         * gmp-impl.h, randmt.h (__gmp_randinit_mt_noseed): Move prototype to
15250         gmp-impl.h, for use by RANDS.
15252         * mpn/Makeasm.am (.s, .S, .asm): Quote $< in test -f, per automake.
15253         (.obj): Use test -f and $(CYGPATH_W) as per automake.
15255 2003-11-11  Kevin Ryde  <kevin@swox.se>
15257         * configure.in: Make umul and udiv standard-optional objects, rather
15258         than under various extra_functions.
15260         * mpn/pa32/hppa1_1/pa7100/add_n.asm,
15261         mpn/pa32/hppa1_1/pa7100/addmul_1.asm,
15262         mpn/pa32/hppa1_1/pa7100/lshift.asm,
15263         mpn/pa32/hppa1_1/pa7100/rshift.asm,
15264         mpn/pa32/hppa1_1/pa7100/sub_n.asm,
15265         mpn/pa32/hppa1_1/pa7100/submul_1.asm: Use LDEF for labels.
15267         * mpf/set_str.c: Don't use memcmp for decimal point testing, just a
15268         loop is enough and avoids any chance of memcmp reading past the end of
15269         the given string.
15271         * randmts.c, randmt.h: New files.
15272         * Makefile.am (libgmp_la_SOURCES): Add them.
15273         * randmt.c: Move seeding to randmts.c, common defines in randmt.h.
15274         * gmp-impl.h (RANDS): Use __gmp_randinit_mt_noseed.
15275         * tests/misc.c (tests_rand_start): Use gmp_randinit_default
15276         explicitly, not RANDS.
15278         * mpn/ia64/ia64-defs.m4 (PROLOGUE_cpu): Use 32-byte alignment, for the
15279         benefit of itanium 2.
15280         * mpn/ia64/gcd_1.asm: Remove own .align 32.
15282         * mpn/ia64/ia64-defs.m4 (ALIGN): New define, using IA64_ALIGN_OK.
15283         * mpn/ia64/hamdist.asm: Use ALIGN instead of .align.
15285         * acinclude.m4 (GMP_ASM_IA64_ALIGN_OK): New macro.
15286         * configure.in (IA64_PATTERN): Use it.
15287         * mpn/ia64/README: Add notes on gas big endian align problem.
15289 2003-11-10  Torbjorn Granlund  <tege@swox.com>
15291         * mpn/ia64/mul_1.asm: Rewrite.
15293 2003-11-08  Torbjorn Granlund  <tege@swox.com>
15295         * mpn/x86/aors_n.asm: Align loop to a multiple of 16.  Also align
15296         M4_function_n to a multiple of 16, to minimize alignment padding.
15297         Update P6 cycle counts reflecting improvements with new alignment.
15299 2003-11-07  Kevin Ryde  <kevin@swox.se>
15301         * gmp-impl.h (HAVE_HOST_CPU_alpha_CIX): New define.
15302         (ULONG_PARITY, popc_limb): Use it, to pick up ev7 as well as 67 and 68.
15303         * longlong.h (count_leading_zeros, count_trailing_zeros): Ditto.
15305         * doc/gmp.texi (Notes for Package Builds): Add notes on multi-ABI
15306         system packaging.
15307         (ABI and ISA): Add GNU/Linux ABI=64.
15308         (Binary GCD): Add notes on 1x1 GCD algorithms.
15310         * mpn/alpha/README: Add some literature references.
15312         * mpn/ia64/mode1o.asm: Various corrections to initial checkin.
15313         * mpn/ia64/ia64-defs.m4 (ASSERT): Correction to arg quoting.
15315 2003-11-05  Torbjorn Granlund  <tege@swox.com>
15317         * mpn/powerpc64/linux64.m4: New file.
15318         * configure.in (POWERPC64_PATTERN): Handle *-*-linux*.
15319         Use linux64.m4.
15321         * mpn/ia64/logops_n.asm: New file.
15323 2003-11-05  Kevin Ryde  <kevin@swox.se>
15325         * tune/freq.c (freq_sysctl_hw_model): Relax to just look for "%u MHz",
15326         for the benefit of sparc cypress under netbsd 1.6.1.
15328         * mpfr/*: Update to mpfr-2-0-2-branch 2003-11-05.
15330         * mpn/alpha/ev5/dive_1.c: New file.
15332         * configure.in (x86_64-*-*): Accept together with amd64-*-*.
15334         * tune/speed.c: Check range of -x,-y,-w,-W alignment specifiers.
15335         * tune/speed.h (CACHE_LINE_SIZE): Amend comments.
15337 2003-11-04  Torbjorn Granlund  <tege@swox.com>
15339         * tune/speed.c: Fix typo in testing HAVE_NATIVE_mpn_modexact_1_odd.
15341 2003-11-03  Kevin Ryde  <kevin@swox.se>
15343         * mpn/ia64/hamdist.asm: New file.
15344         * mpn/ia64/mode1o.asm: New file.
15345         * mpn/ia64/ia64-defs.m4 (ASSERT): New macro.
15347         * tests/mpz/t-set_d.c (check_2n_plus_1): New test.
15349 2003-11-01  Kevin Ryde  <kevin@swox.se>
15351         * mpz/fac_ui.c (BSWAP_ULONG) [limb==2*long]: Remove this case, it
15352         provokes code gen problems on HP cc.
15353         (BSWAP_ULONG) [generic]: Rename __dst variable to avoid conflicts with
15354         BITREV_ULONG.
15355         Fix by Jason Moxham.
15357         * mpn/powerpc32/mode1o.asm: Use 16-bit i*i for early out, no need to
15358         truncate divisor.  Amend stated 750/7400 speeds, and note operands
15359         that give the extremes.
15361         * mpz/set_d.c: Don't use a special case for d < MP_BASE_AS_DOUBLE, gcc
15362         3.3 -mpowerpc64 on darwin gets ulonglong->double casts wrong.
15364         * mpn/generic/diveby3.c: Show a better style carry handling in the
15365         alternative pipelined sample code.
15367         Revert this, the longlong.h macros need -mpowerpc64:
15368         * acinclude.m4 (GMP_GCC_POWERPC64): New macro.
15369         * configure.in (powerpc64-*-darwin*): Use it to exclude -mpowerpc64
15370         when bad.
15372 2003-10-31  Torbjorn Granlund  <tege@swox.com>
15374         * mpn/powerpc64/mode64/submul_1.asm: Move an instruction to save a
15375         cycle on POWER4.
15377         * mpn/powerpc64/mode64/divrem_1.asm: Fix several syntax problems
15378         revealed on Mac OS X.
15380         * mpn/powerpc64/mode64/*.asm: Add cycle counts for POWER4.
15382         * mpn/powerpc64/sqr_diagonal.asm: Rewrite to save a cycle on POWER4.
15384 2003-10-31  Kevin Ryde  <kevin@swox.se>
15386         * mpfr/*: Update to mpfr-2-0-2-branch 2003-10-31.
15388         * mpn/powerpc64/README: Add subdirectory organisation notes.
15390         * tests/mpn/t-get_d.c: Don't use limits.h, LONG_MIN is wrong on gcc
15391         2.95 with -mcpu=ultrasparc.
15393         * acinclude.m4 (GMP_GCC_POWERPC64): New macro.
15394         * configure.in (powerpc64-*-darwin*): Use it to exclude -mpowerpc64
15395         when bad.
15397         * configure.in (powerpc64-*-darwin*) [ABI=mode32]: Use gcc -mcpu flags.
15399         * mpn/ia64/divrem_1.asm, mpn/ia64/gcd_1.asm: Use "C" for comments.
15400         * mpn/ia64/README, mpn/ia64/ia64-defs.m4: Note this.
15402         * mpn/ia64/ia64-defs.m4: Renamed from default.m4, per other defs files.
15403         * configure.in (IA64_PATTERN): Update GMP_INCLUDE_MPN.
15405         * doc/gmp.texi (Notes for Particular Systems): Remove m68k ABI notes
15406         for -mshort and PalmOS, now works.
15407         (References): Correction, GMP Square Root proof already there, just
15408         wanting URL from RRRR 4475.
15410 2003-10-29  Kevin Ryde  <kevin@swox.se>
15412         * configure.in (sparc*-*-*): Use gcc -m32 when that option works, to
15413         force 32-bit mode on dual 32/64 configurations like GNU/Linux.
15414         (sparc64-*-linux*): Add support for ABI=64.
15416         * mpn/generic/pre_divrem_1.c: In fraction part, use CNST_LIMB(0) with
15417         udiv_qrnnd_preinv to avoid warning about shift > type.
15419         * mpfr/*: Update to mpfr-2-0-2-branch 2003-10-29.
15421         * tests/cxx/t-istream.cc: Avoid tellg() checks if putback() doesn't
15422         update that, avoids certain g++ 2.96 problems.
15424         * tests/mpn/t-fat.c: New file.
15425         * tests/mpn/Makefile.am (check_PROGRAMS): Add it.
15427         * configure.in (CPUVEC_INSTALL, ITERATE_FAT_THRESHOLDS): New macros
15428         for fat.h.
15429         * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Use CPUVEC_INSTALL instead
15430         of memcpy.  Correction to location of "initialized" set.  Improve
15431         various comments.
15433 2003-10-27  Torbjorn Granlund  <tege@swox.com>
15435         * mpn/sparc64/mul_1.asm: Change addcc => add in a few places.
15436         * mpn/sparc64/addmul_1.asm: Likewise.
15438         * mpn/sparc32/v9/mul_1.asm: Apply cross-jumping.
15439         * mpn/sparc32/v9/addmul_1.asm: Likewise.
15440         * mpn/sparc32/v9/submul_1.asm: Likewise.
15441         * mpn/sparc32/v9/sqr_diagonal.asm: Likewise.
15443 2003-10-27  Kevin Ryde  <kevin@swox.se>
15445         * tests/cxx/t-misc.cc: Don't use <climits>, on g++ 2.95.4 (debian 3.0)
15446         -mcpu=ultrasparc LONG_MIN is wrong and kills the compile.
15448         * tests/cxx/t-istream.cc: Correction to tellg tests, don't assume
15449         streampos is zero based.
15451         * configure.in (HAVE_HOST_CPU_FAMILY_alpha): New define for config.h.
15452         * mpn/generic/get_d.c: Use it instead of __alpha for alpha workaround,
15453         since Cray cc doesn't define __alpha.
15455         * mpn/x86/README: Revise PIC coding notes a bit, add gcc visibility
15456         attribute.
15458 2003-10-25  Kevin Ryde  <kevin@swox.se>
15460         * mpn/ia64/gcd_1.asm: New file.
15462         * tune/many.pl: Allow for PROLOGUE(fun,...), as used on alpha.
15464         * doc/gmp.texi (C++ Formatted Input): Describe base indicator handling.
15466         * tests/cxx/t-istream.cc: New file.
15467         * tests/cxx/Makefile.am: Add it.
15469         * cxx/ismpznw.cc: New file, integer input without whitespace ...
15470         * cxx/ismpz.cc: ... from here.
15471         * gmp-impl.h (__gmpz_operator_in_nowhite): Add prototype.
15472         * cxx/ismpq.cc: Rewrite using mpz input routines.  Change to accept a
15473         separate base indicator on numerator and denominator.  Fix base
15474         indicator case where "123/0456" would stop at "123/0".
15475         * Makefile.am, cxx/Makefile.am: Add cxx/ismpznw.cc.
15477         * tests/mpz/t-set_d.c: New file, derived from tests/mpz/t-set_si.c
15478         * tests/mpz/Makefile.am (check_PROGRAMS): Add it.
15480         * mpn/m68k/lshift.asm, mpn/m68k/rshift.asm: Support 16-bit int and
15481         stack alignment.
15482         * mpn/m68k/README: Add notes on this.
15483         * configure.in (SIZEOF_UNSIGNED): New define in config.m4.
15484         * mpn/m68k/m68k-defs.m4 (m68k_definsn): Add cmpw, movew.
15485         Reported by Patrick Pelissier.
15487         * mpn/m68k/t-m68k-defs.pl: Don't use -> with hashes, to avoid
15488         deprecation warnings from perl 5.8.
15490         * configure.in (viac3-*-*): Use just x86/pentium in $path not x86/p6.
15491         If gcc is to be believed the old C3s don't have cmov.
15493         * Makefile.am: Amend comments about not building from libtool
15494         convenience libraries.
15496         * mpn/asm-defs.m4 (PROLOGUE): Use m4_file_seen, for correct filename
15497         in missing EPILOGUE error messages.
15498         (m4_file_seen): Amend comments about where used.
15500         * Makefile.am (CXX_OBJECTS): Remove $U, C++ files are not subject to
15501         ansi2knr rules.
15503         * gmp-h.in (mpn_divmod_1): Use __GMP_CAST, to avoid warnings in
15504         applications using g++ -Wold-style-cast.
15506         * mpn/z8000/README: New file.
15508 2003-10-22  Kevin Ryde  <kevin@swox.se>
15510         * mpn/generic/get_d.c (CONST_1024, CONST_NEG_1023,
15511         CONST_NEG_1022_SUB_53): Replace ALPHA_WORKAROUND with a non-gcc-ism,
15512         and use on Cray Unicos alpha too, which has the same problem.
15514         * configure.in (powerpc64-*-darwin*): Make ABI=32 available as the
15515         final fallback, remove mode64 until we know how it will work.
15517         * doc/gmp.texi (Build Options): Add powerpc970 to available CPUs.
15518         (ABI and ISA): Add mode32 for Darwin.
15520         * configure.in (gettimeofday): Use an explicit AC_TRY_LINK, to avoid
15521         known autoconf 2.57 problems with gettimeofday in AC_CHECK_FUNCS on
15522         HP-UX.
15524         * configure.in (powerpc*-*-*): Use ABI=32 instead of ABI=standard for
15525         the default 32-bit ABI.  Fixes powerpc64-*-aix* which is documented as
15526         choices "aix64 32" but had "aix64 standard".
15528         * mpfr/*: Update to mpfr-2-0-2-branch 2003-10-22.
15530         * doc/gmp.texi (Notes for Particular Systems): Note m68k gcc -mshort
15531         and PalmOS calling conventions not supported.  Reported by Patrick
15532         Pelissier.
15533         (References): Add Paul Zimmermann's Inria 4475 paper.
15535 2003-10-21  Torbjorn Granlund  <tege@swox.com>
15537         * mpn/ia64/submul_1.asm: Slightly reschedule loop to accommodate
15538         Itanium 2 getf.sig latency.
15540 2003-10-21  Kevin Ryde  <kevin@swox.se>
15542         * tests/mpn/t-instrument.c: Add mpn_addlsh1_n, mpn_rsh1add_n,
15543         mpn_rsh1sub_n, mpn_sub_nc, mpn_sublsh1_n.  Typo in mpn_preinv_divrem_1
15544         conditional.
15546 2003-10-20  Torbjorn Granlund  <tege@swox.com>
15548         * mpn/powerpc64/mode32/add_n.asm: New file.
15549         * mpn/powerpc64/mode32/sub_n.asm: New file.
15550         * mpn/powerpc64/mode32/mul_1.asm: New file.
15551         * mpn/powerpc64/mode32/addmul_1.asm: New file.
15552         * mpn/powerpc64/mode32/submul_1.asm: New file.
15554 2003-10-19  Torbjorn Granlund  <tege@swox.com>
15556         * longlong.h (AMD64): __x86_64__ => __amd64__.
15557         (64-bit powerpc): Only define carry-dependent macros if
15558         !_LONG_LONG_LIMB.
15560         * acinclude.m4 (POWERPC64_PATTERN): Add powerpc970-*-*.
15562         * configure.in (POWERPC64_PATTERN): Handle *-*-darwin*.
15563         (POWERPC64_PATTERN, *-*-aix*): Prepend powerpc64/mode64 to path_aix64.
15565         * mpn/powerpc64/mode64/mul_1.asm: Change cal => addi.
15566         * mpn/powerpc64/mode64/addmul_1.asm: Likewise.
15567         * mpn/powerpc64/mode64/submul_1.asm: Likewise.
15568         * mpn/powerpc64/sqr_diagonal.asm: Likewise.
15570         * mpn/powerpc64/mode64/mul_1.asm: Move from "..".
15571         * mpn/powerpc64/mode64/addmul_1.asm: Likewise.
15572         * mpn/powerpc64/mode64/submul_1.asm: Likewise.
15573         * mpn/powerpc64/mode64/divrem_1.asm: Likewise.
15574         * mpn/powerpc64/mode64/rsh1sub_n.asm: Likewise.
15575         * mpn/powerpc64/mode64/add_n.asm: Likewise.
15576         * mpn/powerpc64/mode64/addsub_n.asm: Likewise.
15577         * mpn/powerpc64/mode64/sub_n.asm: Likewise.
15578         * mpn/powerpc64/mode64/addlsh1_n.asm: Likewise.
15579         * mpn/powerpc64/mode64/diveby3.asm: Likewise.
15580         * mpn/powerpc64/mode64/rsh1add_n.asm: Likewise.
15581         * mpn/powerpc64/mode64/sublsh1_n.asm: Likewise.
15583         * mpn/powerpc64/lshift.asm: Handle mode32 ABI.
15584         * mpn/powerpc64/rshift.asm: Likewise.
15585         * mpn/powerpc64/umul.asm: Likewise.
15587         * tune/powerpc64.asm: Make it actually work.
15589 2003-10-19  Kevin Ryde  <kevin@swox.se>
15591         * mpn/generic/get_d.c: Add a workaround for alpha gcc signed constant
15592         comparison bug.
15594         * gmpxx.h (gmp_randclass gmp_randinit_lc_2exp_size constructor): Throw
15595         std::length_error if size is too big.
15596         * tests/cxx/t-rand.cc (check_randinit): Exercise this.
15598         * mpn/x86/pentium4/sse2/addlsh1_n.asm: New file, derived in part from
15599         mpn/x86/pentium4/sse2/add_n.asm.
15601         * doc/gmp.texi (C++ Interface Integers, C++ Interface Rationals, C++
15602         Interface Floats): Note std::invalid_argument exception for invalid
15603         strings to constructors and operator=.
15604         (C++ Interface Random Numbers): Note std::length_error exception for
15605         size too big in gmp_randinit_lc_2exp_size.
15607 2003-10-18  Kevin Ryde  <kevin@swox.se>
15609         * mpfr/*: Update to mpfr-2-0-2-branch 2003-10-18.
15611         * gmpxx.h (mpz_class, mpq_class, mpf_class, mpfr_class constructors
15612         and operator= taking string or char*): Throw std::invalid_argument if
15613         string cannot be converted.
15614         * tests/cxx/t-constr.cc, tests/cxx/t-assign.cc: Exercise this.
15616         * cxx/ismpz.cc, cxx/ismpq.cc, cxx/ismpf.cc: Use istream std::locale
15617         ctype facet for isspace when available.  Only accept space at the
15618         start of the input, same as g++ libstdc++.  Use ASSERT_NOCARRY to
15619         check result of mpz_set_str etc.
15620         * cxx/ismpf.cc: Don't accept "@" for exponent indicator.
15622         * tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Remove
15623         _open and _mpn variants of mpn_toom3_mul_n, only one style now.
15624         * tune/mul_n_open.c, tune/mul_n_mpn.c: Remove files.
15626         * gmp-impl.h (LIMB_HIGHBIT_TO_MASK): New macro.
15627         (udiv_qrnnd_preinv2, udiv_qrnnd_preinv2gen): Use it.
15629         * tests/mpz/t-import.c, tests/mpz/t-export.c: Use octal for character
15630         constants, hex is an ANSI-ism.
15632         * mpn/alpha/ev5/mode1o.c: Corrections to ASSERTs, as per
15633         mpn/generic/mode1o.c.
15635         * mpn/generic/diveby3.c: Add commented out alternative code and notes
15636         for taking the multiply off the dependent chain.  Amend/clarify some
15637         of the other comments.
15639         * configure.in (powerpc970-*-*): Use gcc -mcpu=970 when available.
15640         (powerpc7400-*-*): Fallback on gcc -mcpu=750 if -mcpu=7400 not
15641         available.
15643         * doc/gmp.texi (C++ Formatted Input): Note locale digit grouping not
15644         supported.
15645         (C++ Formatted Input, C++ Formatted Output): Cross reference class
15646         interface on overloading.
15648         * mpn/m68k/README: Add various ideas from doc/tasks.html.
15650         * mpn/m88k/README: New file.
15652 2003-10-16  Torbjorn Granlund  <tege@swox.com>
15654         * config.sub: Recognize powerpc970.
15656 2003-10-15  Torbjorn Granlund  <tege@swox.com>
15658         * config.guess: Recognize powerpc970 under MacOS.
15660 2003-10-15  Kevin Ryde  <kevin@swox.se>
15662         * configure.in, acinclude.m4 (GMP_C_RIGHT_SHIFT): New test.
15663         * gmp-impl.h (LIMB_HIGHBIT_TO_MASK): New macro.
15664         (udiv_qrnnd_preinv2, udiv_qrnnd_preinv2gen): Use it.
15666         * mpn/amd64/amd64-defs.m4: New file, with a non-aligning PROLOGUE.
15667         * configure.in (amd64-*-*): Use it.
15668         * mpn/amd64/addlsh1_n.asm: Add ALIGN(16).
15670         * mpfr/*: Update to mpfr cvs 2003-10-15.
15672         * mpn/generic/get_d.c: Rewrite, simplifying and truncating towards
15673         zero unconditionally.
15674         * tests/mpn/t-get_d.c: Add various further tests.
15675         * gmp-impl.h (FORCE_DOUBLE): New macro.
15677         * gmp-h.in (__mpz_struct): Add comment on __mpz_struct getting into
15678         C++ mangled function names.
15680         * doc/gmp.texi (Build Options): Update notes for new doc subdir.
15681         (Low-level Functions): Note mpn functions don't check for zero limbs
15682         etc, it's up to an application to strip.
15684         * doc/configuration (Configure): mdate-sh now in doc subdir, add
15685         generated fat.h.
15687 2003-10-14  Torbjorn Granlund  <tege@swox.com>
15689         * mpn/ia64/lorrshift.asm: Rewrite.
15691         * mpn/ia64/diveby3.asm: Remove explicit bundling; add branch hints.
15693 2003-10-13  Torbjorn Granlund  <tege@swox.com>
15695         * mpn/ia64/diveby3.asm: New file.
15697 2003-10-13  Kevin Ryde  <kevin@swox.se>
15699         * mpn/powerpc32/mod_34lsub1.asm: New file.
15701         * mpn/powerpc32/diveby3.asm, mpn/powerpc64/diveby3.asm: src[] in
15702         second operand of mullw, to allow possible early-out, which the
15703         0xAA..AB inverse cannot give.  This improvement noticed by Torbjorn.
15705         * acinclude.m4 (GMP_ASM_LSYM_PREFIX): Print to config.log whether
15706         local label is purely temporary or appears in object files, for
15707         development purposes.
15709         * doc/gmp.texi, doc/fdl.texi, doc/texinfo.tex, doc/mdate-sh: Moved
15710         from top-level.
15711         * doc/Makefile.am: New file.
15712         * configure.in (AC_OUTPUT): Add doc/Makefile.
15713         * Makefile.am (SUBDIRS): Move doc subdirectory from EXTRA_DIST.
15714         (info_TEXINFOS, gmp_TEXINFOS): Moved to doc/Makefile.am.
15715         * mpfr/Makefile.am (mpfr_TEXINFOS): fdl.texi now in doc subdir.
15716         (TEXINFO_TEX): texinfo.tex now in doc subdir.
15717         (AM_MAKEINFOFLAGS): Set -I to doc subdir.
15719         * mpz/and.c: For positive/positive, use mpn_and_n, rate a realloc as
15720         UNLIKELY.
15722         * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Don't test
15723         for high zero limbs.
15725 2003-10-12  Torbjorn Granlund  <tege@swox.com>
15727         * mpn/powerpc64/diveby3.asm: New file (trivial edits of
15728         powerpc32/diveby3.asm).
15730         * mpn/powerpc32/diveby3.asm: Update cycle counts with more processors.
15731         * mpn/powerpc32/sqr_diagonal.asm: Likewise.
15733         * mpn/pa64/add_n.asm: Correct PA8500 cycle counts.
15734         * mpn/pa64/sub_n.asm: Likewise.
15736         * mpn/m68k/aors_n.asm (INPUT PARAMETERS): Fix typo.
15737         * mpn/m68k/lshift.asm: Likewise.
15738         * mpn/m68k/rshift.asm: Likewise.
15740         * mpn/m68k/README: Correct an URL; add some STATUS comments.
15742         * mpn/ia64/aorslsh1_n.asm: Avoid shrp when shl/shr works just as well.
15744         * mpn/powerpc32/addlsh1_n.asm: New file.
15745         * mpn/powerpc32/sublsh1_n.asm: New file.
15747 2003-10-12  Kevin Ryde  <kevin@swox.se>
15749         * mpn/sparc64/divrem_1.c, mpn/sparc64/mod_1.c: New files.
15750         * mpn/sparc64/sparc64.h (HALF_ENDIAN_ADJ, count_leading_zeros_32,
15751         invert_half_limb, udiv_qrnnd_half_preinv): New macros.
15753         * gmp-impl.h (udiv_qrnnd_preinv2): Use a ? : for getting the n1 bit,
15754         so as not to depend on signed right shifts being arithmetic.
15756         * mpn/powerpc32/diveby3.asm: New file.
15758         * mpn/generic/divrem_1.c: Use CNST_LIMB(0) to avoid warnings from
15759         udiv_qrnnd_preinv about shift count when int<long.  Do the same with
15760         udiv_qrnnd, for consistency.
15762         * Makefile.am (install-data-hook): Print a warning recommending "make
15763         check" to watch out for compiler bugs.  Proposed by Torbjorn.
15765         * mpn/ia64/README (mpn_lshift, mpn_rshift): Amend prospective itanium2
15766         speed, 0.75 c/l with shrp plus shl/shr.
15768         * mpn/ia64/popcount.asm: Add comment on optimality.
15770 2003-10-11  Torbjorn Granlund  <tege@swox.com>
15772         * mpn/ia64/rsh1aors_n.asm: New file.
15774         * mpn/asm-defs.m4: Handle rsh1aors_n.
15776         * configure.in (tmp_mulfunc): Handle rsh1aors_n.
15778 2003-10-11  Kevin Ryde  <kevin@swox.se>
15780         * mpn/x86/pentium4/sse2/diveby3.asm: Remove non-PIC RODATA memory
15781         access for 0xAAAAAAAB constant.
15783         * gmp-impl.h (popc_limb, ULONG_PARITY) [ev67, ev68]: Add gcc asm
15784         versions using ctpop.
15786         * mpn/x86/k6/aorsmul_1.asm: Tweak some comments, remove M4_description
15787         and M4_desc_retval used only in comments.
15789         * mpn/x86/k6/mul_basecase.asm: Add comment on using mpn_mul_1.
15791 2003-10-09  Torbjorn Granlund  <tege@swox.com>
15793         * mpn/powerpc64/addlsh1_n.asm: Tweak for 0.25 c/l better loop speed.
15794         * mpn/powerpc64/sublsh1_n.asm: Likewise.
15796 2003-10-09  Kevin Ryde  <kevin@swox.se>
15798         * mpfr/*: Update to mpfr cvs 2003-10-09.
15800         * tests/devel/try.c (_SC_PAGESIZE): Define from _SC_PAGE_SIZE on
15801         systems which use that, eg. hpux 9.
15803 2003-10-07  Kevin Ryde  <kevin@swox.se>
15805         * tune/freq.c (freq_sysctl_hw_model): Correction to last sscanf change.
15807         * configure.in: Check for psp_iticksperclktick in struct pst_processor.
15808         * tune/freq.c (freq_pstat_getprocessor): Use this.
15810         * tests/devel/try.c (divisor_array): Add a couple of half-limb values.
15812         * acinclude.m4 (GMP_PROG_CC_WORKS): Correction to last change, need to
15813         set result "yes" when cross compiling.
15815 2003-10-06  Torbjorn Granlund  <tege@swox.com>
15817         * mpn/generic/mul_n.c: Use __GMPN_ADD_1/_GMPN_SUB_1 instead of
15818         mpn_add_1 and mpn_sub_1.
15820         * mpn/pa64/aorslsh1_n.asm: Schedule register save and restore code.
15822 2003-10-05  Torbjorn Granlund  <tege@swox.com>
15824         * mpn/pa64/mul_1.asm: Misc comment cleanups.
15825         * mpn/pa64/addmul_1.asm: Likewise.
15826         * mpn/pa64/submul_1.asm: Likewise.
15828         * mpn/pa64/README: Correct cycle counts.
15830         * mpn/pa64/aorslsh1_n.asm: New file.
15832 2003-10-04  Kevin Ryde  <kevin@swox.se>
15834         * tune/freq.c (freq_sysctl_hw_model, freq_sunos_sysinfo,
15835         freq_sco_etchw, freq_bsd_dmesg, freq_irix_hinv): Demand matching of
15836         MHz etc at end of sscanf format string.  In particular need this for
15837         freq_bsd_dmesg on i486-pc-freebsd4.7 to avoid the 486 cpu being used
15838         for the frequency.
15840         * tests/misc.c, tests/tests.h (tests_setjmp_sigfpe,
15841         tests_sigfpe_handler, tests_sigfpe_done, tests_sigfpe_target,
15842         tests_dbl_mant_bits): New.
15844         * configure.in (viac3*-*-*): Add gcc VIA c3 options.
15846         * mpfr/*: Update to mpfr cvs 2003-10-04.
15848         * tests/refmpn.c (refmpn_addlsh1_n, refmpn_sublsh1_n,
15849         refmpn_rsh1add_n, refmpn_rsh1sub_n): Add ASSERTs for operand overlaps.
15850         * tests/tests.h (refmpn_addlsh1_n, refmpn_sublsh1_n, refmpn_rsh1add_n,
15851         refmpn_rsh1sub_n): Add prototypes.
15853         * tests/devel/try.c, tune/many.pl: Add mpn_addlsh1_n, mpn_sublsh1_n,
15854         mpn_rsh1add_n, mpn_rsh1sub_n.
15856 2003-10-03  Torbjorn Granlund  <tege@swox.com>
15858         * tests/refmpn.c (refmpn_addlsh1_n, refmpn_sublsh1_n, refmpn_rsh1add_n,
15859         refmpn_rsh1sub_n): New functions.
15861 2003-10-03  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
15863         * mpn/generic/mul_n.c (toom3_interpolate): Use mpn_add_1/mpn_sub_1
15864         instead of MPN_INCR_/MPN_DECR_U.
15866 2003-10-02  Torbjorn Granlund  <tege@swox.com>
15868         * configure.in (ia64*-*-hpux*): Fall back to +O1, not +O.
15870 2003-10-02  Kevin Ryde  <kevin@swox.se>
15872         * configure.in (ia64*-*-hpux*): For cc, let +O optimization level
15873         fallback if +O3 doesn't work.
15875         * acinclude.m4 (GMP_PROG_CC_WORKS): Add a test of __builtin_alloca
15876         when available, to pick up Itanium HP-UX cc internal errors in +O2.
15877         Provoking code by Torbjorn.
15879 2003-10-01  Torbjorn Granlund  <tege@swox.com>
15881         * mpn/ia64/gmp-mparam.h: Retune.
15883         * mpn/asm-defs.m4: Handle aorslsh1_n.
15885         * configure.in (tmp_mulfunc): Handle aorslsh1_n.
15887         * mpn/ia64/aorslsh1_n.asm: New file.
15889         * mpn/ia64/aors_n.asm: New file, complete rewrite of mpn_add_n and
15890         mpn_sub_n.
15891         * mpn/ia64/add_n.asm: Replace by aors_n.asm.
15892         * mpn/ia64/sub_n.asm: Replace by aors_n.asm.
15894 2003-10-01  Kevin Ryde  <kevin@swox.se>
15896         * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Make bad ARM last byte into a
15897         separate case and consider it non-IEEE, since it looks like this is
15898         due to some sort of restricted or incorrect software floats.
15900         * demos/calc/Makefile.am: Use automake yacc/lex support, seems fine in
15901         separate objdir now.
15903         * cxx/dummy.cc: Moved from top-level dummy.cc.
15904         * Makefile.am (libgmpxx_la_SOURCES): Update to cxx/dummy.cc,
15905         correction to comment about this.
15907 2003-09-30  Torbjorn Granlund  <tege@swox.com>
15909         * demos/pexpr.c: Correct documentation of -split.
15910         (TIME): Remove cast of result to double.
15911         (main): Change timing variables to int.
15912         (main): #ifdef LIMIT_RESOURCE_USAGE, don't convert numbers of more than
15913         100000 digits.
15915 2003-09-28  Torbjorn Granlund  <tege@swox.com>
15917         * mpn/*/*.asm: Clean up spacing, tabify.
15919         * mpn/alpha/rshift.asm: Table cycle counts.
15920         * mpn/alpha/lshift.asm: Likewise.
15921         * mpn/alpha/ev5/rshift.asm: Likewise.
15922         * mpn/alpha/ev5/lshift.asm: Likewise.
15923         * mpn/alpha/ev6/add_n.asm: Likewise.
15924         * mpn/alpha/ev6/sub_n.asm: Likewise.
15926         * mpn/ia64/lorrshift.asm: Amend comments about performance.
15928         * mpn/pa64/mul_1.asm: Fix comment typo.
15929         * mpn/pa64/addmul_1.asm: Likewise.
15930         * mpn/pa64/submul_1.asm: Likewise.
15932         * mpn/amd64/addlsh1_n.asm: Save/restore carry using two insn to break
15933         recurrency.  Add remarks about possible further speedup.
15934         * mpn/amd64/sublsh1_n.asm: Likewise.
15936         * mpn/amd64/rsh1add_n.asm: Add remarks about possible further speedup.
15937         * mpn/amd64/rsh1sub_n.asm: Likewise.
15939 2003-09-27  Torbjorn Granlund  <tege@swox.com>
15941         * mpn/powerpc64/README: Update with POWER4/PPC970 pipeline info.
15943         * mpn/powerpc64/rsh1add_n.asm: New file.
15944         * mpn/powerpc64/rsh1sub_n.asm: New file.
15945         * mpn/powerpc64/rshift.asm: Rewrite.
15946         * mpn/powerpc64/lshift.asm: Rewrite.
15948 2003-09-26  Torbjorn Granlund  <tege@swox.com>
15950         * mpn/powerpc64/addlsh1_n.asm: New file.
15951         * mpn/powerpc64/sublsh1_n.asm: New file.
15953 2003-09-25  Torbjorn Granlund  <tege@swox.com>
15955         * tune/common.c (speed_mpn_addlsh1_n, speed_mpn_sublsh1_n,
15956         speed_mpn_rsh1add_n, speed_mpn_rsh1sub_n): Conditionalize on
15957         corresponding HAVE_NATIVE_*.
15959 2003-09-25  Kevin Ryde  <kevin@swox.se>
15961         * mpz/combit.c: Use GMP_NUMB_BITS not BITS_PER_MP_LIMB.
15963         * demos/expr/exprfr.c: Allow for mpfr_inf_p, mpfr_nan_p and
15964         mpfr_number_p merely returning non-zero, rather than 1 or 0.
15966         * demos/expr/exprfr.c, demos/expr/t-expr.c: Add erf, integer_p, zeta.
15968         * demos/expr/Makefile.am (LDADD): Update comments on $(LIBM).
15970 2003-09-24  Torbjorn Granlund  <tege@swox.com>
15972         * tune/speed.c (routine): Add entries for mpn_addlsh1_n, mpn_sublsh1_n,
15973         mpn_rsh1add_n, and mpn_rsh1sub_n.
15975         * tune/speed.h: Declare speed_mpn_addlsh1_n, speed_mpn_sublsh1_n,
15976         speed_mpn_rsh1add_n, and speed_mpn_rsh1sub_n.
15978         * tune/common.c (speed_mpn_addlsh1_n, speed_mpn_sublsh1_n,
15979         speed_mpn_rsh1add_n, speed_mpn_rsh1sub_n): New functions.
15981         * gmp-impl.h: Declare mpn_addlsh1_n, mpn_sublsh1_n, mpn_rsh1add_n, and
15982         mpn_rsh1sub_n.
15984         * mpn/asm-defs.m4: Add define_mpn's for addlsh1_n, sublsh1_n,
15985         rsh1add_n, and rsh1sub_n.
15987         * mpn/powerpc64/*.asm: Add cycle counts in consistent style.  Misc
15988         styling edits.
15990         * mpn/amd64/gmp-mparam.h: Retune.
15992         * configure.in: Add #undefs for HAVE_NATIVE_mpn_addlsh1_n,
15993         HAVE_NATIVE_mpn_sublsh1_n, HAVE_NATIVE_mpn_rsh1add_n,
15994         HAVE_NATIVE_mpn_rsh1sub_n.
15995         (gmp_mpn_functions_optional): List addlsh1_n, sublsh1_n, rsh1add_n,
15996         and rsh1sub_n.
15998         * mpn/amd64/addlsh1_n.asm: New file.
15999         * mpn/amd64/sublsh1_n.asm: New file.
16000         * mpn/amd64/rsh1add_n.asm: New file.
16001         * mpn/amd64/rsh1sub_n.asm: New file.
16003 2003-09-24  Kevin Ryde  <kevin@swox.se>
16005         * mpfr/*: Update to mpfr cvs 2003-09-24.
16007         * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Remove conftest* temporary files.
16009 2003-09-23  Torbjorn Granlund  <tege@swox.com>
16011         * gmp-impl.h (MUL_TOOM3_THRESHOLD, SQR_TOOM3_THRESHOLD): Now 128.
16013 2003-09-23  Kevin Ryde  <kevin@swox.se>
16015         * gmp-h.in (gmp_randinit_set): Use __gmp_const rather than const.
16017 2003-09-22  Torbjorn Granlund  <tege@swox.com>
16019         * tune/mul_n_mpn.c: (__gmpn_sqr_n): New #define.
16020         * tune/mul_n_open.c (__gmpn_sqr_n): New #define.
16022         * mpn/generic/mul.c (mpn_sqr_n): Move from here...
16023         * mpn/generic/mul_n.c (mpn_sqr_n): ...to here.
16024         (mpn_sqr_n): Allocate workspace for toom3 using TMP_* mechanism except
16025         for very large operands when !WANT_FFT.
16027         * mpn/generic/mul_n.c: Add a missing ";". Misc comment fixes.
16029         * mpn/generic/mul.c: Remove spurious #include <stdio.h>.
16031         * mpn/x86/k7/gmp-mparam.h: Retune.
16033         * mpn/generic/mul_n.c (mpn_mul_n): Allocate workspace for toom3 using
16034         TMP_* mechanism except for very large operands when !WANT_FFT.
16036         * gmp-impl.h (MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_SQR_N_TSIZE):
16037         Define conditionally on WANT_FFT and HAVE_NATIVE_mpn_sublsh1_n.
16038         (MPN_TOOM3_MAX_N): New #define.
16040         * mpn/amd64/gmp-mparam.h: Retune.
16042         * mpn/Makefile.am (TARG_DIST): Add amd64.
16044         * mpn/generic/sqr_basecase.c: Use mpn_addlsh1_n when available.
16046         * mpn/generic/mul_n.c: Use proper form for HAVE_NATIVE macros.
16048 2003-09-22  Kevin Ryde  <kevin@swox.se>
16050         * mpfr/*: Update to mpfr cvs 2003-09-22.
16052 2003-09-21  Kevin Ryde  <kevin@swox.se>
16054         * mpn/x86/pentium4/sse2/gmp-mparam.h (USE_PREINV_DIVREM_1,
16055         USE_PREINV_MOD_1): Set to 1 for new asm versions.
16057         * mpfr/*: Update to mpfr cvs 2003-09-21.
16059 2003-09-21  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
16061         * mpn/generic/mul_n.c (mpn_toom3_mul_n): Conditionally use
16062         mpn_sublsh1_n, mpn_rsh1add_n and mpn_rsh1sub_n, in addition to
16063         mpn_addlsh1_n.  Avoid all copying, at the expense of some additional
16064         workspace.
16066         * gmp-impl.h (MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_SQR_N_TSIZE): Accommodate
16067         latest toom3 code.
16069 2003-09-19  Kevin Ryde  <kevin@swox.se>
16071         * mpn/x86/pentium4/sse2/divrem_1.asm, mpn/x86/pentium4/sse2/mod_1.asm:
16072         New files.
16074 2003-09-16  Kevin Ryde  <kevin@swox.se>
16076         * tune/speed.c (run_one): Don't scale the -1.0 not-available return.
16077         Print "n/a" for times not-available.
16079 2003-09-13  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
16081         * mpn/generic/mul_n.c (toom3_interpolate): New function.
16082         (mpn_toom3_mul_n, mpn_toom3_sqr_n): Call toom3_interpolate.
16084 2003-09-12  Torbjorn Granlund  <tege@swox.com>
16086         * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove unused
16087         variables.
16088         (mpn_toom3_mul_n, mpn_toom3_sqr_n): Use offset `+ 1', not `+ 2' in last
16089         MPN_DECR_U calls.
16091 2003-09-12  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
16093         * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Rewrite.
16095 2003-09-12  Torbjorn Granlund  <tege@swox.com>
16097         * gmp-impl.h (MPN_KARA_MUL_N_TSIZE, MPN_KARA_SQR_N_TSIZE): Reformulate
16098         to use the same form as MPN_TOOM3_MUL_N_TSIZE.
16099         (MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_SQR_N_TSIZE): Update for new Toom3
16100         code requirements.
16101         * mpn/generic/mul_n.c (evaluate3, interpolate3, add2Times): Remove.
16102         (USE_MORE_MPN): Remove.
16104 2003-08-31  Kevin Ryde  <kevin@swox.se>
16106         * mpfr/*: Update to mpfr cvs 2003-08-31.
16108 2003-08-30  Kevin Ryde  <kevin@swox.se>
16110         * mpfr/*: Update to mpfr cvs 2003-08-30.
16112 2003-08-29  Torbjorn Granlund  <tege@swox.com>
16114         * mpn/amd64/copyi.asm: New file.
16115         * mpn/amd64/copyd.asm: New file.
16116         * mpn/amd64/README: New file.
16118 2003-08-28  Torbjorn Granlund  <tege@swox.com>
16120         * mpn/amd64/lshift.asm: New file.
16121         * mpn/amd64/rshift.asm: New file.
16122         * mpn/amd64/gmp-mparam.h: Retune.
16124 2003-08-23  Kevin Ryde  <kevin@swox.se>
16126         * tune/freq.c (freq_getsysinfo): Correction to speed_cycletime value
16127         established.
16129         * mpz/rootrem.c, gmp-h.in, gmp.texi (mpz_rootrem): Don't return
16130         exactness indication, can get that from testing the remainder.
16132         * mpn/x86/k7/aors_n.asm, mpn/x86/k7/mmx/copyi.asm: Amend to comments
16133         about loads and stores and what speed should be possible.
16135 2003-08-22  Torbjorn Granlund  <tege@swox.com>
16137         * mpn/amd64/add_n.asm: New file.
16138         * mpn/amd64/sub_n.asm: New file.
16139         * mpn/amd64/mul_1.asm: New file.
16140         * mpn/amd64/addmul_1.asm: New file.
16141         * mpn/amd64/submul_1.asm: New file.
16143 2003-08-19  Kevin Ryde  <kevin@swox.se>
16145         * longlong.h (add_ssaaaa, sub_ddmmss) [hppa 64]: Move down into main
16146         __GNUC__ block.  Exclude for _LONG_LONG_LIMB (ie. ABI=2.0n) since
16147         these forms are only for ABI=2.0w.
16149         * longlong.h (count_leading_zeros) [__mcpu32__]: Check __mcpu32__ to
16150         avoid bfffo on GCC 3.4 in CPU32 mode.  Reported by Bernardo Innocenti.
16152         * longlong.h (count_trailing_zeros) [x86_64]: Use "%q0" to force
16153         64-bit register destination.  Pointed out by Torbjorn.
16155         * mpz/combit.c: Correction to carry handling when extending a
16156         negative, and use __GMPN_ADD_1.  Correction to complement limb for a
16157         negative when there's a non-zero low limb.
16158         * tests/mpz/bit.c (check_clr_extend, check_com_negs): Exercise these.
16160         * demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/test.pl: Add
16161         get_d_2exp.
16162         * demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/GMP/Rand.pm,
16163         demos/perl/test.pl: Add gmp_urandomb_ui, gmp_urandomm_ui.
16164         (GMP::Rand::randstate): Accept a randstate object to copy.
16165         * demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/GMP/Mpz.pm,
16166         demos/perl/test.pl: Add combit, rootrem.
16168 2003-08-19  Torbjorn Granlund  <tege@swox.com>
16170         * tune/Makefile.am (EXTRA_DIST): Add amd64.asm.
16172 2003-08-17  Kevin Ryde  <kevin@swox.se>
16174         * gmpxx.h [__MPFR_H]: Include full <iostream> for inlines.
16175         * tests/cxx/t-headfr.cc: New file, exercising this.
16176         * tests/cxx/Makefile.am: Add it.
16178         * tests/cxx/t-constr.cc: Include config.h for WANT_MPFR.
16180         * gmpxx.h: Correction to temp variable type in mpf -> mpfr assignment.
16181         Reported by Derrick Bass.
16182         * tests/cxx/t-assign.cc (check_mpfr): Exercise this.
16184         * configure.in (WANT_MPFR): AC_DEFINE this, for the benefit of
16185         tests/cxx/t-*.cc.  (Was always meant to have been defined.)
16186         * tests/cxx/Makefile.am (INCLUDES): Add -I$(top_srcdir)/mpfr.
16188         * gmpxx.h: __gmp_default_rounding_mode -> __gmpfr_default_rounding_mode
16189         (struct __gmp_hypot_function): Correction to mpfr_hypot addition.
16190         * tests/cxx/t-misc.cc (check_mpfr_hypot): Corrections to mpfr/long
16191         tests.
16193 2003-08-16  Torbjorn Granlund  <tege@swox.com>
16195         * configure.in (amd64): New.
16197         * mpn/amd64/gmp-mparam.h: New file.
16199         * tune/amd64.asm: New file, derived in part from tune/pentium.asm.
16201 2003-08-15  Kevin Ryde  <kevin@swox.se>
16203         * tune/freq.c (freq_irix_hinv): Reinstate, for the benefit of IRIX 6.2.
16204         (freq_attr_get_invent): Conditionalize on INFO_LBL_DETAIL_INVENT too.
16206 2003-08-14  Kevin Ryde  <kevin@swox.se>
16208         * mpq/get_d.c: Use mpn_get_d.
16209         * tests/mpq/t-get_d.c (check_onebit): New test.
16211         * gmp.texi (Notes for Particular Systems): Under x86 cpu types, note
16212         i386 is a fat binary, remove pentium4 recommendation since i386 is now
16213         quite reasonable for p4.
16214         (Notes for Particular Systems): Under Windows DLLs, remove caveat
16215         about --enable-cxx now ok, update .lib creation for new libtool,
16216         remove .exp not needed for MS C.
16217         (Notes for Package Builds): i386 is a fat binary.
16218         (Reentrancy): Remove SCO ctype.h note, don't want to list every system
16219         misfeature, and was quite possibly for non-threading mode anyway.
16220         (Autoconf): Remove notes on gmp 2 detection, too old to want to
16221         encourage anyone to use.
16222         (Karatsuba Multiplication): Correction to threshold increase/decrease
16223         for a and b terms.  Reported by Richard Brent and Paul Zimmermann.
16224         Also add various further index entries.
16226         * tune/freq.c (freq_attr_get_invent): New function.
16227         (freq_irix_hinv): Remove, in favour or freq_attr_get_invent.
16228         * configure.in (AC_CHECK_FUNCS): Add attr_get.
16229         (AC_CHECK_HEADERS): Add invent.h, sys/attributes.h, sys/iograph.h.
16231 2003-08-03  Kevin Ryde  <kevin@swox.se>
16233         * tune/tuneup.c (tune_mul): Use MUL_KARATSUBA_THRESHOLD_LIMIT.
16235 2003-08-02  Kevin Ryde  <kevin@swox.se>
16237         * mpn/asm-defs.m4: Tweak some comments, add hpux11 to m4wrap 0xFF
16238         problem systems.
16240         * configure.in (*-*-sco3.2v5*): Remove lt_cv_archive_cmds_need_lc=no,
16241         since libtool no longer uses it.  This was a workaround fixing ctype.h
16242         in SCO 5 shared libraries; not sure if libtool now gets it right on
16243         its own, let's hope so.
16245         * configure.in, acinclude.m4 (GMP_PROG_HOST_CC): Remove, libtool no
16246         longer demands HOST_CC.
16248         * configure.in: When C or C++ compiler not found, refer user to
16249         config.log.
16251         * configure.in (i386-*-*): Turn i386 into a fat binary build.
16252         * mpn/x86/fat/fat.c, mpn/x86/fat/fat_entry.asm,
16253         mpn/x86/fat/gmp-mparam.h, mpn/x86/fat/gcd_1.c, mpn/x86/fat/mode1o.c:
16254         New files.
16255         * gmp-impl.h (struct cpuvec_t) [x86 fat]: New structure.
16256         * longlong.h (COUNT_LEADING_ZEROS_NEED_CLZ_TAB) [x86 fat]: Define.
16257         * mpn/asm-defs.m4 (foreach): New macro.
16258         * mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): New define.
16259         * mpn/x86/sqr_basecase.asm: New file, primarily as a fallback for fat
16260         binaries.
16261         * mpn/x86/p6/gmp-mparam.h, mpn/x86/p6/mmx/gmp-mparam.h: Add comments
16262         about fat binary SQR_KARATSUBA_THRESHOLD for p6 and p6/mmx.
16264         * configure.in: Add various supports for fat binaries, via fat_path,
16265         fat_functions and fat_thresholds variables.
16266         * acinclude.m4 (GMP_STRIP_PATH): Mung $fat_path too.
16267         (GMP_FAT_SUFFIX, GMP_REMOVE_FROM_LIST): New macros.
16268         * gmp-impl.h: Add various supports for fat binaries.
16269         (DECL_add_n etc): New macros.
16270         (mpn_mul_basecase etc): Define only if not already defined.
16271         * mpn/asm-defs.m4 (m4_config_gmp_mparam): Mention fat binary.
16272         (MPN): Use m4_unquote, for the benefit of fat binary name expansion.
16273         * doc/configuration: Notes on fat binaries.
16274         * gmp-impl.h (MUL_TOOM3_THRESHOLD_LIMIT): Define always.
16275         (MUL_KARATSUBA_THRESHOLD_LIMIT): New define.
16276         * mpn/generic/mul.c, mpn/generic/mul_n.c: Use these.
16277         * tune/divrem1div.c, tune/divrem1inv.c, tune/mod_1_div.c,
16278         tune/mod_1_inv.c: Define OPERATION_divrem_1 and OPERATION_mod_1, to
16279         tell fat.h what's being done.
16281         * config.guess (alpha-*-*): Update comments on what configfsf.guess
16282         does and doesn't do for us.
16284 2003-07-31  Kevin Ryde  <kevin@swox.se>
16286         * config.guess: Remove $dummy.o files everywhere, in case vendor
16287         compilers produce that even when not asked.
16289         * demos/perl/GMP.xs (class_or_croak): Rename "class" parameter to
16290         avoid C++ keyword.
16291         (coerce_ulong, coerce_long): Move croaks to stop g++ 3.3 complaining
16292         about uninitialized variables.
16294         * demos/perl/INSTALL: Add notes on building with a DLL.
16296         * longlong.h (count_trailing_zeros) [x86_64]: Ensure bsfq destination
16297         is a 64-bit register.  Diagnosed by Francois G. Dorais.
16299 2003-07-31  Torbjorn Granlund  <tege@swox.com>
16301         * longlong.h [ppc]: Remove nested test for vxworks.
16303 2003-07-24  Kevin Ryde  <kevin@swox.se>
16305         * gmpxx.h (struct __gmp_binary_multiplies): Use mpz_mul_si for
16306         mpz*long and long*mpz.
16307         * tests/cxx/t-ops.cc (check_mpz): Exercise mpz*long and mpz*ulong.
16309         * cxx/ismpf.cc: Use std::locale decimal point when available.  Expect
16310         localeconv available always.
16311         * tests/cxx/t-locale.cc: Enable check_input tests.
16313         * gmpxx.h (struct __gmp_hypot_function): Use mpfr_hypot.
16314         * tests/cxx/t-misc.cc (check_mpfr_hypot): New tests.
16316         * tests/cxx/t-assign.cc, tests/cxx/t-binary.cc, tests/cxx/t-ops.cc,
16317         tests/cxx/t-prec.cc, tests/cxx/t-ternary.cc, tests/cxx/t-unary.cc:
16318         Include config.h for WANT_MPFR.
16320         * tests/mpz/bit.c (check_single): Correction to a diagnostic print.
16322 2003-07-24  Niels Möller  <nisse@lysator.liu.se>
16324         * mpz/combit.c: New file.
16325         * Makefile.am, mpz/Makefile.am: Add it.
16326         * gmp-h.in (mpz_combit): Add prototype.
16327         * tests/mpz/bit.c (check_single): Exercise mpz_combit.
16329 2003-07-16  Kevin Ryde  <kevin@swox.se>
16331         * mpn/generic/get_d.c: Correction to infinity handling for large exp.
16333 2003-07-14  Kevin Ryde  <kevin@swox.se>
16335         * mpz/get_d.c, mpz/get_d_2exp.c, mpf/get_d.c, mpf/get_d_2exp.c: Use
16336         mpn_get_d.
16338         * mpn/generic/get_d.c: New file, based on mpz/get_d.c and insert-dbl.c.
16339         * configure.in, mpn/Makefile.am: Add it.
16340         * gmp-impl.h (mpn_get_d): Add prototype.
16342         * tests/mpn/t-get_d.c: New file.
16343         * tests/mpn/Makefile.am: Add it.
16345         * tests/mpz/t-get_d_2exp.c (check_onebit, check_round): Test negatives.
16346         (check_onebit): Add a few more bit sizes.
16348         * tests/misc.c, tests/tests.h (tests_isinf): New function.
16350 2003-07-12  Kevin Ryde  <kevin@swox.se>
16352         * configure.in (GMP_PROG_CXX_WORKS): Include $CPPFLAGS, same as
16353         automake does in the actual build.
16355         * acinclude.m4 (GMP_PROG_CXX_WORKS): In the namespace test, declare
16356         namespace before trying to use.  In std iostream test, provoke a
16357         failure from Compaq C++ in pre-standard mode.
16359 2003-07-08  Kevin Ryde  <kevin@swox.se>
16361         * acinclude.m4 (GMP_PROG_CC_WORKS): Use separate compiles for various
16362         known problems, and indicate to the user the reason for rejecting.
16363         (GMP_PROG_CXX_WORKS): Ditto, and insist on being able to execute each
16364         compiled program.
16366 2003-07-05  Kevin Ryde  <kevin@swox.se>
16368         * config.sub: Add comments to our alias transformations.
16370         * configfsf.sub, configfsf.guess: Update to 2003-07-04.
16372         * acinclude.m4 (GMP_PROG_CC_WORKS, GMP_PROG_CC_WORKS_LONGLONG): Show
16373         failing program in config.log, per other autoconf tests.
16375         * configure.in (i786-*-*): Recognise as pentium4, per configfsf.sub.
16377 2003-06-28  Kevin Ryde  <kevin@swox.se>
16379         * mpz/get_d_2exp.c, mpf/get_d_2exp.c: Avoid res==1.0 when floats round
16380         upwards.
16382         * tests/mpz/t-get_d_2exp.c: New file.
16383         * tests/mpz/Makefile.am (check_PROGRAMS): Add it.
16384         * tests/mpf/t-get_d_2exp.c: New file.
16385         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
16386         * tests/x86call.asm, test/tests.h (x86_fldcw, x86_fstcw): New
16387         functions.
16388         * tests/misc.c, tests/tests.h (tests_hardware_getround,
16389         tests_hardware_setround): New functions.
16391 2003-06-25  Kevin Ryde  <kevin@swox.se>
16393         * mpn/sparc64/dive_1.c: New file.
16395         * mpn/sparc64/sparc64.h: New file.
16396         * mpn/sparc64/mode1o.c: Remove things now in sparc64.h.
16398         * mpfr/*: Update to mpfr cvs 2003-06-25.
16400         * acinclude.m4 (GMP_PROG_CC_WORKS): In last change provoking gnupro
16401         gcc, don't use ANSI style function definition.
16403 2003-06-22  Kevin Ryde  <kevin@swox.se>
16405         * mpn/pa32/hppa1_1/udiv.asm: Remove .proc, .entry, .exit and .procend,
16406         handled by PROLOGUE and EPILOGUE.  Comment out .callinfo, per other
16407         asm files.
16409         * gmpxx.h (mpz_class __gmp_binary_divides, __gmp_binary_modulus): Fix
16410         long/mpz and long%mpz for dividend==LONG_MIN divisor==-LONG_MIN.
16411         (mpz_class __gmp_binary_modulus): Fix mpz%long for negative dividend.
16412         * tests/cxx/t-ops.cc (check_mpz): Add test cases for these, merging
16413         operator/ and operator% sections for clarity.
16415 2003-06-21  Kevin Ryde  <kevin@swox.se>
16417         * mpfr/*: Update to mpfr cvs 2003-06-21.
16419         * acinclude.m4 (GMP_PROG_CC_WORKS): Add code by Torbjorn provoking an
16420         ICE from gcc 2.9-gnupro-99r1 under -O2 -mcpu=ev6.
16421         * configure.in (alpha*-*-* gcc_cflags_cpu): Fallback on -mcpu=ev56 for
16422         this compiler.
16424         * gmpxx.h (get_d): Remove comments about long double, double is
16425         correct for get_d, a future long double form would be get_ld.
16427 2003-06-19  Kevin Ryde  <kevin@swox.se>
16429         * mpfr/*: Update to mpfr cvs 2003-06-19.
16431         * mpn/generic/dive_1.c: Share src[0] fetch among all cases.  No need
16432         for separate final umul_ppmm in even case, make it part of the loop.
16434         * mpz/get_d_2exp.c, mpq/set_si.c, mpq/set_ui.c: Nailify.
16436         * mpf/iset_si.c: Rewrite using mpf/set_si.c code, in particular this
16437         nailifies it.
16438         * tests/mpf/t-set_si.c: Nailify tests.
16440         * mpf/iset_ui.c: Nailify, as per mpf/set_ui.c
16441         * tests/mpf/t-set_ui.c: New file.
16442         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
16444 2003-06-15  Kevin Ryde  <kevin@swox.se>
16446         * mpfr/*: Update to mpfr cvs 2003-06-15.
16448         * mpn/x86/k6/mode1o.asm: Remove a bogus ASSERT.
16450 2003-06-12  Kevin Ryde  <kevin@swox.se>
16452         * configure.in (--enable-assert): Emit WANT_ASSERT to config.m4.
16453         * mpn/powerpc32/powerpc-defs.m4, mpn/x86/x86-defs.m4 (ASSERT): Check
16454         WANT_ASSERT is defined.
16456         * mpn/sparc32/v9/udiv.asm: Amend heading, this file is for sparc v9.
16458         * tests/cxx/Makefile.am (TESTS_ENVIRONMENT): In libtool openbsd hack,
16459         discard error messages from cp, for the benefit of --disable-shared or
16460         systems not using names libgmp.so.*.
16462         * tests/devel/try.c (try_one): When overlapping, copy source data
16463         after filling dst.  Previously probably used only DEADVAL in
16464         overlapping cases.
16466 2003-06-11  Torbjorn Granlund  <tege@swox.com>
16468         * mpf/random2.c: Rewrite.  Ignore sign of exp parameter.
16470 2003-06-10  Kevin Ryde  <kevin@swox.se>
16472         * mpn/sparc64/mode1o.c: New file.
16474 2003-06-09  Torbjorn Granlund  <tege@swox.com>
16476         * mpn/powerpc32/lshift.asm: Add more cycle counts.
16477         * mpn/powerpc32/rshift.asm: Add more cycle counts.
16479         * mpn/ia64/addmul_1.asm: Reformat comments for 80 columns.
16481         * gmp-impl.h (udiv_qrnnd_preinv1): New name for udiv_qrnnd_preinv.
16482         (udiv_qrnnd_preinv2): New name for udiv_qrnnd_preinv2norm.
16483         (udiv_qrnnd_preinv): New #define, making udiv_qrnnd_preinv2
16484         the default.
16485         * tune/speed.c: Corresponding changes.
16486         * tune/speed.h: Likewise.
16487         * tune/common.c: Likewise.
16489         * mpf/get_str.c: Simplify `off' computation.
16491         * longlong.h: Tabify.
16493 2003-06-09  Kevin Ryde  <kevin@swox.se>
16495         * gmp.texi (ABI and ISA): FreeBSD has sparc64 too, just say "BSD" to
16496         cover all flavours.
16497         * configure.in: Ditto in some comments.
16499         * mpfr/*: Update to mpfr cvs 2003-06-09.
16501         * tests/cxx/Makefile.am (LDADD): Add -L$(top_builddir)/$(LIBS), for
16502         the benefit of gcc 3.2 on itanium2-hp-hpux11.22.
16504         * tune/many.pl (mul_2): Add speed routine settings.
16505         (MAKEFILE): Close when done, for the benefit of development hackery.
16507 2003-06-08  Kevin Ryde  <kevin@swox.se>
16509         * mpfr/*: Update to mpfr cvs 2003-06-08.
16511         * mpn/x86/x86-defs.m4 (femms): Remove fallback to emms.
16512         (cmovCC, psadbw): Remove simulated versions.
16513         (cmov_available_p, psadbw_available_p): Remove.
16514         This trickery was only ever for development purposes on machines
16515         without those instructions.  Removing it simplifies gmp and in
16516         particular avoids complications for fat binary builds.  Development
16517         can be done with a wrapper around "as" if really needed.
16519         * mpn/x86/divrem_1.asm: Don't use loop_or_decljnz, now K6 has its own
16520         mpn/x86/k6/divrem_1.asm.  Amend K6 comments now moved to there.
16521         * mpn/x86/x86-defs.m4 (loop_or_decljnz): Remove, no longer used.
16523         * mpn/x86/k6/divrem_1.asm: New file, derived from mpn/x86/divrem_1.asm.
16525         * mpn/x86/k6/pre_mod_1.asm: Remove comments now in mpn/x86/mod_1.asm.
16527         * mpn/x86/mod_1.asm: Put mpn_mod_1c after mpn_mod_1 for better branch
16528         prediction.  Put done_zero at end for less wastage in alignment.  Use
16529         decl+jnz unconditionally since in fact it's ok on k6.  Amend comments.
16531 2003-06-07  Kevin Ryde  <kevin@swox.se>
16533         * mpn/generic/mode1o.c: Fix ASSERTs on return value.
16535         * gmp.texi (Build Options): Add viac3 and viac32 cpu types.
16536         (ABI and ISA): Note on sparcv9 ABI=32 vs ABI=64 speed.  More indexing.
16538         * configfsf.guess, configfsf.sub: Update to 2003-06-06.
16539         * config.guess: Remove $RANDOM hack supporting netbsd 1.4, not needed
16540         by new configfsf.guess.
16542 2003-06-06  Torbjorn Granlund  <tege@swox.com>
16544         * mpn/ia64/submul_1.asm: Add branch over .align block.
16546 2003-06-05  Torbjorn Granlund  <tege@swox.com>
16548         * longlong.h (add_ssaaaa) [pa64]: Output zero operand as register 0.
16549         Allow more immediate operands.
16550         (sub_ddmmss) [pa64]: Likewise.
16551         (add_ssaaaa) [pa32]: Likewise.
16552         (sub_ddmmss) [pa32]: Likewise.
16554         * mpn/pa64: Change ".level 2.0W" to ".level 2.0w" to please
16555         picky GNU assembler.
16557 2003-06-05  Kevin Ryde  <kevin@swox.se>
16559         * gmp.texi (Integer Special Functions): In mpz_array_init, fix type
16560         shown for integer_array and give an example use.
16562 2003-06-04  Torbjorn Granlund  <tege@swox.com>
16564         * mpf/set_str.c (mpf_set_str): Work around gcc 2 bug triggered on
16565         alpha.
16567 2003-06-03  Kevin Ryde  <kevin@swox.se>
16569         * mpn/x86/pentium/README: Add 7 c/l mmx mul_1, tweak wordings.
16571         * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Use octal char constants in test
16572         program, hex is not supported by K&R.
16574 2003-06-02  Torbjorn Granlund  <tege@swox.com>
16576         * mpn/mips64/divrem_1.asm: New file.
16578 2003-06-01  Torbjorn Granlund  <tege@swox.com>
16580         * mpn/powerpc32/lshift.asm: Reformat code.
16581         * mpn/powerpc32/rshift.asm: Reformat code.
16583 2003-05-30  Kevin Ryde  <kevin@swox.se>
16585         * tests/misc.c (tests_start): Set stdout and stderr to unbuffered, to
16586         avoid any chance of losing output on segv etc.
16588 2003-05-28  Torbjorn Granlund  <tege@swox.com>
16590         * mpf/get_str.c: Move label `done' to match TMP_MARK and TMP_FREE.
16591         Remove redundant variable prec.
16593 2003-05-26  Torbjorn Granlund  <tege@swox.com>
16595         * tests/mpz/convert.c: Test bases up to 62.
16597         * tests/mpf/t-conv.c: Test bases up to 62.
16599         * demos/pexpr.c: Don't iterate to get accurate timing.
16601         * mpf/set_str.c (mpn_pow_1_highpart): Cleanup.
16603         * mp_dv_tab.c: Fix typo.
16605         * mpf/get_str.c: Rewrite (now sub-quadratic).
16607 2003-05-22  Kevin Ryde  <kevin@swox.se>
16609         * tests/mpn/t-divrem_1.c: New file.
16610         * tests/mpn/Makefile.am: Add it.
16612 2003-05-22  Torbjorn Granlund  <tege@swox.com>
16614         * config.sub: Recognize viac3* processors.
16616 2003-05-20  Torbjorn Granlund  <tege@swox.com>
16618         * mpn/sparc64/addmul_2.asm: New file.
16620 2003-05-19  Torbjorn Granlund  <tege@swox.com>
16622         * configure.in: Recognize alphaev7* as alphaev67.
16624         * config.guess: Recognize viac3* processors.
16625         * configure.in: Set up path for viac3* processors.
16626         * acinclude.m4 (X86_PATTERN): Include viac3* processors.
16628 2003-05-19  Kevin Ryde  <kevin@swox.se>
16630         * tune/freq.c (freq_pstat_getprocessor): New function.
16631         (freq_all): Use it.
16632         * configure.in (AC_CHECK_HEADERS): Add sys/pstat.h.
16633         (AC_CHECK_FUNCS): Add pstat_getprocessor.
16635 2003-05-15  Kevin Ryde  <kevin@swox.se>
16637         * mpn/generic/mul_fft.c (mpn_mul_fft_decompose): Remove "inline",
16638         since the code is a bit too big.  gcc doesn't actually inline when
16639         alloca (TMP_ALLOC) is used anyway.
16641 2003-05-13  Kevin Ryde  <kevin@swox.se>
16643         * gmp.texi (Notes for Particular Systems): Libtool directory is .libs
16644         not _libs for mingw dll.  Reported by Andreas Fabri.
16646 2003-05-07  Kevin Ryde  <kevin@swox.se>
16648         * acinclude.m4 (GMP_PROG_CC_WORKS): Add code to generate sse2/xmm code
16649         from gcc -march=pentium4, to check the assembler supports that.
16650         (GMP_GCC_PENTIUM4_SSE2, GMP_OS_X86_XMM): New macros.
16651         * configure.in (pentium4-*-*): Use them to see if gcc -march=pentium4
16652         (with sse2) is ok.
16654 2003-05-06  Kevin Ryde  <kevin@swox.se>
16656         * mpz/com.c: Rate size==0 as UNLIKELY, fix comment to mpn_add_1.
16658         * tune/freq.c (<sys/sysinfo.h>): Include only when needed for
16659         getsysinfo(), to avoid a problem with this file on AIX 5.1.
16661 2003-05-03  Torbjorn Granlund  <tege@swox.com>
16663         * mpf/set_str.c: Do not ignore supposedly superfluous digits (in part
16664         reverting last change).
16666 2003-05-03  Kevin Ryde  <kevin@swox.se>
16668         * gmp.texi: Use @code for files in @cindex entries, it looks nicer
16669         than @file.
16671         * Makefile.am: Note gmp 4.1.1 and 4.1.2 version info.
16673         * configure.in, acinclude.m4 (GMP_CRAY_OPTIONS): New macro for Cray
16674         system setups, letting AC_REQUIRE do its job instead of a hard coded
16675         AC_PROG_EGREP.
16677         * config.guess: Amend fake RANDOM to avoid ". configfsf.guess" which
16678         segfaults on Debian "ash" 0.4.16.
16680 2003-05-01  Kevin Ryde  <kevin@swox.se>
16682         * configure.in (AC_CHECK_FUNCS): Add getsysinfo.
16683         (AC_CHECK_HEADERS): Add sys/sysinfo.h and machine/hal_sysinfo.h.
16684         * tune/freq.c (freq_getsysinfo): New function.
16685         (freq_all): Use it.
16686         (freq_sysctlbyname_i586_freq, freq_sysctlbyname_tsc_freq,
16687         freq_sysctl_hw_cpufrequency, freq_sysctl_hw_model): Set
16688         speed_cycletime before trying to print it, when verbose.
16690 2003-04-28  Torbjorn Granlund  <tege@swox.com>
16692         * mpf/set_str.c: Major overhaul.
16693         (mpn_pow_1_highpart): New helper function, meat extracted from
16694         mpf_set_str.
16696 2003-04-24  Kevin Ryde  <kevin@swox.se>
16698         * acinclude.m4 (GMP_GCC_ARM_UMODSI): Quote result string against m4.
16700         * configure, ltmain.sh, aclocal.m4: Update to libtool 1.5.
16702         * longlong.h (add_ssaaaa) [all]: Remove first "%" commutative in each,
16703         since gcc only supports one per asm.
16705         * printf/doprnt.c: Add M for mp_limb_t.
16706         * tests/misc/t-printf.c: Exercise this.
16708         * tests/mpz/t-cmp_d.c: Test infinities.
16709         * tests/mpf/t-cmp_d.c: New file.
16710         * tests/mpf/Makefile.am: Add it.
16712         * mpz/cmp_d.c, mpz/cmpabs_d.c, mpf/cmp_d.c: NaN invalid, Inf bigger
16713         than any value.
16714         * mpz/set_d.c, mpq/set_d.c, mpf/set_d.c: Nan or Inf invalid.
16716         * configure.in (AC_CHECK_FUNCS): Add raise.
16717         * invalid.c: New file.
16718         * Makefile.am: Add it.
16719         * gmp-impl.h (__gmp_invalid_operation): Add prototype.
16720         (DOUBLE_NAN_INF_ACTION): New macro.
16722         * tests/trace.c, tests/tests.h (d_trace): New function.
16723         * tests/misc.c, tests/tests.h (tests_infinity_d): New function.
16724         * tests/misc.c (mpz_erandomb, mpz_errandomb): Use gmp_urandomm_ui.
16726         * tune/tuneup.c, tune/common.c, tests/devel/try.c: Cast various
16727         mp_size_t values for printf %ld in case mp_size_t==int.  Use
16728         gmp_printf for mp_limb_t values.
16730         * gmp.texi (Nomenclature and Types): Add mp_exp_t, mp_size_t,
16731         gmp_randstate_t.  Note ulong for bit counts and size_t for byte
16732         counts.  Don't bother with @noindent.
16733         (Debugging): New valgrind is getting MMX/SSE.
16734         (Integer Comparisons): mpz_cmp_d and mpz_cmpabs_d on NaNs and Infs.
16735         (Float Comparison): mpf_cmp_d behaviour on NaNs and Infs.
16736         (Low-level Functions): Note with mpn_hamdist what hamming distance is.
16737         (Formatted Output Strings): Add type M.
16738         (Internals): Remove remarks on ulong bits and size_t bytes.  Move int
16739         field remarks to ...
16740         (Integer Internals, Float Internals): ... here.
16742 2003-04-19  Kevin Ryde  <kevin@swox.se>
16744         * configure.in (*sparc*-*-* ABI=32): Add umul to extra_functions.
16746         * mpn/x86/p6/mul_basecase.asm: New file.
16748 2003-04-18  Kevin Ryde  <kevin@swox.se>
16750         * configure.in (m68060-*-*): Fallback to gcc -m68000 when -m68060 not
16751         available, and don't use mpn/m68k/mc68020 asm routines.  (Avoids 32x32
16752         mul and 64/32 div which trap to the kernel on 68060.  Advice by
16753         Richard Zidlicky.)
16754         * mpn/m68k/README: Update notes on directory usage.
16756         * tests/cxx/Makefile.am (TESTS_ENVIRONMENT): Add a hack to let the
16757         test programs run with a shared libgmpxx on openbsd 3.2.
16759         * gmp.texi (Language Bindings): Add Guile.
16761 2003-04-12  Kevin Ryde  <kevin@swox.se>
16763         * configure.in (cygwin*, mingw*, pw32*, os2*): Add
16764         -Wl,--export-all-symbols to GMP_LDFLAGS, no longer the default in
16765         latest mingw and libtool.
16767         * acinclude.m4 (GMP_ASM_COFF_TYPE): New macro.
16768         * configure.in (x86s): Use it.
16769         * mpn/x86/x86-defs.m4 (COFF_TYPE): New macro.
16770         (PROLOGUE_cpu): Use it, for the benefit of mingw DLLs.
16772         * gmp-impl.h (mpn_copyi, mpn_copyd): Add __GMP_DECLSPEC.
16774         * gmp.texi (Known Build Problems): Remove windows test program .exe
16775         repeated built, fixed by new libtool.  Remove MacOS C++ shared library
16776         creation, fixed by new libtool.
16777         (Notes for Package Builds, Known Build Problems): Remove DESTDIR notes
16778         on libgmpxx, fixed in new libtool.
16780 2003-04-10  Torbjorn Granlund  <tege@swox.com>
16782         * configure.in: Match turbosparc.
16783         * config.guess: Recognize turbosparc (just for *bsd for now).
16785 2003-04-09  Kevin Ryde  <kevin@swox.se>
16787         * mpf/mul_ui.c [nails]: Call mpf_mul to handle v > GMP_NUMB_MAX.
16789         * tests/mpz/t-mul.c (main): Don't try FFT sizes when FFT disabled via
16790         MP_SIZE_T_MAX, eg. for nails.
16792         * tests/cxx/t-ternary.cc: Split up tests to help compile speed and
16793         memory usage.
16795         * tests/devel/try.c: Print seed under -R, add -E to reseed, use ulong
16796         for seed not uint.
16798         * gmp.texi: Add @: after various abbreviations, more index entries.
16799         (leftarrow): New macro, for non-tex.
16800         (Random State Initialization): Remove commented gmp_randinit_lc, not
16801         going to be implemented.
16802         (Random Number Algorithms): New section.
16803         (References): Add Matsumoto and Nishimura on Mersenne Twister, add
16804         Bertot, Magaud and Zimmermann on GMP Square Root.
16806 2003-04-06  Kevin Ryde  <kevin@swox.se>
16808         * tests/mpz/t-gcd_ui.c: New file.
16809         * tests/mpz/Makefile.am: Add it.
16811         * mpz/gcd_ui.c: Correction to return value on longlong limb systems,
16812         limb might not fit a ulong.
16814 2003-04-04  Kevin Ryde  <kevin@swox.se>
16816         * configure, aclocal.m4, ltmain.sh: Update to libtool cvs snapshot
16817         2003-04-02.
16819 2003-04-02  Kevin Ryde  <kevin@swox.se>
16821         * configure.in (*-*-cygwin*): No longer force lt_cv_sys_max_cmd_len,
16822         libtool has addressed this now.
16823         (AC_PROVIDE_AC_LIBTOOL_WIN32_DLL): Remove this, libtool _LT_AC_LOCK
16824         no longer needs it.
16826         * acinclude.m4 (GMP_PROG_AR): Also set ac_cv_prog_AR and
16827         ac_cv_prog_ac_ct_AR when adding flags to AR, so they're not lost by
16828         libtool's call to AC_CHECK_TOOL.
16830 2003-04-01  Kevin Ryde  <kevin@swox.se>
16832         * configure, aclocal.m4, ltmain.sh: Update to libtool cvs snapshot
16833         2003-03-31.
16835         * configure.in (AC_PROG_F77): Add a dummy AC_PROVIDE to stop libtool
16836         running F77 probes.
16838         * randlc2x.c (gmp_rand_lc_struct): Add comments about what exactly is
16839         in each field.
16840         (randseed_lc): Rename seedp to seedz to avoid confusion with seedp in
16841         the lc function.  Suggested by Pedro Gimeno.
16842         (gmp_randinit_lc_2exp): Use __GMP_ALLOCATE_FUNC_TYPE.  No need for
16843         "+1" in mpz_init2 of _mp_seed.  Don't bother with mpz_init2 for _mp_a.
16845 2003-03-29  Kevin Ryde  <kevin@swox.se>
16847         * configure.in (m68k-*-*): Use -O2, no longer need to fallback to -O.
16848         * acinclude.m4 (GMP_GCC_M68K_OPTIMIZE): Remove macro.
16850         * configure.in (AC_CHECK_TYPES): Add notes on why tested.
16852         * gmp.texi (GMPrefu, GMPpxrefu, GMPreftopu, GMPpxreftopu): New macros,
16853         use them for all external references to get URLs into HTML output.
16854         (Random State Initialization): Add gmp_randinit_set.
16855         (Random State Miscellaneous): New section.
16857 2003-03-29  Kevin Ryde  <kevin@swox.se>
16859         * randbui.c, randmui.c: New files.
16860         * Makefile.am: Add them.
16861         * gmp-h.in (gmp_urandomb_ui, gmp_urandomm_ui): Add prototypes.
16862         * tests/rand/t-urbui.c, tests/rand/t-urmui.c: New files.
16863         * tests/rand/Makefile.am: Add them.
16865         * gmp-impl.h (gmp_randstate_srcptr): New typedef.
16866         (gmp_randfnptr_t): Add randiset_fn.
16867         * randiset.c: New file.
16868         * Makefile.am: Add it.
16869         * gmp-h.in (gmp_randinit_set): Add prototype.
16870         * randlc2x.c, randmt.c: Add gmp_randinit_set support.
16871         * tests/rand/t-iset.c: New file.
16872         * tests/rand/Makefile.am: Add it.
16874         * tests/misc.c, tests/tests.h (call_rand_algs): New function.
16876 2003-03-27  Kevin Ryde  <kevin@swox.se>
16878         * mpz/bin_uiui.c: Use plain "*" for kacc products rather than
16879         umul_ppmm since high not needed, except for an ASSERT now amended.
16881 2003-03-26  Kevin Ryde  <kevin@swox.se>
16883         * demos/expr/exprfr.c (cbrt, cmpabs, exp2, gamma, nextabove,
16884         nextbelow, nexttoward): New functions.
16885         * demos/expr/t-expr.c: Exercise these.
16887         * mpfr/*: Update to mpfr cvs 2003-03-26.
16889         * gmp-impl.h (MPZ_REALLOC): Use UNLIKELY, to expect no realloc.
16891         * tune/time.c (cycles_works_p): Scope variables down to relevant part
16892         to avoid warnings about unused.
16894         * configfsf.guess, configfsf.sub: Update to 2003-02-22.
16895         * config.guess: Fake a $RANDOM variable when running configfsf.guess,
16896         to workaround a problem on m68k NetBSD 1.4.1.
16898         * mpz/fac_ui.c: Remove unused variable "z1".
16900         * tune/freq.c (freq_irix_hinv): Allow "Processor 0" line from IRIX 6.5.
16902 2003-03-24  Torbjorn Granlund  <tege@swox.com>
16904         * randlc2x.c (randget_lc): Remove write-only variable rn.
16905         * mpf/eq.c: Remove write-only variable usign.
16906         * gen-psqr.c (main): Remove write-only variable numb_bits.
16908 2003-03-17  Torbjorn Granlund  <tege@swox.com>
16910         * Makefile.am (libgmp_la_SOURCES): Add mp_dv_tab.c.
16911         (libmp_la_SOURCES): Add mp_dv_tab.c.
16913         * mpn/alpha/invert_limb.asm: Add a few comments.
16915         * mp_dv_tab.c: New file, defining __gmp_digit_value_tab.
16917         * mpz/set_str.c: Get rid of function digit_value_in_base and use table
16918         __gmp_digit_value_tab instead.
16919         * mpz/inp_str.c: Likewise.
16920         * mpf/set_str.c: Likewise.
16921         * mpbsd/min.c: Likewise.
16922         * mpbsd/xtom.c: Likewise.
16924         * mpz/set_str.c: Allow bases <= 62.  Return error for invalid bases.
16925         * mpz/inp_str.c: Likewise.
16926         * mpf/set_str.c: Likewise.
16927         * mpz/out_str.c: Likewise.
16928         * mpz/get_str.c: Likewise.
16929         * mpf/get_str.c: Likewise.
16931         * mpz/inp_str.c: Restructure to allocate more string space just
16932         before needed.
16933         * mpbsd/min.c: Likewise.
16935         * longlong.h (__udiv_qrnnd_c): Remove redundant casts.
16936         (32-bit sparc): Test HAVE_HOST_CPU_supersparc in addition to various
16937         sparc_v8 spellings.
16939 2003-03-17  Kevin Ryde  <kevin@swox.se>
16941         * mpfr/*: Update to mpfr cvs 2003-03-17.
16943 2003-03-15  Kevin Ryde  <kevin@swox.se>
16945         * Makefile.am (EXTRA_libgmp_la_SOURCES): Use this for TMP_ALLOC
16946         sources, instead of a libdummy.la.
16948 2003-03-16  Torbjorn Granlund  <tege@swox.com>
16950         * config.guess: Recognize supersparc and microsparc for *BSD systems.
16951         Generalize some superscalar recognition patterns.
16953 2003-03-14  Torbjorn Granlund  <tege@swox.com>
16955         * mpn/sparc64/udiv.asm: New file.
16957 2003-03-13  Torbjorn Granlund  <tege@swox.com>
16959         * mpn/sparc64: Table cycle counts.  Update some comments.
16961         * mpn/powerpc64/divrem_1.asm: New file.
16963 2003-03-10  Torbjorn Granlund  <tege@swox.com>
16965         * mpn/generic/mul.c (mpn_mul): Don't blindly expect
16966         MUL_KARATSUBA_THRESHOLD to be a constant.
16968 2003-03-07  Torbjorn Granlund  <tege@swox.com>
16970         * mpn/generic/mul.c (mpn_mul): New operand splitting code for
16971         avoiding cache misses when un >> MUL_KARATSUBA_THRESHOLD > vn.
16972         (MUL_BASECASE_MAX_UN): New #define, default to 500 for now.
16974 2003-03-07  Kevin Ryde  <kevin@swox.se>
16976         * Makefile.am: Put gmp.h and mp.h under $(exec_prefix)/include.
16977         * gmp.texi (Build Options): Add notes on this.
16978         Reported by Vincent Lefèvre.
16980 2003-03-06  Kevin Ryde  <kevin@swox.se>
16982         * configure.in (alpha*-*-* gcc): Add asm option before testing -mcpu,
16983         for the benefit of gcc 2.9-gnupro-99r1 on alphaev68-dec-osf5.1 which
16984         doesn't otherwise put the assembler in the right mode for -mcpu=ev6.
16986 2003-03-05  Torbjorn Granlund  <tege@swox.com>
16988         * mpn/powerpc32/powerpc-defs.m4: Set up renaming for v registers.
16990         * mpz/powm.c (redc): Instead of repeated mpn_incr_u invocations,
16991         accumulate carries and add at the end.
16992         (mpz_powm): Trim tp allocation, now as redc doesn't need carry guard.
16994 2003-02-25  Torbjorn Granlund  <tege@swox.com>
16996         * mpn/x86/pentium4/copyd.asm: Correct header comment.
16998         * mpn/arm/addmul_1.asm: Correct cycle counts.
16999         * mpn/arm/submul_1.asm: Likewise.
17001 2003-02-20  Kevin Ryde  <kevin@swox.se>
17003         * demos/factorize.c (factor_using_pollard_rho): Test k>0 to avoid
17004         infinite loop if k=0 and gcd!=1 reveals a factor.  Reported by John
17005         Pongsajapan.
17007         * gmp.texi, fdl.texi: Update to FDL version 1.2.
17009 2003-02-18  Torbjorn Granlund  <tege@swox.com>
17011         * mpn/arm/mul_1.asm: Fix typo introduced in last change.
17013 2003-02-17  Torbjorn Granlund  <tege@swox.com>
17015         * mpn/ia64/gmp-mparam.h: Retune.
17017         * mpn/sparc64/copyi.asm: Add some header comments.
17018         * mpn/sparc64/copyd.asm: Likewise.
17020         * mpn/arm/mul_1.asm: Put vl operand last for umull/umlal.
17021         Add some header comments.
17022         * mpn/arm/addmul_1.asm: Rewrite.
17023         * mpn/arm/submul_1.asm: Rewrite.
17024         * mpn/arm/gmp-mparam.h: Retune.
17026 2003-02-16  Torbjorn Granlund  <tege@swox.com>
17028         * mpn/arm/copyi.asm: New file.
17029         * mpn/arm/copyd.asm: New file.
17031 2003-02-16  Kevin Ryde  <kevin@swox.se>
17033         * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Tolerate incorrect last data
17034         byte seen on an arm system.
17036 2003-02-15  Torbjorn Granlund  <tege@swox.com>
17038         * mpn/arm/gmp-mparam.h: Retune.
17040 2003-02-13  Torbjorn Granlund  <tege@swox.com>
17042         * mpn/powerpc32/750/com_n.asm: Add more cycle counts.
17044 2003-02-13  Kevin Ryde  <kevin@swox.se>
17046         * configure.in (AC_PREREQ): Bump to 2.57.
17048         * configure.in, acinclude.m4 (GMP_GCC_WA_OLDAS): New macro, applying
17049         -Wa,-oldas only when necessary.
17051         * configure.in (powerpc*-*-*): Don't use -Wa,-mppc with gcc, it
17052         overrides options recent gcc adds for -mcpu, making generated code
17053         fail to assemble.
17055         * tune/tuneup.c (mpn_fft_table): Remove definition, it's in mul_fft.c.
17057 2003-02-12  Torbjorn Granlund  <tege@swox.com>
17059         * mpn/x86/pentium4/sse2/gmp-mparam.h: Retune.
17060         * mpn/x86/k7/gmp-mparam.h: Retune.
17061         * mpn/x86/k6/gmp-mparam.h: Retune.
17062         * mpn/x86/p6/gmp-mparam.h: Retune.
17063         * mpn/x86/p6/mmx/gmp-mparam.h: Retune.
17065         * tests/mpz/t-mul.c (main): Rewrite FFT testing code.
17067 2003-02-10  Torbjorn Granlund  <tege@swox.com>
17069         * config.guess: Recognize "power2" systems.
17071         * mpn/powerpc64/gmp-mparam.h: Fix indentation.
17072         * mpn/power/gmp-mparam.h: Retune.
17073         * mpn/alpha/ev6/nails/gmp-mparam.h: Retune.
17074         * mpn/sparc64/gmp-mparam.h: Retune.
17075         * mpn/pa64/gmp-mparam.h: Retune.
17076         * mpn/sparc32/v8/supersparc/gmp-mparam.h: Retune.
17077         * mpn/sparc32/v8/gmp-mparam.h: Retune.
17078         * mpn/mips64/gmp-mparam.h: Retune.
17079         * mpn/alpha/ev6/gmp-mparam.h: Retune.
17080         * mpn/powerpc32/gmp-mparam.h: Retune.
17081         * mpn/powerpc32/750/gmp-mparam.h: Retune.
17082         * mpn/alpha/ev5/gmp-mparam.h: Retune.
17083         * mpn/m68k/gmp-mparam.h: Retune.
17084         * mpn/cray/gmp-mparam.h: Set GET_STR_PRECOMPUTE_THRESHOLD.
17086         * configure.in: Undo this, problem doesn't happen any more:
17087         (mips64*-*-*): Pass just -O1 to cc, to work around compiler bug.
17089 2003-02-03  Kevin Ryde  <kevin@swox.se>
17091         * gmp-impl.h (MPN_NORMALIZE, MPN_NORMALIZE_NOT_ZERO): Add parens
17092         around macro parameters.  Reported by Jason Moxham.
17094 2003-02-01  Kevin Ryde  <kevin@swox.se>
17096         * gmp.texi (Low-level Functions): No overlap permitted by mpn_mul_n.
17097         Reported by Jason Moxham.
17098         (Formatted Input Strings): Correction to strtoul cross reference
17099         formatting.
17100         (BSD Compatible Functions): Add index entry for MINT.
17102 2003-01-29  Torbjorn Granlund  <tege@swox.com>
17104         * gmp-impl.h (mpn_mul_fft): Now returns int.
17106 2003-01-29  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
17108         * mpn/generic/mul_fft.c: Major rewrite.
17110 2003-01-25  Kevin Ryde  <kevin@swox.se>
17112         * config.guess (powerpc*-*-*): Remove $dummy.core file when mfpvr
17113         fails on NetBSD.
17114         (trap): Remove $dummy.core on abnormal termination too.
17116         * mpfr/*: Update to mpfr cvs 2003-01-25.
17118 2003-01-24  Torbjorn Granlund  <tege@swox.com>
17120         * mpn/ia64/README: Update cycle counts to match current code.
17122 2003-01-18  Kevin Ryde  <kevin@swox.se>
17124         * mpfr/*: Update to mpfr cvs 2003-01-18.
17126 2003-01-17  Torbjorn Granlund  <tege@swox.com>
17128         * gmp.texi: Canonicalize URLs.
17130 2003-01-15  Kevin Ryde  <kevin@swox.se>
17132         * gmp.texi (Notes for Particular Systems): Add hardware floating point
17133         precision mode.
17135         * mpfr/*, configure, aclocal.m4, config.in: Update to mpfr cvs
17136         2003-01-15.
17138 2003-01-11  Kevin Ryde  <kevin@swox.se>
17140         * mpfr/*: Update to mpfr cvs 2003-01-11.
17142 2003-01-09  Kevin Ryde  <kevin@swox.se>
17144         * mpfr/get_str.c: Update to mpfr cvs 2003-01-09.
17146         * doc/configuration: Various updates.
17148 2003-01-06  Torbjorn Granlund  <tege@swox.com>
17150         * mpn/alpha/copyi.asm: Avoid `nop' mnemonic, unsupported on Cray.
17151         * mpn/alpha/copyd.asm: Likewise.
17153 2003-01-05  Kevin Ryde  <kevin@swox.se>
17155         * demos/expr/t-expr.c (check_r): Tolerate mpfr_set_str new return
17156         value.
17158         * configure, aclocal.m4 (*-*-osf4*, *-*-osf5*): Regenerate with
17159         libtool patch to avoid bash printf option problem when building shared
17160         libraries with cxx.
17162         * configure.in (pentium4-*-*): Use "-march=pentium4 -mno-sse2" since
17163         sse2 causes buggy code from gcc 3.2.1 and is only supported on new
17164         enough kernels.
17166         * acinclude.m4 (GMP_PROG_NM): Add some notes about failures, per
17167         report by Krzysztof Kozminski.
17169         * gmp-h.in (mpz_mdivmod_ui, mpz_mmod_ui): Add parens around "r".
17171         * gmp-h.in (__GMP_CAST): New macro, clean to g++ -Wold-style-cast.
17172         (GMP_NUMB_MASK, mpz_cmp_si, mpq_cmp_si, mpz_odd_p, mpn_divexact_by3,
17173         mpn_divmod): Use it.  Reported by Krzysztof Kozminski.
17174         (mpz_odd_p): No need for the outermost cast to "int".
17175         * tests/cxx/t-cast.cc: New file.
17176         * tests/cxx/Makefile.am: Add it.
17178 2003-01-04  Kevin Ryde  <kevin@swox.se>
17180         * mpfr/set_str.c: Update to mpfr cvs 2003-01-04.
17182         * demos/expr/exprfra.c (e_mpfr_number): Tolerate recent mpfr_set_str
17183         returning count of characters accepted.
17185 2003-01-03  Torbjorn Granlund  <tege@swox.com>
17187         * mpn/alpha/copyi.asm: New file.
17188         * mpn/alpha/copyd.asm: New file.
17190 2003-01-03  Kevin Ryde  <kevin@swox.se>
17192         * demos/expr/t-expr.c: Use __gmpfr on some mpfr internals that have
17193         changed.
17195         * mpfr/*, aclocal.m4, config.in, configure: Update to mpfr cvs
17196         2003-01-03.
17198         * gmp.texi (Introduction to GMP): Mention release announcements
17199         mailing list, and put home page and ftp before mailing lists.
17201 2002-12-28  Torbjorn Granlund  <tege@swox.com>
17203         * mpn/generic/mul_fft.c (mpn_fft_next_size): Simplify.
17205 2002-12-28  Kevin Ryde  <kevin@swox.se>
17207         * acinclude.m4 (M68K_PATTERN): New macro.
17208         (GMP_GCC_M68K_OPTIMIZE): Use it to avoid m6811 and friends.
17209         * configure.in: Ditto.
17211         * tests/mpz/t-import.c, tests/mpz/t-export.c: Use '\xHH' to avoid
17212         warnings about char overflows.
17213         * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Ditto.
17215 2002-12-28  Pedro Gimeno  <pggimeno@wanadoo.es>
17217         * randmt.c (randseed_mt, default_state): Fix off-by-one bug on padding.
17218         (randseed_mt): Add ASSERT checking result of mpz_export.
17220 2002-12-24  Kevin Ryde  <kevin@swox.se>
17222         * gmp.texi (Integer Import and Export): Clarify treatment of signs,
17223         reported by Kent Boortz.
17225         * randmt.c: Use gmp_uint_least32_t.
17226         (randseed_mt): Add nails to mpz_export in case mt[i] more than 32 bits.
17228         * gmp-impl.h (gmp_uint_least32_t): New typedef, replacing GMP_UINT32.
17229         * configure.in (AC_CHECK_TYPES): Add uint_least32_t.
17230         (AC_CHECK_SIZEOF): Add unsigned short.
17232 2002-12-22  Kevin Ryde  <kevin@swox.se>
17234         * gmp-impl.h (ULONG_PARITY) [generic C]: Mask result to a single bit.
17235         (ULONG_PARITY) [_CRAY, __ia64]: New macros.
17236         * tests/t-parity.c: New test.
17237         * tests/Makefile.am (check_PROGRAMS): Add it.
17239         * longlong.h (count_trailing_zeros) [ia64]: New macro.
17241         * tests/t-count_zeros.c (check_various): Remove unused variable "n".
17243         * mpn/x86/README: Revise notes on PIC, PLT and GOT.
17245         * demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/test.pl: Add "mt"
17246         to GMP::Rand::randstate.
17248 2002-12-22  Pedro Gimeno  <pggimeno@wanadoo.es>
17250         * randmt.c (randseed_mt): Fix bug that might cause the generator to
17251         return all zeros with certain seeds.  Fix WARM_UP==0 case.
17252         (gmp_randinit_mt): Initialize to a known state by default.
17253         (randget_mt): Remove check for uninitialized buffer: no longer needed.
17254         (recalc_buffer): Use ?: instead of two-element array.
17256         * tests/rand/t-mt.c: New test.
17257         * tests/rand/Makefile.am (check_PROGRAMS): Add it.
17259 2002-12-21  Kevin Ryde  <kevin@swox.se>
17261         * cxx/osdoprnti.cc: Use <cstdarg> and <cstring> rather than <stdarg.h>
17262         and <string.h>.  No need for <stdio.h>.
17264         * demos/expr/expr.c, demos/expr/exprfa.c, demos/expr/exprfra.c,
17265         demos/expr/exprza.c: Use mp_get_memory_functions, not
17266         __gmp_allocate_func etc.
17267         * demos/expr/t-expr.c: Don't use gmp-impl.h.
17268         (numberof): New macro.
17270         * gmp-h.in, gmp-impl.h (__gmp_allocate_func, __gmp_reallocate_func,
17271         __gmp_free_func): Move declarations to gmp-impl.h
17273         * mp_get_fns.c: New file.
17274         * Makefile.am (libgmp_la_SOURCES, libmp_la_SOURCES): Add it.
17275         * gmp-h.in (mp_get_memory_functions): Add prototype.
17276         * gmp.texi (Custom Allocation): Add mp_get_memory_functions, refer to
17277         "free" not "deallocate" function.
17278         * gmpxx.h (struct __gmp_alloc_cstring): Use mp_get_memory_functions,
17279         not __gmp_free_func.
17281         * gmp-impl.h [__cplusplus]: Add <cstring> for strlen.
17282         (gmp_allocated_string): Hold length in a field.
17283         * cxx/osdoprnti.cc, cxx/osmpf.cc: Use this.
17285 2002-12-20  Torbjorn Granlund  <tege@swox.com>
17287         * tests/mpz/t-perfsqr.c (check_sqrt): Print more variables upon
17288         failure.
17290         * mpn/generic/rootrem.c: In Newton loop, pad qp with leading zero.
17292 2002-12-19  Torbjorn Granlund  <tege@swox.com>
17294         * mpn/generic/rootrem.c: Allocate 1.585 (log2(3)) times more space
17295         for pp temporary to allow for worst case overestimate of root.
17296         Add some asserts.
17298         * tests/mpz/t-root.c: Generalize and speed up.
17300 2002-12-19  Kevin Ryde  <kevin@swox.se>
17302         * tests/cxx/t-rand.cc (check_randinit): Add gmp_randinit_mt test.
17304         * gmp-h.in: Don't bother trying to support Compaq C++ in pre-standard
17305         I/O mode.
17306         * gmp.texi (Notes for Particular Systems): Compaq C++ must be used in
17307         "standard" iostream mode.
17309 2002-12-18  Torbjorn Granlund  <tege@swox.com>
17311         * mpn/alpha/mod_34lsub1.asm: Add code for big-endian, using existing
17312         little-endian code only if HAVE_LIMB_LITTLE_ENDIAN is defined.
17314 2002-12-18  Kevin Ryde  <kevin@swox.se>
17316         * configure.in (HAVE_LIMB_BIG_ENDIAN, HAVE_LIMB_LITTLE_ENDIAN): New
17317         defines in config.m4.
17319 2002-12-17  Torbjorn Granlund  <tege@swox.com>
17321         * printf/printffuns.c (gmp_fprintf_reps): Make it actually work
17322         for padding > 256.
17324 2002-12-17  Kevin Ryde  <kevin@swox.se>
17326         * tune/freq.c: Add <string.h> for memcmp.
17328         * mpz/pprime_p.c: Use MPN_MOD_OR_MODEXACT_1_ODD.
17330         * gmp.texi (Formatted Output Strings): %a and %A are C99 not glibc.
17331         (Formatted Input Strings): Type "l" is for double too.  Hex floats are
17332         accepted for mpf_t.
17333         (Formatted Input Functions): Describe tightened parse rule, clarify
17334         return value a bit.
17336         * scanf/doscan.c: Add hex floats, tighten matching to follow C99, for
17337         instance "0x" is no longer acceptable to "%Zi".
17338         Rename "invalid" label to avoid "invalid" variable, SunOS cc doesn't
17339         like them the same.
17340         * tests/misc/t-scanf.c: Update tests.
17341         * tests/misc/t-locale.c (check_input): Don't let "0x" appear from fake
17342         decimal point.
17344         * config.guess (sparc*-*-*): Look at BSD sysctl hw.model to recognise
17345         ultrasparcs.
17347         * mpfr/tests/dummy.c: New file.
17348         * mpfr/tests/Makefile.am (libfrtests_a_SOURCES): Add it.
17350 2002-12-14  Kevin Ryde  <kevin@swox.se>
17352         * mpbsd/Makefile.am (nodist_libmpbsd_la_SOURCES): Move these mpz
17353         sources to libmpbsd_la_SOURCES directly, automake 1.7.2 now gets the
17354         ansi2knr setups right for sources in other directories.
17356         * mpfr/tests/Makefile.am: Add libfrtests.a in preparation for new mpfr.
17358 2002-12-13  Kevin Ryde  <kevin@swox.se>
17360         * mpfr/Makefile.am (mpfr_TEXINFOS, AM_MAKEINFOFLAGS): Allow for
17361         fdl.texi in recent mpfr.
17363         * configure.in (AC_PROG_EGREP): Ensure this is run outside the Cray
17364         conditional AC_EGREP_CPP.
17366         * configure.in (alpha*-*-*): Use gcc -Wa,-oldas if it works, to avoid
17367         problems with new compaq "as" on OSF 5.1.
17369         * mpn/Makefile.am (EXTRA_DIST): Remove Makeasm.am, automake 1.7.2 does
17370         it automatically.
17372         * acinclude.m4 (AC_LANG_FUNC_LINK_TRY(C)): Remove this hack, fixed by
17373         autoconf 2.57.
17375         * configure.in (AC_CONFIG_LIBOBJ_DIR): Set to mpfr, for the benefit of
17376         new mpfr using LIBOBJ.
17378         * configure.in: (AM_INIT_AUTOMAKE): Use "gnu no-dependencies
17379         $(top_builddir)/ansi2knr".
17380         * */Makefile.am (AUTOMAKE_OPTIONS): Remove, now in configure.in.
17382         * configure, config.in, INSTALL.autoconf: Update to autoconf 2.57.
17383         * */Makefile.in, configure, aclocal.m4, install-sh, mkinstalldirs:
17384         Update to automake 1.7.2.
17386         * gmp.texi (Build Options): Add hppa64 to cpu types.
17387         (ABI and ISA): Add gcc to hppa 2.0.
17388         (Debugging): Add maximum debuggability config options.
17389         (Language Bindings): Add Arithmos, reported by Johan Vervloet.
17390         (Formatted Output Strings): 128 bits is about 40 digits, ll is only
17391         for long long not long double.
17392         (Formatted Input Strings): ll is only for long long not long double.
17394         * mpz/divis.c, mpz/divis_ui.c, mpz/cong.c, mpz/cong_ui.c: Allow d=0,
17395         under the rule n==c mod d iff exists q satisfying n=c+q*d.
17396         * gmp.texi (Integer Division): Describe this.
17397         Suggested by Jason Moxham.
17399 2002-12-13  Pedro Gimeno  <pggimeno@wanadoo.es>
17401         * randlc2x.c (lc): Remove check for seedn < an, which is now
17402         superfluous.  Add ASSERT to ensure it's correct.  Add ASSERT to check
17403         precondition of __GMPN_ADD.
17404         (gmp_randinit_lc_2exp): Avoid reallocation by allocating one extra bit
17405         for both seed and a.  Simplify seedn < p->_cn case.
17407         * tests/rand/t-lc2exp.c (check_bigs): Test negative seeds.
17409 2002-12-12  Torbjorn Granlund  <tege@swox.com>
17411         * mpn/pa32/pa-defs.m4 (PROLOGUE_cpu): Zap spurious argument to `.proc'.
17412         Add empty `.callinfo'.
17414 2002-12-11  Torbjorn Granlund  <tege@swox.com>
17416         * mpn/x86/pentium4/sse2/addmul_1.asm: Don't reuse `ret' symbol for a
17417         label.
17419 2002-12-11  Kevin Ryde  <kevin@swox.se>
17421         * configure.in (hppa*-*-*): Don't use gcc -mpa-risc-2-0 in ABI=1.0.
17423         * mpn/pa32/pa-defs.m4: New file, arranging for .proc/.procend.
17424         * configure.in (hppa*-*-*): Use it.
17426         * printf/doprnt.c: Comments on "ll" versus "L".
17428         * tests/mpz/t-div_2exp.c: Reduce tests, especially the random ones.
17430 2002-12-11  Torbjorn Granlund  <tege@swox.com>
17432         * mpz/get_d.c (limb2dbl): New macro for conversion to `double'.
17433         Define it to something non-trivial for 64-bit hppa.
17434         * mpq/get_d.c: Likewise.
17435         * mpf/get_d.c: Likewise.
17437         * mpn/x86/pentium4/sse2/addmul_1.asm: Unroll to save one c/l.
17439 2002-12-09  Kevin Ryde  <kevin@swox.se>
17441         * tune/Makefile.am: Don't use -static under --disable-static, it tends
17442         not to work.
17443         * configure.in (ENABLE_STATIC): New AM_CONDITIONAL.
17445         * gmp-h.in: Use <iostream> instead of <iosfwd> with Compaq C++ in
17446         pre-standard I/O mode.
17448         * tests/mpz/t-jac.c, tests/mpz/t-scan.c: Reduce tests.
17450 2002-12-08  Kevin Ryde  <kevin@swox.se>
17452         * configure.in (*-*-ultrix*): Remove forcible --disable-shared,
17453         believe this was a generic problem with libtool, now gone.
17455 2002-12-08  Torbjorn Granlund  <tege@swox.com>
17457         * gmp-impl.h (USE_LEADING_REGPARM): Disable for PIC code generation.
17459 2002-12-07  Torbjorn Granlund  <tege@swox.com>
17461         * tests/cxx/t-misc.cc (check_mpq): Use 0/1 for canonical 0 in
17462         mpq_cmp_ui calls.
17464         * configure.in (hppa2.0*-*-*): Pass +O2 instead of +O3 to work around
17465         compiler bug with mpfr/tests/tdiv.
17467 2002-12-07  Kevin Ryde  <kevin@swox.se>
17469         * configure.in (hppa2.0*-*-* ABI=2.0n): Make -mpa-risc-2-0 optional.
17470         New hppa-level-2.0 test using GMP_HPPA_LEVEL_20 to detect assembler
17471         support for 2.0n.
17472         * acinclude.m4 (GMP_PROG_CC_WORKS): Add code that provokes an error
17473         from gcc -mpa-risc-2-0 if the assembler doesn't know 2.0 instructions.
17474         (GMP_HPPA_LEVEL_20): New macro.
17476 2002-12-07  Pedro Gimeno  <pggimeno@wanadoo.es>
17478         * gmp-impl.h (gmp_randfnptr_t.randseed_fn) Return void.
17479         (LIMBS_PER_ULONG, MPN_SET_UI): New macros.
17480         (MPZ_FAKE_UI): Rename couple of parameters.
17482         * randlc2x.c (gmp_rand_lc_struct): _mp_c and _mp_c_limbs replaced
17483         with mpn style _cp and _cn.  All callers changed.
17484         (randseed_lc): Fix limbs(seed) > bits_to_limbs(m2exp) case.
17485         Remove return value.
17486         (gmp_randinit_lc_2exp): Attempt to avoid redundant reallocation.
17488         * randmt.c (mangle_seed): New function by Kevin.
17489         (randseed_mt): Use it instead of mpz_powm, for performance.  Remove
17490         return value.  Remove commented out code (an inferior alternative to
17491         mpz_export).
17493         * randsdui.c (gmp_randseed_ui): Use MPZ_FAKE_UI.
17495         * tests/rand/t-lc2exp.c (check_bigm, check_bigs): New tests.
17496         * tests/rand/t-urndmm.c: Add L to constants in calls, for K&R.
17498 2002-12-06  Torbjorn Granlund  <tege@swox.com>
17500         * configure.in: Remove -g.
17501         (hppa*-*-*): Pass -Wl,+vnocompatwarnings with +DA2.0.
17503 2002-12-05  Torbjorn Granlund  <tege@swox.com>
17505         * mpn/pa64/sqr_diagonal.asm: Remove .entry, .proc, .procend.
17506         * mpn/pa64/udiv.asm: Likewise.
17508 2002-12-05  Kevin Ryde  <kevin@swox.se>
17510         * mpn/pa64/sub_n.asm: Remove space in "sub, db" which gas objects to.
17511         * mpn/pa64/*.asm, tune/hppa2.asm: Use ".level 2.0" for 2.0n, since gas
17512         doesn't like ".level 2.0N".
17514         * configure.in (hppa*-*-*): Group path and flags choices, for clarity.
17515         (hppa1.0*-*-*): Use gcc -mpa-risc-1-0 when available.
17516         (hppa2.0*-*-*): Ditto -mpa-risc-2-0.
17517         (*-*-hpux*): Exclude ABI=2.0w for hpux[1-9] and hpux10, rather than
17518         the converse of allowing it for hpux1[1-9]; ie. list the bad systems
17519         rather than try to guess the good systems.
17520         (hppa2.0*-*-*) [ABI=2.0n ABI=2.0w]: Add gcc to likely compilers.
17521         (hppa*-*-*) [gcc]: Test sizeof(long) to differentiate a 32-bit or
17522         64-bit build of the compiler.
17523         (hppa64-*-*): Add this as equivalent to hppa2.0-*-*.
17524         * acinclude.m4 (GMP_C_TEST_SIZEOF): New macro.
17526         * tests/tests.h (ostringstream::str): Must null-terminate
17527         ostrstream::str() for the string constructor.
17529 2002-12-04  Torbjorn Granlund  <tege@swox.com>
17531         * mpn/pa32/hppa1_1/udiv.asm: Don't wrap symbol to INT64 in L() stuff.
17533         * longlong.h (mpn_udiv_qrnnd_r based udiv_qrnnd): Fix typo.
17535         * mpn/powerpc32/powerpc-defs.m4: Define float registers with `f'
17536         prefix.
17538 2002-12-04  Kevin Ryde  <kevin@swox.se>
17540         * gmp.texi (Floating-point Functions): Note the mantissa is binary and
17541         decimal fractions cannot be represented exactly.  Suggested by Serge
17542         Winitzki.
17543         (Known Build Problems): Note libtool stripping options when linking.
17544         Reported by Vincent Lefevre.
17546         * acinclude.m4 (GMP_ASM_LABEL_SUFFIX): Don't make an empty result a
17547         failure, that's a valid result.
17548         (GMP_ASM_GLOBL): Establish this from the host cpu type.
17549         (IA64_PATTERN): New macro.
17550         (GMP_PROG_EXEEXT_FOR_BUILD, GMP_C_FOR_BUILD_ANSI,
17551         GMP_CHECK_LIBM_FOR_BUILD): Remove temporary files created.
17552         * configure.in: Use IA64_PATTERN.
17554 2002-12-03  Torbjorn Granlund  <tege@swox.com>
17556         * tune/hppa.asm: Use config.m4.
17557         * tune/hppa2.asm: Likewise.
17558         * tune/hppa2w.asm: Likewise.
17560         * mpn/pa64: Use LDEF.
17562 2002-12-03  Kevin Ryde  <kevin@swox.se>
17564         * INSTALL: Use return rather than exit in the example programs.
17565         Suggested by Richard Dawe.
17567         * gmp.texi (Build Options): Move non-unix notes to ...
17568         (Notes for Particular Systems): ... here.  Mention MS Interix,
17569         reported by Paul Leyland.
17570         (C++ Interface Random Numbers): Add gmp_randinit_mt to examples.
17572         * acinclude.m4 (GMP_ASM_LABEL_SUFFIX): Must test empty suffix first,
17573         for the benefit of hppa hp-ux.
17574         (GMP_ASM_UNDERSCORE): Grep the output of "nm" instead of trying to
17575         construct an asm file, and in case of failure fallback on no
17576         underscore and a warning.
17578         * longlong.h (count_leading_zeros, count_trailing_zeros) [ev67, ev68]:
17579         Restrict __asm__ ctlz and cttz to __GNUC__.
17581         * gen-psqr.c (HAVE_CONST, const): New macros.
17583         * tests/cxx/t-rand.cc (check_randinit): Add gmp_randinit_mt.
17585 2002-12-02  Torbjorn Granlund  <tege@swox.com>
17587         * gmp-impl.h: Split popc_limb again, combined version gives too many
17588         compiler warnings.
17590 2002-12-01  Torbjorn Granlund  <tege@swox.com>
17592         * mpn/generic/gcdext.c (div1): Disable unused function.
17594         * mpz/root.c: Don't include stdlib.h or longlong.h.
17595         * mpz/rootrem.c: Likewise.
17597         * extract-dbl.c: abort => ASSERT_ALWAYS.
17598         * mpz/set_d.c: Likewise.
17599         * mpn/generic/tdiv_qr.c: Likewise.
17601         * gen-psqr.c (f_cmp_fraction, f_cmp_divisor): Change parameter to
17602         `const void *', to match qsort spec.
17604 2002-12-01  Kevin Ryde  <kevin@swox.se>
17606         * gmp.texi (Integer Division): Fix a couple of @math's for tex.
17607         Use @dots in more places.
17609         * tests/cxx/t-locale.cc: Test non std::locale systems too.
17610         * tests/cxx/clocale.c: New file, reinstating what was localeconv.c,
17611         and subverting nl_langinfo too.
17612         * tests/cxx/Makefile.am (t_locale_SOURCES): Add it.
17614         * tests/tests.h (ostringstream, istringstream): Provide fakes of these
17615         if <sstream> not available.
17616         * tests/cxx/t-locale.cc, tests/cxx/t-ostream.cc: Remove <sstream>.
17617         * configure.in (AC_CHECK_HEADERS) [C++]: Add <sstream>.
17619 2002-11-30  Torbjorn Granlund  <tege@swox.com>
17621         * printf/doprnt.c (__gmp_doprnt): Comment out a `break' to shut up
17622         compiler warnings.
17624         * mpn/ia64/invert_limb.asm: Add `many' hints to return insns.
17626         * mpn/ia64/divrem_1.asm: Allocate more local registers; put b0 in
17627         one of them.
17629         * mpn/ia64/popcount.asm: Properly restore register ar.lc.
17631         * longlong.h (umul_ppmm) [ia64]: Form both product parts in asm.
17633         * mpz/bin_uiui.c: Cast umul_ppmm operands.
17635         * scanf/doscan.c (gmpscan): Remove unused label store_get_digits.
17637         * gmp-impl.h: #undef MIN and MAX before #defining.
17639         * mpn/ia64/copyi.asm: Add `;' after bundle declarators.
17640         * mpn/ia64/copyd.asm: Likewise.
17642         * mpn/ia64/divrem_1.asm: Add some syntax to placid the HP-UX assembler.
17644 2002-11-30  Kevin Ryde  <kevin@swox.se>
17646         * configure.in (AC_CHECK_HEADERS): Add nl_types.h.
17647         * tests/misc/t-locale.c: Use this, for nl_item on netbsd 1.4.1.
17649 2002-11-29  Torbjorn Granlund  <tege@swox.com>
17651         * tests/devel/addmul_1.c: Provide prototype for mpn_print.
17652         (OPS): Account for function overhead.
17653         * tests/devel/{submul_1.c,mul_1.c,add_n.c,sub_n.c}: Likewise.
17655         * mpn/ia64/addmul_1.asm: Rewrite.
17657 2002-11-28  Torbjorn Granlund  <tege@swox.com>
17659         * mpn/ia64/sqr_diagonal.asm: Don't allocate any registers.
17661         * mpn/ia64/submul_1.asm: Adapt to Itanium 2.
17663         * mpn/ia64/mul_1.asm: Fix typo in HAVE_ABI_32 code.
17665         * mpn/ia64/add_n.asm: Rewrite.
17666         * mpn/ia64/sub_n.asm: Rewrite.
17668 2002-11-28  Kevin Ryde  <kevin@swox.se>
17670         * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Use this rather
17671         than libdummy.
17672         * tests/Makefile.am (EXTRA_libtests_la_SOURCES): Use this for
17673         x86call.asm and x86check.c rather than libdummy.
17675 2002-11-27  Torbjorn Granlund  <tege@swox.com>
17677         * tests/mpz/t-mul.c: Implement reference Karatsuba multiplication.
17678         Rewrite testing scheme to run fewer really huge tests.
17680 2002-11-26  Torbjorn Granlund  <tege@swox.com>
17682         * tests: Decrease repetition count for some of the slowest tests.
17684         * mpn/ia64/divrem_1.asm: New file.
17686 2002-11-25  Torbjorn Granlund  <tege@swox.com>
17688         * mpfr/tests/tdiv.c: Decrease number of performed tests.
17690 2002-11-23  Torbjorn Granlund  <tege@swox.com>
17692         * mpn/ia64/mul_1.asm: Rewrite.
17694 2002-11-23  Kevin Ryde  <kevin@swox.se>
17696         * mpn/ia64/README: Add some references.
17698         * gmp.texi (Build Options): Add itanium and itanium2, mention DocBook
17699         and XML from makeinfo, add texinfo top level cross reference.
17700         (Integer Division): Try to clarify 2exp functions a bit.
17701         (C++ Interface Floats): Giving bad string to constructor is undefined.
17702         (C++ Interface Integers, C++ Interface Rationals): Ditto, and show
17703         default base in prototype, not the description.
17705         * config.sub, config.guess, configure.in (itanium, itanium2): New cpu
17706         types.
17708         * tests/misc/t-printf.c, tests/misc/t-scanf.c (check_misc): Suppress
17709         %zd test on glibc prior to 2.1, it's not supported.
17711 2002-11-22  Torbjorn Granlund  <tege@swox.com>
17713         * mpn/ia64/copyi.asm: Optimize for Itanium 2.
17714         * mpn/ia64/copyd.asm: Likewise.
17716 2002-11-20  Torbjorn Granlund  <tege@swox.com>
17718         * mpn/ia64/sqr_diagonal.asm: New file.
17720         * mpn/ia64/submul_1.asm: Handle vl == 0 specially.
17722 2002-11-20  Kevin Ryde  <kevin@swox.se>
17724         * tests/cxx/t-locale.cc: Test with locales imbued into stream, use
17725         <sstream>, eliminated some C-isms.  istream tests disabled, not yet
17726         locale-ized.
17727         * tests/cxx/Makefile.am (t_locale_SOURCES): Remove localeconv.c.
17728         * tests/cxx/localeconv.c: Remove file.
17730         * configure.in (AC_CHECK_TYPES) [C++]: Add std::locale.
17731         * printf/doprntf.c: Add decimal point parameter, remove localeconv use.
17732         * gmp-impl.h (__gmp_doprnt_mpf): Update prototype, bump symbol to
17733         __gmp_doprnt_mpf2 to protect old libgmpxx.
17734         * cxx/osmpf.cc: Use this with ostream locale decimal_point facet.
17735         * printf/doprnt.c: Ditto, with GMP_DECIMAL_POINT.
17737         * gmp-h.in: More comments on __declspec for windows DLLs.
17739         * mpf/set_str.c, scanf/doscan.c: Cast through "unsigned char" for
17740         decimal point string, same as input chars.
17742         * configure.in (AC_CHECK_HEADERS): Add langinfo.h.
17743         (AC_CHECK_FUNCS): Add nl_langinfo.
17744         * gmp-impl.h (GMP_DECIMAL_POINT): New macro.
17745         * mpf/out_str.c, mpf/set_str.c, scanf/doscan.c: Use it, and don't
17746         bother with special code for non-locale systems.
17747         * tests/misc/t-locale.c: Subvert nl_langinfo too.
17749         * configure.in, acinclude.m4 (GMP_ASM_X86_GOT_UNDERSCORE): New macro.
17750         * mpn/x86/x86-defs.m4 (_GLOBAL_OFFSET_TABLE_): New macro, inserting
17751         extra underscore for OpenBSD.
17752         * mpn/x86/README (_GLOBAL_OFFSET_TABLE_): Update notes.
17753         Reported by Christian Weisgerber.
17755         * tests/cxx/t-rand.cc (check_randinit): New function, collecting up
17756         constructor tests.
17758         * tests/cxx/t-ostream.cc: Use <sstream> instead of <strstream>, use
17759         compare instead of strcmp.
17761         * gmpxx.h (__gmp_randinit_lc_2exp_size_t): Return type is int.
17763 2002-11-18  Kevin Ryde  <kevin@swox.se>
17765         * tune/speed.c (r_string): Use CNST_LIMB with <N>bits, spotted by
17766         Torbjorn.
17768 2002-11-19  Torbjorn Granlund  <tege@swox.com>
17770         * mpn/ia64/mul_1.asm: Remove redundant cmp from prologue code.
17771         Streamline prologue.
17772         * mpn/ia64/addmul_1.asm: Likewise.
17773         * mpn/ia64/submul_1.asm: New file.
17774         * mpn/ia64/submul_1.c: Remove.
17776 2002-11-17  Torbjorn Granlund  <tege@swox.com>
17778         * mpn/generic/popham.c: New file, using new faster algorithm.
17779         * mpn/generic/popcount.c: Remove.
17780         * mpn/generic/hamdist.c: Remove.
17782         * mpn/ia64/addmul_1.asm: Don't clobber callee-saves register f16.
17783         * mpn/ia64/mul_1.asm: Likewise.
17785         * mpn/ia64/addmul_1.asm: Add pred.rel declarations.  Resolve RAW
17786         hazards for condition code registers, duplicating code as needed.  Add
17787         prediction to all branches.
17788         * mpn/ia64/mul_1.asm: Likewise.
17789         * mpn/ia64/add_n.asm: Likewise.
17790         * mpn/ia64/sub_n.asm: Likewise.
17791         * mpn/ia64/copyi.asm: Likewise.
17792         * mpn/ia64/copyd.asm: Likewise.
17794         * mpn/generic/random2.c: Add a cast to silence some compilers.
17796 2002-11-16  Torbjorn Granlund  <tege@swox.com>
17798         * mpz/powm.c: Cap allocation by limiting k to 10 (512 precomputed
17799         values).
17801 2002-11-16  Kevin Ryde  <kevin@swox.se>
17803         * configure.in, gmp.texi: Remove powerpc64 ABI=32L, doesn't work and
17804         is unlikely to ever do so.
17805         * configure.in: Allow ABI=32 for powerpc64.
17806         Reported by David Edelsohn.
17808 2002-11-14  Kevin Ryde  <kevin@swox.se>
17810         * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add addmul_2.c
17811         addmul_3.c addmul_4.c addmul_5.c addmul_6.c addmul_7.c addmul_8.c.
17813         * gmp-h.in (__GMP_DECLSPEC_EXPORT, __GMP_DECLSPEC_IMPORT) [__GNUC__]:
17814         Use __dllexport__ and __dllimport__ to keep out of application
17815         namespace.
17817 2002-11-14  Gerardo Ballabio <gerardo.ballabio@unimib.it>
17819         * gmpxx.h (__gmp_randinit_default_t, __gmp_randinit_lc_2exp_t,
17820         __gmp_randinit_lc_2exp_size_t): Use extern "C" { typedef ... }, for
17821         the benefit of g++ prior to 3.2.
17823 2002-11-12  Kevin Ryde  <kevin@swox.se>
17825         * gmpxx.h (gmp_randclass constructors): Patch from Roberto Bagnara to
17826         use extern "C" on C function pointer arguments.
17828 2002-11-09  Kevin Ryde  <kevin@swox.se>
17830         * configure.in, Makefile.am, printf/Makefile.am,
17831         printf/repl-vsnprintf.c: Handle vsnprintf replacement with C
17832         conditionals.
17834         * acinclude.m4 (AC_LANG_FUNC_LINK_TRY(C)): Workaround troubles recent
17835         HP cc +O3 causes for AC_CHECK_FUNCS.
17837         * gmp.texi (Notes for Particular Systems): Add Sparc app regs.
17838         (Debugging): Note gcc -fstack options to detect overflow.
17839         (Formatted Output Strings, Formatted Input Strings): Format strings
17840         are not multibyte.
17842 2002-11-06  Torbjorn Granlund  <tege@swox.com>
17844         * mpn/generic/tdiv_qr.c: Remove a bogus assert.
17846 2002-11-05  Torbjorn Granlund  <tege@swox.com>
17848         * mpn/generic/tdiv_qr.c: Remove two dead mpn_divrem_2 calls.
17850 2002-11-04  Kevin Ryde  <kevin@swox.se>
17852         * acinclude.m4 (GMP_C_INLINE): Don't define "inline" for C++.
17854         * demos/expr/expr-impl.h (stdarg.h): Test __DECC same as gmp.h.
17856         * mpbsd/mtox.c, printf/obprintf.c, printf/obvprintf.c,
17857         scanf/vsscanf.c, demos/expr/expr.c, demos/expr/exprf.c,
17858         demos/expr/exprfa.c, demos/expr/exprfr.c, demos/expr/exprq.c,
17859         demos/expr/exprz.c, demos/expr/exprza.c: Add <string.h> for strlen and
17860         memcpy.
17862 2002-11-02  Kevin Ryde  <kevin@swox.se>
17864         * longlong.h: Test __x86_64__ not __x86_64.  Reported by Andreas
17865         Jaeger.
17867         * mpz/import.c, mpz/export.c: Use char* subtract from NULL to get
17868         pointer alignment, for the benefit of Cray vector systems.
17870         * cxx/ismpf.cc: Use <clocale>.
17871         * tests/cxx/t-locale.cc: No need to conditionalize <clocale>.
17873         * scanf/doscan.c: Don't use isascii, rely on C99 ctype.h.
17875         * gmp.texi (Build Options): Describe CC_FOR_BUILD, cross reference
17876         texinfo manual.
17877         (ABI and ISA): Add powerpc620 and powerpc630 to powerpc64, add NetBSD
17878         and OpenBSD sparc64.
17879         (Notes for Package Builds): Cross reference libtool manual.
17880         (Notes for Particular Systems): Add OpenBSD to non-MMX versions of gas.
17881         (Known Build Problems): Add MacOS X C++ shared libraries.
17883 2002-10-31  Kevin Ryde  <kevin@swox.se>
17885         * gmp-impl.h, tune/speed.c, tune/speed.h, tune/common.c, tune/many.pl,
17886         tests/devel/try.c, tests/tests.h, tests/refmpn.c (mpn_addmul_5,
17887         mpn_addmul_6, mpn_addmul_7, mpn_addmul_8): Add testing and measuring.
17888         * configure.in (config.in): Add #undefs of HAVE_NATIVE_mpn_addmul_5,
17889         HAVE_NATIVE_mpn_addmul_6, HAVE_NATIVE_mpn_addmul_7,
17890         HAVE_NATIVE_mpn_addmul_8.
17891         (gmp_mpn_functions_optional): Add addmul_5 addmul_6 addmul_7 addmul_8.
17893         * tests/devel/try.c (ASSERT_CARRY): Remove, now in gmp-impl.h
17894         (try_one): Do dest setups after sources, for benefit of
17895         dst0_from_src1.
17897 2002-11-01  Torbjorn Granlund  <tege@swox.com>
17899         * mpn/generic/tdiv_qr.c: Avoid quadratic behaviour for
17900         sub-division when numerator is more than twice the size of the
17901         denominator.  Simplify loop logic for the same case.  Clean up a
17902         few comments.
17904 2002-10-29  Torbjorn Granlund  <tege@swox.com>
17906         * configure.in (*-cray-unicos*): Pass -hnofastmd again.
17908 2002-10-25  Torbjorn Granlund  <tege@swox.com>
17910         * tests/tadd.c: Disable test of denorms.
17912 2002-10-23  Linus Nordberg  <linus@swox.se>
17914         * gmp.texi (Introduction to GMP): Update section about mailing
17915         lists.
17917 2002-10-23  Kevin Ryde  <kevin@swox.se>
17919         * gmp-h.in (__GMP_ATTRIBUTE_PURE): Suppress this when
17920         __GMP_NO_ATTRIBUTE_CONST_PURE is defined.
17921         * gmp-impl.h (ATTRIBUTE_CONST): Ditto.
17922         * tune/common.c: Use __GMP_NO_ATTRIBUTE_CONST_PURE.
17924         * tune/speed.h, tune/many.pl: Remove ATTRIBUTEs from prototypes.
17925         * tune/speed.h: Remove various "dummy" variables attempting to keep
17926         "pure" calls live, no longer necessary.  They weren't sufficient for
17927         recent MacOS cc anyway.
17929 2002-10-21  Torbjorn Granlund  <tege@swox.com>
17931         * mpn/cray/ieee/addmul_1.c: Handle overlap as in mul_1.c.
17932         * mpn/cray/ieee/submul_1.c: Likewise.
17934 2002-10-19  Kevin Ryde  <kevin@swox.se>
17936         * configure.in (sparcv9 etc -*-*bsd*): Add support for NetBSD and
17937         OpenBSD sparc64.  Reported by Christian Weisgerber.
17938         (AC_CHECK_HEADERS): Add sys/param.h for sys/sysctl.h on *BSD.
17940         * demos/calc/calc.y: Change ={ to {, needed for bison 1.50.
17942         * longlong.h (count_leading_zeros, count_trailing_zeros) [x86_64]:
17943         Should be UDItype.
17945         * mpz/set_str.c, mpf/set_str.c, mpbsd/xtom.c, scanf/sscanffuns.c: Cast
17946         chars through "unsigned char" to zero extend, required by C99 ctype.h.
17948 2002-10-18  Torbjorn Granlund  <tege@swox.com>
17950         * tests/mpz/t-root.c: Test also mpz_rootrem.
17952         * mpn/generic/rootrem.c: Avoid overflow problem when n is huge.
17954         * mpz/root.c: Avoid overflow problems in allocation computation; also
17955         simplify it.  Misc cleanups.
17957         * mpz/rootrem.c: New file.
17958         * Makefile.am, mpz/Makefile.am, gmp-h.in: Add them.
17960 2002-10-17  Torbjorn Granlund  <tege@swox.com>
17962         * gmp-impl.h (popc_limb): Combine variants.
17964 2002-10-14  Kevin Ryde  <kevin@swox.se>
17966         * configure.in (AC_CHECK_HEADERS): Add sys/time.h for sys/resource.h
17967         test, needed by SunOS, and next autoconf will insist headers actually
17968         compile.
17970 2002-10-08  Kevin Ryde  <kevin@swox.se>
17972         * tune/time.c (speed_time_init): Allow for Cray times() apparently
17973         being a cycle counter.
17975         * dumbmp.c (mpz_get_str): Fix buf size allocation.
17977         * tests/trace.c, tests/tests.h (mp_limb_trace): New function.
17979         * tune/speed-ext.c (SPEED_EXTRA_PROTOS): Use __GMP_PROTO.
17980         * tests/devel/try.c (malloc_region): Add a cast for SunOS cc.
17982         * configure.in (AC_CHECK_FUNCS): Add strerror.
17983         (AC_CHECK_DECLS): Add sys_errlist, sys_nerr.
17984         * tune/time.c, tests/devel/try.c: Use them.
17986 2002-10-05  Kevin Ryde  <kevin@swox.se>
17988         * configure.in (AC_CHECK_HEADERS): Test float.h, not in SunOS cc.
17989         * printf/repl-vsnprintf.c: Use this.
17991         * configure.in (*sparc*-*-*): Collect up various options for clarity,
17992         use gcc -mcpu=supersparc and ultrasparc3, use cc -xchip, don't use
17993         -xtarget=native, use cc configs with acc, merge SunOS bundled cc and
17994         SunPRO cc configs.
17996         * gmp-impl.h (gmp_randfnptr_t): Use __GMP_PROTO.
17997         (MPZ_REALLOC): Cast _mpz_realloc return value to mp_ptr, for the
17998         benefit of SunOS cc which requires pointers of the same type on the
17999         two legs of a ?:.
18001         * dumbmp.c (mpz_realloc): Add a cast to avoid a warning from SunOS cc.
18003         * acinclude.m4: Allow for i960 b.out default cc output.
18005         * gmp.texi (Random State Initialization): Add gmp_randinit_mt.
18006         (Perfect Square Algorithm): Describe new mpn_mod_34lsub1 use.
18007         (Factorial Algorithm): Describe Jason's new code.
18008         (Binomial Coefficients Algorithm): Ideas about improvements
18009         moved to doc/projects.html.
18010         (Contributors): Add Jason Moxham and Pedro Gimeno.
18012 2002-10-03  Kevin Ryde  <kevin@swox.se>
18014         * gen-psqr.c: New file.
18015         * Makefile.am, mpn/Makefile.am: Use it to generate mpn/perfsqr.h.
18016         * mpn/generic/perfsqr.c: Use generated data, put mod 256 data into
18017         limbs to save space, use mpn_mod_34lsub1 when good.
18018         * tests/mpn/t-perfsqr.c: New file.
18019         * tests/mpn/Makefile.am (check_PROGRAMS): Add it.
18020         * tests/mpz/t-perfsqr.c (check_modulo): New test.
18021         (check_sqrt): New function holding current tests.
18023         * configure.in (AC_INIT): Modernize to package name and version here
18024         rather than AM_INIT_AUTOMAKE, add bug report email.
18025         (AC_CONFIG_SRCDIR): New macro.
18027         * gmp-impl.h (ROUND_UP_MULTIPLE): Fix for non-power-of-2 moduli (not
18028         normal in current uses), clarify the comments a bit.
18030 2002-09-30  Kevin Ryde  <kevin@swox.se>
18032         * mpn/Makeasm.am (.s.lo): Add --tag=CC for the benefit of CCAS!=CC,
18033         same as .S.lo and .asm.lo.
18035         * Makefile.am (gen-fac_ui, gen-fib, gen-bases): Quote source files in
18036         test -f stuff to avoid Sun make rewriting them.
18038 2002-09-28  Kevin Ryde  <kevin@swox.se>
18040         * tests/devel/try.c, tune/speed.c: Avoid strings longer than C99
18041         guarantees.
18043         * tests/refmpn.c, tests/tests.h (refmpn_zero_extend, refmpn_normalize,
18044         refmpn_sqrtrem): New functions.
18045         * tests/devel/try.c (TYPE_SQRTREM): Use refmpn_sqrtrem.
18046         (compare): Correction to tr->dst_size subscripting.
18048         * dumbmp.c: Add several new functions, allow for initial n<d in
18049         mpz_tdiv_q (now in mpz_tdiv_qr actually).
18051         * gen-bases.c (chars_per_limb): Get GMP_NUMB_BITS for base==2,
18052         similarly other powers of 2, which this was in the past.
18053         * tests/refmpn.c (refmpn_chars_per_limb): Ditto.
18054         * tests/mpn/t-mp_bases.c: Test chars_per_limb for power-of-2 bases too.
18056         * Makefile.am, mpz/Makefile.am: Setups for gen-fac_ui.c generating
18057         mpz/fac_ui.h.
18059 2002-09-28  Jason Moxham <J.L.Moxham@maths.soton.ac.uk>
18061         * dumbmp.c (mpz_pow_ui, mpz_addmul_ui, mpz_root): New functions.
18062         * gen-fac_ui.c: New file.
18063         * mpz/fac_ui.c: Rewrite.
18065 2002-09-26  Kevin Ryde  <kevin@swox.se>
18067         * tests/cxx/localeconv.c: New file, split from t-locale.cc.
18068         * tests/cxx/t-locale.cc: Use it.
18069         * tests/cxx/Makefile.am (t_locale_SOURCES): Add it.
18071         * tests/cxx/Makefile.am: Updates for Gerardo's new test programs.
18073 2002-09-26  Gerardo Ballabio <gerardo.ballabio@unimib.it>
18075         * gmpxx.h (__gmp_cmp_function): Bug fixes in double/mpq and
18076         double/mpfr comparisons.
18078         * tests/cxx/t-assign.cc, tests/cxx/t-binary.cc, tests/cxx/t-constr.cc,
18079         tests/cxx/t-ternary.cc, tests/cxx/t-unary.cc: Revise and add various
18080         tests, including some for mpfr, some split from t-expr.cc.
18081         * tests/cxx/t-locale.cc: Modernize include files.
18082         * tests/cxx/t-ostream.cc: Modernize include files, use cout rather
18083         than printf for diagnostics.
18084         * tests/cxx/t-misc.cc, tests/cxx/t-rand.cc: New file, split from
18085         t-allfuns.cc.
18086         * tests/cxx/t-ops.cc: New file, some split from t-allfuns.cc.
18087         * tests/cxx/t-prec.cc: New file.
18088         * tests/cxx/t-allfuns.cc, tests/cxx/t-expr.cc: Remove files.
18090 2002-09-25  Torbjorn Granlund  <tege@swox.com>
18092         * configure.in (*-cray-unicos*): Remove -hscalar0, it causes too much
18093         performance loss.  Let's trust Cray to fix their compilers.
18095 2002-09-24  Torbjorn Granlund  <tege@swox.com>
18097         * mpn/powerpc32/add_n.asm: Rewrite.
18098         * mpn/powerpc32/sub_n.asm: Rewrite.
18100 2002-09-24  Pedro Gimeno  <pggimeno@wanadoo.es>
18102         * randlc2x.c: Prepare for nails by changing type of _mp_c to mpz_t,
18103         make _mp_seed fixed-size, disallow SIZ(a)==0 to optimize comparisons
18104         for mpn_mul.
18105         * gmp-impl.h (MPZ_FAKE_UI): New macro.
18107         * randmt.c: Some constants made long for K&R compliance; remove UL at
18108         the end of other constants; use mp_size_t where appropriate; use
18109         mpz_export to split the seed.
18111         * gmp-impl.h: Remove type cast in RNG_FNPTR and RNG_STATE, to allow
18112         them to be used as lvalues.
18113         * randclr.c, randlc2x.c, randmt.c, randsd.c: All callers changed.
18115         * mpz/urandomm.c: Replace mpn_cmp with MPN_CMP.
18117         * tests/rand/gen.c: Get rid of gmp_errno.
18119 2002-09-24  Kevin Ryde  <kevin@swox.se>
18121         * gmp.texi (Custom Allocation): Keep allocate_function etc out of the
18122         function index by using @deftypevr.
18123         More index entries.
18125 2002-09-24  Gerardo Ballabio <gerardo.ballabio@unimib.it>
18127         * gmpxx.h (mpfr_class constructors from strings): Precision was set
18128         incorrectly, fixed.
18130 2002-09-23  Torbjorn Granlund  <tege@swox.com>
18132         * mpf/urandomb.c: Don't crash for overlarge nbits argument.
18133         Let nbits==0 mean to fill number with random bits.
18135 2002-09-21  Torbjorn Granlund  <tege@swox.com>
18137         * mpn/alpha/mod_34lsub1.asm: Add r31 dummy operand to `br' instruction.
18139 2002-09-20  Gerardo Ballabio <gerardo.ballabio@unimib.it>
18141         * gmpxx.h (__gmp_binary_equal, __gmp_binary_not_equal): Fix broken
18142         mpq/double functions.
18144 2002-09-18  Torbjorn Granlund  <tege@swox.com>
18146         * randmt.c (randget_mt): Fix typo.
18148 2002-09-18  Kevin Ryde  <kevin@swox.se>
18150         * gmp-impl.h (_gmp_rand): Avoid evaluating "state" more than once, for
18151         the benefit places calling it with RANDS.
18153         * randmt.c (randseed_mt): Use mpz_init for mod and seed1, for safety.
18155         * tune/tuneup.c (sqr_karatsuba_threshold): Initialize to
18156         TUNE_SQR_KARATSUBA_MAX so mpn_sqr_n works for randmt initialization.
18158         * gmp.texi (Integer Comparisons): Remove mention of non-existent
18159         mpz_cmpabs_si, reported by Conrad Curry.
18161         * tune/speed.c, tune/speed.h, tune/common.c: Add gmp_randseed,
18162         gmp_randseed_ui and mpz_urandomb.
18164 2002-09-18  Pedro Gimeno  <pggimeno@wanadoo.es>
18166         * tests/rand/gen.c: Add mt, remove lc and bbs.
18168         * Makefile.am (libgmp_la_SOURCES): Add randmt.c, remove randlc.c and
18169         randraw.c.
18171         * randmt.c: New file.
18172         * gmp-h.in (gmp_randinit_mt): Add prototype.
18173         * randdef.c: Use gmp_randinit_mt.
18175         * gmp-impl.h (RNG_FNPTR, RNG_STATE): New macros.
18176         (gmp_randfnptr_t): New structure.
18177         (_gmp_rand): Now a macro not a function.
18178         * gmp-h.in (__gmp_randata_lc): Remove, now internal to randlc2x.c.
18179         (__gmp_randstate_struct): Revise comments on field usage.
18180         * randsd.c, randclr.c: Use function pointer scheme.
18181         * randsdui.c: Use gmp_randseed.
18182         * randraw.c: Remove file.
18183         * randlc2x.c: Collect up lc_2exp related code from randsd.c, randclr.c
18184         and randraw.c, use function pointer scheme, integrate seed==0/a==0
18185         into main case and fix case where bits(a) < m2exp.
18187         * randlc.c: Remove file, never documented and never worked.
18188         * gmp-h.in (gmp_randinit_lc): Remove prototype.
18190 2002-09-16  Torbjorn Granlund  <tege@swox.com>
18192         * mpn/alpha/mod_34lsub1.asm: New file.
18194 2002-09-16  Kevin Ryde  <kevin@swox.se>
18196         * configure.in, acinclude.m4 (GMP_C_RESTRICT): Remove this, not
18197         currently used, and #define restrict upsets Microsoft C headers on
18198         win64.  Reported by David Librik.
18200         * configure.in (x86): Add gcc 3.2 -march and -mcpu flags, remove some
18201         unnecessary -march=i486 fallbacks.
18203         * gmp.texi (Notes for Particular Systems): Note cl /MD is required for
18204         Microsoft C and MINGW to cooperate on I/O.  Explained by David Librik.
18205         (Language Bindings): Add linbox.
18206         * gmp.texi (Language Bindings):
18208 2002-09-12  Kevin Ryde  <kevin@swox.se>
18210         * mpz/aorsmul_i.c: Allow for w==x overlap with nails.  Test
18211         BITS_PER_ULONG > GMP_NUMB_BITS rather than GMP_NAIL_BITS != 0.
18212         * tests/mpz/t-aorsmul.c: Test this.
18214         * tune/common.c: mpn_mod_34lsub1 only exists for GMP_NUMB_BITS%4==0
18215         * tune/speed.c: Add mpn_mod_34lsub1.
18217 2002-09-10  Pedro Gimeno  <pggimeno@wanadoo.es>
18219         * rand.c: Remove old disabled BBS code.
18220         * mpf/urandomb.c: Use BITS_TO_LIMBS.
18222 2002-09-10  Kevin Ryde  <kevin@swox.se>
18224         * gmp.texi (Multiplication Algorithms): FFT is now enabled by default.
18226 2002-09-10  Pedro Gimeno  <pggimeno@wanadoo.es>
18228         * mpz/urandomm.c: Use mpn level functions, avoid an infinite loop if
18229         _gmp_rand forever returns all "1" bits.
18230         * tests/rand/t-urndmm.c: New file
18231         * tests/rand/Makefile.am (check_PROGRAMS): Add it.
18233         * gmp-impl.h (BITS_TO_LIMBS): New macro.
18234         * mpz/urandomb.c: Use it, and use MPZ_REALLOC.
18236 2002-09-08  Kevin Ryde  <kevin@swox.se>
18238         * acinclude.m4 (GMP_GCC_WA_MCPU): New macro.
18239         * configure.in (alpha*-*-*): Use it to avoid -Wa,-mev67 if gas isn't
18240         new enough to know ev67.  Reported by David Bremner.
18242 2002-07-30  Gerardo Ballabio <gerardo.ballabio@unimib.it>
18244         * gmpxx.h (__gmpz_value etc): Remove, use mpz_t etc instead.
18245         (__gmp_expr): Reorganise specializations, use __gmp_expr<T,T> not
18246         mpz_class etc.
18247         (mpfr evals): Remove mode parameter, was always
18248         __gmp_default_rounding_mode anyway.
18250 2002-09-07  Kevin Ryde  <kevin@swox.se>
18252         * gmp-h.in, mp-h.in: Use #ifdef for tests, for the benefit of
18253         applications using gcc -Wundef.
18255         * longlong.h: Define COUNT_LEADING_ZEROS_NEED_CLZ_TAB for all alphas,
18256         since mpn/alpha/cntlz.asm always goes into libgmp.so, even for ev67
18257         and ev68 which don't need it.  Reported by David Bremner.
18259         * gmp.texi (Demonstration Programs): New section, expanding on what
18260         was under "Build Options".
18261         (Converting Floats): Don't need \ for _ in @var within @math.
18262         Add and amend various index entries.
18264         * demos/qcn.c: Add -p prime limit option.
18266 2002-08-30  Kevin Ryde  <kevin@swox.se>
18268         * mpz/pprime_p.c: Handle small negatives with isprime, in particular
18269         must do so for n==-2.
18270         * tests/mpz/t-pprime_p.c: New file.
18271         * tests/mpz/Makefile.am: Add it.
18273 2002-08-26  Torbjorn Granlund  <tege@swox.com>
18275         * gmp.texi (Converting Floats): Fix typo in mpf_get_d_2exp docs,
18276         reported by Paul Zimmermann.
18278 2002-08-26  Kevin Ryde  <kevin@swox.se>
18280         * configure.in: Echo the ABI being tried for the compilers.
18281         (powerpc*-*-*): Use powerpc64/aix.m4 for ABI=aix64 too.
18282         (AC_CHECK_FUNCS): Add strtol, for tests/rand/gen.c.
18284 2002-08-24  Kevin Ryde  <kevin@swox.se>
18286         * configure.in (HAVE_HOST_CPU_, HAVE_HOST_CPU_FAMILY_, HAVE_NATIVE_):
18287         Setup templates for these using AH_VERBATIM rather than acconfig.h,
18288         preferred by latest autoconf.  Prune lists to just things used.
18289         * acconfig.h: Remove file.
18291         * mpn/powerpc32/mode1o.asm: Forgot ASM_START.
18293         * tune/time.c (have_cgt_id): Renamed from HAVE_CGT_ID so avoid
18294         confusion with autoconf outputs, and turn it into a "const" variable.
18296 2002-08-23  Torbjorn Granlund  <tege@swox.com>
18298         * configure.in: Choose powerpc32/aix.m4 or powerpc64/aix.m4 based on
18299         ABI, not configuration triple.
18301         * mpz/pprime_p.c: Partially undo last change--handle small and
18302         negative numbers in the same test.
18304 2002-08-22  Kevin Ryde  <kevin@swox.se>
18306         * gmp-impl.h (MUL_FFT_THRESHOLD, SQR_FFT_THRESHOLD): Note
18307         mpn/generic/mul_fft.c is not nails-capable, and don't bother setting
18308         other FFT data for nails.
18310         * configfsf.guess: Update to 2002-08-19.
18311         * configfsf.sub: Update to 2002-08-20.
18313         * config.guess (powerpc*-*-*): Use a { } construct to suppress SIGILL
18314         message on AIX.
18316 2002-08-20  Kevin Ryde  <kevin@swox.se>
18318         * gmp.texi (Build Options): Add ia64 under cpu types.
18319         (ABI and ISA): Describe IRIX 6 ABI=o32.
18320         (Notes for Particular Systems): Remove -march=pentiumpro, now ok.
18321         (Known Build Problems): Binutils 2.12 is ok for libgmp.a.
18322         (Emacs): New section.
18323         (Language Bindings): Update MLton URL, reported by Stephen Weeks.
18324         (Prime Testing Algorithm): New section.
18325         Don't put a blank line after @item in @table since it can make a page
18326         break between the heading and the entry.
18327         Misc tweaks elsewhere, in particular more index entries.
18329         * mpz/millerrabin.c: Need x to be size+1 for change to urandomm.
18331         * gmp-impl.h: Comments on the use of __GMP_DECLSPEC.
18333         * tune/time.c (freq_measure_mftb_one): Use struct_timeval, for the
18334         benefit of mingw.
18336         * tests/refmpn.c, tests/tests.h (ref_addc_limb, ref_subc_limb):
18337         Renamed from add and sub, following gmp-impl.h ADDC_LIMB and SUBC_LIMB.
18339 2002-08-17  Kevin Ryde  <kevin@swox.se>
18341         * mpn/powerpc32/mode1o.asm: New file.
18342         * configure.in, acinclude.m4 (GMP_ASM_POWERPC_PIC_ALWAYS): New macro.
18343         * mpn/asm-defs.m4: Use it to help setting up PIC.
18345         * configure.in (AC_PREREQ): Bump to 2.53.
18347         * mpn/powerpc32/powerpc-defs.m4 (ASSERT): New macro.
18348         (PROLOGUE_cpu): New macro, giving ALIGN(4) not 8.
18350 2002-08-16  Torbjorn Granlund  <tege@swox.com>
18352         * mpn/m68k/lshift.asm: Fix typo in !scale_available_p code.
18353         * mpn/m68k/rshift.asm: Likewise.
18355 2002-08-16  Kevin Ryde  <kevin@swox.se>
18357         * configure.in (--enable-profiling=instrument): New option.
18358         * gmp.texi (Profiling): Describe it.
18359         * mpn/x86/x86-defs.m4 (PROLOGUE_cpu, call_instrument, ret_internal):
18360         Add support.
18361         (call_mcount): Share PIC setups with call_instrument.
18362         * mpn/x86/*.asm: Use ret_internal.
18363         * mpn/asm-defs.m4 (m4_unquote): New macro.
18364         * tests/mpn/t-instrument.c: New file.
18365         * tests/mpn/Makefile.am: Add it.
18367         * mpn/alpha/umul.asm: Add ASM_END.
18369 2002-08-12  Kevin Ryde  <kevin@swox.se>
18371         * mpz/pprime_p.c: Fake up a local mpz_t to take abs(n), rather than
18372         using mpz_init etc.
18374         * mpz/millerrabin.c: Use mpz_urandomm for uniform selection of x,
18375         reported by Jason Moxham.  Exclude x==n-1, ie. -1 mod n.  Use
18376         gmp_randinit_default.
18378         * mpn/alpha/umul.asm: Use "r" registers, for the benefit of Unicos.
18380         * tests/devel/try.c: Add mpn_copyi and mpn_copyd.
18382 2002-08-09  Kevin Ryde  <kevin@swox.se>
18384         * Makefile.am: Remove configure.lineno from DISTCLEANFILES and gmp.tmp
18385         from MOSTLYCLEANFILES, automake does these itself now.
18387         * */Makefile.in, aclocal.m4, configure, install-sh, missing,
18388         mkinstalldirs: Update to automake 1.6.3.
18390         * mpn/ia64/README: Some notes on assembler syntax.
18392         * mpn/ia64/add_n.asm, mpn/ia64/sub_n.asm: Add .body.
18393         * mpn/ia64/add_n.asm, mpn/ia64/addmul_1.asm, mpn/ia64/mul_1.asm,
18394         mpn/ia64/sub_n.asm: Position .save ar.lc just before relevant
18395         instruction.
18396         * mpn/ia64/addmul_1.asm, mpn/ia64/mul_1.asm: Add .save ar.pfs and pr.
18397         * mpn/ia64/copyd.asm, mpn/ia64/copyi.asm: Correction to .body position.
18398         * mpn/ia64/lorrshift.asm: Add .prologue stuff.
18400         * configure.in (*-*-unicos*): Remove forcible --disable-shared,
18401         libtool gets this right itself now.
18403 2002-08-07  Kevin Ryde  <kevin@swox.se>
18405         * mpn/x86/pentium/mmx/hamdist.asm: New file, adapted from
18406         mpn/x86/pentium/mmx/popham.asm.
18407         * mpn/x86/pentium/mmx/popham.asm: Remove file, not faster than plain
18408         mpn/x86/pentium/popcount.asm for the popcount.
18410         * mpn/alpha/umul.asm: Use PROLOGUE/EPILOGUE, rename it mpn_umul_ppmm.
18411         * configure.in (alpha*-*-*): Add umul to extra_functions.
18413         * mpz/remove.c: Make src==0 return 0, not do DIVIDE_BY_ZERO.
18415 2002-08-05  Torbjorn Granlund  <tege@swox.com>
18417         * acconfig.h: Remove spurious undefs for mpn_divrem_newton and
18418         mpn_divrem_classic.
18420 2002-08-05  Kevin Ryde  <kevin@swox.se>
18422         * tests/refmpn.c, tests/tests.h, tests/misc/t-printf.c,
18423         tests/mpf/t-trunc.c, tests/mpn/t-mp_bases.c, tests/mpn/t-scan.c,
18424         tests/mpq/t-cmp_ui.c, tests/mpz/bit.c, tests/mpz/t-aorsmul.c,
18425         tests/mpz/t-powm_ui.c tests/mpz/t-root.c, tests/mpz/t-scan.c: More
18426         care with long and mp_size_t parameters, for the benefit of K&R.
18428         * demos/perl/GMP.pm, demos/perl/GMP.xs, demos/perl/GMP/Mpz.pm,
18429         demos/perl/test.pl: Add mpz_import and mpz_export.
18430         * demos/perl/GMP.pm: Remove "preliminary" warning.
18432         * mpn/lisp/gmpasm-mode.el: Set add-log-current-defun-header-regexp to
18433         pick up m4 defines etc.
18435         * Makefile.am (libgmpxx_la_DEPENDENCIES): libgmp.la should be here,
18436         not libgmpxx_la_LIBADD, for the benefit of "make -j2".
18438         * mpn/ia64/*.asm [hpux ABI=32]: Extend 32-bit operands to 64-bits, not
18439         optimal and might not be sufficient, but seems to work.
18441 2002-08-03  Kevin Ryde  <kevin@swox.se>
18443         * gmp.texi (Profiling): Use a table and expand for clarity.
18444         (Integer Special Functions): New section for mpz_array_init,
18445         _mpz_realloc, mpz_getlimbn and mpz_size, to discourage their use.
18447         * configure.in (*-*-msdosdjgpp*): Remove forcible --disable-shared,
18448         libtool gets this right itself now.
18450 2002-07-30  Kevin Ryde  <kevin@swox.se>
18452         * mpn/powerpc32/lshift.asm, mpn/powerpc32/rshift.asm: Lose final mr,
18453         and make final stwu into an stw.
18455         * gmp.texi (Known Build Problems): An easier workaround for DESTDIR,
18456         using LD_LIBRARY_PATH.
18457         (C++ Interface MPFR): Remove mpfrxx.h.
18459         * mpfrxx.h: Remove file.
18460         * Makefile.am: Remove mpfrxx.h.
18461         * tests/cxx/Makefile.am: Add Gerardo's new test programs.
18463 2002-07-30  Gerardo Ballabio <gerardo.ballabio@unimib.it>
18465         * gmpxx.h: Use mpz_addmul etc for ternary a+b*c etc.  Reorganise some
18466         macros for maintainability.  Merge mpfrxx.h.
18467         * tests/cxx/t-constr.cc, tests/cxx/t-expr.cc: Various updates.
18468         * tests/cxx/t-assign.cc, tests/cxx/t-binary.cc,
18469         tests/cxx/t-ternary.cc, tests/cxx/t-unary.cc: New files.
18471 2002-07-27  Kevin Ryde  <kevin@swox.se>
18473         * longlong.h (count_trailing_zeros) [ia64 __GNUC__]: Don't use
18474         __builtin_ffs for now, doesn't seem to work.
18476         * configure.in: Establish CONFIG_SHELL to avoid a problem with
18477         AC_LIBTOOL_SYS_MAX_CMD_LEN on ia64-*-hpux*.
18479         * tune/speed.h (SPEED_ROUTINE_MPN_GCD_FINDA): Don't let calls to
18480         mpn_gcd_finda go dead.
18482         * mpn/generic/tdiv_qr.c: Inline mpn_rshift and MPN_COPY of 2 limbs.
18484 2002-07-24  Kevin Ryde  <kevin@swox.se>
18486         * demos/primes.c: Use __GMP_PROTO and don't use signed, for the
18487         benefit of K&R.
18489         * demos/calc/calclex.l: Add <string.h> for strcmp.
18491         * mpn/ia64/invert_limb.asm: Use .rodata which works on ia64-*-hpux*
18492         and should be standard, rather than worrying about RODATA.
18494         * gmp.texi (Function Classes): Add cross references.
18495         (Integer Import and Export): Fix return value grouping.
18497         * mpn/lisp/gmpasm-mode.el (gmpasm-comment-start-regexp): Add // for
18498         ia64.  Add notes on what the various styles are for.
18500         * mpn/ia64/default.m4 (ASM_START): Define to empty, not dnl, so as not
18501         to kill text on the same line.
18502         (EPILOGUE_cpu): Force a newline after "#", so as not to suppress macro
18503         expansion in the rest of the EPILOGUE line.
18505 2002-07-21  Kevin Ryde  <kevin@swox.se>
18507         * tune/speed.h: Fix some missing _PROTOs.
18509         * Makefile.am (DISTCLEANFILES): Add configure.lineno.
18511         * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Define
18512         HAVE_DOUBLE_IEEE_BIG_ENDIAN and HAVE_DOUBLE_IEEE_LITTLE_ENDIAN in
18513         config.m4 too.
18514         * mpn/ia64/invert_limb.asm: Add big-endian data.
18516         * tests/mpz/t-jac.c (try_si_zi): Correction to "a" parameter type.
18518 2002-07-20  Kevin Ryde  <kevin@swox.se>
18520         * mpz/bin_ui.c, mpz/jacobi.c, mpz/pprime_p.c, mpn/generic/divis.c:
18521         More care with long and mp_size_t parameters, for the benefit of K&R.
18523         * gmp-impl.h (invert_limb): Use parens around macro arguments.
18524         (mpn_invert_limb): Give prototype and define unconditionally.
18526         * gmp-impl.h (CACHED_ABOVE_THRESHOLD, CACHED_BELOW_THRESHOLD): New
18527         macros.
18528         * mpn/generic/sb_divrem_mn.c: Use them to help gcc let preinv code go
18529         dead when not wanted.
18531 2002-07-17  Kevin Ryde  <kevin@swox.se>
18533         * tests/refmpz.c (refmpz_hamdist): Ensure mp_size_t parameters are
18534         that type, for the benefit of hpux ia64 bundled cc ABI=64.
18536         * configure.in (ia64*-*-hpux*): Need +DD64 in cc_64_cppflags to get
18537         the right headers for ansi2knr.
18539         * acinclude.m4 (GMP_TRY_ASSEMBLE, GMP_ASM_UNDERSCORE): Use $CPPFLAGS
18540         with $CCAS and when linking, as done by the makefiles.
18541         (GMP_ASM_X86_MMX, GMP_ASM_X86_SSE2): Show $CPPFLAGS in diagnostics.
18543         * gmp-impl.h (ieee_double_extract): Setup using HAVE_DOUBLE_IEEE_*.
18544         (GMP_UINT32): New define, 32 bit type for ieee_double_extract.
18545         * configure.in: Add AC_CHECK_SIZEOF unsigned.
18546         * configure.in, acinclude.m4 (GMP_IMPL_H_IEEE_FLOATS): Remove.
18547         (GMP_C_DOUBLE_FORMAT): Instead warn about unknown float here.
18549         * configure.in, acinclude.m4 (GMP_C_SIZES): Remove.
18550         * acinclude.m4 (GMP_INCLUDE_GMP_H_BITS_PER_MP_LIMB): Remove this
18551         scheme, not required.
18552         * configure.in (unsigned long, mp_limb_t): Run AC_CHECK_SIZEOF for
18553         these unconditionally, check mp_limb_t against gmp-mparam.h values.
18554         * gmp-impl.h (BYTES_PER_MP_LIMB, BITS_PER_MP_LIMB): Define based on
18555         SIZEOF_MP_LIMB_T if not provided by gmp-mparam.h.
18556         (BITS_PER_ULONG): Define here now.
18558         * gmp.texi (ABI and ISA): Add HP-UX IA-64 choices.
18559         (Random State Initialization): Typo in m2exp described for
18560         gmp_randinit_lc_2exp_size.
18561         (Formatted Output Functions): Clarify gmp_obstack_printf a bit.
18562         (Formatted Input Strings): Typo in %n summary.
18564         * mpz/inp_raw.c (NTOH_LIMB_FETCH): Use simple generic default, since
18565         endianness detection is now cross-compile friendly.
18566         * mpz/out_raw.c (HTON_LIMB_STORE): Ditto.
18568         * mpz/fib_ui.c: Nailify.
18569         * mpz/random.c: Nailify.
18571         * mpfr/acinclude.m4 (MPFR_CONFIGS): Patch by Vincent for an apparent
18572         float rounding gremlin on powerpc.
18574 2002-07-15  Kevin Ryde  <kevin@swox.se>
18576         * Makefile.am (PRINTF_OBJECTS): Avoid ending in a backslash, hpux ia64
18577         make doesn't like that.
18579         * mpn/ia64/*.asm: Add .sptk to unconditional branches, add ";" after
18580         .mib etc, for the benefit of hpux.
18582         * configure.in (ia64*-*-*): Use ABI=64 on non-HPUX systems, for
18583         consistency.
18585         * gmp-impl.h (ieee_double_extract): Test __sparc__, used by gcc 3.1.
18586         Reported by nix@esperi.demon.co.uk.
18587         * mpfr/mpfr-math.h (_MPFR_NAN_BYTES etc): Ditto.
18589 2002-07-13  Kevin Ryde  <kevin@swox.se>
18591         * mpn/powerpc32/rshift.asm: Rewrite, transformed from lshift.asm.
18593         * tune/tuneup.c (DIVEXACT_1_THRESHOLD, MODEXACT_1_ODD_THRESHOLD):
18594         Always zero for native mpn_divexact_1, mpn_modexact_1_odd.
18596         * gmp-h.in (__GMP_EXTERN_INLINE): Don't use this during configure,
18597         ie. __GMP_WITHIN_CONFIGURE, to avoid needing dependent routines.
18598         * acinclude.m4 (GMP_H_EXTERN_INLINE): Consequent changes.
18600         * gmp-impl.h, mpn/asm-defs.m4 (mpn_addmul_2, mpn_addmul_3,
18601         mpn_addmul_4): Add prototypes and defines.
18603         * gmp.texi (Number Theoretic Functions): Clarify return value.
18604         Reported by Peter Keller.
18606 2002-07-10  Kevin Ryde  <kevin@swox.se>
18608         * configure.in, acinclude.m4 (GMP_PROG_LEX): Remove this in favour of
18609         AM_PROG_LEX, now ok when lex is missing.
18611         * longlong.h (count_leading_zeros) [pentiummmx]: Don't use __clz_tab
18612         variant under LONGLONG_STANDALONE.
18613         (count_trailing_zeros) [ia64 __GNUC__]: Use __builtin_ffs.
18615         * gmp-impl.h (popc_limb): Add an ia64 asm version.
18616         (DItype): Use HAVE_LONG_LONG to choose long long, avoiding _LONGLONG
18617         which is in gcc but means something unrelated in MS Visual C 7.0.
18618         Reported by David Librik.
18620         * mpz/divexact.c: Add an ASSERT that den divides num.
18622         * mpn/asm-defs.m4 (LDEF): New macro.
18623         (INT32, INT64): Use it.
18624         * mpn/pa32/*.asm: Use it.
18625         * mpn/pa32/README: Update notes on labels.
18627         * tests/refmpn.c, tests/tests.h, tests/t-bswap.c (ref_bswap_limb):
18628         Renamed from refmpn_bswap_limb.
18629         * tests/t-bswap.c: Add tests_start/tests_end for randomization.
18631         * tests/refmpn.c, tests/tests.h (ref_popc_limb): New function.
18632         * tests/t-popc.c: New file.
18633         * tests/Makefile.am: Add it.
18635         * mpn/ia64/invert_limb.asm: Use RODATA since ".section .rodata" is not
18636         accepted by ia64-*-hpux*.
18638         * acinclude.m4 (GMP_ASM_BYTE): New macro.
18639         (GMP_ASM_ALIGN_LOG, GMP_ASM_W32): Use it.
18640         (GMP_ASM_LABEL_SUFFIX): Use test compiles, not $host.
18641         (GMP_ASM_GLOBL): Ditto, and add .global for ia64-*-hpux*.
18642         (GMP_ASM_GLOBL_ATTR): Use GMP_ASM_GLOBL result, not $host.
18643         (GMP_ASM_LSYM_PREFIX): Allow any "a-z" nm symbol code, add ".text" to
18644         test program, required by ia64-*-hpux*.
18645         (GMP_ASM_LABEL_SUFFIX): Make LABEL_SUFFIX just the value, not a "$1:",
18646         the former being how it's currently being used in fact.
18648         * configure.in, acinclude.m4 (GMP_PROG_CC_WORKS_LONGLONG): New macro.
18649         * configure.in (ia64-*-hpux*): Add 32 and 64 bit ABI modes.
18651 2002-07-06  Kevin Ryde  <kevin@swox.se>
18653         * tests/cxx/t-allfuns.cc: New file.
18654         * tests/cxx/Makefile.am: Add it.
18656         * mpz/clrbit.c, mpz/setbit.c: Only MPN_NORMALIZE if high limb changes
18657         to zero.  Use _mpz_realloc return value.
18659         * gmp.texi (Build Options, C++ Formatted Output, C++ Formatted Input):
18660         Cross reference to Headers and Libraries for libgmpxx stuff.
18661         (Low-level Functions): mpn_divexact_by3 result based on GMP_NUMB_BITS.
18662         mpn_set_str takes "unsigned char *", reported by Mark Sofroniou.
18663         (C++ Interface General): Describe linking with libgmpxx and libgmp.
18665 2002-07-01  Kevin Ryde  <kevin@swox.se>
18667         * tune/tuneup.c, gmp-impl.h: Eliminate the array of thresholds in
18668         one(), tune just one at a time and let the callers hand dependencies.
18669         Eliminate the second_start_min hack, handle SQR_KARATSUBA_THRESHOLD
18670         oddities in tune_sqr() instead.
18672         * mpn/pa64/umul.asm, mpn/pa64/udiv.asm, mpn/asm-defs.m4, acconfig.h,
18673         longlong.h, tune/speed.c, tune/speed.h, tune/common.c, tune/many.pl,
18674         tests/devel/try.c: Introduce mpn_umul_ppmm_r and mpn_udiv_qrnnd_r
18675         rather than having variant parameter order for mpn_umul_ppmm and
18676         mpn_udiv_qrnnd on pa64.
18678         * gmp-h.in (mpz_export): Remove a spurious parameter name.
18679         * gmp-impl.h (mpn_rootrem): Use __MPN.
18681 2002-06-29  Kevin Ryde  <kevin@swox.se>
18683         * longlong.h (udiv_qrnnd) [hppa32]: Remove mpn_udiv_qrnnd version, the
18684         general mechanism for that suffices.
18686         * mpf/inp_str.c: Fix returned count of chars read, reported by Paul
18687         Zimmermann.  Also fix a memory leak for invalid input.
18688         * tests/mpf/t-inp_str.c: New file.
18689         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
18691         * tests/devel/try.c (mpn_mod_34lsub1): Only exists for
18692         GMP_NUMB_BITS%4==0.
18693         (SIZE2_FIRST): Respect option_firstsize2 for "fraction" case.
18695         * mpn/generic/diveby3.c: Further nailifications.
18696         * gmp-impl.h (MODLIMB_INVERSE_3): Allow for GMP_NUMB_BITS odd.
18697         (GMP_NUMB_CEIL_MAX_DIV3, GMP_NUMB_CEIL_2MAX_DIV3): New constants.
18698         * tests/t-constants.c: Check them.
18700         * gmp-h.in (__GMP_CRAY_Pragma): New macro.
18701         (__GMPN_COPY_REST): Use it.
18702         * gmp-impl.h (CRAY_Pragma): Use it.
18704 2002-06-25  Kevin Ryde  <kevin@swox.se>
18706         * mpz/import.c, mpz/export.c: Cast data pointer through "char *" in
18707         alignment tests, for the benefit of Cray vector systems.
18709         * configure.in (x86-*-*): Remove -march=pentiumpro check, seems ok
18710         with current code.
18711         * acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO, GMP_GCC_VERSION_GE): Remove
18712         macros, no longer needed
18714         * acinclude.m4 (GMP_ASM_RODATA): Remove temporary files.
18716         * configure.in (GMP_ASM_GLOBL_ATTR): Reposition to avoid duplication
18717         through AC_REQUIRE.
18719 2002-06-23  Kevin Ryde  <kevin@swox.se>
18721         * tests/mpz/t-fib_ui.c (check_fib_table): Check table values, not just
18722         that they're non-zero.
18724         * acinclude.m4 (GMP_GCC_ARM_UMODSI): Match bad "gcc --version" output
18725         exactly, rather than parsing it with GMP_GCC_VERSION_GE.
18726         (GMP_ASM_UNDERSCORE): Use GLOBL_ATTR.
18728         * mpn/pa32/udiv.asm, mpn/pa32/hppa1_1/udiv.asm, mpn/pa64/udiv.asm:
18729         Renamed from udiv_qrnnd.asm, for consistency with other udiv's.
18730         * mpn/pa64/umul.asm: Renamed from umul_ppmm.asm likewise.
18731         * configure.in (hppa*-*-*): Update extra_functions.
18732         (NAILS_SUPPORT): Remove umul_ppmm, udiv_qrnnd, udiv_fp, udiv_nfp from
18733         nails-neutral list, no longer needed.
18735         * gmp-h.in (__DECC): Add notes on testing this for ANSI-ness.
18736         (__GMP_EXTERN_INLINE): Add static __inline for DEC C.
18737         (mpz_mod_ui): Move up to main section, it's still documented.
18739 2002-06-22  Kevin Ryde  <kevin@swox.se>
18741         * mpz/jacobi.c, mpz/kronsz.c, mpz/kronuz.c, mpz/kronzs.c,
18742         mpz/kronzu.c: Allow for odd GMP_NUMB_BITS, tweak a few variable setups.
18743         * gmp-impl.h (JACOBI_STRIP_LOW_ZEROS): New macro.
18745         * mpn/generic/mod_34lsub1.c: Nailify.
18746         * tests/devel/try.c (CNST_34LSUB1): Nailify.
18747         * gmp-impl.h (ADDC_LIMB): New macro.
18749         * gmpxx.h (mpf_class::get_str): Make exponent mp_exp_t&, default
18750         base=10 and ndigits=0.
18751         (mpz_class::set_str, mpq_class::set_str, mpf_class::set_str): Add
18752         versions accepting "const char *".
18753         * mpfrxx.h (mpfr_class::get_str, mpfr_class::set_str): Ditto, and
18754         uncommenting set_str and operator=.
18755         * gmp.texi (C++ Interface Integers, C++ Interface Rationals)
18756         (C++ Interface Floats): Update.
18758         * gmp-impl.h (modlimb_invert): Merge the <=64bits and general versions.
18759         (const, signed): Move to near top of file, fixes --enable-alloca=debug
18760         on K&R.
18762         * gen-fib.c: New file, derived from mainline in mpn/generic/fib2_ui.c.
18763         * dumbmp.c (mpz_init_set_ui): New function.
18764         * Makefile.am, mpn/Makefile.am: Generate fib_table.h, mpn/fib_table.c.
18765         * gmp-impl.h: Use fib_table.h, add __GMP_DECLSPEC to __gmp_fib_table
18766         (for the benefit of tests/mpz/t-fib_ui.c).
18767         * mpn/generic/fib2_ui.c: Remove __gmp_fib_table and generating code.
18769         * Makefile.am: Add mp.h to BUILT_SOURCES, distclean all BUILT_SOURCES,
18770         use += more.
18772         * acinclude.m4 (GMP_ASM_M68K_INSTRUCTION, GMP_ASM_M68K_BRANCHES):
18773         Don't let "unknown" get into the cache variables.
18774         (GMP_ASM_TEXT): See what assembles, don't hard-code hpux and aix.
18775         (GMP_PROG_EXEEXT_FOR_BUILD): Add ,ff8 for RISC OS, per autoconf cvs.
18776         (GMP_PROG_CPP_FOR_BUILD): Restructure per AC_PROG_CPP, print correct
18777         result if CPP_FOR_BUILD overrides the cache variable.
18778         (GMP_PROG_CC_FOR_BUILD_WORKS): New macro split from
18779         GMP_PROG_CC_FOR_BUILD.  Allow for "conftest" default compiler output.
18780         * configure.in, acinclude.m4 (GMP_PROG_HOST_CC): Reinstate this,
18781         separating HOST_CC establishment from GMP_PROG_CC_FOR_BUILD.
18783         * configure.in (mpn_objs_in_libgmp): Move mpn/mp_bases.lo ...
18784         * Makefile.am (MPN_OBJECTS): ... to here, add $U, and arrange
18785         MPN_OBJECTS to be common between libgmp and libmp.
18787 2002-06-20  Torbjorn Granlund  <tege@swox.com>
18789         * mpn/generic/mul_n.c (TOOM3_MUL_REC, TOOM3_SQR_REC): Don't check if
18790         basecase is to be invoked when *_TOOM3_THRESHOLD is more than 3 times
18791         the corresponding *_THRESHOLD.
18793 2002-06-20  Kevin Ryde  <kevin@swox.se>
18795         * mpn/ia64/submul_1.c: Add missing TMP_DECL, TMP_MARK, TMP_FREE.
18796         Reported by Paul Zimmermann.
18798         * configure.in, acinclude.m4 (AC_DEFINE): Make templates read "Define
18799         to 1", for clarity as per autoconf.
18800         * acinclude.m4 (GMP_OPTION_ALLOCA): Group WANT_TMP templates.
18802 2002-06-20  Gerardo Ballabio <gerardo.ballabio@unimib.it>
18804         * gmpxx.h, mpfrxx.h: Remove mpz_classref, let mpq_class::get_num and
18805         mpq_class::get_den return mpz_class& as per the documentation.
18806         Reported by Roberto Bagnara.
18808 2002-06-18  Kevin Ryde  <kevin@swox.se>
18810         * tests/rand/t-lc2exp.c: New file.
18811         * tests/rand/Makefile.am: Add it, and use tests/libtests.la.
18813         * randraw.c (lc): Pad seed==0 case with zero limbs, return same
18814         (m2exp+1)/2 bits as normal, right shift "c" result as normal.
18816         * configure.in: Don't bother with line numbers in some diagnostics.
18817         (*-*-mingw*): Use -mno-cygwin if it works, suggested by delta trinity.
18819         * tests/mpz/Makefile.am, tests/mpq/Makefile.am,
18820         tests/misc/Makefile.am, (CLEANFILES): Set to *.tmp for test program
18821         temporaries, to get t-scanf.tmp and reduce future maintenance.
18823 2002-06-16  Torbjorn Granlund  <tege@swox.com>
18825         * mpn/generic/get_str.c (mpn_dc_get_str): Pass scratch memory area in
18826         new `tmp' parameter.  Trim allocation needs by reusing input parameter.
18828 2002-06-15  Torbjorn Granlund  <tege@swox.com>
18830         * mpn/sparc32/v9/udiv.asm: New file.
18832 2002-06-15  Kevin Ryde  <kevin@swox.se>
18834         * acinclude.m4 (GMP_GCC_VERSION_GE): Correction to recognising mingw
18835         gcc 3.1 version number.  Reported by Jim Fougeron.
18837         * configure.in (AC_PROVIDE_AC_LIBTOOL_WIN32_DLL): New define, to make
18838         AC_LIBTOOL_WIN32_DLL work with autoconf 2.53.
18840         * acinclude.m4 (GMP_C_SIZES): Establish BITS_PER_MP_LIMB as a value,
18841         not an expression, for the benefit of the gen-bases invocation.
18843         * config.guess (CC_FOR_BUILD): Try c99, same as configfsf.guess.
18845 2002-06-15  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
18847         * mpfr/set_q.c: Allow for 1 bit numerator or denominator.
18849 2002-06-14  Kevin Ryde  <kevin@swox.se>
18851         * configure.in (AC_C_BIGENDIAN): Use new style action parameters.
18853         * randlc2x.c: Allow for a<0, allow for c>=2^m2exp.
18854         * randraw.c (lc): Allow for a==0.
18856         * mpn/sparc32/udiv.asm: Renamed from udiv_fp.asm.  Don't know if float
18857         is the best way for v7, but it's what configure has chosen since gmp 3.
18858         * configure.in (*sparc*-*-* ABI=32): extra_functions="udiv" for all,
18859         in particular sparc32/v8/udiv.asm is faster (on ultrasparc2) than
18860         udiv_fp previously used for v9 chips.
18862         * gen-bases.c: New file, derived from mpn/mp_bases.c.
18863         * dumbmp.c: New file, mostly by Torbjorn, some by me.
18864         * configure.in, acinclude.m4 (GMP_PROG_CC_FOR_BUILD,
18865         GMP_PROG_CPP_FOR_BUILD, GMP_PROG_EXEEXT_FOR_BUILD,
18866         GMP_C_FOR_BUILD_ANSI, GMP_CHECK_LIBM_FOR_BUILD): New macros.
18867         (GMP_PROG_HOST_CC): Remove, superceded by GMP_PROG_CC_FOR_BUILD.
18868         * Makefile.am: Run gen-bases to create mp_bases.h and mpn/mp_bases.c.
18869         * gmp-impl.h: Use mp_bases.h.
18870         * mpn/mp_bases.c: Remove file.
18871         * mpn/Makefile.am: mp_bases.c now in nodist_libmpn_la_SOURCES.
18873         * tests/mpz/t-cmp_d.c (check_one_2exp): Use volatile to force to
18874         double, fixes gcc 3.1 with -O4.  Reported by Michael Lee.
18875         * configure.in (AC_C_VOLATILE): New macro.
18877         * tests/misc/t-scanf.c: (fromstring_gmp_fscanf): Add missing va_end.
18878         Don't mix varargs and fixed args functions, not good on x86_64.
18879         Reported by Marcus Meissner.
18881         * Makefile.am (EXTRA_DIST): Remove mpfr/README, now in mpfr/Makefile.in
18883         * configure, config.in, INSTALL.autoconf: Update to autoconf 2.53.
18884         * */Makefile.in, install-sh, mdate-sh, missing, aclocal.m4, configure:
18885         Update to automake 1.6.1.
18886         * configfsf.guess, configfsf.sub: Update to 2002-05-29.
18888 2002-06-12  Kevin Ryde  <kevin@swox.se>
18890         * acinclude.m4 (GMP_GCC_VERSION_GE): Recognise mingw gcc 3.1 version.
18891         (GMP_PROG_CC_WORKS): Allow for a_out.exe, as per autoconf.
18892         (GMP_GCC_NO_CPP_PRECOMP, GMP_ASM_UNDERSCORE): Ditto, plus a.exe.
18894 2002-06-09  Torbjorn Granlund  <tege@swox.com>
18896         * randraw.c (lc): Remove broken ASSERT_ALWAYS.
18898         * mpn/x86: Update gmp-mparam.h files with current measures *_THRESHOLD
18899         values.
18900         * mpn/x86/p6/mmx/gmp-mparam.h: New file.
18902 2002-06-09  Kevin Ryde  <kevin@swox.se>
18904         * mpn/x86/*/gmp-mparam.h (USE_PREINV_DIVREM_1): Add tuned settings.
18906         * acconfig.h (HAVE_NATIVE_mpn_preinv_divrem_1): New template.
18908         * tests/refmpn.c, tests/tests.h (refmpn_chars_per_limb,
18909         refmpn_big_base): New functions.
18910         * tests/mpn/t-mp_bases.c: Use them, and don't test big_base_inverted
18911         unless it's being used.
18913         * gmp.texi (Notes for Particular Systems): Using Microsoft C with DLLs.
18914         (Known Build Problems): Notes on MacOS and GCC.
18915         (Integer Logic and Bit Fiddling): Use ULONG_MAX for maximum ulong.
18916         (Low-level Functions): mpn_get_str accepts base==256.
18917         (Formatted Output Functions): Note output is not atomic.
18918         (Internals): Note mp_size_t for limb counts.
18920         * mp-h.in, gmp-h.in (mp_ptr, mp_srcptr, mp_size_t, mp_exp_t): Remove
18921         these types from mp.h, not needed.
18923         * mpfr/tests/tadd.c, mpfr/tests/tmul.c (check): Apply a hack to the
18924         parameter order to make sparc gcc 2.95.2 happy.
18926         * doc/configuration: Notes on bootstrapping.
18928 2002-06-08  Kevin Ryde  <kevin@swox.se>
18930         * mpfr/tests/tsqrt.c, mpfr/tests/tsqrt_ui.c: Suppress tests if sqrt is
18931         not affected by mpfr_set_machine_rnd_mode.
18933         * mpfr/mul_2si.c: Workaround a mips gcc 2.95.3 bug under -O2 -mabi=n32.
18935         * configure.in (alphev56): Fix to use ev5 path.
18937 2002-06-06  Kevin Ryde  <kevin@swox.se>
18939         * gmp-h.in: Use __gmp_const not const, in a number of places.
18941         * configure.in (sparc): Use ABI=32 instead of ABI=standard on v7 and
18942         v8, for consistency with v9 choices.
18943         (sparc64): Restrict GMP_ASM_SPARC_REGISTER to ABI=64.
18944         (x86): Move MMX $path munging to before printout.
18945         (CCAS): Move upward to support this.
18947         * gmp-impl.h (modlimb_invert): Merge macros for specific limb sizes,
18948         add a version for arbitrary limb size, use GMP_NUMB_BITS.
18949         (modlimb_invert, MODLIMB_INVERSE_3): Fix comments to say GMP_NUMB_BITS.
18951         * gmp-h.in (__GMP_LIKELY, __GMP_UNLIKELY): New macros.
18952         (mpz_getlimbn, mpz_perfect_square_p, mpz_popcount): Use them, make the
18953         fetch or mpn call likely, unconditionally calculate the alternative so
18954         as to avoid an "else" clause.
18955         * gmp-impl.h (LIKELY, UNLIKELY): Aliases.
18957         * configure.in, mpfr/tests/Makefile.am: Add $LIBM to $LIBS for
18958         MPFR_CONFIGS so it detects fesetround, and let it go through to
18959         $MPFR_LIBS.
18960         * mpfr/rnd_mode.c: Use gmp-impl.h to get MPFR_HAVE_FESETROUND.
18962         * tests/mpz/t-sizeinbase.c: Disable fake bits test, such pointer
18963         setups are bogus and have been seen failing on hppa.
18965         * tests/misc.c, tests/refmpz.c, tests.tests.h, tests/mpz/t-cong.c:
18966         Rename mpz_flipbit to refmpz_combit and move from misc.c to refmpz.c.
18968 2002-06-05  Torbjorn Granlund  <tege@swox.com>
18970         * tests/mpz/t-powm_ui.c Print proper routine name in error message.
18972 2002-06-03  Kevin Ryde  <kevin@swox.se>
18974         * tune/time.c, tune/freq.c, tune/speed.h: Add powerpc mftb support.
18975         (FREQ_MEASURE_ONE): Move to speed.h, fix tv_sec factor.
18976         (freq_measure): Use for mftb measuring too.
18977         * tune/powerpc.asm, tune/powerpc64.asm: New files.
18978         * configure.in, tune/Makefile.am: Add them.
18980         * gmp-impl.h (popc_limb): Add versions for Cray and fallback for
18981         arbitrary limb size.
18983         * mpn/sparc32/sparc-defs.m4: New file.
18984         * configure.in (sparc*-*-*): Use it.
18985         * acinclude.m4 (GMP_ASM_SPARC_REGISTER): New macro.
18986         * configure.in (sparc64): Use it.  Also, use -Wc,-m64 for linking.
18987         * mpn/sparc64/add_n.asm, mpn/sparc64/addmul_1.asm,
18988         mpn/sparc64/copyd.asm, mpn/sparc64/copyi.asm, mpn/sparc64/lshift.asm,
18989         mpn/sparc64/mul_1.asm, mpn/sparc64/rshift.asm,
18990         mpn/sparc64/sqr_diagonal.asm, mpn/sparc64/sub_n.asm,
18991         mpn/sparc64/submul_1.asm: Use REGISTER for .register.
18993 2002-06-01  Kevin Ryde  <kevin@swox.se>
18995         * mpz/powm_ui.c: Fix for result range in certain circumstances.
18997         * mpn/x86/k6/diveby3.asm: Speedup to 10 c/l, same as divexact_1.
18998         Anomaly pointed out by Alexander Kruppa.
19000 2002-05-31  Torbjorn Granlund  <tege@swox.com>
19002         * mpz/export.c: Cast pointer via `unsigned long' when checking
19003         alignment to avoid compiler warnings.
19005 2002-05-29  Kevin Ryde  <kevin@swox.se>
19007         * gmp-impl.h (BSWAP_LIMB): Versions for m68k, powerpc, and arbitrary
19008         limb size.
19009         * configure.in, acconfig.h (HAVE_HOST_CPU_FAMILY_m68k): New define.
19011 2002-05-27  Torbjorn Granlund  <tege@swox.com>
19013         * mpn/generic/mul_basecase.c: Improve MAX_LEFT handling, returning
19014         when possible.  Add code for mpn_addmul_5 and mpn_addmul_6.
19016 2002-05-25  Kevin Ryde  <kevin@swox.se>
19018         * tune/tuneup.c: Misc nailifications, and disable preinv thresholds
19019         with nails.
19020         * tune/speed.h: Use GMP_NUMB_HIGHBIT with mpn_sb_divrem_mn and
19021         mpn_divrem_2.
19022         * mpz/powm.c (redc): Nailify q.
19024         * tests/mpn/t-scan.c: Reduce the amount of testing, to go faster.
19026 2002-05-23  Torbjorn Granlund  <tege@swox.com>
19028         * Version 4.1 released.
19030         * mpn/alpha/ev6/nails/gmp-mparam.h: New file.
19032         * tests/devel/add_n.c (refmpn_add_n): Nailify.
19033         * tests/devel/sub_n.c (refmpn_sub_n): Nailify.
19034         * tests/devel/addmul_1.c (refmpn_addmul_1): Nailify.
19035         * tests/devel/submul_1.c (refmpn_submul_1): Nailify.
19037         * mpn/alpha/ev6/nails/add_n.asm: New file.
19038         * mpn/alpha/ev6/nails/sub_n.asm: New file.
19039         * mpn/alpha/ev6/nails/mul_1.asm: New file.
19040         * mpn/alpha/ev6/nails/submul_1.asm: New file.
19042 2002-05-22  Torbjorn Granlund  <tege@swox.com>
19044         * mpn/alpha/ev6/nails/addmul_1.asm: New file.
19046         * mpz/inp_str.c (mpz_inp_str_nowhite): Nailify.
19048         * mpn/generic/mul_basecase.c: Update pointers before conditional
19049         MAX_LEFT break statements.
19051 2002-05-21  Torbjorn Granlund  <tege@swox.com>
19053         * tests/mpz/t-gcd.c: Test mpz_gcd_ui.
19055         * mpz/lcm_ui.c: Nailify.
19057         * mpz/gcd_ui.c: Nailify.  Make it work as documented, allowing
19058         NULL to be passed for result parameter.  Fix gcd(0,0) case.
19060         * mpz/set_str.c: Nailify.
19062         * randlc2x.c (gmp_randinit_lc_2exp): Nailify.
19064         From Jakub Jelinek:
19065         * longlong.h (add_ssaaaa,sub_ddmmss) [64-bit sparc]:
19066         Make it actually work.
19068 2002-05-18  Torbjorn Granlund  <tege@swox.com>
19070         * mpf/ui_div.c: Shut up compiler warning.
19072         * mpn/generic/mul_basecase.c: Use mpn_addmul_2, mpn_addmul_3, and
19073         mpn_addmul_4, as available.
19075         * mpn/alpha/ev6/nails/addmul_2.asm: Adjust NAILS_SUPPORT decls.
19076         * mpn/alpha/ev6/nails/addmul_3.asm: Likewise
19077         * mpn/alpha/ev6/nails/addmul_4.asm: Likewise.
19079         * configure.in (*-cray-unicos*): Back again to -hscalar0.
19080         (gmp_mpn_functions_optional): Add mul_3, mul_4, addmul_2, addmul_3,
19081         and addmul_4.
19082         * acconfig.h: Add #undefs for new optional mpn functions.
19084 2002-05-18  Kevin Ryde  <kevin@swox.se>
19086         * gmp.texi (Integer Import and Export): Mention Cray unfilled words.
19088         * mpz/set_d.c, mpq/set_d.c: Use LIMBS_PER_DOUBLE for the output of
19089         __gmp_extract_double.  Reported by Henrik Johansson.
19091 2002-05-17  Torbjorn Granlund  <tege@swox.com>
19093         * mpn/alpha/ev6/nails/addmul_2.asm: New file.
19094         * mpn/alpha/ev6/nails/addmul_3.asm: New file.
19095         * mpn/alpha/ev6/nails/addmul_4.asm: New file.
19097         * mpn/generic/dump.c: Rewrite and nailify.
19099 2002-05-16  Kevin Ryde  <kevin@swox.se>
19101         * mpfr/Makefile.am (EXTRA_DIST): Add BUGS file.
19103 2002-05-15  Torbjorn Granlund  <tege@swox.com>
19105         * configure.in (*-cray-unicos*): Remove -hscalar0, add -hnofastmd
19106         as workaround for compiler bug.
19107         (mips64*-*-*): Pass just -O1 to cc, to work around compiler bug.
19109 2002-05-14  Torbjorn Granlund  <tege@swox.com>
19111         * configure.in (*-cray-unicos*): Pass -hscalar0 to work around
19112         compiler bug for mpz/import.c.
19114 2002-05-11  Torbjorn Granlund  <tege@swox.com>
19116         * mpz/import.c: Cast pointer via `unsigned long' when checking
19117         alignment to avoid compiler warnings.
19119         * mpn/generic/rootrem.c: Adjust allocation of qp temporary area.
19121 2002-05-09  Kevin Ryde  <kevin@swox.se>
19123         * mpz/import.c: Corrections to size store, special case tests, and
19124         general case ACCUMULATE.
19125         * tests/mpz/t-import.c, tests/mpz/t-export.c: More test data.
19127 2002-05-09  Torbjorn Granlund  <tege@swox.com>
19129         * mpn/generic/rootrem.c: Use temp space for root, copy value in place
19130         before returning.
19131         * mpz/root.c: Don't allocate extra limb for root value.
19132         * mpz/perfpow.c: Undo last change.
19134 2002-05-08  Torbjorn Granlund  <tege@swox.com>
19136         * gmp-impl.h (powerpc BSWAP_LIMB_FETCH): Rename local variable to make
19137         it not clash with caller.
19139         * mpn/generic/rootrem.c: New file.
19140         * configure.in (gmp_mpn_functions): Add rootrem and pow_1.
19141         * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add rootrem.c and
19142         pow_1.c
19143         * gmp-impl.h (mpn_rootrem): Add declaration.
19144         * mpz/perfpow.c: Amend allocations for mpn_rootrem requirements.
19145         * mpz/root.c: Rewrite to use mpn_rootrem.
19147 2002-05-08  Kevin Ryde  <kevin@swox.se>
19149         * gmp-impl.h (MUL_KARATSUBA_THRESHOLD etc): Remove forced nail values.
19151         * mpf/fits_u.h, mpf/fits_s.h, tests/mpf/t-fits.c: Ignore fraction
19152         part, making the code match the documentation.
19154         * gmpxx.h (struct __gmp_binary_minus): Use mpz_ui_sub.
19156 2002-05-07  Kevin Ryde  <kevin@swox.se>
19158         * mpn/powerpc32/README: New file.
19160         * mpz/root.c: Use unsigned long with mpz_sub_ui not mp_limb_t.
19162         * tune/README: Misc updates including sparc32/v9 smoothness, low res
19163         timebase, and mpn_add_n operand overlaps.
19164         * tune/many.pl: Add udiv.asm support.
19166         * gmp.texi (Build Options): A couple of --build better as --host.
19167         (Known Build Problems, Notes for Package Builds): Add DESTDIR problem.
19168         (Compatibility with older versions): Compatible with 4.x versions.
19169         (Converting Integers): Remove mpz_get_ui + mpz_tdiv_q_2exp decompose.
19170         (Integer Import and Export): New section.
19171         (Miscellaneous Integer Functions): Clarify mpz_sizeinbase returns 1
19172         for operand of 0.
19173         (Language Bindings): Add GNU Pascal.
19174         (Low-level Functions): Add GMP_NUMB_MAX.
19176         * tests/mpz/t-import.c, tests/mpz/t-export.c, tests/mpz/t-get_d.c:
19177         New tests.
19178         * tests/mpz/Makefile.am: Add them.
19180         * mpz/import.c, mpz/export.c: New files.
19181         * Makefile.am, mpz/Makefile.am, gmp-h.in: Add them.
19183         * gmp-h.in, gmp-impl.h (GMP_NUMB_MAX): Move to gmp.h.
19184         * gmp-impl.h (CNST_LIMB): Add cast to mp_limb_t to ensure unsigned.
19185         (CRAY_Pragma, MPN_REVERSE, MPN_BSWAP, MPN_BSWAP_REVERSE,
19186         ASSERT_ALWAYS_LIMB, ASSERT_ALWAYS_MPN): New macros.
19187         (MPZ_CHECK_FORMAT): Use ASSERT_ALWAYS_MPN.
19189 2002-05-07  Torbjorn Granlund  <tege@swox.com>
19191         * mpz/aors_ui.h: Nailify.
19193         * tests/mpz/t-addsub.c: New file.
19194         * tests/mpz/Makefile.am (check_PROGRAMS): Add t-addsub.
19196         * mpz/ui_sub.c: New file.
19197         * mpz/Makefile.am (libmpz_la_SOURCES): Add ui_sub.c.
19198         * Makefile.am (MPZ_OBJECTS): Ditto.
19199         * gmp-h.in (mpz_ui_sub): Add declaration.
19201         * gmp-impl.h (MPZ_REALLOC): Rewrite to allow the use of _mpz_realloc
19202         return value.
19204         * gmp-h.in (mpn_pow_1): Add declaration.
19206         * mpn/generic/pow_1.c: Handle exp <= 1.  Reverse rp/tp parity scheme
19207         for bn == 1 arm.
19209         * Rename MP_LIMB_T_HIGHBIT => GMP_LIMB_HIGHBIT.
19211 2002-05-06  Torbjorn Granlund  <tege@swox.com>
19213         * demos/pexpr.c (main): Don't call mpz_sizeinbase with negative base.
19215         * randraw.c (lc): Remove an unused variable.
19217         * mpn/generic/get_str.c: Clarify an algorithm description.
19219         * tests/mpf/t-trunc.c: Nailify.
19220         * tests/mpf/t-set_si.c: Disable for nails.
19222         * mpf/cmp_si.c: Nailify.
19223         * mpf/cmp_ui.c: Nailify.
19224         * mpf/div.c: Nailify.
19225         * mpf/div_2exp.c: Nailify.
19226         * mpf/div_ui.c: Nailify.
19227         * mpf/eq.c: Nailify.
19228         * mpf/get_d.c: Nailify.
19229         * mpf/get_d_2exp.c: Nailify.
19230         * mpf/get_si.c: Nailify.
19231         * mpf/get_str.c: Nailify.
19232         * mpf/get_ui.c: Nailify.
19233         * mpf/mul_2exp.c: Nailify.
19234         * mpf/random2.c: Nailify.
19235         * mpf/set_q.c: Nailify.
19236         * mpf/set_si.c: Nailify.
19237         * mpf/set_str.c: Nailify.
19238         * mpf/set_ui.c: Nailify.
19239         * mpf/sub.c: Nailify.
19240         * mpf/ui_div.c: Nailify.
19241         * mpf/ui_sub.c: Nailify.
19242         * mpf/urandomb.c: Nailify.
19244         * gmp-impl.h (__GMPF_BITS_TO_PREC, __GMPF_PREC_TO_BITS): Nailify.
19246         * mpz/get_si.c: Misc variable name changes.
19248         * mpf/fits_u.h: Rewrite - nailify.
19249         * mpf/fits_s.h: Likewise.
19251         * mpz/mod.c: Disambiguate if-statement with extra {}.
19253         * mpf/int_p.c: Fix type of size variables.
19254         * mpf/get_ui: Likewise.
19255         * mpf/get_si: Likewise.
19256         * mpq/equal.c: Likewise.
19257         * mpq/get_d.c: Likewise.
19258         * mpz/cmp_d.c: Likewise.
19259         * mpz/cmpabs_d.c: Likewise.
19260         * mpz/divis_2exp.c: Likewise.
19261         * mpz/kronuz.c: Likewise.
19262         * mpz/kronzu.c: Likewise.
19263         * mpz/kronzs.c: Likewise.
19264         * mpz/kronsz.c: Likewise.
19265         * mpz/scan0.c: Likewise.
19266         * mpz/scan1.c: Likewise.
19267         * mpz/tstbit.c: Likewise.
19268         * mpz/cong_2exp.c: Likewise.
19269         * mpz/divis.c: Likewise.
19271 2002-05-04  Torbjorn Granlund  <tege@swox.com>
19273         * mpn/generic/gcd.c: Additional nailify changes.
19275 2002-05-04  Kevin Ryde  <kevin@swox.se>
19277         * gmp-h.in (__GNU_MP_VERSION): Set to 4.1.
19278         * Makefile.am (-version-info): Bump for new release.
19280 2002-04-30  Torbjorn Granlund  <tege@swox.com>
19282         * mpn/generic/divrem_1.c: Additional nailify changes.
19283         * mpn/generic/mod_1.c: Likewise.
19285         * tests/mpq/t-get_d.c: Print floats with all 16 digits.
19287         * mpq/get_d.c: Nailify.
19289         * tests/mpq/t-set_f.c: Disable for nails.
19291         * mpz/get_d.c: Nailify.
19293         * gmp-impl.h (LIMBS_PER_DOUBLE, MP_BASE_AS_DOUBLE): Nailify.
19295         * gmp-h.in (__GMPZ_FITS_UTYPE_P): Cast maxval to before shifting it.
19297         * extract-dbl.c: Nailify.
19299 2002-04-29  Torbjorn Granlund  <tege@swox.com>
19301         * mpq/md_2exp.c (mord_2exp): Nailify.
19303         * mpq/cmp_ui.c: Nailify.
19305         * mpq/cmp.c (mpq_cmp): Nailify.
19307         * mpn/generic/gcd.c: Nailify.  GNUify code layout.
19309         * mpn/generic/gcdext.c: Nailify.  Misc changes.
19311         * tests/mpz/t-sqrtrem.c: Let argv[1] mean # of repetitions.
19312         * tests/mpz/t-gcd.c: Likewise.
19314         * mpz/gcd.c: Nailify.
19316         * mpn/generic/random.c: Nailify.
19318         * gmp-impl.h (modlimb_invert): Nailify.
19320 2002-04-27  Torbjorn Granlund  <tege@swox.com>
19322         * mpn/generic/gcdext.c (div2): Remove qh parameter.
19323         (mpn_gcdext): Streamline double-limb code.
19324         Move GCDEXT_THRESHOLD check to after initial division.
19326 2002-04-27  Kevin Ryde  <kevin@swox.se>
19328         * gmp-impl.h (JACOBI_MOD_OR_MODEXACT_1_ODD): Allow for odd
19329         GMP_NUMB_BITS.
19331         * tune/time.c (sgi_works_p): Allow for 64-bit counter, and fix
19332         SGI_CYCLECNTR_SIZE handling.
19334         * demos/expr/exprfr.c: Add nan and inf constants.
19335         * demos/expr/t-expr.c: Exercise them.
19337 2002-04-26  Torbjorn Granlund  <tege@swox.com>
19339         * mpz/cmp_ui.c: Fix overflow conditions for nails.
19341         * gmp-h.in (mpz_get_ui): Fix typo from last change.
19343         * mpz/n_pow_ui.c: Adjust allocation for nails.
19344         (GMP_NUMB_HALFMAX): Renamed from MP_LIMB_T_HALFMAX.
19345         Fix umul_ppmm invocation for for nails.
19347 2002-04-24  Torbjorn Granlund  <tege@swox.com>
19349         * mpn/generic/gcdext.c: Simplify by using mpn_tdiv_qr instead of
19350         mpn_divmod.
19352 2002-04-24  Kevin Ryde  <kevin@swox.se>
19354         * configure.in (*-*-cygwin*): Give a sensible default command line
19355         limit, to avoid blowups reported by Jim Fougeron on windows 9x.
19356         (--enable-nails): Make the default 2, since mp_bases has data for that.
19358         * mpfr/mpfr-math.h (__mpfr_nan): Use a "double" for the bytes, to
19359         avoid a mis-conversion on alpha gcc 3.0.2.
19360         (_MPFR_INFP_BYTES, _MPFR_INFM_BYTES): Should be a zero mantissa.
19362 2002-04-23  Torbjorn Granlund  <tege@swox.com>
19364         * mpz/dive_ui.c: Fix typo.
19366         * mpz/fits_s.h: Rewrite.
19368         * mpz/jacobi.c: Nailify.
19369         * mpz/kronuz.c: Additional nailify changes.
19370         * mpz/kronsz.c: Likewise.
19372 2002-04-23  Kevin Ryde  <kevin@swox.se>
19374         * demos/expr/Makefile.am (LDADD): Add $(LIBM) for the benefit of mpfr.
19376         * mpz/divis_ui.c, mpz/cong_ui.c: Nailify.
19377         * mpn/generic/bdivmod.c, mpz/divexact.c, mpz/dive_ui.c: Nailify.
19378         * mpn/generic/sb_divrem_mn.c, mpn/generic/divrem.c,
19379         mpn/generic/divrem_2.c: Nailify ASSERTs.
19380         * mpn/x86/k6/mmx/logops_n.asm, mpn/x86/k6/mmx/com_n.asm: Nailify.
19381         * mpz/inp_raw.c, mpz/out_raw.c: Nailify.
19382         * mpz/kronzu.c, mpz/kronuz.c, mpz/kronzs.c, mpz/kronsz.c: Nailify.
19383         * mpn/generic/divis.c, mpz/cong.c, mpz/cong_2exp.c: Nailify.
19384         * gmp-impl.h (NEG_MOD): Nailify.
19386         * gmp-impl.h, mpn/mp_bases.c: Add back GMP_NUMB_BITS==30 bases data.
19388         * mpfr/get_d.c: Patch from Paul to avoid problem with constant folding
19389         in gcc on OSF.
19391         * mpn/lisp/gmpasm-mode.el: Remove mention of defunct LF macro.
19393 2002-04-22  Torbjorn Granlund  <tege@swox.com>
19395         * demos/pexpr.c: Handle "binomial" operator.
19397         * mpz/cmp_ui.c: Move assignments of `up' out of conditionals.
19399         * mpn/generic/gcdext.c: Fix fencepost error in STAT code.
19401         * gmp-impl.h (mpn_com_n): Nailify.
19403         * tests/mpz/t-cdiv_ui.c: New file.
19404         * tests/mpz/Makefile.am (check_PROGRAMS): Add t-cdiv_ui.
19405         * mpz/cdiv_qr_ui.c: Nailify.
19406         * mpz/cdiv_q_ui.c: Nailify.
19407         * mpz/cdiv_r_ui.c: Nailify.
19408         * mpz/cdiv_ui.c: Nailify.
19410         * tests/misc/t-printf.c (CHECK_N): Add cast to allow `char' to be an
19411         unsigned type.
19412         * tests/misc/t-scanf.c: Likewise.
19414         * mpz/mul_i.h: Rework nails code to handle parameter overlap.
19416         * tests/mpz/t-set_f.c: Disable for nails.
19418 2002-04-21  Torbjorn Granlund  <tege@swox.com>
19420         * mpz/set_si.c: Add cast to support LONG_LONG_LIMB.
19421         * mpz/iset_si.c: Likewise.
19423         * mpz/bin_ui.c: Nailify.
19424         * mpz/bin_uiui.c: Nailify.
19426         * mpz/cmpabs_ui.c: Nailify.
19428         * tests/mpz/t-aorsmul.c: Nailify.
19429         * mpz/aorsmul_i.c (mpz_addmul_ui, mpz_submul_ui): Nailify better.
19431 2002-04-20  Torbjorn Granlund  <tege@swox.com>
19433         * tests/mpz/t-fdiv_ui.c: Check mpz_fdiv_ui.
19434         * tests/mpz/t-tdiv_ui.c: Check mpz_tdiv_ui.
19436         * mpz/tdiv_ui.c: Rewrite nails code.
19437         * mpz/fdiv_ui.c: Nailify.
19439         * tests/mpz/t-tdiv_ui.c: Check returned remainders.
19440         * tests/mpz/t-fdiv_ui.c: Merge in recent t-tdiv_ui changes.
19442         * mpz/tdiv_q_ui.c: Remove spurious TMP_* calls.
19444         * mpz/fdiv_qr_ui.c: Nailify.
19445         * mpz/fdiv_q_ui.c: Nailify.
19446         * mpz/fdiv_r_ui.c: Nailify.
19448         * mpz/get_si.c: Misc nailify changes to shut up compiler warnings.
19450         * mpz/ui_pow_ui.c: Fix typo in last change.
19452 2002-04-20  Kevin Ryde  <kevin@swox.se>
19454         * tests/misc/t-printf.c, tests/misc/t-scanf.c: Check all %n types.
19456         * mpn/x86/k7/mmx/divrem_1.asm, mpn/x86/p6/mmx/divrem_1.asm
19457         (mpn_preinv_divrem_1): New entrypoint.
19458         (mpn_divrem_1): Avoid a branch when testing high<divisor.
19459         * mpn/asm-defs.m4: Add define_mpn(preinv_divrem_1).
19460         * configure.in: Allow divrem_1.asm to provide mpn_preinv_divrem_1.
19462         * gmp-impl.h [nails]: Add #undefs of MUL_KARATSUBA_THRESHOLD etc, to
19463         override CPU gmp-mparam.h.  Remove JACOBI_BASE_METHOD override since
19464         it's nails-neutral.
19466         * tests/mpn/t-mp_bases.c: New file.
19467         * tests/mpn/Makefile.am (check_PROGRAMS): Add it.
19468         * tests/t-constants.c: Move MP_BASES constants checks to it.
19470         * mpn/mp_bases.c: Fix big_base_inverted values for nails.
19471         * gmp-impl.h (MP_BASES_BIG_BASE_INVERTED_10,
19472         MP_BASES_NORMALIZATION_STEPS_10): Fix nails values.
19473         (MP_BASES_*): Remove GMP_NUMB_BITS == 30 data.
19475         * mpn/x86/pentium/com_n.asm, mpn/x86/pentium/logops_n.asm: Add
19476         NAILS_SUPPORT indicators.
19478         * configure.in: Grep for NAILS_SUPPORT in cpu-specific code, and look
19479         in "nails" subdirectories, print path used.
19480         * mpn/asm-defs.m4 (NAILS_SUPPORT): New macro.
19482         * mpfr/mpfr-test.h: Include config.h, for the benefit of test programs
19483         not using gmp-impl.h.
19485 2002-04-19  Torbjorn Granlund  <tege@swox.com>
19487         * tests/mpz/t-scan.c: Nailify.
19489         * mpz/tdiv_qr_ui.c: Nailify.
19490         * mpz/tdiv_q_ui.c: Nailify.
19491         * mpz/tdiv_r_ui.c: Nailify.
19492         * mpz/tdiv_ui.c: Nailify.
19494         * mpz/cmp_ui.c: Nailify.
19496         * mpz/ui_pow_ui.c: Misc nailify changes to shut up compiler warnings.
19498         * mpz/scan0.c: Nailify.
19499         * mpz/scan1.c: Nailify.
19501         * tests/mpz/t-sizeinbase.c (mpz_fake_bits): Nailify.
19503 2002-04-18  Torbjorn Granlund  <tege@swox.com>
19505         * mpz/aorsmul_i.c: Nailify.
19507         * mpz/cmp_si.c: Nailify (botched).
19509         * mpz/ui_pow_ui.c: Nailify.
19511         * gmp-h.in (__GMPZ_FITS_UTYPE_P): Nailify.
19513         * mpz/fits_s.h: Nailify.
19515         * tests/mpz/bit.c (check_tstbit): Nailify.
19517         From Paul Zimmermann:
19518         * mpn/generic/sqrtrem.c: Nailify.
19520         * mpz/n_pow_ui.c: Nailify.
19522         * mpz/cfdiv_r_2exp.c: Nailify.
19524         * randraw.c (lc): Undo: Let mpn_rshift put result in place to avoid
19525         extra MPN_COPY.
19527 2002-04-17  Torbjorn Granlund  <tege@swox.com>
19529         * mpz/clrbit.c: Add two GMP_NUMB_MASK masks after addition.
19531         * mpn/generic/random2.c (LOGBITS_PER_BLOCK): Decrease to 4.
19533         * gmp-impl.h (nail DIV_DC_THRESHOLD): Decrease to 50 to allow fast
19534         division.
19536         * mpn/generic/random2.c: Nailify.
19538         * mpz/fac_ui.c: Nailify.
19540         * mpz/mul_i.h: #if ... #endif code block to shut up gcc warnings.
19542         * mpn/generic/sqrtrem.c: Adopt to GNU coding standards.
19543         (mpn_dc_sqrtrem): New name for mpn_dq_sqrtrem.
19544         Partial nailification.
19546         * configure.in: As a temporary hack, clear extra_functions for nails
19547         builds.
19549         * gmp-h.in (mpz_get_ui): #if ... #endif else code block to shut up gcc
19550         warnings.
19552 2002-04-17  Kevin Ryde  <kevin@swox.se>
19554         * texinfo.tex: Update to 2002-03-26.08 per texinfo 4.2.
19555         * gmp.texi: Must have @top in @ifnottex (or @contents doesn't come out
19556         in one run).
19558         * mpn/generic/scan0.c, mpn/generic/scan1.c: Nailify.
19560         * tests/mpn/t-scan.c: New file.
19561         * tests/mpn/Makefile.am (check_PROGRAMS): Add it.
19563         * tests/refmpn.c, tests/tests.h (refmpn_tstbit): Use unsigned long for
19564         bit index.
19565         (refmpn_setbit, refmpn_clrbit, refmpn_scan0, refmpn_scan1): New
19566         functions.
19568         * mpfr/cmp_ui.c (mpfr_cmp_si_2exp): Fix b==0 i!=0 case.
19570 2002-04-17  Gerardo Ballabio <gerardo.ballabio@unimib.it>
19572         * gmpxx.h, mpfrxx.h: Remove mpfr_class bool combinations, remove
19573         mpfr_class::get_str2, use mp_rnd_t for rounding modes, use
19574         8*sizeof(double) for mpfr_t's holding doubles.
19576 2002-04-17  Torbjorn Granlund  <tege@swox.com>
19578         * mpz/powm.c: Nailify.
19579         * mpz/powm_ui.c: Nailify.
19581 2002-04-16  Torbjorn Granlund  <tege@swox.com>
19583         * mpz/hamdist.c: Nailify.
19584         * tests/misc.c (urandom): Nailify.
19586         * mpz/get_si.c: Nailify.
19587         * gmp-h.in (mpz_get_ui): Nailify.  Streamline (and probably upset
19588         memory checkers).
19590         * gmp-impl.h (mp_bases[10] values): Add versions for GMP_NUMB_BITS
19591         being 28, 60, and 63.
19592         * mpn/mp_bases.c: Add tables for GMP_NUMB_BITS being 28, 60, and 63.
19594         * mpz/iset_si.c: Nailify.
19595         * mpz/iset_ui.c: Nailify
19597         * tests/mpz/convert.c (main): Print test number in error message.
19599         * mpn/generic/get_str.c (mpn_sb_get_str): Shift up `frac' into nails
19600         field after bignum division.
19602 2002-04-16  Kevin Ryde  <kevin@swox.se>
19604         * gmp-h.in, gmp-impl.h (GMP_NAIL_MASK): Move to gmp.h.
19606         * gmp.texi: Use @documentdescription and @copying, per texinfo 4.2.
19607         (Low-level Functions): Clarify mpn_gcd overlap requirements, rewrite
19608         mpn_set_str description, add nails section.
19609         (C++ Interface General): Remove bool from types that mix with classes.
19610         (Language Bindings): Add STklos, GNU Smalltalk, Regina.
19611         (Binary to Radix, Radix to Binary): Describe new code.
19612         (Assembler Cache Handling): More notes, mostly by Torbjorn.
19614         * macos/configure (%vars): Remove __GMP from substitutions, per change
19615         to main configure.
19617         * mpn/generic/dive_1.c: Nailify.
19618         * mpn/generic/mode1o.c: Nailify, remove bogus ASSERT in commented-out
19619         alternate implementation.
19620         * gmp-impl.h (SUBC_LIMB): New macro.
19622         * tests/devel/try.c (validate_divexact_1): Correction to compare.
19623         (udiv_qrnnd): New testing.
19624         (SHIFT_LIMIT): Nailify.
19625         (-b): New option, remove spurious "H" from getopt string.
19627         * mpz/clrbit.c: Nailify.
19628         * tests/mpz/t-hamdist.c: Nailify.
19629         * gmp-impl.h (MPN_FIB2_SIZE): Nailify.
19630         (PP): Nailify conditionals.
19631         * tests/mpz/t-fib_ui.c (MPZ_FIB_SIZE_FLOAT): Nailify.
19633         * configure.in, acinclude.m4: Establish GMP_NAIL_BITS and
19634         GMP_LIMB_BITS for gmp-h.in configure tests.
19636         * mpfr/*, configure.in: Update to final mpfr 2.0.1.
19637         * mpfr/acinclude.m4 (MPFR_CONFIGS): Use $host, not uname stuff.
19638         * mpfr/tests/tout_str.c: Patch from Paul for denorm fprintf tests.
19640 2002-04-15  Torbjorn Granlund  <tege@swox.com>
19642         * mpn/generic/divrem_1.c (EXTRACT): Remove.
19644         * tests/mpz/t-tdiv_ui.c (dump_abort): Accept argument for error string.
19646         * mpz/rrandomb.c: Nailify.  Needs further work.
19648         * mpn/generic/mod_1.c: Nailify.
19650         * gmp-impl.h: Set various *_THRESHOLD values to be used for nails to
19651         avoid not yet qualified algorithms.
19652         (MPZ_CHECK_FORMAT): Check that nail part is zero.
19654         * tests/mpz/t-mul.c (main): Test squaring even for huge operands.
19655         (base_mul): Nailify.
19656         (dump_abort): Accept argument for error string.  Print product
19657         difference.
19659         * mpn/generic/set_str.c: Nailify.
19661         * gmp-h.in (__GMPN_ADD, __GMPN_SUB): Nailify.
19663 2002-04-14  Torbjorn Granlund  <tege@swox.com>
19665         * randraw.c (lc): Return non-nonsense return value for seed=0 case.
19666         Check for m2exp being non-zero early; remove all other tests of m2exp.
19667         Remove redundant MPN_ZERO call.
19668         Let mpn_rshift put result in place to avoid extra MPN_COPY.
19669         Remove confusing comment before function `lc' describing BBS algorithm.
19670         Misc simplification and cleanups.
19671         Nailify.  Needs further work.
19673         * mpz/set_si.c: Nailify.
19674         * mpz/set_ui.c: Nailify.
19675         * mpz/mul_i.h: Nailify.
19677         * tests/mpz/t-mul_i.c: Actually test _ui routines.  Add some more test
19678         values.
19680         * mpn/generic/mul_n.c: Finish nailifying toom3 code.
19682 2002-04-13  Kevin Ryde  <kevin@swox.se>
19684         * mpfr/*: Update to another new mpfr 2.0.1.
19685         * configure.in, Makefile.am, mpfr/Makefile.am, mpfr/tests/Makefile.am:
19686         Use MPFR_CONFIGS macro, establish separate MPFR_CFLAGS for mpfr build.
19688         * mpfr/tests/Makefile.am: Correction to convenience rule for libmpfr.a.
19690 2002-04-11  Kevin Ryde  <kevin@swox.se>
19692         * mpfr/set_q.c: gmp-impl.h before mpfr.h to avoid _PROTO redefine.
19694         * mpfr/*, configure.in: Update to new mpfr 2.0.1.
19696         * tests/refmpn.c (refmpn_udiv_qrnnd, refmpn_divmod_1c_workaround):
19697         Fixes for nails.
19699         * tests/t-constants.c (MODLIMB_INVERSE_3): Nailify tests.
19700         (MP_BASES_BIG_BASE_INVERTED_10, MP_BASES_NORMALIZATION_STEPS_10): Only
19701         check these under USE_PREINV_DIVREM_1.
19702         * tests/t-modlinv.c: Nailify tests.
19704 2002-04-11  Gerardo Ballabio <gerardo.ballabio@unimib.it>
19706         * gmpxx.h: Remove bool combinations, remove mpf_class::get_str2, only
19707         need <iosfwd> now.
19709 2002-04-11  Torbjorn Granlund  <tege@swox.com>
19711         * mpn/generic/diveby3.c: Nailify.
19712         * gmp-impl.h (MODLIMB_INVERSE_3): Nailify.
19714         * mpn/generic/mul_n.c: Nailify Toom3 code.
19716 2002-04-10  Kevin Ryde  <kevin@swox.se>
19718         * gmp-impl.h (MPN_KARA_MUL_N_MINSIZE, MPN_KARA_SQR_N_MINSIZE): Set to
19719         3, as needed by nails case.
19721         * mpn/generic/addmul_1.c, mpn/generic/submul_1.c [nails]: Fix vl
19722         assert, add rp,n and up,n asserts.
19724         * mpfr/Makefile.am: Add new mpfr-math.h, install mpf2mpfr.h.
19726 2002-04-10  Torbjorn Granlund  <tege@swox.com>
19728         * mpn/generic/divrem_1.c: Nailify.  Update mp_size_t variables to use
19729         `n' suffix instead of `size' suffix.
19730         * mpn/generic/divrem_2.c: Likewise.
19731         * mpn/generic/sb_divrem_mn.c: Nailify.
19732         * mpn/generic/tdiv_qr.c: Nailify.
19733         (SHL): Remove silly macro.
19735         * mpn/generic/mul_n.c (mpn_kara_mul_n): Replace open-coded increment by
19736         mpn_incr_u call.  Handle nails in ws[n] increment.
19737         * mpn/generic/mul_n.c (mpn_kara_sqr_n): Likewise.
19739         * gmp-h.in (GMP_NUMB_MASK): New #define.
19740         (__GMPN_AORS_1): Add version for nails.
19742         * gmp-impl.h (GMP_NUMB_MASK): Comment out, now in gmp.h.
19743         (mpn_incr_u): Don't assume `incr' is non-zero.
19744         (mpn_decr_u): Similarly.
19746 2002-04-09  Kevin Ryde  <kevin@swox.se>
19748         * mpfr/*, configure.in: Update to mpfr 2.0.1.
19750         * tests/refmpn.c (refmpn_mul_1c, lshift_make): Corrections for nails.
19751         * tssts/refmpn.c, tests/tests.h (refmpn_cmp_allowzero): New function.
19753         * mpn/generic/mul_1.c [nails]: Fix vl assert, add {up,n} assert.
19755         * mpn/pa32/hppa1_1/pa7100/addmul_1.asm,
19756         mpn/pa32/hppa1_1/pa7100/submul_1.asm: Rename "size" define, to avoid
19757         ELF .size directive.  Reported by LaMont Jones.
19759         * tests/mpz/t-set_si.c: Add nails support.
19761 2002-04-05  Torbjorn Granlund  <tege@swox.com>
19763         * gmp-impl.h: Replace nail mpn_incr_u, mpn_decr_u with faster versions.
19764         (mp_bases[10] values): Check GMP_NUMB_BITS instead of BITS_PER_MP_LIMB.
19765         Add GMP_NUMB_BITS == 30 version.
19766         (__gmp_doprnt, etc): Remove parameter names.
19768         * mpn/generic/mul_n.c: Nailify Karatsuba code.
19769         * mpn/generic/get_str.c: Nailify.
19770         * mpn/generic/sqr_basecase.c: Nailify.
19771         * mpn/generic/lshift.c: Nailify.
19772         * mpn/generic/rshift.c: Likewise.
19773         * mpn/generic/add_n.c: Nailify.  Revamp non-nail code.
19774         * mpn/generic/sub_n.c: Likewise.
19775         * mpn/generic/mul_1.c: Likewise.
19776         * mpn/generic/addmul_1.c: Likewise.
19777         * mpn/generic/submul_1.c: Likewise.
19779 2002-04-02  Kevin Ryde  <kevin@swox.se>
19781         * gmp-impl.h (BSWAP_LIMB_FETCH, BSWAP_LIMB_STORE) [powerpc]:
19782         Corrections to constraints, and restrict to bigendian.
19784 2002-03-31  Kevin Ryde  <kevin@swox.se>
19786         * tests/mpz/dive.c: Better diagnostics.
19788         * tests/devel/try.c (mpn_get_str, mpn_umul_ppmm_r): New tests.
19790         * tests/misc.c, tests/tests.h (byte_diff_lowest, byte_diff_highest):
19791         New functions.
19793         * tests/t-bswap.c: New file.
19794         * tests/Makefile.am (check_PROGRAMS): Add it.
19796         * tests/mpn/t-aors_1.c, tests/mpn/t-iord_u.c: Add nails support.
19798         * gmp-impl.h (MPN_IORD_U) [x86]: Eliminate unnecessary jiord and iord,
19799         rename "n" to incr per generic versions, restrict to nails==0.
19800         (mpn_incr_u, mpn_decr_u): Add nails support.
19801         (GMP_NAIL_LOWBIT, GMP_NUMB_MAX): New macros.
19803         * tests/trace.c, tests/tests.h (byte_trace, byte_tracen): New
19804         functions.
19805         * tests/trace.c: Handle NULL operands.
19807         * tests/refmpn.c, tests/devel/try.c, tune/speed.c: Add preliminary
19808         nail support.
19810         * tests/refmpn.c, test/tests.h (byte_overlap_p, refmpn_equal_anynail,
19811         refmpn_umul_ppmm_r, refmpn_udiv_qrnnd_r, refmpn_get_str,
19812         refmpn_bswap_limb, refmpn_random, refmpn_random2, refmpn_bswap_limb):
19813         New functions.
19815         * gmp-impl.h, tests/refmpn.c (ASSERT_LIMB): Renamed from
19816         ASSERT_MP_LIMB_T.
19818         * mpn/x86/*/*.asm, mpn/powerpc32/*/*.asm, mpn/powerpc64/*/*.asm: Put
19819         speeds after the copyright notice, so as to keep that clear.
19821 2002-03-29  Kevin Ryde  <kevin@swox.se>
19823         * configure.in (powerpc*-*-aix*): Correction to xlc -qarch selection,
19824         for 32-bit mode.
19826 2002-03-28  Torbjorn Granlund  <tege@swox.com>
19828         * mpn: Fix spacing in many files.
19830         * mpn/generic/aorsmul_1.c: Split into addmul_1.c and submul_1.c.
19831         * mpn/generic/aors_n.c: Split into add_n.c and sub_n.c.
19833         * mpn/pa64/add_n.asm: Trim another 0.125 cycle/limb.  Fix a comment.
19834         * mpn/pa64/sub_n.asm: Likewise.
19836         * mpn/pa64/mul_1.asm: Change comclr, comb to proper forms cmpclr, cmpb.
19837         * mpn/pa64/addmul_1.asm: Likewise.
19838         * mpn/pa64/submul_1.asm: Likewise.
19840 2002-03-28  Kevin Ryde  <kevin@swox.se>
19842         * gmp.texi (Converting Integers): Fix type of exp in mpz_get_d_2exp,
19843         reported by epl@unimelb.edu.au.
19844         (References): Update Burnikel and Ziegler URL, reported by Keith
19845         Briggs.
19847         * gmp-h.in, mp-h.in, configure.in, acinclude.m4: Remove __GMP from
19848         AC_SUBSTs, since autoconf says leading "_" in makefile variables is
19849         not portable.
19851         * demos/expr/run-expr.c: Declare optarg, optind, opterr if necessary.
19852         * configure.in, demos/expr/expr-config-h.in: Configs for this.
19854 2002-03-27  Torbjorn Granlund  <tege@swox.com>
19856         * mpn/Makefile.am (TARG_DIST): Remove pa64w and hppa, add pa32.
19858         * configure.in (path_20w): Remove pa64w.
19860         * mpn/pa64/udiv_qrnnd.asm: Tweak for PA8000 performance comparative to
19861         that on PA8500.
19863 2002-03-26  Torbjorn Granlund  <tege@swox.com>
19865         * mpn/pa32: New name for mpn/hppa.
19866         * configure.in: Corresponding changes.
19868         * mpn/pa64/umul_ppmm.asm: New file, generalized for both 2.0N and 2.0W.
19869         * mpn/pa64/umul_ppmm.S: Remove.
19871         * mpn/pa64/udiv_qrnnd.asm: Generalize for both 2.0N and 2.0W.
19872         * mpn/pa64w/udiv_qrnnd.asm: Remove.
19874 2002-03-26  Kevin Ryde  <kevin@swox.se>
19876         * mpfr/tests/tdiv.c, mpfr/tests/tui_div.c: Don't depend on nan and inf
19877         handling in "double", for the benefit of alpha.
19879         * configure (hppa2.0w): Set path to "pa64w pa64".
19881         * acinclude.m4, configure.in (GMP_C_INLINE): New macro.
19882         * acinclude.m4 (GMP_H_EXTERN_INLINE): Use it, and fix "yes" handling.
19884 2002-03-25  Torbjorn Granlund  <tege@swox.com>
19886         * mpn/pa64w/add_n.s: Remove.
19887         * mpn/pa64w/sub_n.s: Remove.
19888         * mpn/pa64w/lshift.s: Remove.
19889         * mpn/pa64w/rshift.s: Remove.
19890         * mpn/pa64w/mul_1.S: Remove.
19891         * mpn/pa64w/addmul_1.S: Remove.
19892         * mpn/pa64w/submul_1.S: Remove.
19893         * mpn/pa64w/sqr_diagonal.asm: Remove.
19895         * mpn/pa64/mul_1.asm: New file with twice faster code; generalized
19896         for both 2.0N and 2.0W.
19897         * mpn/pa64/submul_1.asm: Likewise.
19898         * mpn/pa64/mul_1.S: Remove.
19899         * mpn/pa64/submul_1.S: Remove.
19901         * mpn/pa64/sqr_diagonal.asm: Generalize for both 2.0N and 2.0W.
19903         * mpn/pa64/add_n.asm: New file, generalized for both 2.0N and 2.0W.
19904         * mpn/pa64/sub_n.asm: Likewise.
19905         * mpn/pa64/lshift.asm: Likewise.
19906         * mpn/pa64/rshift.asm: Likewise.
19907         * mpn/pa64/add_n.s: Remove.
19908         * mpn/pa64/sub_n.s: Remove.
19909         * mpn/pa64/lshift.s: Remove.
19910         * mpn/pa64/rshift.s: Remove.
19912 2002-03-24  Kevin Ryde  <kevin@swox.se>
19914         * gmp-impl.h (BSWAP_LIMB_FETCH, BSWAP_LIMB_STORE): New macros.
19915         * mpz/inp_raw.c, mpz/out_raw.c: Use them.
19916         * acconfig.h (HAVE_HOST_CPU): Add some powerpc types.
19918         * mpn/powerpc32/750/com_n.asm: New file.
19920         * mpfr/tests/tout_str.c: Disable random tests, since they fail on
19921         alphaev56-unknown-freebsd4.1 and do nothing by default.
19923         * mpfr/tests/tsqrt.c: Don't depend on nan, inf or -0 in "double", for
19924         the benefit of alpha.
19925         * mpfr/sqrt.c: Clear nan flag on -0.
19927         * demos/factorize.c: Use mpn_random() instead of random(), to avoid
19928         portability problems.
19930         * demos/isprime.c (print_usage_and_exit): Declare as "void" to avoid
19931         warnings.
19933         * demos/pexpr.c (setup_error_handler): Corrections to sigstack code.
19935         * demos/calc/calc.y: Add some `;'s to make bison 1.34 happy.
19937 2002-03-23  Torbjorn Granlund  <tege@swox.com>
19939         * mpn/pa64/addmul_1.asm: New file with twice faster code; generalized
19940         for both 2.0N and 2.0W.
19942 2002-03-22  Kevin Ryde  <kevin@swox.se>
19944         * tune/time.c: Add SGI hardware counter measuring method, change some
19945         abort()s into ASSERT_FAIL()s.
19947         * configure.in (AC_CHECK_HEADERS): Add fcntl.h and sys/syssgi.h.
19948         (AC_CHECK_FUNCS): Add syssgi.
19950         * configure.in, mpfr/Makefile.am, mpfr/tests/Makefile.am: Use
19951         -mieee-with-inexact or -ieee_with_inexact for mpfr on alpha, so
19952         denorms work.
19954         * mpfr/isinteger.c: Fix a memory leak.
19956 2002-03-21  Torbjorn Granlund  <tege@swox.com>
19958         * tune/speed.c (struct choice_t): Make `r' an mp_limb_t.
19960 2002-03-21  Kevin Ryde  <kevin@swox.se>
19962         * configure.in (HAVE_LIMB_BIG_ENDIAN, HAVE_LIMB_LITTLE_ENDIAN): Use an
19963         AH_VERBATIM and better explanation.
19964         * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Similarly for the HAVE_DOUBLE
19965         constants.
19967         * gmp.texi (Number Theoretic Functions): Clarify sign of GCD returned
19968         by mpz_gcdext.
19970         * demos/pexpr.c, demos/pexpr-config-h.in, configure.in: Use an
19971         autoconf test for stack_t.
19973         * configure.in, gmp-h.in, mp-h.in, macos/configure, tests/mpz/reuse.c,
19974         tests/mpf/reuse.c: Use __GMP_LIBGMP_DLL to enable windows declspec,
19975         don't require _WIN32 (etc), remove __GMP_LIBGMP_SHARED and
19976         __GMP_LIBGMP_STATIC.
19978         * gmp-impl.h (mp_bases): Add __GMP_DECLSPEC, for the benefit of
19979         tests/t-constants.c.
19981         * tune/many.pl, tune/speed.h: Remove suffix hack for back.asm.
19983 2002-03-21  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
19985         * mpfr/sin_cos.c (mpfr_sin_cos): New file.
19986         * mpfr/mpfr.h, mpfr/mpfr.texi, mpfr/Makefile.am: Add it.
19987         * mpfr/tan.c: Fix sign in 2nd and 4th quadrants.
19989         * mpfr/log10.c: Fix hangs on certain inputs.
19991 2002-03-20  Torbjorn Granlund  <tege@swox.com>
19993         * demos/pexpr.c (setup_error_handler): Declare `s', the first
19994         sigaltstack parameter, using `stack_t' just on AIX.
19996 2002-03-19  Torbjorn Granlund  <tege@swox.com>
19998         * mpn/powerpc32/mul_1.asm: Use free caller-saves registers instead
19999         of the callee-saves r30 and r31.
20001 2002-03-19  Kevin Ryde  <kevin@swox.se>
20003         * tune/freq.c (freq_proc_cpuinfo): Recognise powerpc "clock", where
20004         previously got the wrong result from "bogomips".
20006         * mpn/powerpc32/add_n.asm, mpn/powerpc32/sub_n.asm: Rewrite, faster on
20007         750, and smaller too.
20008         * mpn/powerpc32/*.asm: Use L(), add some measured speeds.
20010         * longlong.h (count_trailing_zeros) [vax]: Add a version using ffs,
20011         but commented out.
20013 2002-03-17  Kevin Ryde  <kevin@swox.se>
20015         * tune/speed.c, tune/speed.h, tune/common.c, many.pl: Use optional
20016         ".r" to specify operand overlaps for mpn_add_n, mpn_sub_n and logops.
20017         Remove mpn_add_n_inplace and mpn_add_n_self.
20018         * tune/many.pl: Fix MULFUNC_PROLOGUE parsing.
20020         * gmp.texi (Known Build Problems): Note `make' problem with long
20021         libgmp.la dependencies list.
20023         * printf/doprnt.c, scanf/doscan.c (%zn): Remove test of non-existent
20024         HAVE_SIZE_T, just use size_t unconditionally.
20025         * printf/doprnt.c (%zd etc): Fix 'z' type parsing.
20026         * tests/misc/t-printf.c, tests/misc/t-scanf.c: More tests.
20028         * configure.in: Use AC_COPYRIGHT.
20029         Add m4_pattern_allow(GMP_MPARAM_H_SUGGEST).
20031         * tune/Makefile.am (libdummy.la): Remove this, sqr_basecase.c already
20032         gets an ansi2knr rule from nodist_tuneup_SOURCES.
20034         * longlong.h (count_leading_zeros) [pentiumpro gcc<3]: Test
20035         HAVE_HOST_CPU_i686 too.
20037         * mpz/out_raw.c (HTON_LIMB_STORE): Fix a typo in big endian #if.
20039 2002-03-14  Kevin Ryde  <kevin@swox.se>
20041         * mpn/x86/pentium/com_n.asm, mpn/x86/pentium/logops_n.asm,
20042         mpn/x86/k6/mmx/com_n.asm: Add nails support.
20044         * texinfo.tex: Update to 2002-03-01.06 (per texinfo 4.1).
20045         * gmp.texi (@ma): Remove, @math does this now.
20047         * mpfr/tests/reuse.c: Clear op1 and op2 flags only in their respective
20048         outer loops.
20050         * configure.in (--enable-cxx): Correction to the default stated in the
20051         help string.
20052         (power*-*-aix*, not powerpc): Use aix.m4, don't run
20053         GMP_ASM_POWERPC_R_REGISTERS or use powerpc-defs.m4.
20055 2002-03-13  Torbjorn Granlund  <tege@swox.com>
20057         * mpn/sparc32/gmp-mparam.h: New file.
20059 2002-03-13  Kevin Ryde  <kevin@swox.se>
20061         * demos/expr/exprfr.c: More mpfr functions, corrections to agm, cos,
20062         sin, rename log2 constant to loge2 to make room for log2 function.
20063         * demos/expr/t-expr.c: More tests.
20065         * mpz/inp_raw.c (NTOH_LIMB_FETCH) [generic 16bit]: Remove spurious "+".
20067         * mpfr/acos.c: Avoid a memory leak for certain operands.
20069         * acinclude.m4, configure.in (GMP_C_DOUBLE_FORMAT): New macro.
20071         * acinclude.m4 (GMP_HPC_HPPA_2_0, GMP_ASM_UNDERSCORE,
20072         GMP_ASM_ALIGN_LOG, GMP_ASM_LSYM_PREFIX, GMP_ASM_W32, GMP_ASM_X86_MMX):
20073         Change ac_objext to OBJEXT, which is the documented variable.
20075         * config.guess (powerpc*-*-*): Use #ifdef on constants POWER_630 etc
20076         in the AIX test, since old versions don't have them all.
20078 2002-03-11  Kevin Ryde  <kevin@swox.se>
20080         * configure.in (LIBC211): New AC_DEFINE, for mpfr.
20082         * configure.in (mips*-*-*): Support ABI=o32 on irix 6, allow gcc 2.7.2
20083         to fall back on it, but detect it doesn't work with gcc 2.95.  Use
20084         single mips-defs.m4 for both mips32 and mips64.
20085         * acinclude.m4 (GMP_GCC_MIPS_O32): New macro.
20086         * mpn/mips32/mips-defs.m4: Renamed from mips.m4.
20087         * mpn/mips64/mips.m4: Remove (was a copy of mips32/mips.m4).
20089         * mpn/powerpc32/750: New directory.
20090         * configure.in (powerpc740, powerpc750, powerpc7400): Use it.
20091         * mpn/powerpc32/750/gmp-mparam.h: New file.
20093         * config.sub, gmp.texi (ultrasparc1): Remove this, just use plain
20094         "ultrasparc".
20096 2002-03-10  Kevin Ryde  <kevin@swox.se>
20098         * mpfr: Update to 20020301, except internal_ceil_exp2.c,
20099         internal_ceil_log2.c, internal_floor_log2.c renamed to i_ceil_exp2.c,
20100         i_ceil_log2.c, i_floor_log2.c to be unique in DOS 8.3.  And sqrtrem.c
20101         removed since no longer required.
20102         * mpfr/mpfr.texi: Fix some formatting.
20103         * mpfr/tests/reuse.c: Patch by Paul to fix test4 variable handling.
20104         * mpfr/sinh.c: Patch by Paul to fix err calculation when t==0.
20105         * mpfr/tests/tget_d.c: Disable until portability of rnd_mode.c can be
20106         sorted out.
20108         * configure.in (powerpc*-*-*): Separate gcc and xlc cpu flags setups
20109         for clarity.
20111         * longlong.h (count_leading_zeros, count_trailing_zeros) [x86_64]: New
20112         macros.
20114 2002-03-07  Kevin Ryde  <kevin@swox.se>
20116         * gmp.texi (Build Options): Note all the ultrasparcs accepted.
20117         (Language Bindings): Add Math::BigInt::GMP.
20119         * config.sub (ultrasparc2i): New cpu type.
20120         * config.guess (sparc-*-*, sparc64-*-*): Add some exact CPU detection.
20122 2002-03-05  Kevin Ryde  <kevin@swox.se>
20124         * longlong.h (count_leading_zeros, count_trailing_zeros) [alphaev67,
20125         alphaev68]: Use ctlz and cttz insns (as per gcc longlong.h).
20126         (count_leading_zeros) [sparclite]: Fix parameter order (as per gcc
20127         longlong.h).
20128         * acconfig.h (HAVE_HOST_CPU_alphaev68): New define.
20130         * config.guess [i?86-*-*]: Suppress error messages if compiler not
20131         found or test program won't run.
20132         [rs6000-*-*, powerpc-*-*]: Force code alignment for mfpvr test.
20134 2002-03-04  Torbjorn Granlund  <tege@swox.com>
20136         * mpn/generic/pow_1.c: New file.
20138 2002-03-03  Kevin Ryde  <kevin@swox.se>
20140         * gmp.texi (Build Options): Note compiler must be able to fully link,
20141         add alphapca57 and alphaev68, give a clearer example of MPN_PATH
20142         (Debugging): Add notes on valgrind.
20143         (C++ Formatted Output): Clarify mpf showbase handling, in particular
20144         note "00.4" in octal.
20146         * printf/doprntf.c: Do a showbase on octal float fractions, for
20147         instance "00.4" where previously it gave "0.4".
20148         * tests/cxx/t-ostream.cc: Update.
20150         * gmp-h.in, mp-h.in (__GMP_DECLSPEC, __GMP_DECLSPEC_XX): Test
20151         __WIN32__ for Borland C, reported by "delta trinity".
20153         * gmp-h.in, mp-h.in: Use <cstddef> for size_t under C++, suggested by
20154         Hans Aberg some time ago.
20155         * gmp-h.in (<iosfwd>): Move to top of file for clarity.
20157         * Makefile.am (libgmpxx_la_SOURCES): Use dummy.cc to force C++.
20158         (CXX_OBJECTS): Add osfuns$U.lo.
20159         * dummy.cc: New file.
20160         * cxx/Makefile.am (INCLUDES): Use __GMP_WITHIN_GMPXX.
20161         (libcxx_la_SOURCES): Add osfuns.cc.
20162         * gmp-h.in (__GMP_DECLSPEC_XX): New define, use it on libgmpxx funs.
20163         * gmp-impl.h: Add __GMP_DECLSPEC to libgmp functions used by libgmpxx.
20165         * longlong.h (COUNT_TRAILING_ZEROS_TIME): Remove, no longer used.
20167         * gmp-impl.h (MPN_SIZEINBASE, MPN_SIZEINBASE_16): Correction to
20168         __totbits for nails.
20170         * gmp-impl.h (JACOBI_LS0): Test size before limb, to pacify valgrind.
20171         (JACOBI_0LS): Ditto, and fix parens around arguments.
20173         * mpn/x86/x86-defs.m4 (call_mcount): Add a counter to make data labels
20174         unique, since simplified L() scheme no longer gives that effect.
20175         (notl_or_xorl_GMP_NUMB_MASK): New macro.
20176         Add m4_assert_numargs in a few places.
20178         * configure.in (*sparc*): Fix cycle counter setups for ABI=64.
20180 2002-02-28  Torbjorn Granlund  <tege@swox.com>
20182         * mpn/vax/gmp-mparam.h: New file.
20184 2002-02-28  Kevin Ryde  <kevin@swox.se>
20186         * gmp-h.in (gmp_errno, gmp_version): Move into extern "C" block,
20187         reported by librik@panix.com.
20189         * gmp-h.in, mp-h.in (__GMP_DECLSPEC_EXPORT, __GMP_DECLSPEC_IMPORT):
20190         Use __declspec(dllexport) and __declspec(dllimport) on Borland.
20191         * gmp-h.in (_GMP_H_HAVE_FILE): Test __STDIO_H for Borland.
20192         Reported by "delta trinity".
20194         * gmp-impl.h (va_copy): Fall back on memcpy, not "=".
20196         * mpn/generic/pre_mod_1.c: Add a comment about obsolescence.
20198         * tune/time.c (MICROSECONDS_P): Don't trust time differences of 1
20199         microsecond.
20201         * tests/cxx/t-ostream.cc: Use "const char *" not just "char *" for
20202         test data strings, avoids warnings on Sun CC.
20204 2002-02-27  Torbjorn Granlund  <tege@swox.com>
20206         * configure.in: For sparc under solaris2.[7-9], pass -fsimple=1 to
20207         disable some crazy -fast optimizations.
20209 2002-02-25  Torbjorn Granlund  <tege@swox.com>
20211         * configure.in: For sparc under solaris2.[7-9], pass -fns=no to enable
20212         denorm handling under -fast.
20214 2002-02-25  Kevin Ryde  <kevin@swox.se>
20216         * configure.in (alpha*-*-*): Rearrange -mcpu selection for gcc,
20217         provide an ev67 -> ev6 fallback.  Fix -arch,-tune selection for DEC C.
20218         Allow ~ for space in optional options lists.
20220         * tune/tuneup.c (tune_preinv_divrem_1): Compare against an assembler
20221         mpn_divrem_1 if it exists, not the generic C mpn_divrem_1_div.
20222         (tune_preinv_mod_1): Ditto with mpn_mod_1.
20224         * tune/time.c (DIFF_SECS_ROUTINE): Eliminate the unused "type"
20225         parameter, try to make the code a bit clearer.
20227         * tune/freq.c: Reduce the period measured for cycles versus
20228         gettimeofday, add cycles versus microsecond getrusage.
20230         * mpz/array_init.c: "i" should be mp_size_t, noticed by E. Khong.
20232 2002-02-24  Torbjorn Granlund  <tege@swox.com>
20234         * configure.in: For sparc under solaris2.[7-9], pass -fast instead of
20235         other optimization options.
20237 2002-02-23  Kevin Ryde  <kevin@swox.se>
20239         * mpn/asm-defs.m4 (GMP_NUMB_MASK): New macro.
20240         (PROLOGUE, EPILOGUE): Relax quoting for the benefit of tune/many.pl
20241         when GSYM_PREFIX non-empty.
20243         * tune/time.c, tune/speed.h (speed_time_init): Include clock tick
20244         period in speed_time_string.
20245         * tune/time.c, configure.in (clock_gettime): New measuring method.
20247         * tune/many.pl: Add -DHAVE_NATIVE_mpn_foo to C objects, to avoid
20248         conflicts with a macro version in gmp-impl.h, eg. mpn_com_n.
20250 2002-02-22  Torbjorn Granlund  <tege@swox.com>
20252         * demos/pexpr.c: Increase RLIMIT_STACK to 4Mibyte.
20254 2002-02-22  Kevin Ryde  <kevin@swox.se>
20256         * tune/tuneup.c: Don't confuse gcc with mipspro cc in diagnostic.
20258 2002-02-20  Torbjorn Granlund  <tege@swox.com>
20260         * configure.in (mips*-*-irix[6789]*]): Set `extra_functions_n32', not
20261         `extra_functions'.
20263         * printf/doprnt.c: Conditionally include inttypes.h.
20264         * printf/repl-vsnprintf.c: Likewise.
20265         * scanf/doscan.c: Likewise.
20267 2002-02-20  Kevin Ryde  <kevin@swox.se>
20269         * mpn/x86/k7/mmx/com_n.asm: New file.
20271         * mpz/n_pow_ui.c (SWAP_RP_TP): Use ASSERT_CODE on ralloc and talloc,
20272         to ensure they needn't live past the initial allocs in a normal build.
20274         * mpn/generic/mod_34lsub1.c: Note this is for internal use.
20276 2002-02-19  Torbjorn Granlund  <tege@swox.com>
20278         * Clean up *_THRESHOLD names.  Many files affected.
20280         * mpn/mips32: Asm-ify 32-bit mips code.
20281         Move files from `mips2' to `mips32' directory.
20282         * mpn/mips64: Move files from `mips3' to `mips64' directory.
20283         * configure.in: Change `mips2' => `mips32' and `mips3' => `mips64'.
20285 2002-02-19  Kevin Ryde  <kevin@swox.se>
20287         * acinclude.m4, configure.in (GMP_PROG_LEX): New macro.
20289         * tune/tuneup.c (one): Start next threshold at a max of previous ones,
20290         in order to get a good starting point for TOOM3_SQR_THRESHOLD if
20291         KARATSUBA_SQR_THRESHOLD is 0 (ie. using mpn_mul_basecase only).
20293         * configure.in, tune/tuneup.c (GMP_MPARAM_H_SUGGEST): New AC_DEFINE
20294         replacing GMP_MPARAM_H_FILENAME.  Suggest a new file in a cpu specific
20295         subdirectory rather than mpn/generic.
20297         * acinclude.m4 (POWERPC64_PATTERN): New macro.
20298         * configure.in (powerpc*-*-*): Use it.
20299         (powerpc*-*-*): Use umul in 32L and aix64.
20300         (mips*-*-*): Use umul, 32 and 64 bit versions.
20302 2002-02-18  Torbjorn Granlund  <tege@swox.com>
20304         * longlong.h: Add basic x86-64 support.
20306 2002-02-17  Torbjorn Granlund  <tege@swox.com>
20308         * demos/pexpr.c: Support `-X' for upper case hex, make `-x' output
20309         lower case hex.
20311         * mpn/mips2/umul.s: Make it actually work.
20312         * mpn/mips3/umul.asm: New file.
20314         * mpn/mips2/gmp-mparam.h: New file.
20316 2002-02-16  Torbjorn Granlund  <tege@swox.com>
20318         * mpn/generic/get_str.c (mpn_sb_get_str): Round frac upwards after
20319         umul_ppmm calls.
20321 2002-02-16  Kevin Ryde  <kevin@swox.se>
20323         * config.guess (alpha-*-*): Do alpha exact cpu probes on any system,
20324         and only if configfsf.guess gives a plain "alpha".
20326         * acinclude.m4 (GMP_PROG_CC_WORKS): Detect a gcc 3.0.3 powerpc64
20327         linker invocation problem.
20329 2002-02-15  Torbjorn Granlund  <tege@swox.com>
20331         * mpn/generic/get_str.c (mpn_sb_get_str): For base 10, develop initial
20332         digits using umul_ppmm, then switch to plain multiplication.
20334         * config.guess: Rewrite Alpha subtype detection code for *bsd systems.
20336 2002-02-15  Kevin Ryde  <kevin@swox.se>
20338         * gmp.texi (Build Options): Note powerpc exact cpu types.
20339         (Debugging): Advertise DEBUG in memory.c.
20341         * config.sub, config.guess: Add some powerpc exact cpus.
20342         * configure.in: Add configs for them.
20344         * memory.c [__NeXT__]: Remove unused #define of "static".
20345         (__gmp_default_allocate, __gmp_default_reallocate): Print size if
20346         allocation fails, don't use perror.
20348         * gmp-h.in: g++ 3 demands __GMP_NOTHROW is before other attributes.
20350 2002-02-14  Torbjorn Granlund  <tege@swox.com>
20352         * mpn/alpha/mul_1.asm: Fix typo preventing build on T3E systems.
20354 2002-02-14  Kevin Ryde  <kevin@swox.se>
20356         * tune/tuneup.c (tune_set_str): Increase max_size, for the benefit of
20357         alpha.
20359         * macos/README: Bug reports to bug-gmp@gnu.org, clarify MacOS X a bit.
20361         * mpn/generic/gcdext.c [WANT_GCDEXT_ONE_STEP]: Add missing TMP_FREE.
20363         * tune/speed.c, tune/tuneup.c: Allow for speed_cycletime of 0.0 in
20364         some diagnostic printouts.
20365         * tune/time.c (speed_cycletime): Note can be 0.0.
20367 2002-02-12  Torbjorn Granlund  <tege@swox.com>
20369         * mpn/alpha/mul_1.asm: Add mpn_mul_1c entry.
20371         * mpn/pa64w/sqr_diagonal.asm: Use L() for labels.
20373 2002-02-11  Torbjorn Granlund  <tege@swox.com>
20375         * mpn/generic/get_str.c (mpn_sb_get_str): Change declaration of rp to
20376         accommodate tuneup compiles.
20378 2002-02-11  Kevin Ryde  <kevin@swox.se>
20380         * mpn/alpha/default.m4, mpn/alpha/unicos.m4 (PROLOGUE_cpu): Add
20381         noalign option.
20382         * mpn/alpha/default.m4 (PROLOGUE_cpu): use ALIGN instead of ".align".
20384         * gmp.texi (Debugging): Notes on Checker.
20385         (Other Multiplication): Move note on float FFTs to here.
20386         (Assembler Floating Point): New text and revisions by Torbjorn,
20387         picture formatting by me.
20388         Simplify tex pictures elsewhere a bit, share heights, eliminate some
20389         gaps at line joins.
20391 2002-02-11  Torbjorn Granlund  <tege@swox.com>
20393         * mpn/generic/get_str.c (mpn_sb_get_str): Rewrite to generate fraction
20394         limbs and use multiplication for digit development.  Trim allocation of
20395         buf.  Get rid of code for !USE_MULTILIMB.
20397 2002-02-10  Torbjorn Granlund  <tege@swox.com>
20399         * mpn/generic/set_str.c (mpn_set_str): Undo this:
20400         Change invocations of mpn_add_1 to instead use mpn_incr_u.
20402         * tests/mpz/convert.c: Free str only after it is used in error message.
20404         * mpn/generic/get_str.c (mpn_sb_get_str): Combine tail code for base 10
20405         and generic bases.
20407         * mpn/mp_bases.c: Add entries for base 256.  Remove __ prefix from
20408         table name.
20409         * gmp-impl.h (__mp_bases): Remove superfluous mp_ part of name, making
20410         it __gmpn_bases instead of __gmpn_mp_bases.
20411         (mp_bases): New #define.
20412         * tune/speed.h (SPEED_ROUTINE_MPN_SET_STR): Allow bases up to 256.
20413         (SPEED_ROUTINE_MPN_GET_STR): Likewise.
20415 2002-02-09  Torbjorn Granlund  <tege@swox.com>
20417         * mpn/generic/set_str.c (mpn_set_str): Use mpn_mul_1c if available.
20418         Change invocations of mpn_add_1 to instead use mpn_incr_u.
20420 2002-02-09  Kevin Ryde  <kevin@swox.se>
20422         * mpz/array_init.c, mpz/cfdiv_q_2exp.c, mpz/cfdiv_r_2exp.c,
20423         mpz/cong_2exp.c, mpz/divis_2exp.c, mpz/hamdist.c, mpz/init2.c,
20424         mpz/mul_2exp.c, mpz/realloc2.c, mpz/scan0.c, mpz/scan1.c,
20425         mpz/setbit.c, mpz/tdiv_q_2exp.c, mpz/tdiv_r_2exp.c, mpz/tstbit.c,
20426         mpz/urandomb.c: Use GMP_NUMB_BITS.
20428         * mpz/iset_str.c [__CHECKER__]: Store a dummy value to the low limb to
20429         stop it appearing uninitialized.
20431         * gmp-h.in (__GMP_NOTHROW): New macro.
20432         (mp_set_memory_functions, mpz_cmp, mpz_cmp_si, mpz_cmp_ui, mpz_cmpabs,
20433         mpz_cmpabs_ui, mpz_congruent_2exp_p, mpz_divisible_2exp_p,
20434         mpz_fits_sint_p, mpz_fits_slong_p, mpz_fits_sshort_p, mpz_fits_uint_p,
20435         mpz_fits_ulong_p, mpz_fits_ushort_p, mpz_get_si, mpz_get_ui,
20436         mpz_getlimbn, mpz_hamdist, mpz_popcount, mpz_scan0, mpz_scan1,
20437         mpz_size, mpz_sizeinbase, mpz_swap, mpz_tstbit, mpq_equal, mpq_swap,
20438         mpf_cmp, mpf_cmp_si, mpf_cmp_ui, mpf_fits_sint_p, mpf_fits_slong_p,
20439         mpf_fits_sshort_p, mpf_fits_uint_p, mpf_fits_ulong_p,
20440         mpf_fits_ushort_p, mpf_get_default_prec, mpf_get_prec, mpf_get_si,
20441         mpf_get_ui, mpf_integer_p, mpf_set_default_prec, mpf_set_prec_raw,
20442         mpf_size, mpf_swap, mpn_add_1, mpn_cmp, mpn_hamdist, mpn_popcount,
20443         mpn_sub_1): Use it.
20445         * gmp-impl.h (MPN_SIZEINBASE, MPN_SIZEINBASE_16): New macros from
20446         mpn_sizeinbase, and use GMP_NUMB_BITS.
20447         * mpz/get_str.c, mpz/sizeinbase.c, mpbsd/mout.c, tune/speed.h: Use
20448         MPN_SIZEINBASE.
20449         * mpbsd/mtox.c: Use MPN_SIZEINBASE_16.
20451         * configure.in, mpn/Makefile.am, gmp-impl.h (mpn_sizeinbase): Remove.
20452         * mpn/generic/sizeinbase.c: Remove file.
20454         * gmp-impl.h (MPN_GET_STR_SIZE): Remove.
20455         * tests/mpn/t-g_str_size.c: Remove file.
20456         * tests/mpn/Makefile.am: Update.
20458         * Makefile.am (dist-hook): Don't distribute cvs merge ".#" files.
20460 2002-02-08  Torbjorn Granlund  <tege@swox.com>
20462         * configure.in: Override extra_functions for all sparcv8 systems, not
20463         just supersparc.
20465 2002-02-06  Kevin Ryde  <kevin@swox.se>
20467         * tune/tuneup.c (tune_mul, tune_sqr): Disable FFTs until tuned.
20468         * tune/speed.h (SPEED_ROUTINE_MPN_SET_STR): Fix memory clobber in
20469         destination cache priming.
20471         * printf/doprnt.c: Fix parsing of %s and %p conversions.
20472         * tests/misc/t-printf.c (check_misc): Add some tests.
20474 2002-02-03  Torbjorn Granlund  <tege@swox.com>
20476         * mpn/sparc32/v8/udiv.asm: New file, from v8/supersparc.
20478         * mpn/generic/set_str.c: Rename indigits_per_limb => chars_per_limb.
20479         Remove redundant chars_per_limb.  Reverse 4 loops in basecase code for
20480         speed.  Use MP_BASES_CHARS_PER_LIMB_10.
20482 2002-02-03  Kevin Ryde  <kevin@swox.se>
20484         * acinclude.m4 (GMP_PROG_NM): Ensure -B or -p get used when doing a
20485         cross compile with the native nm, helps OSF for instance.
20486         (GMP_ASM_LSYM_PREFIX): Remove ".byte 0" for the benefit of irix 6,
20487         allow "N" from nm for OSF, allow for "t" for other systems, but prefer
20488         no mention of the symbol at all.
20490         * tune/tuneup.c (print_define_remark): New function.
20491         Turn some "#if"s into plain "if"s.
20493         * tune/tuneup.c, gmp-impl.h, tune/Makefile.am
20494         (GET_STR_BASECASE_THRESHOLD, GET_STR_PRECOMPUTE_THRESHOLD): Tune these.
20495         * mpn/generic/get_str.c [TUNE_PROGRAM_BUILD]: Cope with non-constant
20496         GET_STR_PRECOMPUTE_THRESHOLD.
20498 2002-02-02  Torbjorn Granlund  <tege@swox.com>
20500         * mpn/generic/get_str.c (mpn_get_str): Fix typo in a declaration.
20502 2002-02-02  Kevin Ryde  <kevin@swox.se>
20504         * mpn/generic/set_str.c: Use MP_PTR_SWAP and POW2_P, add __GMP_PROTO
20505         to convert_blocks prototype, disable SET_STR_BLOCK_SIZE sanity check.
20507         * tune/set_strb.c, tune/set_strs.c: New files.
20508         * tune/speed.h, tune/speed.c, tune/common.c,tune/Makefile.am: Add them.
20509         * tune/tuneup.c: Tune SET_STR_THRESHOLD.
20510         (DEFAULT_MAX_SIZE): Renamed from MAX_SIZE, allow any param.max_size[].
20512 2002-02-01  Torbjorn Granlund  <tege@swox.com>
20514         * tests/mpz/convert.c: Increase operand size.  Add (yet disabled) code
20515         for testing with random strings.
20517         * mpn/generic/get_str.c (mpn_get_str): Rewrite to become sub-quadratic.
20518         (mpn_dc_get_str, mpn_sb_get_str): New functions.
20520 2002-01-31  Kevin Ryde  <kevin@swox.se>
20522         * gmpxx.h (cmp): Renamed from "compare".
20524         * configure.in (AC_C_BIGENDIAN): Don't abort when cross compiling.
20525         (PROLOGUE): Allow new style optional second parameter when grepping.
20527         * acinclude.m4 (GMP_HPC_HPPA_2_0, GMP_ASM_UNDERSCORE,
20528         GMP_ASM_ALIGN_LOG, GMP_ASM_LSYM_PREFIX, GMP_ASM_W32, GMP_ASM_X86_MMX):
20529         Use $ac_objext for object filenames.
20530         (GMP_ASM_UNDERSCORE): Use CCAS to assemble.
20532         * demos/pexpr-config-h.in: New file.
20533         * configure.in: Generate demos/pexpr-config.h.
20534         (AC_CHECK_FUNCS): Add clock, cputime, setrlimit, sigaction,
20535         sigaltstack, sigstack.
20536         * acinclude.m4 (GMP_SUBST_CHECK_FUNCS, GMP_SUBST_CHECK_HEADERS): New
20537         macros.
20538         * demos/pexpr.c: Use pexpr-config.h, not various #ifdefs.
20539         (setup_error_handler): Use signal if sigaction not available, allow
20540         for SIGBUS missing on mingw.
20541         (main): Use time() for random seed if gettimeofday not available.
20542         (cleanup_and_exit): Move SIGFPE out of LIMIT_RESOURCE_USAGE.
20544 2002-01-30  Torbjorn Granlund  <tege@swox.com>
20546         * mpn/generic/set_str.c: Rewrite to become sub-quadratic.
20547         (convert_blocks): New function.
20549 2002-01-30  Kevin Ryde  <kevin@swox.se>
20551         * gmp-impl.h (GMP_NUMB_MASK, GMP_NAIL_MASK, GMP_NUMB_HIGHBIT,
20552         ASSERT_MPN, ASSERT_MP_LIMB_T): New macros.
20554         * mpn/generic/fib2_ui.c: Use GMP_NUMB_BITS, simplify the data
20555         generator program, share __gmp_fib_table initializers between bit
20556         sizes, cope with bit sizes other than those specifically setup.
20557         * gmp-impl.h (FIB_TABLE_LIMIT, FIB_TABLE_LUCNUM_LIMIT): Corresponding
20558         rearrangement of conditionals.
20559         * tests/mpz/t-fib_ui.c (check_fib_table): New test.
20561 2002-01-28  Kevin Ryde  <kevin@swox.se>
20563         * mpz/set_si.c, mpz/iset_si.c: Store to _mp_d[0] unconditionally, use
20564         an expression for _mp_size.
20566         * mpz/init.c, mpz/init2.c, mpz/iset.c, mpq/init.c [__CHECKER__]: Store
20567         dummy values to low limbs to stop them appearing uninitialized.
20569 2002-01-26  Kevin Ryde  <kevin@swox.se>
20571         * mpfr/mpfr-test.h (MAX, MIN, ABS): Use instead a patch from Paul and
20572         Vincent.
20574 2002-01-24  Kevin Ryde  <kevin@swox.se>
20576         * configure.in: Extra quoting to get argument help messages right.
20578         * gmp.texi (Efficiency): Suggest hex or octal for input and output.
20579         (Formatted Output Strings): Mention "*" for width and precision.
20581         * mpn/generic/sizeinbase.c: New file, adapted from mpz/sizeinbase.c.
20582         Use POW2_P, use __mp_bases[base].big_base for log2(base).
20583         * configure.in, mpn/Makefile.am: Add it.
20584         * gmp-impl.h: Add prototype.
20585         * mpz/sizeinbase.c, tune/speed.h, mpn/generic/get_str.c,
20586         mpz/get_str.c, mpbsd/mout.c, mpbsd/mtox.c: Use it.
20587         * mpz/get_str.c: Write directly to user buffer, skip at most one
20588         leading zero, eliminate special case for x==0.
20589         * mpbsd/mtox.c: Allocate exact result space at the start, eliminate
20590         special case for x==0.
20591         * mpbsd/mout.c: Only need to skip one high zero with mpn_sizeinbase.
20593         * configure.in (--enable-nails): New option.
20594         (GMP_NAIL_BITS, GMP_LIMB_BITS, GMP_NUMB_BITS): New defines for gmp.h
20595         and config.m4.
20596         * gmp-h.in: Add templates.
20598         * mpfr/mpfr-test.h (MAX, MIN, ABS): Use #ifndef to avoid a redefine
20599         error on AIX xlc.
20601 2002-01-23  Torbjorn Granlund  <tege@swox.com>
20603         * mpn/generic/get_str.c: Correct type of `out_len'.
20605 2002-01-22  Kevin Ryde  <kevin@swox.se>
20607         * mpn/generic/pre_divrem_1.c: Corrections to some ASSERTs.
20609         * mpfr/mul_ui.c: Don't call mpn_lshift with 0 shift.
20611         * mpfr/mpz_set_fr.c: Produce correct mpz_t for f==0.
20613 2002-01-21  Torbjorn Granlund  <tege@swox.com>
20615         * longlong.h (32-bit powerpc add_ssaaaa): Remove spurious commutative
20616         declaration.
20617         (64-bit powerpc add_ssaaaa): Likewise.
20619 2002-01-20  Kevin Ryde  <kevin@swox.se>
20621         * acinclude.m4 (GMP_FUNC_VSNPRINTF): Use %n to better detect sparc
20622         solaris 2.7 problems.
20624 2002-01-19  Torbjorn Granlund  <tege@swox.com>
20626         * demos/pexpr.c (mpz_eval_expr): Optimize s^rhs for -1 <= s <= 1.
20627         (cleanup_and_exit): Improve error message wording.
20629 2002-01-19  Kevin Ryde  <kevin@swox.se>
20631         * mpfr/mpfr.h (_PROTO): Use __GMP_PROTO, for compatibility with
20632         gmp-impl.h.
20634 2002-01-17  Torbjorn Granlund  <tege@swox.com>
20636         * mpfr/mpfr-test.h: Test "__hpux", not "hpux".  Mask off mrand48
20637         return value to 31 bits to work around sloppy mpfr #include practices.
20639         * mpfr/tests/*.c: Use #include "", not <>, for gmp.h and mpfr.h.
20640         Make sure to #include mpfr-test.h from all files that use random().
20642 2002-01-17  Kevin Ryde  <kevin@swox.se>
20644         * gmp-impl.h (__GMP_REALLOCATE_FUNC_MAYBE_TYPE): New macro.
20645         * gmp-impl.h, mpz/get_str.c, mpz/out_raw.c, mpq/get_str.c,
20646         mpq/set_str.c, mpf/get_str.c, printf/asprntffuns.c, printf/doprnt.c,
20647         printf/repl-vsnprintf.c, printf/snprntffuns.c, scanf/doscan.c,
20648         mpbsd/mtox.c: Some fixes to compile as C++.
20650         * mpn/generic/jacbase.c (JACOBI_BASE_METHOD): New tuned parameter,
20651         replacing COUNT_TRAILING_ZEROS_TIME test.  Add a third method too.
20652         * tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Add
20653         measuring of mpn_jacobi_base methods.
20654         * tune/jacbase1.c, tune/jacbase2.c, tune/jacbase3.c: New files.
20655         * tune/tuneup.c (JACOBI_BASE_METHOD): Tune this.
20656         * mpn/x86/*/gmp-mparam.h (COUNT_TRAILING_ZEROS_TIME): Remove macro.
20658         * gmp-h.in: Use __gmp prefix on variables in inlines.
20660         * gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR): Remove __i, unused.
20662         * mpn/generic/mul_fft.c: Use HAVE_NATIVE_mpn_addsub_n, not ADDSUB.
20663         Use CNST_LIMB for some constants.
20665 2002-01-15  Kevin Ryde  <kevin@swox.se>
20667         * tests/mpbsd/Makefile.am: Add a convenience rule for ../libtests.la.
20669         * printf/Makefile.am: libdummy.la should be in EXTRA_LTLIBRARIES.
20671         * mpf/out_str.c: Use MPF_SIGNIFICANT_DIGITS, so mpf_out_str and
20672         mpf_get_str give the same for ndigits==0.
20674         * mpfr/exceptions.c (mpfr_set_emin, mpfr_set_emax): Work around a
20675         powerpc64 gcc 3.0 -O2 bug.
20677         * tests/memory.c, tests/tests.h (tests_memory_validate): New function.
20679 2002-01-14  Kevin Ryde  <kevin@swox.se>
20681         * mpn/generic/sb_divrem_mn.c, mpn/generic/divrem_1.c,
20682         mpn/generic/divrem_2.c, mpn/generic/mod_1.c: Don't use UMUL_TIME and
20683         UDIV_TIME, just default to preinv.
20684         * gmp-impl.h (USE_PREINV_DIVREM_1, USE_PREINV_MOD_1): Ditto.
20685         (DIVEXACT_1_THRESHOLD, MODEXACT_1_ODD_THRESHOLD): Don't use UMUL_TIME
20686         and UDIV_TIME, make default thresholds 0.
20687         (UDIV_NORM_PREINV_TIME, UDIV_UNNORM_PREINV_TIME): Remove macros.
20688         * mpn/x86/*/gmp-mparam.h (UMUL_TIME, UDIV_TIME,
20689         UDIV_NORM_PREINV_TIME): Remove macros.
20691         * gmp.texi (Headers and Libraries): New section, being the header
20692         notes from "GMP Basics" and some new stuff.
20693         (Parameter Conventions): Notes on "const" parameters.
20694         (Formatted Output Strings): Add type N, tweak some wording.
20696         * tests/refmpn.c (refmpn_divmod_1c): Avoid a bug in i386 gcc 3.0.
20698 2002-01-12  Kevin Ryde  <kevin@swox.se>
20700         * mpz/root.c: Add <stdlib.h>, for abort().
20702         * mpfr/tests/Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr.
20703         * mpfr/mpfr.h, mpfr/mpfr-tests.h, reuse.c, tadd.c, tadd_ui.c, tagm.c,
20704         tatan.c, tcmp2.c, tcos.c, tdiv.c, tdiv_ui.c, teq.c, texp.c,
20705         tget_str.c, thyperbolic.c, tlog.c, tmul.c, tout_str.c, tpow.c,
20706         trandom.c, tset_z.c, tsin.c, tsqrt.c, tsqrt_ui.c, tsub_ui.c, ttan.c,
20707         tui_div.c: Fixes for K&R.
20709         * tests/misc/t-scanf.c (check_misc, check_misc):
20711         * tests/mpz/t-inp_str.c, tests/mpq/t-inp_str.c, tests/misc/t-scanf.c:
20712         Avoid strings in ASSERT, not enjoyed by K&R.
20713         * gmp-impl.h (ASSERT): Note this.
20715         * tests/tests.h (refmpn_mod_34lsub1): Add __GMP_PROTO.
20717         * mpbsd/Makefile.am: Avoid an automake problem with ansi2knr and
20718         sources in a different directory.
20720         * printf/repl-vsnprintf.c: Test HAVE_LONG_DOUBLE for long double.
20722         * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add mod_34lsub1.c,
20723         mul_2.c, pre_divrem_1.c.
20725         * gmp-h.in, gmp-impl.h (mpn_add_nc, mpn_addmul_1c, mpn_addsub_n,
20726         mpn_addsub_nc, mpn_divrem_1c, mpn_dump, mpn_mod_1c, mpn_mul_1c,
20727         mpn_mul_basecase, mpn_sqr_n, mpn_sqr_basecase, mpn_sub_nc,
20728         mpn_submul_1c): Move to gmp-impl.h, since they're undocumented.
20730         * gmp-impl.h (mpn_reciprocal): Remove, unused.
20732         * tune/many.pl (cntlz, cnttz): Use new SPEED_ROUTINE_COUNT_ZEROS.
20734 2002-01-11  Kevin Ryde  <kevin@swox.se>
20736         * mpn/hppa/*.asm, mpn/pa64/*.asm, mpn/pa64w/*.asm: Use L().
20738 2002-01-08  Kevin Ryde  <kevin@swox.se>
20740         * mpn/asm-defs.m4 (PROLOGUE, EPILOGUE): New scheme, optional function
20741         name to EPILOGUE, check for missing or wrong function name EPILOGUE.
20742         * mpn/alpha/unicos.m4, mpn/alpha/default.m4, mpn/m68k/m68k-defs.m4,
20743         mpn/mips3/mips.m4, mpn/ia64/default.m4, mpn/powerpc32/aix.m4,
20744         mpn/powerpc64/aix.m4, mpn/x86/x86-defs.m4: Consequent updates, add a
20745         few more asserts.
20746         * mpn/alpha/unicos.m4, mpn/alpha/default.m4, mpn/alpha/cntlz.asm,
20747         mpn/alpha/invert_limb.asm (PROLOGUE_GP): Change to an optional "gp"
20748         parameter on plain PROLOGUE.
20750         * gmp.texi (Low-level Functions): mpn_get_str doesn't clobber an extra
20751         limb, and doesn't clobber at all for power of 2 bases.
20752         (Language Bindings): Add python gmpy.
20754         * mpz/get_str.c: Determine realloc size arithmetically.
20756         * mpbsd/mtox.c: Size memory block returned to actual space needed.
20757         * gmp.texi (BSD Compatible Functions): Describe this.
20759         * mpz/get_str.c: Don't copy mpn_get_str input for power of 2 bases.
20760         * mpbsd/mtox.c: Ditto, and as a side effect avoid a memory leak from a
20761         missing TMP_FREE.
20763         * mpz/get_str.c, mpbsd/mout.c: No longer need for +1 limb for
20764         mpn_get_str clobber.
20766         * gmp-impl.h (MPN_GET_STR_SIZE): New macro.
20767         * mpn/generic/get_str.c, mpz/get_str.c, mpbsd/mout.c, mpbsd/mtox.c,
20768         tune/speed.h: Use it.
20769         * tests/mpn/t-g_str_size.c: New test.
20770         * tests/mpn/Makefile.am: Add it.
20772         * gmp-impl.h (POW2_P): New macro.
20773         * mpn/generic/get_str.c, tests/misc.c: Use it.
20775         * printf/doprnt.c: Add "N" for mpn, share some code between N, Q and Z.
20776         * tests/misc/t-printf.c: Add tests.
20777         * gmp-impl.h (ASSERT_CODE): New macro.
20779         * tests/mpbsd/t-mtox.c: New test.
20780         * tests/mpbsd/Makefile.am: Add it.
20781         (allfuns_LDADD): Don't link against libgmp when testing everything in
20782         libmp can link.
20784 2002-01-07  Torbjorn Granlund  <tege@swox.com>
20786         * gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR): Rewrite generic versions.
20788 2002-01-06  Kevin Ryde  <kevin@swox.se>
20790         * mpn/generic/pre_divrem_1.c: Don't support size==0.
20791         * tests/devel/try.c: Update.
20793         * mpn/generic/get_str.c: Add special case for base==10.
20794         * gmp-impl.h (MP_BASES_CHARS_PER_LIMB_10, MP_BASES_BIG_BASE_10,
20795         MP_BASES_BIG_BASE_INVERTED_10, MP_BASES_NORMALIZATION_STEPS_10): New
20796         constants.
20797         * tests/t-constants.c: Add checks.
20798         * mpn/mp_bases.c [GENERATE_TABLE]: Print defines for gmp-impl.h, print
20799         all standard bits-per-limb by default.
20801         * demos/pexpr.c, demos/expr/expr.h, demos/expr/expr-impl.h: Use
20802         __GMP_PROTO.
20804         * gmp-h.in (mpn_divexact_by3c): Remove variables from prototype, to
20805         keep out of application namespace.
20807 2002-01-04  Torbjorn Granlund  <tege@swox.com>
20809         * gmp-impl.h: Move _PROTO declaration to before its first usages.
20811 2002-01-04  Kevin Ryde  <kevin@swox.se>
20813         * gmp-h.in, mp-h.in, tests/tests.h: Rename _PROTO to __GMP_PROTO, and
20814         don't use #ifndef just define it ourselves.
20815         * gmp-impl.h: Provide _PROTO as an alias for __GMP_PROTO, to avoid big
20816         edits internally, for the moment.
20818 2002-01-03  Torbjorn Granlund  <tege@swox.com>
20820         * tune/speed.c (usage): Insert "\n\" into a string.
20822 2001-12-30  Torbjorn Granlund  <tege@swox.com>
20824         * mpn/pa64/udiv_qrnnd.c: Remove file.
20825         * mpn/pa64w/udiv_qrnnd.c: Remove file.
20827         * gmp-impl.h (MPN_IORD_U): Change formatting (labels in pos 0, insns
20828         indented by tab).
20829         (MPN_INCR_U): Use "addl $1,foo; jc", not "incl foo; jz".
20831         * gmp-impl.h (udiv_qrnnd_preinv): Use plain subtract, not sub_ddmmss,
20832         in one more case.
20834 2001-12-30  Kevin Ryde  <kevin@swox.se>
20836         * mpn/generic/get_str.c (udiv_qrnd_unnorm): New macro.
20837         Use "do while" for dig_per_u loop since it's non-zero.
20838         * acconfig.h (HAVE_HOST_CPU_m68k etc): Add templates.
20840         * mpn/generic/mul_basecase.c, mpz/mul.c, mpz/n_pow_ui.c,
20841         mpn/x86/pentium/mul_2.asm, tests/devel/try.c, tests/tests.h,
20842         tests/refmpn.c, tune/speed.c, tune/speed.h, tune/common.c,
20843         tune/many.pl (mpn_mul_2): New parameter style.
20844         * gmp-impl.h (mpn_mul_2): Add prototype.
20845         * configure.in (gmp_mpn_functions_optional): Add mul_2.
20847         * longlong.h (__vxworks__): Remove from powerpc tests, not correct,
20848         not on its own at least.
20850         * tune/speed.c: Add "aas" to specify 0xAA..AA data.
20852         * tune/tuneup.c (print_define_end): Indicate "never" and "always".
20854 2001-12-29  Torbjorn Granlund  <tege@swox.com>
20856         * mpq/set_d.c: ANSI-fy.
20857         * mpz/invert.c: Use PTR and SIZ (cosmetic change).
20859         * mpz/cong.c: Rename `xor' to `sign' to avoid C++ reserved word.
20861 2001-12-28  Torbjorn Granlund  <tege@swox.com>
20863         * mpn/sparc64/sqr_diagonal.asm: New file.
20865 2001-12-28  Kevin Ryde  <kevin@swox.se>
20867         * mpn/generic/get_str.c: Avoid one mpn_divrem_1 by running main loop
20868         only until msize==1.
20870         * tune/tuneup.c: Break up all() for clarity.
20871         (USE_PREINV_DIVREM_1, USE_PREINV_MOD_1): Compare against plain
20872         division udiv_qrnnd, not the tuned and possibly preinv version.
20874         * tune/freq.c: Split sysctl and sysctlbyname probes into separate
20875         functions, shorten some identifiers, put descriptions inside
20876         functions, define functions unconditionally and do nothing if
20877         requisites not available.
20879         * mpz/inp_raw.c: Avoid a gcc 3.0 powerpc64 bug on AIX.
20881         * acinclude.m4, configure.in (GMP_C_RESTRICT): New macro.
20883         * mpfr/sin.c: Patch from Paul to fix sign of sin(3pi/2).
20885         * demos/calc/calc.y: Improve some error messages.
20887 2001-12-28  Torbjorn Granlund  <tege@swox.com>
20889         * mpn/sparc64/mul_1.asm: Rename r72 -> r80.
20890         * mpn/sparc64/addmul_1.asm: Likewise.
20892 2001-12-27  Torbjorn Granlund  <tege@swox.com>
20894         * mpn/generic/tdiv_qr.c: Misc formatting cleanups.
20895         For switch case 2, replace `dn' with its value (2).
20897 2001-12-25  Torbjorn Granlund  <tege@swox.com>
20899         * tests/devel/mul_1.c: Add FIXED_XLIMB.
20900         * tests/devel/addmul_1.c: Likewise.
20901         * tests/devel/submul_1.c: Likewise.
20903         * tests/devel/add_n.c: Improve error message.
20904         Accept command line argument for # of tests.
20905         * tests/devel/sub_n.c: Likewise.
20907         * tests/devel/: Remove CLOCK settings.
20909         * mpn/sparc32/v9/mul_1.asm: Rewrite.
20910         * mpn/sparc32/v9/addmul_1.asm: Rewrite.
20911         * mpn/sparc32/v9/submul_1.asm: Rewrite.
20913 2001-12-24  Torbjorn Granlund  <tege@swox.com>
20915         * mpn/sparc64/mul_1.asm: Get rid of global constant 0.0 (L(noll)).
20916         * mpn/sparc64/addmul_1.asm: Likewise.
20918 2001-12-23  Torbjorn Granlund  <tege@swox.com>
20920         * mpn/generic/get_str.c: Move final ASSERT to just before zero fill
20921         loop.
20923 2001-12-22  Torbjorn Granlund  <tege@swox.com>
20925         * mpn/generic/get_str.c: Move ASSERTs out of loops.  Split digit
20926         generation code into two loops, saving a test of msize in the loop.
20928 2001-12-22  Kevin Ryde  <kevin@swox.se>
20930         * mpn/x86/x86-defs.m4, mpn/x86/*/*.asm: Remove L / LF scheme putting
20931         function name in local labels.
20933         * mpn/generic/get_str.c: Use mpn_preinv_divrem_1, add a couple of
20934         ASSERTs.
20936         * mpn/generic/pre_divrem_1.c: New file.
20937         * configure.in (gmp_mpn_functions): Add it.
20938         * gmp-impl.h (mpn_preinv_divrem_1): Add prototype.
20939         (USE_PREINV_DIVREM_1, MPN_DIVREM_OR_PREINV_DIVREM_1): New macros.
20940         * tests/devel/try.c, tune/speed.c, tune/speed.h, tune/common.c,
20941         tune/many.pl, tune/Makefile.am (mpn_preinv_divrem_1): Add testing and
20942         measuring.
20943         * tune/tuneup.c: Determine USE_PREINV_DIVREM_1.
20944         * tune/pre_divrem_1.c: New file.
20945         * tests/refmpn.c, tests/tests.h (refmpn_preinv_divrem_1): New function.
20947         * tests/mpz/t-io_raw.c: New file.
20948         * tests/mpz/Makefile.am (check_PROGRAMS): Add it.
20950         * mpz/inp_raw.c, mpz/out_raw.c: Rewrite.
20951         * acinclude.m4, configure.in (AC_C_BIGENDIAN): New test.
20952         * gmp-impl.h (BSWAP_LIMB): New macro.
20954         * acinclude.m4 (GMP_PROG_CC_WORKS): For a native compile, demand
20955         executables will run, per AC_PROG_CC.  This detects ABI=64 is unusable
20956         in a native sparc solaris 7 build with the kernel in 32-bit mode.
20957         * gmp.texi (ABI and ISA): Add notes on this, add an example configure
20958         setting an ABI.
20960         * tune/tuneup.c, configure.in: Print the gmp-mparam.h filename.
20961         * tune/tuneup.c: Print the CPU frequency.
20963         * tune/time.c, tune/speed.h: Add s390 "stck" method, flatten
20964         conditionals in speed_time_init a bit, use have_* variables to let
20965         some code go dead in speed_starttime and speed_endtime.
20967         * tune/freq.c (speed_cpu_frequency_irix_hinv): New function.
20969         * Makefile.am, configure.in: Restore mpfr.
20971         * configure.in: Add --with-readline, AC_PROG_YACC and AM_PROG_LEX.
20972         * demos/calc/calc.y, demos/calc/calclex.l: Add readline support, add
20973         lucnum function.
20974         * demos/calc/Makefile.am: Add calcread.c, calc-common.h, use $(YACC),
20975         $(LEX) and $(LEXLIB).
20976         * demos/calc/calcread.c, demos/calc/calc-common.h,
20977         demos/calc/calc-config-h.in, demos/calc/README: New files.
20979         * configure.in: Put demos/expr configs in expr-config.h.
20980         * demos/expr/expr-config-h.in: New file.
20981         * demos/expr/expr-impl.h: Renamed from expr-impl-h.in, get configs
20982         from expr-config.h.
20983         * demos/expr/Makefile.am: Update.
20985         * demos/expr/exprfr.c: Use mpfr_sin and mpfr_cos, remove some spurious
20986         returns.
20988 2001-12-20  Torbjorn Granlund  <tege@swox.com>
20990         * mpn/sparc64/mul_1.asm: Trim an instruction.
20991         * mpn/sparc64/addmul_1.asm: Likewise.
20993         * mpn/ia64/add_n.asm: Rewrite.
20994         * mpn/ia64/sub_n.asm: Rewrite.
20996 2001-12-19  Torbjorn Granlund  <tege@swox.com>
20998         * mpn/ia64/mul_1.asm: Rewrite.
20999         * mpn/ia64/addmul_1.asm: Rewrite.
21000         * mpn/ia64/submul_1.c: Use TMP_ALLOC_LIMBS.
21002         * tests/devel/mul_1.c: Improve error message.
21003         Accept command line argument for # of tests.
21004         * tests/devel/addmul_1.c: Likewise.
21005         * tests/devel/submul_1.c: Likewise.
21007 2001-12-18  Torbjorn Granlund  <tege@swox.com>
21009         * mpn/mips3/mul_1.asm: Add NOPs to save a cycle on R1x000.
21011 2001-12-18  Kevin Ryde  <kevin@swox.se>
21013         * gmpxx.h (gmp_randclass): Don't allow copy constructors or "=",
21014         implementation by Gerardo.
21016         * gmp-h.in (operator<<, operator>>): Remove parameter names from
21017         prototypes, to keep out of user namespace.
21019         * acinclude.m4 (GMP_FUNC_VSNPRINTF): Let the test program work as C++.
21021 2001-12-16  Torbjorn Granlund  <tege@swox.com>
21023         * mpn/sparc64/mul_1.asm: Rewrite.
21024         * mpn/sparc64/addmul_1.asm: Rewrite.
21025         * mpn/sparc64/submul_1.asm: Rewrite.
21027         * mpn/sparc64/addmul1h.asm: Remove.
21028         * mpn/sparc64/submul1h.asm: Remove.
21029         * mpn/sparc64/mul1h.asm: Remove.
21031 2001-12-15  Kevin Ryde  <kevin@swox.se>
21033         * gmp-h.in (mpn_add, mpn_add_1, mpn_cmp, mpn_sub, mpn_sub_1): Follow
21034         __GMP_INLINE_PROTOTYPES for whether to give prototype with inline.
21036         * configure.in (i686*-*-*, pentiumpro-*-*, pentium[23]-*-*,
21037         athlon-*-*, pentium4-*-*): Fall back on -march=pentium if
21038         -march=pentiumpro or higher is not good (eg. solaris cmov).
21040 2001-12-12  Torbjorn Granlund  <tege@swox.com>
21042         * gmp-impl.h (MPN_ZERO): Rewrite generic version to be similar to
21043         powerpc version.
21045 2001-12-12  Kevin Ryde  <kevin@swox.se>
21047         * acinclude.m4 (GMP_PROG_CC_WORKS): Detect cmov problems with gcc
21048         -march=pentiumpro on solaris 2.8.
21050         * tune/common.c, tune/speed.h: Allow for commas in count_leading_zeros
21051         and count_trailing_zeros macros.
21053         * demos/expr/Makefile.am: Distribute exprfr.c and exprfra.c.
21055         * tune/Makefile.am (speed_ext_SOURCES): Should be speed-ext.c.
21057 2001-12-10  Torbjorn Granlund  <tege@swox.com>
21059         * mpn/s390/addmul_1.asm: New file.
21060         * mpn/s390/submul_1.asm: New file.
21061         * mpn/s390/mul_1.asm: New file.
21062         * mpn/s390/gmp-mparam.h: Update.
21064 2001-12-07  Kevin Ryde  <kevin@swox.se>
21066         * gmp-h.in, mp-h.in, gmp-impl.h: __GMP_DECLSPEC at start of
21067         prototypes, for the benefit of Microsoft C.
21069         * gmp.texi (Introduction to GMP): Mention ABI and ISA section.
21070         (Known Build Problems): Recommend GNU sed on solaris 2.6.
21071         (Assigning Integers): Direct feedback to bug-gmp.
21072         (References): Typo Knuth vol 2 is from 1998.
21074         * gmpxx.h (gmp_randclass): Add initializers for gmp_randinit_default
21075         and gmp_randinit_lc_2exp_size.
21076         gmp.texi (C++ Interface Random Numbers): Describe them.
21078         * tests/misc/t-locale.c, tests/cxx/t-locale.cc: Ensure mpf_clear is
21079         done when the localconv override doesn't work.  Reported by Mike
21080         Jetzer.
21082         * printf/doprnti.c: Don't showbase on a zero mpq denominator.
21083         * tests/misc/t-printf.c, tests/cxx/t-ostream.c: Add test cases.
21085 2001-12-04  Kevin Ryde  <kevin@swox.se>
21087         * gmp.texi (Known Build Problems): Update to gmp_randinit_lc_2exp_size
21088         for the sparc solaris 2.7 problem.
21089         (Reentrancy): SCO ctype.h affects all text-based input functions.
21090         (Formatted Output Strings): Correction to the mpf example.
21091         (Single Limb Division): Correction, should be q-1 not q+1.
21092         (Extended GCD): Clarify why single-limb is inferior.
21093         (Raw Output Internals): Clarify size is twos complement, note limb
21094         order means _mp_d doesn't get directly read or written.
21095         (Contributors): Clarify mpz_jacobi.
21096         And a couple of formatting tweaks elsewhere.
21098         * tests/cxx/t-headers.cc: New file.
21099         * tests/cxx/Makefile.am: Add it.
21101         * gmpxx.h: Add <strstream>, needed by mpf_class::get_str2.
21103         * gmp-h.in (mpq_inp_str, mpn_hamdist): Add __GMP_DECLSPEC.
21105 2001-12-01  Torbjorn Granlund  <tege@swox.com>
21107         * Version 4.0 released.
21109         * mpfr/README: Replace contents with explanation of why mpfr is gone.
21111 2001-12-01  Kevin Ryde  <kevin@swox.se>
21113         * Makefile.am, configure.in: Temporarily remove mpfr, just leave a
21114         README.
21116         * mpn/Makefile.am (EXTRA_DIST): Add Makeasm.am.
21118 2001-11-30  Gerardo Ballabio  <ballabio@sissa.it>
21120         * tests/cxx/t-constr.cc, tests/cxx/t-expr.cc: New files.
21121         * tests/cxx/Makefile.am (check_PROGRAMS): Add them.
21123 2001-11-30  Kevin Ryde  <kevin@swox.se>
21125         * mpfr: Update to 2001-11-16.  Patch TMP handling of agm.c and sqrt.c,
21126         use plain mpn_sqrtrem in sqrt.c, separate .c files for floor and ceil,
21127         disable an expression style assert in add1.c.
21129         * mpn/s370: Rename to s390.
21130         * configure.in (s3[6-9]0*-*-*): Update.
21131         * mpn/Makefile.am (TARG_DIST): Add s390.
21133         * mpz/fits_s.c, mpf/fits_s.c, mpf/fits_u.c: Remove files, unused since
21134         change to .h style.
21136 2001-11-29  Torbjorn Granlund  <tege@swox.com>
21138         * gmp-h.in: Declare mpz_get_d_2exp and mpf_get_d_2exp.
21139         * Makefile.am: Add mpz/get_d_2exp$U.lo and mpf/get_d_2exp$U.lo.
21140         * mpf/Makefile.am: Add get_d_2exp.c.
21141         * mpz/Makefile.am: Add get_d_2exp.c.
21143 2001-11-29  Kevin Ryde  <kevin@swox.se>
21145         * mpn/*/gmp-mparam.h: Update measured thresholds.
21146         * mpn/s370/gmp-mparam.h: New file.
21148         * mpz/millerrabin.c: Mark for internal use only, for now.
21149         * gmp.texi (Number Theoretic Functions): Remove documentation.
21151 2001-11-28  Torbjorn Granlund  <tege@swox.com>
21153         * mpf/get_d_2exp.c: New file.
21154         * mpz/get_d_2exp.c: New file.
21156         * mpz/realloc2.c: Fix typo.  Make more similar to mpz_realloc.
21157         * mpz/realloc.c: Use __GMP_REALLOCATE_FUNC_LIMBS.
21159 2001-11-27  Gerardo Ballabio  <ballabio@sissa.it>
21161         * gmpxx.h, mpfrxx.h: Various updates and improvements.
21163 2001-11-27  Kevin Ryde  <kevin@swox.se>
21165         * gmp.texi (Useful Macros and Constants): Add gmp_version, add @findex
21166         for mp_bits_per_limb.
21168         * demos/perl/GMP.pm, demos/perl/GMP.xs: Use new style gmp_randinit's.
21169         * demos/perl/test.pl: Update for this, and for mpz_perfect_power_p
21170         handling of 0 and 1.
21172 2001-11-26  Torbjorn Granlund  <tege@swox.com>
21174         * mpz/realloc.c: Clear variable when decreasing allocation to less than
21175         needed.  Misc updates.
21177 2001-11-25  Kevin Ryde  <kevin@swox.se>
21179         * tests/misc/t-locale.c: Avoid printf in the normal case, since the
21180         replacement localeconv breaks it on SunOS 4.
21182         * gmp.texi (Build Options, Notes for Package Builds): Note libgmpxx
21183         depends on libgmp from same GMP version.
21185         * acinclude.m4, configure.in (GMP_FUNC_SSCANF_WRITABLE_INPUT): New
21186         test.
21187         * scanf/sscanf.c, scanf/vsscanf.c: Use it to ensure sscanf input is
21188         writable, if necessary.
21190         * tests/misc/t-scanf.c: Ensure sscanf arguments are writable, always.
21191         * configure.in (AC_CHECK_DECLS): Remove sscanf, no longer required.
21193         * configure.in (none-*-*): Fix default CFLAGS setups.
21195         * doc/configuration: Misc updates.
21197 2001-11-23  Kevin Ryde  <kevin@swox.se>
21199         * mpz/init2.c, mpz/realloc2.c: New files.
21200         * Makefile.am, mpz/Makefile.am: Add them.
21201         * gmp-h.in: Add prototypes.
21202         * gmp.texi (Efficiency): Mention these instead of _mpz_realloc.
21203         (Initializing Integers): Add documentation, reword other parts.
21205 2001-11-22  Torbjorn Granlund  <tege@swox.com>
21207         * mpn/cray/ieee/addmul_1.c: Fix logic for more_carries scalar loop.
21208         * mpn/cray/ieee/submul_1.c: Likewise.
21210 2001-11-20  Kevin Ryde  <kevin@swox.se>
21212         * gmp.texi (Known Build Problems): Note an out of memory on DJGPP.
21213         (Function Classes): Update function counts.
21214         Misc tweaks elsewhere.
21216         * configure.in (AC_CHECK_DECLS): Add sscanf.
21217         * tests/misc/t-scanf.c: Use it, for the benefit of SunOS 4.
21219         * tal-debug.c, gmp-impl.h: More checks of TMP_DECL/TMP_MARK/TMP_FREE
21220         consistency.
21222         * mpfr/Makefile.am (AR): Explicit AR=@AR@ to override automake
21223         default, necessary for powerpc64 ABI=aix64.
21225 2001-11-18  Torbjorn Granlund  <tege@swox.com>
21227         * mpz/powm.c: Move TMP_MARK to before any TMP_ALLOCs.
21229 2001-11-18  Kevin Ryde  <kevin@swox.se>
21231         * configure.in (--enable-fft): Make this the default.
21232         * gmp.texi (Build Options): Update.
21234         * Makefile.am (libmp_la_DEPENDENCIES): Revise mpz objects needed by
21235         new mpz/powm.c.
21237         * gmp.texi (Random State Initialization): Add gmp_randinit_default and
21238         gmp_randinit_lc_2exp_size, mark gmp_randinit as obsolete.
21239         (Random State Seeding): New section, taken from "Random State
21240         Initialization" and "Random Number Functions".
21242         * configure.in (AC_CHECK_DECLS): Add fgetc, fscanf, ungetc.
21243         * scanf/fscanffuns.c: Use these, for the benefit of SunOS 4.
21245         * gmp-impl.h, gmp-h.in (__gmp_default_fp_limb_precision): Move back to
21246         gmp-impl.h now not required for inlined mpf.
21248         * randlc2s.c (gmp_randinit_lc_2exp_size): New file, the size-based LC
21249         selection from rand.c.
21250         * rand.c (gmp_randinit): Use it.
21251         * randdef.c (gmp_randinit_default): New file.
21252         * gmp-impl.h (RANDS): Use it.
21253         (ASSERT_CARRY): New macro.
21254         * gmp-h.in (gmp_randinit_default, gmp_randinit_lc_2exp_size: Add
21255         prototypes.
21256         * Makefile.am (libgmp_la_SOURCES): Add randdef.c and randlc2s.c.
21258         * printf/asprntffuns.c: Include config.h before using its defines.
21260         * gmp-impl.h: Move C++ <string> to top of file to avoid the memset
21261         redefine upsetting configure tests.  Remove <iostream> since <iosfwd>
21262         in gmp.h suffices.
21264 2001-11-16  Kevin Ryde  <kevin@swox.se>
21266         * gmp.texi (Integer Exponentiation): mpz_powm supports negative
21267         exponents.
21268         (Assigning Floats, I/O of Floats, C++ Formatted Output, C++ Formatted
21269         Input): Decimal point follows locale.
21270         (Formatted Output Strings): %n accepts any type.
21271         (Formatted Input Strings): New section.
21272         (Formatted Input Functions): New section.
21273         (C++ Class Interface): Corrections and clarifications suggested by
21274         Gerardo.
21276         * scanf/doscan.c, scanf/fscanf.c, scanf/fscanffuns.c, scanf/scanf.c,
21277         scanf/sscanf.c, scanf/sscanffuns.c, scanf/vfscanf.c, scanf/vscanf.c,
21278         scanf/vsscanf.c, scanf/Makefile.am, tests/misc/t-scanf.c: New files.
21279         * gmp-h.in, gmp-impl.h, Makefile.am, configure.in: Consequent
21280         additions.
21282         * tests/misc: New directory.
21283         * tests/misc/Makefile.am: New file.
21284         * tests/misc/t-locale.c: New file.
21285         * tests/misc/t-printf.c: Moved from tests/printf.
21286         * tests/printf: Remove directory.
21287         * configure.in, tests/Makefile.am: Update.
21289         * tests/cxx/t-locale.cc: New file.
21290         * tests/cxx/Makefile.am: Add it.
21292         * mpf/set_str.c, cxx/ismpf.cc: Use localeconv for the decimal point.
21294         * acinclude.m4 (GMP_ASM_X86_MCOUNT): Update to $lt_prog_compiler_pic
21295         for current libtool, recognise non-PIC style mcount in windows DLLs.
21297         * gmp-impl.h (__gmp_replacement_vsnprintf): Add prototype.
21299         * gmp-impl.h (__gmp_rands, __gmp_rands_initialized,
21300         modlimb_invert_table): Add __GMP_DECLSPEC for the benefit of test
21301         programs using them from a windows DLL.
21302         * longlong.h (__clz_tab): Ditto.
21304         * mpn/x86/t-zdisp2.pl: New file.
21306         * mpn/x86/pentium4/README: New file.
21308 2001-11-15  Torbjorn Granlund  <tege@swox.com>
21310         * mpz/powm.c (HANDLE_NEGATIVE_EXPONENT): #define to 1.
21311         * tests/mpz/reuse.c (main): Use mpz_invert to avoid undefined mpz_powm
21312         cases.
21314 2001-11-14  Torbjorn Granlund  <tege@swox.com>
21316         * mpz/powm_ui.c: Rewrite along the lines of mpz/powm.c (except still no
21317         redc).
21318         * mpz/powm.c: Adjust for negative b, after exponentiation done.  Add
21319         (still disabled) code for handling negative exponents.  Misc cleanups.
21321 2001-11-14  Kevin Ryde  <kevin@swox.se>
21323         * mpf/out_str.c: Use localeconv for the decimal point.
21325         * tests/misc.c (tests_rand_end): Use time() if gettimeofday() not
21326         available (eg. on mingw).
21328 2001-11-11  Kevin Ryde  <kevin@swox.se>
21330         * gmp-h.in: Remove parameter names from prototypes, to keep out of
21331         application namespace.
21333 2001-11-08  Kevin Ryde  <kevin@swox.se>
21335         * acinclude.m4 (GMP_GCC_VERSION_GE): Fix sed regexps to work on
21336         Solaris 8.
21338         * printf/doprnt.c: Support %n of all types, per glibc.
21340         * gmp-h.in, gmp-impl.h, mpf/abs.c, mpf/neg.c, mpf/get_prc.c,
21341         mpf/get_dfl_prec.c, mpf/set_dfl_prec.c, mpf/set_prc_raw.c,
21342         mpf/set_si.c, mpf/set_ui.c, mpf/size.c: Revert mpf inlining, in order
21343         to leave open the possibility of keeping binary compatibility if mpf
21344         becomes mpfr.
21346         * mpn/x86/k7/mmx/lshift.asm, mpn/x86/k7/mmx/rshift.asm: Use Zdisp to
21347         force code size for computed jumps.
21348         * mpn/x86/k6/mod_34lsub1.asm, mpn/x86/k6/k62mmx/copyd.asm: Use Zdisp
21349         to force good code alignment.
21350         * mpn/x86/x86-defs.m4 (Zdisp): More instructions.
21352         * mpn/x86/pentium/sqr_basecase.asm, mpn/x86/k7/mmx/mod_1.asm,
21353         mpn/x86/k7/mmx/popham.asm: Remove some unnecessary "0" address offsets.
21355         * mpq/set_si.c, mpq/set_ui.c: Set _mp_den._mp_size correctly if den==0.
21357 2001-11-07  Torbjorn Granlund  <tege@swox.com>
21359         * mpn/hppa/hppa1_1/udiv_qrnnd.asm: Work around gas bug.
21361         * mpn/asm-defs.m4 (PROLOGUE): Change alignment to 8 (probably a good
21362         idea in general; required for hppa/hppa1_1/udiv_qrnnd.asm).
21364 2001-11-06  Torbjorn Granlund  <tege@swox.com>
21366         * gmp-impl.h (MPN_COPY_INCR): Prepend local variable by `__'.
21367         (MPN_COPY_DECR): Likewise.
21369 2001-11-05  Torbjorn Granlund  <tege@swox.com>
21371         * mpz/powm.c: Call mpn functions, not mpz functions, for computation
21372         mod m.  Streamline allocations to use a mixture of stack allocation and
21373         heap allocation.  Add currently disabled phi(m) exponent reduction
21374         code.  Misc optimizations and cleanups.
21376 2001-11-05  Kevin Ryde  <kevin@swox.se>
21378         * mpq/inp_str.c: Remove unused variable "ret".
21380         * mpn/x86/k7/sqr_basecase.asm: Fix a 0(%edi) to use Zdisp, so the
21381         computed jumps hit the right spot on old gas.
21383         * mpq/canonicalize.c: DIVIDE_BY_ZERO if denominator is zero.
21385         * mpn/lisp/gmpasm-mode.el (comment-start-skip): Correction to the way
21386         the first \( \) pair is setup.
21387         (gmpasm-font-lock-keywords): Don't fontify the space before a "#" etc.
21388         Misc tweaks to some comments.
21390 2001-11-03  Torbjorn Granlund  <tege@swox.com>
21392         * tests/refmpn.c (refmpn_overlap_p): Reverse return values.
21394 2001-11-02  Kevin Ryde  <kevin@swox.se>
21396         * tune/many.pl: Setup CFLAGS_PIC and ASMFLAGS_PIC, since that's no
21397         longer done by configure.
21399         * mpn/x86/pentium4/mmx/popham.asm: New file.
21401         * mpn/x86/x86-defs.m4 (psadbw): New macro.
21402         * mpn/x86/k7/mmx/popham.asm: Use it.
21404         * tests/refmpn.c (refmpn_overlap_p): New function, independent of
21405         MPN_OVERLAP_P.
21407 2001-10-31  Torbjorn Granlund  <tege@swox.com>
21409         * tests/mpz/t-powm.c: Print proper error message when finding
21410         discrepancy.
21412 2001-10-31  Kevin Ryde  <kevin@swox.se>
21414         * mpn/x86/pentium/mod_34lsub1.asm: New file.
21415         * mpn/x86/k7/mod_34lsub1.asm: New file.
21416         * mpn/x86/mod_34lsub1.asm: New file.
21418 2001-10-30  Kevin Ryde  <kevin@swox.se>
21420         * tests/printf/t-printf.c (check_misc): Add checks from the glibc docs.
21421         (check_vasprintf, check_vsnprintf): Run these unconditionally.
21423         * gmp-impl.h (ASSERT_MPQ_CANONICAL): New macro.
21424         * mpq/cmp.c, mpq/cmp_si.c, mpq/cmp_ui.c, mpq/equal.c: Add ASSERTs for
21425         canonical inputs, where correctness depends on it.
21427         * mpn/lisp/gmpasm-mode.el (comment-start-skip): Add "dnl".
21429 2001-10-27  Torbjorn Granlund  <tege@swox.com>
21431         * demos/pexpr.c: Remove some unused variables.
21432         (main): Allocate more buffer space to accommodate minus sign.
21434 2001-10-27  Kevin Ryde  <kevin@swox.se>
21436         * gmp-impl.h, mpn/asm-defs.m4, configure.in, tune/speed.h,
21437         tune/speed.c, tune/common.c, tune/many.pl, tests/devel/try.c: Add
21438         mpn_mod_34lsub1.
21439         * tests/refmpn.c, tests/tests.h (refmpn_mod_34lsub1): New function.
21441         * mpn/generic/mod_34lsub1.c: New file.
21442         * mpn/x86/k6/mod_34lsub1.asm: New file.
21443         * mpn/x86/pentium4/sse2/mod_34lsub1.asm: New file.
21444         * mpn/x86/x86-defs.m4 (Zdisp): Add another instruction.
21446         * gmp-h.in, gmpxx.h: Use <iosfwd> not whole <iostream>.
21448         * gmp.texi (Known Build Problems): Add note on test programs with
21449         Windows DLLs.
21451 2001-10-26  Kevin Ryde  <kevin@swox.se>
21453         * tests/mpq/t-get_d.c: Limit the size of "eps" for vax.
21455         * gmp.texi (maybepagebreak): New macro, use it in a few places.
21456         (Notes for Particular Systems): C++ Windows DLLs are not supported.
21457         (Known Build Problems): Note sparc solaris 2.7 gcc 2.95.2 shared
21458         library problems.
21459         (Autoconf): Tweak version numbers shown.
21460         (Integer Roots): mpz_perfect_square_p and mpz_perfect_power_p consider
21461         0 and 1 perfect powers, mpz_perfect_power_p accepts negatives.
21462         (Number Theoretic Functions): Add mpz_millerrabin, combined with a
21463         reworded mpz_probab_prime_p.
21464         (Formatted Output Strings): Misc clarifications.
21465         (Formatted Output Functions): gmp_asprintf, gmp_vasprintf,
21466         gmp_snprintf, gmp_vsnprintf always available.
21467         (C++ Formatted Output): Misc rewordings.
21468         (Formatted Input): New chapter.
21469         (C++ Class Interface): New chapter, by Gerardo and me.
21470         (Language Bindings): Update GMP++ now in GMP.
21471         (C++ Interface Internals): New section, by Gerardo and me.
21473         * printf/repl-vsnprintf.c: New file.
21474         * configure.in, acinclude.m4, Makefile.am, printf/Makefile.am: Use it
21475         if libc vsnprintf missing or bad.
21476         * configure.in (AC_CHECK_FUNCS): Add strnlen.
21478         * printf/snprntffuns.c, printf/vasprintf.c: Use
21479         __gmp_replacement_vsnprintf if libc vsnprintf not available.
21480         * printf/asprintf.c, printf/snprintf.c, printf/vasprintf.c,
21481         printf/vsnprintf.c: Provide these functions unconditionally.
21482         * acinclude.m4 (GMP_FUNC_VSNPRINTF): Remove warning about omissions
21483         when vsnprintf not available.
21485 2001-10-24  Kevin Ryde  <kevin@swox.se>
21487         * configure, aclocal.m4: Regenerate with a libtool patch for a stray
21488         quote in AC_LIBTOOL_PROG_LD_SHLIBS under mingw and cygwin.
21490         * gmp-impl.h (modlimb_invert): More comments.
21492         * printf/doprnt.c, printf/doprnti.c: Use the precision field to print
21493         leading zeros.
21494         * tests/printf/t-printf.c: Test this.
21495         * cxx/osdoprnti.cc, gmp-impl.h: Ignore precision in operator<<.
21497         * tune/speed.c, tune/speed.h, tune/common.c: Add mpn_mul_1_inplace.
21499 2001-10-23  Torbjorn Granlund  <tege@swox.com>
21501         * mpz/pprime_p.c (mpz_millerrabin): Remove function and its descendant.
21503         * mpz/millerrabin.c: New file with code from pprime.c.
21504         * mpz/Makefile.am: Compile millerrabin.c.
21505         * Makefile.am (MPZ_OBJECTS): Ditto.
21506         * gmp-h.in: Declare mpz_millerrabin.
21508 2001-10-22  Torbjorn Granlund  <tege@swox.com>
21510         * tests/mpz/t-perfsqr.c: New file.
21511         * tests/mpz/Makefile.am (check_PROGRAMS): Add it.
21513         * demos/factorize.c (factor): Check for number to factor == 0.
21514         (main): When invoked without arguments, read from stdin.
21516         * mpz/perfpow.c: Add code to handle negative perfect powers ((-b)^odd).
21517         Treat 0 and 1 as perfect powers.
21519         * mpn/sparc32/v9/sqr_diagonal.asm: Jump past .align.
21521 2001-10-21  Torbjorn Granlund  <tege@swox.com>
21523         * mpn/generic/perfsqr.c (sq_res_0x100): Remove bogus final `,'.
21524         (mpn_perfect_square_p): Suppress superfluous `&1' in sq_res_0x100 test.
21525         (mpn_perfect_square_p, O(n) test): Improve comments.  Combine remainder
21526         tests for some small primes.  Don't share code for different limb
21527         sizes.  Use single `if' with many `||' for better code density.
21529 2001-10-22  Kevin Ryde  <kevin@swox.se>
21531         * demos/perl/GMP.xs (mutate_mpz, tmp_mpf_grow): Make these "static".
21533         * mpn/x86/pentium/popcount.asm, mpn/x86/pentium/hamdist.asm
21534         (mpn_popcount_table): Use GSYM_PREFIX.
21536 2001-10-19  Kevin Ryde  <kevin@swox.se>
21538         * mpn/x86/*.asm: Add some measured speeds on various x86s.
21540         * tests/mpz/reuse.c, tests/mpf/reuse.c: Disable tests when using a
21541         windows DLL, because certain global variable usages won't compile.
21543         * configure.in (AC_CHECK_FUNCS): Add alarm.
21544         * tests/spinner.c: Conditionalize alarm and SIGALRM availability, for
21545         the benefit of mingw32.
21547         * acinclude.m4 (GMP_ASM_TYPE, GMP_ASM_SIZE): Suppress .type and .size
21548         on COFF.
21550         * acinclude.m4 (GMP_PROG_HOST_CC): New macro.
21551         * configure.in: Use it for windows DLL cross-compiles.
21552         * aclocal.m4, configure: Regenerate with libtool patch to hold HOST_CC
21553         in the generated libtool script.
21555         * aclocal.m4, configure: Regenerate with libtool patch to suppress
21556         warnings when probing command line limit on FreeBSD.
21558         * demos/qcn.c (M_PI): Define if not already provided, helps mingw32.
21560 2001-10-17  Kevin Ryde  <kevin@swox.se>
21562         * printf/doprnt.c: Use <stdint.h> for intmax_t.
21564         * longlong.h: Recognise __sparcv8 for gcc on Solaris.  Reported by
21565         Mark Mentovai <mark@mentovai.com>.
21567         * gmp-impl.h (gmp_allocated_string): No need for inline on member funs.
21569 2001-10-16  Kevin Ryde  <kevin@swox.se>
21571         * gmp.texi (Debugging): Add mpatrol.
21572         (Integer Comparisons, Comparing Rationals, Float Comparison): Index
21573         entries for sign tests.
21574         (I/O of Floats): Clarify mpf_out_str exponent is in decimal.
21575         (C++ Formatted Output): mpf_t operator<< exponent now in decimal.
21576         (FFT Multiplication): Use an ascii art sigma.
21577         (Contributors): Add Gerardo Ballabio.
21579         * cxx/osfuns.cc (__gmp_doprnt_params_from_ios): Always give mpf_t
21580         exponent in decimal, irrespective of ios::hex or ios::oct.
21581         * tests/cxx/t-ostream.cc (check_mpf): Update.
21583         * printf/doprnt.c: Support %lln and %hhn.
21585         * mpn/x86/pentium4/sse2/submul_1.asm: Use a psubq to negate the
21586         initial carry (helps the submul_1c case), and improve the comments.
21588 2001-10-11  Kevin Ryde  <kevin@swox.se>
21590         * acinclude.m4, configure.in (GMP_IMPL_H_IEEE_FLOATS): New macro.
21592         * ltmain.sh: Send some rm errors to /dev/null, helps during compiles
21593         on Solaris 2.7 and HP-UX 10.
21595         * tal-notreent.c: Renamed from stack-alloc.c.
21596         * Makefile.am, acinclude.m4, gmp-impl.h: Update.
21598         * gmp-h.in: Don't give both prototypes and inlines, except on gcc.
21600         * gmp-h.in, gmp-impl.h: Use #includes to get necessary standard
21601         classes, add std:: to prototypes.
21602         * cxx/*.cc, tests/cxx/t-ostream.cc: Add "use namespace std".
21603         * acinclude.m4 (GMP_PROG_CXX_WORKS): Ditto.
21605         * tests/*/Makefile.in, mpfr/tests/Makefile.in: Regenerate with
21606         automake patch to avoid Ultrix problem with empty $(TESTS).
21608         * */Makefile.in: Regenerate with automake patch to only rm *_.c in
21609         "make clean" when ansi2knr actually in use, helps DOS 8.3.
21611         * Makefile.in: Regenerate with automake patch to fix stamp-h
21612         numbering, avoiding an unnecessary config.status run.
21614 2001-10-09  Torbjorn Granlund  <tege@swox.com>
21616         * mpn/hppa/hppa1_1/udiv_qrnnd.asm: Use L macros for labels.
21617         Quote L reloc operator.
21619         * gmp-impl.h: Declare class string.
21621         * mpn/asm-defs.m4 (INT32, INT64): Quote $1 to prevent further
21622         expansion.
21624         * mpn/alpha/ev6/mul_1.asm: New file.
21626 2001-10-09  Kevin Ryde  <kevin@swox.se>
21628         * gmp.texi (Introduction to GMP): Add pentium 4 to optimized CPUs.
21629         (Build Options): Note macos directory.
21630         (Notes for Package Builds): GMP 4 series binary compatible with 3.
21631         (Known Build Problems): Remove $* and ansi2knr note, now fixed, except
21632         possibly under --host=none.
21633         (Formatted Output Strings): Remove -1 prec for all digits.
21635         * mpz/add.c, mpz/sub.c: Don't use mpz path on #include (helps macos).
21636         * mpbsd/Makefile.am (INCLUDES): Add -I$(top_srcdir)/mpz.
21638         * printf/doprnt.c, tests/printf/t-printf.c: Remove support for %.*Fe
21639         prec -1 meaning all digits.
21641         * acinclude.m4 (GMP_PROG_AR): Override libtool, use AR_FLAGS="cq".
21642         (GMP_HPC_HPPA_2_0): Print version string to config.log.
21644         * Makefile.am (AUTOMAKE_OPTIONS): Remove check-news (permission notice
21645         in NEWS file is too big).
21646         (dist-hook): Don't distribute numbered or unnumbered emacs backups.
21648         * Makefile.am, cxx/Makefile.am: Updates for Gerardo's stuff.
21650 2001-10-09  Gerardo Ballabio  <ballabio@sissa.it>
21652         * cxx/isfuns.cc: New file.
21653         * gmp-impl.h: Add prototypes.
21654         * cxx/ismpf.cc, cxx/ismpq.cc, cxx/ismpz.cc: New files.
21655         * gmp-h.in: Add prototypes.
21656         * gmpxx.h, mpfrxx.h: New files.
21658 2001-10-08  Kevin Ryde  <kevin@swox.se>
21660         * configure.in (with_tags): Establish a default based on --enable-cxx.
21662         * aclocal.m4: Regenerate with libtool patches for sed char range to
21663         help Cray, LTCC quotes and +Z warnings grep to help HP-UX.
21665         * gmp-impl.h (doprnt_format_t, doprnt_memory_t, doprnt_reps_t,
21666         doprnt_final_t): Use _PROTO.
21668 2001-10-05  Torbjorn Granlund  <tege@swox.com>
21670         * mpn/asm-defs.m4 (INT32, INT64): Use LABEL_SUFFIX.
21672         * mpn/hppa: Convert files to `.asm'.
21674 2001-10-05  Kevin Ryde  <kevin@swox.se>
21676         * mpn/Makeasm.am (.S files): Revert to separate CPP and CCAS, use
21677         cpp-ccas, and only pass CPPFLAGS to CPP, not whole CFLAGS.
21678         * mpn/cpp-ccas: New file.
21679         * mpn/Makefile.am (EXTRA_DIST): Add it.
21681         * tune/common.c, tune/speed.h: Change SPEED_ROUTINE_MPN_COPY_CALL uses
21682         to SPEED_ROUTINE_MPN_COPY or new SPEED_ROUTINE_MPN_COPY_BYTES.  Avoids
21683         macro expansion problems on Cray.
21685         * configure.in (AC_PROG_CXXCPP): Add this, to make libtool happier.
21687 2001-10-04  Torbjorn Granlund  <tege@swox.com>
21689         * mpz/rrandomb.c (gmp_rrandomb): Change bit_pos to be 0-based (was
21690         1-based); shift 2 (was 1) when making bit mask.  These two changes
21691         avoid undefined shift counts.
21692         (gmp_rrandomb): Avoid most calls to _gmp_rand by caching random values.
21694         * mpn/generic/random2.c: Changes for mirroring mpz/rrandomb.c.
21696 2001-10-04  Kevin Ryde  <kevin@swox.se>
21698         * gmp.texi (Build Options): Add --enable-cxx.
21699         (Notes for Particular Systems): Mention pentium4 performance and SSE2.
21700         (Known Build Problems): Remove vax jsobgtr note, no longer needed.
21701         (Converting Floats): Tweak mpf_get_str description.
21702         (Low-level Functions): Correction to mpn_gcdext destination space
21703         requirements.
21704         (C++ Formatted Output): New section.
21705         (Language Bindings): Add ALP
21706         (Contributors): Add Paul Zimmermann's square root, update my things.
21708         * acinclude.m4 (GMP_PROG_CC_IS_GNU, GMP_PROG_CXX_WORKS): Send compiler
21709         errors to config.log.
21711         * mpq/Makefile.am (INCLUDES): Remove -DOPERATION_$*, not needed.
21713         * mpn/x86/*.asm: Change references to old README.family to just README.
21715         * mpz/README: Remove file, now adequately covered in the manual.
21717 2001-10-03  Torbjorn Granlund  <tege@swox.com>
21719         * mpn/x86/pentium4/copyi.asm: New file.
21720         * mpn/x86/pentium4/copyd.asm: New file.
21722         * gmp-impl.h: Implement separate MPN_COPY_INCR and MPN_COPY_DECR
21723         macros for CRAY systems.
21724         (CRAY _MPN_COPY): Delete.
21726 2001-10-02  Kevin Ryde  <kevin@swox.se>
21728         * tests/mpz/t-popcount.c (check_data): Use "~ (unsigned long) 0" to
21729         avoid compiler warnings on sco.
21731         * mpbsd/Makefile.am: Compile mpz files directly, no copying.
21732         Use mpz/add.c and mpz/sub.c rather than mpz/aors.c.
21733         (INCLUDES): Remove -DOPERATION_$*, no longer needed (by mpz).
21735         * mpz/aors.h: Renamed from mpz/aors.c.
21736         * mpz/add.c, mpz/sub.c: New files, using mpz/aors.h.
21737         * mpz/aors_ui.h: Renamed from mpz/aors_ui.c.
21738         * mpz/add_ui.c, mpz/sub_ui.c: New files, using mpz/aors_ui.h.
21739         * mpz/fits_s.h: Renamed and adapted from mpz/fits_s.c.
21740         * mpz/fits_sshort.c, mpz/fits_sint.c, mpz/fits_slong.c: New files.
21741         * mpz/mul_i.h: Renamed from mpz/mul_siui.c.
21742         * mpz/mul_ui.c, mpz/mul_ui.c: New files, using mpz/mul_i.h.
21743         * mpz/Makefile.am: Consequent updates.
21744         (INCLUDES): Remove -DOPERATION_$*.
21746         * mpf/fits_s.h: Renamed and adapted from mpf/fits_s.c.
21747         * mpf/fits_sshort.c, mpf/fits_sint.c, mpf/fits_slong.c: New files.
21748         * mpf/fits_u.h: Renamed and adapted from mpf/fits_u.c.
21749         * mpf/fits_ushort.c, mpf/fits_uint.c, mpf/fits_ulong.c: New files.
21750         * mpf/Makefile.am: Consequent updates.
21751         (INCLUDES): Remove -DOPERATION_$*.
21753         * cxx/osfuns.cc (__gmp_doprnt_params_from_ios): Don't use ios::hex etc
21754         as cases in a switch, they're not constant in g++ 3.0.
21756         * mpn/Makeasm.am (.s.o, .s.obj, .S.o, .S.obj, .asm.o, .asm.obj):
21757         Locate source file with test -f the same as automake.
21758         (.S): Let CCAS do the preprocessing, and run libtool for .S.lo.
21759         (.asm.lo): Run libtool via m4-ccas to get new style foo.lo right.
21760         (COMPILE_FLAGS): Add $(DEFAULT_INCLUDES), per new automake.
21761         * mpn/m4-ccas: New file.
21762         * mpn/Makefile.am (EXTRA_DIST): Add it.
21763         * mpn/asm-defs.m4: Add m4_not_for_expansion(`DLL_EXPORT').
21764         * mpn/x86/x86-defs.m4: Undefine PIC if DLL_EXPORT is set.
21765         * configure.in (CFLAGS_PIC, ASMFLAGS_PIC): Remove, no longer needed.
21767         * acinclude.m4 (GMP_FUNC_VSNPRINTF): Warn what's omitted when
21768         vsnprintf not available.
21770         * mpn/underscore.h: Remove file, not used since m68k converted to asm.
21771         * mpn/Makefile.am (EXTRA_DIST): Remove it.
21773         * tests/refmpz.c: Add <stdlib.h>, for free().
21775 2001-10-01  Torbjorn Granlund  <tege@swox.com>
21777         * mpn/x86/pentium4/sse2/submul_1.asm: Apply some algebraic
21778         simplifications.
21779         * mpn/x86/pentium4/sse2/addmul_1.asm: Comment.
21781 2001-10-01  Kevin Ryde  <kevin@swox.se>
21783         * configure.in (--enable-cxx): New option for C++ support.
21784         Add cxx and tests/cxx subdirectories.
21785         * ltmain.sh, aclocal.m4: Update to libtool 2001-09-30.
21787         * cxx/Makefile.am, cxx/Makefile.in, cxx/osdoprnti.cc, cxx/osfuns.cc,
21788         cxx/osmpf.cc, cxx/osmpq.cc, cxx/osmpz.cc: New files.
21789         * Makefile.am: Add them, in new libgmpxx.
21790         * gmp-h.in, gmp-impl.h: Prototypes and support.
21791         * tests/cxx/Makefile.am, tests/cxx/Makefile.in,
21792         tests/cxx/t-ostream.cc: New files.
21794         * tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL,
21795         SPEED_ROUTINE_MPN_GCDEXT_ONE): mpn_gcdext needs size+1 for
21796         destinations.  Found by Torbjorn.
21798         * gmp-h.in (__GNU_MP__, __GNU_MP_VERSION): Bump to 4.0.
21799         * mp-h.in (__GNU_MP__): Ditto.
21800         * gmp.texi, Makefile.am, compat.c: Amend version 3.2 to 4.0.
21802         * acinclude.m4 (GMP_PROG_CXX_WORKS): New macro.
21803         (GMP_PROG_CC_WORKS): Write "conftest" test program, not a.out.
21805         * gmp-impl.h (struct gmp_asprintf_t): Moved from printf/vasprintf.c.
21806         (GMP_ASPRINTF_T_INIT): New macro.
21807         (GMP_ASPRINTF_T_NEED): New macro, adapted from vasprintf.c NEED().
21808         * printf/vasprintf.c: Use these.
21810         * printf/asprntffuns.c: New file.
21811         * printf/Makefile.am, Makefile.am: Add it.
21812         * printf/asprntffuns.c, printf/vasprintf.c, gmp-impl.h
21813         (__gmp_asprintf_memory, __gmp_asprintf_reps, __gmp_asprintf_final):
21814         Move to asprntffuns.c, rename to __gmp and make global, remove
21815         spurious formal parameters from __gmp_asprintf_final.
21817         * configure.in (j90-*-*, sv1-*-*): Don't duplicate $path in $add_path.
21818         (*-*-mingw*): Don't assemble with -DPIC (as per cygwin).
21820         * printf/snprntffuns.c (gmp_snprintf_final): Remove spurious formal
21821         parameters.
21823         * tune/tuneup.c (POWM_THRESHOLD): Reduce stop_factor to 1.1 to help
21824         Cray vector systems.
21826         * tests/misc.c (tests_rand_start): Print GMP_CHECK_RANDOMIZE=NN to
21827         facilitate cut and paste when re-running.
21828         * tests/mpz/t-inp_str.c (check_data): Add more diagnostic prints.
21830 2001-09-30  Kent Boortz  <kent@swox.com>
21832         * macos/configure, macos/Makefile.in, macos/README: Updates for gmp 4.
21833         * gmp-h.in (_GMP_H_HAVE_FILE): Recognise Apple MPW.
21835 2001-09-30  Torbjorn Granlund  <tege@swox.com>
21837         * mpn/cray/ieee/submul_1.c: Rewrite.  Streamline multiplications;
21838         use `majority' logic.
21840 2001-09-27  Torbjorn Granlund  <tege@swox.com>
21842         * gmp-h.in (__GMPN_AORS_1): Rewrite to work around Cray compiler bug.
21844 2001-09-26  Torbjorn Granlund  <tege@swox.com>
21846         * mpn/x86/pentium4/sse2/gmp-mparam.h: New file.
21848 2001-09-26  Kevin Ryde  <kevin@swox.se>
21850         * mpn/x86/pentium4/sse2/dive_1.asm: New file.
21851         * mpn/x86/pentium4/sse2/submul_1.asm: New file.
21852         * mpn/x86/pentium4/sse2/sqr_basecase.asm: New file.
21854         * mpn/x86/pentium/copyi.asm: New file, based on past work by Torbjorn.
21855         * mpn/x86/pentium/copyi.asm: New file, ditto.
21856         * mpn/x86/pentium/com_n.asm: Rewrite, ditto.
21858         * printf/snprntffuns.c (gmp_snprintf_format): Copy va_list in case
21859         vsnprintf trashes it.
21860         * printf/vasprintf.c (gmp_asprintf_format): Ditto.
21861         * gmp-impl.h, doprnt.c (va_copy): Move to gmp-impl.h.
21863         * tests/mpz/t-cmp_d.c (check_low_z_one): Patch by Torbjorn for vax
21864         limited float range.
21866 2001-09-23  Torbjorn Granlund  <tege@swox.com>
21868         * mpn/vax/lshift.s: Change `jsob*' to `sob*'.
21869         * mpn/vax/rshift.s: Likewise.
21871 2001-09-23  Kevin Ryde  <kevin@swox.se>
21873         * mpn/x86/pentium4/sse2/mul_basecase.asm: Some simple but real code.
21875         * printf/doprnt.c: Use va_copy for va_list variables, copy function
21876         parameter in case it's call-by-reference.
21878         * tune/freq.c (speed_cpu_frequency_bsd_dmesg): New function.
21879         (speed_cpu_frequency_table): Use it.
21881         * tune/many.pl (popcount, hamdist): Fix declared return value.
21882         (sb_divrem_mn): Remove a spurious duplicate entry.
21883         (CLEAN): Add tmp-$objbase.c when using that for .h files.
21884         (macro_speed): Give a default for .h files.
21885         Add ATTRIBUTE_CONST or __GMP_ATTRIBUTE_PURE as appropriate.
21887         * tune/speed.h (SPEED_ROUTINE_MPN_MOD_CALL,
21888         SPEED_ROUTINE_MPN_PREINV_MOD_1, SPEED_ROUTINE_MPN_POPCOUNT,
21889         SPEED_ROUTINE_MPN_HAMDIST, SPEED_ROUTINE_MPN_GCD_1N,
21890         SPEED_ROUTINE_MPN_GCD_1_CALL, SPEED_ROUTINE_MPZ_JACOBI): Use return
21891         values so gcc 3 won't discard calls to pure or const functions.
21892         (mpn_mod_1_div, mpn_mod_1_inv): Add __GMP_ATTRIBUTE_PURE.
21894 2001-09-22  Torbjorn Granlund  <tege@swox.com>
21896         * mpn/x86/pentium4/sse2/mul_basecase.asm: New file, placeholder
21897         for real code, hiding the default x86 mul_basecase.asm.
21899 2001-09-22  Kevin Ryde  <kevin@swox.se>
21901         * configure.in (AC_PREREQ): Bump to 2.52.
21902         (m4_pattern_forbid, m4_pattern_allow): New calls, forbid GMP_.
21903         (AC_CHECK_HEADERS): Remove sys/types.h, already done by autoconf.
21904         * acinclude.m4, configure.in (GMP_GCC_NO_CPP_PRECOMP): New macro.
21906         * tests/devel/try.c (TYPE_PREINV_MOD_1): Don't run size==0.
21907         (malloc_region): Need fd=-1 for mmap MAP_ANON on BSD.
21909 2001-09-20  Torbjorn Granlund  <tege@swox.com>
21911         * mpz/cong.c (mpz_congruent_p): Fix one-limb c<d test.
21913         * longlong.h: Rewrite __i370__ smul_ppmm; enable also for __s390__.
21915         * configure.in: Add support for IBM 360, 370, 390 families.
21917 2001-09-20  Kevin Ryde  <kevin@swox.se>
21919         * mpn/x86/pentium4/sse2/diveby3.asm: New file.
21920         * mpn/x86/pentium4/sse2/mode1o.asm: New file.
21922 2001-09-16  Kevin Ryde  <kevin@swox.se>
21924         * printf/doprnt.c: '#' means showpoint and showtrailing for %e, %f, %g.
21925         * tests/printf/t-printf.c (check_f): More test cases.
21927 2001-09-15  Torbjorn Granlund  <tege@swox.com>
21929         * gmp-h.in (__GMPN_AORS_1): Remove param TEST, add OP and CB.
21930         Postpone zeroing of (cout).
21931         (__GMPN_ADD_1, __GMPN_SUB_1): Corresponding changes.
21933 2001-09-14  Kevin Ryde  <kevin@swox.se>
21935         * ChangeLog: Merge in tests/rand/ChangeLog.
21936         * tests/rand/ChangeLog: Remove file.
21938         * printf/doprnt.c: Fix handling of a plain format after a GMP one; no
21939         need to protect against negative precision internally.
21940         * tests/printf/t-printf.c (check_misc): More checks.
21942 2001-09-12  Torbjorn Granlund  <tege@swox.com>
21944         * mpn/cray/ieee/invert_limb.c: Add a PROLOGUE in a comment to have
21945         HAVE_NATIVE_... defined.
21947 2001-09-11  Kevin Ryde  <kevin@swox.se>
21949         * configure.in, gmp-h.in (__GMP_HAVE_HOST_CPU_FAMILY_power,
21950         __GMP_HAVE_HOST_CPU_FAMILY_powerpc): New AC_SUBSTs.
21951         * gmp-h.in (__GMPN_COPY_INCR): Use them to select the power/powerpc
21952         code, rather than preprocessor defines.
21954         * acinclude.m4, configure.in (GMP_H_ANSI): New macro.
21956         * gmp-h.in (__GMP_EXTERN_INLINE): Add a definition for SCO 8 cc.
21958         * gmp-h.in, version.c (gmp_version): Make the pointer "const" as well
21959         as the string.
21961         * acinclude.m4, configure.in (GMP_PROG_CC_IS_XLC): Recognise xlc when
21962         invoked under another name (cc, xlc128, etc).
21963         * acinclude.m4 (GMP_PROG_CC_IS_GCC): Print a message when recognised.
21965 2001-09-11  Torbjorn Granlund  <tege@swox.com>
21967         * gmp-h.in: Let __DECC mean __GMP_HAVE_CONST, etc.
21968         * mp-h.in: Likewise.
21970 2001-09-10  Torbjorn Granlund  <tege@swox.com>
21972         * mpn/x86/pentium4/mmx/lshift.asm: New file.
21973         * mpn/x86/pentium4/mmx/rshift.asm: New file.
21975         * tests/mpn/t-iord_u.c (check_incr_data): Work around HP compiler bug.
21976         (check_decr_data): Likewise.
21978 2001-09-08  Kevin Ryde  <kevin@swox.se>
21980         * gmp.texi (Integer Logic and Bit Fiddling): Update mpz_hamdist
21981         behaviour, clarify mpz_popcount a touch.
21982         (Language Bindings): Add mlton, fix alphabetical order.
21983         (Single Limb Division): Describe 2 or 1/2 limbs at a time style.
21985         * configure.in (AC_CHECK_FUNCS): Add mmap.
21986         * tests/devel/try.c (malloc_region): Use mmap if available.
21988         * tests/refmpz.c, tests/tests.h (refmpz_hamdist): New function.
21989         * tests/mpz/t-hamdist.c: New file.
21990         * tests/mpz/Makefile.am: Add it.
21992         * mpz/hamdist.c: Support neg/neg operands.
21994         * macos/Makefile.in: Remove dual compile of mpq/aors.c and
21995         mpn/generic/popham.c.
21997         * gmp-impl.h (popc_limb): New macro, adapted from mpn/generic/popham.c.
21998         For 64-bits reuse 0x33...33 constant.
21999         * mpn/generic/popcount.c, mpn/generic/hamdist.c: Split from popham.c,
22000         use popc_limb macro, remove unused "i", don't bother with "register"
22001         qualifiers.
22002         * mpn/generic/popham.c: Remove file.
22004         * ltmain.sh, configure, aclocal.m4: Update to libtool 1.4.1, with one
22005         ltdll.c generation patch.
22006         * doc/configuration: Misc updates, note libtool patch used.
22008         * mpn/x86/pentium4/sse2/mul_1.asm: Use pointer increments not indexed
22009         addressing, to get 4.0 c/l flat.
22011         * tests/mpq/t-cmp_si.c (check_data): Use ULONG_MAX for denominators.
22013         * tests/misc.c (mpz_negrandom): Use given rstate, not RANDS.
22015 2001-09-07  Torbjorn Granlund  <tege@swox.com>
22017         * mpn/x86/pentium4/sse2/addmul_1.asm: New file.
22019 2001-09-04  Kevin Ryde  <kevin@swox.se>
22021         * tune/freq.c: Define a HAVE for each speed_cpu_frequency routine to
22022         avoid duplicating conditionals.
22023         (speed_cpu_frequency_sco_etchw): New function.
22024         (speed_cpu_frequency_table): Use it.
22025         * tune/README: Mention SCO openunix 8 /etc/hw.
22027         * mpz/fib_ui.c: Use ?: to avoid a gcc 3 bug on powerpc64.
22028         Store back a carry for limb<long.
22030         * mpn/x86/k7/mmx/divrem_1.asm, mpn/x86/k7/mmx/mod_1.asm,
22031         mpn/x86/p6/mmx/divrem_1.asm: Fix a couple of comments.
22033         * config.guess: Give m68020 for 68020 or better, not m68k.
22034         * configfsf.guess: Update to 2001-09-04.
22036 2001-09-02  Kevin Ryde  <kevin@swox.se>
22038         * configure.in (m68k-*-*): Let m68k mean 68000, not 68020.
22039         * gmp.texi (Notes for Particular Systems): Update.
22041         * gmp-impl.h (union ieee_double_extract) [m68k]: Use longs, since int
22042         might be only 16 bits.
22044         * tests/mpq/t-aors.c: New file.
22045         * tests/mpq/Makefile.am: Add it.
22047         * tests/refmpq.c: New file.
22048         * tests/Makefile.am: Add it.
22049         * tests/tests.h: Add prototypes.
22051         * mpq/aors.c: Share object code for mpq_add and mpq_sub.
22052         * Makefile.am, mpq/Makefile.am: Single mpq/aors.lo now.
22054         * tests/devel/try.c (TYPE_SUBMUL_1): Use correct reference routine.
22056 2001-08-30  Kevin Ryde  <kevin@swox.se>
22058         * mpn/x86/x86-defs.m4 (cmov_available_p): Add pentium4.
22060         * gmp-h.in: Put #define renamings with prototypes.
22061         Remove commented out #defines of gmp-impl.h things.
22062         (mpn_invert_limb): Remove #define, already in gmp-impl.h.
22063         (mpn_lshiftc, mpn_rshiftc): Remove #defines, unused.
22064         (mpn_addsub_nc): Add prototype to #define.
22066 2001-08-28  Kevin Ryde  <kevin@swox.se>
22068         * gmp.texi: Switch to GFDL.
22069         (Top): Arrange copyright and conditions to appear here too.  For
22070         clarity have all this before the miscellaneous macro definitions.
22071         (Copying): Refer to COPYING.LIB file, mention plain GPL2 in demo
22072         programs.
22073         (Contributors, References): Use @appendix rather than @unnumbered.
22074         (GNU Free Documentation License): New appendix.
22075         (@contents): Move to start of document, use only for tex (not html).
22076         (Debugging): Add leakbug.
22077         (Build Options): Add pentium4.
22078         (I/O of Rationals): Add mpq_inp_str.
22080         * fdl.texi: New file, with two @appendix directive tweaks.
22081         * Makefile.am (gmp_TEXINFOS): Add it.
22083         * tests/mpz/io.c: Check mpz_inp_str return against ftell, send error
22084         messages just to stdout.
22086         * mpz/inp_str.c, gmp-impl.h (__gmpz_inp_str_nowhite): New function,
22087         and share a __gmp_free_func call.
22088         * mpq/inp_str.c: New file.
22089         * Makefile.am, mpq/Makefile.am: Add it.
22090         * tests/mpq/t-inp_str.c: New file.
22091         * tests/mpq/Makefile.am (check_PROGRAMS): Add it.
22093         * configure.in, acconfig.h (HAVE_HOST_CPU_FAMILY_power,
22094         HAVE_HOST_CPU_FAMILY_powerpc, HAVE_HOST_CPU_FAMILY_x86): AC_DEFINEs
22095         for processor families.
22096         * gmp-impl.h: Use them, rather than cpp defines.
22098         * demos/Makefile.am (primes_LDADD): Use $(LIBM), for log().
22100         * tune/many.pl, tune/Makefile.am: Fix some from clean and distclean.
22102 2001-08-26  Kevin Ryde  <kevin@swox.se>
22104         * tests/devel/try.c (ARRAY_ITERATION): Make types match on "?:" legs.
22105         (TYPE_MPZ_JACOBI, TYPE_MPZ_KRONECKER): Remove some superseded code.
22107         * tests/printf/t-printf.c (check_plain): Don't compare "all digits"
22108         precision against plain printf.
22110         * tune/Makefile.am: Eliminate empty TUNE_MPZ_SRCS.
22112         * configure, config.in, INSTALL.autoconf: Update to autoconf 2.52.
22113         * */Makefile.in, mdate-sh, missing, aclocal.m4, configure: Update to
22114         automake 1.5.
22115         * configfsf.guess, configfsf.sub: Update to 2001-08-23.
22117 2001-08-24  Torbjorn Granlund  <tege@swox.com>
22119         * demos/primes.c: Complete rewrite.
22121 2001-08-24  Kevin Ryde  <kevin@swox.se>
22123         * longlong.h: Test __ppc__ for apple darwin cc, reported by Jon
22124         Becker.  Also test __POWERPC__, PPC and __vxworks__.
22126         * tune/speed.h (speed_cyclecounter) [x86]: Don't clobber ebx in PIC.
22128 2001-08-22  Kevin Ryde  <kevin@swox.se>
22130         * configure.in (x86 mmx): Correction to mmx path stripping.
22132 2001-08-17  Kevin Ryde  <kevin@swox.se>
22134         * configure.in, acinclude.m4, Makefile.am, printf/Makefile.am,
22135         tests/printf/Makefile.am, gmp-h.in, gmp-impl.h, gmp.texi: Remove C++
22136         support, for the time being.
22137         * printf/doprntfx.cc, doprntix.cc, osfuns.cc, osmpf.cc, osmpq.cc,
22138         osmpz.cc, tests/printf/t-ostream.cc: Remove files.
22140         * printf/doprnt.c, printf/doprntf.c, gmp-impl.h: Use a single
22141         __gmp_doprnt_mpf, rather than a separate ndigits calculation.
22142         * printf/doprnt.c, printf/doprntf.c, gmp-impl.h, gmp.texi,
22143         tests/printf/t-printf.c: Let empty or -1 prec mean all digits for mpf.
22144         * printf/doprnt.c, tests/printf/t-printf.c: Accept h or l in %n; let
22145         negative "*" style width mean left justify.
22147         * gmp-impl.h, mpf/get_str.c (MPF_SIGNIFICANT_DIGITS): New macro,
22148         extracted from mpf/get_str.c.
22150         * libmp.sym: New file.
22151         * Makefile.am (libmp_la_LDFLAGS): Use it.
22152         (DISTCLEANFILES): Remove asm-syntax.h, no longer generated.
22153         Remove some comments about "make check".
22155         * demos/perl/GMP.pm, GMP.xs, GMP/Mpf.pm: Add printf and sprintf,
22156         change get_str to string/exponent for floats, remove separate
22157         mpf_get_str.
22158         * demos/perl/GMP/Mpf.pm (overload_string): Use $# (default "%.g").
22159         * demos/perl/typemap: Fix some duplicate string entries.
22160         * demos/perl/test.pl: Update tests, split overloaded constants into ...
22161         * demos/perl/test2.pl: ... this new file.
22162         * demos/perl/Makefile.PL (clean): Add test.tmp.
22164 2001-08-16  Kevin Ryde  <kevin@swox.se>
22166         * printf/snprntffuns.c (gmp_snprintf_format): Correction to bufsize-1
22167         return value handling.
22169         * demos/calc/calc.y: Reposition "%{" so copyright notice gets into
22170         generated files.
22172         * INSTALL: Use gmp_printf.
22174 2001-08-14  Kevin Ryde  <kevin@swox.se>
22176         * mpz/inp_str.c: Fix return value (was 1 too big).
22177         * tests/mpz/t-inp_str.c: New file.
22178         * tests/mpz/Makefile.am: Add it.
22180         * mpn/x86/pentium4/sse2/add_n.asm: New file.
22181         * mpn/x86/pentium4/sse2/sub_n.asm: New file.
22182         * mpn/x86/pentium4/sse2/mul_1.asm: New file.
22184 2001-08-12  Kevin Ryde  <kevin@swox.se>
22186         * printf/sprintffuns.c, printf/doprntf.c: Don't use sprintf return
22187         value (it's a pointer on SunOS 4).
22189         * acinclude.m4 (GMP_ASM_X86_SSE2, GMP_STRIP_PATH): New macros.
22190         * configure.in: Add pentium4 support.
22191         * mpn/x86/pentium4, mpn/x86/pentium4/mmx, mpn/x86/pentium4/sse2: New
22192         directories.
22193         * mpn/x86/README: Update.
22195 2001-08-10  Torbjorn Granlund  <tege@swox.com>
22197         * demos/pexpr.c (setup_error_handler): Catch also SIGABRT.
22199 2001-07-31  Kevin Ryde  <kevin@swox.se>
22201         * tests/refmpn.c (refmpn_mul_1c): Allow low to high overlaps.
22203         * gmp-h.in, gmp-impl.h (_gmp_rand): Move prototype to gmp-impl.h.
22205         * tune/Makefile.am (EXTRA_DIST): Add many.pl.
22207 2001-07-28  Kevin Ryde  <kevin@swox.se>
22209         * gmp.texi (Random Number Functions): Old rand functions no longer use
22210         the C library.
22212         * configure.in, acinclude.m4 (GMP_FUNC_VSNPRINTF): New macro.
22214         * mpn/generic/get_str.c: Add an ASSERT for high limb non-zero.
22216 2001-07-24  Kevin Ryde  <kevin@swox.se>
22218         * gmp.texi (Build Options): Add --enable-cxx.
22219         (Converting Floats): Note mpf_get_str only generates accurately
22220         representable digits.
22221         (Low-level Functions): Note mpn_get_str requires non-zero high limb.
22222         (Formatted Output): New chapter.
22223         (Multiplication Algorithms): Use @quotation with @multitable.
22224         (Toom-Cook 3-Way Multiplication): Ditto.
22226         * tests/memory.c (tests_free_nosize): New function.
22227         * tests/tests.h (tests_allocate etc): Add prototypes.
22229         * tests/printf: New directory.
22230         * tests/printf/Makefile.am, t-printf.c, t-ostream.cc: New files.
22231         * configure.in, tests/Makefile.am: Add them.
22233         * configure.in, acinclude.m4 (GMP_PROG_CXX): New macro.
22234         * configure.in (--enable-cxx): New option.
22235         (AC_CHECK_HEADERS): Add locale.h and sys/types.h, remove unistd.h.
22236         (AC_CHECK_TYPES): Add intmax_t, long double, long long, ptrdiff_t,
22237         quad_t.
22238         (AC_CHECK_FUNCS): Add localeconv, memset, obstack_vprintf, snprintf,
22239         strchr, vsnprintf.
22240         (AC_CHECK_DECLS): Add vfprintf.
22242         * gmp-h.in, gmp-impl.h: Additions for gmp_printf etc.
22244         * printf: New directory.
22245         * printf/Makefile.am, asprintf.c, doprnt.c, doprntf.c, doprntfx.cc,
22246         doprnti.c, doprntix.cc, fprintf.c, obprintf.c, obprntffuns.c,
22247         obvprintf.c, osfuns.cc, osmpf.cc, osmpq.cc, osmpz.cc, printf.c,
22248         printffuns.c, snprintf.c, snprntffuns.c, sprintf.c, sprintffuns.c,
22249         vasprintf.c, vfprintf.c, vprintf.c, vsnprintf.c, vsprintf.c: New
22250         files.
22251         * configure.in, Makefile.am: Add them.
22253         * configure.in (HAVE_INLINE): Remove AC_DEFINE, unused.
22254         (AC_CHECK_TYPES): Don't test for void, assume it always exists.
22256         * gmp-impl.h (__GMP_REALLOCATE_FUNC_MAYBE): New macro.
22257         * mpz/get_str.c, mpq/get_str.c, mpf/get_str.c: Use it.
22259         * gmp-impl.h (mpn_fib2_ui): Use __MPN.
22260         (MPN_COPY_DECR): Fix an ASSERT.
22261         (CAST_TO_VOID): Remove macro.
22263         * gmp-h.in (mpq_out_str): Give #define even without prototype.
22264         (mpz_cmp_d, mpz_cmpabs_d): Corrections to #defines.
22266         * tests/devel/try.c: Add mpn_add and mpn_sub, don't use CAST_TO_VOID.
22268 2001-07-23  Torbjorn Granlund  <tege@swox.com>
22270         * config.guess: Recognize pentium4.
22271         * config.sub: Recognize pentium4.
22273 2001-07-17  Kevin Ryde  <kevin@swox.se>
22275         * gmp-h.in (__GMPN_AORS_1): Remove x86 and gcc versions, leave just
22276         one version.
22277         (__GMPN_ADD, __GMPN_SUB): New macros, rewrite of mpn_add and mpn_sub.
22278         (mpn_add, mpn_sub): Use them.
22279         (__GMPN_COPY_REST): New macro.
22281         * gmp-h.in, gmp-impl.h, acinclude.m4: Remove __GMP_ASM_L and
22282         __GMP_LSYM_PREFIX, revert to ASM_L in gmp-impl.h and AC_DEFINE of
22283         LSYM_PREFIX.
22285 2001-07-11  Kevin Ryde  <kevin@swox.se>
22287         * gmp-h.in (__GMPN_ADD_1 etc) [x86]: Don't use this on egcs 2.91.
22289         * mpz/fits_uint.c, fits_ulong.c, mpz/fits_ushort.c: Split up fits_u.c.
22290         * mpz/fits_u.c: Remove file.
22291         * mpz/Makefile.am, macos/Makefile.in: Update.
22293         * tests/refmpn.c,tests.h (refmpn_copy): New function.
22294         * tests/devel/try.c (TYPE_ZERO): No return value from call.
22295         (TYPE_MODEXACT_1_ODD, TYPE_MODEXACT_1C_ODD): Share call with
22296         TYPE_MOD_1 and TYPE_MOD_1C.
22297         (MPN_COPY, __GMPN_COPY, __GMPN_COPY_INCR): Add testing.
22299 2001-07-10  Kevin Ryde  <kevin@swox.se>
22301         * gmp-h.in (__GMPN_COPY): Add form to help gcc on power and powerpc.
22302         * gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR, MPN_ZERO): Ditto.
22303         * mpn/powerpc64/copyi.asm, mpn/powerpc64/copyd.asm: Remove files.
22305         * mpz/tdiv_ui.c: Eliminate some local variables (seems to save code on
22306         i386 gcc 2.95.x), remove a bogus comment about quotient.
22308         * errno.c, gmp-impl.h (__gmp_exception, __gmp_divide_by_zero,
22309         __gmp_sqrt_of_negative): New functions.
22310         * gmp-impl.h (GMP_ERROR, DIVIDE_BY_ZERO, SQRT_OF_NEGATIVE): Use them.
22312         * randclr.c, randraw.c: Use ASSERT(0) for unrecognised algorithms.
22314 2001-07-07  Kevin Ryde  <kevin@swox.se>
22316         * configure.in (powerpc*-*-*): Use -no-cpp-precomp for Darwin.
22318         * tests/mpbsd/t-itom.c: Renamed from t-misc.c.
22319         * tests/mpbsd/t-misc.c: Remove file.
22320         * tests/mpbsd/Makefile.am: Update.
22322         * tests/mpf/t-set_si.c,t-cmp_si.c,t-gsprec.c: Split from t-misc.c.
22323         * tests/mpf/t-misc.c: Remove file.
22324         * tests/mpf/Makefile.am: Update.
22326         * tests/mpz/t-oddeven.c,t-set_si.c,t-cmp_si.c: Split from t-misc.c.
22327         * tests/mpz/t-misc.c: Remove file.
22328         * tests/mpz/Makefile.am: Update.
22330         * stack-alloc.c: Add some alignment ASSERTs.
22332         * gmp-impl.h (MPN_NORMALIZE): Add notes on x86 repe/scasl slow.
22334         * tests/devel/try.c (MPN_ZERO): Add testing.
22335         * tune/speed.c,speed.h,common.c,many.pl (MPN_ZERO): Add measuring.
22337         * mpn/x86/divrem_1.asm: Update a remark about gcc and "loop".
22339         * tests/mpq/t-cmp_si.c: New file.
22340         * tests/mpq/Makefile.am: Add it.
22342         * tests/misc.c,tests.h (mpq_set_str_or_abort): New function.
22344         * mpq/cmp_si.c: New file.
22345         * Makefile.am, mpq/Makefile.am: Add it.
22346         * gmp-h.in (mpq_cmp_si): Add prototype.
22347         * gmp.texi (Comparing Rationals): Add doco.
22349         * gmp-h.in (_GMP_H_HAVE_FILE): Add _FILE_DEFINED for microsoft, add
22350         notes on what symbols are for what systems.
22352 2001-07-06  Torbjorn Granlund  <tege@swox.com>
22354         * longlong.h (ibm032 umul_ppmm): Fix typo.
22355         * longlong.h (sparclite sdiv_qrnnd): Fix typo.
22357 2001-07-03  Kevin Ryde  <kevin@swox.se>
22359         * mpz/bin_ui.c (DIVIDE): Use MPN_DIVREM_OR_DIVEXACT_1.
22360         * mpz/bin_uiui.c (MULDIV): Ditto, and use local variables for size and
22361         pointer.
22363         * acinclude.m4 (GMP_INCLUDE_GMP_H): New macro, use it everywhere gmp.h
22364         is wanted at configure time.
22365         * acinclude.m4, configure.in (GMP_H_EXTERN_INLINE, GMP_H_HAVE_FILE):
22366         New macros.
22368         * gmp-h.in (__GMP_EXTERN_INLINE): Set to "inline" for C++.
22369         (mpn_add, mpn_sub): Use new style __GMP_EXTERN_INLINE.
22370         * gmp-h.in, mp-h.in, gmp-impl.h (_EXTERN_INLINE): Remove, unused.
22371         * mpn/generic/add.c, mpn/generic/sub.c: New files.
22372         * mpn/generic/inlines.c: Remove file.
22373         * configure.in, mpn/Makefile.am: Update.
22375         * gmp.texi (GMP Basics): Note the need for stdio.h to get FILE
22376         prototypes.
22378 2001-07-01  Kevin Ryde  <kevin@swox.se>
22380         * gmp.texi (Build Options, Reentrancy): Updates for new
22381         --enable-alloca behaviour.
22382         (Debugging): Describe --enable-alloca=debug.
22383         (Miscellaneous Integer Functions): Note mpz_sizeinbase ignores signs.
22384         (Low-level Functions): Give a formula for mpn_gcdext cofactor.
22385         (Factorial Algorithm): New section.
22386         (Binomial Coefficients Algorithm): New section.
22387         Misc tweaks elsewhere.
22389         * mpf/set_prc.c: Merge the two truncation conditionals, misc cleanups,
22390         no functional changes.
22392         * mpn/*/gmp-mparam.h (DIVEXACT_1_THRESHOLD): Add tuned values.
22393         * gmp-impl.h (DIVEXACT_1_THRESHOLD): Make the default 0 when
22394         2*UMUL_TIME < UDIV_TIME.
22396         * mpn/x86/p6/dive_1.asm: New file.
22398         * mpn/x86/dive_1.asm: New file.
22399         * mpn/x86/gmp-mparam.h (DIVEXACT_1_THRESHOLD): Use it always.
22401         * tests/refmpn.c, tests.h (refmpn_zero): New function.
22402         * tests/devel/try.c: Use it.
22404         * tests/refmpn.c (refmpn_sb_divrem_mn): Use refmpn_cmp, not mpn_cmp.
22406         * tests/mpf/t-get_d.c (main): Use || not |.
22408         * tests/misc.c, tests/t-modlinv.c, tests/mpq/t-get_str.c,
22409         tests/mpf/reuse.c: Add string.h.
22411 2001-06-29  Kevin Ryde  <kevin@swox.se>
22413         * tune/speed.h (SPEED_ROUTINE_MPN_FIB2_UI,
22414         SPEED_ROUTINE_COUNT_ZEROS_C): Corrections to TMP block handling.
22416         * gmp-impl.h (MPN_TOOM3_MUL_N_MINSIZE, MPN_TOOM3_SQR_N_MINSIZE):
22417         Corrections to these to account for adding tD into E.
22418         (MPN_INCR_U, MPN_DECR_U) [WANT_ASSERT]: Add size
22419         assertions, since mpn_add_1 and mpn_sub_1 from gmp.h don't get them.
22420         (MPN_DIVREM_OR_DIVEXACT_1): Add an assert of no remainder.
22422         * assert.c: Add stdlib.h for abort prototype.
22423         * tests/spinner.c, trace.c, t-constants.c, t-count_zeros.c,
22424         t-gmpmax.c, t-modlinv.c: Ditto.
22425         * tests/mpz/t-bin.c, t-cmp.c, t-get_si.c, t-misc.c, t-popcount.c,
22426         t-set_str.c, t-sizeinbase.c: Ditto.
22427         * tests/mpq/t-equal.c, t-get_str.c, t-set_f.c, t-set_str.c: Ditto.
22428         * tests/mpf/t-fits.c, t-get_d.c, t-get_si.c, t-int_p.c, t-misc.c,
22429         t-trunc.c: Ditto.
22430         * tests/mpbsd/allfuns.c, t-misc.c: Ditto.
22432         * mpn/generic/mul_n.c, mpz/cfdiv_r_2exp.c: Use MPN_INCR_U rather than
22433         mpn_incr_u.
22435         * tests/devel/try.c (TYPE_SB_DIVREM_MN): More fixes for calling method.
22437         * mpn/x86/k6/cross.pl: More insn exceptions.
22439 2001-06-23  Kevin Ryde  <kevin@swox.se>
22441         * gmp-h.in (__GMPN_ADD_1, __GMPN_SUB_1) [i386]: Fix some asm output
22442         constraints.
22444         * gmp-impl.h (modlimb_invert): Mask after shifting, so mask constant
22445         fits a signed byte.
22447         * tests/devel/try.c (TYPE_SB_DIVREM_MN): Fix initial fill of quotient
22448         with garbage.
22450 2001-06-20  Kevin Ryde  <kevin@swox.se>
22452         * config.guess (rs6000-*-aix4* | powerpc-*-aix4*): Suppress error
22453         messages if $CC_FOR_BUILD or program don't work.
22455         * mpz/sqrt.c,sqrtrem.c: Special case for op==0, to avoid TMP_ALLOC(0).
22456         * tests/refmpf.c (refmpf_add, refmpf_sub): Avoid TMP_ALLOC(0).
22458         * tests/mpn/t-aors_1.c: New file.
22459         * tests/mpn/Makefile.am: Add it.
22461         * gmp-h.in (__GMPN_ADD_1, __GMPN_SUB_1): New macros, rewrite of
22462         mpn_add_1 and mpn_sub_1, better code for src==dst and/or n==1,
22463         separate versions for gcc x86, gcc generic, and non-gcc.
22464         (mpn_add_1, mpn_sub_1): Use them.
22465         (mpn_add, mpn_sub): Ditto, to get inlines on all compilers.
22466         (extern "C") [__cplusplus]: Let this encompass the extern inlines too.
22467         * mpn/generic/add_1.c,sub_1.c: New files, force code from gmp.h.
22468         * configure.in, mpn/Makefile.am: Add them.
22470         * acinclude.m4 (GMP_ASM_LSYM_PREFIX): AC_SUBST __GMP_LSYM_PREFIX
22471         rather than AC_DEFINE LSYM_PREFIX.
22472         * gmp-h.in (__GMP_LSYM_PREFIX): New substitution.
22473         (__GMP_ASM_L): New macro.
22474         * gmp-impl.h (ASM_L): Use it.
22476         * acinclude.m4, configure.in (GMP_C_ATTRIBUTE_MALLOC): New macro.
22477         * gmp-impl.h: Use it for all the malloc based TMP_ALLOCs.
22479         * stack-alloc.h: Remove file.
22480         * tal-reent.c: New file.
22481         * Makefile.am: Update.
22483         * acinclude.m4, configure.in (GMP_OPTION_ALLOCA): New macro, add
22484         malloc-reentrant method, use stack-alloc.c as malloc-notreentrant,
22485         make "reentrant" the default.
22486         * gmp-impl.h (__TMP_ALIGN): Moved from stack-alloc.c, use a union to
22487         determine the value, and demand only 4 bytes align on 32-bit systems.
22488         * gmp-impl.h (WANT_TMP_NOTREENTRANT): Move global parts of
22489         stack-alloc.h to here, allow non power-of-2 __TMP_ALIGN in TMP_ALLOC.
22490         * gmp-impl.h: Extend extern "C" to TMP_ALLOC declarations.
22491         * stack-alloc.c (tmp_stack): Move private parts of stack-alloc.h to
22492         here, use gmp-impl.h.
22494         * gmp-impl.h (TMP_ALLOC_LIMBS_2): New macro.
22495         * mpz/fib_ui.c, mpz/jacobi.c, mpq/cmp.c, mpn/generic/fib2_ui.c: Use it.
22497         * mpfr/exp2.c: Patch by Paul to match TMP_MARK and TMP_FREE in loop.
22498         * mpfr/sqrt.c: Scope nested TMP_DECL into nested { } block, patch by
22499         Paul, tweaked by me.
22500         * mpfr/agm.c: Ditto, and add a final TMP_FREE(marker2).
22502         * gmp-h.in (mpn_cmp): Add __GMP_ATTRIBUTE_PURE.
22504         * INSTALL: Clarify "make install", tweak formatting a bit.
22506 2001-06-17  Kevin Ryde  <kevin@swox.se>
22508         * configure.in, Makefile.am, gmp-impl.h: Add a debugging TMP_ALLOC,
22509         selected with --enable-alloca=debug.
22510         * tal-debug.c: New file.
22511         * configure.in, Makefile.am: Compile stack-alloc.c only for
22512         --disable-alloca.
22513         * assert.c (__gmp_assert_header): New function, split from
22514         __gmp_assert_fail.
22516         * mpz/lcm.c: Don't TMP_MARK and then just return. Remove unnecessary
22517         _mpz_realloc prototype.
22519         * mpn/generic/mul.c (mpn_sqr_n): Use __gmp_allocate_func for toom3
22520         temporary workspace.
22522 2001-06-15  Kevin Ryde  <kevin@swox.se>
22524         * tests/mpz/t-set_f.c: New file.
22525         * tests/mpz/Makefile.am (check_PROGRAMS): Add it.
22527         * mpz/set_f.c: Share MPN_COPY between pad and trunc cases, do exp<=0
22528         test earlier, store SIZ(w) earlier.
22530         * tests/t-count_zeros.c: New file.
22531         * tests/t-gmpmax.c: New file.
22532         * tests/Makefile.am (check_PROGRAMS): Add them.
22534         * mp_clz_tab.c: Compile the table only if longlong.h says it's needed;
22535         add an internal-use-only comment.
22536         * tune/common.c: Force a __clz_tab for convenience when testing.
22538         * mpn/x86/pentium/gmp-mparam.h, mpn/x86/pentium/mmx/gmp-mparam.h: Add
22539         COUNT_LEADING_ZEROS_NEED_CLZ_TAB, for mod_1.asm.
22541         * longlong.h (count_leading_zeros) [pentium]: Decide to go with float
22542         method for p54.
22543         (count_leading_zeros) [alpha]: Add COUNT_LEADING_ZEROS_NEED_CLZ_TAB.
22544         (__clz_tab): Provide a prototype only if it's needed.
22546         * tests/trace.c (mpz_trace): Don't use = on structures.
22547         (mpn_trace): Set _mp_alloc when creating mpz.
22549 2001-06-12  Kevin Ryde  <kevin@swox.se>
22551         * mpn/x86/divrem_1.asm: Amend some comments about P5 speed.
22553         * tune/README: Clarify reconfigure on gmp-mparam.h update.
22555         * mpn/x86/p6/copyd.asm: New file.
22556         * mpn/x86/p6/README: Update copyd and mod_1.
22557         * mpn/x86/copyd.asm: Amend some comments.
22559         * gmp-impl.h (__builtin_constant_p): Add dummy for non-gcc.
22560         (mpn_incr_u, mpn_decr_u): Recognise incr==1 at compile time in the
22561         generic code on gcc.
22563         * gmp-impl.h (ASSERT_ZERO_P, ASSERT_MPN_NONZERO_P): New macros.
22564         * mpn/generic/gcd_1.c, mpn/generic/mul_fft.c: Use them.
22565         * mpz/get_d.c: Add a private mpn_zero_p.
22566         * mpfr/trunc.c: Use own mpn_zero_p.
22567         * tune/speed.h (SPEED_ROUTINE_MPN_GCD_1N): Use refmpn_zero_p.
22568         * gmp-impl.h (mpn_zero_p): Remove, no longer needed.
22570         * gmp-h.in, gmp-impl.h: Move MPN_CMP to gmp.h as __GMPN_CMP, leave an
22571         MPN_CMP alias in gmp-impl.h.
22572         * gmp-h.in (mpn_cmp): Add an inline version.
22573         * mpn/generic/cmp.c: Use __GMP_FORCE_mpn_cmp to get code from gmp.h.
22575         * acinclude.m4 (GMP_C_ATTRIBUTE_MODE): New macro.
22576         * configure.in: Call it.
22577         * gmp-impl.h (SItype etc): Use it.
22579         * randraw.c (lc): Change mpn_mul_basecase->mpn_mul,
22580         mpn_incr_u->MPN_INCR_U, abort->ASSERT_ALWAYS(0).
22582         * longlong.h (count_leading_zeros) [pentiumpro]: Work around a partial
22583         register stall on gcc < 3.
22585         * gmp.texi (Introduction to GMP): Add IA-64.
22586         (Notes for Particular Systems): i386 means generic x86.
22588         * tests/t-modlinv.c: Use tests_start and tests_end.
22590 2001-06-10  Kevin Ryde  <kevin@swox.se>
22592         * gmp.texi (Number Theoretic Functions): mpz_jacobi only defined for b
22593         odd.  Separate the jacobi/legendre/kronecker descriptions.
22594         (Low-level Functions): Document mpn_mul_1 "incr" overlaps.
22595         (Language Bindings): New chapter.
22597         * mpz/jacobi.c: Don't retaining old behaviour of mpz_jacobi on even b
22598         (it wasn't documented in 3.1.1).
22599         * mpz/jacobi.c, gmp-h.in (mpz_kronecker, mpz_legendre): Remove
22600         separate entrypoints, just #define to mpz_jacobi.
22601         * compat.c (__gmpz_legendre): Add compatibility entrypoint.
22603         * mpn/generic/mul_1.c: Allow "incr" style overlaps.
22604         * tests/devel/try.c (param_init): Test this.
22606         * mpf/mul_ui.c: Do size==0 test earlier.
22608 2001-06-08  Kevin Ryde  <kevin@swox.se>
22610         * gmp-impl.h (ULONG_HIGHBIT, UINT_HIGHBIT, USHRT_HIGHBIT): Cast
22611         ULONG_MAX etc to unsigned long etc before attempting to right shift.
22613         * acinclude.m4 (GMP_ASM_LSYM_PREFIX): Add an AC_DEFINE of LSYM_PREFIX.
22614         * gmp-impl.h (ASM_L): New macro.
22615         (mpn_incr_u, mpn_decr_u, MPN_INCR_U, MPN_DECR_U): Add i386 optimized
22616         versions.
22618         * mpn/hppa/*.s,S,asm: Use .label so the code works with gas on hppa
22619         GNU/Linux too, reported by LaMont Jones <lamont@smallone.fc.hp.com>.
22620         * mpn/hppa/README: Add some notes on this.
22621         * acinclude.m4 (GMP_ASM_LABEL_SUFFIX): Ditto.
22623         * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add dive_1.c,
22624         fib2_ui.c.
22626         * tests/mpn/t-iord_u.c: New file.
22627         * tests/mpn/Makefile.am (check_PROGRAMS): Add it.
22629         * configure.in (mips*-*-irix[6789]*): Make ABI=n32 the default, same
22630         as in gmp 3.1.
22631         * gmp.texi (ABI and ISA): Update.
22633         * gmp.texi (Build Options): Misc tweaks.
22634         (Notes for Particular Systems): Describe windows DLL handling.
22635         (Known Build Problems): DJGPP needs bash 2.04.
22636         (Number Theoretic Functions): mpz_invert returns 0<=r<modulus; add
22637         mpz_fib2_ui, mpz_lucnum_ui, mpz_lucnum2_ui.
22638         (Fibonacci Numbers Algorithm): Update for new formulas used.
22639         (Lucas Numbers Algorithm): New section.
22641         * tune/speed.c,speed.h,common.c,many.pl: Add mpn_fib2_ui, mpz_fib2_ui,
22642         mpz_lucnum_ui, mpz_lucnum2_ui.
22643         * demos/expr/exprz.c,README: Add lucnum.
22644         * demos/perl/GMP.pm,GMP.xs,GMP/Mpz.pm,test.pl: Add fib2, lucnum,
22645         lucnum2.
22647         * tests/mpz/t-lucnum_ui.c: New file.
22648         * tests/mpz/Makefile.am (check_PROGRAMS): Add it.
22649         * tests/mpz/t-fib_ui.c: Check mpz_fib2_ui too, updates for new style
22650         MPN_FIB2_SIZE.
22652         * tune/tuneup.c, tune/Makefile.am, gmp-impl.h, mpn/*/gmp-mparam.h:
22653         Remove FIB_THRESHOLD, no longer required.
22655         * mpz/fib2_ui.c, mpz/lucnum_ui.c mpz/lucnum2_ui.c: New files.
22656         * Makefile.am, mpz/Makefile.am: Add them.
22657         * gmp-h.in (mpz_fib2_ui, mpz_lucnum_ui, mpz_lucnum2_ui): Add
22658         prototypes.
22660         * mpn/generic/fib2_ui.c: New file.
22661         * configure.in (gmp_mpn_functions): Add it.
22662         * gmp-impl.h (mpn_fib2_ui, FIB_TABLE, etc): Add these.
22663         * mpz/fib_ui.c: Rewrite.
22665         * acinclude.m4 (GMP_C_SIZES): Fix _LONG_LONG_LIMB define for mp_limb_t
22666         size test.
22667         (GMP_FUNC_ALLOCA): Add dummy __GMP_BITS_PER_MP_LIMB for gmp-h.in work.
22669         * configure.in (CPPFLAGS): Remove -D__GMP_WITHIN_GMP, don't want it
22670         everywhere.
22671         * Makefile.am, mpn/Makefile.am, mpz/Makefile.am, mpq/Makefile.am,
22672         mpf/Makefile.am, mpbsd/Makefile.am (INCLUDES): Set -D__GMP_WITHIN_GMP.
22674         * configure.in (*-*-msdosdjgpp*): Forcibly disable shared libraries,
22675         to make libtests.la work.
22677         * acconfig.h (_LONG_LONG_LIMB, HAVE_MPFR): Remove dummy defines, no
22678         longer needed.
22680         * mpz/set_ui.c: Store to _mp_d[0] unconditionally.
22682 2001-05-27  Kevin Ryde  <kevin@swox.se>
22684         * configure.in, gmp-h.in, mp-h.in: Add support for windows DLLs.
22686 2001-05-26  Kevin Ryde  <kevin@swox.se>
22688         * gmp.texi (ABI and ISA, Reentrancy): Minor tweaks
22689         (Notes for Package Builds): Note gmp.h is a generated file.
22690         (Notes for Particular Systems): -march=pentiumpro is used for gcc
22691         2.95.4 and up.
22692         (Assembler Loop Unrolling): Mention non power-of-2 unrolling.
22693         (Internals): New chapter.
22694         * mpf/README: Remove file.
22696         * demos/expr/README: Miscellaneous rewordings.
22698         * demos/perl: New directory.
22699         * demos/Makefile.am: Add it.
22700         * demos/perl/INSTALL, Makefile.PL, GMP.pm, GMP.xs, typemap,
22701         GMP/Mpz.pm, GMP/Mpq.pm, GMP/mpf.pm, GMP/Rand.pm, sample.pl, test.pl:
22702         New files.
22704         * configure, aclocal.m4: Update to autoconf 2.50.
22706         * configure, aclocal.m4, ltmain.sh: Update to libtool 1.4.
22708         * configure, aclocal.m4, missing, ansi2knr.c, */Makefile.in: Update to
22709         automake 1.4f.
22710         * Makefile.am: Conditionalize mpfr in $(SUBDIRS) to handle mpfr.info.
22711         * mpfr/Makefile.am (INFO_DEPS): Remove previous mpfr.info handling.
22712         * mpn/Makefile.am (GENERIC_SOURCES): Remove this, just put mp_bases.c
22713         in libmpn_la_SOURCES.
22714         * tests/Makefile.am (tests.h): Move from EXTRA_HEADERS to
22715         libtests_la_SOURCES.
22716         * ltconfig: Remove file, no longer needed.
22718         * Makefile.am (gmp-impl.h, longlong.h, stack-alloc.h): Move from
22719         EXTRA_DIST to libgmp_la_SOURCES, so they get included in TAGS.
22720         * tests/rand/Makefile.am (gmpstat.h): Move to libstat_la_SOURCES
22721         similarly.
22723         * config.guess (68k-*-*): Use $SHELL not "sh", tweak some comments.
22725         * mpfr/mpfr.texi (Introduction to MPFR): Tweak table formatting, note
22726         non-free programs must be able to be re-linked.
22728 2001-05-20  Kevin Ryde  <kevin@swox.se>
22730         * mpn/powerpc64/addmul_1.asm, mpn/powerpc64/mul_1.asm,
22731         mpn/powerpc64/submul_1.asm: Add carry-in entrypoints.
22733 2001-05-17  Kevin Ryde  <kevin@swox.se>
22735         * gmp.texi (ge): Fix definition for info.
22736         (Notes for Particular Systems): Mention 68k dragonball and cpu32.
22737         (Efficiency): Add static linking, more about in-place operations,
22738         describe mpq+/-integer using addmul.
22739         (Reporting Bugs): A couple of words about self-contained reports.
22740         (Floating-point Functions): Note exponent limitations of mpf_get_str
22741         and mpf_set_str.
22742         (Initializing Floats): Clarify mpf_get_prec, mpf_set_prec and
22743         mpf_set_prec_raw a bit.
22744         (Float Comparison): Note current mpf_eq deficiencies.
22746         * gmp-h.in (__GMP_HAVE_CONST, __GMP_HAVE_PROTOTYPES,
22747         __GMP_HAVE_TOKEN_PASTE): Merge GNU ansidecl.h tests for ANSI compilers.
22748         * demos/expr/expr-impl-h.in: Ditto.
22750         * gmp-impl.h (BITS_PER_MP_LIMB): Define from __GMP_BITS_PER_MP_LIMB if
22751         not already in gmp-mparam.h.
22752         * tests/t-constants.c (BITS_PER_MP_LIMB, __GMP_BITS_PER_MP_LIMB):
22753         Check these are the same.
22755         * gmp-h.in (mpf_get_default_prec, mpf_get_prec, mpf_set_default_prec,
22756         mpf_set_prec_raw): Provide "extern inline" versions, use __GMPF on the
22757         macros.
22758         * mpf/get_dfl_prc.c, mpf/get_prc.c, mpf/set_dfl_prc.c,
22759         mpf/set_prc_raw.c: Get code from gmp.h using __GMP_FORCE.
22761         * gmp-h.in, gmp-impl.h (__gmp_default_fp_limb_precision): Move from
22762         gmp-impl.h to gmp-h.in.
22763         (__GMPF_BITS_TO_PREC, __GMPF_PREC_TO_BITS): Ditto, and use __GMPF
22764         prefix and add a couple of casts.
22765         * gmp-h.in (__GMP_MAX): New macro.
22766         * mpf/init2.c mpf/set_prc.c: Update for __GMPF prefix.
22768         * gmp-h.in (__GMP_BITS_PER_MP_LIMB): New templated define.
22769         * acinclude.m4 (GMP_C_SIZES): Add AC_SUBST __GMP_BITS_PER_MP_LIMB,
22770         remove AC_DEFINE BITS_PER_MP_LIMB.
22772 2001-05-13  Kevin Ryde  <kevin@swox.se>
22774         * gmp-h.in, gmp.texi, Makefile.am, mpz/Makefile.am, tests/mpz/t-pow.c:
22775         Remove mpz_si_pow_ui, pending full si support.
22776         * mpz/si_pow_ui.c: Remove file.
22778 2001-05-11  Kevin Ryde  <kevin@swox.se>
22780         * mpn/x86/pentium/dive_1.asm: New file.
22782         * mpn/powerpc32/umul.asm: Use r on registers.
22783         * mpn/powerpc64/umul.asm: New file.
22784         * configure.in (powerpc*-*-*): Enable umul in extra_functions.
22786         * tests/refmpn.c, tests/tests.h (refmpn_umul_ppmm): Use same arguments
22787         as normal mpn_umul_ppmm.
22788         (refmpn_mul_1c): Update.
22789         * tests/devel/try.c, tune/many.pl: Add some umul_ppmm testing support.
22791         * mpn/x86/k6/mmx/popham.asm, mpn/x86/k7/mmx/popham.asm: Don't support
22792         size==0.
22793         * mpn/x86/pentium/popcount.asm, mpn/x86/pentium/hamdist.asm: Ditto,
22794         and shave a couple of cycles from the PIC entry code.
22796         * mpz/mul.c: Use mpn_mul_1 for size==1 and mpn_mul_2 (if available)
22797         for size==2, to avoid copying; do vsize==0 test earlier.
22799         * mpf/sub.c: Test r!=u before calling mpf_set.
22800         * mpf/add.c: Ditto, and share mpf_set between usize==0 and vsize==0.
22802         * mpn/generic/tdiv_qr.c, mpq/get_d.c, mpf/div.c, mpf/set_q.c,
22803         mpf/set_str.c, mpf/ui_div.c: Test for high bit set, not for
22804         count_leading_zeros zero.
22806         * acinclude.m4 (GMP_PROG_AR, GMP_PROG_NM): Print a message if extra
22807         flags are added.
22809         * tests/mpz/t-mul_i.c: New file.
22810         * tests/mpz/Makefile.am: Add it.
22812         * mpz/mul_siui.c (mpz_mul_si): Fix for -0x80..00 on long long limb.
22814         * gmp-h.in (mpf_set_si, mpf_set_ui): Revert last change, set exp to 0
22815         when n==0.
22816         * mpf/ceilfloor.c, mpf/trunc.c: Fix exp to 0 when setting r to 0.
22817         * gmp-impl.h (MPF_CHECK_FORMAT): Check exp==0 when size==0.
22819 2001-05-07  Kevin Ryde  <kevin@swox.se>
22821         * gmp-h.in (mpf_set_si, mpf_set_ui): Don't bother setting _mp_exp to 0
22822         when n==0 (use 1 unconditionally).
22823         * tests/mpf/t-misc.c (check_mpf_set_si): Don't demand anything of
22824         _mp_exp when _mp_size is zero.
22826         * mpn/x86/README: Note gas _GLOBAL_OFFSET_TABLE_ with leal problem.
22828         * gmp-h.in (mpz_fits_uint_p, mpz_fits_ulong_p, mpz_fits_ushort_p):
22829         Provide these as "extern inline"s.
22830         (__GMP_UINT_MAX, __GMP_ULONG_MAX, __GMP_USHRT_MAX): New macros.
22831         (mpz_popcount): Use __GMP_ULONG_MAX.
22832         * gmp-impl.h (UINT_MAX, ULONG_MAX, USHRT_MAX): Use __GMP_U*_MAX, if
22833         not already defined.
22834         * mpz/fits_u.c: Use the code from gmp.h.
22836 2001-05-06  Kevin Ryde  <kevin@swox.se>
22838         * mpn/x86/k7/dive_1.asm: New file.
22839         * mpn/x86/k7/gcd_1.asm: New file.
22840         * mpn/asm-defs.m4 (m4_count_trailing_zeros): New macro.
22842         * gmp-h.in (mpz_get_ui, mpz_getlimbn, mpz_set_q, mpz_perfect_square_p,
22843         mpz_popcount, mpz_size, mpf_set_ui, mpf_set_si, mpf_size): Provide
22844         these as "extern inlines".
22845         Use just one big extern "C" block.
22846         * mpz/getlimbn.c, mpz/get_ui.c, mpz/perfsqr.c, mpz/popcount.c
22847         mpz/set_q.c, mpz/size.c, mpf/set_si.c, mpf/set_ui.c, mpf/size.c: Use
22848         __GMP_FORCE to get code from gmp.h.
22850 2001-05-03  Kevin Ryde  <kevin@swox.se>
22852         * extract-dbl.c: Add ASSERT d>=0.
22854         * gmp.texi (Efficiency): Add mpz_addmul etc for mpz+=integer, add
22855         mpz_neg etc in-place.
22856         (Integer Arithmetic): Add mpz_addmul, mpz_submul, mpz_submul_ui.
22857         (Initializing Rationals): Add mpq_set_str.
22858         (Low-level Functions): mpn_set_str requires strsize >= 1.
22860         * gmp-h.in (__GMP_EXTERN_INLINE, __GMP_ABS): New macros.
22861         (mpz_abs, mpq_abs, mpf_abs, mpz_neg, mpq_neg, mpf_neg): Provide inline
22862         versions.
22863         * mpz/abs.c, mpq/abs.c, mpf/abs.c, mpz/neg.c, mpq/neg.c, mpf/neg.c:
22864         Add suitable __GMP_FORCE to turn off inline versions.
22866         * tests/mpz/t-aorsmul.c,t-cmp_d.c,t-popcount,t-set_str.c: New files.
22867         * tests/mpz/Makefile.am: Add them.
22869         * mpz/aorsmul_i.c: New file, rewrite of addmul_ui.c.  Add
22870         mpz_submul_ui entrypoint, share more code between some of the
22871         conditionals, use mpn_mul_1c if available.
22872         * mpz/addmul_ui.c: Remove file.
22873         * mpz/aorsmul.c: New file.
22874         * Makefile.am, mpz/Makefile.am: Update.
22875         * gmp-h.in (mpz_addmul, mpz_submul, mpz_submul_ui): Add prototypes.
22876         * gmp-impl.h (mpz_aorsmul_1): Add prototype.
22878         * tests/mpq/t-set_str.c: New file.
22879         * tests/mpq/Makefile.am: Add it.
22881         * mpq/set_str.c: New file.
22882         * Makefile.am, mpq/Makefile.am: Add it.
22883         * gmp-h.in (mpq_set_str): Add prototype.
22885         * mpz/set_str.c: Fix for trailing white space on zero, eg. "0 ".
22886         * mpn/generic/set_str.c: Add ASSERT str_len >= 1.
22888         * gmp-h.in, gmp-impl.h (mpn_incr_u, mpn_decr_u): Move to gmp-impl.h.
22889         * gmp-impl.h (MPN_INCR_U, MPN_DECR_U): New macros.
22891 2001-04-30  Kevin Ryde  <kevin@swox.se>
22893         * tests/mpz/t-lcm.c: New file.
22894         * tests/mpz/Makefile.am (check_PROGRAMS): Add it.
22896         * mpz/lcm.c: Add one limb special case.
22898         * mpz/lcm_ui.c: New file.
22899         * Makefile.am, mpz/Makefile.am: Add it.
22900         * gmp-h.in (mpz_lcm_ui): Add prototype.
22901         * gmp.texi (Number Theoretic Functions): Add mpz_lcm_ui, document lcm
22902         now always positive.
22904         * mp-h.in (mp_size_t, mp_exp_t): Fix typedefs to match gmp-h.in.
22906         * gmp-h.in (mpn_add_1, mpn_add, mpn_sub_1, mpn_sub): Remove K&R
22907         function defines (ansi2knr will handle mpn/inline.c, and just ansi is
22908         enough for gcc extern inline).
22910         * gmp-h.in (__GMP_HAVE_TOKEN_PASTE): New macro.
22911         (__MPN): Use it.
22912         * gmp-impl.h (CNST_LIMB): Ditto.
22914         * gmp-h.in, mp-h.in (__gmp_const, __gmp_signed, _PROTO, __MPN): Use
22915         ANSI forms on Microsoft C.
22916         (__GMP_HAVE_CONST): New define.
22917         * gmp-impl.h (const, signed): Use it.
22919         * demos/expr/expr-impl-h.in (<stdarg.h>): Use this with Microsoft C.
22920         (HAVE_STDARG): New define.
22921         * demos/expr/expr.c,exprz.c,exprq.c,exprf.c,exprfr.c: Use it.
22923         * acinclude.m4 (GMP_C_STDARG): New macro.
22924         * configure.in: Call it.
22925         * rand.c: Use it.
22927         * configure.in (AC_PROG_CC_STDC): New test.
22929 2001-04-25  Kevin Ryde  <kevin@swox.se>
22931         * mpn/x86/k6/mmx/dive_1.asm: New file.
22932         * mpn/x86/x86-defs.m4 (Zdisp): Two more insns.
22934         * mpn/x86/pentium/mul_2.asm: New file.
22935         * mpn/asm-defs.m4: Add define_mpn(mul_2).
22936         * acconfig.h (HAVE_NATIVE_mpn_divexact_1, mul_2): Add templates.
22938         * configure.in (ABI): Use AC_ARG_VAR.
22940         * tests/devel/try.c: Run reference function when validate fails.
22942         * mpq/get_str.c: Fixes for negative bases.
22943         * tests/mpq/t-get_str.c: Check negative bases.
22944         * tests/misc.c,tests.h (__gmp_allocate_strdup, strtoupper): New
22945         functions.
22947 2001-04-24  Torbjorn Granlund  <tege@swox.com>
22949         * mpz/lcm.c (mpz_lcm): Make result always positive.
22951         * gmp-h.in (mpz_inp_binary, mpz_out_binary): Remove declarations.
22953 2001-04-22  Kevin Ryde  <kevin@swox.se>
22955         * mpn/powerpc64/addsub_n.asm: Use config.m4 not asm-syntax.m4.
22957         * mpz/cmp_d.c, mpz/cmpabs_d.c: New files.
22958         * Makefile.am, mpz/Makefile.am: Add them.
22959         * mpf/cmp_d.c, mpf/get_dfl_prec.c: New files.
22960         * Makefile.am, mpf/Makefile.am: Add them.
22961         * gmp-h.in (mpz_cmp_d, mpz_cmpabs_d, mpf_cmp_d, mpf_get_default_prec):
22962         Add prototypes.
22963         * gmp.texi: Add documentation.
22965         * mpf/set_prc.c: Avoid a realloc call if already the right precision.
22967         * gmp-impl.h (MPF_BITS_TO_PREC, MPF_PREC_TO_BITS): New macros.
22968         * mpf/get_prc.c, init2.c, set_dfl_prec.c, set_prc.c, set_prc_raw.c:
22969         Use them.
22971 2001-04-20  Kevin Ryde  <kevin@swox.se>
22973         * tests/devel/try.c: Don't test size==0 on mpn_popcount and
22974         mpn_hamdist; add testing for mpn_divexact_1; print some limb values
22975         with mpn_trace not printf.
22977         * mpz/popcount.c, mpz/hamdist.c: Don't pass size==0 to mpn_popcount
22978         and mpn_hamdist.
22979         * mpn/generic/popham.c: Don't support size==0.
22981         * config.guess (m68k-*-*): Detect m68010, return m68360 for cpu32,
22982         cleanup the nesting a bit.
22984         * gmp.texi (Integer Division): Fix mpz_congruent_2exp_p "c" type.
22985         (Integer Division): Add mpz_divexact_ui.
22986         (Number Theoretic Functions): Fix mpz_nextprime return type.
22987         (Exact Remainder): Divisibility tests now implemented.
22988         And more index entries in a few places.
22990         * tests/mpz/dive_ui.c: New file.
22991         * tests/mpz/Makefile.am (check_PROGRAMS): Add it.
22993         * mpz/dive_ui.c: New file.
22994         * Makefile.am, mpz/Makefile.am: Add it.
22995         * gmp-h.in (mpz_divexact_ui): Add prototype.
22997         * tune/many.pl, tune/speed.h: Add special mpn_back_to_back for
22998         development.
23000         * gmp-impl.h (MPN_DIVREM_OR_DIVEXACT_1): New macro.
23001         * mpz/divexact.c: Use it.
23003         * gmp-impl.h (DIVEXACT_1_THRESHOLD): New threshold.
23004         * tune/tuneup.c: Tune it.
23006         * tune/speed.c,speed.h,common.c,many.pl: Add measuring of
23007         mpn_divexact_1, mpn_copyi, mpn_copyd.
23009         * mpn/generic/dive_1.c: New file.
23010         * configure.in (gmp_mpn_functions): Add it.
23011         * gmp-impl.h (mpn_divexact_1): Add prototype.
23012         * mpn/asm-defs.m4: Add define_mpn(divexact_1).
23014         * tests/mpn: New directory.
23015         * tests/Makefile.am: Add it.
23016         * tests/mpn/Makefile.am: New file.
23017         * configure.in (AC_OUTPUT): Add it.
23018         * tests/mpn/t-asmtype.c: New file.
23020         * configure, config.in: Update to autoconf 2.49d.
23022         * configure.in, gmp-h.in, mp-h.in, demos/expr/expr-impl-h.in: Revert
23023         to generating gmp.h, mp.h and expr-impl.h with AC_OUTPUT and AC_SUBST.
23025         * configure.in (m68*-*-*): Oops, m683?2 is 68000, m68360 is cpu32.
23026         * mpn/m68k/m68k-defs.m4 (scale_available_p): Ditto.
23028         * configure.in (underscore, asm_align): Remove these variables, unused.
23029         (GMP_ASM_*): Sort by AC_REQUIREs, to avoid duplication.
23030         * acinclude.m4 (GMP_ASM_UNDERSCORE, GMP_ASM_ALIGN_LOG): Remove support
23031         for actions, no longer needed.
23033 2001-04-17  Kevin Ryde  <kevin@swox.se>
23035         * config.guess (m68k-*-*): Look for cpu in linux kernel /proc/cpuinfo.
23037         * acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO): The -mpentiumpro problem is
23038         fixed in 2.95.4, so test for that.
23039         (GMP_ASM_TYPE): Amend some comments.
23041         * tune/freq.c (speed_cpu_frequency_sysctl): Avoid having unused
23042         variables on GNU/Linux.
23044         * mpn/asm-defs.m4 (m4_instruction_wrapper): Fix a quoting problem if
23045         the name of the file is a macro.
23047 2001-04-15  Kevin Ryde  <kevin@swox.se>
23049         * mpn/powerpc64/*.asm: Add speeds on ppc630.
23051         * acconfig.h: Add dummy templates for _LONG_LONG_LIMB and HAVE_MPFR.
23052         * configure.in: Ensure config.in is the last AM_CONFIG_HEADER,
23053         which autoheader requires.
23055         * mpn/x86/pentium/popcount.asm: New file.
23056         * mpn/x86/pentium/hamdist.asm: New file.
23058         * mpn/asm-defs.m4: (m4_popcount): New macro.
23059         Amend a few comments elsewhere.
23061         * acinclude.m4 (GMP_ASM_RODATA): If possible, grep compiler output for
23062         the right directive.
23064         * tune/speed.c: Print clock speed in MHz, not cycle time.
23066         * configure.in (AC_CHECK_HEADERS): Check for sys/processor.h.
23067         * tune/freq.c (speed_cpu_frequency_processor_info): Require
23068         <sys/processor.h> to exist, to differentiate the different
23069         processor_info on Darwin.
23070         (speed_cpu_frequency_sysctlbyname): Remove hw.model test which is in
23071         speed_cpu_frequency_sysctl.
23072         (speed_cpu_frequency_sysctl): Add hw.cpufrequency for Darwin.
23074         * gmp-impl.h (MPN_LOGOPS_N_INLINE, mpn_and_n ... mpn_xnor_n): Use a
23075         single expression argument for the different operations, necessary for
23076         the Darwin "smart" preprocessor.
23078         * mpn/m68k/t-m68k-defs.pl: Allow white space in m4_definsn and
23079         m4_defbranch.
23081         * tune/many.pl: Change RM_TMP_S to RM_TMP to match mpn/Makeasm.am,
23082         avoid a possibly undefined array in a diagnostic, add more renaming to
23083         hamdist.
23085 2001-04-13  Kevin Ryde  <kevin@swox.se>
23087         * ltmain.sh, aclocal.m4, configure, config.in: Update to libtool 1.3d.
23088         * configure.in: Change ac_ to lt_ in lt_cv_archive_cmds_need_lc and
23089         lt_cv_proc_cc_pic.
23091         * config.guess (m68*-*-*): Detect exact cpu with BSD sysctl hw.model,
23092         detect 68000/68010 with trapf, detect 68302 with bfffo.
23094 2001-04-11  Kevin Ryde  <kevin@swox.se>
23096         * acinclude.m4 (GMP_ASM_M68K_INSTRUCTION, GMP_ASM_M68K_ADDRESSING,
23097         GMP_ASM_M68K_BRANCHES): New macros.
23098         * configure.in: Use them, remove old 68k configs, use mc68020 udiv and
23099         umul.
23101         * mpn/m68k/m68k-defs.m4: New file.
23102         * mpn/m68k/t-m68k-defs.pl: New file.
23103         * mpn/m68k/*.asm: New files, converted from .S.  Merge add_n and sub_n
23104         to aors_n, ditto mc68020 addmul_1 and submul_1 to aorsmul_1.  No
23105         object code changes (except .type and .size now used on NetBSD 1.4).
23106         * mpn/m68k/README: New file.
23107         * mpn/m68k/*.S, */*.S, syntax.h: Remove files.
23109         * configure.in (m68*-*-netbsd1.4*): Pretend getrusage doesn't exist.
23110         * tune/README: Update.
23112         * configure.in (powerpc*-*-*): For the benefit of Darwin 1.3, add cc
23113         to cclist, make gcc_cflags -Wa,-mppc optional.
23115 2001-04-06  Kevin Ryde  <kevin@swox.se>
23117         * mpn/lisp/gmpasm-mode.el (gmpasm-comment-start-regexp): Add | for 68k.
23118         (gmpasm-mode-syntax-table): Add to comments.
23120         * tests/mpz/reuse.c (dsi_div_func_names): Add names for cdiv_[qr]_2exp.
23122 2001-04-04  Kevin Ryde  <kevin@swox.se>
23124         * acinclude.m4 (GMP_M4_M4WRAP_SPURIOUS): Fix test so as to actually
23125         detect the problem, add notes on m68k netbsd 1.4.1.
23127         * gmp.texi (Compatibility with older versions): Note libmp
23128         compatibility.
23130 2001-04-03  Kevin Ryde  <kevin@swox.se>
23132         * tests/mpz/reuse.c: Add mpz_cdiv_q_2exp and mpz_cdiv_r_2exp.
23134         * tests/mpz/t-pow.c: Drag in refmpn.o when testing mpz_pow_ui etc with
23135         refmpn_mul_2.
23137         * tune/speed.c,speed.h,common.c,many.pl: Add measuring of mpn_com_n
23138         and mpn_mul_2.
23139         * tests/devel/try.c: Add testing of mpn_mul_2, and a
23140         DATA_MULTIPLE_DIVISOR attribute.
23142         * gmp.texi (Build Options): List more m68k's.
23143         (Build Options): Add cross reference to tex2html.
23144         (Notes for Particular Systems): Add m68k means 68020 or up.
23145         (Rational Conversions): New section, with mpq_get_d, mpq_set_d and
23146         mpq_set_f from Miscellaneous, and new mpq_set_str.
23147         (Applying Integer Functions): Move mpq_get_num, mpq_get_den,
23148         mpq_set_num and mpq_set_den from Misc.
23149         (Miscellaneous Rational Functions): Remove section.
23150         (Custom Allocation): Partial rewrite for various clarifications.
23151         (References): Improve line breaks near URLs.
23153         * acinclude.m4 (GMP_GCC_M68K_OPTIMIZE): New macro.
23154         * configure.in (m68*-*-*): Use it to run gcc 2.95.x at -O not -O2.
23155         (m680?0-*-*, m683?2-*-*, m68360-*-*): Add optional gcc -m options.
23157         * tests/mpz/t-cmp.c: New file.
23158         * tests/mpz/t-sizeinbase.c: New file.
23159         * tests/mpz/Makefile.am: Add them.
23161         * gmp-impl.h (MPN_CMP): New macro.
23162         * mpz/cmp.c,cmpabs.c: Use it, and minor cleanups too.
23164         * tests/mpq/t-equal.c: New file.
23165         * tests/mpq/t-get_str.c: New file.
23166         * tests/mpq/Makefile.am: Add them.
23168         * mpq/get_str.c: New file.
23169         * Makefile.am, mpq/Makefile.am: Add it.
23170         * gmp-h.in (mpq_get_str): Add prototype.
23172         * mpq/equal.c: Rewrite using inline compare loops.
23174         * tests/refmpn.c,tests.h (refmpn_mul_2): Fix parameter order.
23175         * mpz/n_pow_ui.c: Fix mpn_mul_2 calls parameter order.
23177 2001-03-29  Kevin Ryde  <kevin@swox.se>
23179         * tests/mpf/t-trunc.c: New file.
23180         * tests/mpf/Makefile.am (check_PROGRAMS): Add it.
23181         * gmp-impl.h (MPF_CHECK_FORMAT): New macro.
23183         * mpf/trunc.c: New file, rewrite of integer.c, preserve prec+1 in
23184         copy, don't copy if unnecessary.
23185         * mpf/ceilfloor.c: New file likewise, and use common subroutine for
23186         ceil and floor.
23187         * mpf/integer.c: Remove file.
23188         * Makefile.am, mpf/Makefile.am, macos/Makefile.in: Update.
23190         * acinclude.m4 (GMP_GCC_VERSION_GE): New macro.
23191         (GMP_GCC_MARCH_PENTIUMPRO): Use it, remove CCBASE parameter (don't
23192         bother checking it's gcc).
23193         (GMP_GCC_ARM_UMODSI): New macro.
23194         * configure.in (GMP_GCC_MARCH_PENTIUMPRO): Update parameters.
23195         (arm*-*-*): Use GMP_GCC_ARM_UMODSI.
23196         * gmp.texi (Notes for Particular Systems): Add arm gcc requirements.
23198 2001-03-28  Kevin Ryde  <kevin@swox.se>
23200         * gmp.texi (Converting Integers): Document mpz_getlimbn using absolute
23201         value and giving zero for N out of range, move to end of section.
23203         * tests/refmpn.c (refmpn_tdiv_qr): Use refmpn_divmod_1 rather than
23204         refmpn_divrem_1.
23205         * tests/tests.h: Add some prototypes that were missing.
23207         * mpz/tdiv_q_ui.c: Remove a comment that belonged to mpz_tdiv_r_ui.
23209 2001-03-26  Torbjorn Granlund  <tege@swox.com>
23211         * mpn/generic/gcdext.c: Handle carry overflow after m*n multiply code
23212         in both arms.  Partially combine multiply arms.
23214 2001-03-24  Kevin Ryde  <kevin@swox.se>
23216         * longlong.h: Add comments to P5 count_leading_zeros.
23218         * demos/expr/exprz.c,t-expr.c,README: Add congruent_p and divisible_p.
23220 2001-03-23  Kevin Ryde  <kevin@swox.se>
23222         * gmp.texi (GMPceil, GMPfloor, ge, le): New macros.
23223         (Integer Division, mpn_cmp, mpn_sqrtrem, Algorithms): Use them.
23224         (mpn_bdivmod): Refer to mp_bits_per_limb, not BITS_PER_MP_LIMB, and
23225         improve formatting a bit.
23226         (mpn_lshift, mpn_rshift): Clarify the return values, and use {rp,n}
23227         for the destination.
23228         Miscellaneous minor rewordings in a few places.
23230         * mpn/arm/arm-defs.m4: New file.
23231         * configure.in (arm*-*-*): Use it.
23232         * mpn/arm/*.asm: Use changecom and registers from arm-defs.m4, use L()
23233         for local labels.
23235         * mpn/x86/k6/mmx/com_n.asm: Relax code alignment (same speed).
23237         * gmp-h.in (__GMP_ATTRIBUTE_PURE): Use __pure__ to avoid application
23238         namespace.
23240         * gmp-impl.h (ABS): Add parens around argument.
23242 2001-03-20  Kevin Ryde  <kevin@swox.se>
23244         * acinclude.m4 (GMP_PROG_M4): Use AC_ARG_VAR on $M4.
23246         * acinclude.m4 (GMP_M4_M4WRAP_SPURIOUS): New macro.
23247         * configure.in: Use it.
23248         * mpn/asm-defs.m4: Ditto.
23250 2001-03-18  Kevin Ryde  <kevin@swox.se>
23252         * mpn/x86/pentium/logops_n.asm: New file.
23254         * mpn/x86/k6/k62mmx/copyd.asm: Rewrite, smaller and simpler, faster on
23255         small sizes, slower on big sizes (about half the time).
23256         * mpn/x86/k6/k62mmx/copyi.asm: Remove file, in favour of generic x86.
23257         * mpn/x86/copyi.asm: Add some comments.
23258         * mpn/x86/k6/README: Update.
23260         * mpn/x86/k6/gcd_1.asm: New file.
23262         * gmp-impl.h (NEG_MOD): Fix type of __dnorm.
23264         * acinclude.m4 (GMP_C_SIZES): Fix use of __GMP_WITHIN_CONFIGURE.
23266 2001-03-15  Kevin Ryde  <kevin@swox.se>
23268         * gmp.texi (GMPabs): New macro.
23269         (Float Comparison - mpf_reldiff): Use it.
23270         (Integer Comparisons - mpz_cmpabs): Ditto, puts "abs" in info.
23271         (Reentrancy): Update notes on old random functions.
23272         (Karatsuba Multiplication): Better characterize the effect of basecase
23273         speedups on the thresholds, pointed out by Torbjorn.
23275         * tune/README: Notes on the 1x1 div threshold for mpn_gcd_1.
23277         * tests/misc.c (mpz_pow2abs_p, mpz_flipbit, mpz_errandomb,
23278         mpz_errandomb_nonzero, mpz_negrandom): New functions.
23279         (mpz_erandomb, mpz_erandomb_nonzero): Use urandom().
23280         * tests/spinner.c (spinner_wanted, spinner_tick): Make global.
23281         * tests/tests.h: Update prototypes.
23283         * tests/mpz/t-cong.c, tests/mpz/t-cong_2exp.c: New files.
23284         * tests/mpz/Makefile.am (check_PROGRAMS): Add them.
23286         * mpz/cong.c, mpz/cong_2exp.c, mpz/cong_ui.c: New files.
23287         * Makefile.am, mpz/Makefile.am: Add them.
23288         * gmp-impl.h (NEG_MOD): New macro.
23289         * gmp-h.in (mpz_congruent_p, mpz_congruent_2exp_p,
23290         mpz_congruent_ui_p): Add prototypes.
23291         * gmp.texi (Integer Division, Efficiency): Add documentation.
23293         * mpq/aors.c: No need for ABS on denominator sizes.
23295         * gmp-impl.h (mpn_divisible_p): Use __MPN.
23297         * gmp-impl.h (LOW_ZEROS_MASK): New macro.
23298         * mpz/divis_ui.c, mpn/generic/divis.c: Use it.
23300         * mpz/setbit.c: Fix normalization for case of a negative ending up
23301         with a zero high limb.
23302         * tests/mpz/bit.c (check_single): New test for this problem.
23304         * configure.in (none-*-*): Fix cclist for default ABI=long.
23306 2001-03-10  Kevin Ryde  <kevin@swox.se>
23308         * mpz/cfdiv_q_2exp.c: Don't scan for non-zero limbs if they don't
23309         matter to the rounding.
23311         * mpz/get_ui.c: Fetch _mp_d[0] unconditionally, so the code can come
23312         out branch-free.
23314 2001-03-08  Kevin Ryde  <kevin@swox.se>
23316         * tests/devel/try.c (param_init): Fix reference functions for and_n
23317         and nand_n.
23319         * tune/speed.c, tests/devel/try.c: Seed RANDS, not srandom etc.
23320         * configure.in (AC_CHECK_FUNCS): Remove srand48 and srandom.
23321         * macos/configure (coptions): Remove random/srandom, now unnecessary.
23323         * configure.in (gmp.h, mp.h, demos/expr/expr-impl.h): Generate using
23324         AM_CONFIG_HEADER.
23325         (_LONG_LONG_LIMB, HAVE_MPFR): Change to AC_DEFINEs.
23326         * gmp-h.in, mp-h.in, demos/expr/expr-impl-h.in: Change to #undef's.
23327         * acinclude.m4 (GMP_FUNC_ALLOCA, GMP_C_SIZES): Use gmp-h.in, not gmp.h.
23328         * Makefile.am (EXTRA_DIST): Remove gmp-h.in and mp-h.in, now done
23329         automatically.
23330         * acinclude.m4 (GMP_FUNC_ALLOCA), gmp-impl.h: Set and use
23331         __GMP_WITHIN_CONFIGURE rather than GMP_FUNC_ALLOCA_TEST.
23333         * mpf/random2.c: Use _gmp_rand and RANDS instead of random() for the
23334         exponent, ensures full range of values too.
23336         * tests/mpz/t-div_2exp.c (check_various): Start with d based on i, but
23337         don't let it go negative.
23339         * tune/tuneup.c (KARATSUBA_MUL_THRESHOLD): Limit probing to
23340         TOOM3_MUL_THRESHOLD_LIMIT, the size of the workspace in mul_n.c.
23341         Use a -1 with this too, so size<LIMIT not <=.
23343 2001-03-07  Torbjorn Granlund  <tege@swox.com>
23345         * mpn/cray/cfp/mul_1.c: Don't call mpn_add_n with size 0.
23346         * mpn/cray/cfp/addmul_1.c: Likewise.
23347         * mpn/cray/cfp/submul_1.c: Don't call mpn_sub_n with size 0.
23349         * tests/mpz/t-div_2exp.c (check_various): Start 2nd d loop from 0
23350         (avoid problems with Cray compilers).
23352 2001-03-06  Torbjorn Granlund  <tege@swox.com>
23354         * mpn/cray/ieee/submul_1.c: Don't call mpn_sub_n with size 0.
23356         * mpn/cray/ieee/mul_basecase.c: New file.
23357         * mpn/cray/ieee/sqr_basecase.c: New file, derived from mul_basecase.c.
23359 2001-03-06  Kevin Ryde  <kevin@swox.se>
23361         * tests/devel/try.c (pointer_setup): Allow dst_size == SIZE_SIZE2 for
23362         the benefit of mpn_tdiv_qr.
23364         * tune/tuneup.c (all): Start karatsuba probing at size==4, for the
23365         benefit of cray t90 ieee which has speed oddities at size==2.
23367         * gmp-impl.h (USE_LEADING_REGPARM): Use __GMP_GNUC_PREREQ.
23368         Use __GMP_ATTRIBUTE_PURE and ATTRIBUTE_CONST in a few places.
23370         * gmp-h.in (__GMP_GNUC_PREREQ) New macro.
23371         (__GMP_ATTRIBUTE_PURE): New macro, use it in many places.
23373         * gmp-impl.h, gmp-h.in (mpn_jacobi_base): Move prototype to
23374         gmp-impl.h, use ATTRIBUTE_CONST.
23376         * tune/speed.h (speed_cyclecounter): Inline asm version for i386.
23378         * mpz/cfdiv_r_2exp.c (cfdiv_r_2exp): Only reread "up" after second
23379         realloc, first is under w!=u.
23381 2001-03-05  Torbjorn Granlund  <tege@swox.com>
23383         * mpn/cray/sub_n.c: Rewrite using `majority' logic.
23385         * mpz/cfdiv_r_2exp.c (cfdiv_r_2exp): Reread `up' after realloc of w.
23387         * mpn/cray/ieee/mul_1.c: Rewrite.  Streamline multiplications;
23388         use `majority' logic.
23389         * mpn/cray/ieee/addmul_1.c: Likewise.
23391         * mpn/cray/add_n.c: Rewrite using `majority' logic.
23393 2001-03-04  Torbjorn Granlund  <tege@swox.com>
23395         * longlong.h (CRAY udiv_qrnnd): No longer conditional on CRAYMPP.
23396         (64-bit hppa add_ssaaaa): New.
23397         (64-bit hppa sub_ddmmss): New.
23399         * mpn/cray/ieee/invert_limb.c: New file.
23401         * gmp-impl.h (RANDS): Add a `,0' to make it compile on more compilers.
23403 2001-03-03  Kevin Ryde  <kevin@swox.se>
23405         * mpz/n_pow_ui.c (ULONG_PARITY): Move to gmp-impl.h.
23406         * gmp-impl.h (ULONG_PARITY): i386 part from n_pow_ui.c, new generic
23407         form by Torbjorn.
23409         * tests/mpz/t-div_2exp.c: New file, rewrite of t-2exp.c.
23410         * tests/mpz/t-2exp.c: Remove file.
23411         * tests/mpz/Makefile.am (check_PROGRAMS): Update.
23413         * gmp-h.in (mpz_cdiv_q_2exp, mpz_cdiv_q_2exp): Add prototypes.
23414         * gmp.texi (Integer Division): Add mpz_cdiv_q_2exp and mpz_cdiv_q_2exp.
23416         * mpz/cfdiv_q_2exp.c: New file, partial rewrite of fdiv_q_2exp.c, add
23417         mpz_cdiv_q_2exp entrypoint.
23418         * mpz/cfdiv_r_2exp.c: New file, rewrite of fdiv_r_2exp.c, use all mpn,
23419         add mpz_cdiv_r_2exp entrypoint.
23420         * mpz/fdiv_q_2exp.c, mpz/fdiv_r_2exp.c: Remove files.
23421         * mpz/Makefile.am (libmpz_la_SOURCES): Update.
23422         * Makefile.am (MPZ_OBJECTS): Ditto.
23424         * gmp-impl.h (USE_LEADING_REGPARM): Use __i386__ same as longlong.h
23425         (REGPARM_2_1, REGPARM_3_1, REGPARM_ATTR): New macros.
23426         * mpz/jacobi.c (jac_or_kron): Use them.
23428         * configure.in (HAVE_ABI_$ABI): Re-enable this for config.m4, with
23429         dots changed to underscores (necessary for hppa).
23431         * tests/mpz/t-divis.c, tests/mpz/t-divis_2exp.c: New files.
23432         * tests/mpz/Makefile.am (check_PROGRAMS): Add them.
23434         * gmp-h.in (mpz_divisible_p, mpz_divisible_ui_p,
23435         mpz_divisible_2exp_p): Add prototypes.
23436         * gmp.texi (Integer Division): Add mpz_divisible_p.
23437         (Efficiency): Add remarks about divisibility testing.
23439         * mpz/divis.c, mpz/divis_ui.c, mpz/divis_2exp.c: New files.
23440         * mpz/Makefile.am (libmpz_la_SOURCES): Add them.
23441         * Makefile.am (MPZ_OBJECTS): Ditto.
23443         * mpn/generic/divis.c: New file.
23444         * configure.in (gmp_mpn_functions): Add it.
23445         * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Ditto.
23446         * gmp-impl.h (mpn_divisible_p): Add prototype.
23448         * urandom.h: Remove file.
23449         * Makefile.am (EXTRA_DIST): Remove it.
23451         * tests/mpz/convert.c, dive.c, io.c, logic.c, reuse.c, t-2exp.c,
23452         t-fdiv.c, t-fdiv_ui.c, t-gcd.c, t-jac.c, t-mul.c, t-pow.c,
23453         t-powm.c, t-powm_ui.c, t-root.c, t-sqrtrem.c, t-tdiv.c,
23454         t-tdiv_ui.c: Use RANDS, initialized by tests_rand_start.
23456         * tests/mpz/t-pow.c: New file, being t-pow_ui renamed and with some
23457         further tests added.
23458         * tests/mpz/t-pow_ui.c: Remove file.
23459         * tests/mpz/Makefile.am (check_PROGRAMS): Update.
23461         * tests/t-modlinv.c: Don't use urandom.h.
23462         * tests/mpz/bit.c, tests/mpz/t-scan.c: Ditto.
23463         * tests/mpq/t-cmp.c, tests/mpq/t-cmp_ui.c, tests/mpq/t-get_d.c: Ditto.
23464         * tests/mpf/reuse.c, t-add.c, t-conv.c, t-dm2exp.c, t-muldiv.c,
23465         t-sqrt.c, t-sub.c: Ditto.
23467         * tests/misc.c (tests_rand_start, tests_rand_end): New functions.
23468         (tests_start, tests_end): Use them.
23469         (urandom): New function.
23470         * tests/tests.h: Add prototypes.
23472         * mpz/random.c: Rewrite using mpz_urandomb and RANDS.
23473         * mpn/generic/random.c: Rewrite using _gmp_rand and RANDS.
23474         * mpn/generic/random2.c: Use RANDS not random() etc.
23476         * gmp-impl.h (__gmp_rands, __gmp_rands_initialized): Add externs.
23477         (gmp_randstate_ptr): New typedef.
23478         (RANDS, RANDS_CLEAR): New macros.
23480         * rands.c: New file.
23481         * Makefile.am (libgmp_la_SOURCES): Add it.
23483         * configure.in (mpn_objs_in_libmp): New AC_SUBST.
23484         * Makefile.am (libmp_la_DEPENDENCIES): Use it.
23486 2001-03-02  Torbjorn Granlund  <tege@swox.com>
23488         * mpn/pa64/udiv_qrnnd.asm: New file.
23490 2001-03-01  Kevin Ryde  <kevin@swox.se>
23492         * mpbsd/rpow.c: New file.
23493         * mpbsd/Makefile.am (libmpbsd_la_SOURCES): Add it
23494         (nodist_libmpbsd_la_SOURCES): Remove pow_ui.c.
23495         * Makefile.am (MPBSD_OBJECTS): Add rpow.lo, remove pow_ui.lo.
23496         (libmp_la_DEPENDENCIES): Add mpz/n_pow_ui.lo.
23498         * mpz/ui_pow_ui.c: Rewrite using mpz_n_pow_ui.
23499         * mpz/pow_ui.c: Ditto, and no longer provide rpow for mpbsd.
23501         * mpz/n_pow_ui.c: New file, rewrite of pow_ui.c and ui_pow_ui.c.  Use
23502         less temporary memory, strip factors of 2 from the base, use mpn_mul_2
23503         if available.
23504         * mpz/si_pow_ui.c: New file.
23505         * mpz/Makefile.am (libmpz_la_SOURCES): Add them.
23506         * Makefile.am (MPZ_OBJECTS): Ditto.
23507         * gmp-impl.h (mpz_n_pow_ui): Add prototype.
23508         * gmp-h.in (mpz_si_pow_ui): Add prototype.
23509         * gmp.texi (Integer Exponentiation): Add mpz_si_pow_ui.
23511         * acinclude.m4 (GMP_C_SIZES): Add BITS_PER_ULONG.
23512         Correction to mp_limb_t working check.
23513         * configure.in (limb_chosen): New variable.
23514         * tests/t-constants.c (BITS_PER_ULONG): Check this value.
23515         Add some reminders about tests that fail on Cray.
23517         * tests/refmpn.c (refmpn_mul_2): New function.
23518         * tests/refmpz.c (refmpz_pow_ui): Copied from tests/mpz/t-pow_ui.c
23519         * tests/tests.h: Add prototypes.
23521         * configure.in (none-*-*): Add ABI=longlong.
23522         * doc/configuration (Long long limb testing): Describe it.
23524         * gmp.texi (Low-level Functions): Move some commented out remarks ...
23525         * mpn/generic/mul_basecase.c: ... to here.
23527         * mpn/x86/README: Note "%=" as an alternative to "1:" in __asm__.
23529         * tests/trace.c (mp_trace_start): Print "bin" for binary.
23531         * mpn/generic/dump.c: Add a couple of casts to keep gcc quiet.
23533         * gmp-h.in (mpn_incr_u, mpn_decr_u): Add parens around arguments.
23535         * mpbsd/mout.c, mpbsd/mtox.c (num_to_text): Remove unused variable.
23537         * mpfr/set_d.c (mpfr_get_d2): Declare "q" for 64-bit limbs.
23539 2001-02-28  Torbjorn Granlund  <tege@swox.com>
23541         * mpn/pa64w/udiv_qrnnd.asm: Tune.
23543 2001-02-27  Torbjorn Granlund  <tege@swox.com>
23545         * mpn/pa64w/udiv_qrnnd.asm: New file.
23547 2001-02-26  Torbjorn Granlund  <tege@swox.com>
23549         * longlong.h (arm): Optimize sub_ddmmss by testing for constant
23550         operands.
23551         * mpn/arm/invert_limb.asm: New file.
23553 2001-02-24  Torbjorn Granlund  <tege@swox.com>
23555         * mpn/generic/lshift.c: Rewrite.
23556         * mpn/generic/rshift.c: Rewrite.
23558         * longlong.h: Use UWtype for external interfaces that expect mp_limb_t.
23560         * longlong.h (arm): #define invert_limb.
23562         * mpn/arm: Make labels have local scope.
23564         * configure.in (arm*-*-*): Set extra_functions.
23565         * longlong.h (arm): #define udiv_qrnnd.
23566         * mpn/arm/udiv.asm: New file.
23568 2001-02-24  Kevin Ryde  <kevin@swox.se>
23570         * tune/many.pl: Add mpn_count_leading_zeros, mpn_count_trailing_zeros
23571         and mpn_invert_limb.  Add count_leading_zeros, count_trailing_zeros
23572         from a .h file.  Correction to modexact_1_odd prototype.  Support
23573         ansi2knr.
23574         * tune/speed.h, tune/common.c: Consequent changes.
23576         * demos/expr/*: Make a few more functions available in expressions,
23577         create only libexpr.a, misc minor updates.
23579         * mpn/Makeasm.am: Add some comments about suffix ordering.
23581         * tests/refmpn.c (rshift_make, lshift_make): No need to compare
23582         unsigned to zero.
23584         * mpq/mul.c: Detect and optimize squaring.
23586 2001-02-23  Torbjorn Granlund  <tege@swox.com>
23588         * mpn/mips3: Convert files to `.asm'.
23590         * mpn/arm: Convert files to `.asm'.  Misc cleanups.
23591         * mpn/arm/submul_1.asm: New file.
23593 2001-02-21  Kevin Ryde  <kevin@swox.se>
23595         * tune/tuneup.c (all): Only one compiler print should match, no need
23596         for #undef PRINTED_COMPILER.
23598         * mpfr/mpfr.h (mpfr_sgn): Use mpfr_cmp_ui (patch from Paul).
23600         * mpz/fib_ui.c: Update some remarks about alternative algorithms.
23601         * gmp.texi (Fibonacci Numbers Algorithm): Ditto.
23602         (Assigning Floats): Clarify mpf_swap swaps the precisions too.
23603         (Low-level Functions): Try to be clearer about negative cofactors.
23605 2001-02-21  Torbjorn Granlund  <tege@swox.com>
23607         * mpn/sparc64/copyi.asm: Streamline for small operands.
23608         * mpn/sparc64/add_n.asm: Likewise.
23609         * mpn/sparc64/sub_n.asm: Likewise.
23611         * mpn/sparc64/copyd.asm: New file.
23613 2001-02-20  Torbjorn Granlund  <tege@swox.com>
23615         * mpn/sparc64/lshift.asm: Rewrite.
23616         * mpn/sparc64/rshift.asm: Rewrite.
23618 2001-02-19  Torbjorn Granlund  <tege@swox.com>
23620         * mpn/sparc64/add_n.asm: Rewrite using `majority' logic.
23621         * mpn/sparc64/sub_n.asm: Likewise.
23623         * tune/tuneup.c (all): Recognise DECC and MIPSpro compilers.
23625         * mpn/pa64/sqr_diagonal.asm: Use PROLOGUE/EPILOGUE.
23626         * mpn/pa642/sqr_diagonal.asm: Likewise.
23628         * configure.in (HAVE_ABI_$abi): Disable for now.
23630         * mpn/asm-defs.m4 (PROLOGUE): Use LABEL_SUFFIX.
23632         * acinclude.m4 (GMP_ASM_ATTR): New check, for hppa oddities.
23634 2001-02-18  Torbjorn Granlund  <tege@swox.com>
23636         * mpn/hppa/hppa1_1/gmp-mparam.h: New file.
23637         * mpn/hppa/hppa2_0/gmp-mparam.h: New file.
23639         * mpn/pa64/sqr_diagonal.asm: New file.
23640         * mpn/pa64w/sqr_diagonal.asm: New file.
23641         * mpn/hppa/hppa1_1/sqr_diagonal.asm: New file.
23642         * mpn/hppa/hppa2_0/sqr_diagonal.asm: New file.
23644         * mpn/sparc32/v9/add_n.asm: Use `fitod' instead of `fxtod' for dummy
23645         FA-pipeline insns.
23646         * mpn/sparc32/v9/sub_n.asm: Likewise.
23648 2001-02-18  Kevin Ryde  <kevin@swox.se>
23650         * gmp.texi (Known Build Problems): Notes on make, $* and K&R, misc
23651         tweaks elsewhere.
23652         (Low-level Functions): Use {} notation in mpn_sqrtrem.
23653         (Basecase Multiplication): Mention BASECASE_SQR_THRESHOLD.
23655         * mpfr/isnan.c (mpfr_number_p): Infinity is not a number.
23656         * mpfr/out_str.c: Pass strlen+1 for the block size to free.
23657         * mpfr/get_str.c: Correction for realloc to strlen+1.
23659         * acinclude.m4 (GMP_C_SIZES): Generate an error if mp_limb_t doesn't
23660         seem to work for some reason.
23662 2001-02-16  Torbjorn Granlund  <tege@swox.com>
23664         * mpn/sparc32/v9/gmp-mparam.h: Retune.
23666         * mpn/sparc32/v9/add_n.asm: New file.
23667         * mpn/sparc32/v9/sub_n.asm: New file.
23669         * mpn/sparc32/v9/mul_1.asm: Tune function entry.
23670         * mpn/sparc32/v9/addmul_1.asm: Likewise.
23671         * mpn/sparc32/v9/submul_1.asm: Likewise.
23673         * mpn/sparc32/v9/sqr_diagonal.asm: New file.
23675 2001-02-16  Kevin Ryde  <kevin@swox.se>
23677         * configure.in: Fix flags selection when $CC is a compiler known to us.
23679         * demos/expr/exprfr.c (e_mpfr_cos, e_mpfr_sin): mpfr_sin_cos now
23680         allows NULL for one parameter.
23682         * mpfr/*: Update to 20010215.
23683         * mpfr/trunc.c: Use -DOPERATION scheme, and gmp mpn_zero_p.
23684         * mpfr/sqrt.c: Use plain mpn_sqrtrem, not mpn_sqrtrem_new.
23685         * mpfr/sqrtrem.c: Remove file.
23686         * mpfr/Makefile.am (libmpfr_a_SOURCES): Add isnan.c and set_ui.c,
23687         remove sqrtrem.c and srandom.h.
23689         * configfsf.guess: Update to 2001-02-13.
23690         * configfsf.sub: Update to 2001-02-16.
23691         * config.sub (j90, t90): Remove special handing, configfsf.sub now ok.
23693         * Makefile.am (MPF_OBJECTS): Add a couple of missing $U's.
23695         * tune/tuneup.c: Identify compiler used (GCC and Sun C so far).
23697 2001-02-15  Torbjorn Granlund  <tege@swox.com>
23699         * mpn/sparc32/v9/mul_1.asm: Change `ld' to `lduw' and `st' to `stw'.
23700         * mpn/sparc32/v9/addmul_1.asm: Likewise.
23701         * mpn/sparc32/v9/submul_1.asm: Likewise.
23703 2001-02-14  Torbjorn Granlund  <tege@swox.com>
23705         * mpn/mips3/mips.m4: New file.
23706         * configure.in (mips*-*-irix[6789]*): Use mips3/mips.m4.
23708         * mpn/powerpc64/sqr_diagonal.asm: New file.
23710         * mpn/mips3/sqr_diagonal.asm: New file.
23712 2001-02-12  Torbjorn Granlund  <tege@swox.com>
23714         * mpn/powerpc32/sqr_diagonal.asm: New file.
23716         * mpn/generic/sqr_basecase.c: Remove declaration of mpn_sqr_diagonal.
23717         Fix typo in header comment.
23719 2001-02-12  Kevin Ryde  <kevin@swox.se>
23721         * mpn/generic/mul.c, mpn/generic/mul_n.c, gmp-impl.h: Use
23722         mpn_mul_basecase for squaring below new BASECASE_SQR_THRESHOLD.
23723         * tune/tuneup.c gmp-impl.h: Tune BASECASE_SQR_THRESHOLD.
23725         * Makefile.am (libgmp.la, libmp.la): Revert change to build from
23726         mpn/libmpn.la etc, go back to explicitly listed objects.
23728         * configure.in: Recognise sparc64-*-*, not just sparc64-*-linux*.
23730 2001-02-11  Torbjorn Granlund  <tege@swox.com>
23732         * mpn/asm-defs.m4 (sqr_diagonal): New define_mpn.
23734         * mpn/alpha/sqr_diagonal.asm: New file.
23736 2001-02-11  Kevin Ryde  <kevin@swox.se>
23738         * gmp.texi (Low-level Functions): Note mpn_get_str clobbers its input
23739         plus 1 extra limb.
23741         * mpfr/add.c,agm.c,exp2.c,exp3.c,generic.c,log2.c,pi.c,print_raw.c,
23742         set_d.c,sin_cos.c,sqrtrem.c,sub.c: Apply some tweaks for K&R.
23743         * tests/mpz/reuse.c, tests/mpq/t-md_2exp.c, demos/pexpr.c,
23744         demos/expr/t-expr.c: Ditto.
23746         * configure.in (HAVE_ABI_$abi): New define in config.m4.
23748         * gmp-impl.h (mpn_sqr_diagonal): Add prototype and define.
23749         * tune/speed.c,speed.h,common.c,many.pl: Add measuring of
23750         mpn_sqr_diagonal.
23752         * gmp.texi, acinclude.m4: Mention x86 solaris 2.7 has the reg->reg
23753         movq bug the same as 2.6.
23755         * mpfr/Makefile.am (EXTRA_DIST): Add mpfr-test.h and mpf2mpfr.h.
23757         * mpn/x86/README: Merge contents of README.family.
23758         * mpn/x86/README.family: Remove file.
23760         * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add mode1o, gcd_finda,
23761         invert_limb, sqr_diagonal; remove mod_1_rs; sort alphabetically.
23763 2001-02-10  Torbjorn Granlund  <tege@swox.com>
23765         * configure.in (gmp_mpn_functions_optional): List sqr_diagonal.
23767         * mpn/powerpc32/aix.m4: Use unnamed csects.
23768         * mpn/powerpc64/aix.m4: Likewise.
23770         * acconfig.h: Add #undef of mpn_sqr_diagonal.
23771         Remove lots of spacing.
23773         * configure.in (syntax testing section): Match power* instead of
23774         powerpc*.
23775         * mpn/power: Convert files to `.asm'.
23776         Prefix umul_ppmm and sdiv_qrnnd.
23777         Update some comments.
23779 2001-02-09  Kevin Ryde  <kevin@swox.se>
23781         * acconfig.h: Add HAVE_NATIVE_mpn_modexact_1_odd and
23782         HAVE_NATIVE_mpn_modexact_1c_odd.
23784         * configure.in (CCAS): Don't override a user selection.
23786         * mpq/cmp_ui.c: DIVIDE_BY_ZERO if den2==0.
23788 2001-02-08  Torbjorn Granlund  <tege@swox.com>
23790         * mpn/generic/sqr_basecase.c: Use mpn_sqr_diagonal when appropriate.
23792 2001-02-07  Kevin Ryde  <kevin@swox.se>
23794         * gmp.texi (Low-level Functions): mpn_preinv_mod_1 now undocumented.
23796         * mpn/generic/random2.c (myrandom): Use rand() on mingw.
23798         * mpn/alpha/gmp-mparam.h: Update tuned parameters.
23800 2001-02-05  Torbjorn Granlund  <tege@swox.com>
23802         * mpn/alpha/ev6/gmp-mparam.h: Retune.
23804 2001-02-05  Kevin Ryde  <kevin@swox.se>
23806         * Makefile.am (libgmp, libmp): Construct from mpn/libmpn.la etc rather
23807         than explicitly listed objects.
23809         * urandom.h: Use rand() on mingw.
23811         * mpn/powerpc64/lshift.asm,addsub_n.asm: Use r1 not 1.
23813 2001-02-04  Torbjorn Granlund  <tege@swox.com>
23815         * mpn/ia64/copyi.asm: New file.
23816         * mpn/ia64/copyd.asm: New file.
23818 2001-02-04  Kevin Ryde  <kevin@swox.se>
23820         * mpn/alpha/ev5/gmp-mparam.h, mpn/mips3/gmp-mparam.h,
23821         mpn/powerpc32/gmp-mparam.h, mpn/powerpc64/gmp-mparam.h,
23822         mpn/sparc64/gmp-mparam.h, mpn/x86/*/gmp-mparam.h:
23823         Update tuned parameters.
23825         * mpn/x86/i486: New directory.
23826         * configure.in (i486-*-*): Use it.
23827         * mpn/x86/i486/gmp-mparam.h: New file.
23829         * mpn/x86/pentium/mode1o.asm: New file.
23830         * mpn/x86/p6/mode1o.asm: New file.
23832         * tune/many.pl: Use $(ASMFLAGS_PIC) and $(CFLAGS_PIC).
23834         * gmp.texi (Integer Division): Another rewording of 2exp divisions.
23836 2001-02-03  Torbjorn Granlund  <tege@swox.com>
23838         * mpn/arm/gmp-mparam.h: Tune.
23840         * mpn/ia64/popcount.asm: Put a `;;' break at end of main loop.
23842         * configure.in (arm*-*-*): Set gcc_cflags in order to pass
23843         $fomit_frame_pointer.
23845         * tests/mpz/t-mul.c (base_mul): Remove an unused variable.
23847 2001-02-02  Torbjorn Granlund  <tege@swox.com>
23849         * demos/pexpr.c (TIME): New macro.
23850         (main): Use TIME--print timing more accurately.
23851         (setup_error_handler): Increase RLIMIT_DATA to 16 Mibyte.
23853         * longlong.h (arm): Add __CLOBBER_CC to add_ssaaaa and sub_ddmmss.
23855 2001-02-02  Kevin Ryde  <kevin@swox.se>
23857         * configure.in: Don't remove gmp-mparam.h and mpn source links under
23858         --no-create since in that case they're not re-created.
23860         * demos/expr: New directory.
23861         * Makefile.am (SUBDIRS, allprogs): Add it.
23862         * demos/expr/README, Makefile.am, expr.c, exprv.c, exprz.c, exprza.c,
23863         exprq.c, exprqa.c, exprfa.c, exprf.c, exprfr.c, exprfra.c, expr.h,
23864         expr-impl-h.in, run-expr.c, t-expr.c: New files.
23865         * configure.in: Generate demos/expr/Makefile & demos/expr/expr-impl.h.
23867         * Makefile.am: Remove mpfr from main libgmp.
23868         * mpfr/Makefile.am: Build and install separate libmpfr.a.
23869         * mpfr/*: Update to mpfr 2001.
23871         * gmp-h.in (__GNU_MP_VERSION_MINOR): Bump to 2.
23872         * Makefile.am (libtool -version-info): Bump appropriately.
23873         * NEWS: Updates.
23875         * tune/divrem1div.c, tune/divrem1inv.c, tune/divrem2div.c,
23876         tune/divrem2inv.c: Renamed from divrem_1_div.c, divrem_1_inv.c,
23877         divrem_2_div.c, divrem_2_inv.c, to be unique in DOS 8.3 filenames.
23878         * tune/Makefile.am (libspeed_la_SOURCES): Update.
23880         * mpn/x86/*/README, mpn/x86/README.family: Misc updates.
23881         * tune/README: Misc updates.
23882         * doc/configuration: Misc updates.
23884         * mpn/x86/pentium/mmx/gmp-mparam.h: Change UDIV_PREINV_TIME to
23885         UDIV_NORM_PREINV_TIME.
23887         * mpz/pprime_p.c: Use ASSERT_ALWAYS instead of abort.
23889         * rand.c (__gmp_rand_lc_scheme): Add "const".
23890         (struct __gmp_rand_lc_scheme_struct): Make astr "const char *".
23892         * demos/calc/calc.y, demos/calc/calclex.l: Add kron function.
23894         * tests/devel/try.c: Partial rewrite, new scheme of function types,
23895         allow result validation functions, add sqrtrem and jacobi testing.
23896         * tune/many.pl: Corresponding updates.
23897         * tests/devel/Makefile.am: Add a convenience rule for libtests.la.
23899         * tests/refmpz.c: New file.
23900         * tests/Makefile.am: Add it.
23901         * tests/misc.c (mpz_erandomb, mpz_erandomb_nonzero): New functions.
23902         * tests/tests.h: Add prototypes.
23904         * mpn/x86/k6/cross.pl: Add a couple more exceptions.
23906         * gmp.texi: Don't use @nicode{'\0'}, it doesn't come out right in tex.
23907         (Introduction to GMP): Mention Cray vector systems.
23908         (Build Options): Describe --enable-mpfr, refer to its manual.  Add
23909         Crays under supported CPUs.
23910         (Debugging): Add notes on source file paths.
23911         (Autoconf): New section.
23912         (Assigning Integers): Note truncation by mpz_set_d, mpz_set_q and
23913         mpz_set_f.
23914         (Converting Integers): Note the size mpz_get_str allocates.
23915         (Floating-point Functions): Rewrite introduction, clarifying some
23916         points about precision handling.
23917         (Converting Floats): Note the size mpf_get_str allocates, and that it
23918         gives an empty string for zero.  Add mpf_get_si and mpf_get_ui.
23919         (Float Comparison): Give the formula mpf_reldiff calculates.
23920         (Miscellaneous Float Functions): Add mpf_integer_p and mpf_fits_*_p.
23921         (Random Number Functions): Misc rewordings for clarity.
23922         (Random State Initialization): Ditto.
23923         (Custom Allocation): Remove note on deallocate_function called with 0,
23924         misc rewording and clarifications.
23925         (Exact Remainder): New section.
23926         (Binary GCD): A few words on initial reduction using division.
23927         (Accelerated GCD): Refer to exact remainder section.
23928         (Extended GCD): Extra remarks on single versus double selection.
23929         (Jacobi Symbol): Update for mpz/jacobi.c rewrite and modexact_1_odd.
23930         (Modular Powering Algorithm): Refer to exact remainder section.
23931         (Assembler SIMD Instructions): Update remarks on MMX.
23932         (Contributors): Amend to "Divide and Conquer" division.
23933         (References): Tweak some formatting.  Add "Proof of GMP Fast Division
23934         and Square Root Implementations" by Paul Zimmermann.
23936 2001-01-31  Torbjorn Granlund  <tege@swox.com>
23938         * configure.in: Don't ever pass -mips3; let ABI flags imply ISA.
23940 2001-01-31  Kevin Ryde  <kevin@swox.se>
23942         * tune/time.c: Remove unnecessary longlong.h.
23943         (speed_endtime): Add some extra diagnostics.
23945         * tests/mpz/t-fdiv_ui.c, tests/mpz/t-tdiv_ui.c: Use unsigned long for
23946         the divisor, not mp_limb_t.
23947         * tests/mpz/t-jac.c (try_base): Use %llu for long long limb.
23948         * tests/trace.c: Add <string.h> for strlen.
23950         * tune/freq.c (speed_cpu_frequency_proc_cpuinfo): Ignore "cycle
23951         frequency" of 0, allow "BogoMIPS" as well as "bogomips".
23953         * macos/Makefile.in: Add mpf/fits_s.c and mpf/fits_u.c objects.
23955 2001-01-30  Torbjorn Granlund  <tege@swox.com>
23957         * longlong.h: Add add_ssaaaa and sub_ddmmss for 64-bit sparc.
23959 2001-01-29  Torbjorn Granlund  <tege@swox.com>
23961         * mpn/powerpc64/addmul_1.asm: Prefix registers with an `r'.
23962         * mpn/powerpc64/submul_1.asm: Likewise.
23963         * mpn/powerpc64/mul_1.asm: Likewise.
23965         * configure.in (alpha*-*-*): Amend last change to handle pca*.
23967 2001-01-29  Kevin Ryde  <kevin@swox.se>
23969         * tune/speed.h (SPEED_ROUTINE_INVERT_LIMB_CALL): Don't let the
23970         compiler optimize everything away.
23972         * tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Measure
23973         operator_div, operator_mod, mpn_divrem_2_div, mpn_divrem_2_inv,
23974         mpn_sb_divrem_m3, mpn_sb_divrem_m3_div, mpn_sb_divrem_m3_inv,
23975         mpn_dc_divrem_sb_div, mpn_dc_divrem_sb_inv.
23976         * tune/divrem_2_div.c, tune/divrem_2_inv.c, tune/sb_div.c,
23977         tune/sb_inv.c: New files.
23979         * tune/tuneup.c, gmp-impl.h, tune/speed.h, tune/common.c,
23980         tune/Makefile.am: Tune SB_PREINV_THRESHOLD and DIVREM_2_THRESHOLD.
23982         * mpn/generic/divrem_2.c: Use new DIVREM_2_THRESHOLD.
23983         * mpn/generic/sb_divrem_mn.c: Use new SB_PREINV_THRESHOLD.
23985         * mpn/x86/p6/mmx/lshift.asm, mpn/x86/p6/mmx/rshift.asm: New files,
23986         just m4 include()ing the P55 code.
23987         * configure.in (pentium[23]-*-*): Remove x86/pentium/mmx from path.
23989 2001-01-27  Kevin Ryde  <kevin@swox.se>
23991         * configure.in (AC_CHECK_FUNCS): Add srand48.
23992         * tune/speed.c: Use this test.
23994         * acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO): Allow "egcs-" prefix on gcc
23995         --version, warn if the format is unrecognised.
23996         (GMP_COMPARE_GE): Guard against empty $1 not only on last arg.
23997         (GMP_INIT, GMP_FINISH, GMP_PROG_M4): Obscure or eliminate literal
23998         "dnl"s since autoconf thinks they indicate faulty macros.
24000         * mpz/get_str.c, mpf/get_str.c: Make allocated string block exactly
24001         strlen(str)+1 bytes.
24002         * mpz/dump.c, mpf/dump.c, tests/mpz/convert.c: Use this size when
24003         freeing.
24004         * tests/mpf/t-conv.c: Ditto, and ensure x==0 is exercised.
24006         * tests/mpz/t-fits.c: New file.
24007         * tests/mpz/Makefile.am: Add it.
24009         * tests/mpf/t-fits.c: New file.
24010         * tests/mpf/t-get_si.c: New file.
24011         * tests/mpf/t-int.c: New file.
24012         * tests/mpf/Makefile.am: Add them.
24014         * mpf/fits_s.c: New file.
24015         * mpf/fits_u.c: New file.
24016         * mpf/get_si.c: New file.
24017         * mpf/get_ui.c: New file.
24018         * mpf/int_p.c: New file.
24019         * Makefile.am, mpf/Makefile.am: Add them.
24020         * gmp-h.in (mpf_fits_*_p, mpf_get_si, mpf_get_ui, mpf_integer_p): Add
24021         prototypes.
24023         * tests/memory.c (tests_allocate, tests_reallocate): Guard against
24024         size==0.
24026         * tests/mpz/*.c, tests/mpq/*.c, tests/mpf/*.c: Uses tests_start and
24027         tests_end.
24029         * gmp-impl.h (USE_LEADING_REGPARM): Fix conditionals.
24031 2001-01-23  Kevin Ryde  <kevin@swox.se>
24033         * configure.in, mpn/Makeasm.am (ASMFLAGS_PIC): New substitution,
24034         allowing -DPIC to be suppressed on cygwin.
24035         (CFLAGS_PIC): New substitution, use it and $(CCAS) directly, rather
24036         than $(LIBTOOL), avoiding a problem with FreeBSD 2.2.8.
24038         * mpn/x86/k6/mode1o.asm, mpn/x86/k7/mode1o.asm: Remove an unnecessary
24039         +[.-L(here)] from _GLOBAL_OFFSET_TABLE_, avoids a segv from gas 1.92.3.
24040         * mpn/x86/README.family: Add notes on the problem.
24042 2001-01-20  Torbjorn Granlund  <tege@swox.com>
24044         * configure.in (alpha*-*-*): Default `flavour' to ev4.
24046 2001-01-19  Kevin Ryde  <kevin@swox.se>
24048         * assert.c, gmp-impl.h (__gmp_assert_fail): Change return type to
24049         void, since it's no longer used in expressions.
24051         * mpn/x86/addsub_n.S: Remove file, since it doesn't work and it upsets
24052         tune/many.pl.
24054         * mpz/jacobi.c: Rewrite, but still binary algorithm; accept zero and
24055         negative denominators; merge mpz_jacobi and mpz_legendre, add
24056         mpz_kronecker; use mpn directly, add special cases for size==1.
24057         * gmp.texi (Number Theoretic Functions): Update.
24058         * gmp-h.in (mpz_kronecker): Add prototype.
24059         * gmp-impl.h (USE_LEADING_REGPARM): New macro.
24060         * tests/mpz/t-jac.c: Test mpz_kronecker.
24061         * mpz/legendre.c: Remove file.
24062         * Makefile.am, mpz/Makefile.am: Update.
24064         * longlong.h (alpha count_leading_zeros): Use __attribute__ ((const))
24065         when possible, add parameter to prototype.
24066         (ia64 udiv_qrnnd): Use for all compilers, not just gcc.
24067         (pentium count_trailing_zeros): Use count_leading_zeros.
24069         * acinclude.m4 (GMP_C_ATTRIBUTE_CONST, GMP_C_ATTRIBUTE_NORETURN): New
24070         macros.
24071         * configure.in: Use them.
24072         * gmp-impl.h (ATTRIBUTE_CONST, ATTRIBUTE_NORETURN): New macros.
24073         (mpn_invert_limb): Add ATTRIBUTE_CONST.
24074         (__gmp_assert_fail): Add ATTRIBUTE_NORETURN.
24076 2001-01-18  Kevin Ryde  <kevin@swox.se>
24078         * gmp-h.in, gmp-impl.h (__gmp_allocate_func, __gmp_reallocate_func,
24079         __gmp_free_func): Move prototypes from gmp-impl.h to gmp-h.in, for the
24080         benefit of gmp++.h.
24082         * gmp-impl.h, tests/misc.c, tests/tests.h: Move MPZ_SET_STR_OR_ABORT
24083         and MPF_SET_STR_OR_ABORT to mpz_set_str_or_abort and
24084         mpf_set_str_or_abort in libtests.
24085         * tests/mpz/convert.c, tests/mpz/t-bin.c, tests/mpz/t-get_si.c,
24086         tests/mpz/t-jac.c, tests/mpz/t-misc.c, tests/mpq/t-md_2exp.c,
24087         tests/mpq/t-set_f.c, tests/mpf/t-conv.c, tests/mpf/t-misc.c: Update.
24089         * mpn/generic/sqrtrem.c: Use MPN_COPY_INCR (for when rp==NULL).
24091         * tests/mpz/reuse.c: Only run mpz_divexact_gcd on positive divisors.
24093 2001-01-18  Torbjorn Granlund  <tege@swox.com>
24095         * demos/pexpr.c (main): Accept -vml option.
24096         (fns): List `hamdist', `pow', `nextprime'.
24097         (mpz_eval_expr): Return -1 for `popc' of negative.
24098         (mpz_eval_expr): Handle `hamdist', `pow', `nextprime'.
24100 2001-01-15  Kevin Ryde  <kevin@swox.se>
24102         * mpn/alpha/ev5/mode1o.c: New file.
24104         * tune/freq.c (speed_cpu_frequency_measure): Check cycles_works_p
24105         before running speed_cyclecounter.
24106         * tune/speed.h (cycles_works_p): Add prototype.
24108 2001-01-13  Torbjorn Granlund  <tege@swox.com>
24110         * tests/rand/t-rand.c (farr): Fix typo.
24111         (zarr): Fix typo.
24113 2001-01-12  Kevin Ryde  <kevin@swox.se>
24115         * mpz/kronsz.c: Don't depend on right shifting a negative.
24117         * mpn/x86/gmp-mparam.h: New file.
24119         * mpn/x86/pentium/mmx/mul_1.asm: New file.
24121 2001-01-11  Torbjorn Granlund  <tege@swox.com>
24123         * mpz/kronsz.c: Temporary workaround for Cray right shift oddities.
24124         Explicitly compare against zero in tests.
24126 2001-01-10  Kevin Ryde  <kevin@swox.se>
24128         * mpz/kronzs.c: Don't depend on right shifting a negative.
24130 2001-01-09  Torbjorn Granlund  <tege@swox.com>
24132         * tests/t-constants.c: Disable some undefined tests.
24133         (CHECK_MAX_S): Remove workaround for gcc 2.95.2 bug recently added.
24135 2001-01-09  Kevin Ryde  <kevin@swox.se>
24137         * tests/t-constants.c: Add more diagnostics.
24138         (CHECK_MAX_S): Fix for gcc 2.95.2 -mpowerpc64 -maix64.
24140         * mpn/x86/k6/mode1o.asm: New file.
24141         * mpn/x86/k7/mode1o.asm: New file.
24143         * mpn/asm-defs.m4 (modexact_1_odd, modexact_1c_odd): New define_mpn's.
24144         (__clz_tab, modlimb_invert_table, PROLOGUE, EPILOGUE): Add asserts for
24145         GSYM_PREFIX.
24146         * mpn/x86/x86-defs.m4 (Zdisp): Add a movzbl.
24148         * tests/mpz/t-jac.c (check_a_zero): New test.
24149         (check_squares_zi): Fix to use (a^2/b), not (a*b/b); revert last
24150         change avoiding a,b=0, both are fine.
24151         (try_2den): Don't use mpz_kronecker_ui for the expected answer.
24152         (try_*): Call abort rather than exit.
24154         * mpz/kronzu.c, mpz/kronzs.c: Fix for a=0.
24156         * tune/tuneup.c (USE_PREINV_MOD_1): Fix to use new DATA_HIGH_LT_R.
24158 2001-01-08  Torbjorn Granlund  <tege@swox.com>
24160         * urandom.h: Amend 2000-11-21 change to also handle cygwin.
24162 2001-01-08  Kevin Ryde  <kevin@swox.se>
24164         * tune/many.pl: Updates for move to tests/devel, add modexact_1_odd,
24165         don't assume C files can't have carry-in entrypoints, remove
24166         $(TRY_TESTS_OBJS) now in libtests.
24168         * tests/devel/try.c, tests/refmpn.c, tests/tests.h: Remove
24169         mpn_mod_1_rshift testing.
24171         * tune/tuneup.c (fft_step_size): Test for overflow using the actual
24172         mp_size_t, don't use BITS_PER_INT.
24174         * tune/speed.c (r_string): "r" is a limb, use BITS_PER_MP_LIMB and
24175         change LONG_ONES to LIMB_ONES.
24176         * tune/time.c (M_2POWU): Use INT_MAX rather than BITS_PER_INT.
24178         * extract-dbl.c (BITS_PER_PART): Use BITS_PER_MP_LIMB not
24179         BITS_PER_LONGINT.
24181         * mpz/inp_raw.c, mpz/out_raw.c: Add private defines of BITS_PER_CHAR.
24182         * mpz/fac_ui.c, tests/mpz/t-fac_ui.c: Don't use BITS_PER_LONGINT.
24183         * tests/mpz/t-get_si.c: Don't use BITS_PER_LONGINT, do the LONG_MAX
24184         tests with some explicit code.
24186         * mpn/*/gmp-mparam.h, acinclude.m4, tests/t-constants.c
24187         (BITS_PER_LONGINT, BITS_PER_INT, BITS_PER_SHORTINT, BITS_PER_CHAR):
24188         Remove defines, remove probings, remove tests.
24190         * tune/tuneup.c (MODEXACT_1_ODD_THRESHOLD): Add tuning.
24192         * tune/speed.c,speed.h,common.c: Add measuring of mpn_modexact_1_odd,
24193         mpn_gcd_finda, and an "N" form for mpn_gcd_1.
24195         * tests/mpz/t-jac.c (check_squares_zi): Ensure random a,b != 0.
24197 2001-01-07  Kevin Ryde  <kevin@swox.se>
24199         * configure.in (gmp_mpn_functions): Add mode1o, remove mod_1_rs.
24201         * mpn/generic/mod_1_rs.c: Remove file, no longer needed.
24202         * gmp-h.in (mpn_mod_1_rshift): Remove prototype and define.
24204         * mpq/set_f.c: Use MPN_STRIP_LOW_ZEROS_NOT_ZERO.
24206         * mpz/kronzu.c, mpz/kronzs.c, mpz/kronuz.c, mpz/kronsz.c: Use
24207         mpn_modexact_1_odd, new style MPN_STRIP_LOW_ZEROS_NOT_ZERO, and new
24208         JACOBI macros.  Various rearrangements supporting all this.
24210         * mpn/generic/gcd_1.c: Use mpn_modexact_1_odd, reduce u%v if u much
24211         bigger than v when size==1, some rearrangements supporting this.
24213         * gmp-impl.h (JACOBI_*): More macros, add some casts to "int".
24214         (MPN_STRIP_LOW_ZEROS_NOT_ZERO): Add a "low" parameter.
24215         (mpn_modexact_1_odd, mpn_modexact_1c_odd): Add prototype and defines.
24216         (MODEXACT_1_ODD_THRESHOLD): New threshold.
24217         (MPN_MOD_OR_MODEXACT_1_ODD, JACOBI_MOD_OR_MODEXACT_1_ODD): New macros.
24219         * mpn/generic/mode1o.c: New file.
24221         * tests/mpz/reuse.c: Add testing of mpz_divexact_gcd.
24222         * tests/mpz/t-fac_ui.c: Use libtests for memory leak checking.
24223         * tests/mpz/t-fib_ui.c: Add a usage comment.
24225         * tests/mpz/bit.c: Use libtests.
24226         * tests/mpz/t-scan.c: Remove unused subroutines.
24227         * tests/devel/try.c: Use libtests, define PROT_NONE if the system
24228         doesn't.
24230         * tests/spinner.c, tests/x86check.c: Use tests.h.
24231         * tests/trace.c: Use tests.h, add mpf_trace.
24232         * tests/refmpn.c: Use tests.h, add refmpn_malloc_limbs_aligned,
24233         refmpn_tstbit, refmpn_neg.
24235         * tune/common.c, tune/speed.h: Update for functions moved to
24236         tests/misc.c.
24238         * tune/Makefile.am, tests/mpz/Makefile.am, tests/mpq/Makefile.am,
24239         tests/mpf/Makefile.am: Use tests/libtests.la.
24241         * configure.in (AC_OUTPUT): Update for new directories.
24242         (x86 CALLING_CONVENTIONS_OBJS): Use .lo for libtests.la, allow
24243         ansi2knr on x86check.c.
24245         * tests/Makefile.am: Establish new libtests.la convenience library,
24246         add mpz, mpq, mpf, mpbsd subdirectories.
24247         * tests/tests.h: New file.
24248         * mpn/tests/ref.h,try.h: Remove files, now in tests.h.
24250         * tests/mpf/ref.c: Move to tests/refmpf.c, rename functions to refmpf.
24251         * tests/mpf/t-add.c, tests/mpf/t-sub.c: Use libtests.
24252         * tests/mpf/Makefile.am: Update.
24254         * tests/memory.c: New file.
24255         * tests/misc.c: New file, a few subroutines from the test programs.
24257         * mpz/tests, mpq/tests, mpf/tests, mpbsd/tests: Move directories to
24258         tests/mpz etc.
24259         * mpz/Makefile.am, mpq/Makefile.am, mpf/Makefile.am, mpbsd/Makefile.am
24260         (SUBDIRS): Remove.
24262         * tests/devel: New directory.
24263         * mpn/tests/*.c: Move programs to tests/devel.
24264         * mpn/tests/Makefile.am, mpn/tests/README: Move to tests/devel, update.
24266         * mpn/tests/ref.c: Move to tests/refmpn.c.
24267         * mpn/tests/spinner.c,trace.c,x86call.asm,x86check.c: Move to tests
24268         directory.
24270         * tests/t-constants.c: Add checks of HIGHBIT, MAX and MIN constants,
24271         simplify ANSI vs K&R stringizing, use correct printf format types, do
24272         all tests before aborting.
24274 2001-01-05  Torbjorn Granlund  <tege@swox.com>
24276         * mpn/cray/ieee/gmp-mparam.h: Retune.
24278 2001-01-05  Kevin Ryde  <kevin@swox.se>
24280         * configure.in (mp.h): Only create this under --enable-mpbsd.
24282         * demos/calc: New subdirectory, move demos/calc* to it.
24283         * demos/calc/Makefile.am: New file, split from demos/Makefile.am.
24284         * demos/Makefile.am: Update.
24285         * configure.in (AC_OUTPUT): Add demos/calc/Makefile.
24287         * tests/t-constants.c (CALC_BITS_PER_TYPE etc): Use a run-time test
24288         for how many bits work in a give type, don't assume bits==8*sizeof.
24290 2001-01-04  Kevin Ryde  <kevin@swox.se>
24292         * mpz/fits_s.c, mpz/fits_u.c: New files, split from fits.c, use plain
24293         UINT_MAX etc, not MPZ_FITS_UTYPE_SDT etc.
24294         * mpz/fits.c: Remove file.
24295         * mpz/Makefile.am, macos/Makefile.in: Update.
24297         * gmp-impl.h (UNSIGNED_TYPE_MAX etc): Remove these generic forms.
24298         (MPZ_FITS_[SU]TYPE_SDT): Remove these.
24299         (UINT_MAX etc): Provide a full set of defaults.
24300         * gmp-h.in (__GMP_MP_SIZE_T_INT): New define.
24302         * mpz/tests/t-scan.c: New file.
24303         * mpz/tests/Makefile.am (check_PROGRAMS): Add it.
24305         * mpz/scan0.c, mpz/scan1.c: Rewrite, don't read beyond allocated
24306         memory, support negatives, return ULONG_MAX for no bit found.
24307         * gmp.texi (Integer Logic and Bit Fiddling): Update.
24309 2001-01-03  Torbjorn Granlund  <tege@swox.com>
24311         * mpz/tests/dive.c: Generate test operands using new random functions.
24312         * mpz/tests/io.c: Likewise.
24313         * mpz/tests/logic.c: Likewise.
24314         * mpz/tests/t-2exp.c: Likewise.
24316         * stack-alloc.c (__gmp_tmp_alloc): Round `now' to required alignment.
24318         * stack-alloc.h (__TMP_ALIGN): Append `L'.
24320         * gmp-impl.h: For Cray, #include limits.h.
24321         (LONG_MIN): New #define.
24322         (ULONG_HIGHBIT): #define in terms of ULONG_MAX.
24323         (LONG_HIGHBIT): #define as LONG_MIN.
24324         (USHRT_MAX): New name for USHORT_MAX.
24325         (SHRT_MAX): New name for SHORT_MAX.
24326         (SHRT_MIN): New #define.
24327         (USHORT_HIGHBIT,SHORT_HIGHBIT): Removed.
24329         * mpbsd/tests/t-misc.c (check_itom [data]): *SHORT* => *SHRT*;
24330         remove code disabling a test for Cray.
24332         * tests/t-constants.c (CHECK_CONSTANT): Cast parameters to long.
24334         * mpn/generic/mul_n.c (mpn_kara_sqr_n): Remove unused variable `t'.
24335         (mpn_kara_mul_n): Likewise.
24337         * mpz/fac_ui.c (MPZ_SET_1_NZ): Actually use `__z'.
24339         * mpz/tests/t-jac.c
24340         (main, check_squares_zi): Generate test operands using new random
24341         functions.
24343         All changes below on this date for enabling `make; make check'
24344         with C++ compilers:
24346         * mpz/tests/t-pow_ui.c (debug_mp, ref_mpz_pow_ui): Provide prototypes.
24348         * mpz/tests/t-mul.c (debug_mp, base_mul, ref_mpz_mul):
24349         Provide prototypes.
24350         (dump_abort): Provide prototype and declare properly for C++.
24352         * mpz/tests/t-jac.c: #include stdlib.h and sys/time.h.
24354         * mpz/tests/t-fdiv.c
24355         (dump_abort): Provide prototype and declare properly for C++.
24356         (debug_mp): Provide prototype.
24357         * mpz/tests/t-fdiv_ui.c: Likewise.
24358         * mpz/tests/t-gcd.c: Likewise.
24359         * mpz/tests/t-powm.c: Likewise.
24360         * mpz/tests/t-powm_ui.c: Likewise.
24361         * mpz/tests/t-sqrtrem.c: Likewise.
24362         * mpz/tests/t-tdiv_ui.c: Likewise.
24363         * mpz/tests/t-tdiv.c: Likewise.
24365         * mpz/tests/t-2exp.c: #include stdlib.h and sys/time.h.
24366         Remove #include of longlong.h.
24368         * mpz/tests/io.c: #include config.h, stdlib.h, sys/time.h, and
24369         conditionally unistd.h.
24371         * mpz/tests/dive.c: #include stdlib.h and sys/time.h.
24372         (dump_abort): Provide prototype and declare properly for C++.
24373         (debug_mp): Provide prototype.
24374         * mpz/tests/logic.c: Likewise.
24376         * mpz/tests/convert.c (debug_mp): Provide prototype.
24377         * mpz/tests/t-root.c (debug_mp): Likewise.
24379         * mpz/tests/bit.c: #include stdlib.h and sys/time.h.
24381         * mpq/tests/t-get_d.c: #include stdlib.h and sys/time.h.
24382         (dump): Provide prototype and declare properly for C++.
24384         * mpq/tests/t-cmp_ui.c: #include stdio.h, stdlib.h and sys/time.h.
24385         (ref_mpq_cmp_ui): Declare properly for C++.
24387         * mpq/tests/t-cmp.c: #include stdlib.h and sys/time.h.
24388         (ref_mpq_cmp): Declare properly for C++.
24389         (dump): Delete unused function.
24391         * mpf/random2.c (myrandom): New function.
24392         (mpf_random2): Use it.
24394         * mpn/generic/random2.c: #include stdlib.h (for random/mrand48).
24395         (myrandom): New function.
24396         (mpn_random2): Use it.
24398         * mpf/tests/t-add.c: #include stdlib.h and sys/time.h.
24399         (oo): Remove unused function.
24400         * mpf/tests/t-conv.c: Likewise.
24401         * mpf/tests/t-sub.c: Likewise.
24402         * mpf/tests/t-dm2exp.c: Likewise.
24403         * mpf/tests/t-muldiv.c: Likewise.
24404         * mpf/tests/t-sqrt.c: Likewise.
24406         * mpf/tests/reuse.c: #include stdlib.h and sys/time.h.
24407         Use PROTO on some typedefs.
24408         (oo): Remove function.
24409         (dump_abort): Call mpf_dump instead of oo.
24411         * mpf/set_str.c: #include stdlib.h (for strtol).
24413         * mpf/random2.c: #include stdlib.h (for random/mrand48).
24414         * mpn/alpha/udiv_arnnd: File deleted.
24416         * Remove K&R function headers.
24418 2001-01-02  Torbjorn Granlund  <tege@swox.com>
24420         * mpn/generic/mul.c: Clean up spacing and indentation.
24422         * mpn/generic/mul_fft.c (mpn_fft_add_modF): Use mpn_decr_u.
24423         Clean up spacing and indentation.
24425         * extract-dbl.c: Generalize to handle smaller limb sizes.
24427 2001-01-01  Torbjorn Granlund  <tege@swox.com>
24429         * mpbsd/mout.c: Output newline after "0".
24431 2000-12-31  Torbjorn Granlund  <tege@swox.com>
24433         * ltmain.sh: Remove space between `#!' and `$SHELL' when generating
24434         `libtool'.
24436         * mpbsd/tests/t-misc.c (check_itom): Exclude test for all Cray
24437         vector systems.  Correct comment.
24439 2000-12-31  Kevin Ryde  <kevin@swox.se>
24441         * gmp.texi (ABI and ISA): New enough gcc needed for mips n32 etc, gcc
24442         2.95 needed for sparc 64-bit ABI, gcc 2.8 needed for -mv8plus.
24444         * configure.in ([cjt]90,sv1-cray-unicos*): Preserve user specified
24445         MPN_PATH, amend test program indenting.
24446         (none-*-*): Add -DNO_ASM to gcc to disable longlong.h asm macros in
24447         generic C.
24449         * config.sub (j90, t90): Preserve these, don't let configfsf.sub turn
24450         them into c90.
24452         * config.guess (m68k-*-nextstep*,m68k-*-openstep*): Don't transform
24453         m68k to m68020, since m68k is already interpreted as 68020.
24455 2000-12-30  Kevin Ryde  <kevin@swox.se>
24457         * mpq/neg.c: Rewrite, use mpn, avoid denominator copy if unnecessary.
24459         * mpz/tstbit.c: Rewrite, slightly simplified.
24460         * mpz/tests/bit.c (check_tstbit): New test, and add a couple more
24461         diagnostics elsewhere.
24463         * configure.in (x86 gcc_cflags_cpu): Add -m486 for gcc 2.7.2.
24464         (ccbase): Only use a known compiler in eval statements (avoids
24465         problems with non-symbol characters).
24466         (ccbase): Use GMP_PROG_CC_IS_GNU to identify gcc installed under a
24467         different name.
24468         (cclist): Use same style $abi as other variables.
24470         * acinclude.m4 (GMP_PROG_CC_IS_GNU): New macro.
24471         (GMP_GCC_MARCH_PENTIUMPRO): Use $ccbase to identify gcc.
24472         (GMP_ASM_TYPE): Define TYPE to empty, not "dnl", when no .type needed.
24473         (GMP_ASM_SIZE): Ditto for SIZE, which ensures EPILOGUE on the last
24474         line of a file doesn't leave a tab and no newline.
24475         (GMP_ASM_UNDERSCORE): Add a prototype for C++.
24477         * configure.in (sys/mman.h, mprotect): New tests.
24478         * mpn/tests/try.c: Use them, and HAVE_UNISTD_H too.
24480         * configure.in (getopt.h): Remove test.
24481         * tune/speed.c, mpn/tests/try.c (getopt.h): Remove include, since
24482         plain getopt() is in <unistd.h>.
24484         * configure.in, gmp-h.in (mips*-*-irix6*): Set limb_n32=longlong
24485         rather than using _ABIN32.
24487 2000-12-29  Torbjorn Granlund  <tege@swox.com>
24489         * mpz/tests/reuse.c: Rename dump_abort => dump.
24490         * mpz/tests/reuse.c: Generate operands using gmp_rand*.
24491         * mpz/tests/convert.c: Likewise.
24493         * configure.in: Detect T90-ieee systems; move Cray path
24494         selection to after AC_PROG_CC.  Invoke AC_PROG_CPP.
24495         * mpn/cray/cfp: New directory.  Move cfp specific files here.
24496         * mpn/cray/cfp/mulwwc90.s: New file.
24497         * mpn/cray/cfp/mulwwj90.s: New file.
24498         * mpn/cray/mulww.s: Delete.
24500 2000-12-27  Torbjorn Granlund  <tege@swox.com>
24502         * mpn/cray/ieee/mul_1.c: New file.
24503         * mpn/cray/ieee/addmul_1.c: New file.
24504         * mpn/cray/ieee/submul_1.c: New file.
24505         * mpn/cray/ieee/gmp-mparam.h: New file.
24507         * mpn/cray/gmp-mparam.h: Disable UMUL_TIME and UDIV_TIME.
24509         * mpn/cray/hamdist.c: New file.
24510         * mpn/cray/popcount.c: New file.
24511         * mpn/cray/rshift.c: New file.
24512         * mpn/cray/lshift.c: New file.
24514         * longlong.h: Add count_leading_zeros for _CRAY.
24515         Reorganize _CRAY stuff.
24517 2000-12-24  Kevin Ryde  <kevin@swox.se>
24519         * configure.in (alpha*-cray-unicos*): Disable SPEED_CYCLECOUNTER_OBJ,
24520         as tune/alpha.asm doesn't suit.
24522         * mpn/generic/sqrtrem.c, mpz/pow_ui.c, mpz/powm_ui.c, mpf/get_str.c,
24523         mpf/set_str.c: Use mpn_sqr_n when applicable, not mpn_mul_n.
24525 2000-12-23  Torbjorn Granlund  <tege@swox.com>
24527         * mpn/generic/mul_fft.c: Reformat.
24528         (mpn_fft_neg_modF): Remove.
24529         (mpn_fft_mul_2exp_modF): Inline mpn_fft_neg_modF.
24531         * mpn/cray/gmp-mparam.h: Retune.
24533         * configure.in (*-cray-unicos*): Pass `-O3 -htask0'.
24534         (vax*-*-*): Fix typo.
24536         * mpn/cray/mul_1.c: Use dynamic arrays, get rid of TMP_*.
24537         * mpn/cray/addmul_1.c: Likewise.
24538         * mpn/cray/submul_1.c: Likewise.
24539         * mpn/cray/add_n.c: Likewise.
24540         * mpn/cray/sub_n.c: Likewise.
24542         * configure.in (default cc_cflags,cc_64_cflags): Remove -g/add -O.
24543         (mips*-*-irix[6789]*]): Remove -g from cc_*_cflags.
24545 2000-12-22  Torbjorn Granlund  <tege@swox.com>
24547         * mpn/generic/mul_n.c: Delete K&R function headers.
24549         * mpn/generic/mul_n.c (mpn_kara_mul_n): Clean up type confusion
24550         between mp_limb_t and mp_size_t.
24551         (mpn_kara_sqr_n): Likewise.
24553         * mpn/generic/mul_n.c (mpn_kara_mul_n): Use mpn_incr_u.
24554         (mpn_kara_sqr_n): Likewise.
24556         * mpn/generic/mul_n.c (mpn_kara_mul_n): Change handling of `sign'
24557         to work around GCC 2.8.1 MIPS bug.
24559         * configure.in (implied alpha*-cray-unicos*): Remove -g from cc_cflags.
24561 2000-12-21  Torbjorn Granlund  <tege@swox.com>
24563         * mpn/alpha/invert_limb.asm: Simplify a bit.
24564         Add handling of bigend systems.
24565         * mpn/alpha/unicos.m4: Define `bigend'.
24566         * mpn/alpha/default.m4: Define `bigend' (to expand to nothing).
24568         * tests/t-constants.c (CHECK_CONSTANT): Print using %lx.
24570         * mpn/alpha/gmp-mparam.h: Remove sizes for plain C types.
24571         * mpn/alpha/ev5/gmp-mparam.h: Likewise.
24572         * mpn/alpha/ev6/gmp-mparam.h: Likewise.
24574         * mpn/alpha/unicos.m4: Define LEA.
24575         * mpn/alpha/default.m4: Likewise.
24576         * mpn/alpha/invert_limb.asm: Use LEA for loading symbolic addresses.
24577         * mpn/alpha/cntlz.asm: Likewise.
24579         * mpn/alpha/cntlz.asm: Don't use `ldbu', use slightly slower
24580         `ldq_u' + `extbl' instead.
24582         * mpn/alpha/unicos.m4: Define EXTERN.
24583         * mpn/alpha/default.m4: Define EXTERN (to expand to nothing).
24584         * mpn/alpha/cntlz.asm: Declare __clz_tab usign `EXTERN' (for the
24585         benefit of Unicos).
24587 2000-12-21  Kevin Ryde  <kevin@swox.se>
24589         * mpn/alpha/unicos.m4 (GSYM_PREFIX): Define for the benefit of
24590         __clz_tab.
24592 2000-12-20  Torbjorn Granlund  <tege@swox.com>
24594         * longlong.h: Add udiv_qrnnd and count_leading_zeros for _CRAYMPP
24595         systems.
24597 2000-12-19  Torbjorn Granlund  <tege@swox.com>
24599         * configure.in (*sparc*-*-*): Remove -g from cc_cflags and acc_cflags.
24601         * mpn/generic/sqrtrem.c (mpn_sqrtrem): Separate `limb' values from
24602         `size' values.
24604         * configure.in (*-cray-unicos*): Add `-Wa,-B' to cc_cflags.
24606         * demos/pexpr.c (rstate): New variable.
24607         (main): Initialize rstate.
24608         (enum op_t): Add RANDOM.
24609         (fns): Add field for RANDOM.
24610         (mpz_eval_expr): Handle RANDOM.
24612 2000-12-19  Kevin Ryde  <kevin@swox.se>
24614         * mpn/generic/sqrtrem.c: Rewrite by Paul Zimmermann, based on his
24615         Karatsuba Square Root algorithm.
24616         * gmp.texi (Square Root Algorithm): Update.
24618         * tune/many.pl: New file.
24620         * mpn/tests/try.c,ref.[ch] (mpn_preinv_mod_1, mpn_sb_divrem_mn,
24621         mpn_tdiv_qr, mpn_gcd_finda, mpn_kara_mul_n, mpn_kara_sqr_n,
24622         mpn_toom3_mul_n, mpn_toom3_sqr_n): Add testing.
24623         * mpn/tests/ref.c: Cast some "0"s in function calls.
24625         * mpn/x86/k7/mmx/mod_1.asm: Add preinv_mod_1 entrypoint, remove extra
24626         variable for loop termination.
24628         * mpn/x86/p6/mmx/mod_1.asm: Remove file, in favour of the following.
24629         * mpn/x86/p6/mod_1.asm: New file.
24631         * mpn/x86/pentium/mod_1.asm: New file.
24633 2000-12-18  Torbjorn Granlund  <tege@swox.com>
24635         * configure.in (mips*-*-irix[6789]*): Pass options to compiler using
24636         `-Wc'.
24638 2000-12-18  Kevin Ryde  <kevin@swox.se>
24640         * mpn/x86/k6/pre_mod_1.asm: New file.
24642         * tune/tuneup.c (USE_PREINV_MOD_1): Tune this, rearrange mpn_divrem_1
24643         and mpn_mod_1 handling in support of it.
24644         * tune/Makefile.am: Consequent changes to divrem_1.c and mod_1.c.
24646         * gmp-impl.h (USE_PREINV_MOD_1, MPN_MOD_OR_PREINV_MOD_1): New macros.
24647         * mpn/generic/perfsqr.c, mpz/pprime_p.c: Use MPN_MOD_OR_PREINV_MOD_1.
24649         * configure.in: Let an asm mod_1 provide a preinv_mod_1 entrypoint.
24651         * mpn/alpha/default.m4: Remove some newlines, add some asserts.
24652         (r0 etc, f0 etc): Use defreg and deflit.
24653         (PROLOGUE, PROLOGUE_GP, EPILOGUE): Use GSYM_PREFIX.
24654         * mpn/alpha/unicos.m4: Remove some newlines, add some asserts.
24655         * mpn/alpha/invert_limb.asm: Remove unused second DATASTART parameter.
24656         * mpn/alpha/cntlz.asm: Use mpn_count_leading_zeros and __clz_tab.
24658         * mpn/asm-defs.m4 (changecom): Comments on portability.
24659         (__clz_tab, modlimb_invert_table): New macros, matching gmp-impl.h.
24660         (count_leading_zeros, count_trailing_zeros): New define_mpn's.
24661         (PROLOGUE etc): Comments on usage, add some asserts.
24662         (OPERATION_[lr]shift): Use m4_not_for_expansion, for the benefit of
24663         lorrshift multifunc.
24665         * mpn/Makeasm.am (RM_TMP): New variable controlling tmp-*.s
24666         removal, for development purposes.
24668         * mpz/fac_ui.c: Fix for long long limb by using mpn_mul_1 not
24669         mpz_mul_ui, and note some possible enhancements.
24671         * mpz/tests/t-fac_ui.c: New test.
24672         * mpz/tests/Makefile.am (check_PROGRAMS): Add it.
24673         * macos/Makefile.in: Ditto, and add t-fib_ui too.
24675         * mpn/generic/[lr]shift.c: Remove some DEBUG code adequately covered
24676         by new parameter ASSERTs.
24678         * longlong.h (count_trailing_zeros): Assert x!=0.
24680         * doc/configuration: Updates for new configure things, add some notes
24681         on test setups.
24683 2000-12-16  Torbjorn Granlund  <tege@swox.com>
24685         * configure.in (*-*-aix): Pass -qmaxmem=20000 to xlc also for 64-bit
24686         compiles.
24687         * configure.in: Disable shared libs for *-*-ultrix*.
24689 2000-12-15  Torbjorn Granlund  <tege@swox.com>
24691         * configure.in (powerpc*-*-*): Pass -Wa,-mppc when using gcc.
24693         * gmp-impl.h (_EXTERN_INLINE): #define different for GCC and other
24694         compilers.
24696         * gmp-h.in (__gmp_inline): Remove.
24697         * mp-h.in: Likewise.
24698         * mpn/generic/gcd.c: Use `inline' instead of `__gmp_inline'.
24700         * configure.in (mips*-*-irix[6789]*): Define *_ldflags.
24702 2000-12-14  Torbjorn Granlund  <tege@swox.com>
24704         * mpn/generic/pre_mod_1.c: Use proper type for udiv_qrnnd
24705         parameter `dummy'.
24707         * mpn/generic/divrem_1.c: Use explicit `!= 0' in if statement.
24708         * mpn/generic/mod_1.c: Likewise.
24710 2000-12-14  Kevin Ryde  <kevin@swox.se>
24712         * config.guess (mips-*-irix[6789]*): Transform to mips64.
24713         (m68k-*-nextstep* | m68k-*-openstep*): Transform to m68020.
24715 2000-12-13  Torbjorn Granlund  <tege@swox.com>
24717         * tests/t-constants.c (main): Conditionalize use of PP_INVERTED.
24719         * mpn/mp_bases.c: Handle 4-bit limbs.
24720         (main): Add code for generating tables.
24722         * mpn/generic/popham.c: Handle limb bitsizes of 4, 8, 16.
24723         Suffix all 32-bit constant with `L'.
24724         Use CNST_LIMB for 64-bit constants.
24726 2000-12-13  Kevin Ryde  <kevin@swox.se>
24728         * gmp-impl.h (FIB_THRESHOLD): Defaults for 4,8,16 bits per limb, and
24729         an arbitrary fallback default.
24730         (modlimb_invert): Add efficient code for 8,16 (or 4) bits per limb.
24732         * configure.in (mips3, mips64): Don't bother with o32 (mips2 32-bit
24733         limb) on IRIX 6.
24735         * Makefile.am (SUBDIRS): Put "tests" first so tests/t-constants.c is
24736         run first, to pick up any limb size mismatch.
24738         * tune/tuneup.c (DIVREM_1, MOD_1): Fix result values, were off by 1.
24740         * mpz/fib_ui.c (table1, table2): Add data for 4,8,16 bits per limb.
24742 2000-12-12  Torbjorn Granlund  <tege@swox.com>
24744         * gmp-impl.h (LIMBS_PER_DOUBLE): Define for any limb bitsize.
24746 2000-12-11  Torbjorn Granlund  <tege@swox.com>
24748         * mpn/mp_bases.c: Add tables for 8-bit and 16-bit limbs.
24749         Round existing `double' values properly.
24751         * gmp-h.in (__gmp_randstate_struct): Prefix field names with _mp_
24752         to keep out of user name space.
24753         (__gmp_randata_lc): Likewise.
24754         * randclr.c, randlc.c, randlc2x.c, randraw.c, randsd.c, randsdui.c:
24755         Corresponding changes.
24757         * gmp-impl.h (PP): #define for machines with BITS_PER_MP_LIMB
24758         of 2, 4, 8, and 16.
24759         (PP_FIRST_OMITTED): New, define for various BITS_PER_MP_LIMB.
24760         (PP_MASK): Remove.
24761         (PP_MAXPRIME): Remove.
24763         * mpn/generic/perfsqr.c: Generalize PP handling for machines with
24764         limbs of < 32 bits.  Allow PP_INVERTED to be undefined.
24765         * mpz/pprime_p.c: Likewise.
24767 2000-12-10  Torbjorn Granlund  <tege@swox.com>
24769         * mpn/generic/mul_1.c: Declare parameters in C89 style.
24771 2000-12-10  Kevin Ryde  <kevin@swox.se>
24773         * tune/Makefile.am (speed_LDFLAGS, speed_ext_LDFLAGS, tune_LDFLAGS):
24774         Don't use -all-static, as gcc 2.95.2 on i386 solaris 8 doesn't like
24775         it.
24777         * configure.in (mips3,mips64): Add ABI=64, name the others ABI=n32 and
24778         ABI=o32.
24779         * mpn/mips3/gmp-mparam.h (BITS_PER_LONGINT): Remove #define and let
24780         configure determine it, since it varies with ABI=64 or ABI=n32.
24781         * gmp.texi (ABI and ISA): Update.
24782         (mpz_mod_ui): Remark that it's identical to mpz_fdiv_r_ui.
24783         (mpn_divexact_by3): Qualify a statement needing mp_bits_per_limb even.
24785         * mul_fft.c (mpn_fft_mul_modF_K etc): Patch by Paul Zimmermann to fix
24786         results in certain cases of recursing into a further FFT.
24788 2000-12-09  Torbjorn Granlund  <tege@swox.com>
24790         * mpz/cmpabs.c: Remove unused variable.
24791         * mpz/rrandomb.c: Likewise.
24792         * mpz/xor.c: Likewise.
24794 2000-12-07  Torbjorn Granlund  <tege@swox.com>
24796         * mpn/generic/gcdext.c: Handle double carry when computing s1.
24797         Merge two code blocks for computing s0 and s1.
24799 2000-12-07  Kevin Ryde  <kevin@swox.se>
24801         * configure.in (hppa*-*-*): Remove -Aa -D_HPUX_SOURCE from
24802         cc_cflags/cppflags, and instead let AM_C_PROTOTYPES add it, or -Ae,
24803         whichever works.
24805         * configure.in (*-*-aix[34]*): Disable shared by default, but let
24806         the user override that, if desired.
24807         * gmp.texi (Notes for Particular Systems): Update.
24809 2000-12-06  Torbjorn Granlund  <tege@swox.com>
24811         * mpq/cmp_ui.c: Streamline.
24813 2000-12-06  Kevin Ryde  <kevin@swox.se>
24815         * tune/divrem_1_div.c,divrem_1_inv.c,mod_1_div.c,mod_1_inv.c,
24816         gcdext_double.c: New files for measuring.
24817         * tune/Makefile.am (libspeed_la_SOURCES): Add them.
24818         * tune/speed.c,speed.h,common.c: Add measuring of them.
24819         (mpn_preinv_mod_1, mpz_jacobi, mpz_powm_ui): Add measuring.
24821         * speed.c (getopt_long): Don't use this, just plain getopt.
24822         * configure.in (getopt_long): Remove test.
24824         * gmp-impl.h (MPN_KARA_MUL_N_TSIZE, MPN_KARA_MUL_N_MINSIZE,
24825         MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_MUL_N_MINSIZE): New macros, and
24826         assume toom3 square tsize was meant to be the same as the mul (both
24827         are overestimates).
24828         * tune/tuneup.c, mpn/generic/mul.c, mpn/generic/mul_n.c: Use them.
24829         * mpn/generic/mul_n.c (mpn_toom3_sqr_n): Fix an ASSERT to use
24830         TOOM3_SQR_THRESHOLD not TOOM3_MUL_THRESHOLD, add a few that might
24831         be more realistic size checks.
24832         * tune/speed.h (SPEED_ROUTINE_MPN_MUL_N_TSPACE etc): Use minsize.
24834         * mpn/generic/divrem_1.c: Partial rewrite, merge fractional part
24835         calculation, skip a divide step in more cases, introduce
24836         DIVREM_1_NORM_THRESHOLD and DIVREM_1_UNNORM_THRESHOLD.
24837         * mpn/generic/mod_1.c: Partial rewrite, skip a divide step in more
24838         cases, introduce MOD_1_NORM_THRESHOLD, MOD_1_UNNORM_THRESHOLD.
24839         * longlong.h (UDIV_PREINV_ALWAYS): New define, set for alpha and ia64.
24840         * tune/tuneup.c (DIVREM_1_NORM_THRESHOLD, DIVREM_1_UNNORM_THRESHOLD,
24841         MOD_1_NORM_THRESHOLD, MOD_1_UNNORM_THRESHOLD): Tune these.
24842         * gmp-impl.h [TUNE_PROGRAM_BUILD]: Support for this.
24843         * tune/Makefile.am (TUNE_MPN_SRCS): Add divrem_1.c and mod_1.c.
24845         * gmp-impl.h (UDIV_NORM_PREINV_TIME): Renamed from UDIV_PREINV_TIME.
24846         * mpn/generic/perfsqr.c, mpn/generic/sb_divrem_mn.c,
24847         mpn/x86/*/gmp-mparam.h: Ditto.
24848         * gmp-impl.h (UDIV_UNNORM_PREINV_TIME): New define.
24850         * configure.in (AC_C_INLINE, HAVE_INLINE): New test and define.
24851         * gmp-impl.h (inline): Remove, use config.h.
24852         (_EXTERN_INLINE): Redefine based on HAVE_INLINE.
24853         (mpn_zero_p): Use HAVE_INLINE.
24855         * acinclude.m4 (GMP_PROG_AR, GMP_PROG_NM): Don't add flags to a user
24856         selected $AR or $NM.
24858         * tune/tuneup.c (all): Print how long the tuning took.
24860         * configure.in (AM_C_PROTOTYPES): Use this, not GMP_ANSI2KNR.
24861         * acinclude.m4 (GMP_ANSI2KNR): Remove.
24863         * Makefile.am (gmp.h, mp.h): In DISTCLEANFILES not CLEANFILES.
24865         * gmp-h.in (mpn_divmod, mpn_divmod_1, mpn_divexact_by3): Cast some
24866         zeros, for the benefit of K&R if long!=int.
24868         * mpn/lisp/gmpasm-mode.el (gmpasm-comment-start-regexp): Add "*" for
24869         the benefit of cray.
24871         * compat.c (mpn_divexact_by3, mpn_divmod_1): Return types should be
24872         mp_limb_t, not int, and need an actual "return".
24874 2000-12-05  Torbjorn Granlund  <tege@swox.com>
24876         * mpn/sparc32/v8/supersparc/gmp-mparam.h: Retune.
24877         * mpn/alpha/gmp-mparam.h: Tune for 21064.
24879         * longlong.h: Reformat to avoid newlines within strings.
24881         * gmp-impl.h (inline): Disable if GCC has defined __STRICT_ANSI__.
24883         * configure.in: Do a `mkdir tune' before creating tune/sqr_basecase.c.
24885         * Makefile.am: Treat mp.h analogously to gmp.h.
24887         configure.in (*-*-aix): Pass -qmaxmem=20000 to xlc.
24889         * mp-h.in: Renamed from mp.h.
24890         Add #define for _LONG_LONG_LIMB.
24891         Move some other fixes from gmp-h.in.
24892         * mp.h: Removed.
24893         * configure.in: Generate mp.h from mp-h.in like we handle
24894         gmp-h.in/gmp.h.
24896 2000-12-04  Torbjorn Granlund  <tege@swox.com>
24898         * acinclude.m4: Fix typo testing for bad HP compiler.
24900 2000-12-03  Torbjorn Granlund  <tege@swox.com>
24902         * mpbsd/tests/t-misc.c (check_itom): Exclude some tests for Cray
24903         CFP systems.
24905         * longlong.h (CRAYIEEE umul_ppmm): New.
24907         * mpn/cray/gmp-mparam.h (BITS_PER_SHORTINT): 32 => 64.
24908         (*_THRESHOLD): Tune.
24910         * configure.in: Disable shared libs for *-*-unicos*.
24912 2000-12-03  Kevin Ryde  <kevin@swox.se>
24914         * configure.in, tune/Makefile.am: Create tune/sqr_basecase.c during
24915         configure, and use it unconditionally in $(nodist_tuneup_SOURCES).
24916         Fixes a problem with sqr_basecase.lo under --disable-static.
24918 2000-12-01  Torbjorn Granlund  <tege@swox.com>
24920         * mpf/tests/t-get_d.c (LOW_BOUND,HIGH_BOUND): #define for non-IEEE
24921         Cray systems.
24923         * gmp-impl.h (union ieee_double_extract): Test for _CRAYIEEE.
24925 2000-11-30  Torbjorn Granlund  <tege@swox.com>
24927         * mpz/tests/t-mul.c (base_mul): Fix re-evaluation problems in macro
24928         invocations.
24929         (ref_mpz_mul): New name from mpz_refmul.  Make static.
24930         (base_mul): New name for _mpn_mul_classic.
24932 2000-11-30  Kevin Ryde  <kevin@swox.se>
24934         * configure.in: Rewrite of CC/CFLAGS selection scheme, introduce a
24935         notion of ABI, merge compiler and mpn path selection, add flags
24936         selection for AR and NM, let CC without CFLAGS work.
24937         (AC_PROG_CC): Use this, not GMP_SELECT_CC.
24938         * acinclude.m4 (GMP_PROG_CC_WORKS): Don't use AC_TRY_COMPILE, combine
24939         cc/cflags parameter.
24940         (GMP_PROG_CC_FIND, GMP_CHECK_CC_64BIT, GMP_PROG_CC_SELECT): Remove.
24941         * gmp.texi (Installing GMP): Updates for new scheme.
24943         * configure.in (AC_CANONICAL_HOST): Use this and $host, not $target.
24944         * acinclude.m4, acconfig.h, longlong.h, mpn/x86/x86-defs.m4,
24945         mpn/x86/k7/mmx/popham.asm: Ditto, renaming HAVE_TARGET_CPU to
24946         HAVE_HOST_CPU.
24947         * gmp.texi (Build Options, and elsewhere): Update.
24949         * acinclude.m4 (GMP_COMPARE_GE): New macro.
24950         (GMP_GCC_MARCH_PENTIUMPRO): Use it, add CC parameter, check for GCC.
24951         (GMP_HPC_HPPA_2_0): New macro, adapted from GMP_CHECK_CC_64BIT.
24953         * acinclude.m4 (GMP_PROG_AR): New macro, using AC_CHECK_TOOL, adding
24954         GMP flags.
24955         * configure.in: Use it
24957         * gmp-h.in: Renamed from gmp.h.
24958         (@define_LONG_LONG_LIMB@): Placeholder for instantiation.
24959         (__GNU_MP__): Bump to 3.
24960         * acinclude.m4 (GMP_VERSION): Get version from gmp-h.in.
24961         * configure.in: Create gmp.h from gmp-h.in to set _LONG_LONG_LIMB.
24962         * gmp.texi.h (ABI and ISA): Mention this.
24963         * acconfig.h (_LONG_LONG_LIMB): Remove undef.
24964         * Makefile.am: Distribute gmp-h.in, not gmp.h.
24966         * configure.in (AC_PROG_CPP, AC_PROG_INSTALL, AC_PROG_LN_S): Remove,
24967         dragged in by other macros.
24968         (gmp_asm_syntax_testing): Renamed from gmp_no_asm_syntax_testing.
24969         (AC_EXEEXT, AC_OBJEXT): Remove, done automatically by libtool.
24970         * configure.in, acinclude.m4: Remove "" from "`foo`", being
24971         unnecessary and not portable.
24973         * configure.in (GMP_LDFLAGS): New AC_SUBST flags for libtool link.
24974         (powerpc64*-*-aix*): Use for -Wc,-maix to fix shared library creation,
24975         but can't build shared and static at the same time.
24976         * Makefile.am (libgmp_la_LDFLAGS, libmp_la_LDFLAGS): Use
24977         $(GMP_LDFLAGS).
24978         * gmp.texi (Notes for Particular Systems): Update AIX problem
24980         * configure.in (AC_CONFIG_LINKS): Use where needed, not via gmp_links.
24981         (gmp_srclinks): Build up as needed, not via gmp_links.
24983         * acinclude.m4 (GMP_INIT): Do CONFIG_TOP_SRCDIR and asm-defs.m4 here.
24984         * configure.in (asm-defs.m4): Consequent changes.
24986         * acinclude.m4 (GMP_INCLUDE_MPN): Using include_mpn(), replacing
24987         GMP_INCLUDE and GMP_SINCLUDE.
24988         * configure.in (gmp_m4postinc): Remove this scheme, use
24989         GMP_INCLUDE_MPN instead.
24991         * configure.in (*-*-sco3.2v5*): Force ac_cv_archive_cmds_need_lc=no,
24992         until libtool does this itself.
24993         * gmp.texi (Known Build Problems): Remove SCO -lc problem.
24995         * configure, INSTALL.autoconf, etc: Update to autoconf 2000-11-29.
24996         * acinclude.m4 (GMP_C_SIZES): Use AC_CHECK_SIZEOF.
24997         * gmp.texi (Known Build Problems): Remove version.c sed/config.h
24998         problem, fixed.
25000         * ltmain.sh, aclocal.m4: Update to libtool 2000-11-25.
25001         * ltconfig: No longer required, but leave an empty dummy for automake.
25002         * gmp.texi (Known Build Problems): Remove SunOS native ar ranlib
25003         problem, fixed.
25005         * */Makefile.in, aclocal.m4: Update to automake 2000-11-25.
25006         * mpbsd/tests/Makefile.am, mpfr/tests/Makefile.am (check_PROGRAMS):
25007         Remove dummy, no longer required.
25008         * mpbsd/tests/dummy.c, mpfr/tests/dummy.c: Remove files.
25009         * depcomp: Remove file, no longer required (with no-dependencies).
25011         * texinfo.tex: Update to 2000-11-09.
25012         * gmp.texi (Build Options): Mention PDF from gmp.texi.
25013         * Makefile.am (MOSTLYCLEANFILES): Add gmp.tmp, from new texinfo.tex.
25015         * gmp.texi (Build Options): List alphaev56, alphapca56, alphaev67,
25016         hppa2.0n and power among supported CPUs.
25018 2000-11-30  Torbjorn Granlund  <tege@swox.com>
25020         * mpz/tests/t-mul.c: Increase max operand size from 2^17 bits
25021         to 2^19 bits.  Misc cleanups.
25023 2000-11-26  Kevin Ryde  <kevin@swox.se>
25025         * tune/tuneup.c (FIB_THRESHOLD): Cope better with different speeds of
25026         odd and even sizes.
25028         * longlong.h (alpha): Use udiv_qrnnd and count_leading_zeros on all
25029         compilers, not just gcc.
25031         * pre_mod_1.c: Use conditional subtract to always skip a division.
25032         (UMUL_TIME, UDIV_TIME): Remove defaults, now in longlong.h.
25034 2000-11-22  Torbjorn Granlund  <tege@swox.com>
25036         * mpn/pa64w/gmp-mparam.h: Retune.
25037         * mpn/pa64/gmp-mparam.h: Retune.
25038         * mpn/sparc64/gmp-mparam.h: Retune.
25040 2000-11-22  Kevin Ryde  <kevin@swox.se>
25042         * gmp-impl.h (ABOVE_THRESHOLD, BELOW_THRESHOLD): New macros.
25043         * mpn/generic/gcdext.c: Use them.
25045         * mpn/generic/gcdext.c [WANT_GCDEXT_ONE_STEP]: Force only one step.
25046         * tune/gcdextos.c, tune/gcdextod.c: New files, one step gcdext, single
25047         and double.
25048         * tune/Makefile.am (libspeed_la_SOURCES): Add them.
25049         (TUNE_MPN_SRCS): Remove gcdext.c.
25050         * tune/speed.h, tune/common.c, tune/speed.c: Add measuring.
25051         * tune/tuneup.c: Use for GCDEXT_THRESHOLD, plus check if double limb
25052         is ever better.  Should be more accurate, and hopefully faster.
25054         * tune/gcdext_single.c: New file, gcdext forced to single limbs.
25055         * tune/Makefile.am: Add it.
25056         * tune/speed.h, tune/common.c, tune/speed.c: Add measuring, and of
25057         invert_limb.
25059         * tune/speed.h (speed_params r): Use mp_limb_t, not long.
25060         * tune/speed.h, tune/common.c: Don't "switch" on "r".
25061         * tune/speed.c (r_string): Accept limb sized constants.
25062         (choice scale): Add a scale factor (eg. "2.33*mpn_add_n").
25063         * tune/common.c (SPEED_ROUTINE_UDIV_QRNND_A): Default r to
25064         __mp_bases[10].big_base, being a full limb value.
25066         * configure.in (alphapca56*-*-*): Use ev5 mpn path.
25067         (am29000*-*-*): Remove this, leave the canonical a29k.
25068         (z8k*-*-*, z8kx*-*-*): Changed from z8000, since z8k is canonical.
25069         (gmp_mpn_functions_optional): Add invert_limb, use for alpha and ia64.
25071         * configure.in (alloca): Accept yes/no/detect, generate an error if
25072         "yes" but not available.
25073         * gmp.texi (Build Options): Update.
25075         * acinclude.m4 (GMP_TRY_ASSEMBLE): Make conftest.out available.
25076         (GMP_ASM_ALIGN_FILL_0x90): Use it.
25078         * acinclude.m4 (GMP_ASM_X86_MMX) [*-*-solaris*]: Check for solaris
25079         2.6 "as" movq bug.
25080         * gmp.texi (Notes for Particular Systems): Update x86 MMX note.
25082 2000-11-21  Torbjorn Granlund  <tege@swox.com>
25084         * tune/Makefile.am (EXTRA_DIST): List hppa2w.asm.
25086         * tune/hppa2.asm: Change level directive to "2.0n".
25087         * tune/hppa2w.asm: New file.
25088         * configure.in [SPEED_CYCLECOUNTER_OBJS switch]: Separate out hppa2.0w.
25090         * mpn/pa64/gmp-mparam.h (BITS_PER_LONGINT): 64 => 32.
25092 2000-11-21  Kevin Ryde  <kevin@swox.se>
25094         * urandom.h (random): No prototype if glibc stdlib.h has already
25095         provided it (avoids an int32_t/long conflict).
25097         * tune/Makefile.am (LDFLAGS): Use -all-static.
25098         (speed-dynamic): Dynamic linked version of speed.c.
25099         * tune/README: Update.
25101         * mpn/generic/gcd.c (find_a): Use native version if available.
25102         * acconfig.h (HAVE_NATIVE_mpn_gcd_finda): Add #undef.
25103         * gmp-impl.h (mpn_gcd_finda): Add prototype and define.
25104         * mpn/asm-defs.m4 (mpn_gcd_finda): New define_mpn.
25105         * tune/gcd_finda_gen.c: #undef any HAVE_NATIVE_mpn_gcd_finda.
25106         * configure.in (gmp_mpn_functions_optional): Add gcd_finda.
25107         * mpn/x86/k6/gcd_finda.asm: New file.
25109         * tune/tuneup.c (POWM_THRESHOLD): Slightly bigger size steps.
25111         * gmp-impl.h (__GMP_IMPL_H__): Protect against multiple inclusion.
25112         * tune/gcd_bin.c, tune/powm_mod.c, tune/powm_redc.c: Use #undef after
25113         gmp-impl.h to force thresholds.
25114         * tune/tuneup.c (print_define, fft): No need for #ifndefs on
25115         thresholds any more.
25117 2000-11-20  Torbjorn Granlund  <tege@swox.com>
25119         * mpz/tests/t-powm.c: Analogous changes as made 2000-11-12 to t-mul.c.
25120         * mpz/tests/t-powm_ui.c: Likewise.
25121         * mpz/tests/t-pow_ui.c: Likewise.
25122         * mpz/tests/t-root.c: Likewise.
25124         * configure.in [compiler switch]: Pass "-Aa -D_HPUX_SOURCE" to cc for
25125         all hppa versions.
25127         * mpn/hppa/hppa1_1/udiv_qrnnd.S: Reference data using PC relative
25128         addressing (was r19 relative addressing).
25130 2000-11-18  Torbjorn Granlund  <tege@swox.com>
25132         * rand.c: (__gmp_rand_lc_scheme): Convert strings to hexadecimal.
25133         (gmp_randinit): Expect strings in hexadecimal.
25135 2000-11-18  Kevin Ryde  <kevin@swox.se>
25137         * configfsf.guess, configfsf.sub: Update to 2000-11-16.
25138         * config.guess (alpha*-*-openbsd*): Do exact cpu detection.
25140 2000-11-14  Torbjorn Granlund  <tege@swox.com>
25142         * mpz/tests/t-fdiv.c: Analogous changes as made 2000-11-12 to t-mul.c.
25143         * mpz/tests/t-tdiv_ui.c: Likewise.
25144         * mpz/tests/t-fdiv_ui.c: Likewise.
25145         * mpz/tests/t-sqrtrem.c: Likewise.
25146         * mpz/tests/t-gcd.c: Likewise.
25148 2000-11-13  Kevin Ryde  <kevin@swox.se>
25150         * mpn/Makeasm.am: New file, splitting out assembler rules.
25151         * mpn/Makefile.am, tune/Makefile.am: Use it.
25153         * mpn/Makefile.am (@CPP@): Remove this, automake already gives it.
25155         * configure.in (AC_CHECK_LIBM): New test, and AC_SUBST it.
25156         * Makefile.am (MPFR_LIBADD_OPTION): Use it.
25157         * demos/Makefile.am (qcn_LDADD): Ditto.
25158         * tune/Makefile.am (libspeed_la_LIBADD): Ditto.
25159         * tests/rand/Makefile.am (libstat_la_LIBADD): Ditto.
25161         * tune/time.c (timeval_diff_secs): Better calculation.
25162         (read_real_time): New measuring method for AIX power/powerpc.
25163         (speed_endtime): Protect against negative times.
25164         * tune/common.c (speed_measure): Protect against big reps.
25165         * tune/freq.c (speed_cpu_frequency_measure_one): Better timeval diff.
25166         * tune/speed.h (TIMEVAL_DIFF_SEC,USEC): Remove macros.
25167         * configure.in: (sys/systemcfg.h, read_real_time): New tests.
25169 2000-11-13  Torbjorn Granlund  <tege@swox.com>
25171         * mpz/tests/t-mul.c: Remove #include urandom.h.
25172         * mpz/tests/t-tdiv.c: Likewise.
25174         * configure.in [SPEED_CYCLECOUNTER_OBJS switch]:
25175         Declare hppa.asm as just 32 bits (cyclecounter_size=1).
25177 2000-11-12  Torbjorn Granlund  <tege@swox.com>
25179         * mpz/tests/t-mul.c
25180         (main): Generate random numbers using gmp_rand* functions.
25181         (main): Distribute random numbers non-uniformly.
25182         (main): Seed by current time if GMP_CHECK_RANDOMIZE is set.
25183         (_mpn_mul_classic): Streamline.
25184         * mpz/tests/t-tdiv.c: Analogous changes.
25186         * demos/pexpr.c (HAVE_sigaltstack): Fix typo in testing for _UNICOS.
25187         Also test for __hpux.
25189 2000-11-11  Torbjorn Granlund  <tege@swox.com>
25191         * mpn/alpha/ev5/gmp-mparam.h: Retune.
25193         * mpn/alpha/ev6/gmp-mparam.h: Retune.
25195         * mpn/alpha/ev6/add_n.asm: Misc cleanups.
25197         * mpn/alpha/ev6/sub_n.asm: New file.
25199 2000-11-10  Torbjorn Granlund  <tege@swox.com>
25201         * configure.in [path switch] (alphaev6*-*-*): Add alpha/ev5 to path.
25203         * mpn/alpha/ev6/add_n.asm: New file.
25205 2000-11-10  Kevin Ryde  <kevin@swox.se>
25207         * mpz/powm.c (redc): Make global under WANT_REDC_GLOBAL.
25208         * tune/powm_mod.c, tune/powm_redc.c: New files.
25209         * tune/Makefile.am (libspeed_la_SOURCES): Add them.
25210         * tune/*: Add measuring of redc, mpz_mod, mpz_powm_mod, mpz_powm_redc.
25212         * tune/tuneup.c (POWM_THRESHOLD): Determine from redc and mpz_mod.
25213         * tune/Makefile.am (TUNE_MPZ_SRCS): Remove powm.
25215 2000-11-10  Torbjorn Granlund  <tege@swox.com>
25217         * mpn/mips3/gmp-mparam.h: Retune.
25219         * configure.in (os_64bit): Rename to check_64bit_compiler.
25221 2000-11-09  Torbjorn Granlund  <tege@swox.com>
25223         * configure.in [SPEED_CYCLECOUNTER_OBJS switch]: Choose hppa/hppa2 code
25224         depending on $CC64.
25226 2000-11-09  Kevin Ryde  <kevin@swox.se>
25228         * mpn/x86/pentium/mul_1.asm: Unroll 2x, saving 1 c/l when in L1.
25229         Add 1c entrypoint.
25230         * mpn/x86/pentium/aorsmul_1.asm: Add 1c entrypoints, shave a couple
25231         of cycles at entry and exit.
25233         * configure.in (power1,2,2sc): Support these as synonyms for plain
25234         power.
25236         * acinclude.m4 (GMP_ASM_X86_SHLDL_CL): GMP_DEFINE WANT_SHLDL_CL here.
25237         (GMP_ASM_X86_MMX, GMP_ASM_X86_SHLDL_CL): Add X86 into the names.
25238         * configure.in: Consequent changes.
25240         * gmp.texi (Notes for Particular Systems): Remarks about power/powerpc.
25241         (Reentrancy): Remarks about simultaneous writing.
25242         (Reporting Bugs): Ask for configfsf.guess.
25244 2000-11-08  Kevin Ryde  <kevin@swox.se>
25246         * acinclude.m4 (GMP_FUNC_ALLOCA): New macro.
25247         * configure.in: Use it.
25248         * gmp-impl.h (alloca): Conditionals and setups as per autoconf
25249         (should make alloca available on more non-gcc compilers).
25251         * acinclude.m4: Misc reformatting, simplify some quoting.
25252         (GMP_ASM_UNDERSCORE, GMP_ASM_X86_MCOUNT): Use $CC $CFLAGS $CPPFLAGS.
25253         (GMP_ASM_UNDERSCORE, GMP_ASM_ALIGN_FILL_0x90, GMP_ASM_RODATA): Put
25254         AC_REQUIREs outside AC_CACHE_CHECK.
25255         (GMP_C_SIZES): Use $srcdir/gmp.h, not -I; use $CPPFLAGS.
25256         (GMP_ASM_UNDERSCORE): Use "gmp_compile" variable, and only rm
25257         conftes1* conftes2*.
25258         (GMP_PROG_NM): New macro, require it in appropriate GMP_ASM_*.
25259         (GMP_TRY_ASSEMBLE): New macro, use it in various GMP_ASM_*.
25260         * configure.in: Use GMP_PROG_NM.
25262         * mpn/tests/spinner.c (spinner_signal): Use RETSIGTYPE.
25263         (spinner_init): Force output to unbuffered.
25265         * mpn/x86/README.family: Notes about GOT table and imul, misc updates.
25266         * mpn/x86/k7/diveby3.asm: Change to 3 operands for immediate imul.
25267         * mpn/x86/k6/diveby3.asm: Ditto.
25269 2000-11-06  Torbjorn Granlund  <tege@swox.com>
25271         * urandom.h: Simplify and make it work properly for 64-bit
25272         machines also in environments without `random'.
25274 2000-11-04  Torbjorn Granlund  <tege@swox.com>
25276         * configure.in [path switch]: Don't match rs6000-*-*, in
25277         particular don't assume POWER.
25279         * tune/tuneup.c (fft): Remove usleep calls.
25281         * config.guess: Don't pass "$@" when it is known to be empty.
25283         * Makefile.am (EXTRA_DIST): List configfsf.guess and configfsf.sub.
25285 2000-11-04  Kevin Ryde  <kevin@swox.se>
25287         * configfsf.guess, configfsf.sub: Moved from config.guess and
25288         config.sub.
25289         * config.guess, config.sub: New files, wrappers around around
25290         configfsf versions.
25291         * configfsf.guess: Update to FSF 2000-10-23.
25292         * configfsf.sub: Update to FSF 2000-10-25.
25294         * acinclude.m4 (GMP_ASM_POWERPC_R_REGISTERS): New macro.
25295         * mpn/powerpc32/powerpc-defs.m4: New file, regmap.m4 r0 etc macros
25296         conditionalized by GMP_ASM_POWERPC_R_REGISTERS.
25297         * mpn/powerpc32/regmap.m4: Remove file.
25298         * configure.in (powerpc*-*-*): Use all this.
25300         * mpz/divegcd.c: New file, providing mpz_divexact_gcd.
25301         * Makefile.am, mpz/Makefile.am: Add it.
25302         * gmp-impl.h (mpz_divexact_gcd): Add prototype.
25303         * mpq/aors.c,canonicalize.c,div.c,mul.c: Use it.
25305         * longlong.h [pentium] (count_leading_zeros): New macro.
25306         (__clz_tab): Always provide prototype.
25307         * acconfig.h (HAVE_TARGET_CPU_): Add x86s.
25309         * tune/speed.[ch],common.c (count_leading_zeros,
25310         count_trailing_zeros, __udiv_qrnnd_c): Add measuring.
25312         * configure.in (X86_PATTERN): Move from here ...
25313         * acinclude.m4 (X86_PATTERN): ... to here.
25314         (GMP_ASM_RODATA): Use it.
25316         * configure.in (srandom): New test.
25317         * mpn/tests/try.c: Use it.
25318         * tune/speed.c: Ditto, and conditionalize getrusage and headers.
25320 2000-11-02  Kevin Ryde  <kevin@swox.se>
25322         * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add udiv_qrnnd.c
25323         and udiv_w_sdiv.c.
25325         * mpn/generic/mul_n.c (mpn_kara_sqr_n): Remove a duplicate
25326         subtract at the evaluate stage.
25328 2000-11-01  Torbjorn Granlund  <tege@swox.com>
25330         * configure.in [compiler switch] (sparc64-*-linux*): Spell
25331         gmp_xoptcflags_gcc properly, and pass same options as for other
25332         sparcv9 configs.
25334         * tune/speed.h (SPEED_ROUTINE_MPN_GET_STR): Fix type of wsize.
25336 2000-10-31  Torbjorn Granlund  <tege@swox.com>
25338         * configure.in [compiler switch] (sparc64-*-linux*): Remove -mvis
25339         from gmp_xoptflags_gcc, this might not be an ultrasparc.
25340         Remove -m32 from gmp_cflags_gcc; add -Wa,-xarch=v8plus.
25342 2000-10-29  Torbjorn Granlund  <tege@swox.com>
25344         * mpn/ia64/lorrshift.asm: New file.
25346         * configure.in: New mulfunc `lorrshift' for lshift and rshift.
25348 2000-10-29  Kevin Ryde  <kevin@swox.se>
25350         * mpn/generic/mul_n.c (mpn_kara_sqr_n): Delete code performing
25351         superfluous mpn_sub_n calls.
25353         * configure.in (found_asm, M4): Account for SPEED_CYCLECOUNTER_OBJ,
25354         for the benefit of targets whose only .asm is a cycle counter.
25356         * tune/tuneup.c (fft): Remove bogus usleep calls.
25358 2000-10-28  Torbjorn Granlund  <tege@swox.com>
25360         * mpn/ia64/invert_limb.asm: Get return value for 0x800...00 right.
25362         * tune/Makefile.am (EXTRA_DIST): Add ia64.asm.
25364         * tune/ia64.asm: Fix typo.
25366         * add_n.asm addmul_1.asm mul_1.asm popcount.asm sub_n.asm:
25367         Preserve ar.lc as required by ABI.
25368         * longlong.h (ia64 udiv_qrnnd): New.
25370         * configure.in [path switch] (ia64*-*-*): Set extra_functions.
25371         * mpn/ia64/invert_limb.asm: New file.
25373 2000-10-27  Torbjorn Granlund  <tege@swox.com>
25375         * configure.in [compiler switch]:
25376         Get rid of c89 for all hppa flavours--it is an evil compiler!
25378         * tune/speed.h (SPEED_ROUTINE_MPN_SET_STR): Fix type of xp.
25379         (SPEED_ROUTINE_MPN_GET_STR): Fix type of wp.
25381 2000-10-27  Kevin Ryde  <kevin@swox.se>
25383         * gmp.texi (Fibonacci Number Algorithm): New section.
25385         * mpz/tests/t-fib_ui.c: New file.
25386         * mpz/tests/Makefile.am (check_PROGRAMS): Add it.
25388         * mpz/fib_ui.c: Rewrite, same formulas but using mpn functions and
25389         some lookup tables, much faster at small to moderate sizes.
25390         * gmp-impl.h (MPZ_FIB_SIZE): New macro.
25391         (FIB_THRESHOLD): Establish default here.
25392         * tune/tuneup.c (FIB_THRESHOLD): Start search after the new table
25393         data.
25395         * mpn/x86/x86-defs.m4 (mcount_movl_GOT_ebx): Rename from movl_GOT_ebx,
25396         and don't use GSYM_PREFIX with _GLOBAL_OFFSET_TABLE_.
25398         * tune/freq.c (speed_cpu_frequency_measure): New test comparing
25399         gettimeofday and speed_cyclecounter, should cover many systems.
25401 2000-10-27  Torbjorn Granlund  <tege@swox.com>
25403         * mpn/ia64/gmp-mparam.h: Retune.
25405 2000-10-26  Torbjorn Granlund  <tege@swox.com>
25407         * longlong.h (ia64): Set UMUL_TIME and UDIV_TIME.
25409         * mpn/ia64/submul_1.c: Fix typo.
25411 2000-10-25  Kevin Ryde  <kevin@swox.se>
25413         * tune/freq.c (speed_cpu_frequency_sysctl): New test, supporting
25414         hw.model for BSD flavours.
25415         * configure.in (sysctl, sys/param.h): New tests.
25417 2000-10-24  Torbjorn Granlund  <tege@swox.com>
25419         * tune/freq.c: Explicitly #include config.h before other include files.
25421         * mpz/tests/reuse.c (FAIL2): New #define.
25422         (main): Use FAIL2.  Now this test properly returns non-zero exit
25423         status when it fails.
25425         * mpn/powerpc32/gmp-mparam.h: Retune.
25426         * mpn/powerpc64/gmp-mparam.h: Retune.
25428 2000-10-24  Kevin Ryde  <kevin@swox.se>
25430         * mpn/x86/k6/cross.pl: Support 8 and 16 byte code alignment.
25432         * mpq/aors.c, mpq/canonicalize.c: Skip two mpz_divexact calls if
25433         gcd gives 1, which should be 60% of the time.
25434         * gmp-impl.h (MPZ_EQUAL_1_P): New macro.
25435         * mpq/mul.c, mpq/div.c: Use it, and a new DIV_OR_SET.
25437         * tune/tuneup.c (xp_block, yp_block): Initialize these with random
25438         data.  Fixes GCD_ACCEL and GCDEXT thresholds, and latest POWM.
25440 2000-10-23  Torbjorn Granlund  <tege@swox.com>
25442         * configure.in [SPEED_CYCLECOUNTER_OBJS switch]: Add ia64 case.
25444         * mpn/ia64/gmp-mparam.h: Fill in some parameters.
25446         * mpn/ia64/submul_1.c: New file.
25448         * tune/ia64.asm: New file.
25450         * gmp-impl.h (union ieee_double_extract): Handle ia64.
25452         * mpn/mp_bases.c: Decrease chars_per_bit_exactly for entry 1 to
25453         work around buggy ia64-linux.
25455         * longlong.h (ia64 umul_ppmm): Update register flags to match new GCC.
25457 2000-10-22  Torbjorn Granlund  <tege@swox.com>
25459         * mpn/alpha/ev6/gmp-mparam.h (DC_THRESHOLD): Update.
25460         * mpn/alpha/ev6/submul_1.asm: New file.
25462 2000-10-22  Kevin Ryde  <kevin@swox.se>
25464         * tune/gcd_bin.c: New file.
25465         * tune/gcd_finda_gen.c: New file.
25466         * tune/Makefile.am (libspeed_la_SOURCES): Add them.
25467         * tune/speed.[ch],common.c (mpn_gcd_binary, find_a): Add measuring.
25469         * * (__gmp_allocate_func etc): Rename from _mp_allocate_func etc.
25470         (__gmp_default_allocate etc): Rename from _mp_default_allocate etc.
25471         * gmp-impl.h (__GMP_REALLOCATE_FUNC_TYPE,
25472         __GMP_REALLOCATE_FUNC_LIMBS): New macros.
25474         * gmp-impl.h (DC_THRESHOLD): Establish default here, set to 3*KARA
25475         since that's the measured average.
25476         * mpn/generic/dc_divrem_n.c, mpn/generic/tdiv_qr.c (DC_THRESHOLD):
25477         Remove default.
25479 2000-10-21  Torbjorn Granlund  <tege@swox.com>
25481         * mpn/Makefile.am (TARG_DIST): Add ia64.
25483 2000-10-21  Kevin Ryde  <kevin@swox.se>
25485         * *: Change BZ -> DC.
25486         * mpn/generic/dc_divrem_n.c: Renamed from bz_divrem_n.c.
25488         * doc/multiplication: Remove file, now in the manual.
25489         * doc/assembly_code: Ditto.
25490         * tune/README: Remove some parts now in the manual.
25492         * gmp.texi (@m etc): Add and use some new macros.
25493         (Integer Division - mpz_[cft]div_*): Merge descriptions, for brevity
25494         and to emphasise similarities.
25495         (Low-Level Functions - mpn_[lr]shift): Specify count as 1 to
25496         mp_bits_per_limb-1.
25497         (Algorithms): New chapter.
25498         (References): Add some papers.
25500         * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove some
25501         unused variables.
25502         * mpn/generic/mul_fft.c (mpn_fft_best_k): Ditto.
25504         * tune/freq.c: New file, split from time.c.
25505         * tune/time.c: Rewrite, now more automated.
25506         * configure.in, tune/*: Consequent changes.
25508 2000-10-20  Torbjorn Granlund  <tege@swox.com>
25510         * mpn/ia64/default.m4: New file.
25511         * configure.in [config.m4 switch] (ia64*-*-*): Use ia64/default.m4.
25513         * mpn/ia64/mul_1.asm: New file.
25514         * mpn/ia64/addmul_1.asm: New file.
25515         * mpn/ia64/add_n.asm: New file.
25516         * mpn/ia64/sub_n.asm: New file.
25517         * mpn/ia64/popcount.asm: New file.
25518         * mpn/ia64/README: New file.
25520         * mpn/alpha/cntlz.asm: Override `.set noat' from ASM_START.
25522         * configure.in (HAVE_TARGET_CPU_*): Support hppa1.0, hppa1.1, hppa2.0
25523         by sed'ing the period into `_'.
25525         * acconfig.h: Add #undefs for hppa targets.
25527         * longlong.h (udiv_qrnnd): Fix typo in last change.
25529         * mpz/tstbit.c: Rewrite (partly to work around GCC 2.95.2 HPPA bug).
25531         * configure.in [path switch]:
25532         (hppa2.0*-*-*): For non-CC64 case, update path.
25534         * configure.in [compiler switch]:
25535         (hppa2.0w-*-*): Match with same regexp in both places.
25536         (hppa*-*-*): New case.
25537         (all hppa alternatives): Don't inherit default gmp_cflags_cc,
25538         gmp_cflags_c89.
25540 2000-10-18  Torbjorn Granlund  <tege@swox.com>
25542         * configure.in (alpha*-*-*): Define gmp_xoptcflags_gcc like for
25543         alpha*-*-osf*.
25545         * longlong.h (x86 udiv_qrnnd): Change `d' => `dx' to avoid K&R C
25546         stringification.
25548 2000-10-15  Kevin Ryde  <kevin@swox.se>
25550         * doc/configuration: Updates.
25552         * demos/calc.y: Remove some comments.
25554 2000-10-14  Kevin Ryde  <kevin@swox.se>
25556         * gmp.texi (Parameter Conventions, Memory Management): New sections
25557         split from "Variable Conventions".
25558         (Efficiency, Debugging, Profiling): New sections in "GMP Basics".
25559         (Reentrancy): Some rewording, add note on standard I/O.
25560         (Build options): Add --enable-assert and --enable-profiling.
25562         * configure.in (--enable-profiling): New option.
25563         * acinclude.m4 (GMP_ASM_X86_MCOUNT): New macro, finding how to profile.
25564         * mpn/x86/x86-defs.m4 (PROLOGUE_cpu, call_mcount): Profiling support.
25566         * acinclude.m4, configure.in (GMP_ASM_*): Rename from GMP_CHECK_ASM_*,
25567         to follow autoconf conventions.
25569         * configure.in: Run GMP_CHECK_ASM tests only if needed.
25570         * acinclude.m4 (GMP_CHECK_ASM_MMX): Don't use GMP_CHECK_ASM_TEXT.
25572         * mpn/x86/x86-defs.m4 (ASSERT): Allow no condition, to just emit code.
25574 2000-10-13  Kevin Ryde  <kevin@swox.se>
25576         * mpq/md_2exp.c: New file.
25577         * mpq/Makefile.am (libmpq_la_SOURCES): Add it.
25578         * Makefile.am (MPQ_OBJECTS): Ditto.
25579         * gmp.h (mpq_mul_2exp, mpq_div_2exp): Add prototypes.
25580         * gmp.texi (Rational Arithmetic): Add documentation.
25582         * mpq/tests/t-md_2exp.c: New file.
25583         * mpq/tests/Makefile.am (check_PROGRAMS): Add it.
25585         * mpn/generic/perfsqr.c: Add/amend some comments.
25587         * gmp.texi (Known Build Problems): Note VERSION problem with old
25588         sed, do some minor rewording.
25589         (Build Options): Add cygwin and djgpp URLs, mention INSTALL.autoconf,
25590         mention HTML.
25591         (Getting the Latest Version of GMP): Move this ...
25592         (Introduction to GMP): ... to here.
25593         (Compatibility with older versions): Just refer to 2.x and 3.x, not
25594         every minor version.
25595         (Initializing Integers): Note restrictions on mpz_array_init'ed
25596         variables.
25597         (Integer Logic and Bit Fiddling): Note bits are numbered from 0.
25599         * INSTALL.autoconf: New file.
25600         * Makefile.am (EXTRA_DIST): Add it.
25602         * tune/Makefile.am, tune/tuneup.c, configure.in, gmp-impl.h: New
25603         scheme for recompiled objects used by tune program.  Don't use
25604         libgmptune.a, make better use of libtool, work with ansi2knr.
25606         * tune/speed.h,common.c (SPEED_ROUTINE_MPZ_POWM): Use s->yp and
25607         s->xp_block, make exponent a fixed size.
25609 2000-10-07  Torbjorn Granlund  <tege@swox.com>
25611         * mpn/mips3/gmp-mparam.h: Retune.
25613         * mpn/generic/mul_n.c (USE_MORE_MPN): Revert last change.
25615 2000-10-06  Torbjorn Granlund  <tege@swox.com>
25617         * mpn/mips3/add_n.s: Decrease carry recurrence from 4 to 3 cycles.
25618         * mpn/mips3/sub_n.s: Likewise.
25620 2000-10-04  Torbjorn Granlund  <tege@swox.com>
25622         * configure.in (sparc64-*-linux*): Set path according to CC64.
25624 2000-10-04  Kevin Ryde  <kevin@swox.se>
25626         * acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): Use LABEL_SUFFIX, not a
25627         hard-coded ":".
25629         * config.sub: Don't demand "86" in CPU name for SCO.
25631         * configure.in (supersparc-*-*): Remove -DSUPERSPARC.
25632         * longlong.h: Use HAVE_TARGET_CPU_supersparc.
25634         * configure.in (HAVE_TARGET_CPU_*): AC_DEFINE from $target_cpu.
25635         * acconfig.h: Add #undefs, but only for targets of interest.
25637 2000-10-03  Torbjorn Granlund  <tege@swox.com>
25639         * mpn/alpha/cntlz.asm: Rewrite.
25641         * mp_clz_tab.c (__clz_tab): Half table size to 128 entires.
25642         * longlong.h (count_leading_zeros): Demand just 128 entries from
25643         __clz_tab.
25645         * configure.in (mips-sgi-irix6.*): Pass -mips3 in addition to options
25646         for n32 ABI.
25648         * longlong.h: Move NO_ASM test around all assembly code.
25649         From gcc:
25650         * longlong.h (count_leading_zeros): Sparclite scan instruction was
25651         being invoked incorrectly.
25652         Replace __mc68332__ with __mcpu32__.
25653         Add ARC support.
25655 2000-10-02  Torbjorn Granlund  <tege@swox.com>
25657         * mpn/mips3/gmp-mparam.h: Retune for both gcc and cc.
25659         * mpn/generic/mul_n.c (USE_MORE_MPN): Remove exception for __mips.
25660         (interpolate3): Cast mp_limb_t variables to mp_limb_signed_t
25661         when testing sign bit.
25663         * mpn/alpha/ev6/gmp-mparam.h: Retune.
25664         * mpn/powerpc32/gmp-mparam.h: Retune.
25665         * mpn/powerpc64/gmp-mparam.h: Retune.
25666         * mpn/x86/pentium/gmp-mparam.h: Retune.
25667         * mpn/x86/pentium/mmx/gmp-mparam.h: Retune.
25668         * mpn/sparc32/v9/gmp-mparam.h: Retune.
25669         * mpn/x86/k6/gmp-mparam.h: Retune.
25670         * mpn/x86/p6/gmp-mparam.h: Retune.
25671         * mpn/x86/k7/gmp-mparam.h: Retune.
25672         * mpn/sparc64/gmp-mparam.h: Retune.
25674         * mpn/m68k/gmp-mparam.h: New file.
25675         * mpn/alpha/ev5/gmp-mparam.h: New file.
25677         * gmp-impl.h (default MPN_COPY): Remove final `;'.
25679         * tune/time.c (speed_endtime): Rewrite.
25681         * tune/speed.h (SPEED_ROUTINE_MPZ_POWM): Set base to a large value,
25682         not 2.
25684         * demos/pexpr.c (setup_error_handler): Fix typo.
25686         * mpz/powm.c (redc): New function, based on old mpz_redc.  Don't
25687         multiply here.
25688         (mpz_redc): Remove.
25689         (mpz_powm): Major changes, partially reverting to mpn calls.
25690         Multiply before calling redc.
25691         (mpz_powm): Use TMP_ allocation.
25692         (mpz_powm): Refine calculation of k (width of exponent window).
25693         (mpz_powm): Cast constants to mp_limb_t before left shifting.
25695         * longlong.h: Use ia64 count_leading_zeros just when __GNUC__.
25697 2000-09-29  Kevin Ryde  <kevin@swox.se>
25699         * acinclude.m4 (GMP_C_SIZES): New macro.
25700         * configure.in: Use it.
25701         * acconfig.in (BYTES_PER_MP_LIMB etc): Add #undefs.
25702         * mpn/generic/gmp-mparam.h (BYTES_PER_MP_LIMB etc): Remove #defines.
25703         * gmp.texi (Known Build Problems): Remove 64-bit generic C
25704         gmp-mparam.h problem, now fixed.
25706         * configure.in: Only run GMP_PROG_M4 if it's actually needed.
25708 2000-09-27  Torbjorn Granlund  <tege@swox.com>
25710         * demos/pexpr.c: Clean up code for systems not supporting
25711         sigaltstack.  Handle old Linux without sigaltstack.  Properly
25712         disable all stuff related to sigaltstack under Unicos.
25714         * mpn/alpha/ev6/addmul_1.asm: Use explicit offset for all load and
25715         store insns.  Helps old gas.
25717         * longlong.h (count_leading_zeros): Define for ia64.
25719 2000-09-27  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
25721         * mpn/generic/bz_divrem_n.c: Fix qhl handling, simplify.
25723 2000-09-27  Kevin Ryde  <kevin@swox.se>
25725         * mpn/Makefile.in (.SUFFIXES): Regenerate with patched automake to
25726         get .s before .c, which is needed to override ansi2knr .c rules.
25728         * gmp.texi (mpn_sqrtrem): Fix r2p==NULL return value description
25729         to match the code (change by Torbjorn).
25730         (mpn_gcd, mpn_gcdext, mpn_sqrtrem, mpn_tdiv_qr): Note most
25731         significant limbs must be non-zero.
25732         (mpn_gcd, mpn_gcdext, mpn_sqrtrem): Clarify destination size
25733         requirements.
25734         (mpn_gcd_1): Clarify value must be non-zero, not just size.
25736         * gmp-impl.h (mpn_zero_p): New inline function.
25737         * mpn/generic/inlines.c: Add gmp-impl.h.
25738         * mpf/integer.c, mpz/get_d.c, mpn/generic/mul_fft.c: Use it.
25740         * mpn/generic/gcd.c: Use MPN_COPY_INCR not MPN_COPY.
25741         * mpf/add_ui.c: Ditto.
25742         * mpf/add.c: Ditto, and fix test to skip copy.
25744 2000-09-26  Kevin Ryde  <kevin@swox.se>
25746         * gmp-impl.h, longlong.h, mpn/generic/*.c: Add ASSERTs for various
25747         parameter restrictions.
25749         * gmp-impl.h (UDIV_PREINV_TIME): New macro.
25750         * mpn/generic/sb_divrem_mn.c: Use it.
25751         * mpn/generic/perfsqr.c: Ditto.
25752         * mpn/x86/*/gmp-mparam.h (UDIV_PREINV_TIME): Add values.
25754         * macos/Makefile.in: Add mpz/tests/t-get_si.c, mpf/tests/t-set_f.c,
25755         and new multi-function mpz and mpq files.
25757 2000-09-25  Kevin Ryde  <kevin@swox.se>
25759         * randlc.c, randlc2x.c, randsd.c, mpz/urandomb.c, mpz/urandomm.c:
25760         Use mpz_ptr and mpz_srcptr for parameters.
25761         * gmp.h (gmp_randinit_lc, gmp_randinit_lc_2exp, gmp_randseed,
25762         mpz_urandomb, mpz_urandomm): Corresponding change to prototypes.
25763         * randsdui.c: Remove wrong K&R parameters part.
25765 2000-09-12  Kevin Ryde  <kevin@swox.se>
25767         * gmp-impl.h (mpn_tdiv_qr): Move prototype from here ...
25768         * gmp.h (mpn_tdiv_qr): ... to here.
25770         * gmp.texi (Miscellaneous Rational Functions): Comment-out and
25771         move version 1 compatibility note to "Compatibility" section.
25772         (Rational Number Functions): Ditto for canonicalization note.
25774 2000-09-10  Kevin Ryde  <kevin@swox.se>
25776         * mpn/x86/pentium/com_n.asm: New file.
25778         * gmp.texi (Rational Arithmetic): Add mpq_abs.
25779         (Miscellaneous Rational Functions): Merge and simplify descriptions of
25780         mpq_get_num, mpq_get_den, mpq_set_num, mpq_set_den.
25782         * mpq/abs.c: New file.
25783         * mpq/Makefile.am (libmpq_la_SOURCES): Add it.
25784         * Makefile.am (MPQ_OBJECTS): Add it.
25785         * gmp.h (mpq_abs): Add prototype.
25787         * mpq/set_den.c: Don't discard sign when copying, this makes the
25788         code match the manual.
25790 2000-09-07  Torbjorn Granlund  <tege@swox.com>
25792         * tune/alpha.asm: Rewrite to actually work right.
25794 2000-09-07  Kevin Ryde  <kevin@swox.se>
25796         * tune/common.c,speed.[ch]: Add measuring of mpn_sqrtrem,
25797         mpn_get_str, mpn_set_str.
25798         * tune/README: Various updates.
25800 2000-09-06  Torbjorn Granlund  <tege@swox.com>
25802         * mpz/fits.c: Correct type of `data'.
25804 2000-09-06  Kevin Ryde  <kevin@swox.se>
25806         * gmp.texi (Build Options): Clarify where to find CFLAGS.
25807         (Known Build Problems): Note SCO -lc problem.
25809         * tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL): Fix for sizes > 512 limbs.
25811         * doc/multiplication: Corrections and additions suggested by Paul.
25813         * tune/modlinv.c: New file with alternate modlimb_inverts.
25814         * tune/Makefile.am, tune/speed.[ch]: Add measuring of them.
25815         * tune/speed.c (FLAG_NODATA): New attribute, use for mpz_bin_uiui,
25816         mpz_fib_ui, mpz_fac_ui.
25818         * mpn/x86/t-zdisp.sh: New file.
25820         * tests/t-modlinv.c: New file.
25821         * tests/Makefile.am (check_PROGRAMS): Add it.
25823         * mpq/tests/t-set_f.c: New file.
25824         * mpq/tests/Makefile.am (check_PROGRAMS): Add it.
25826         * gmp-impl.h (MPQ_CHECK_FORMAT): New macro.
25827         * mpq/tests/t-get_d.c: Use it.
25829         * mpq/set_f.c: New file.
25830         * mpq/Makefile.am (libmpq_la_SOURCES): Add it.
25831         * Makefile.am (MPQ_OBJECTS): Ditto.
25832         * gmp.h: Add prototype.
25833         * gmp.texi (Miscellaneous Rational Functions): Document mpq_set_f,
25834         correct return type of mpq_set_d.
25836 2000-09-03  Kevin Ryde  <kevin@swox.se>
25838         * mpz/aors_ui.c: New file merging add_ui.c and sub_ui.c, no object
25839         code changes.
25840         * mpz/add_ui.c, mpz/sub_ui.c: Remove files.
25841         * mpz/Makefile.am: Update.
25843         * gmp-impl.h (MPZ_FITS_STYPE_SDT, MPZ_FITS_UTYPE_SDT): New macros.
25844         * mpz/fits.c: New file merging six separate fits*.c.
25845         * mpz/fits_sshort_p.c, fits_sint_p.c, fits_slong_p.c, fits_ushort_p.c,
25846         fits_uint_p.c, fits_ulong_p.c: Remove files
25847         * mpz/Makefile.am: Use new fits.c, change object names from
25848         fits_*_p.lo to fits_*.lo to avoid SunOS 4 native "ar" warnings.
25849         * Makefile.am (MPZ_OBJECTS): Change from fits_*_p.lo to fits_*.lo.
25851         * acinclude.m4 (GMP_CHECK_ASM_RODATA): New macro, defining RODATA.
25852         * configure.in: Use it.
25853         * mpn/x86/k[67]/mmx/popham.asm: Use it.
25855         * mpn/x86/*/*.asm: Use "TEXT" not ".text".
25857 2000-09-02  Kevin Ryde  <kevin@swox.se>
25859         * mpq/aors.c: New file merging add.c and sub.c, no object code changes.
25860         * mpq/add.c, mpq/sub.c: Remove files.
25861         * mpq/Makefile.am: Update.
25863         * mpz/aors.c: New file merging add.c and sub.c, no object code changes.
25864         * mpz/add.c, mpz/sub.c: Remove files.
25865         * mpz/Makefile.am, mpbsd/Makefile.am: Update.
25867         * configure.in: Re-apply "PROLOGUE.*" regexp change for the
25868         benefit of alpha PROLOGUE_GP, lost in path search reorganisation.
25870         * mpn/x86/x86-defs.m4 (jadcl0, cmov_simulate, ASSERT,
25871         movl_text_address): Don't use "1:" style labels.
25872         (Zdisp): Rearrange a bit, switch to all hex.
25873         * mpn/x86/README.family: Note SCO "as" doesn't support "1:" style
25874         local labels, misc rewordings.
25876 2000-08-29  Torbjorn Granlund  <tege@swox.com>
25878         * demos/primes.c: Include string.h.
25880         * config.guess (x86 variant recog code): Remove dummy*.o files
25881         generated by some compilers.
25883 2000-08-28  Kevin Ryde  <kevin@swox.se>
25885         * acinclude.m4 (GMP_CHECK_ASM_ALIGN_FILL_0x90): Fix Solaris 2.8
25886         warning message suppression, add notes about SCO.
25888         * Makefile.am (MPZ_OBJECTS etc): Move some comments.
25890 2000-08-25  Kevin Ryde  <kevin@swox.se>
25892         * mpz/pprime_p.c (mpz_millerrabin): Fix a TMP_FREE.
25894         * gmp.texi (Copying): Refer to Lesser not Library GPL.
25895         (GMP and Reentrancy): Note stack-alloc.c is not reentrant, and
25896         that SCO <ctype.h> is potentially not reentrant.
25898         * acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): Test by attempting to
25899         link with or without an underscore.
25900         * gmp.texi (Known Build Problems): Remove SunOS 4 native grep
25901         GSYM_PREFIX problem, now fixed.
25903         * gmp-impl.h (MODLIMB_INVERSE_3): New constant.
25904         * mpn/generic/diveby3.c: Use it instead of own INVERSE_3.
25905         * mpn/generic/mul_n.c: Ditto.
25906         * tests/t-constants.c: Check it, and PP_INVERTED too.
25908         * acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO): New macro.
25909         * configure.in [p6 and athlon] (gmp_optcflags_gcc): Use it to
25910         possibly add -march=pentiumpro.
25912         * gmp-impl.h (MPZ_SET_STR_OR_ABORT, MPF_SET_STR_OR_ABORT): New macros.
25913         * mpz/tests/t-bin.c, mpz/tests/t-get_si.c, mpz/tests/t-jac.c,
25914         mpz/tests/t-misc.c: Use them.
25915         * mpf/tests/t-conv.c, mpf/tests/t-misc.c: Ditto.
25916         * mpz/tests/convert.c: Ditto and amend diagnostics slightly.
25917         * mpz/tests/t-misc.c (check_mpz_set_si): Remove a superfluous init.
25918         * mpz/tests/io.c: Differentiate between I/O and data conversion errors.
25920         * mpn/generic/aors_n.c: New file merging add_n and sub_n, no
25921         object code changes.
25922         * mpn/generic/add_n.c: Remove file.
25923         * mpn/generic/sub_n.c: Remove file.
25925         * mpn/generic/aorsmul_1.c: New file merging addmul_1 and submul_1,
25926         no object code changes.
25927         * mpn/generic/addmul_1.c: Remove file.
25928         * mpn/generic/submul_1.c: Remove file.
25930         * mpn/generic/popham.c: New file merging popcount and hamdist, no
25931         object code changes.
25932         * mpn/generic/popcount.c: Remove file.
25933         * mpn/generic/hamdist.c: Remove file.
25935 2000-08-24  Torbjorn Granlund  <tege@swox.com>
25937         * gmp-impl.h (mpn_com_n): Fix typo.
25939 2000-08-23  Torbjorn Granlund  <tege@swox.com>
25941         * demos/primes.c (main): Don't call mpz_probab_prime_p for numbers
25942         that are known to be prime after sieving.
25943         (main): Declare and initialize max_s_prime_squared.
25944         (MAX_S_PRIME): Increase.
25945         (ST_SIZE): Increase.
25947 2000-08-23  Kevin Ryde  <kevin@swox.se>
25949         * gmp-impl.h (ASSERT_ALWAYS): Change to statement style.
25950         (JACOBI_TWO_U_BIT1): Remove ASSERT.
25951         (MPZ_CHECK_FORMAT): Use ASSERT_ALWAYS as a statement.
25953 2000-08-21  Torbjorn Granlund  <tege@swox.com>
25955         * gmp-impl.h (ASSERT): Use do..while for dummy version.
25957         * mpf/get_str.c: Don't set n_digits from digits_computed_so_far
25958         when the converted operand becomes zero.  Misc cleanups.
25960 2000-08-21  Kevin Ryde  <kevin@swox.se>
25962         * mpz/fdiv_r_2exp.c, mpz/lcm.c, mpz/urandomm.c: Add missing
25963         TMP_MARK/FREE, avoiding memory leak when using stack-alloc.c.
25965 2000-08-20  Kevin Ryde  <kevin@swox.se>
25967         * mpz/set.c [BERKELEY_MP] (move): Add conditionals to build as
25968         "move" for libmp.
25969         * mpbsd/Makefile.am: Use mpz/set.c, not move.c.
25970         * Makefile.am (MPBSD_OBJECTS): Corresponding change.
25971         * mpbsd/move.c: Remove file.
25973         * mpn/Makefile.am, mpz/Makefile.am, mpq/Makefile.am, mpf/Makefile.am,
25974         mpbsd/Makefile.am (-DOPERATION_foo): Use "foo" even for ansi2knr
25975         "foo_" objects.  Do this with the makefiles to keep the sources
25976         cleaner.
25977         * mpz/mul_siui.c, mpf/integer.c: Revert to plain OPERATION_* forms.
25979         * mpn/lisp/gmpasm-mode.el (gmpasm-remove-from-list): Renamed from
25980         gmpasm-delete-from-list, because it's non-destructive.
25981         (gmpasm-font-lock-keywords): Add some more keywords.
25983 2000-08-16  Kevin Ryde  <kevin@swox.se>
25985         * tune/mul_n_mpn.c, tune/mul_n_open.c: New files, being forced
25986         open-coded and mpn #includes of mpn/generic/mul_n.c.
25987         * tune/*: Add measuring of them.
25988         * tune/speed.c: Print command line into *.gnuplot file.
25990         * mpn/generic/mul_n.c (USE_MORE_MPN): Change to #if not #ifdef for
25991         using the value, add #ifndef for providing the default.
25992         * mpn/sparc64/gmp-mparam.h (USE_MORE_MPN): Add #ifndef.
25994         * tests/t-constants.c: New file.
25995         * tests/Makefile.am (check_PROGRAMS): Add it.
25997         * mpz/get_si.c: Use LONG_MAX, not BITS_PER_MP_LIMB, so the result
25998         doesn't depend on limb size when outside the range of a long
25999         (though such results are not actually documented).
26000         * mpz/tests/t-get_si.c: New file.
26001         * mpz/tests/Makefile.am (check_PROGRAMS): Add it.
26003         * mpn/tests/try.c (call): Cast popcount and hamdist calls,
26004         for the benefit of long long limb.
26006 2000-08-15  Kevin Ryde  <kevin@swox.se>
26008         * mp.h (mp_set_memory_functions): Add missing #define.
26009         * mpbsd/tests/allfuns.c (mp_set_memory_functions): Verify its
26010         existence.
26012         * mpf/tests/t-misc.c (check_mpf_getset_prec): New test, verifying
26013         reverted behaviour of mpf_get_prec.
26015         * mpn/tests/ref.c (refmpn_strip_twos): Use refmpn_copyi, not
26016         MPN_COPY_INCR.
26018         * mpz/mul_siui.c, mpf/integer.c: Recognise OPERATION_*_ forms
26019         produced under ansi2knr.
26021         * configure.in (mpn_objects, mpn_objs_in_libgmp): Add $U to .c
26022         objects when ansi2knr in use.
26024         * mpn/Makefile.am (AUTOMAKE_OPTIONS): Enable ansi2knr.
26025         (libdummy.la): Add this, not built, to create ansi2knr style rules
26026         for all potential .c files.
26027         * mpz/Makefile.am, mpq/Makefile.am, mpf/Makefile.am, mpfr/Makefile.am,
26028         mpbsd/Makefile.am, mpq/tests/Makefile.am, tests/Makefile.am
26029         (AUTOMAKE_OPTIONS): Enable ansi2knr (now everywhere).
26030         * Makefile.am (MPZ_OBJECTS, MPQ_OBJECTS, MPF_OBJECTS, MPFR_OBJECTS,
26031         MPBSD_OBJECTS, libmp_la_DEPENDENCIES): Add $U to all .lo filenames.
26033 2000-08-03  Torbjorn Granlund  <tege@swox.com>
26035         * mpn/alpha/ev6/addmul_1.asm: Correct number of cycles to 3.5/28.
26037 2000-08-02  Torbjorn Granlund  <tege@swox.com>
26039         * Version 3.1 released.
26041         * gmp.texi: Rephrase mpf_urandomb documentation.
26043         * mpn/alpha/ev6: New directory with ev6/21264 optimized code.
26044         * mpn/alpha/ev6/addmul_1.asm: New file.
26045         * mpn/alpha/ev6/gmp-mparam.h: New file.
26047 2000-08-02  Kevin Ryde  <kevin@swox.se>
26049         * demos/factorize.c (random): Don't use "inline".
26051         * mpfr/log.c, mpfr/mul_ui.c, mpfr/round.c, mpfr/set.c, mpfr/set_d.c:
26052         Corrections to K&R parts.
26054         * Makefile.am (EXTRA_HEADERS): Omit $(MPFR_HEADERS_OPTION).
26055         * mpfr/Makefile.am (EXTRA_DIST): Add mpfr.h.
26057         * gmp.texi (Known Build Problems): Note problem stripping libgmp.a.
26059 2000-08-02  Kent Boortz  <kent@swox.com>
26061         * mpfr: Integrated experimental version of mpfr-0.4.
26062         * configure.in: Changes for option --enable-mpfr.
26063         * Makefile.am: Changes for option --enable-mpfr.
26065 2000-08-01  Torbjorn Granlund  <tege@swox.com>
26067         * mpn/generic/popcount.c: Disable SPARC v9 popc_limb pattern.
26068         * mpn/generic/hamdist.c: Likewise.
26070 2000-08-01  Kevin Ryde  <kevin@swox.se>
26072         * mpn/tests/try.c (try_init): Account for ALIGNMENTS when sizing
26073         source and dest regions.
26075 2000-07-31  Torbjorn Granlund  <tege@swox.com>
26077         * mpf/get_str.c: Develop three extra digits, not just one.
26079 2000-07-31  Kevin Ryde  <kevin@swox.se>
26081         * gmp.texi (References): Add URL for invariant division.
26083 2000-07-30  Kevin Ryde  <kevin@swox.se>
26085         * tune/time.c (speed_cpu_frequency_proc_cpuinfo): Add support for
26086         alpha linux "cycle frequency".
26088         * mpn/sparc64/gmp-mparam.h: Re-run tune program for FFT thresholds.
26090 2000-07-29  Kevin Ryde  <kevin@swox.se>
26092         * gmp.texi (ABI and ISA): Add sparc64-*-linux*.
26093         * configure.in [sparc64-*-linux*] (gmp_cflags64_gcc): Same flags
26094         as under solaris.
26096         * configure.in (--enable-fft): New option, default "no".
26097         * gmp.texi (Build Options): Describe it.
26098         * mpn/generic/mul.c, mpn/generic/mul_n.c [WANT_FFT]: Use it.
26099         * tune/tuneup.c [WANT_FFT]: By default don't probe FFTs if not enabled.
26100         * NEWS: Multiplication optionally using FFT.
26102         * tune/README: Notes on FFT and GCD thresholds, other minor updates.
26104         * Makefile.am: Expunge the macos generated files update stuff.
26106 2000-07-28  Kevin Ryde  <kevin@swox.se>
26108         * mpn/x86/*/gmp-mparam.h: Add some FFT thresholds.
26110 2000-07-28  Kent Boortz  <kent@swox.se>
26112         * macos/Asm*, macos/CmnObj, macos/Mp*: Delete directories.
26113         * macos/Makefile: Delete file.
26114         * macos/Makefile.cw: Delete file.
26115         * macos/config.h: Delete file.
26116         * macos/Asm/*.s: Delete files.
26117         * macos/configure: Create target directories. Don't transform
26118         '(C)' to '(;)' in a 'dnl' line comment in .asm file.
26119         * Makefile.am: Delete macos targets.
26120         * macos/README: Reflect that we reverted back to a build
26121         process that require ""macos/configure" to run on MacOS.
26122         This imply that MacPerl is needed for a build in MacOS.
26124 2000-07-27  Kevin Ryde  <kevin@swox.se>
26126         * mpn/generic/mul_fft.c: New file, by Paul Zimmermann, minor mods
26127         applied.
26128         * configure.in (gmp_mpn_functions): Add it.
26129         * mpn/generic/mul.c, mpn/generic/mul_n.c: Use it.
26130         * doc/multiplication: Describe it (briefly).
26132         * gmp-impl.h (FFT_MUL_THRESHOLD etc): New thresholds.
26133         (mpn_fft_best_k, mpn_fft_next_size, mpn_mul_fft, mpn_mul_fft_full):
26134         New functions.
26135         (numberof, TMP_ALLOC_TYPE etc, _MP_ALLOCATE_FUNC_TYPE etc,
26136         UNSIGNED_TYPE_MAX etc): New macros.
26138         * tune/*: Add FFT threshold tuning and speed measuring.
26139         * tune/common.c: Avoid huge macro expansions for umul and udiv.
26141         * mpz/tests/t-bin.c, mpz/tests/t-jac.c, mpz/tests/t-misc.c,
26142         mpbsd/tests/t-misc.c, mpf/tests/t-misc.c, mpn/tests/try.c,
26143         mpn/tests/spinner.c: Use new gmp-impl.h macros.
26145         * demos/Makefile.am (BUILT_SOURCES): Don't need calc.c etc under this.
26147 2000-07-27  Torbjorn Granlund  <tege@swox.com>
26149         * mpn/ia64/gmp-mparam.h: New file.
26151 2000-07-26  Torbjorn Granlund  <tege@swox.com>
26153         * demos/isprime.c: Handle any number of arguments and print
26154         classification for each.  Add `-q' option for old behaviour.
26156 2000-07-26  Kevin Ryde  <kevin@swox.se>
26158         * gmp.texi (Build Options): Mention djgpp stack size.
26159         (Notes for Package Builds): New section.
26160         (Compatibility with older versions): Update for 3.1, add mpf_get_prec.
26162         * demos/factorize.c [__GLIBC__]: Don't declare random() under glibc.
26164         * gmp.h (gmp_version): Add prototype and define.
26166         * Makefile.am: Keep macos directory generated files up-to-date
26167         during development and on a "make dist".
26169 2000-07-25  Torbjorn Granlund  <tege@swox.com>
26171         * mpn/hppa/gmp-mparam.h: Update threshold values from new `tune' run.
26173         * mpn/pa64/gmp-mparam.h: Fill in values from `make tune' run.
26174         * mpn/pa64w/gmp-mparam.h: Likewise.
26175         * mpn/mips3/gmp-mparam.h: Likewise.
26177         * tune/hppa2.asm: Fix typo in .level directive.
26179         * configure.in: Add sparc64-*-linux* support (from Jakub Jelinek).
26180         * configure: Regenerate.
26182         * mpn/sparc64/rshift.asm: Use %g5 instead of volatile stack frame area
26183         for return value (from Jakub Jelinek).
26184         * mpn/sparc64/lshift.asm: Likewise.
26186         * mpf/get_prc.c: Revert Aug 8, 1996 change.
26188         * version.c: No longer static.
26190         * mpn/pa64/gmp-mparam.h: Only #define *_THRESHOLD if not already
26191         defined.
26192         * mpn/pa64w/gmp-mparam.h: Likewise.
26193         * mpn/arm/gmp-mparam.h: Likewise.
26194         * mpn/mips3/gmp-mparam.h: Likewise.
26196 2000-07-25  Kevin Ryde  <kevin@swox.se>
26198         * INSTALL: It's "info -f ./gmp.info" to be sure of hitting the
26199         gmp.info in the current directory.
26201         * Makefile.am (libmp_la_DEPENDENCIES): Add mpz/cmp.lo, for last
26202         mpz/powm.c fix.
26204         * mpn/sparc64/addmul1h.asm, mpn/sparc64/submul1h.asm: Renamed from
26205         addmul_1h.asm, submul_1h.asm to avoid name conflicts on an 8.3
26206         filesystem.
26207         * mpn/sparc64/addmul_1.asm, mpn/sparc64/submul_1.asm,
26208         mpn/sparc64/mul_1.asm: Update include_mpn()s.
26210 2000-07-24  Torbjorn Granlund  <tege@swox.com>
26212         * Update header of all files previously under the Library GPL
26213         to instead be under the Lesser GPL.
26215         * COPYING.LIB: Now Lesser GPL.
26216         * demos/primes.c: Change license to GPL (was Library GPL).
26217         * demos/isprime.c: Change license to GPL (was Library GPL).
26219         * gmp.h (error code enum): Add GMP_ERROR_BAD_STRING (currently unused).
26221         * mpz/tests/t-mul.c: Default SIZE to a function of TOOM3_MUL_THRESHOLD.
26222         Improve error messages.  Decrease reps.
26224 2000-07-22  Kevin Ryde  <kevin@swox.se>
26226         * tune/speed.h: Decrease the amount of data used for gcd and powm
26227         measuring, to make the tune go a bit faster.
26229 2000-07-21  Kent Boortz  <kent@swox.se>
26231         * macos/Asm*, macos/CmnObj, macos/Mp*: Directories no longer created
26232         from configure script, now part of dist.
26233         * macos/Makefile
26234         * macos/Makefile.cw
26235         * macos/config.h
26236         * macos/Asm/*.s
26237         New files and directories that is the output from configure. This way
26238         no Perl installation is required to build on MacOS, just MPW.
26239         * macos/configure: Added prefix '__g' to exported assembler labels.
26240         Changed to handle new m4 syntax instead of the old cpp syntax in asm.
26241         * macos/Makefile.in: Corrected 'clean' target, added 'distclean'
26242         and 'maintainer_clean'. Added "mpn/mp_bases.c" to build.
26243         * macos/README: Reflect the new build process without configure.
26244         Corrected the file structure for Apple MPW installation.
26246 2000-07-21  Torbjorn Granlund  <tege@swox.com>
26248         * mpf/tests/t-muldiv.c: Relax error limit.  Make precision depend
26249         on SIZE.  Misc changes.
26251         * configure: Regenerate.
26253 2000-07-20  Kent Boortz  <kent@swox.com>
26255         * macos/Makefile.in: Removed hard coded targets, added special
26256         targets found in Makefile.am files.
26257         * macos/configure: Generate targets from top configure script and
26258         Makefile.am files. Made script runnable from Unix for testing.
26259         * macos/README: Notes about search paths for includes, contributed
26260         by Marco Bambini.
26261         * configure.in: Added comment about lines that the "macos/configure"
26262         script depend on.
26264 2000-07-20  Torbjorn Granlund  <tege@swox.com>
26266         * mpz/powm.c (mpz_powm): After final mpz_redc call, subtract `mod'
26267         from result if it is greater than `mod'.
26269 2000-07-19  Torbjorn Granlund  <tege@swox.com>
26271         * mpn/hppa/gmp-mparam.h: Fill in values from `make tune' run.
26272         * mpn/alpha/gmp-mparam.h: Likewise.
26273         * mpn/powerpc32/gmp-mparam.h: Likewise.
26275         * tune/hppa.asm: New file.
26276         * tune/hppa2.asm: New file.
26277         * configure.in (SPEED_CYCLECOUNTER_OBJS): Set for hppa2*-*-* and
26278         hppa*-*-*.
26279         * tune/Makefile.am (EXTRA_DIST): Add hppa.asm and hppa2.asm.
26281         * tune/speed.h (SPEED_ROUTINE_MPN_BZ_DIVREM_CALL): Declare `marker';
26282         invoke TMP_FREE.
26284         * mpn/hppa/hppa1_1/udiv_qrnnd.S: Use "%" instead of "'" for
26285         reloc/symbol delimiter.
26287 2000-07-16  Torbjorn Granlund  <tege@swox.com>
26289         * mpn/powerpc64/gmp-mparam.h: Update with output from tune utility.
26290         * mpn/powerpc64/copyi.asm: New file.
26291         * mpn/powerpc64/copyd.asm: New file.
26293 2000-07-16  Kevin Ryde  <kevin@swox.se>
26295         * tune/*: Add measuring for umul_ppmm and udiv_qrnnd.
26297 2000-07-14  Kevin Ryde  <kevin@swox.se>
26299         * mpn/x86/k6/k62mmx: New directory.
26300         * configure.in (k6[23]*-*-*): Use it.
26301         * mpn/x86/k6/k62mmx/copyi.asm, mpn/x86/k6/k62mmx/copyd.asm: Move from
26302         mmx directory, improve code alignment a bit.
26303         * mpn/x86/k6/k62mmx/lshift.asm, mpn/x86/k6/k62mmx/rshift.asm: Ditto,
26304         and improve addressing modes for pre-CXT cores.
26305         * mpn/x86/x86-defs.m4 (Zdisp): Add an instruction.
26306         * mpn/x86/k6/mmx/lshift.asm, mpn/x86/k6/mmx/rshift.asm: New files,
26307         suiting plain K6.
26308         * mpn/x86/README, mpn/x86/k6/README: Updates.
26309         * mpn/x86/k6/mmx/*.asm: Update some comments.
26311         * mpn/tests/Makefile.am: Use $(MAKE) in .asm rules, not "m".
26312         * tune/Makefile.am: Use $(EXEEXT) and libtool --config objdir, for
26313         the benefit of djgpp.
26315         * */Makefile.in: Regenerate with patched automake that adds
26316         $(EXEEXT) to EXTRA_PROGRAMS.
26318         * mpn/tests/try.c: Add #ifdef to SIGBUS, for the benefit of djgpp.
26319         * config.guess: Recognise pc:*:*:* as an x86, for djgpp.
26321         * configure: Regenerate with patched autoconf to fix temp file
26322         ".hdr" which is invalid on a DOS 8.3 filesystem, and to fix two
26323         sed substitutes that clobbered a ":" in $srcdir (eg. a DOS drive
26324         spec).
26326         * mpz/tests/io.c: Use one fp opened "w+", since separately opened
26327         input and output doesn't work on MS-DOS 6.21.
26329         * tests/rand/Makefile.am (allprogs): Pseudo-target to build everything.
26330         (CLEANFILES): Add EXTRA_PROGRAMS and EXTRA_LTLIBRARIES.
26331         (manual-test, manual-bigtest): Add $(EXEEXT) to dependencies.
26333         * tests/rand/*/Makefile.in: Regenerate with patched automake that adds
26334         $(EXEEXT) to EXTRA_PROGRAMS.
26336 2000-07-13  Torbjorn Granlund  <tege@swox.com>
26338         * mpz/tests/t-root.c: Also test mpz_perfect_power_p.
26339         Generate `nth' so that there will be fewer trivial values.
26341         * mpz/root.c: Reverse return value in tests for detecting root of +1
26342         and -1.
26344         * mpz/perfpow.c: Use TMP_ALLOC interface.
26346 2000-07-12  Torbjorn Granlund  <tege@swox.com>
26348         * mpz/perfpow.c (primes): Make it const.
26350 2000-07-06  Kevin Ryde  <kevin@swox.se>
26352         * mpn/x86/k6/cross.pl: New file.
26354         * mpn/x86/*/gmp-mparam.h: Updates to thresholds, conditionalize
26355         all _TIME defines.
26356         * mpn/x86/pentium/mmx/gmp-mparam.h: New file.
26357         * mpn/sparc64/gmp-mparam.h: Update thresholds.
26358         * mpn/sparc32/v9/gmp-mparam.h: Ditto.
26360 2000-07-04  Kevin Ryde  <kevin@swox.se>
26362         * NEWS: Updates.
26363         * mpn/x86/*/README: Miscellaneous updates.
26365         * tune/speed-ext.c: New file.
26366         * tune/Makefile.am: Add it.
26367         * tune/README: Updates.
26368         * tune/speed.h (SPEED_ROUTINE_MPN_DIVREM_2): Bug fixes.
26370         * demos/calc.y,calclex.l: New files.
26371         * demos/calc.c,calc.h,calclex.c: New files, generated from .y and .l.
26372         * demos/Makefile.am: Add them.
26374         * gmp.h (mpq_swap, mpf_swap): Add prototypes and defines.
26376 2000-07-01  Kevin Ryde  <kevin@swox.se>
26378         * gmp.texi (ABI and ISA): New section, bringing together ABI notes.
26379         (Build Options): Add MPN_PATH, various updates.
26380         (Build Options): Add note on setting CFLAGS when setting CC.
26381         (Notes for Particular Systems): Add -march=pentiumpro problem.
26382         (Known Build Problems): Note on gmp-mparam.h for 64-bit generic C.
26383         (GMP Variable Conventions): Add some info on user defined functions.
26384         (Reporting Bugs): Minor rewording.
26386         * configure.in (MPN_PATH): Renamed from mpn_path.
26388         * gmp-impl.h (ULONG_MAX,ULONG_HIGHBIT,...,SHORT_MAX): New defines.
26389         * mp[zf]/tests/t-misc.c: Use them.
26391         * mpbsd/tests/t-misc.c: New file.
26392         * mpbsd/tests/Makefile.am: Add it.
26394         * Makefile.am (LIBGMP_LT_*, LIBMP_LT_*): Bump version info.
26395         * gmp.h (__GNU_MP_VERSION_*): Bump to 3.1.
26397         * mpf/tests/Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr.
26399         * Makefile.am (libmp_la_SOURCES): Add mp_set_fns.c, accidentally
26400         omitted in gmp 3.0.x.
26401         * gmp.texi (Custom Allocation): Note this is available in mpbsd,
26402         and some minor rewording.
26404 2000-06-30  Torbjorn Granlund  <tege@swox.com>
26406         * demos/factorize.c (random): New function, defined conditionally.
26407         (factor_using_pollard_rho): Use it, not mrand48.
26409         * mpn/cray/README: New file.
26411 2000-06-30  Kevin Ryde  <kevin@swox.se>
26413         * mpn/x86/pentium/aorsmul_1.asm: Add MULFUNC_PROLOGUE.
26415         * mpz/tests/t-jac.c: Test limbs on mpn_jacobi_base, not just ulongs.
26417         * gmp-impl.h, mpn/tests/try.c, mpn/tests/spinner.c, tune/speed.c:
26418         Use config.h unconditionally, not under HAVE_CONFIG_H.
26420         * demos/pexpr.c [__DJGPP__]: Patch by Richard Dawe to not use
26421         setup_error_handler on djgpp.
26423         * tune/*: Locate data to help direct-mapped caches, add measuring
26424         of mpz_init/clear, mpz_add and mpz_bin_uiui, various cleanups.
26425         * configure.in (AC_CHECK_FUNCS): Add popen.
26427 2000-06-29  Torbjorn Granlund  <tege@swox.com>
26429         * mpf/mul_2exp.c: Streamline criterion for whether to use mpn_lshift or
26430         mpn_rshift.  Increase precision when exp is a multiple of
26431         BITS_PER_MP_LIMB primarily to make exp==0 be a noop.
26432         * mpf/div_2exp.c: Analogous changes.
26434         * mpf/tests/t-dm2exp.c: Set u randomly in loop.  Perform more
26435         mpf_mul_2exp testing.
26437         * configure.in: Recognize cray vector processors with a broad `*';
26438         move after alpha* not to match that.
26440 2000-06-28  Kevin Ryde  <kevin@swox.se>
26442         * mpz/tests/io.c: Use a disk file, not a pipe, switch to ansi2knr
26443         style, switch from MP_INT to mpz_t, add a couple of error checks.
26444         * mpz/tests/Makefile.am (CLEANFILES): Add io.tmp, in case io.c fails.
26446 2000-06-27  Torbjorn Granlund  <tege@swox.com>
26448         * mpf/tests/t-get_d.c: Be more lax about relative error, to handle Cray
26449         floating point format.
26451         * mpq/tests/t-get_d.c: Decrease default reps to 1000.
26453         * mpf/tests/t-conv.c: Correct type of `bexp'.
26455         * configure.in (cray vector machines): Don't inherit gmp_cflags_cc.
26457         * tune/Makefile.am (EXTRA_DIST): Delete sparc64.asm.
26459         * configure.in (cray vector machines): Set extra_functions.
26461         * mpn/cray/mulww.f: New file with vectorizing cray code.
26462         * mpn/cray/mulww.s: Generated from mulww.f.
26463         * mpn/cray/mul_1.c: New file.
26464         * mpn/cray/addmul_1.c: New file.
26465         * mpn/cray/submul_1.c: New file.
26466         * mpn/cray/add_n.c: New file.
26467         * mpn/cray/sub_n.c: New file.
26469 2000-06-26  Kevin Ryde  <kevin@swox.se>
26471         * acinclude.m4 (GMP_CHECK_ASM_ALIGN_FILL_0x90): Fix so it actually
26472         detects solaris 2.6, and also suppress warning on solaris 2.8.
26473         * configure.in (SPEED_CYCLECOUNTER): Remove spurious "athlon" from
26474         sparc case.
26476         * mpn/lisp/gmpasm-mode.el: Move keymap to the top of the docstring.
26478 2000-06-21  Kevin Ryde  <kevin@swox.se>
26480         * mpn/generic/mul_n.c (mpn_kara_mul_n, mpn_kara_sqr_n): Use
26481         mp_size_t for n2.
26482         (mpn_toom3_mul_n, mpn_toom3_sqr_n): Use mp_size_t for size
26483         parameters and "l" variables.
26484         * gmp-impl.h (mpn_toom3_mul_n, mpn_toom3_sqr_n): Update prototypes.
26486         * mpbsd/itom.c, mpbsd/sdiv.c: Add casts for correct handling of
26487         -0x80...00 on systems with sizeof(short)==sizeof(int).
26489         * mpz/tests/t-misc.c: Move "bin" test from here ...
26490         * mpz/tests/t-bin.c: ... to here, and add a new (2k,k) test too.
26491         * mpz/tests/Makefile.am (check_PROGRAMS): Add t-bin.
26493         * mpz/bin_ui.c [_LONG_LONG_LIMB]: Use mpn_divrem_1, since kacc is
26494         a limb not a ulong.
26495         * mpz/bin_uiui.c [_LONG_LONG_LIMB]: Ditto, and use mpn_mul_1 too,
26496         since nacc is a limb.
26498         * mpf/tests/t-misc.c (check_mpf_set_si, check_mpf_cmp_si):
26499         New file, testing mpf_set_si, mpf_init_set_si, and mpf_cmp_si.
26500         * mpf/tests/Makefile.am (check_PROGRAMS): Add it.
26502         * mpz/tests/t-misc.c (check_mpz_set_si, check_mpz_cmp_si):
26503         New tests, for mpz_set_si, mpz_init_set_si, and mpz_cmp_si.
26505         * mpz/set_si.c, mpz/iset_si.c, mpz/cmp_si.c [_LONG_LONG_LIMB]: Fix
26506         handling of -0x80..00.
26507         * mpf/set_si.c, mpf/iset_si.c, mpf/cmp_si.c [_LONG_LONG_LIMB]: Ditto.
26509 2000-06-19  Torbjorn Granlund  <tege@swox.com>
26511         * demos/primes.c: Properly handle arguments `m +n'.
26513 2000-06-17  Torbjorn Granlund  <tege@swox.com>
26515         * config.sub: Recognize k5 and k6 with common pattern.
26517         * mpq/tests/t-get_d.c: Also test mpq_set_d.  Misc improvements.
26519         * mpq/set_d.c: Special case 0.0.  Don't call mpn_rshift with 0 count.
26520         Allocate correct amount of memory for numerator.  Delete spurious
26521         ASSERT_ALWAYS(1).
26523 2000-06-17  Kevin Ryde  <kevin@swox.se>
26525         * mpz/perfsqr.c: Fix so that zero is considered a perfect square.
26526         (Was wrongly calling mpn_perfect_square_p with size==0.)
26528 2000-06-16  Kevin Ryde  <kevin@swox.se>
26530         * configure.in: Set k5*-*-* to use basic i386 code until there's
26531         something specific.  Add path=x86 as a default for x86s.
26533         * acinclude.m4 (GMP_CHECK_ASM_ALIGN_LOG): Generate
26534         ALIGN_LOGARITHMIC setting, not a full ALIGN definition.
26535         (GMP_CHECK_ASM_ALIGN_FILL_0x90): New test.
26536         * configure.in [x86-*-*]: Use GMP_CHECK_ASM_ALIGN_FILL_0x90.
26537         * mpn/asm-defs.m4 (ALIGN): New macro.
26538         * mpn/x86/x86-defs.m4 (ALIGN): Remove supplementary definition.
26540         * tune/*: Plain "unsigned" for speed_cyclecounter.
26541         * configure.in: Use tune/sparcv9.asm for 32 and 64 bit modes.
26542         * tune/sparc64.asm: Remove file.
26544 2000-06-15  Torbjorn Granlund  <tege@swox.com>
26546         * mpn/x86/k7/mmx/copyi.asm: Use `testb' instead of `test'.
26547         * mpn/x86/k7/mmx/copyd.asm: Likewise.
26549         * mpn/x86/k7/mmx/lshift.asm: Avoid using `~' (Solaris as problems).
26550         * mpn/x86/k7/mmx/rshift.asm: Likewise.
26551         * mpn/x86/k6/aors_n.asm: Likewise.
26552         * mpn/x86/k7/aors_n.asm: Likewise.
26553         * mpn/x86/k7/mul_basecase.asm: Likewise.
26555 2000-06-13  Torbjorn Granlund  <tege@swox.com>
26557         * tune/sparcv9.asm: Tune, deleting two instructions.
26559         * tune/alpha.asm: Update to unified speed_cyclecounter.
26561 2000-06-11  Kevin Ryde  <kevin@swox.se>
26563         * mpz/tests/reuse.c (FAIL): Add a K&R version.
26564         Use _PROTO on some typedefs.
26565         * mpz/tests/t-misc.c: Add gmp-impl.h for "const".
26567         * configure.in: Rework mpn multi-function and optional files.
26568         Names standardized, no need for explicit declarations, all picked
26569         up in one $path traversal.
26570         * doc/configuration: Updates.
26572         * tests/rand/t-rand.c (main): Change "usage" to work with K&R.
26574 2000-06-10  Kevin Ryde  <kevin@swox.se>
26576         * mpn/x86/pentium/mmx/popham.asm, mpn/x86/p6/mmx/popham.asm,
26577         mpn/x86/p6/p3mmx/popham.asm, mpn/x86/p6/diveby3.asm: Add
26578         MULFUNC_PROLOGUE for correct HAVE_NATIVE_* matching.
26580         * mpn/x86/x86-defs.m4 (cmov_bytes_tttn): Use eval() on expressions.
26581         (cmov_available_p): Switch to list CPUs which do have cmov.
26582         * mpn/x86/p6/sqr_basecase.asm, mpn/x86/k6/sqr_basecase.asm,
26583         mpn/x86/k7/sqr_basecase.asm: Use eval() for multiplication.
26584         * mpn/x86/README.family: Various updates.
26586 2000-06-09  Kevin Ryde  <kevin@swox.se>
26588         * mpbsd/tests/allfuns.c (main): Call exit() instead of doing return.
26590         * doc/tasks.html, doc/projects.html: Moved from projects directory.
26591         * doc/multiplication: New file.
26592         * Makefile.am (EXTRA_DIST): Remove projects, add doc.
26594         * Makefile.am (libgmp_la_LIBADD, libmp_la_LIBADD): Remove
26595         unnecessary -lm.
26596         * INSTALL: Remove -lm from instructions.
26597         * demos/Makefile.am (qcn_LDADD): Add -lm.
26599         * tune/*: Add measuring for mpn_divrem_2 and modlimb_invert,
26600         improve addsub_n.  Switch to unified speed_cyclecounter.
26601         * configure.in: Update configs for speed_cyclecounter.
26603         * gmp-impl.h (MP_LIMB_T_MAX, MP_LIMB_T_HIGHBIT): New macros.
26604         * mpn/generic/diveby3.c, mpn/generic/mul_n.c, mpn/generic/gcd.c,
26605         tune/speed.c, mpn/tests/ref.c: Use them.
26607         * mpn/tests/spinner.c: Remove setitimer, just alarm is enough.
26608         * configure.in (AC_CHECK_FUNCS): Remove setitimer.
26609         * mpn/tests/x86call.asm: Start with junk in %eax, %ecx, %edx.
26610         * mpn/tests/ref.[ch] (refmpn_addsub_nc): New function.
26611         * mpn/tests/try.c: Add some support for mpn_addsub_nc.
26612         * mpn/tests/Makefile.am (EXTRA_PROGRAMS): Remove addsub_n and
26613         addsub_n_2 which don't currently build.
26614         * mpn/tests/copy.c: Test MPN_COPY_INCR, not __gmpn_copy.
26616         * tests/rand/Makefile.am (libstat_la_LIBADD): Add -lm, no longer on
26617         libgmp.la.
26618         (findlc_LDADD): Use libstat.la.
26619         (AUTOMAKE_OPTIONS): Use ansi2knr.
26621 2000-06-08  Torbjorn Granlund  <tege@swox.com>
26623         * configure.in (alpha*-*-osf*): Default `flavour' to ev6 for ev6 and
26624         higher.
26625         (alpha*-*-*): Likewise.
26626         (alpha*-*-osf*: gmp_optcflags_cc): Move -arch/-tune flags from
26627         gmp_xoptcflags_gcc.
26629         * mpn/Makefile.am (TARG_DIST): Add pa64w.
26631         * longlong.h: Wrap 64-bit hppa code in #ifndef LONGLONG_STANDALONE.
26633 2000-06-07  Torbjorn Granlund  <tege@swox.com>
26635         * mpz/remove.c: Fail for `src' being zero.
26637         * mpz/tests/reuse.c: Test more functions.
26638         (FAIL): New define.
26640         * mpz/tests/t-powm.c: Loop during operand generation while they
26641         are mathematically ill-defined (used to just skip such tests).
26643         * mpz/powm.c (mpz_redc): Clean up argument declarations.
26645         * configure.in (gmp_cflags64_gcc): Don't add bogus -mWHAT option.
26646         (sparcv9-*-solaris2.[7-9]], gmp_cflags64_gcc):
26647         Inherit from previous gmp_cflags64_gcc; pass `-m64 -mptr64'.
26648         (ia64*-*-*): New.
26650         * mpn/generic/dump.c: Make it work when an mp_limb_t is not `long'.
26652         * mpf/set_prc.c: MPN_COPY => MPN_COPY_INCR.
26654 2000-06-06  Torbjorn Granlund  <tege@swox.com>
26656         * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n):
26657         Use mpn_incr_u for final carry propagation.
26659         * mpz/tests/t-gcd.c: Add calls to mpz_gcdext with argument t == NULL.
26661         * mpz/tests/reuse.c: Major rewrite; test many more functions.
26663         * mpz/powm_ui.c: When exp is 0, change res assign order in order
26664         to handle argument overlap.
26665         * mpz/powm.c: When exp is 0, change res assign order in order
26666         to handle argument overlap.  Handle negative exp and mod arguments.
26668         * mpz/gcdext.c: Rework code after mpn_gcdext call to handle
26669         argument overlap.
26671         * mpz/fdiv_qr.c: Read dividend->_mp_size before calling mpz_tdiv_qr
26672         in order to handle argument overlap.
26673         * mpz/cdiv_qr.c: Likewise.
26675         * mpf/tests/reuse.c: Fix typo that effectively disabled `dis_funcs'
26676         tests.  Clean up test for mpf_ui_div.
26678 2000-06-06  Kevin Ryde  <kevin@swox.se>
26680         * mpn/x86/p6/sqr_basecase.asm: New file.
26681         * mpn/x86/mod_1.asm: Avoid one conditional jump.
26682         * mpn/x86/p6/gmp-mparam.h: Update thresholds, #ifndef UMUL_TIME
26683         and UDIV_TIME, add COUNT_TRAILING_ZEROS_TIME.
26685         * mp_minv_tab.c: New file.
26686         * Makefile.am (libgmp_la_SOURCES, libmp_la_SOURCES): Add it.
26687         * gmp-impl.h (modlimb_invert): New macro.
26688         * mpz/powm.c: Remove mpz_dmprepare, use modlimb_invert instead.
26689         * mpn/generic/bdivmod.c: Use modlimb_invert instead of a loop.
26690         * mpn/generic/gcd.c: Inline two small mpn_bdivmod calls, use
26691         MPN_COPY_INCR not MPN_COPY in one place.
26693 2000-06-05  Torbjorn Granlund  <tege@swox.com>
26695         * mpf/tests/reuse.c (dsi_funcs): Add mpf_mul_2exp and mpf_div_2exp.
26696         (main): Clean up test for mpf_div_ui.
26698         * mpf/mul_2exp.c: Correct criterion for whether to use mpn_lshift or
26699         mpn_rshift.  MPN_COPY => MPN_COPY_INCR.  Coerce the two assignments to
26700         r->_mp_size.
26702         * mpf/div_2exp.c: Use mpn_rshift instead of mpn_lshift when overlap
26703         so requires.  MPN_COPY => MPN_COPY_INCR.
26705         * mpf/tests/t-dm2exp.c: Correct type of res_prec.
26707 2000-06-04  Kevin Ryde  <kevin@swox.se>
26709         * mpz/bin_uiui.c: Fix result for n==0 and n==k.
26710         * mpz/bin_ui.c: Fix result for k>n, add support for n<0.
26711         * gmp.texi (Number Theoretic Functions): Update mpz_bin_ui to
26712         note n<0 is supported.
26714         * mpz/tests/t-misc.c: New file.
26715         * mpz/tests/Makefile.am (check_PROGRAMS): Add it.
26717 2000-05-31  Kevin Ryde  <kevin@swox.se>
26719         * tune/speed.* (FLAG_R_OPTIONAL): New option for routines, use on
26720         mpn_gcd_1 and mpn_mul_basecase.
26721         * tune/README: Update.
26723         * tune/alpha.asm: New file, by Torbjorn.
26724         * tune/Makefile.am (EXTRA_DIST): Add it.
26725         * configure.in (alpha*-*-*): Use it.
26727 2000-05-31  Linus Nordberg  <linus@swox.se>
26729         * doc/configuration: New file.
26731 2000-05-30  Torbjorn Granlund  <tege@swox.com>
26733         * mpn/generic/mul_basecase.c: Call mpn_mul_2 and mpn_addmul_2
26734         if available.  Don't include longlong.h.
26736         * doc/isa_abi_headache: New file.
26738 2000-05-30  Linus Nordberg  <linus@swox.se>
26740         * configure.in (NM): Use AC_PROG_NM rather than AC_CHECK_TOOL to
26741         find `nm'.  (AC_PROG_NM comes with Libtool and is needed to get
26742         the `-B' option (BSD compatible output) included in $NM.)
26743         (AR): Use AC_CHECK_PROG rather than AC_CHECK_TOOL to find `ar'.
26744         (Now that NM isn't a cross compilation tool, don't give the
26745         impression that we know how to cross compile.)
26746         (CCAS): Remove spurious comment.
26748         * gmp.texi (Notes for Particular Systems): Remove comment about
26749         using GNU `nm' on AIX since system nm now works.
26751 2000-05-29  Torbjorn Granlund  <tege@swox.com>
26753         * mpn/power/mul_1.s: Remove [PR] from first word in function
26754         descriptor.
26755         * mpn/power/addmul_1.s: Likewise.
26756         * mpn/power/submul_1.s: Likewise.
26758 2000-05-28  Kevin Ryde  <kevin@swox.se>
26760         * configure.in, tune/*: Change pentium rdtsc cycle scheme to
26761         HAVE_SPEED_CYCLECOUNTER and SPEED_CYCLECOUNTER_OBJS.
26762         * tune/pentium.asm: Renamed and converted from rdtsc.asm.
26763         * tune/sparcv9.asm: New file, by Torbjorn.
26764         * tune/sparc64.asm: New file.
26765         * tune/tuneup.c: Put a limit on gcdext search.
26767         * gmp.h (mp_set_memory_functions): Add extern "C".
26768         * mp.h (__GNU_MP__): Bump to "3".
26769         * mpz/add.c,mul.c,powm.c,sub.c,sqrtrem.c,tdiv_qr.c [BERKELEY_MP]:
26770         Include mp.h for mpbsd compile.
26771         * mpz/gcd.c: Ditto, and remove _mpz_realloc declaration.
26773         * gmp.texi (Integer Functions): Flatten @subsections into @sections.
26774         (Floating-point Functions): Ditto.
26775         (Integer Random Numbers): Split from miscellaneous as a sep section.
26776         (Installing GMP): Make nodes for the sections.
26777         Add more "@cindex"s.
26778         (Known Build Problems): Remove SunOS get_d problem, believed fixed.
26779         (Notes for Particular Systems): Remove HPPA note since now PIC.
26780         (References): URL for Jebelean.
26782 2000-05-27  Torbjorn Granlund  <tege@swox.com>
26784         * mpn/pa64w: New directory, contents based on corresponding mpn/pa64
26785         files.
26786         * configure.in (hppa2.0w-*-*): New.
26787         * mpz/tests/io.c (_INCLUDE_POSIX_SOURCE): Define when __hpux before
26788         including stdio.h.
26789         * gmp-impl.h: Always define DItype and UDItype.
26791 2000-05-27  Kevin Ryde  <kevin@swox.se>
26793         * tune/common.c (speed_measure): Correction to array sorting,
26794         better diagnostic when measuring fails.
26795         * tune/time.c: Add microsecond accurate getrusage method.
26797         * tune/time.c (speed_cpu_frequency_processor_info): New function.
26798         * configure.in (AC_CHECK_FUNCS): Add processor_info.
26800 2000-05-26  Linus Nordberg  <linus@swox.se>
26802         * gmp.texi (Installing GMP): Shared libraries work for AIX < 4.3
26803         if using GNU nm.
26805 2000-05-26  Torbjorn Granlund  <tege@swox.com>
26807         * tune/tuneup.c (SIGNED_TYPE_MAX): Shift `-1' instead of `1' to
26808         avoid signed overflow.
26810         * demos/pexpr.c (setup_error_handler): Don't call sigaltstack on
26811         Unicos.
26813 2000-05-25  Torbjorn Granlund  <tege@swox.com>
26815         * insert-dbl.c: Work around GCC 2.8 bug.
26816         * extract-dbl.c: Likewise.
26818         * config.sub: Allow i586, i686, i786 again.
26820         * config.guess: Use X86CPU for lots more systems.
26822 2000-05-25  Linus Nordberg  <linus@swox.se>
26824         * mpbsd/tests/dummy.c (main): Call exit() instead of doing return
26825         (some old SysV machines don't get this correct, I've heard.)
26827 2000-05-25  Kevin Ryde  <kevin@swox.se>
26829         * mpf/iset_str.c: Initialize _mp_size and _mp_exp to 0, in case no
26830         digits in string, so it's the same as a separate init and set_str.
26832 2000-05-24  Torbjorn Granlund  <tege@swox.com>
26834         * mpz/tests/reuse.c: Use mpz_random2 instead of mpz_random.
26836         * mpz/divexact.c: Read pointers after reallocation.
26837         Compare `quot' and `den' instead of `qp' and `dp' in overlap check.
26838         Use MPN_COPY_INCR for copying from `np'.
26840         (*-*-aix4.[3-9]*): Disable shared libs just for problematic AIX
26841         versions.
26842         * configure.in (*-cray-unicos*): Disable asm syntax checking; set
26843         compiler explicitly.
26844         * configure.in (hppa*-*-*): Remove code disabling shared libs.
26846 2000-05-24  Linus Nordberg  <linus@swox.se>
26848         * acinclude.m4 (GMP_PROG_CC_WORKS): Don't report progress to user
26849         when doing the AIX specific test to avoid "nested output".
26851 2000-05-22  Kevin Ryde  <kevin@swox.se>
26853         * mp.h (_PROTO): Copy from gmp.h, use on prototypes.
26854         Add extern "C" too.
26855         * mpbsd/tests/Makefile.am (AUTOMAKE_OPTIONS): Enable ansi2knr.
26856         * mpbsd/tests/allfuns.c: Don't execute mout, just link to it.
26857         (main): ANSI style definition.
26859         * gmp-impl.h (MP_BASE_AS_DOUBLE): Change the expression to
26860         something that works on SunOS native cc.  Seems to fix the
26861         mp*_get_d problems.
26863         * mpn/tests/ref.c (refmpn_strip_twos): Use MPN_COPY_INCR.
26864         * mpn/tests/Makefile.am: Let .asm.o rules work with absolute $srcdir.
26866 2000-05-21  Kevin Ryde  <kevin@swox.se>
26868         * mpn/x86/k7/sqr_basecase.asm: Replace file with K7 specific code.
26869         * mpn/x86/k7/README: Update.
26870         * mpn/x86/k7/gmp-mparam.h: Tune thresholds.
26871         (COUNT_TRAILING_ZEROS_TIME): New define.
26872         * mpn/x86/k6/gmp-mparam.h: Ditto.
26874         * mpn/x86/pentium/mmx/popham.asm: New file (include_mpn of K6 version).
26875         * mpn/x86/p6/diveby3.asm: New file (include_mpn of P5 version).
26876         * mpn/x86/p6/mmx/popham.asm: New file (include_mpn of K6 version).
26877         * mpn/x86/p6/p3mmx/popham.asm: New file (include_mpn of K7 version).
26878         * configure.in (pentium3-*-*): Add p3mmx to $path.
26880         * gmp.texi (Integer Arithmetic): Clarify mpz_jacobi op2; add
26881         mpz_*_kronecker_*.
26882         (Miscellaneous Integer Functions): Add mpz_odd_p and mpz_even_p.
26883         (Low-level Functions): Put mpn_divmod_1 with mpn_divrem_1 and note
26884         it's now a macro.
26885         (References): Add Henri Cohen.
26887         * gmp.h (mpn_addmul_1c, mpn_divrem_1c, mpn_mod_1c, mpn_mul_1c,
26888         mpn_submul_1c): Add prototypes.
26889         (mpz_odd_p, mpz_even_p): New macros.
26891         * mpn/asm-defs.m4 (m4wrap_prepend): New macro.
26892         (m4_error): Use it.
26893         (m4_not_for_expansion): Corrections to OPERATION symbols.
26894         More comments about variations between m4 versions.
26895         * mpn/x86/x86-defs.m4 (PROLOGUE): Use m4wrap_prepend (fixes error
26896         exit under BSD m4, previously m4_error printed the message but the
26897         exit code was 0).
26899         * gmp.h (mpn_divmod_1): Change to a macro calling mpn_divrem_1.
26900         * mpn/generic/divrem_1.c: Move divmod_1.c code to here, make it
26901         static and call it __gmpn_divmod_1_internal.
26902         * mpn/generic/divmod_1.c: Remove file.
26903         * configure.in (gmp_mpn_functions): Remove divmod_1.
26904         * mpn/asm-defs.m4 (define_mpn): Remove divmod_1 and divmod_1c.
26905         * compat.c (mpn_divmod_1): Add compatibility function.
26906         * tune/*: Remove mpn_divmod_1 measuring (leave just divrem_1).
26908         * acconfig.h (HAVE_NATIVE_mpn_*): Add some missing carry-in
26909         variants, remove divmod_1.
26911         * mpn/x86/diveby3.asm: Use imul, update comments.
26913         * demos/qcn.c: New file.
26914         * demos/Makefile.am (EXTRA_PROGRAMS): Add it.
26916         * mpz/tests/t-jac.c: New file.
26917         * mpz/tests/Makefile.am (check_PROGRAMS): Add it. Enable ansi2knr.
26919         * mpz/kronsz.c: New file.
26920         * mpz/kronuz.c: New file.
26921         * mpz/kronzs.c: New file.
26922         * mpz/kronzu.c: New file.
26923         * mpz/Makefile.am (libmpz_la_SOURCES): Add them.
26924         * Makefile.am (MPZ_OBJECTS): Add them.
26925         * gmp-impl.h (JACOBI_*, MPN_STRIP_LOW_ZEROS_NOT_ZERO): New macros.
26926         * gmp.h (mpz_*_kronecker_*): New defines and prototypes.
26928         * mpn/generic/jacbase.c: New file.
26929         * mpn/generic/mod_1_rs.c: New file.
26930         * configure.in (gmp_mpn_functions): Add them.
26931         * gmp.h (mpn_jacobi_base, mpn_mod_1_rshift): New defines and
26932         prototypes.
26933         * longlong.h (COUNT_TRAILING_ZEROS_TIME): New define.
26934         * mpn/tests/ref.c (refmpn_mod_1_rshift): New function.
26935         * mpn/tests/try.c: Add mpn_mod_1_rshift.
26936         * tune/*: Add measuring for mpn_jacobi_base.
26938         * acinclude.m4 (GMP_FINISH): Add ifdefs to allow multiple
26939         inclusion of config.m4.
26940         (GMP_PROG_M4): Put "good" message through to config.log.
26942         * mpz/powm.c: Use a POWM_THRESHOLD for where redc stops.
26943         * tune/*: Add mpz_powm measuring, and tune POWM_THRESHOLD.
26944         * gmp-impl.h [TUNE_PROGRAM_BUILD] (POWM_THRESHOLD): Conditional
26945         redefinition for use when tuning.
26947         * mpz/powm_ui.c: Use DIVIDE_BY_ZERO.
26949         * mpz/iset_str.c: Initialize _mp_size to 0, in case no digits in
26950         string; this makes it the same as a separate init and set_str.
26952 2000-05-20  Kevin Ryde  <kevin@swox.se>
26954         * mpn/asm-defs.m4: Note &,|,^ aren't bitwise in BSD m4 eval().
26955         * mpn/x86/k6/sqr_basecase.asm: Use "%" not "&" in m4 eval()s.
26957         * mpn/x86/x86-defs.m4 (Zdisp): Yet more instruction forms.
26959 2000-05-19  Linus Nordberg  <linus@swox.se>
26961         * acinclude.m4 (GMP_CHECK_CC_64BIT): Don't use shell variable
26962         `ac_compile' for our own compile command string since other
26963         Autoconf macros may depend on it.
26965 2000-05-19  Kevin Ryde  <kevin@swox.se>
26967         * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Fix
26968         carry propagation in final coefficient additions.
26970 2000-05-18  Linus Nordberg  <linus@swox.se>
26972         * configure.in: Set NM before looking for compiler since
26973         GMP_CHECK_CC_64BIT needs it.
26975         * acinclude.m4 (GMP_CHECK_CC_64BIT): Don't execute on target.
26976         (GMP_PROG_CC_FIND): Before checking if the compiler knows how to
26977         produce 64-bit code, verify that it works at all.  The background
26978         is that /usr/ucb/cc on Solaris 7 successfully compiles in 64-bit
26979         mode but fails when doing final link.
26980         (GMP_PROG_CC_WORKS): Report to user what's happening.
26982 2000-05-17  Linus Nordberg  <linus@swox.se>
26984         * config.guess: Use X86CPU for x86 Cygwin.
26986 2000-05-16  Kevin Ryde  <kevin@swox.se>
26988         * mpn/x86/p6/mmx/divrem_1.asm: New file.
26989         * mpn/x86/p6/mmx/mod_1.asm: New file.
26990         * mpn/x86/p6/README: Update.
26991         * mpn/x86/divrem_1.asm: Update comments.
26992         * mpn/x86/mod_1.asm: Ditto.
26994 2000-05-14  Kevin Ryde  <kevin@swox.se>
26996         * tune/speed.h: Run gcd functions on a set of data.
26998         * mpn/tests/try.c: New file.
26999         * mpn/tests/try.h: New file.
27000         * mpn/tests/spinner.c: New file.
27001         * mpn/tests/trace.c: New file.
27002         * mpn/tests/x86call.asm: New file.
27003         * mpn/tests/x86check.c: New file.
27004         * mpn/tests/ref.c (refmpn_hamdist): Allow size==0.
27005         (refmpn_gcd): New function, and other additions supporting it.
27006         * mpn/tests/ref.h: More prototypes.
27007         * mpn/tests/Makefile.am: Add try program, use ansi2knr.
27009         * mpn/x86/k7/mmx/popham.asm: New file.
27010         * mpn/x86/k6/mmx/popham.asm: New file.
27011         * mpn/x86/k6/sqr_basecase.asm: Unroll the addmul, for approx 1.3x
27012         speedup above 15 limbs.
27013         * mpn/x86/k7/README: Update.
27014         * mpn/x86/k6/README: Update, and add notes on plain K6 and pre-CXT
27015         K6-2 problems.
27016         * configure.in (k6*-*-*, athlon-*-*): Add popham.
27018         * mpn/x86/pentium/diveby3.asm: New file.
27019         * mpn/x86/pentium/README: Update.
27021         * gmp.texi (Installing GMP): Add note on bad OpenBSD 2.6 m4.
27022         (Reporting Bugs): Ask for config.m4 if asm file related.
27023         (I/O of Rationals): New section, add mpq_out_str.
27024         (References): Add url for on-line gcc manuals.
27025         A few node and menu updates.
27027         * INSTALL: Better command line argument checking for test progs.
27028         Change MP -> GMP.
27030         * configure.in (WANT_ASSERT, USE_STACK_ALLOC, HAVE_PENTIUM_RDTSC):
27031         Put descriptions here, not in acconfig.h.
27032         (CALLING_CONVENTIONS_OBJS): New AC_SUBST (for mpn/tests/try).
27033         (HAVE_CALLING_CONVENTIONS): New AC_DEFINE.
27034         (AC_CHECK_HEADERS): Add sys/time.h.
27035         (AC_CHECK_FUNCS): Add getpagesize, setitimer.
27036         (KARATSUBA_SQR_THRESHOLD): Strip trailing comments from the
27037         #define when passing through to config.m4.
27038         * acconfig.h (PACKAGE, VERSION, WANT_ASSERT, USE_STACK_ALLOC,
27039         HAVE_PENTIUM_RDTSC): No need for #undefs, autoheader gets them
27040         from configure.in.
27042         * acinclude.m4 (GMP_PROG_M4): Check for broken OpenBSD 2.6 m4
27043         eval(), put messages into config.log.
27044         * mpn/asm-defs.m4: Add notes and test for OpenBSD 2.6 m4.
27046         * mpq/out_str.c: New file.
27047         * mpq/Makefile.am (libmpq_la_SOURCES): Add it.
27048         * Makefile.am (MPQ_OBJECTS): Ditto.
27049         * gmp.h (mpq_out_str): New define and prototype.
27051 2000-05-12  Kevin Ryde  <kevin@swox.se>
27053         * configure.in (CONFIG_TOP_SRCDIR): Fix to use $srcdir not
27054         $top_srcdir (which doesn't exist).
27055         * acinclude.m4 (GMP_C_ANSI2KNR): Fix setting U=_.
27056         * gmp-impl.h (mpn_com_n, MPN_LOGOPS_N_INLINE): Fix missing "do"
27057         (not currently used, probably no ill effect anyway).
27059 2000-05-11  Torbjorn Granlund  <tege@swox.com>
27061         * randraw.c (lc): Major overhaul (pending rewrite).
27062         (_gmp_rand): Rewrite.
27064 2000-05-08  Torbjorn Granlund  <tege@swox.com>
27066         * mpz/tests/convert.c: Call free via _mp_free_func.
27067         * mpf/tests/t-conv.c: Likewise.
27069         * memory.c: Add code enabled for DEBUG that adds special patterns
27070         around allocated blocks.
27072 2000-05-05  Linus Nordberg  <linus@swox.se>
27074         * gmp.texi (Miscellaneous Float Functions): Correct parameter list
27075         for mpf_urandomb().
27077         * configure.in: Invoke AC_REVISION.
27079 2000-05-05  Kevin Ryde  <kevin@swox.se>
27081         * gmp.texi: Use @dircategory and @direntry.
27082         (Installing GMP): Clarification for --target, updates on SunOS
27083         problems.
27084         (Integer Arithmetic): Add mpz_mul_si.
27085         (Initializing Rationals): Add mpq_swap.
27086         (Assigning Floats): Add mpf_swap.
27087         (Low-level Functions): Add mpn_divexact_by3c, and details of what
27088         the calculation actually gives.
27089         (Low-level Functions): Note extra space needed by mpn_gcdext,
27090         clarify the details a bit.
27092         * compat.c: New file, entry points for upward binary compatibility.
27093         (mpn_divexact_by3): Compatibility function.
27094         * Makefile.am (libgmp_la_SOURCES): Add compat.c.
27096         * mpn/tests/ref.c: Rearrange macros for ansi2knr.
27097         (div1): Renamed from div to avoid library function.
27098         (refmpn_divexact_by3c, refmpn_gcd_1, refmpn_popcount,
27099         refmpn_hamdist): New functions.
27100         * mpn/tests/ref.h: Add extern "C", add new prototypes.
27102         * gmp.h (gmp_randinit, etc): Add extern "C".
27103         (_mpq_cmp_ui): Fix prototype name from mpq_cmp_ui.
27104         (mpn_divexact_by3): Now a macro calling mpn_divexact_by3c.
27105         (mpn_divexact_by3c): New prototype and define.
27107         * mpn/x86/diveby3.asm: Change to mpn_divexact_by3c.
27108         * mpn/x86/k6/diveby3.asm: Ditto.
27109         * mpn/generic/diveby3.c: Ditto.
27110         * mpn/asm-defs.m4: Ditto on the define_mpn.
27111         * acconfig.h (HAVE_NATIVE_mpn_divexact_by3c): New define.
27113         * mpq/swap.c: New file, derived from mpz/swap.c.
27114         * mpf/swap.c: Ditto.
27115         * mpq/Makefile.am: Add swap.c.
27116         * mpf/Makefile.am: Ditto.
27117         * Makefile.am: Add two new "swap.lo"s.
27119         * mpn/x86/k6/mmx/com_n.asm: Fix an addressing bug (fortunately
27120         this code hasn't been used anywhere yet).
27122         * mpn/x86/k7/mmx/divrem_1.asm: New file.
27123         * mpn/x86/k7/mmx/mod_1.asm: New file.
27124         * mpn/x86/k7/diveby3.asm: New file.
27125         * mpn/x86/k7/README: Update.
27127         * mpn/x86/k7/aorsmul_1.asm: Use new cmovCC, no object code change.
27128         * mpn/x86/k7/mul_basecase.asm: Ditto.
27129         * mpn/x86/p6/aorsmul_1.asm: Ditto.
27131         * mpn/x86/x86-defs.m4 (defframe_empty_if_zero): Eval the argument.
27132         (cmovCC): New macros, replacing individual cmovCC_reg_reg forms.
27133         (Zdisp): Recognise more instructions.
27134         (shldl,etc): Use m4_instruction_wrapper().
27135         (ASSERT, movl_text_address): New macros.
27137         * mpn/asm-defs.m4: Add remarks on SunOS /usr/bin/m4 and new
27138         OpenBSD m4.
27139         (m4_assert_numargs_internal_check): Remove a spurious parameter.
27140         (m4_empty_if_zero): Eval the argument.
27141         (m4_assert, m4_assert_numargs_range, m4_config_gmp_mparam,
27142         m4_instruction_wrapper): New macros.
27144 2000-05-04  Linus Nordberg  <linus@swox.se>
27146         * gmp.texi (Reporting Bugs): Be explicit about output from running
27147         a command.
27149 2000-05-02  Torbjorn Granlund  <tege@swox.com>
27151         * mpn/generic/bz_divrem_n.c (mpn_bz_divrem_n): Handle non-zero return
27152         from first mpn_bz_div_3_halves_by_2 call.
27153         (mpn_bz_divrem_aux): Likewise.
27155 2000-04-30  Kevin Ryde  <kevin@swox.se>
27157         * tune/* (GCD_ACCEL_THRESHOLD, GCDEXT_THRESHOLD): Tune these.
27159         * mpn/generic/gcdext.c (GCDEXT_THRESHOLD): Rename from THRESHOLD,
27160         use with >=, adjust default to 17 accordingly.
27161         Use new *_SWAP macros.
27163         * mpn/generic/gcd.c (GCD_ACCEL_THRESHOLD): Rename from
27164         ACCEL_THRESHOLD, use with >=, adjust default to 5 accordingly.
27165         Use new *_SWAP macros.
27167         * mpf/get_str.c, mpf/set_str.c, mpf/sub.c, mpz/add.c, mpz/ior.c,
27168         mpz/and.c, mpz/sub.c, mpz/xor.c, mpz/ui_pow_ui.c,
27169         mpn/generic/mul.c: Use new *_SWAP macros.
27171         * stack-alloc.h: Add extern "C" around prototypes.
27173         * gmp-impl.h: (MP_PTR_SWAP, etc): New macros.
27174         (_mp_allocate_func, etc): Use _PROTO.
27175         [TUNE_PROGRAM_BUILD]: More changes in tune program build part.
27177 2000-04-28  Torbjorn Granlund  <tege@swox.com>
27179         * mpn/pa64/add_n.s: Add `,entry' to export directive.
27180         * mpn/pa64/addmul_1.S, mpn/pa64/lshift.s, mpn/pa64/mul_1.S,
27181         mpn/pa64/rshift.s, mpn/pa64/sub_n.s, mpn/pa64/submul_1.S,
27182         mpn/pa64/umul_ppmm.S: Likewise.
27183         * mpn/hppa/hppa1_1/udiv_qrnnd.S: New name for udiv_qrnnd.s.
27184         Add PIC support.
27186 2000-04-29  Kevin Ryde  <kevin@swox.se>
27188         * gmp-impl.h [TUNE_PROGRAM_BUILD] (TOOM3_MUL_THRESHOLD_LIMIT): New
27189         define.
27190         * mpn/generic/mul_n.c [TUNE_PROGRAM_BUILD] (mpn_mul_n): Use
27191         TOOM3_MUL_THRESHOLD_LIMIT, not a hard coded 500.
27193         * memory.c: Use <stdlib.h> for malloc etc, and use _PROTO.
27194         * stack-alloc.c: Don't use C++ reserved word "this".
27195         * urandom.h: Put extern "C" around prototypes.
27196         * mpz/powm.c: Switch a couple of parameters to "const", which they
27197         are, to satisfy g++.
27199         * randraw.c, stack-alloc.c, mpbsd/mout.c, mpbsd/mtox.c: Add casts to
27200         help g++.
27202         * stack-alloc.c: Provide dual ANSI/K&R function definitions.
27203         * mpz/addmul_ui.c,get_d.c,inp_str.c,perfpow.c,powm.c,pprime_p.c,
27204         rrandomb.c,set_str.c,ui_pow_ui.c: Ditto.
27205         * mpf/integer.c,set_str.c: Ditto.
27206         * mpbsd/min.c,xtom.c: Ditto.
27207         * mpn/generic/bz_divrem_n.c,dump.c,gcd_1.c,get_str.c,hamdist.c,
27208         popcount.c,random.c,random2.c,set_str.c: Ditto.
27210         * rand.c: Use <stdio.h> for NULL.
27211         * mpz/gcd_ui.c,gcdext.c,mul.c,perfpow.c,powm_ui.c,root.c,sqrt.c,
27212         sqrtrem.c: Ditto
27213         * mpf/sqrt.c,sqrt_ui.c: Ditto.
27214         * mpn/generic/perfsqr.c,sqrtrem.c: Ditto.
27216         * gmp-impl.h (NULL, malloc, realloc, free): Don't define/declare.
27217         (extern "C"): Add around function prototypes.
27218         (mpn_kara_mul_n, mpn_kara_sqr_n, mpn_toom3_mul_n, mpn_toom3_sqr_n):
27219         Add prototypes.
27220         [TUNE_PROGRAM_BUILD] (FIB_THRESHOLD): Add necessary redefinitions for
27221         use by tune program.
27222         * mpn/generic/mul_n.c: Remove mpn_toom3_mul_n prototype.
27224         * acinclude.m4 (GMP_C_ANSI2KNR): New macro.
27225         (GMP_CHECK_ASM_MMX, GMP_CHECK_ASM_SHLDL_CL): Fix to use
27226         $gmp_cv_check_asm_text which is what GMP_CHECK_ASM_TEXT sets.
27227         * configure.in (GMP_C_ANSI2KNR): Use this instead of AM_C_PROTOTYPES,
27228         for reasons described with its definition.
27230         * demos/Makefile.am (ansi2knr): Use $(top_builddir) nor $(top_srcdir).
27232         * mpz/fib_ui.c (FIB_THRESHOLD): Rename from FIB_THRES, for consistency.
27233         (FIB_THRESHOLD): Conditionalize so gmp-mparam.h can define a value.
27234         (mpz_fib_bigcase): Use >= FIB_THRESHOLD, same as main mpz_fib_ui.
27235         * tune/tuneup.c,Makefile.am (FIB_THRESHOLD): Tune this.
27237         * configure.in (*-*-aix* gmp_m4postinc): Fix setting (don't overwrite
27238         a value just stored).
27240 2000-04-26  Kevin Ryde  <kevin@swox.se>
27242         * mpn/sparc32/udiv_fp.asm: Use mpn_udiv_qrnnd macro.
27243         * mpn/sparc32/udiv_nfp.asm: Ditto.
27244         * mpn/sparc32/v8/supersparc/udiv.asm: Ditto.
27245         * mpn/sparc32/umul.asm: Name the function mpn_umul_ppmm.
27246         * mpn/sparc32/v8/umul.asm: Ditto.
27247         * mpn/powerpc32/umul.asm: Ditto.
27249         * mpn/x86/syntax.h: Remove file, since now unused.
27251         * configure.in (x86): Remove -DBROKEN_ALIGN and -DOLD_GAS
27252         previously used by .S files.
27253         (x86 extra_functions): Add udiv and umul.
27254         (GMP_PROG_M4): Use this instead of AC_CHECK_PROG(M4,m4,...)
27255         (HAVE_NATIVE_*): Loosen up the regexp to "PROLOGUE.*" so as to
27256         accept PROLOGUE_GP on alpha.
27258         * acconfig.h (HAVE_NATIVE_mpn_umul_ppmm, udiv_qrnnd, invert_limb):
27259         New template defines.
27260         * mpn/asm-defs.m4 (mpn_umul_ppmm, mpn_udiv_qrnnd): New define_mpn()s.
27261         * longlong.h (umul_ppmm, udiv_qrnnd): Use a library version if
27262         it's available and an asm macro isn't.
27263         * gmp-impl.h (invert_limb): Ditto.
27265         * gmp-impl.h (ASSERT_NOREALLOC): Not a good idea, remove it.
27267         * acinclude.m4 (GMP_PROG_M4): New macro.
27269 2000-04-25  Linus Nordberg  <linus@swox.se>
27271         * gmp.texi (Random State Initialization): Correct arguments to
27272         `gmp_randinit'.
27274         * acinclude.m4 (GMP_VERSION): Change `eval' --> `m4_eval'.  Fix
27275         from Kevin.
27276         * aclocal.m4: Regenerate.
27278 2000-04-25  Kevin Ryde  <kevin@swox.se>
27280         * mpn/x86/aors_n.asm: Remove parentheses around an immediate that
27281         Solaris "as" doesn't like, change by Torbjorn.
27283 2000-04-24  Kevin Ryde  <kevin@swox.se>
27285         * configure.in (AC_CHECK_FUNCS): Add strtoul.
27287         * mpn/generic/mul_n.c [TUNE_PROGRAM_BUILD] (mpn_mul_n): Bigger
27288         array for karatsuba temporary space for tune program build.
27289         (mpn_toom3_sqr_n) Remove an unused variable.
27291         * demos/Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr.
27292         Add "allprogs:" pseudo-target.
27293         * demos/factorize.c, demos/isprime.c: Switch to ANSI functions,
27294         rely on ansi2knr.
27296         * gmp.texi (Getting the Latest Version of GMP): Add reference to
27297         ftp.gnu.org mirrors list.
27298         * INSTALL: Add arg count check to example programs.
27300         * mpn/x86/*/*.asm: Convert to FORTRAN ... or rather to
27301         FORTRAN-style "C" commenting to support Solaris "as".
27302         * mpn/x86/x86-defs.m4: Ditto, and add another Zdisp insn.
27303         * mpn/asm-defs.m4 (C): Update comments.
27304         * mpn/x86/README.family: Add a note on commenting, remove
27305         description of .S files.
27307         * mpn/sparc64/addmul_1.asm, mul_1.asm, submul_1.asm: Use
27308         include_mpn().
27310 2000-04-23  Torbjorn Granlund  <tege@swox.com>
27312         * config.sub: Merge with FSF version of April 23.
27314         * mpn/powerpc32: Use dnl/C instead of `#' for comments.
27316         * config.guess: Get "model" limit between pentium 2 and pentium3 right.
27317         Get rid of code determining `_' prefix; use double labels instead.
27318         * config.guess: Partially merge with FSF version of April 22.
27319         (Don't bring over NetBSD changes for now.)
27321 2000-04-23  Kevin Ryde  <kevin@swox.se>
27323         * tune/Makefile.am, tune/README, tune/common.c, tune/rdtsc.asm,
27324         tune/speed.c, tune/speed.h, tune/time.c, tune/tuneup.c: New files.
27325         * tune/Makefile.in: New file, generated from Makefile.am.
27327         * gmp-impl.h (ASSERT_NOREALLOC,TMP_ALLOC_LIMBS): New macros.
27328         [TUNE_PROGRAM_BUILD] Further mods for tune program builds.
27330         * mpz/Makefile.am: Add -DOPERATION_$* for new mul_siui.c.
27331         Add rules to build mul_si and mul_ui from a common mul_siui.c.
27332         * mpz/mul_siui.c: New file, derived from and replacing mul_ui.c.
27333         * gmp.h (mpz_mul_si): New prototype and define.
27335         * mpn/tests/*.c [__i386__] (CLOCK): Don't use floating point in
27336         CLOCK because cpp can't handle floats in #if's (TIMES is derived
27337         from CLOCK by default).
27339         * mpn/asm-defs.m4 (include_mpn): New macro.
27340         (m4_assert_numargs) Changes to implementation.
27342         * mpf/Makefile.am: Add -DOPERATION_$* for new integer.c.
27343         Remove explicit rules for floor.o etc.
27344         * mpf/integer.c: Use OPERATION_$* for floor/ceil/trunc.
27346         * mpn/Makefile.am: Put "tests" in SUBDIRS.
27347         * mpn/tests/Makefile.am: New file providing rules to build test
27348         programs, nothing done in a "make all" or "make check" though.
27349         * mpn/tests/README: New file.
27351         * acconfig.h (HAVE_PENTIUM_RDTSC): New define.
27353         * configure.in (x86): Rearrange target cases.
27354         Add mulfunc aors_n and aorsmul_1 for x86 and pentium (now all x86s).
27355         Remove asm-syntax.h generation not needed.
27356         Remove now unused family=x86.
27357         (sparc) Remove unused family=sparc.
27358         (HAVE_PENTIUM_RDTSC) New AC_DEFINE and AM_CONDITIONAL.
27359         (AM_C_PROTOTYPES) New test, supporting ansi2knr.
27360         (AC_CHECK_HEADERS) Add getopt.h, unistd.h and sys/sysctl.h for
27361         tune progs.
27362         (AC_CHECK_FUNCS) Add getopt_long, sysconf and sysctlbyname for
27363         tune progs.
27364         (config.m4 CONFIG_TOP_SRCDIR) Renamed from CONFIG_SRCDIR.
27365         (config.m4 asm-defs.m4) Use CONFIG_TOP_SRCDIR and include().
27366         (gmp_m4postinc) Use include_mpn().
27367         (gmp_links) Omit asm-defs.m4/asm.m4 and gmp_m4postinc's.
27368         (MULFUNC_PROLOGUE) Fix regexps so all functions get AC_DEFINE'd.
27369         (PROLOGUE) Ditto (native copyi and copyd were unused in gmp 3).
27370         (KARATSUBA_SQR_THRESHOLD) Copy from gmp-mparam.h into config.m4.
27371         (AC_OUTPUT) Add tune/Makefile, mpn/tests/Makefile.
27373         * Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr.
27374         (SUBDIRS): Add tune, reorder directories.
27375         (MPZ_OBJECTS): Add mpz/mul_si.lo.
27376         (libmp_la_SOURCES): Use this for top-level objects, not .lo's.
27377         * ansi2knr.c, ansi2knr.1: New files, provided by automake.
27379         * mpn/x86/aors_n.asm: Convert add_n.S and sub_n.S to a
27380         multi-function aors_n.asm, no object code change.
27381         * mpn/x86/pentium/aors_n.asm: Ditto.
27382         * mpn/x86/aorsmul_1.asm: Ditto for addmul/submul.
27383         * mpn/x86/pentium/aorsmul_1.asm: Ditto.
27385         * mpn/x86/lshift.asm, mpn/x86/mul_1.asm, mpn/x86/mul_basecase.asm,
27386         mpn/x86/rshift.asm: Convert from .S, no object code change.
27387         * mpn/x86/pentium/lshift.asm, mpn/x86/pentium/mul_1.asm,
27388         mpn/x86/pentium/mul_basecase.asm, mpn/x86/pentium/rshift.asm: Ditto.
27390         * gmp.texi (Reporting Bugs): Itemize the list of things to include.
27391         (Miscellaneous Float Functions): Correct typo in mpf_ceil etc
27392         argument types.
27393         Change @ifinfo -> @ifnottex for benefit of makeinfo --html.
27394         Remove unnecessary @iftex's around @tex.
27396 2000-04-22  Torbjorn Granlund  <tege@swox.com>
27398         * config.guess: Generalize x86 cpu determination code.
27399         Now works on Solaris.
27401         * mpz/nextprime.c: Rewrite still disabled code.
27403         * configure.in: Specifically match freebsd[3-9].
27405 2000-04-21  Torbjorn Granlund  <tege@swox.com>
27407         * rand.c: Call mpz_clear for otherwise leaking mpz_t.
27409         * mpz/pprime_p.c (mpz_probab_prime_p): Merge handling of negative
27410         n into code for handling small positive n.  Merge variables m and n.
27411         After dividing, simply call mpz_millerrabin.
27412         (isprime): Local variables now use attribute `long'.
27413         (mpz_millerrabin): New static function, based on code from
27414         mpz_probab_prime_p.
27415         (millerrabin): Now simple workhorse for mpz_millerrabin.
27417 2000-04-19  Torbjorn Granlund  <tege@swox.com>
27419         * gmp-impl.h: Fix parenthesis error in test for __APPLE_CC__.
27421 2000-04-18  Linus Nordberg  <linus@swox.se>
27423         * NEWS: Add info about shared libraries.  Remove reference to
27424         gmp_randinit_lc.
27426 2000-04-17  Torbjorn Granlund  <tege@swox.com>
27428         * Version 3.0 released.
27430         * mpn/arm/add_n.S: New version from Robert Harley.
27431         * mpn/arm/addmul_1.S: Likewise.
27432         * mpn/arm/mul_1.S: Likewise.
27433         * mpn/arm/sub_n.S: Likewise.
27435         * gmp.h (__GNU_MP_VERSION_PATCHLEVEL): Now 0.
27437 2000-04-17  Linus Nordberg  <linus@swox.se>
27439         * configure.in (hppa2.0*-*-*): Pass `+O3' to cc/c89 in 64-bit mode
27440         to avoid compiler bug.
27441         (ns32k*-*-*): Fix typo in path.  Change by Kevin.
27442         (alpha*-*-osf*): New case.  Pass assembly flags for architecture
27443         to gcc.
27444         (alpha*-*-*): Don't bother searching for cc.
27445         * configure: Regenerate.
27447         * Makefile.am (EXTRA_DIST): Add `macos', `.gdbinit'.
27448         * Makefile.in: Regenerate.
27449         * mpn/Makefile.am (EXTRA_DIST): Add `m88k', `lisp'.
27450         * mpn/Makefile.in: Regenerate.
27452 2000-04-16  Kevin Ryde  <kevin@swox.se>
27454         * README: Updates, and don't duplicate the example in INSTALL.
27455         * INSTALL: Minor updates.
27456         * gmp.texi (Installing MP): Minor edits, restore CC/CFLAGS description.
27458 2000-04-16  Linus Nordberg  <linus@swox.se>
27460         * configure.in (*-*-cygwin*): Select BSD_SYNTAX to avoid
27461         .type/.size in PROLOGUE for ELF_SYNTAX.  Override ALIGN definition
27462         from x86/syntax.h.
27463         (gmp_xoptcflags_${CC}): New set of variables, indicating
27464         ``exclusive optional cflags''.
27465         (most sparcs): Use gmp_xoptcflags instead of gmp_optcflags to
27466         ensure that we pass CPU type to older gcc.
27467         (CFLAGS): CFLAGS on the command line was spoiled.
27468         * configure: Regenerate.
27470 2000-04-16  Linus Nordberg  <linus@swox.se>
27472         * configure.in: Invoke AC_PROG_LIBTOOL directly.
27474         * acinclude.m4 (GMP_PROG_CC_FIND): Quote source variable when
27475         setting CC64 and CFLAGS64.
27476         (GMP_PROG_CC_SELECT): Cache result.
27477         (GMP_PROG_LIBTOOL): Remove.
27479         * aclocal.m4: Regenerate.
27480         * configure: Regenerate.
27482 2000-04-16  Linus Nordberg  <linus@swox.se>
27484         * tests/rand/t-rand.c (main): Add non-ANSI function declaration.
27485         Don't use `const'.
27487 2000-04-16  Torbjorn Granlund  <tege@swox.com>
27489         * mpn/generic/dump.c: Suppress output of leading zeros.
27491         * mpz/inp_str.c: Fix memory leakage.
27493         * mpz/tests/reuse.c (dss_func_division): Add a final 1.
27495         * longlong.h (alpha count_leading_zeros): Wrap in __MPN.
27496         * mpn/alpha/cntlz.asm: Use __gmpn prefix (by means of __MPN).
27498         * longlong.h (__umul_ppmm, __udiv_qrnnd): Wrap in __MPN.
27499         * mpn/alpha/udiv_qrnnd.S: Use __gmpn prefix.
27500         * mpn/hppa/udiv_qrnnd.s: Likewise.
27501         * mpn/hppa/hppa1_1/udiv_qrnnd.s: Likewise.
27502         * mpn/pa64/udiv_qrnnd.c: Likewise (by means of __MPN).
27503         * mpn/pa64/umul_ppmm.S: Likewise.
27504         * mpn/sparc32/udiv_fp.asm: Likewise (by means of MPN).
27505         * mpn/sparc32/udiv_nfp.asm: Likewise (by means of MPN).
27506         * mpn/sparc32/v8/supersparc/udiv.asm: Likewise (by means of MPN).
27508         * mpn/generic/tdiv_qr.c: Work around gcc 2.7.2.3 i386 register handling
27509         bug.
27511         * mpn/generic/tdiv_qr.c: Use udiv_qrnnd instead of mpn_divrem_1
27512         when computing appropriate quotient; mpn_divrem_1 writes too
27513         many quotient limbs.
27515         * mpn/asm-defs.m4: invert_normalized_limb => invert_limb.
27516         * mpn/alpha/invert_limb.asm: mpn_invert_normalized_limb =>
27517         mpn_invert_limb.
27518         * gmp.h: Likewise.
27519         * gmp-impl.h (alpha specific): invert_normalized_limb => invert_limb;
27520         wrap with __MPN.
27521         * longlong.h (alpha udiv_qrnnd): Likewise.
27523 2000-04-16  Kevin Ryde  <kevin@swox.se>
27525         * gmp.h (mp_set_memory_functions,mp_bits_per_limb,gmp_errno): Add
27526         #defines so the library symbols are __gmp_*.
27527         * errno.c: Include gmp.h.
27528         * gmp-impl.h (_mp_allocate_func,etc): Add #defines to __gmp_*.
27529         (__clz_tab): New #define to __MPN(clz_tab).
27530         * stack-alloc.c (__gmp_allocate_func,etc): Change from _mp_*.
27532         * Makefile.am (libmp_la_DEPENDENCIES): Add some mpz files needed
27533         for new mpz_powm (pow in libmp).
27534         (EXTRA_DIST): Add projects directory.
27536         * mpn/*: Change __mpn to __gmpn.
27537         * gmp.h (__MPN): Ditto.
27538         * stack_alloc.c,stack-alloc.h: Change __tmp to __gmp_tmp.
27540         * mpn/generic/sb_divrem_mn.c (mpn_sb_divrem_mn): Avoid gcc 2.7.2.3
27541         i386 register handling bug (same as previously in mpn_divrem_classic).
27543         * mpn/generic/divrem.c: Now contains mpn_divrem, which is not an
27544         internal function, so remove warning comment.
27546         * gmp.texi (Compatibility with Version 2.0.x): Source level only.
27548 2000-04-16  Linus Nordberg  <linus@swox.se>
27550         * configure.in (hppa1.0*): Prefer c89 to cc.
27551         * configure: Regenerate.
27553 2000-04-15  Linus Nordberg  <linus@swox.se>
27555         * configure.in: If `mpn_path' is set by user on configure command
27556         line, use that as path.
27557         * configure: Regenerate.
27559 2000-04-15  Linus Nordberg  <linus@swox.se>
27561         * configure.in (hppa2.0*): Use path "hppa/hppa1_1 hppa" if no
27562         64-bit compiler was found.
27563         * configure: Regenerate.
27565 2000-04-15  Linus Nordberg  <linus@swox.se>
27567         * configure.in: Honor `CC' and `CFLAGS' set by user on configure
27568         command line.
27569         * acinclude.m4: (GMP_PROG_CC_SELECT): Set CFLAGS if not set already.
27570         * aclocal.m4: Regenerate.
27571         * configure: Regenerate.
27573 2000-04-15  Linus Nordberg  <linus@swox.se>
27575         * acinclude.m4 (GMP_PROG_CC_FIND): Remove debug output.  Remove
27576         commented out code.
27577         * aclocal.m4: Regenerate.
27578         * configure: Regenerate.
27580         * configure.in: Make all `-mcpu' options to gcc optional.
27581         * configure: Regenerate.
27583         * tests/rand/Makefile.am: Don't do anything for target 'all'.
27584         * tests/rand/Makefile.in: Regenerate.
27586 2000-04-15  Kevin Ryde  <kevin@swox.se>
27588         * README: Small updates.
27589         * NEWS: Add some things about 3.0.
27591         * mpz/Makefile.am (EXTRA_DIST): Remove dmincl.c.
27593         * Makefile.am: Use -version-info on libraries, not -release.
27595         * mpz/tdiv_qr.c: Add mdiv function header #ifdef BERKELEY_MP.
27596         * mpbsd/Makefile.am: Use mpz/tdiv_qr.c, not mdiv.c.
27597         * Makefile.am (MPBSD_OBJECTS): Change mdiv.lo to tdiv_qr.lo.
27598         (libmp_la_DEPENDENCIES): Add mp_clz_tab.lo.
27599         * mpbsd/mdiv.c: Remove file.
27601         * config/mt-linux,mt-m68k,mt-m88110,mt-ppc,mt-ppc64-aix,mt-pwr,
27602         mt-sprc8-gcc,mt-sprc9-gcc,mt-supspc-gcc,mt-vax,mt-x86,
27603         mpn/config/mt-pa2hpux,mt-sprc9,t-oldgas,t-ppc-aix,t-pwr-aix:
27604         Remove configure fragments not used since change to autoconf.
27606         * mpn/generic/bz_divrem_n.c,sb_divrem_mn.c: Add comment that
27607         internal functions are changeable and shouldn't be used directly.
27609 2000-04-15  Linus Nordberg  <linus@swox.se>
27611         * configure.in: Remove debug output.
27612         * configure: Regenerate.
27614 2000-04-15  Torbjorn Granlund  <tege@swox.com>
27616         * mpn/generic/tdiv_qr.c: Don't use alloca directly.
27618         * mpz/tdiv_qr.c: Fix typo.
27619         * mpz/tdiv_r.c: Fix typo.
27620         * mpz/tdiv_q.c: Fix typo.
27622         * configure.in: Disable -march=pentiumpro due to apparent compiler
27623         problems.
27625         * mpz/powm.c: Replace with new code from Paul Zimmermann.
27627         * mpz/tdiv_q.c: Remove debug code.
27629         * mpn/generic/divrem.c: Remove C++ style `//' commented-out code.
27630         * mpn/generic/sb_divrem_mn.c: Likewise.
27632 2000-04-14  Torbjorn Granlund  <tege@swox.com>
27634         * mpz/cdiv_q.c: Change temp allocation for new requirements of
27635         mpz_tdiv_qr.
27636         * mpz/fdiv_q.c: Likewise.
27638         * mpn/sparc64/gmp-mparam.h: Set up parameters for TOOM3.
27640         * mpz/dmincl.c: Delete file.
27641         * mpz/tdiv_qr.c: Rewrite using mpn_tdiv_qr.
27642         * mpz/tdiv_r.c: Likewise.
27643         * mpz/tdiv_q.c: Likewise.
27645         * mpn/generic/tdiv_qr.c: New file.
27646         * mpn/generic/bz_divrem_n.c: New file.
27647         * mpn/generic/sb_divrem_mn.c: New file.
27649         * gmp-impl.h (MPZ_REALLOC): New macro.
27650         (mpn_sb_divrem_mn): Declare.
27651         (mpn_bz_divrem_n): Declare.
27652         (mpn_tdiv_qr): Declare.
27654         * configure.in (gmp_mpn_functions): Delete divrem_newt and divrem_1n;
27655         add tdiv_qr, bz_divrem_n, and sb_divrem_mn.
27656         * mpn/generic/divrem_newt.c: Delete file.
27657         * mpn/generic/divrem_1n.c: Delete file.
27659         * gmp.h (mpn_divrem_newton): Remove declaration.
27660         (mpn_divrem_classic): Remove declaration.
27662         * gmp.h (mpn_divrem): Remove function definition.
27663         * mpn/generic/divrem.c: Replace mpn_divrem_classic with a
27664         mpn_divrem wrapper.
27666 2000-04-14  Kevin Ryde  <kevin@swox.se>
27668         * mpf/dump.c, mpz/dump.c, mpn/generic/dump.c,
27669         mpn/generic/divrem.c, mpn/generic/divrem_1n.c,
27670         mpn/generic/divrem_2.c, mpn/generic/divrem_newt.c,
27671         mpn/generic/mul.c, mpn/generic/mul_basecase.c,
27672         mpn/generic/mul_n.c, mpn/generic/sqr_basecase.c,
27673         mpn/generic/udiv_w_sdiv.c: Add comment that internal functions are
27674         changeable and shouldn't be used directly.
27676         * mpq/div.c: Use DIVIDE_BY_ZERO (previously didn't get an
27677         exception on zero divisor).
27679         * mpf/tests/t-get_d.c, mpz/tests/reuse.c: Add K&R function
27680         definitions.
27681         * mpz/tests/t-2exp.c: Don't use ANSI-ism 2ul.
27683         * gmp.texi (Installing MP): Build problem notes for GSYM_PREFIX
27684         and ranlib on native SunOS.
27685         Particular systems notes about AIX and HPPA shared libraries
27686         disabled.
27687         (MP Basics): Add that undocumented things shouldn't be used.
27688         (Introduction to MP): Add to CPUs listed.
27690         * acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): Don't depend on C
27691         having "void".
27693 2000-04-13  Linus Nordberg  <linus@swox.se>
27695         * mpn/pa64/udiv_qrnnd.c (__udiv_qrnnd64): Add K&R function
27696         definition.
27698         * configure.in: Disable shared libraries for hppa*.
27699         (mips-sgi-irix6.*): Fix flags for 64-bit gcc.
27700         (hppa2.0*-*-*): Prefer c89 to cc.
27701         * configure: Regenerate.
27703         * gmp.h (gmp_randalg_t): Remove comma after last element.
27705         * tests/rand/t-rand.c: Add copyright notice.
27707 2000-04-13  Kevin Ryde  <kevin@swox.se>
27709         * mpn/generic/mul_n.c, mpn/generic/gcdext.c, mpz/nextprime.c,
27710         mpz/remove.c, mpz/root.c: Add K&R function definitions.
27711         * mpz/rrandomb.c: Fix typo in K&R part.
27712         * stack-alloc.c: Add K&R style function pointer declarations.
27714         * mpz/root.c: Use SQRT_OF_NEGATIVE on even roots of negatives.
27715         Use DIVIDE_BY_ZERO on a "zero'th" root.
27717         * configure: Regenerate with autoconf backpatched to fix --srcdir
27718         absolute path wildcards that bash doesn't like, change by Linus.
27720         * gmp.texi (Integer Arithmetic): Document mpz_nextprime.
27721         (Miscellaneous Integer Functions): Fix mpz_fits_* formatting.
27722         (Installing MP): Comment-out CC and CFLAGS description.
27724 2000-04-13  Linus Nordberg  <linus@swox.se>
27726         * rand.c (gmp_randinit): Don't combine va_alist with ordinary
27727         arguments for non STDC.
27729 2000-04-13  Torbjorn Granlund  <tege@swox.com>
27731         * mpz/nextprime.c: Use proper names of new random types and functions.
27733         * mpz/rrandomb.c: New file.
27734         * mpz/Makefile.am: List it.
27735         * mpz/Makefile.in: Regenerate.
27736         * Makefile.am: Here too.
27737         * Makefile.in: Regenerate.
27738         * gmp.h: Declare mpz_rrandomb.
27740 2000-04-12  Linus Nordberg  <linus@swox.se>
27742         * Makefile.am, demos/Makefile.am, mpbsd/Makefile.am,
27743         mpbsd/tests/Makefile.am, mpf/Makefile.am, mpf/tests/Makefile.am,
27744         mpn/Makefile.am, mpq/Makefile.am, mpq/tests/Makefile.am,
27745         mpz/Makefile.am, mpz/tests/Makefile.am, tests/Makefile.am,
27746         tests/rand/Makefile.am (AUTOMAKE_OPTIONS): Add 'no-dependencies'.
27748         * Makefile.in, demos/Makefile.in, mpbsd/Makefile.in,
27749         mpbsd/tests/Makefile.in, mpf/Makefile.in, mpf/tests/Makefile.in,
27750         mpn/Makefile.in, mpq/Makefile.in, mpq/tests/Makefile.in,
27751         mpz/Makefile.in, mpz/tests/Makefile.in, tests/Makefile.in,
27752         tests/rand/Makefile.in: Regenerate.
27754 2000-04-12  Linus Nordberg  <linus@swox.se>
27756         * randlc.c (gmp_randinit_lc): Disable function.
27757         * gmp.texi (Random State Initialization): Remove gmp_randinit_lc.
27759         * acinclude.m4 (GMP_CHECK_CC_64BIT): Compiling an empty main
27760         successfully with `-n32' will have to suffice on irix6.
27761         * aclocal.m4: Regenerate.
27763         * configure.in (sparc): Don't pass -D_LONG_LONG_LIMB to compiler.
27764         (mips-sgi-irix6.*): Use compiler option `-n32' rather than `-64'
27765         for 64-bit `cc'.  Add options for gcc.
27766         * configure: Regenerate.
27768         * mpf/urandomb.c (mpf_urandomb): Add third parameter 'nbits'.  If
27769         'nbits' doesn't make even limbs, shift up result before
27770         normalizing.
27772         * gmp.h (mpf_urandomb): Add parameter to prototype.
27774         * mpf/urandom.c: Rename file to ...
27775         * mpf/urandomb.c: ... this.
27776         * Makefile.am (MPF_OBJECTS): Change urandom.lo --> urandomb.lo.
27777         * Makefile.in: Regenerate.
27778         * mpf/Makefile.am (libmpf_la_SOURCES): Change urandom.c --> urandomb.c.
27779         * mpf/Makefile.in: Regenerate.
27781         * config.in: Regenerate for HAVE_DECL_OPTARG.
27783         * randraw.c (_gmp_rand): Fix bug with _LONG_LONG_LIMB.
27784         (lc): Change return type.
27785         Use one temporary storage instead of two.
27786         Handle seed of size 0.
27787         Avoid modulus operation in some cases.
27788         Abort if M is not a power of 2.
27789         Fix bug with 64-bit limbs.
27790         Fix bug with small seed, small A and large M.
27792         * tests/rand/gen.c (main): Include gmp.h.  Remove macros MIN, MAX.  Add
27793         option '-q'.  Don't demand argument N.  Change parameters in call
27794         to mpf_urandomb.
27796         * tests/rand/t-rand.c: New file for testing random number generation.
27798         * tests/rand/Makefile.am: Run t-rand for 'make check'.
27799         (test, bigtest): Rename to manual-test, manual-bigtest.
27800         * tests/rand/Makefile.in: Regenerate.
27802 2000-04-12  Kevin Ryde  <kevin@swox.se>
27804         * gmp-impl.h: Include config.h before TMP_ALLOC, so
27805         --disable-alloca works.
27807         * mpbsd/Makefile.am: Don't recompile top-level sources here.
27808         * Makefile.am (libmp_la_DEPENDENCIES): Put objects here instead,
27809         add errno.lo and stack-alloc.lo.
27811         * mpn/asm-defs.m4: Add a test and message for the unsuitable SunOS m4.
27812         * gmp.texi (Installing MP): Update note on SunOS m4 failure.
27814         * acconfig.h: Add copyright notice using @TOP@.
27816         * stack-alloc.c: Use _mp_allocate_func, not malloc.
27817         * gmp.texi (Installing MP): Note this under --disable-alloca.
27819         * gmp.texi (Comparison Functions): mpz_cmp_abs => mpz_cmpabs.
27820         (Integer Arithmetic): mpz_prime_p not yet implemented, comment out.
27821         (Float Arithmetic): mpf_pow_ui now implemented, uncomment-out.
27822         (Miscellaneous Float Functions): Add mpf_ceil, mpf_floor, mpf_trunc.
27823         (Low-level Functions): Add mpn_random2, with mpn_random.
27825         * mpn/m68k/mc68020/udiv.S: Rename from udiv.s.
27826         * mpn/m68k/mc68020/umul.S: Ditto.
27828         * mpn/alpha/umul.asm: Rename from umul.s, remove .file and
27829         compiler identifiers.
27831         * mpn/powerpc32/syntax.h: Removed, no longer used.
27833         * mpn/a29k/udiv.s: Remove .file and compiler identifiers.
27834         * mpn/a29k/umul.s: Ditto.
27836         * mpn/tests/ref.c: Use WANT_ASSERT.
27837         * mpn/tests/ref.h: Use _PROTO.
27839         * mpbsd/configure.in: Removed, no longer required.
27841         * mpf/div.c: Use DIVIDE_BY_ZERO.
27842         * mpf/div_ui.c: Ditto.
27843         * mpf/ui_div.c: Ditto.
27844         * mpq/inv.c: Ditto.
27845         * mpf/sqrt.c: Use SQRT_OF_NEGATIVE.
27846         * mpz/sqrt.c: Ditto.
27847         * mpz/sqrtrem.c: Ditto.
27849         * gmp-impl.h (GMP_ERROR,SQRT_OF_NEGATIVE): New macros.
27850         (DIVIDE_BY_ZERO): Use GMP_ERROR.
27851         (__mp_bases): #define to __MPN(mp_bases).
27853 2000-04-11  Linus Nordberg  <linus@swox.se>
27855         * tests/rand/stat.c (main): Initialize `l1runs' at declaration.
27857 2000-04-11  Kevin Ryde  <kevin@swox.se>
27859         * mpz/fib_ui.c: Add K&R function definitions.
27861         * mpbsd/tests/Makefile.am (TESTS): Add a dummy test to avoid a
27862         shell problem with an empty "for tst in $(TESTS) ; ...".
27863         * mpbsd/tests/dummy.c: New file.
27865 2000-04-10  Torbjorn Granlund  <tege@swox.com>
27867         * mpz/bin_uiui.c: Delete several unused variables.
27868         Add copyright notice.
27869         * mpz/bin_ui.c: Add copyright notice.
27871         * longlong.h: Declare __count_leading_zeros for alpha.
27873 2000-04-10  Linus Nordberg  <linus@swox.se>
27875         * rand.c (gmp_randinit): Change parameter list to (rstate, alg, ...).
27876         * gmp.h: Change prototype accordingly.
27877         * mpz/pprime_p.c (millerrabin): Change call accordingly.
27879         * configure.in: Check for `optarg'.
27880         * configure: Regenerate.
27882         * mpn/Makefile.am: Remove incorrect comment.
27883         * mpn/Makefile.in: Regenerate.
27885         * gmp.h: Rename most of the random number functions, structs and some
27886         of the struct members.
27887         * rand.c (gmp_randinit): Likewise.
27888         * randclr.c (gmp_randclear): Likewise.
27889         * randlc.c (gmp_randinit_lc): Likewise.
27890         * randlc2x.c (gmp_randinit_lc_2exp): Likewise.
27891         * randraw.c (lc): Likewise.
27892         (_gmp_rand_getraw): Likewise.
27893         * randsd.c (gmp_randseed): Likewise.
27894         * randsdui.c (gmp_randseed_ui): Likewise.
27895         * gmp.texi: Likewise.
27897         * gmp.texi: Use three hyphens for a dash.
27898         (Low-level Functions): Remove documentation for gmp_rand_getraw.
27899         (Random Number Functions): Add info on where to find documentation
27900         on the random number functions.
27902         * tests/rand/Makefile.am (test, bigtest): Quote argument to grep.
27903         * tests/rand/Makefile.in: Regenerate.
27905         * tests/rand/gen.c: Declare optarg, optind, opterr if not already
27906         declared.
27907         (main): Use new names for the random stuff.
27908         (main): Don't use strtoul() if we don't have it.  Use strtol()
27909         instead, if we have it.  Otherwise, use atoi().
27910         (main): Use srandom/srandomdev for __FreeBSD__ only.
27911         (main): Use new parameter order to gmp_randinit().
27913         * tests/rand/stat.c: Declare optarg, optind, opterr if not already
27914         declared.
27916 2000-04-10  Torbjorn Granlund  <tege@swox.com>
27918         * mpz/pprime_p.c: Pass 0L for mpz_scan1.  mpz_mmod => mpz_mod.
27919         (millerrabin): Use new random interface.
27920         (millerrabin): ... and don't forget to call gmp_randclear.
27922         * mpz/nextprime.c: New file.
27923         * gmp.h: Declare mpz_nextprime.
27924         * mpz/Makefile.am: List nextprime.c.
27925         * mpz/Makefile.in: Regenerate.
27926         * Makefile.am: List mpz/nextprime.lo.
27927         * Makefile.in: Regenerate.
27929 2000-04-10  Kevin Ryde  <kevin@swox.se>
27931         * move-if-change, mpz/tests/move-if-change, mpq/tests/move-if-change,
27932         mpf/tests/move-if-change: Remove, no longer used.
27934         * Makefile.am (SUBDIRS): Add tests, demos, mpbsd.
27935         (libmp.la): New target, conditional on WANT_MPBSD.
27936         (libgmp_la_LIBADD): Add -lm.
27937         (AUTOMAKE_OPTIONS): Add check-news.
27938         (include_HEADERS): Setup to install gmp.h and possibly mp.h.
27939         (DISTCLEANFILES): Add generated files.
27940         (check): Remove explicit target (now uses check-recursive).
27942         * configure.in: Use AM_CONFIG_HEADER.
27943         Add --enable-mpbsd setting automake conditional WANT_MPBSD.
27944         Output demos/Makefile, mpbsd/Makefile and mpbsd/tests/Makefile.
27946         * mpz/Makefile.am: Add SUBDIRS=tests, shorten INCLUDES since now
27947         using AM_CONFIG_HEADER.
27948         * mpq/Makefile.am: Ditto.
27949         * mpf/Makefile.am: Ditto, and add DISTCLEANFILES.
27950         * mpn/Makefile.am: Shorten INCLUDES, amend some comments.
27951         * mpz/tests/Makefile.am: Use TESTS and $(top_builddir).
27952         * mpf/tests/Makefile.am: Ditto.
27953         * mpq/tests/Makefile.am: Ditto.
27954         * demos/Makefile.am: New file.
27956         * mpbsd/Makefile.am: New file, derived from old mpbsd/Makefile.in.
27957         * mpbsd/Makefile.in: Now generated from Makefile.am.
27958         * mpbsd/realloc.c: Removed, use mpz/realloc.c instead.
27959         * mpbsd/tests/Makefile.am: New file.
27960         * mpbsd/tests/Makefile.in: New file, generated from Makefile.am.
27961         * mpbsd/tests/allfuns.c: New file.
27963         * gmp.texi (Top): Use @ifnottex, to help makeinfo --html.
27964         (Installing MP): Describe --enable-mpbsd and demo programs.
27966         * tests/rand/statlib.c: mpz_cmp_abs => mpz_cmpabs.
27968         * tests/rand/Makefile.am (LDADD): Don't need -lm (now in libgmp.la).
27969         (EXTRA_PROGRAMS): Not noinst_PROGRAMS.
27970         (INCLUDES): Shorten to -I$(top_srcdir) now using AM_CONFIG_HEADER.
27972 2000-04-09  Torbjorn Granlund  <tege@swox.com>
27974         * mpz/urandomm.c: Get type of count right.
27975         Simplify computation of nbits.
27977 2000-04-08  Torbjorn Granlund  <tege@swox.com>
27979         * mpz/urandomb.c: Fix reallocation condition.
27980         Simplify size computation.
27982 2000-04-08  Linus Nordberg  <linus@swox.se>
27984         * acinclude.m4 (GMP_CHECK_CC_64BIT): Add special handling for
27985         HPUX.
27986         (GMP_CHECK_ASM_W32): Ditto.
27987         * aclocal.m4: Regenerate.
27989         * mpn/Makefile.am: Use $(CCAS) for assembling.
27990         (.asm.obj): Add rule.
27991         * mpn/Makefile.in: Regenerate.
27993         * gmp.texi (Miscellaneous Integer Functions): Fix typos.
27995         * configure.in: Never pass `-h' to grep.
27996         (mips-sgi-irix6.[2-9]*): Try to find 64-bit compiler.
27997         (hppa1.0*-*-*): New flag for cc.
27998         (hppa2.0*-*-*): Try to find 64-bit compiler.  Chose path, set
27999         CCAS.
28000         * configure: Regenerate.
28002 2000-04-08  Torbjorn Granlund  <tege@swox.com>
28004         * mpz/bin_ui.c: Don't depend on ANSI C features.
28005         * mpz/bin_uiui.c: Likewise.
28007         * Makefile.am (MPZ_OBJECTS): mpz/cmp_abs* => mpz/cmpabs*.
28008         (MPQ_OBJECTS): Add mpq/set_d.lo.
28009         (MPZ_OBJECTS): Add mpz/fits*.lo.
28010         * Makefile.in: Regenerate.
28012         * mpz/cmpabs.c: New name for mpz/cmp_abs.c.
28013         * mpz/cmpabs_ui.c: New name for mpz/cmp_abs_ui.c.
28014         * mpz/Makefile.am: Corresponding changes.
28015         * mpz/Makefile.in: Regenerate.
28016         * gmp.h: mpz_cmp_abs* => mpz_cmpabs*.
28018         * mpz/addmul_ui.c (mpn_neg1): Don't depend on ANSI C features.
28020         * mpz/invert.c: Use TMP_MARK since we invoke MPZ_TMP_INIT.
28022         * gmp.h (mpq_set_d): Declare correctly.
28023         (mpz_root): Use _PROTO.
28024         (mpz_remove): Use _PROTO.
28025         (mpf_pow_iu): Use _PROTO.
28027         * mpn/asm-defs.m4 (MPN_PREFIX): Revert previous change.
28028         * gmp.h (__MPN): Revert previous change.
28030         * mpz/perfpow.c: De-ANSI-fy.  Add copyright notice.
28032         * mpz/set_d.c: Misc cleanups.
28034         * mpq/set_d: New file.
28035         * gmp.h: Declare mpq_set_d.
28036         * mpq/Makefile.am: List set_d.c.
28037         * mpq/Makefile.in: Regenerate.
28039 2000-04-07  Torbjorn Granlund  <tege@swox.com>
28041         * mpz/fits_sint_p.c: New file.
28042         * mpz/fits_slong_p.c: New file.
28043         * mpz/fits_sshort_p.c: New file.
28044         * mpz/fits_uint_p.c: New file.
28045         * mpz/fits_ulong_p.c: New file.
28046         * mpz/fits_ushort_p.c: New file.
28047         * gmp.h: Declare mpz_fits_*.
28048         * mpz/Makefile.am: List fits_* files.
28049         * mpz/Makefile.in: Regenerate.
28051 2000-04-06  Kevin Ryde  <kevin@swox.se>
28053         * gmp.texi (Installing MP): Add known build problem SunOS 4.1.4 m4
28054         failure.
28056         * mpn/x86/pentium/gmp-mparam.h: Tune thresholds.
28057         * mpn/x86/p6/gmp-mparam.h: Ditto.
28058         * mpn/x86/k6/gmp-mparam.h: Tune thresholds, add UMUL_TIME, UDIV_TIME.
28059         * mpn/x86/k7/gmp-mparam.h: Tune thresholds, amend UMUL_TIME.
28061         * mpn/generic/mul_n.c (mpn_kara_mul_n): Add an ASSERT.
28062         (mpn_kara_sqr_n): Add an ASSERT, use KARATSUBA_SQR_THRESHOLD.
28063         (mpn_toom3_sqr_n): Eliminate second evaluate3.
28065         * gmp-impl.h (mpn_com_n,MPN_LOGOPS_N_INLINE): Don't allow size==0.
28066         (tune_mul_threshold,tune_sqr_threshold): Conditionalize
28067         declarations on TUNE_PROGRAM_BUILD.
28069         * mpn/generic/sqr_basecase.c: Add an assert.
28071 2000-04-05  Torbjorn Granlund  <tege@swox.com>
28073         * gmp.h, mpn/asm-defs.m4: List the same functions for __MPN, but
28074         leave some commented out.
28076         * gmp-impl.h (MPN_LOGOPS_N_INLINE): Optimize.
28077         (mpn_com_n): Optimize.
28079         * gmp.h (__MPN): Make it use __gmpn instead of __mpn for consistency.
28080         * mpn/asm-defs.m4 (MPN_PREFIX): Likewise.
28082         * gmp.h (GMP_ERROR_ALLOCATE): New errcode.
28084         * gmp-impl.h (MPN_MUL_N_RECURSE): Delete.
28085         (MPN_SQR_RECURSE): Delete.
28087         * gmp-impl.h (TARGET_REGISTER_STARVED): New define.
28089         * gmp-impl.h (mpn_kara_sqr_n): Remap with __MPN.
28090         (mpn_toom3_sqr_n): Likewise.
28091         (mpn_kara_mul_n): Likewise.
28092         (mpn_toom3_mul_n): Likewise.
28093         (mpn_reciprocal): Likewise.
28095         * gmp-impl.h (__gmpn_mul_n): Remove declaration.
28096         (__gmpn_sqr): Likewise.
28097         * gmp.h (mpn_sqr_n): Declare/remap.
28098         * mpn/generic/mul.c (mpn_sqr_n): New name for mpn_sqr.
28100         * gmp.h (mpn_udiv_w_sdiv): Move __MPN remap from here...
28101         * gmp-impl.h: ...to here.
28103 2000-04-05  Linus Nordberg  <linus@swox.se>
28105         * gmp.texi (Top): Add `Random Number Functions' to menu.
28106         (Introduction to MP): Fix typo.
28107         (MP Basics): Create menu for all sections.  Move `Random Number
28108         Functions' to its own chapter.  Add nodes for all sections.
28109         (Function Classes): Mention random generation functions under
28110         miscellaneous.
28111         (Miscellaneous Integer Functions): Update mpz_urandomb,
28112         mpz_urandomm.
28113         (Low-level Functions): Remove mpn_rawrandom.
28114         (Random State Initialization): Update.
28116         * mpf/urandom.c (mpf_urandomb): Remove SIZE parameter.  Normalize
28117         result correctly.
28119         * gmp.h (mpf_urandomb): Remove SIZE parameter.
28121         * randraw.c (gmp_rand_getraw): Handle the case where (1) the LC
28122         scheme doesn't generate even limbs and (2) more than one LC
28123         invocation is necessary to produce the requested number of bits.
28125 2000-04-05  Torbjorn Granlund  <tege@swox.com>
28127         * mpn/generic/mul_n.c (INVERSE_3): New name for THIRD, define for
28128         any BITS_PER_MP_LIMB.
28129         (MP_LIMB_T_MAX): New.
28130         (mpn_divexact3_n): Remove.
28131         (interpolate3): Use mpn_divexact_by3 instead of mpn_divexact3_n.
28133 2000-04-05  Kevin Ryde  <kevin@swox.se>
28135         * gmp-impl.h (KARATSUBA_MUL_THRESHOLD<2): Remove cpp test.
28136         (tune_mul_threshold,tune_sqr_threshold): Add declarations, used in
28137         development only.
28139         * mpn/x86/k7/sqr_basecase.asm: New file, only a copy of k6 for now.
28141 2000-04-04  Torbjorn Granlund  <tege@swox.com>
28143         * gmp-impl.h (TOOM3_MUL_THRESHOLD): Provide default.
28144         (TOOM3_SQR_THRESHOLD): Provide default.
28146         * mpn/generic/mul_n.c: Rewrite (mostly by Robert Harley).
28147         * mpn/generic/mul.c: Rewrite (mostly by Robert Harley).
28149         * configure.in (sparcv9 64-bit OS): Set extra_functions.
28151 2000-04-04  Linus Nordberg  <linus@swox.se>
28153         * mpn/generic/rawrandom.c: Remove file and replace with randraw.c
28154         on top level.
28155         (mpn_rawrandom): Rename to gmp_rand_getraw.
28157         * randraw.c: New file; essentially a copy of
28158         mpn/generic/rawrandom.c.
28159         (gmp_rand_getraw): New function (formerly known as mpn_rawrandom).
28161         * mpz/urandomb.c (mpz_urandomb): Change mpn_rawrandom -->
28162         gmp_rand_getraw.
28163         * mpz/urandomm.c (mpz_urandomb): Ditto.
28164         * mpf/urandom.c (mpf_urandomb): Ditto.
28166         * gmp.h (gmp_rand_getraw): Add function prototype.
28167         (mpn_rawrandom): Remove function prototype.
28169         * Makefile.am (libgmp_la_SOURCES): Add randraw.c.
28170         * Makefile.in: Regenerate.
28172         * configure.in (gmp_mpn_functions): Remove rawrandom.
28173         * configure: Regenerate.
28175 2000-04-04  Linus Nordberg  <linus@swox.se>
28177         * gmp.h (GMP_ERROR enum): Remove comma after last enumeration
28178         since the AIX compiler (xlc) doesn't like that.
28180         * randlc.c (gmp_rand_init_lc): Allocate enough space for seed to
28181         hold any upcoming seed.
28182         * randlc2x.c (gmp_rand_init_lc_2exp): Likewise.
28184         * mpn/generic/rawrandom.c: Remove debugging code.
28185         (mpn_lc): Don't reallocate seed.
28187         * mpz/urandomm.c (mpz_urandomm): Implement function.
28189         * mpz/urandomb.c (mpz_urandomb): Fix typo in function definition.
28191 2000-04-04  Kevin Ryde  <kevin@swox.se>
28193         * make.bat: Removed (no longer works, no longer supported).
28194         * mpn/msdos/asm-syntax.h: Removed (was used only by make.bat).
28196 2000-04-03  Torbjorn Granlund  <tege@swox.com>
28198         * mpn/generic/brandom.c: New file, replacing random2.
28200 2000-04-02  Torbjorn Granlund  <tege@swox.com>
28202         * mpn/sparc32/v9/submul_1.asm: Change some carry-form instructions
28203         into their plain counterparts.
28205         * mpn/sparc64/copyi.asm: Avoid executing ALIGN.
28207         * mpn/sparc64/mul_1.asm: Handle overlap of rp/sp.
28208         * mpn/sparc64/addmul_1.asm: Likewise.
28209         * mpn/sparc64/submul_1.asm: Likewise.
28211 2000-04-01  Linus Nordberg  <linus@swox.se>
28213         * gmp.h: Fix function prototypes for randomization functions.
28214         (__gmp_rand_lc_scheme_struct): Replace `m' with `m2exp'. Remove
28215         unused `bits'.
28216         (__gmp_rand_data_lc): Add `m2exp' as another way of representing
28217         the modulus.
28218         (__gmp_rand_state_struct): Remove unused `size'.
28220         * rand.c (__gmp_rand_scheme): Use better multipliers.  Remove test
28221         schemes.  Replace `m' with `m2exp'.
28222         (gmp_rand_init): Change parameters and return type.  Use `m2exp'
28223         instead of `m'.  Set `gmp_errno' on error.  Disable BBS algorithm.
28225         * randlc.c (gmp_rand_init_lc): Don't use malloc().  Change
28226         parameters.
28228         * randclr.c (gmp_rand_clear): Don't use free().  Disable BBS
28229         algorithm.  Set `gmp_errno' on error.
28231         * randlc2x.c (gmp_rand_init_lc_2exp): New function.
28232         * randsd.c (gmp_rand_seed): New function.
28233         * randsdui.c (gmp_rand_seed_ui): New function.
28234         * randlcui.c: Remove unused file.
28236         * mpn/generic/rawrandom.c (mpn_rawrandom): Rewrite.
28237         (mpn_lc): New static function.
28239         * mpz/urandomb.c (mpz_urandomb): Use ABSIZ() instead of SIZ() for
28240         determining size of ROP.
28242         * mpf/urandom.c (mpf_urandomb): Add third parameter, nbits.  (Not
28243         used yet!)
28244         Change parameter order to mpn_rawrandom().
28246         * Makefile.am (libgmp_la_SOURCES): Add errno.c, randlc2x.c,
28247         randsd.c, randsdui.c.  Remove randui.c.
28248         (MPZ_OBJECTS): Rename urandom.lo --> urandomb.lo.  Add urandomm.lo.
28249         * Makefile.in: Regenerate.
28251         * mpz/Makefile.am (libmpz_la_SOURCES): Change urandom.c -->
28252         urandomb.c.  Add urandomm.c.
28253         * mpz/Makefile.in: Regenerate.
28255         * tests/rand/Makefile.am (noinst_PROGRAMS): Change findcl --> findlc.
28256         Add gen.static.
28257         * tests/rand/Makefile.in: Regenerate.
28259         * tests/rand/gen.c (main): Add mpz_urandomm.  Add command line options
28260         `-C', `-m', extend `-a'.  Use *mp*_*rand*() with new parameters.  Call
28261         gmp_rand_seed().
28263 2000-04-01  Kevin Ryde  <kevin@swox.se>
28265         * acinclude.m4 (GMP_CHECK_ASM_DATA): Plain .data for hpux.
28266         * configure.in (CCAS): No CFLAGS, they're added when it's used.
28267         (CONFIG_SRCDIR): New define for config.m4.
28268         * mpn/sparc64/addmul_1.asm: Use it for an include().
28269         * mpn/sparc64/submul_1.asm: Ditto.
28270         * mpn/sparc64/mul_1.asm: Ditto.
28272 2000-03-31  Linus Nordberg  <linus@swox.se>
28274         * mpz/urandom.c: Rename to...
28275         * mpz/urandomb.c: ...this.
28277         * mpz/urandomb.c (mpz_urandomb): Change operand order in call to
28278         mpn_rawrandom().  Use ABSIZ() instead of SIZ() when checking size
28279         of ROP.
28281         * mpz/urandomm.c: New file.
28283 2000-03-31  Kevin Ryde  <kevin@swox.se>
28285         * acinclude.m4 (GMP_CHECK_ASM_MMX): Give a warning when mmx code
28286         will be omitted.
28288 2000-03-30  Torbjorn Granlund  <tege@swox.com>
28290         * mpn/sparc64/mul_1h.asm: New file.
28291         * mpn/sparc64/addmul_1h.asm: New file.
28292         * mpn/sparc64/submul_1h.asm: New file.
28293         * mpn/sparc64/mul_1.asm: Rewrite.
28294         * mpn/sparc64/addmul_1.asm: Rewrite.
28295         * mpn/sparc64/submul_1.asm: Rewrite.
28297 2000-03-28  Torbjorn Granlund  <tege@swox.com>
28299         * mpn/sparc32/v9/mul_1.asm: Fix typo in branch prediction.
28300         * mpn/sparc32/v9/addmul_1.asm: Likewise.
28301         * mpn/sparc32/v9/submul_1.asm: Likewise.
28303 2000-03-25  Kevin Ryde  <kevin@swox.se>
28305         * mpn/lisp/gmpasm-mode.el: Fix some comment detection, use custom,
28306         fontify more keywords, turn into a standalone mode.
28308         * stamp-vti: New file, generated together with version.texi.
28310         * acinclude.m4 (GMP_VERSION,GMP_HEADER_GETVAL): New macros.
28311         * configure.in (AM_INIT_AUTOMAKE): Use GMP_VERSION.
28313 2000-03-24  Kevin Ryde  <kevin@swox.se>
28315         * INSTALL: Updates for new configure system.
28317         * configure.in: Add gmp_optcflags_gcc for the x86s, setting -mcpu
28318         and -march.
28320 2000-03-23  Torbjorn Granlund  <tege@swox.com>
28322         * demos/pexpr.c (mpz_eval_expr): Properly initialize rhs/lhs
28323         for ROOT.
28325 2000-03-23  Kevin Ryde  <kevin@swox.se>
28327         * config.guess (i?86:*:*:*): Use uname -m if detection program fails.
28329         * mpn/x86/README: Remove remarks on the now implemented MMX shifts.
28330         * mpn/x86/k6/README: Add speed of mpn_divexact_by3, update mpn_mul_1.
28332         * gmp.texi (Installing MP): Corrections to target CPUs.
28334         * version.c: Use VERSION from config.h, add copyright comment,
28335         restore "const" somehow lost.
28337         * configure.in (a29k*-*-*): Fix directory name.
28339 2000-03-22  Torbjorn Granlund  <tege@swox.com>
28341         * demos/pexpr.c (op_t): Add ROOT.
28342         (fns): Add ROOT.
28343         (mpz_eval_expr): Add ROOT.
28345         * mpz/root.c: Handle roots of negative numbers.
28346         Fix other border cases.
28347         Fix rare memory leakage.
28349         * errno.c: New file.
28351 2000-03-21  Torbjorn Granlund  <tege@swox.com>
28353         * gmp.h (error number enum): New anonymous enum.
28354         (gmp_errno): New.
28356         * gmp.h (__GNU_MP_VERSION, __GNU_MP_VERSION_MINOR): Bump for GMP 3.0.
28358 2000-03-20  Torbjorn Granlund  <tege@swox.com>
28360         * mpn/alpha/unicos.m4 (FLOAT64): New define.
28361         * mpn/alpha/default.m4 (FLOAT64): New define.
28362         * mpn/alpha/invert_limb.asm (C36): Use FLOAT64.
28364 2000-03-21  Kevin Ryde  <kevin@swox.se>
28366         * mpn/x86/k6/diveby3.asm: Tiny speedup.
28368         * acinclude.m4 (GMP_CHECK_ASM_SHLDL_CL): New macro.
28369         * configure.in: Use it, set WANT_SHLDL_CL in config.m4.
28370         * mpn/x86/x86-defs.m4 (shldl,shrdl,shldw,shrdw): New macros, using
28371         WANT_SHLDL_CL.
28372         * mpn/x86/k6/mmx/lshift.asm: Use shldl macro.
28373         * mpn/x86/k7/mmx/lshift.asm: Ditto.
28374         * mpn/x86/pentium/mmx/lshift.asm: Ditto.
28375         * mpn/x86/k6/mmx/rshift.asm: Use shrdl macro.
28376         * mpn/x86/k7/mmx/rshift.asm: Ditto.
28377         * mpn/x86/pentium/mmx/rshift.asm: Ditto.
28378         * mpn/x86/README.family: Add a note about this.
28380 2000-03-20  Linus Nordberg  <linus@swox.se>
28382         * mpn/generic/rawrandom.c (mpn_rawrandom): Handle seed value of 0
28383         correctly.
28385         * configure.in: Fix detection of alpha flavour.
28386         Set compiler options for `sparcv8'.
28387         * configure: Regenerate.
28389         * rand.c (__gmp_rand_scheme): Clean up some.  Use slightly better
28390         multipliers.
28392         * configure.in (AC_OUTPUT): Add tests/Makefile and
28393         tests/rand/Makefile.
28395         * acinclude.m4 (AC_CANONICAL_BUILD): Define to
28396         `_AC_CANONICAL_BUILD' to deal with incompatibilities between
28397         Autoconf and Libtool.
28398         (AC_CHECK_TOOL_PREFIX): Likewise.
28400         * Makefile.am (EXTRA_DIST): Add directory `tests'.
28402         * mkinstalldirs: Update (Automake 2000-03-17).
28403         * ltconfig: Update (Libtool 2000-03-17).
28404         * ltmain.sh: Ditto.
28406         * configure: Regenerate with new autoconf/-make/libtool suite.
28407         * aclocal.m4: Ditto.
28408         * config.in: Ditto.
28409         * all Makefile.in's: Ditto.
28411 2000-03-20  Torbjorn Granlund  <tege@swox.com>
28413         * demos/pexpr.c (main): Don't allow `-N' for base, require `-bN'.
28415         * mpn/alpha/unicos.m4 (cvttqc): New define.
28416         * mpn/alpha/invert_limb.asm: Use new define for cvttqc.
28418 2000-03-19  Kevin Ryde  <kevin@swox.se>
28420         * mpn/x86/k6/sqr_basecase.asm: Tiny amendments for 3x3 case.
28422         * gmp.texi: Use @include version.texi.
28423         Use @email and @uref.
28424         (Installing MP): Rewrite for new configure.
28425         (Low-level Functions): Add mpn_divexact_by3.
28427         * configure.in (--enable-alloca): New option.
28428         * acconfig.h (USE_STACK_ALLOC): For --disable-alloca.
28430 2000-03-18  Kent Boortz  <kent@swox.com>
28432         * macos: New directory with macos port files.
28434 2000-03-17  Torbjorn Granlund  <tege@swox.com>
28436         * gmp-impl.h (union ieee_double_extract): Check _CRAYMPP.
28438         * mpn/asm-defs.m4 (invert_normalized_limb): Define.
28440         * mpn/alpha: Translate `.s' files to `.asm'.
28442         * configure: Regenerate.
28444         * mpn/alpha/invert_limb.asm: Replace dash in file name with underscore.
28445         * configure.in: Corresponding change.
28447         * configure.in: Assign special "path" for alphaev6.
28449         * mpn/alpha/unicos.m4: New file.
28450         * configure.in (alpha*-cray-unicos*): [This part of the change
28451         commited 2000-03-13 by linus]
28452         * mpn/alpha/default.m4: New file.
28453         * configure.in (alpha*-*-*): Use it.
28455 2000-03-17  Kevin Ryde  <kevin@swox.se>
28457         * mpn/x86/pentium/rshift.S: Use plain rcrl (not rcrl $1) for
28458         shift-by-1 case, significant speedup.
28459         * mpn/x86/pentium/README: Add shift-by-1 speed.
28461 2000-03-16  Torbjorn Granlund  <tege@swox.com>
28463         * config.guess: Handle Cray T3D/E.
28465 2000-03-15  Kevin Ryde  <kevin@swox.se>
28467         * mpn/generic/diveby3.c: New file.
28468         * mpn/x86/diveby3.asm: New file.
28469         * mpn/x86/k6/diveby3.asm: New file.
28470         * gmp.h (mpn_divexact_by3): Prototype and define.
28471         * mpn/asm-defs.m4: define_mpn(divexact_by3).
28472         * configure.in (gmp_mpn_functions): Add diveby3.
28474         * mpn/x86/pentium/sqr_basecase.asm: A few better addressing modes.
28476         * configure.in: Add AC_C_STRINGIZE and AC_CHECK_TYPES((void)).
28477         * gmp-impl.h (ASSERT): Use them.
28479         * mpn/x86/k7/mmx/lshift.asm: New file.
28480         * mpn/x86/k7/mmx/rshift.asm: Rewrite simple loop and return value
28481         handling, add some pictures.
28483 2000-03-14  Torbjorn Granlund  <tege@swox.com>
28485         * mpn/sparc32/v8/mul_1.asm: Make PIC actually work.
28486         * mpn/sparc32/v8/addmul_1.asm: Likewise.
28488         * mpn/sparc32/v8/mul_1.asm: Use m4 ifdef, not cpp #if.
28489         * mpn/sparc32/v8/addmul_1.asm: Likewise.
28491         * mpn/asm-defs.m4 (C): New define for comments.
28492         * mpn/sparc32: Start comments with `C'.
28494         * config.guess: Remove `SunOS 6' handling.
28495         Recognize sun4m and sun4d architectures under old SunOS.
28497 2000-03-14  Linus Nordberg  <linus@swox.se>
28499         * configure.in (gmp_srclinks): Set to list of links created by
28500         configure.
28501         * configure: Regenerate.
28503         * Makefile.am (libgmp_la_LDFLAGS): Set version info.
28504         (DISTCLEANFILES): Include @gmp_srclinks@.
28505         * Makefile.in: Regenerate.
28507 2000-03-13  Linus Nordberg  <linus@swox.se>
28509         * configure.in: Remove some changequote's by quoting the strings
28510         containing `[]'.
28511         Add support for `alpha*-cray-unicos*'.
28512         AC_DEFINE `_LONG_LONG_LIMB' instead of passing it in CFLAGS.
28513         Conditionalize the assembler syntax checks.
28514         * configure: Regenerate.
28515         * config.in: Regenerate.
28517         * acinclude.m4 (GMP_PROG_CCAS): Remove macro.
28518         * aclocal.m4: Regenerate.
28520 2000-03-13  Kevin Ryde  <kevin@swox.se>
28522         * mpn/x86/p6/README: New file.
28524         * mpn/x86/k6/mul_1.asm: Rewrite, smaller and slightly faster.
28526         * mpn/lisp/gmpasm-mode.el: Rewrite assembler comment detection and
28527         handling.
28529         * configure.in: Separate mmx directories for each x86 flavour.
28530         * configure: Regenerate.
28532 2000-03-12  Kevin Ryde  <kevin@swox.se>
28534         * mpn/x86/x86-defs.m4 (ALIGN): Supplement definition from
28535         config.m4 so as to pad with nops not zeros on old gas.
28537         * mpn/x86/k7/mmx/copyd.asm: Use plain emms (femms is just an alias
28538         for emms now).
28539         * mpn/x86/k7/mmx/copyi.asm: Ditto.
28540         * mpn/x86/k7/mmx/rshift.asm: Ditto.
28541         * mpn/x86/x86-defs.m4: Amend comments.
28543         * mpn/x86/mod_1.asm: Add comments on speeds.
28545         * mpn/x86/pentium/mmx/lshift.asm: New file.
28546         * mpn/x86/pentium/mmx/rshift.asm: New file.
28547         * mpn/x86/pentium/README: Add speeds of various routines.
28549 2000-03-10  Linus Nordberg  <linus@swox.se>
28551         * configure.in: Reorganize.
28552         Use AC_CHECK_TOOL to find `ar'.
28553         Add post-includes `regmap.m4' and `aix.m4' for AIX targets.
28554         asm-syntax.h is not needed for PPC or sparc anymore.
28555         (powerpc64-*-aix*): Compiler is always 64-bit. Use `-q64
28556         -qtune=pwr3' to xlc and `-maix64 -mpowerpc64' to gcc.  Pass `-X
28557         64' to `ar' and `nm'.
28558         (pentiummmx): Use GMP_CHECK_ASM_MMX and avoid MMX assembly path if
28559         assembler is not MMX capable.
28560         (pentium[23]): Likewise.
28561         (athlon): Likewise.
28562         (k6*): Likewise.
28563         * configure: Regenerate.
28565         * acinclude.m4 (GMP_PROG_CC_WORKS): New macro.
28566         (GMP_PROG_CC_FIND): Use GMP_PROG_CC_WORKS instead of
28567         AC_TRY_COMPILER.  Make sure that the *first* working 32-bit
28568         compiler is used if no 64-bit compiler is found.
28569         (GMP_CHECK_ASM_MMX): New macro.
28570         * aclocal.m4: Regenerate.
28572         * Makefile.in: Regenerate.  (CC_TEST removed.)
28573         * mpf/Makefile.in: Likewise.
28574         * mpn/Makefile.in: Likewise.
28575         * mpq/Makefile.in: Likewise.
28576         * mpz/Makefile.in: Likewise.
28577         * mpf/tests/Makefile.in: Likewise.
28578         * mpq/tests/Makefile.in: Likewise.
28579         * mpz/tests/Makefile.in: Likewise.
28581         * acconfig.h (_LONG_LONG_LIMB): Add.
28583         * gmp-impl.h: Include config.h only if HAVE_CONFIG_H is defined.
28585 2000-03-09  Kevin Ryde  <kevin@swox.se>
28587         * mpn/x86/pentium/mul_basecase.S: Small speedup by avoiding an AGI.
28589         * mpn/x86/k7/mmx/copyd.asm: Tiny speedup by avoiding popl.
28590         * mpn/x86/k7/mmx/copyi.asm: Ditto.
28591         * mpn/x86/k7/mul_basecase.asm: Ditto.
28593 2000-03-07  Torbjorn Granlund  <tege@swox.com>
28595         * config.guess: Better recognize POWER/PowerPC processor type.
28597 2000-03-07  Kevin Ryde  <kevin@swox.se>
28599         * mpn/generic/addsub_n.c: Use HAVE_NATIVE_* now in config.h.
28601         * mpn/asm-defs.m4: Add comments about SysV m4.
28602         (m4_log2): Don't use <<.
28603         (m4_lshift,m4_rshift): New macros.
28605 2000-03-06  Torbjorn Granlund  <tege@swox.com>
28607         * mpn/powerpc32/regmap.m4: Map cr0 => `0', etc.
28609 2000-03-06  Kevin Ryde  <kevin@swox.se>
28611         * mpn/tests/ref.c (refmpn_divexact_by3): New function.
28612         * mpn/tests/ref.h: Prototype.
28614         * acconfig.h (WANT_ASSERT): New define.
28615         * configure.in (--enable-assert): Turn on WANT_ASSERT.
28616         * assert.c: New file.
28617         * Makefile.am: Add to build.
28618         * gmp-impl.h (ASSERT): New macro.
28619         (ASSERT_NOCARRY) Renamed from assert_nocarry.
28620         (MPZ_CHECK_FORMAT): Use ASSERT_ALWAYS.
28621         * mpn/tests/ref.c: Use ASSERT.
28622         * mpf/get_str.c: Use ASSERT_ALWAYS.
28623         * mpf/set_str.c: Remove old assert macro.
28625         * mpn/x86/x86-defs.m4 (cmovnz_ebx_ecx): New macro.
28626         * mpn/x86/p6/aorsmul_1.asm: Use cmov.
28628         * mpn/x86/lshift.S: Use %dl with testb, not %edx. No object code
28629         change, testb was still getting generated.
28630         * mpn/x86/rshift.S: Ditto.
28632 2000-03-03  Torbjorn Granlund  <tege@swox.com>
28634         * longlong.h: Add IA-64 support.
28636         * mpn/powerpc32: Misc cleanups.
28637         * mpn/powerpc32/aix.m4: New file (mainly by Linus).
28638         * mpn/powerpc64/aix.m4: New file (mainly by Linus).
28639         * mpn/powerpc64: Translate `.S' files to `.asm'.
28641         * configure.in: Fix tyops.
28642         * configure: Regenerate.
28644 2000-03-02  Torbjorn Granlund  <tege@swox.com>
28646         * mpn/powerpc32/regmap.m4: New file.
28647         * mpn/powerpc32: Translate `.S' files to `.asm'.
28648         * configure.in: Use mpn/powerpc32/regmap.m4 for powerpc targets
28649         except some weird ones.
28651 2000-03-03  Kevin Ryde  <kevin@swox.se>
28653         * mpn/lisp/gmpasm-mode.el: Suppress postscript comment prefixes in
28654         filladapt.
28656         * mpn/x86/pentium/sqr_basecase.asm: New file.
28657         * mpn/x86/pentium/gmp-mparam.h (KARATSUBA_SQR_THRESHOLD): Update.
28659         * configure.in: Add --enable-assert, enable k6 logops functions.
28661         * mpn/x86/k6/mmx/copyi.asm: Use m4 for divide, not as.
28662         * mpn/x86/k6/mmx/copyd.asm: Ditto.
28663         * mpn/x86/README.family: Add a note on this.
28665 2000-03-02  Kevin Ryde  <kevin@swox.se>
28667         * mpn/x86/k6/aors_n.asm: Don't use stosl.
28668         * mpn/x86/copyi.asm: Use cld to clear direction flag.
28669         * mpn/x86/divrem_1.asm: Ditto.
28670         * mpn/x86/README.family: Add a note on this.
28672         * mpn/x86/k6/mmx/copyi.asm: Rewrite.
28673         * mpn/x86/k6/mmx/copyd.asm: New file.
28674         * mpn/x86/k6/README: Update, and small amendments.
28676         * mpn/x86/x86-defs.m4 (Zdisp): New macro.
28677         * mpn/asm-defs.m4 (m4_stringequal_p): New macro.
28679         * mpn/x86/p6/aorsmul_1.asm: Use Zdisp to force zero displacements.
28680         * mpn/x86/k6/aorsmul_1.asm: Ditto.
28681         * mpn/x86/k6/mul_1.asm: Ditto.
28682         * mpn/x86/k6/mul_basecase.asm: Ditto.
28683         * mpn/x86/k7/aors_n.asm: Ditto.
28684         * mpn/x86/k7/aorsmul_1.asm: Ditto.
28685         * mpn/x86/k7/mul_1.asm: Ditto.
28686         * mpn/x86/k7/mul_basecase.asm: Ditto.
28687         * mpn/x86/README.family: Add a note on this.
28689 2000-02-27  Kevin Ryde  <kevin@swox.se>
28691         * mpn/generic/divrem.c (mpn_divrem_classic): Patch to avoid gcc
28692         2.7.2.3 i386 register handling bug.
28694         * mpn/x86/k6/aors_n.asm: Rewrite.
28695         * mpn/x86/k6/mmx/lshift.asm: Rewrite.
28696         * mpn/x86/k6/mmx/rshift.asm: Rewrite.
28697         * mpn/x86/k6/README: Update.
28699         * mpn/x86/k7/mmx/copyd.asm: Support size==0.
28700         * mpn/x86/k7/mmx/copyi.asm: Ditto.
28701         * mpn/x86/k6/mmx/copyi.asm: Ditto.
28702         * gmp-impl.h: Comment size==0 allowed in MPN_COPY_INCR and
28703         MPN_COPY_DECR.
28704         * configure.in: Enable x86 copyi, copyd; add k6 com_n.
28706 2000-02-25  Torbjorn Granlund  <tege@swox.com>
28708         * demos/pexpr.c (power): Move factorial handing code from `factor'
28709         to `power'.
28711         * demos/factorize.c (factor_using_pollard_rho): Move resetting of `c'
28712         to before checking for a non-zero gcd.
28714 2000-02-25  Kevin Ryde  <kevin@swox.se>
28716         * mpn/asm-defs.m4 (MULFUNC_PROLOGUE): New macro by Linus.
28717         * mpn/x86/k6/aors_n.asm: Use MULFUNC_PROLOGUE.
28718         * mpn/x86/k6/aorsmul_1.asm: Ditto.
28719         * mpn/x86/k7/aors_n.asm: Ditto.
28720         * mpn/x86/k7/aorsmul_1.asm: Ditto.
28721         * mpn/x86/p6/aorsmul_1.asm: Ditto.
28723         * mpn/tests/ref.c (refmpn_copyi,refmpn_copyd): Allow size==0.
28725         * gmp-impl.h: Move mpn_and_n, mpn_andn_n, mpn_com_n, mpn_ior_n,
28726         mpn_iorn_n, mpn_nand_n, mpn_nior_n, mpn_xor_n and mpn_xorn_n here
28727         from gmp.h.  Use HAVE_NATIVE_mpn_* to make these functions or
28728         inlines.
28730         * gmp-impl.h: Move mpn_copyd, mpn_copyi here from gmp.h.
28731         * gmp-impl.h (MPN_COPY_INCR): Use mpn_copyi if available.
28732         * gmp-impl.h (MPN_COPY_DECR): Use mpn_copyd if available.
28734         * mpn/x86/k6/mmx/com_n.asm: Moved into mmx subdirectory.
28735         * mpn/x86/k6/mmx/copyi.asm: Ditto.
28736         * mpn/x86/k6/mmx/lshift.asm: Ditto.
28737         * mpn/x86/k6/mmx/rshift.asm: Ditto.
28738         * mpn/x86/k7/mmx/rshift.asm: Ditto.
28739         * mpn/x86/k6/mmx/logops_n.asm: New file.
28740         * configure.in (k6*-*-*): Add logops_n.asm.
28741         * mpn/x86/k6/README: Update.
28743         * mpn/x86/k7/mmx/copyi.asm: New file.
28744         * mpn/x86/k7/mmx/copyd.asm: New file.
28745         * mpn/x86/k7/README: Update.
28747 2000-02-24  Kevin Ryde  <kevin@swox.se>
28749         * mpn/x86/x86-defs.m4 (femms): Generate emms if 3dnow not available.
28750         * mpn/x86/x86-defs.m4 (FRAME_popl): New macro.
28752         * Makefile.am: Add info_TEXINFOS = gmp.texi
28754         * mpn/x86/divrem_1.asm: Moved from mpn/x86/k6, allow size==0,
28755         conditionalize loop versus decl/jnz.
28756         * mpn/x86/mod_1.asm: Ditto.
28757         * mpn/x86/divmod_1.asm: Removed.
28758         * gmp.texi (mpn_divrem_1,mpn_mod_1): Add that size==0 is allowed.
28759         * mpn/tests/ref.c (refmpn_divrem_1c,etc): Allow size==0.
28761         * mpn/x86/k6/aors_n.asm: Avoid gas 1.92.3 leal displacement
28762         expression problem.
28763         * mpn/x86/k6/aorsmul_1.asm: Ditto.
28764         * mpn/x86/k6/mul_1.asm: Ditto.
28765         * mpn/x86/k6/mul_basecase.asm: Ditto
28766         * mpn/x86/k7/aors_n.asm: Ditto.
28767         * mpn/x86/k7/aorsmul_1.asm: Ditto.
28768         * mpn/x86/k7/mul_1.asm: Ditto.
28769         * mpn/x86/k7/mul_basecase.asm: Ditto.
28770         * mpn/x86/k7/rshift.asm: Ditto.
28771         * mpn/x86/p6/aorsmul_1.asm: Ditto.
28772         * mpn/x86/README.family: Describe problem.
28774 2000-02-24  Linus Nordberg  <linus@swox.se>
28776         * acinclude.m4 (GMP_CHECK_ASM_LSYM_PREFIX): Add dummy symbol to
28777         testcase to avoid nm failure.  Try nm before piping to grep.
28779         * acconfig.h: Undef HAVE_NATIVE_func for every mpn function found
28780         in gmp.h.
28782         * configure.in: Invoke AC_CONFIG_HEADERS.
28783         Don't invoke AM_CONFIG_HEADER; it makes autoconf confused.
28784         Dig out entry points declared in assembly code and AC_DEFINE proper
28785         HAVE_NATIVE_func.
28787         * mpn/asm-defs.m4 (MULFUNC_PROLOGUE): New macro.
28789         * mpn/x86/p6/aorsmul_1.asm: Use MULFUNC_PROLOGUE.
28790         * mpn/x86/k6/aors_n.asm: Likewise.
28792         * Makefile.am (EXTRA_DIST): Add config.in; needed when we don't
28793         use AM_CONFIG_HEADER in configure.in.
28795         * mpn/Makefile.am (INCLUDES): Add `-I..' for config.h and
28796         gmp-mparam.h.
28797         * mpf/Makefile.am: Likewise.
28798         * mpq/Makefile.am: Likewise.
28799         * mpz/Makefile.am: Likewise.
28801         * mpf/tests/Makefile.am (INCLUDES): Add `-I../..' for config.h and
28802         gmp-mparam.h.
28803         * mpq/tests/Makefile.am: Likewise.
28804         * mpz/tests/Makefile.am: Likewise.
28806         * configure: Regenerate.
28807         * aclocal.m4: Regenerate.
28808         * config.in: Regenerate.
28809         * Makefile.in: Regenerate.
28810         * mpf/Makefile.in: Regenerate.
28811         * mpn/Makefile.in: Regenerate.
28812         * mpq/Makefile.in: Regenerate.
28813         * mpz/Makefile.in: Regenerate.
28814         * mpf/tests/Makefile.in: Regenerate.
28815         * mpq/tests/Makefile.in: Regenerate.
28816         * mpz/tests/Makefile.in: Regenerate.
28818 2000-02-23  Kevin Ryde  <kevin@swox.se>
28820         * mpn/x86/addmul_1.S: Amend comments, this code no longer used by
28821         PentiumPro.
28822         * mpn/x86/submul_1.S: Ditto.
28824         * mpn/x86/k6/com_n.asm: Rewrite, smaller but same speed.
28826         * mpn/x86/addmul_1.S: Add PROLOGUE and EPILOGUE to get .type and
28827         .size for ELF.  Rename #define size to n to avoid .size.
28828         * mpn/x86/lshift.S: Ditto.
28829         * mpn/x86/mul_1.S: Ditto.
28830         * mpn/x86/mul_basecase.S: Ditto.
28831         * mpn/x86/rshift.S: Ditto.
28832         * mpn/x86/submul_1.S: Ditto.
28833         * mpn/x86/udiv.S: Ditto.
28834         * mpn/x86/umul.S: Ditto.
28835         * mpn/x86/pentium/add_n.S: Ditto.
28836         * mpn/x86/pentium/addmul_1.S: Ditto.
28837         * mpn/x86/pentium/lshift.S: Ditto.
28838         * mpn/x86/pentium/mul_1.S: Ditto.
28839         * mpn/x86/pentium/mul_basecase.S: Ditto.
28840         * mpn/x86/pentium/rshift.S: Ditto.
28841         * mpn/x86/pentium/sub_n.S: Ditto.
28842         * mpn/x86/pentium/submul_1.S: Ditto.
28844 2000-02-22  Linus Nordberg  <linus@swox.se>
28846         * acinclude.m4 (GMP_INIT): Use temporary file cnfm4p.tmp for
28847         post-defines.
28848         (GMP_FINISH): Ditto.
28849         (GMP_DEFINE): Add third optional argument specifying location in
28850         outfile.
28851         (GMP_DEFINE_RAW): New macro.
28852         * aclocal.m4: Regenerate.
28854         * configure.in: Add `HAVE_TARGET_CPU_$target_cpu' using
28855         GMP_DEFINE_RAW.
28856         * configure: Regenerate.
28858         * mpz/tests/Makefile.am: New test t-root.
28859         * mpz/tests/Makefile.in: Regenerate.
28861 2000-02-22  Torbjorn Granlund  <tege@swox.com>
28863         * mpz/root.c: Complete rewrite; still primitive, but at least correct.
28864         * mpz/tests/t-root.c: New test.
28866 2000-02-22  Kevin Ryde  <kevin@swox.se>
28868         * mpn/x86/k7/mul_basecase.asm: New file.
28869         * mpn/x86/k7/README: Add mpn_mul_basecase speed.
28870         * mpn/x86/k7/gmp-mparam.h: New file.
28872         * mpn/x86/x86-defs.m4 (loop_or_decljnz,cmov_bytes): New macros.
28873         * mpn/asm-defs.m4 (m4_ifdef_anyof_p): New macro.
28875         * mpn/x86/k6/aorsmul_1.asm: New file.
28876         * mpn/x86/k6/addmul_1.S: Removed (was a copy of pentium version).
28877         * mpn/x86/k6/submul_1.S: Removed (was a copy of pentium version).
28879         * mpn/x86/p6/aorsmul_1.asm: Use OPERATION_addmul_1 and
28880         OPERATION_submul_1.
28881         * mpn/x86/k6/aors_n.asm: Use OPERATION_add_n and OPERATION_sub_n.
28882         * configure.in: Declare multi-function files for k6 and p6.
28884         * configure.in: Add HAVE_TARGET_CPU_$target_cpu for config.m4.
28885         * mpn/asm-defs.m4 (define_not_for_expansion): New macro.
28887         * mpn/generic/divrem_1n.c (__gmpn_divrem_1n): New file, split from
28888         mpn/generic/divrem_1.c.
28889         * mpn/generic/divrem_1.c: Ditto.
28890         * configure.in (gmp_mpn_functions): Ditto.
28892 2000-02-21  Torbjorn Granlund  <tege@swox.com>
28894         * gmp.h: Undo 1996-10-06 NeXT change, it was clearly improperly
28895         written.
28897 2000-02-21  Linus Nordberg  <linus@swox.se>
28899         * configure.in: Link <src>/mpn/asm-defs.m4 to <build>mpn/asm.m4.
28900         * configure: Regenerate.
28902 2000-02-21  Linus Nordberg  <linus@swox.se>
28904         * mpn/x86/k7/aorsmul_1.asm: Change OPERATION_ADDMUL -->
28905         OPERATION_addmul_1.  Change OPERATION_SUBMUL -->
28906         OPERATION_submul_1.
28908         * mpn/x86/k7/aors_n.asm: Change OPERATION_ADD --> OPERATION_add_n.
28909         Change OPERATION_SUB --> OPERATION_sub_n.
28911         * mpn/Makefile.am: Pass -DOPERATION_$* to preprocessors.
28912         * mpn/Makefile.in: Regenerate.
28914         * configure.in: Symlink mpn/asm-defs.m4 to build-dir/mpn.  Link
28915         multi-function files to mpn/<function>.asm and remove function
28916         name from `gmp_mpn_functions'.
28917         * configure: Regenerate.
28919         * acinclude.m4 (GMP_FINISH): Tell user what we're doing.
28920         * aclocal.m4: Regenerate.
28922 2000-02-21  Kevin Ryde  <kevin@swox.se>
28924         * gmp-impl.h: Rename __gmpn_mul_basecase to mpn_mul_basecase and
28925         __gmpn_sqr_basecase to mpn_sqr_basecase, remove __gmpn prototypes.
28926         * mpn/x86/mul_basecase.S: Ditto.
28927         * mpn/x86/pentium/mul_basecase.S: Ditto.
28929         * configure.in (gmp_m4postinc): Use x86-defs.m4 on athlon-*-* too.
28931 2000-02-20  Kevin Ryde  <kevin@swox.se>
28933         * acinclude.m4 (GSYM_PREFIX): Drop $1, change by Linus.
28934         * mpn/asm-defs.m4 (PROLOGUE,EPILOGUE): Use GSYM_PREFIX as a
28935         string, change by Linus.
28936         * mpn/x86/x86-defs.m4: Use GSYM_PREFIX as a string.
28938         * mpn/x86/k6/gmp-mparam.h: New file.
28939         * mpn/asm-defs.m4 (m4_warning): New macro.
28941         * mpn/x86/README: Amendments per new code and directories.
28942         * mpn/x86/README.family: New file.
28943         * mpn/x86/k6/README: New file.
28944         * mpn/x86/k7/README: New file.
28946         * mpn/generic/mul_n.c: Rename __gmpn_mul_basecase to
28947         mpn_mul_basecase and __gmpn_sqr_basecase to mpn_sqr_basecase.
28948         * mpn/generic/mul_basecase.c: Ditto.
28949         * mpn/generic/sqr_basecase.c: Ditto.
28950         * mpn/generic/mul.c: Ditto.
28952 2000-02-19  Linus Nordberg  <linus@swox.se>
28954         * configure.in: Don't try to symlink more than one multi-func
28955         file.
28956         * configure: Regenerate.
28958 2000-02-18  Linus Nordberg  <linus@swox.se>
28960         * acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): GMP_DEFINE
28961         `GSYM_PREFIX'.  Run ACTIONs even when value is found in cache.
28962         (GMP_CHECK_ASM_ALIGN_LOG): GMP_DEFINE `ALIGN'.  Run ACTIONs even
28963         when value is found in cache.
28964         * aclocal.m4: Regenerate.
28966         * configure.in: Don't define GSYM_PREFIX or ALIGN.
28967         Add mechanism for multi-function files.
28968         * configure: Regenerate.
28970 2000-02-18  Kevin Ryde  <kevin@swox.se>
28972         * configure.in (gmp_m4postinc): Enable x86-defs.m4.
28973         * mpn/x86/k7/mul_1.asm: Fix include.
28974         * mpn/x86/k6/mul_basecase.S: Removed (copy of the pentium version).
28975         * mpn/x86/k6/mul_basecase.asm: New file.
28976         * mpn/x86/k6/sqr_basecase.asm: New file.
28977         * mpn/x86/k6/com_n.asm: New file.
28978         * mpn/x86/k6/copyi.asm: New file.
28979         * gmp.texi (Low-level Functions): Clarify mpn overlaps permitted.
28980         * gmp-impl.h (MPN_OVERLAP_P): New macro.
28981         * gmp-impl.h (assert_nocarry): New macro.
28982         * mpn/tests/ref.c: New file, based in part on other mpn/tests/*.c.
28983         * mpn/tests/ref.h: New file.
28985 2000-02-17  Linus Nordberg  <linus@swox.se>
28987         * Makefile.am (dist-hook): Don't include any emacs backup files
28988         (*.~*) in dist.
28989         * Makefile.in: Regenerate.
28991 2000-02-17  Torbjorn Granlund  <tege@swox.com>
28993         * mpn/sparc32/v9/mul_1.asm: Use `rd' to get current PC; get rid of
28994         getpc function.
28995         * mpn/sparc32/v9/addmul_1.asm: Likewise.
28996         * mpn/sparc32/v9/submul_1.asm: Likewise.
28998 2000-02-17  Kevin Ryde  <kevin@swox.se>
29000         * gmp.h: Add prototypes and defines for mpn_and_n, mpn_andn_n,
29001         mpn_com_n, mpn_copyd, mpn_copyi, mpn_ior_n, mpn_iorn_n,
29002         mpn_mul_basecase, mpn_nand_n, mpn_nior_n, mpn_sqr_basecase,
29003         mpn_xor_n, mpn_xorn_n.
29005         * mpn/asm-defs.m4: Many additions making up initial version.
29006         * mpn/asm-defs.m4 (L): Use defn(`LSYM_PREFIX').
29007         * mpn/x86/x86-defs.m4: New file.
29008         * mpn/x86/k6/aors_n.asm: New file.
29009         * mpn/x86/k6/divmod_1.asm: New file.
29010         * mpn/x86/k6/divrem_1.asm: New file.
29011         * mpn/x86/k6/lshift.S: Removed (was a copy of the pentium version).
29012         * mpn/x86/k6/lshift.asm: New file.
29013         * mpn/x86/k6/mod_1.asm: New file.
29014         * mpn/x86/k6/mul_1.S: Removed (was a copy of the pentium version).
29015         * mpn/x86/k6/mul_1.asm: New file.
29016         * mpn/x86/k6/rshift.S: Removed (was a copy of the pentium version).
29017         * mpn/x86/k6/rshift.asm: New file.
29018         * mpn/x86/k7/aors_n.asm: New file.
29019         * mpn/x86/k7/aorsmul_1.asm: New file.
29020         * mpn/x86/k7/mul_1.asm: New file.
29021         * mpn/x86/k7/rshift.asm: New file.
29022         * mpn/x86/p6/aorsmul_1.asm: New file.
29023         * mpn/x86/copyi.asm: New file.
29024         * mpn/x86/copyd.asm: New file.
29025         * mpn/lisp/gmpasm-mode.el: New file.
29027 2000-02-16  Torbjorn Granlund  <tege@swox.com>
29029         * mpn/sparc32/v9/mul_1.asm: Conditionalize for PIC.
29030         * mpn/sparc32/v9/addmul_1.asm: Likewise.
29031         * mpn/sparc32/v9/submul_1.asm: Likewise.
29032         * mpn/sparc32/v8/supersparc/udiv.asm: Likewise.
29033         * mpn/sparc32/udiv_fp.asm: Likewise.
29035 2000-02-16  Linus Nordberg  <linus@swox.se>
29037         * configure.in: Add mechanism for including target specific
29038         m4-files in config.m4.
29039         * configure: Regenerate.
29041         * acinclude.m4 (GMP_PROG_CCAS): Begin assembly lines (except
29042         labels) with a tab character.  HP-UX demands it.
29043         (GMP_CHECK_ASM_SIZE): Ditto.
29044         (GMP_CHECK_ASM_LSYM_PREFIX): Ditto.
29045         (GMP_CHECK_ASM_LABEL_SUFFIX): Set to empty string for HP-UX.
29046         (GMP_CHECK_ASM_GLOBL): Change `.xport' --> `.export'.
29047         * aclocal.m4: Regenerate.
29049 2000-02-16  Linus Nordberg  <linus@swox.se>
29051         * acinclude.m4 (GMP_CHECK_ASM_LSYM_PREFIX): Define LSYM_PREFIX as
29052         the prefix only, no argument.
29053         * aclocal.m4: Regenerate.
29054         * configure: Regenerate.
29056         * mpn/asm-defs.m4 (L): No argument to LSYM_PREFIX.
29058 2000-02-15  Linus Nordberg  <linus@swox.se>
29060         * acinclude.m4: Prefix all temporary shell variables with
29061         `gmp_tmp_'.
29062         (GMP_PROG_CC_FIND): Use defaults if no arguments are passed.
29063         Quote use of arguments.
29064         (GMP_PROG_CCAS): New macro.
29065         (GMP_INIT): New macro.
29066         (GMP_FINISH): New macro.
29067         (GMP_INCLUDE): New macro.
29068         (GMP_SINCLUDE): New macro.
29069         (GMP_DEFINE): New macro.
29070         (GMP_CHECK_ASM_LABEL_SUFFIX): New macro.
29071         (GMP_CHECK_ASM_TEXT): New macro.
29072         (GMP_CHECK_ASM_DATA): New macro.
29073         (GMP_CHECK_ASM_GLOBL): New macro.
29074         (GMP_CHECK_ASM_TYPE): New macro.
29075         (GMP_CHECK_ASM_SIZE): New macro.
29076         (GMP_CHECK_ASM_LSYM_PREFIX): New macro.
29077         (GMP_CHECK_ASM_W32): New macro.
29078         * aclocal.m4: Regenerate.
29080         * configure.in: Find m4 and nm for target.
29081         Use new macros to create config.m4.
29082         Prefix all temporary shell variables with `tmp_'.
29083         Pass `-X 64' to nm for 64-bit PPC target with 64-bit compiler.
29084         * configure: Regenerate.
29086         * Makefile.am (dist-hook): *Really* remove all CVS dirs in
29087         dist.
29088         * Makefile.in: Regenerate.
29090         * mpn/Makefile.am: Add target for building .lo and .o from
29091         .asm.
29092         Pass -DPIC to preprocessor (CPP/m4) when building .lo.
29093         Build .o a second time for target .lo, without -DPIC to
29094         preprocessor.
29095         (SUFFIX): Add `.asm'.
29096         (EXTRA_DIST): Add asm-defs.m4.
29097         * mpn/Makefile.in: Regenerate.
29099         * mpf/Makefile.in: Regenerate.
29100         * mpf/tests/Makefile.in: Regenerate.
29101         * mpq/Makefile.in: Regenerate.
29102         * mpq/tests/Makefile.in: Regenerate.
29103         * mpz/Makefile.in: Regenerate.
29104         * mpz/tests/Makefile.in: Regenerate.
29106 2000-02-15  Torbjorn Granlund  <tege@swox.com>
29108         * mpn/sparc32/udiv_fp.asm: Change `RODATA' to `DATA'.
29109         * mpn/sparc32/v8/supersparc/udiv.asm: Likewise.
29110         * mpn/sparc32/v9/addmul_1.asm: Likewise.
29111         * mpn/sparc32/v9/submul_1.asm: Likewise.
29112         * mpn/sparc32/v9/mul_1.asm: Likewise.
29114         * mpn/sparc32/add_n.asm: Rename `size' -> `n'.
29115         * mpn/sparc32/sub_n.asm: Likewise.
29117         * sparc32: Rename `.s' and `.S' files to `.asm'.
29118         * sparc64: Rename `.s' and `.S' files to `.asm'.
29120 2000-02-11  Torbjorn Granlund  <tege@swox.com>
29122         * config.sub: Adopt to new config.guess sparc naming conventions.
29124         * config.guess (sun4u:SunOS:5.*:*): Change `sparc9' to `sparcv9'.
29125         * config.guess (sun4m:SunOS:5.*:*): Change to sun4[md]:SunOS:5.*:* and
29126         change `sparc8' to `sparcv8'.
29128         * mpn/x86/add_n.S: Use PROLOGUE/EPILOGUE.
29129         * mpn/x86/sub_n.S: Likewise.
29131         * mpn/x86/syntax.h (PROLOGUE): New name for PROLOG.
29132         * mpn/x86/syntax.h (EPILOGUE): New name for EPILOG.
29134 2000-02-11  Linus Nordberg  <linus@swox.se>
29136         * configure.in: Better path for 64-bit sparc without 64-bit cc.
29137         Change sparc8 --> sparcv8.
29138         Change sparc9 --> sparcv9.
29139         * configure: Regenerate.
29141 2000-02-10  Linus Nordberg  <linus@swox.se>
29143         * configure.in: Use Autoconf.
29144         * Makefile.am: New file.
29146         * AUTHORS: New file.
29147         * COPYING: New file.
29148         * acinclude.m4: New file.
29149         * acconfig.h: New file.
29151         * configure: Generate.
29152         * Makefile.in: Generate.
29153         * aclocal.m4: Generate.
29154         * config.in: Generate.
29156         * install.sh: Remove.
29157         * install-sh: New file from Automake.
29158         * missing: New file from Automake.
29159         * ltconfig: New file from Libtool.
29160         * ltmain.sh: New file from Libtool.
29162         * mpf/Makefile.am: New file.
29163         * mpf/Makefile.in: Generate.
29164         * mpf/configure.in: Remove.
29165         * mpf/tests/Makefile.am: New file.
29166         * mpf/tests/Makefile.in: Generate.
29167         * mpf/tests/configure.in: Remove.
29169         * mpn/Makefile.am: New file.
29170         * mpn/Makefile.in: Generate.
29171         * mpn/configure.in: Remove.
29173         * mpq/Makefile.am: New file.
29174         * mpq/Makefile.in: Generate.
29175         * mpq/configure.in: Remove.
29176         * mpq/tests/Makefile.am: New file.
29177         * mpq/tests/Makefile.in: Generate.
29178         * mpq/tests/configure.in: Remove.
29180         * mpz/Makefile.am: New file.
29181         * mpz/Makefile.in: Generate.
29182         * mpz/configure.in: Remove.
29183         * mpz/tests/Makefile.am: New file.
29184         * mpz/tests/Makefile.in: Generate.
29185         * mpz/tests/configure.in: Remove.
29187 2000-02-10  Torbjorn Granlund  <tege@swox.com>
29189         * mpn/x86/add_n.S: Don't use label L0 twice.
29190         * mpn/x86/sub_n.S: Likewise.
29192 2000-01-20  Linus Nordberg  <linus@swox.se>
29194         * demos/pexpr.c: Don't use setup_error_handler() in windoze.
29196 2000-01-19  Torbjorn Granlund  <tege@swox.com>
29198         * demos/pexpr.c (sigaltstack): #define to sigstack for AIX.
29199         (setup_error_handler): Don't write to ss_size and ss_flags
29200         on AIX.
29202 2000-01-11  Torbjorn Granlund  <tege@swox.com>
29204         * mpn/configure.in (hppa2.0*-*-*): Move assignment of
29205         target_makefile_frag to where it belongs.
29207 1999-12-21  Torbjorn Granlund  <tege@swox.com>
29209         * longlong.h (v9 umul_ppmm): New #define.
29210         (v9 udiv_qrnnd): New #define.
29212 1999-12-14  Torbjorn Granlund  <tege@swox.com>
29214         * mpn/generic/divmod_1.c: Use invert_limb.
29215         * mpn/generic/mod_1.c: Use invert_limb.
29217         * gmp-impl.h (invert_limb): Put definition here.
29218         * mpn/generic/divrem.c (invert_limb): Delete definition.
29219         * mpn/generic/divrem_2.c (invert_limb): Delete definition.
29221         * gmp.h (mpn_divrem): Inhibit for non-gcc.
29222         But declare (undo 1999-11-22 change).
29224         * gmp-impl.h (DItype,UDItype): Do these also if _LONG_LONG_LIMB.
29226         * longlong.h: Move 64-bit hppa code out of __GNUC__ conditional.
29228         * stack-alloc.c (HSIZ): New #define.
29229         (__tmp_alloc): Use HSIZ instead of sizeof(tmp_stack).
29231 1999-12-10  Torbjorn Granlund  <tege@swox.com>
29233         * config.sub: Clean up handling of x86 CPUs: Properly recognize
29234         Amd CPUs as unique entities.  Use manufacturer's names of
29235         processors ("pentium", etc); still match ambiguous names like
29236         "i586", "i686", "p6" but be conservative in interpreting them.
29238         * configure.in: Recognize x86 CPU types known by config.guess.
29239         * mpn/configure.in: Likewise.  Add x86/mmx path component as
29240         appropriate.
29241         (athlon-*-*): Fix typo.
29243         * config.guess: Update x86 recog code to initially match
29244         more than just i386.
29245         Call K6-2 and K6-III for "k62" and "k63" respectively.
29247         * config.guess: Recognize x86 CPU types.
29248         Update code for FreeBSD, NetBSD, OpenBSD, Linux.
29250 1999-12-08  Torbjorn Granlund  <tege@swox.com>
29252         * mpf/pow_ui.c: Avoid final squaring in loop.
29254 1999-12-07  Torbjorn Granlund  <tege@swox.com>
29256         * gmp-impl.h (udiv_qrnnd_preinv2gen): Prefix local variables with `_'.
29257         (udiv_qrnnd_preinv2norm): Likewise.
29258         From Kevin Ryde:
29259         (HAVE_ALLOCA): #define also if defined (alloca).
29261 1999-12-04  Torbjorn Granlund  <tege@swox.com>
29263         * mpn/tests/add_n.c: Set OPS from CLOCK.
29264         * mpn/tests/sub_n.c: Likewise.
29265         * mpn/tests/mul_1.c: Likewise.
29266         * mpn/tests/addmul_1.c: Likewise.
29267         * mpn/tests/submul_1.c: Likewise.
29269         * mpn/tests/lshift.c: Update from add_n.c.
29270         * mpn/tests/rshift.c: Likewise.
29272 1999-12-03  Torbjorn Granlund  <tege@swox.com>
29274         * mpn/powerpc64/copy.S: New file.
29276 1999-12-02  Torbjorn Granlund  <tege@swox.com>
29278         * mpn/sparc64/copy.s: New file.
29280         * mpn/tests/copy.c: New file.
29282         * mpn/configure.in: Recognize more Amd CPUs; Set special paths for
29283         k7 CPU.
29285         * configure.in: Recognize Amd x86 CPUs.
29287         * mpz/fdiv_r_2exp.c: In rounding code, read in->_mp_size before
29288         writing to res->_mp_size.
29290         * mpn/powerpc64/*.S: Clean up assembly syntax, add function headers.
29291         * mpn/powerpc64/gmp-mparam.h: (KARATSUBA_MUL_THRESHOLD): #define.
29292         (KARATSUBA_SQR_THRESHOLD): #define.
29294         * mpn/tests/add_n.c (main): Only print test number if TIMES==1
29295         and not printing.
29296         (main): Don't run reference code if NOCHECK.
29297         * mpn/tests/sub_n.c: Likewise.
29298         * mpn/tests/mul_1.c: Likewise.
29299         * mpn/tests/addmul_1.c: Likewise.
29300         * mpn/tests/submul_1.c: Likewise.
29302         * mpn/tests/lshift.c: (main): Only print test number if TIMES==1
29303         and not printing.
29304         * mpn/tests/rshift.c: Likewise.
29306 1999-11-22  Torbjorn Granlund  <tege@swox.com>
29308         * gmp.h (mpz_init_set_str): Declare using __gmp_const.
29309         (mpz_set_str): Likewise.
29310         (mpf_init_set_str): Likewise.
29311         (mpf_set_str): Likewise.
29312         (mpn_set_str): Likewise.
29313         (__gmp_0): Likewise.
29314         (mpn_divrem): Remove separate declaration; it's defined later in
29315         this file.
29317         * gmp.h: Replace "defined (__STD__)' by (__STDC__-0) in
29318         expressions involving more than one term, to handle Sun's compiler
29319         that most helpfully sets __STDC__ to 0.
29320         * gmp-impl.h: Likewise.
29321         * longlong.h: Likewise.
29323 1999-11-21  Torbjorn Granlund  <tege@swox.com>
29325         * mpn/sparc64/gmp-mparam.h (KARATSUBA_MUL_THRESHOLD): #define.
29326         (KARATSUBA_SQR_THRESHOLD): #define.
29328         * mpn/sparc64/lshift.s: Compensate stack references for odd stack ptr.
29329         * mpn/sparc64/rshift.s: Likewise.
29331         * mpn/sparc64/addmul_1.s: Propagate carry properly.
29332         * mpn/sparc64/submul_1.s: Likewise.
29334         * mpn/sparc64/sub_n.s: Rewrite.
29336         * mpn/sparc64/sub_n.s: Get operand order for main subcc right
29337         (before scrapping this code for new code).
29339 1999-11-20  Torbjorn Granlund  <tege@swox.com>
29341         * mpn/sparc64/add_n.s: Rewrite.
29343 1999-11-17  Torbjorn Granlund  <tege@swox.com>
29345         * mpn/x86/syntax.h (PROLOG): New #define.
29346         (EPILOG): New #define.
29348         * gmp.h (mpn_addsub_n): Declare.
29349         * gmp.h (mpn_add_nc): Declare.
29350         * gmp.h (mpn_sub_nc): Declare.
29351         * mpn/powerpc64/addsub_n.S: New file.
29353 1999-11-17  Torbjorn Granlund  <tege@swox.com>
29355         * mpn/alpha/gmp-mparam.h
29356         (KARATSUBA_MUL_THRESHOLD): Only #define #ifndef.
29357         (KARATSUBA_SQR_THRESHOLD): Likewise.
29359 1999-11-14  Torbjorn Granlund  <tege@swox.com>
29361         * mpn/x86/mul_1.S: Unroll and optimize for P6 and K7.
29363 1999-11-09  Torbjorn Granlund  <tege@swox.com>
29365         * mpn/x86/p6/gmp-mparam.h
29366         (KARATSUBA_MUL_THRESHOLD): Only #define #ifndef.
29367         (KARATSUBA_SQR_THRESHOLD): Likewise.
29369 1999-11-05  Torbjorn Granlund  <tege@swox.com>
29371         * mpn/generic/addsub_n.c: New file.
29373 1999-11-02  Torbjorn Granlund  <tege@swox.com>
29375         * config.guess: Handle alpha:FreeBSD with alpha:NetBSD.
29377         * configure.in (vax*-*-*): New case.
29378         * config/mt-vax: New file.
29379         * mpn/vax/add_n.s: Rewrite.
29380         * mpn/vax/sub_n.s: Rewrite.
29382 1999-10-31  Torbjorn Granlund  <tege@swox.com>
29384         * mpn/vax/rshift.s: New file.
29385         * mpn/vax/lshift.s: New file.
29387 1999-10-29  Torbjorn Granlund  <tege@swox.com>
29389         * config.sub: Handle k5 and k6.
29390         * mpn/configure.in: Recognize k6.
29392         * mpf/tests/t-get_d.c (LOW_BOUND, HIGH_BOUND): New #defines.
29393         (main): Tighten error bounds to 14 digits.
29395         * longlong.h (default umul_ppmm, when smul_ppmm exists):
29396         Rename __m0 => __xm0, __m1 => __xm1.
29397         (default smul_ppmm): Likewise.
29399 1999-10-11  Torbjorn Granlund  <tege@swox.com>
29401         * config.guess: Reverse the test for POWER vs PowerPC.
29402         * config.guess (sun4m:SunOS:5.*:*): New case.
29403         * config.guess (sun4u:SunOS:5.*:*): New case.
29405 1999-09-29  Torbjorn Granlund  <tege@swox.com>
29407         * mpn/generic/divrem_2.c: Clean up comments.
29409 1999-09-23  Torbjorn Granlund  <tege@swox.com>
29411         * mpz/tests/Makefile.in: Use move-if-change when generating binaries.
29412         * mpf/tests/Makefile.in: Likewise.
29413         * mpq/tests/Makefile.in: Likewise.
29414         * mpz/tests/move-if-change: New file.
29415         * mpf/tests/move-if-change: New file.
29416         * mpq/tests/move-if-change: New file.
29418         * gmp.h (mpn_incr_u): New macro (from mpn/generic/mul_n.c).
29419         (mpn_decr_u): New macro.
29421         * mpn/generic/mul_n.c (mpn_incr): Delete.
29422         * mpn/generic/mul_n.c: Update usages mpn_incr => mpn_incr_u.
29423         * mpn/generic/divrem_newt.c: Use mpn_incr_u and mpn_decr_u instead of
29424         mpn_add_1 and mpn_sub_1.
29425         * mpn/generic/sqrtrem.c: Likewise.
29426         * mpz/cdiv_q_ui.c: Likewise.
29427         * mpz/cdiv_qr_ui.c: Likewise.
29428         * mpz/fdiv_q_ui.c: Likewise.
29429         * mpz/fdiv_qr_ui.c: Likewise.
29431         * mpn/generic/sqrtrem.c: Start single-limb Newton iteration from 18
29432         bits.
29434 1999-07-27  Torbjorn Granlund  <tege@swox.com>
29436         * mpn/generic/divrem_1.c (__gmpn_divrem_1n): New function.
29438         * mpn/generic/divrem_2.c: New file, code from divrem.c, `case 2:'.
29439         * mpn/Makefile.in: Compile divrem_2.c.
29440         * make.bat: Compile divrem_2.c.
29441         * mpn/configure.in (functions): Add divrem_2.
29442         * gmp.h: Declare mpn_divrem_2.
29444         * mpn/generic/divrem.c: Delete special cases, handle just divisors
29445         of more than 2 limbs.
29446         * gmp.h (mpn_divrem): Call mpn_divrem_1, mpn_divrem_2, as appropriate.
29448         * mpn/generic/divrem.c: Rework variable usage for better register
29449         allocation.
29451 1999-07-26  Torbjorn Granlund  <tege@swox.com>
29453         * mpn/alpha/ev5/add_n.s: Rewrite for better ev6 speed.
29454         * mpn/alpha/ev5/sub_n.s: Likewise.
29456 1999-07-21  Torbjorn Granlund  <tege@swox.com>
29458         * longlong.h (alpha): Define umul_ppmm for cc.
29460         * gmp-impl.h (DItype, UDItype): Define for non-gcc if _LONGLONG is
29461         defined.
29463 1999-07-15  Torbjorn Granlund  <tege@swox.com>
29465         * longlong.h (powerpc64 count_leading_zeros): Fix typo.
29466         (powerpc64 add_ssaaaa): Fix typos.
29467         (powerpc64 sub_ddmmss): Fix typos.
29469 1999-07-14  Torbjorn Granlund  <tege@swox.com>
29471         * mpz/tests/Makefile.in: Pass XCFLAGS when linking.
29472         * mpf/tests/Makefile.in: Likewise.
29473         * mpq/tests/Makefile.in: Likewise.
29474         * mpn/Makefile.in (.S.o): Pass XCFLAGS.
29476         * longlong.h: Add support for 64-bit PowerPC.
29477         * config.sub: Handle "powerpc64".
29478         * configure.in: Likewise.
29479         * mpn/configure.in: Suppress use of config/t-ppc-aix for now,
29480         it seems compiler passes proper options.
29481         * mpn/powerpc64/*.S: New files.
29483         * Makefile.in (FLAGS_TO_PASS): Pass "AR=$(AR)".
29485 1999-07-07  Torbjorn Granlund  <tege@swox.com>
29487         * demos/pexpr.c (factor): Change alloca call to a malloc/free pair.
29489         * mpn/powerpc32/syntax.h: Add #define's for crN.
29491         * gmp.h (gmp_rand_algorithm): Remove spurious `,'.
29493 1999-07-05  Torbjorn Granlund  <tege@swox.com>
29495         * mpn/generic/divrem_1.c: Normalize divisor when needed.
29497 1999-07-02  Torbjorn Granlund  <tege@swox.com>
29499         * mpn/configure.in (powerpc*-apple-mach): New configuration.
29500         * mpn/powerpc32/*: Add support for apple-macho syntax.
29501         * mpn/powerpc32/syntax.h: New file.
29502         * gmp-impl.h: Don't use `__attribute__' syntax for Apple's perversion
29503         of GCC.
29505 1999-05-26  Linus Nordberg  <linus@swox.se>
29507         * rand.c (gmp_rand_init): Fix typo.
29509         * mpn/generic/rawrandom.c (mpn_rawrandom): Count bits, not limbs,
29510         to keep track of how many rounds to do in loop.  Clean up
29511         temporary allocation.  Update `seedsize' inside loop.  Mask off
29512         the correct number of bits from final result.  Init `mcopyp' even
29513         when not normalizing `m'.
29515         * randlc.c (gmp_rand_init_lc): Fix typo (don't call
29516         mpz_init_set_ui()).
29518         * mpn/generic/rawrandom.c (mpn_rawrandom): Set SIZ(s->seed) when
29519         reallocating.
29521         * tests/rand/Makefile (test, bigtest): Add 33-bit tests.
29523         * tests/rand/gen.c (main): Set precision of variable passed to
29524         mpf_urandomb().  Add option `-p'.
29526 1999-05-25  Linus Nordberg  <linus@swox.se>
29528         * randcm.c: Remove.
29529         * randcmui.c: Remove.
29530         * Makefile.in: Remove randcm and randcmui.
29531         * make.bat: Ditto.
29532         * gmp-impl.h: Remove prototypes for __gmp_rand_init_common() and
29533         __gmp_rand_init_common_ui().
29534         * randlc.c (gmp_rand_init_lc): Don't call
29535         __gmp_rand_init_common().
29537         * randlcui.c (gmp_rand_init_lc_ui): Don't call
29538         __gmp_rand_init_common_ui().
29540         * gmp.h (__gmp_rand_state_struct): Remove unused member `maxval'.
29541         * randclr.c (gmp_rand_clear): Remove reference to s->maxval.
29542         * randcm.c (__gmp_rand_init_common): Ditto
29544         * mpn/generic/rawrandom.c (mpn_rawrandom): Don't calculate nlimbs
29545         twice.
29547         * gmp.h (__gmp_rand_dist): Remove.
29549 1999-05-24  Linus Nordberg  <linus@swox.se>
29551         * mpn/generic/rawrandom.c: Clean up comments.
29553         * gmp.texi: Add documentation for random number generation.
29555 1999-05-21  Linus Nordberg  <linus@swox.se>
29557         * gmp.h: Typedef `gmp_rand_state' as an array with one element.
29558         Change prototypes accordingly.
29559         * gmp-impl.h: Change prototypes using `gmp_rand_state'.
29560         * rand.c (gmp_rand_init): Take `gmp_rand_state' as argument
29561         instead of a pointer to a `gmp_rand_state'.
29562         * mpf/urandom.c (mpf_urandomb): Ditto.
29563         * mpz/urandom.c (mpz_urandomb): Ditto.
29564         * mpn/generic/rawrandom.c (mpn_rawrandom): Ditto.
29565         * randcmui.c (__gmp_rand_init_common_ui): Ditto.
29566         * randlc.c (gmp_rand_init_lc): Ditto.
29567         * randlcui.c (gmp_rand_init_lc_ui): Ditto.
29568         * randui.c (gmp_rand_init_ui): Ditto.
29569         * randcm.c (__gmp_rand_init_common): Ditto.
29570         * randclr.c (gmp_rand_clear): Ditto.
29572         * tests/rand/gen.c (main): Pass `s' to rand-funcs instead of address
29573         of `s'.
29575 1999-05-20  Linus Nordberg  <linus@swox.se>
29577         * Makefile.in: Rename randi.c --> rand.c, randi_lc.c --> randlc.c,
29578         randicom.c --> randcm.c.  Add randui.c, randcmui.c, randlcui.c.
29579         * make.bat: Ditto.
29581         * gmp.h: Add prototypes for gmp_rand_init_ui() and
29582         gmp_rand_init_lc_ui().
29583         * gmp-impl.h: Add prototypes for __gmp_rand_init_common() and
29584         __gmp_rand_init_common_ui().
29586         * randlc.c, randcm.c, randclr.c, rand.c: Change #include of
29587         <gmp.h> to "gmp.h".
29588         * randclr.c: Include stdlib.h for free().
29589         * rand.c: Include gmp-impl.h.
29591 1999-05-12  Torbjorn Granlund  <tege@swox.com>
29593         * mpn/configure.in: Put generic m68k alternative last.
29595 1999-05-04  Torbjorn Granlund  <tege@swox.com>
29597         * demos/pexpr.c (setup_error_handler): Use sigemptyset to create
29598         empty set (for portability).
29599         (fns): Fix typo '#if #if'.
29600         (mpz_eval_expr): Implement FERMAT and MERSENNE.
29602         * demos/pexpr.c: Cast longjmp argument via long to silent warnings on
29603         64-bit hosts.
29605 1999-05-03  Torbjorn Granlund  <tege@swox.com>
29607         * demos/pexpr.c: Add #defines for GMP 1.x and 2.0 compatibility.
29609         * demos/pexpr.c (setup_error_handler): New function; take signal
29610         handler setup code from main(), with major modifications to use modern
29611         signal interface.
29612         (main): Remove signal handler setup code; call setup_error_handler.
29614 1999-04-29  Linus Nordberg  <linus@swox.se>
29616         * tests/rand/findcl.c (main): Add option '-i' for interval factor.
29617         Separate v and merit lose figures.  Add '-v' for version.
29619 1999-04-28  Linus Nordberg  <linus@swox.se>
29621         * tests/rand/statlib.c: Change debugging stuff.
29623         * tests/rand/gmpstat.h: Add debug values definitions.
29625         * tests/rand/findcl.c (main): Print low and high merit on startup.
29626         Print version string on startup.  Catch SEGV and HUP.  Add option -d
29627         for debug.  Fix bug making test for v too hard.
29628         (sh_status): New function.
29629         (sh_status): Flush stdout.  Add RCSID.
29631 1999-04-27  Linus Nordberg  <linus@swox.se>
29633         * tests/rand/Makefile (clean): Add target.
29635 1999-04-27  Linus Nordberg  <linus.nordberg@canit.se>
29637         * tests/rand/stat.c: Include gmpstat.h.
29638         Add global int g_debug.
29640         * tests/rand/spect.c: Include <unistd.h>.
29642         * tests/rand/findcl.c (main): Input is `m', not all factors of `m'.
29643         Print only the very first matching multiplier.  Include <unistd.h>.
29644         Flush stdout.  Print "done." when done.
29646         * tests/rand/spect.c: Move everything but main() to statlib.c.
29648         * tests/rand/findcl.c: New file.
29650         * tests/rand/gmpstat.h: New file.
29652         * tests/rand/statlib.c (merit, merit_u, f_floor, vz_dot,
29653         spectral_test): New functions.
29655 1999-04-27  Torbjorn Granlund  <tege@swox.com>
29657         * mpn/configure.in: Fix typo, "sparc-*)" was "sparc)".
29659 1999-04-21  Torbjorn Granlund  <tege@swox.com>
29661         * config.sub: Recognize ev6.
29663 1999-04-12  Linus Nordberg  <linus.nordberg@canit.se>
29665         * urandom.c: Split up into randclr.c, randi.c, randi_lc.c,
29666         randicom.c.
29667         * randclr.c, randi.c, randi_lc.c, randicom.c: New files.
29668         * Makefile.in: Remove urandom.  Add randclr, randi, randi_lc,
29669         randicom.
29670         * make.bat: Ditto
29672 1999-03-31  Torbjorn Granlund  <tege@matematik.su.se>
29674         * configure.in (sparc9-*-solaris2.[789]*, etc): New alternative.
29675         * mpn/configure.in: Use mt-sprc9 also for ultrasparc*-*-solaris2*.
29677 1999-03-30  Linus Nordberg  <linus.nordberg@canit.se>
29679         * urandom.c (__gmp_rand_scheme): Change NULL->0.
29680         Include "gmp.h" instead of <gmp.h>.
29682 1999-03-29  Linus Nordberg  <linus.nordberg@canit.se>
29684         * gmp.h (__gmp_rand_data_lc): Now holds a, c, m instead of scheme
29685         struct.
29686         (__gmp_rand_lc_scheme_struct): Remove mpz_t's `a' and `m'.
29688         * tests/rand/stat.c (f_freq): Don't print 2nd level results if doing
29689         1st level.
29691         * tests/rand/gen.c (main): Set default algorithm to mpz_urandomb.
29692         (main): Add option -c.
29694 1999-03-24  Linus Nordberg  <linus.nordberg@canit.se>
29696         * tests/rand/Makefile (GMPINC): Rename to GMPH.
29697         (GMPH): Add gmp-mparam.h.
29698         (CFLAGS): Add -I$(GMPLIBDIR)/mpn
29700 1999-03-23  Linus Nordberg  <linus.nordberg@canit.se>
29702         * Makefile.in: Compile top-dir/urandom.c.
29703         * make.bat: Ditto.
29705         * mpn/Makefile.in: Compile rawrandom.c.
29706         * make.bat: Ditto.
29708         * mpn/configure.in (functions): Add rawrandom.
29710         * gmp.h (__gmp_rand_scheme_struct): Rename to
29711         __gmp_rand_lc_scheme_struct.
29712         (__gmp_rand_data_lc): Remove member 'n'.  Allocate a
29713         __gmp_rand_lc_scheme_struct instead of a pointer to one.
29714         Add prototype for gmp_rand_init_lc(), mpn_rawrandom().
29715         New prototype for mpz_urandomb().
29717         * urandom.c: New file.
29718         (__gmp_rand_init_common): New function.
29719         (gmp_rand_init_lc): New function.
29720         (gmp_rand_init): Don't init data_lc->n.  Call gmp_rand_init_lc()
29721         and __gmp_rand_init_common().
29722         (gmp_rand_clear): Remove reference to data_lc->n.
29724         * mpz/urandom.c (gmp_rand_init, gmp_rand_clear): Move to new file
29725         urandom.c in top-dir.
29726         (mpz_urandomb): Add function parameter nbits.  Call mpn_rawrandom().
29728         * mpf/urandom.c (mpf_urandomb): Call mpn_rawrandom().
29730         * mpn/generic/rawrandom.c: New file.
29731         (mpn_rawrandom): New function.
29733 1999-03-17  Torbjorn Granlund  <tege@matematik.su.se>
29735         * extract-dbl.c: When packing result, adjust exp when sc == 0.
29737         * mpf/tests/t-get_d.c: New file.
29738         * mpf/tests/Makefile.in: Compile t-get_d.c.
29740 1999-03-16  Linus Nordberg  <linus.nordberg@canit.se>
29742         * mpz/urandom.c (__gmp_rand_scheme): Add extra braces around the
29743         mpz_t members.
29745         * make.bat: Compile mpz/urandom.c and mpf/urandom.c
29747         * tests/rand/statlib.c (ks_table): Use mpf_pow_ui() and exp().
29749         * tests/rand/gen.c: Include unistd.h for getopt.
29751 1999-03-15  Linus Nordberg  <linus.nordberg@canit.se>
29753         * mpz/urandom.c (gmp_rand_init): New function.
29754         (gmp_rand_clear): New function.
29755         (mpz_urandomb): New function.
29757         * mpz/Makefile.in: Compile urandom.c
29759         * mpf/urandom.c (mpf_urandomb): New function.
29761         * mpf/Makefile.in: Compile urandom.c.
29763         * gmp.h (__gmp_rand_state_struct, __gmp_rand_scheme_struct): New
29764         structs for randomization functions.
29765         (gmp_rand_dist, gmp_rand_alogrithm): New enums for randomization
29766         functions.
29767         (mpz_urandomb, mpf_urandomb): Add prototype.
29768         (gmp_rand_init, gmp_rand_clear): Add prototype.
29770         * tests/rand/gen.c, stat.c, statlib.c, statlib.h: New files.
29771         * tests/rand/Makefile, tests/rand/ChangeLog: New files.
29773 1999-03-15  Torbjorn Granlund  <tege@matematik.su.se>
29775         * .gdbinit: New file.
29777         * mpz/dump.c: New file.
29778         * mpz/Makefile.in: Compile dump.c.
29779         * make.bat: Likewise.
29780         * gmp.h (mpz_dump): Declare.
29782 1999-03-14  Torbjorn Granlund  <tege@matematik.su.se>
29784         * mpz/tests/reuse.c: Also test mpz_invert and mpz_divexact.
29786         * mpz/tests/convert.c: Update to GMP 2 variable syntax.
29788 1999-03-13  Torbjorn Granlund  <tege@matematik.su.se>
29790         * mpf/README: New file.
29791         * mpz/README: New file.
29793         * mpf/pow_ui.c: New file.
29794         * mpf/Makefile.in: Compile pow_ui.c.
29795         * make.bat: Likewise.
29796         * gmp.h (mpf_pow_ui): Declare.
29798 1999-03-12  Torbjorn Granlund  <tege@matematik.su.se>
29800         * mpn/configure.in: Stage 1 of rewrite.
29801         * mpn/underscore.h: New name for bsd.h.
29802         * mpn/sysv.h: Deleted.
29804         * mpn/m68k/*: Don't include sysdep.h.
29806         * mpn/pa64/README: New file.
29808 1999-03-11  Torbjorn Granlund  <tege@matematik.su.se>
29810         * mpn/powerpc32/add_n.S: Add support for both AIX and ELF syntax.
29811         Renamed from `.s'.
29812         * mpn/powerpc32/sub_n.S: Likewise.
29813         * mpn/powerpc32/lshift.S: Likewise.
29814         * mpn/powerpc32/rshift.S: Likewise.
29815         * mpn/powerpc32/mul_1.S: Likewise.
29816         * mpn/powerpc32/addmul_1.S: Likewise.
29817         * mpn/powerpc32/submul_1.S: Likewise.
29819         * mpn/powerpc32/umul.S: New file.
29820         * mpn/sparc32/v8/umul.S: New file.
29821         * mpn/sparc32/umul.S: New file.
29822         * mpn/x86/umul.S: New file.
29823         * mpn/x86/udiv.S: New file.
29825         * mpn/Makefile.in (mul_basecase.o): Delete rule.
29827 1999-02-22  Torbjorn Granlund  <tege@matematik.su.se>
29829         * configure.in (hppa2.0*-*-*): Force use of GCC.
29831         * extract-dbl.c: Handle IEEE denormalized numbrs.  Clean up.
29833 1998-12-02  Torbjorn Granlund  <tege@matematik.su.se>
29835         * mpn/Makefile.in (CCAS): New macro.
29836         (.s.o): Use CCAS.
29837         (.S.o): Likewise.
29839         * mpn/Makefile.in (mul_basecase.o): Add dependency.
29840         (sqr_basecase.o): Likewise.
29841         (mod_1.o): Likewise.
29843         * demos/pexpr.c (cputime): Test also __hpux.
29844         (cleanup_and_exit): Check SIGXCPU only #ifdef LIMIT_RESOURCE_USAGE.
29846         * mpz/tests/t-2exp.c: Use urandom, not random.
29848         * mpn/configure.in (arm*-*-*): New alternative.
29850 1998-11-30  Torbjorn Granlund  <tege@matematik.su.se>
29852         * gmp-impl.h (union ieee_double_extract): Special case for
29853         little-endian arm.
29854         (LIMBS): Alias for PTR.
29856 1998-11-26  Torbjorn Granlund  <tege@matematik.su.se>
29858         * longlong.h (m68000 umul_ppmm): Use `muluw', not `mulu'.
29859         (m68k stuff): Clean up; add coldfire support.
29861 1998-11-23  Torbjorn Granlund  <tege@matematik.su.se>
29863         * mpn/mips3/gmp-mparam.h (KARATSUBA_MUL_THRESHOLD): #define.
29864         (KARATSUBA_SQR_THRESHOLD): #define.
29866         * mpn/sparc32/v9/README: New file.
29868 1998-11-20  Torbjorn Granlund  <tege@matematik.su.se>
29870         * mpn/x86/README: New file.
29872         * mpn/arm/gmp-mparam.h: New file.
29873         * mpn/pa64/gmp-mparam.h: New file.
29874         * mpn/hppa/gmp-mparam.h: New file.
29875         * mpn/x86/pentium/gmp-mparam.h: New file.
29876         * mpn/sparc32/v9/gmp-mparam.h: New file.
29877         * mpn/powerpc32/gmp-mparam.h: New file.
29878         * mpn/x86/p6/gmp-mparam.h: New file.
29880         * mpn/alpha/gmp-mparam.h (KARATSUBA_MUL_THRESHOLD): #define.
29881         (KARATSUBA_SQR_THRESHOLD): #define.
29883         * mpn/configure.in: Point to x86/p6 when appropriate.
29885         * mpn/power/umul.s: New file.
29886         * mpn/power/sdiv.s: New file.
29887         * mpn/pa64/addmul_1.S: New file.
29888         * mpn/pa64/submul_1.S: New file.
29889         * mpn/pa64/mul_1.S: New file.
29890         * mpn/pa64/udiv_qrnnd.c: New file.
29891         * mpn/pa64/umul_ppmm.S: New file.
29892         * mpn/mips2/umul.s: New file.
29893         * mpn/m68k/mc68020/umul.s: New file.
29894         * mpn/m68k/mc68020/udiv.s: New file.
29895         * mpn/hppa/hppa1_1/umul.s: New file.
29896         * mpn/alpha/umul.s: New file.
29897         * mpn/a29k/udiv.s: New file.
29898         * mpn/a29k/umul.s: New file.
29900 1998-11-17  Torbjorn Granlund  <tege@matematik.su.se>
29902         * mpn/x86/mul_basecase.S: New file for non-pentiums.
29903         * mpn/x86/mul_basecase.S: Move to mpn/x86/pentium.
29905 1998-11-16  Torbjorn Granlund  <tege@matematik.su.se>
29907         * make.bat: Compile mul_basecase.c and sqr_basecase.c.
29909 1998-11-10  Torbjorn Granlund  <tege@matematik.su.se>
29911         * mpz/invert.c: Defer writing to parameter `invert' until
29912         end.
29914 1998-11-03  Torbjorn Granlund  <tege@matematik.su.se>
29916         * mpn/pa64/udiv_qrnnd.c: Handle more border cases.
29918 1998-10-29  Torbjorn Granlund  <tege@matematik.su.se>
29920         * insert-dbl.c: Special case biased exponents < 1; Get boundary for
29921         Inf right.
29923         * longlong.h (COUNT_LEADING_ZEROS_NEED_CLZ_TAB): New #define.
29925 1998-10-28  Torbjorn Granlund  <tege@matematik.su.se>
29927         * mpn/powerpc32/submul_1.s: Rewrite, optimizing for PPC604.
29928         * mpn/powerpc32/addmul_1.s: Likewise.
29929         * mpn/powerpc32/lshift.s: Likewise.
29931 1998-10-23  Torbjorn Granlund  <tege@matematik.su.se>
29933         * config/mt-sprc9-gcc (XCFLAGS): Add -Wa,-xarch=v8plus.
29935         * mpn/sparc32/v9/submul_1.s: New file.
29937 1998-10-21  Torbjorn Granlund  <tege@matematik.su.se>
29939         * mpn/config/mt-pa2hpux: New file.
29940         * mpn/configure.in (hppa2.0*-*-*): Use new 64-bit code.
29942         * config.sub: Recognize hppa2.0 as CPU type.
29944         * longlong.h (64-bit hppa): Add umul_ppmm and udiv_qrnnd.
29945         * mpn/pa64/mul_1.S: New file.
29946         * mpn/pa64/addmul_1.S: New file.
29947         * mpn/pa64/submul_1.S: New file.
29948         * mpn/pa64/umul_ppmm.S: New file.
29949         * mpn/pa64/udiv_qrnnd.c: New file.
29951 1998-10-20  Torbjorn Granlund  <tege@matematik.su.se>
29953         * mpz/pprime_p.c: Pass 1L, not 1, to mpz_cmp_ui.
29955         * mpz/fdiv_q_2exp.c: Cast `long' argument to `mp_limb_t' for mpn calls.
29956         * mpz/gcd_ui.c: Likewise.
29957         * mpz/add_ui.c: Likewise.
29958         * mpz/sub_ui.c: Likewise.
29960 1998-10-19  Torbjorn Granlund  <tege@matematik.su.se>
29962         * mpn/generic/bdivmod.c: Avoid using switch statement with mp_limb_t
29963         index.
29965 1998-10-17  Torbjorn Granlund  <tege@matematik.su.se>
29967         * mpn/sparc32/v9/mul_1.s: Misc cleanups.
29968         * mpn/sparc32/v9/addmul_1.s: Misc cleanups.
29970 1998-10-16  Torbjorn Granlund  <tege@matematik.su.se>
29972         * mpn/tests/{add,sub,}mul_1.c: Print xlimb using mpn_print.
29974         * mpz/tests/t-powm.c (SIZE): Increase to 50.
29975         (EXP_SIZE): New parameter; use it for computing exp_size.
29977 1998-10-15  Torbjorn Granlund  <tege@matematik.su.se>
29979         * mpn/generic/divrem_newt.c: Use TMP_ALLOC interface.
29981         * mpn/generic/sqrtrem.c: Check BITS_PER_MP_LIMB before defining
29982         assembly variants of SQRT.
29984 1998-10-14  Torbjorn Granlund  <tege@matematik.su.se>
29986         * mpn/tests: Clean up timing routines.  Don't include longlong.h
29987         where it is not needed.
29988         (mpn_print): Handle printing when _LONG_LONG_LIMB.
29989         * mpn/tests/{add,sub,}mul_1.c: Generate xlimb with mpn_random2
29990         and do it whether TIMES != 1 or not.
29992         * mpn/generic/mul_n.c: Delay assignment of `sign' for lower
29993         register pressure.
29995         * mpn/sparc32/v9/mul_1.s: New file.
29997         * config/mt-sprc9-gcc: New file.
29998         * configure.in: Use it.
30000         * mpn/configure.in: Use sparc64 for Solaris 2.7 and later with a
30001         sparc v9 CPU.
30002         * mpn/configure.in: Use sparc32/v9 for Solaris 2.6 or earlier with
30003         a sparc v9 CPU.
30005         * mpf/sub.c: In initial code for ediff == 0, limit precision
30006         before jumping to `normalize'.
30008 1998-10-13  Torbjorn Granlund  <tege@matematik.su.se>
30010         * mpn/hppa/hppa2_0/add_n.s: New file.
30011         * mpn/hppa/hppa2_0/sub_n.s: New file.
30012         * mpn/configure.in: Handle hppa2.0 (32-bit code for now).
30014         * config.guess: Update from egcs 1.1.
30015         (9000/[3478]??:HP-UX:*:*): Properly return 2.0 for all known 2.0
30016         machines.
30018 1998-10-07  Torbjorn Granlund  <tege@matematik.su.se>
30020         * mpz/root.c (mpz_root): New file.
30021         * mpz/Makefile.in: Compile it.
30022         * make.bat: Likewise.
30023         * gmp.h (mpz_root): Declare.
30025         * mpz/perfpow.c: New file.
30026         * mpz/Makefile.in: Compile it.
30027         * make.bat: Likewise.
30028         * gmp.h (mpz_perfect_power_p): Declare.
30030         * mpz/remove.c: New file.
30031         * mpz/Makefile.in: Compile it.
30032         * make.bat: Likewise.
30033         * gmp.h (mpz_remove): Declare.
30035         * mpz/bin_ui.c: New file.
30036         * mpz/Makefile.in: Compile it.
30037         * make.bat: Likewise.
30038         * gmp.h (mpz_bin_ui): Declare.
30040         * mpz/bin_uiui.c: New file.
30041         * mpz/Makefile.in: Compile it.
30042         * make.bat: Likewise.
30043         * gmp.h (mpz_bin_uiui): Declare.
30045 1998-09-16  Torbjorn Granlund  <tege@matematik.su.se>
30047         * longlong.h: Test for __powerpc__ in addition to _ARCH_PPC.
30049 Sat Sep  5 17:22:28 1998  Torbjorn Granlund  <tege@matematik.su.se>
30051         * mpf/cmp_si.c: Compare most significant mantissa limb before
30052         trying to deduce anything from the limb count.
30053         * mpf/cmp_ui.c: Likewise.
30055 Tue Aug 18 10:24:39 1998  Torbjorn Granlund  <tege@matematik.su.se>
30057         * mpz/pprime_p.c (mpz_probab_prime_p): Add new code block
30058         for doing more dividing.
30060 Sat Aug 15 18:43:17 1998  Torbjorn Granlund  <tege@matematik.su.se>
30062         * mpn/generic/divrem_newt.c: New name for divrem_newton.c.
30063         * mpn/Makefile.in: Corresponding changes.
30064         * mpn/configure.in: Likewise.
30066 Wed Aug 12 23:07:09 1998  Torbjorn Granlund  <tege@matematik.su.se>
30068         * config.guess: Handle powerpc for NetBSD.
30070 Tue Jul 28 23:10:55 1998  Torbjorn Granlund  <tege@matematik.su.se>
30072         * mpz/fib_ui.c: New file.
30073         * mpz/Makefile.in: Compile it.
30074         * make.bat: Likewise.
30075         * gmp.h (mpz_fib_ui): Declare.
30077 Wed Jun 17 22:52:58 1998  Torbjorn Granlund  <tege@matematik.su.se>
30079         * make.bat: Fix typo, `asm-synt.h' => `asm-syntax.h'.
30081 Wed Jun  3 11:27:32 1998  Torbjorn Granlund  <tege@matematik.su.se>
30083         * config/mt-pwr: New file.
30084         * config/mt-ppc: New file.
30085         * configure.in: Use the new files.
30087 Tue Jun  2 13:04:17 1998  Torbjorn Granlund  <tege@matematik.su.se>
30089         * mpn/sparc32/v9/addmul_1.s: New file.
30090         * mpn/config/mt-sprc9: New file.
30091         * mpn/configure.in: Use mt-sprc9.
30093 Tue May 26 11:24:18 1998  Torbjorn Granlund  <tege@matematik.su.se>
30095         * demos/factorize.c (factor_using_pollard_rho): Pass correct
30096         parameters in recursive calls; join the two recursion arms.
30098         * mpf/set_q.c: Set result sign.
30099         When normalizing the numerator, don't allow it to increase in size
30100         beyond prec.
30102 Tue May 19 17:28:14 1998  Torbjorn Granlund  <tege@matematik.su.se>
30104         * demos/factorize.c (factor_using_division): Call fflush
30105         also for the factor 2.
30107 Mon May 18 15:51:01 1998  Torbjorn Granlund  <tege@matematik.su.se>
30109         * make.bat: Pass -fomit-frame-pointer.  Do not pass -g.
30111 Tue May  5 01:42:50 1998  Torbjorn Granlund  <tege@matematik.su.se>
30113         * mpz/Makefile.in (LOCAL_CC): Remove definition.
30115         * gmp.h: Get rid of GMP_SMALL stuff.
30116         * mpz/Makefile.in: Likewise.
30117         * mpq/Makefile.in: Likewise.
30118         * mpf/Makefile.in: Likewise.
30120         * mpz/invert.c: Fix typo in comment.
30122 Mon May  4 23:05:32 1998  Torbjorn Granlund  <tege@matematik.su.se>
30124         * mpn/generic/sqrtrem.c: Check that __arch64__ is not defined
30125         before defining sparc SQRT.
30127 Mon Apr 20 19:16:17 1998  Torbjorn Granlund  <tege@matematik.su.se>
30129         * mpn/generic/gcdext.c: Allow gp to be NULL.
30131 1998-04-03  Torbjorn Granlund  <tege@matematik.su.se>
30133         * mpn/configure.in: Recognize `alphaev5*', not `alphaev5'.
30135         * config.guess: Handle CPU variants for NetBSD.
30137 Mon Mar 16 13:07:54 1998  Torbjorn Granlund  <tege@matematik.su.se>
30139         * mpz/pprime_p.c: Use mpn_mod_1/mpn_preinv_mod_1 for computing mod PP,
30140         not mpz_tdiv_r_ui (which expects an `unsigned long').
30141         (mpz_probab_prime_p): Change type of `r' to mp_limb_t.
30143 Thu Mar 12 17:19:04 1998  Torbjorn Granlund  <tege@matematik.su.se>
30145         * gmp.h (mpf_ceil, mpf_floor, mpf_trunc): Add declarations.
30147         * config.guess: Update from FSF version.
30148         * config.sub: Likewise.
30150         * config.guess: Add special handling of alpha-*-NetBSD.
30152 Wed Mar 11 00:55:34 1998  Torbjorn Granlund  <tege@matematik.su.se>
30154         * mpz/inp_str.c: Update from set_str.c.
30155         Properly increment `nread' when skipping minus sign.
30157         * mpz/set_str.c: Check for empty string after having skipped
30158         leading zeros.
30160 Mon Mar  9 19:28:00 1998  Torbjorn Granlund  <tege@matematik.su.se>
30162         * mpz/set_str.c: Skip leading zeros.
30164 Wed Mar  4 19:29:16 1998  Torbjorn Granlund  <tege@matematik.su.se>
30166         * gmp.h (mpz_cmp_si): Cast argument before calling mpz_cmp_ui.
30168         * demos/factorize.c: Rewrite.
30170 1998-02-04  Torbjorn Granlund  <tege@matematik.su.se>
30172         * configure.in (i[3456]86* etc): Check if using gcc before
30173         choosing mt-x86.
30175         * configure.in (m68*-*-*): New alternative.
30176         * config/mt-m68k: New file.
30178         * mpn/alpha/invert-limb.s: Put tables in text segment,
30179         since not all systems support "rdata".
30181 Wed Feb  4 02:20:57 1998  Torbjorn Granlund  <tege@matematik.su.se>
30183         * gmp.h (__GNU_MP_VERSION_SNAP): New #define.
30184         (__GNU_MP_VERSION_MINOR): Now 1.
30186 Wed Jan 28 22:29:36 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
30188         * longlong.h (alpha udiv_qrnnd): #define UDIV_NEEDS_NORMALIZATION.
30190 Wed Jan 28 20:28:19 1998  Torbjorn Granlund  <tege@sophie.matematik.su.se>
30192         * mpz/pprime_p.c (mpz_probab_prime_p): Delete 59 from tried divisors.
30194 Mon Jan 26 01:39:02 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
30196         * mpz/pprime_p.c (mpz_probab_prime_p): Major overhaul: Check small
30197         numbers specifically; check small factors, then perform a fermat test.
30199 Tue Jan 13 14:58:28 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
30201         * longlong.h (alpha udiv_qrnnd): Call __mpn_invert_normalized_limb
30202         and udiv_qrnnd_preinv.
30204 Wed Jan  7 01:52:54 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
30206         * mpn/configure.in (alpha*, extra_functions): Add invert-limb and
30207         remove udiv_qrnnd.
30209         * mpn/tests/divrem.c: Get allocations right.
30211         * mpn/generic/divrem.c: Conditionally pre-invert most significant
30212         divisor limb.
30214 Tue Jan  6 23:08:54 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
30216         * mpn/generic/divrem_1.c: Rename variables to comply to conventions.
30217         Make `i' have type `mp_size_t'.
30219 Tue Dec 30 22:21:42 1997  Torbjorn Granlund  <tege@matematik.su.se>
30221         * mpz/tdiv_qr_ui.c: Return the remainder.
30222         * mpz/tdiv_r_ui.c: Likewise.
30223         * mpz/tdiv_q_ui.c: Likewise.
30224         * gmp.h: Change return type of mpz_tdiv_qr_ui, mpz_tdiv_r_ui,
30225         mpz_tdiv_q_ui.
30227         * mpz/tdiv_ui.c: New file.
30228         * mpz/Makefile.in: Compile it.
30229         * make.bat: Likewise.
30230         * gmp.h (mpz_tdiv_ui): Declare.
30232 Fri Nov  7 04:21:15 1997  Torbjorn Granlund  <tege@matematik.su.se>
30234         * mpf/integer.c (FUNC_NAME): Fix bogus test for mpf_trunc.
30236         * demos/isprime.c: New file.
30238         Sat Nov  1 19:32:25 1997  Torbjorn Granlund  <tege@matematik.su.se>
30240         * mpz/cmp_abs.c: New file.
30241         * mpz/Makefile.in: Compile it.
30242         * make.bat: Likewise.
30243         * gmp.h (mpz_cmp_abs): Declare.
30245         * mpz/cmp_abs_ui.c: New file.
30246         * mpz/Makefile.in: Compile it.
30247         * make.bat: Likewise.
30248         * gmp.h (mpz_cmp_abs_ui): Declare.
30250 Sat Sep 27 04:49:52 1997  Torbjorn Granlund  <tege@tunnis.tmg.se>
30252         * mpz/fdiv_r_2exp.c: Get allocation for `tmp' right.
30254         * mpz/fdiv_q_2exp.c: In final result adjustment code, handle
30255         that intermediate result is zero.
30257         * mpz/tests/t-2exp.c: New file.
30258         * mpz/tests/Makefile.in: Handle t-2exp.c.
30260 Fri Sep 26 16:29:21 1997  Torbjorn Granlund  <tege@tunnis.tmg.se>
30262         * mpz/divexact.c: Fix typo in test for whether to copy numerator to
30263         quotient and move that statement to after handling quotient and
30264         denominator overlap.  Misc cleanups.
30266         * mpn/generic/gcd.c: Change count argument of mpn_lshift/mpn_rshift
30267         calls to `unsigned int'.
30268         * mpz/divexact.c: Likewise.
30270 Mon Sep 22 02:19:52 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30272         * mpz/tests/t-powm.c: Decrease `reps' to 2500.
30274         * mpz/tests/t-pow_ui.c: New file.
30275         * mpz/tests/Makefile.in: Handle t-pow_ui.c.
30277         * mpz/ui_pow_ui.c: Get special cases for exponent and base right.
30279         * mpz/pow_ui.c: Increase temp space allocation by 1 limb.
30280         Split `rsize' into two variables; compute space allocation into
30281         `ralloc'.
30283 Sun Sep  7 04:15:12 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30285         * mpn/pa64/lshift.s: New file.
30286         * mpn/pa64/rshift.s: New file.
30287         * mpn/pa64/sub_n.s: New file.
30289 Sat Sep  6 19:14:13 1997  Torbjorn Granlund  <tege@gmp.tmg.se>
30291         * mpn/pa64/add_n.s: New file.
30292         * mpn/pa64: New directory.
30294 Tue Aug 19 16:17:09 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30296         * mpz/swap.c: New file.
30297         * mpz/Makefile.in: Compile it.
30298         * make.bat: Likewise.
30299         * gmp.h (mpz_swap): Declare.
30301         * mpn/generic/mul_n.c: Push assignment of x and y pointers into the
30302         if/else clauses in several places.  (Decreases register pressure.)
30304 Mon Aug 18 03:29:50 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30306         * mpn/thumb/add_n.s: New file.
30307         * mpn/thumb/sub_n.s: New file.
30308         * mpn/arm/add_n.s: New file.
30309         * mpn/arm/sub_n.s: New file.
30311         * mpz/powm.c: After mpn_mul_n and mpn_mul calls, adjust product size
30312         if most significant limb is zero.
30313         * mpz/powm_ui.c: Likewise.
30315 Fri Aug 15 02:13:57 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30317         * mpn/arm/m/mul_1.s: New file.
30318         * mpn/arm/m/addmul_1.s: New file.
30320         * mpn/powerpc32/mul_1.s: Rewrite.
30322         * mpn/alpha/mul_1.s: Prefix labels with `.'.
30324 Mon Aug 11 02:37:16 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30326         * mpn/powerpc32/add_n.s: Rewrite.
30327         * mpn/powerpc32/sub_n.s: Rewrite.
30329 Sun Aug 10 17:07:15 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30331         * mpn/powerpc32/addmul_1.s: Delete obsolete comments.
30332         * mpn/powerpc32/submul_1.s: Likewise.
30334 Fri Jul 25 20:07:54 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30336         * mpz/addmul_ui.c: New file.
30337         * mpz/Makefile.in: Compile it.
30338         * make.bat: Likewise.
30339         * gmp.h (mpz_addmul_ui): Declare.
30341         * mpz/setbit.c: Add missing code after final `else'.
30343 Tue Jul 22 17:45:01 1997  Torbjorn Granlund  <tege@tunnis.tmg.se>
30345         * mpn/sh/add_n.s: Fix typo.
30346         * mpn/sh/sub_n.s: Likewise.
30348         * longlong.h (ns32k count_trailing_zeros): Fix typo.
30350         * insert-dbl.c: Check for exponent overflow and return Inf.
30352         * mpz/get_d.c: Rewrite to avoid rounding errors.
30354 Thu May 29 11:51:07 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30356         * mpq/add.c: Swap some usages of tmp1 and tmp2 to make sure
30357         their allocation suffices.
30358         * mpq/sub.c: Likewise.
30360 Wed Apr 16 02:24:25 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30362         * demos/pexpr.c: New file.
30364         * mpn/generic/mul_n.c: Misc optimizations from Robert Harley.
30366         * gmp-impl.h (MPZ_PROVOKE_REALLOC): New #define.
30368 Sat Apr 12 17:54:04 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30370         * mpz/tstbit.c: New file.
30371         * mpz/Makefile.in: Compile it.
30372         * make.bat: Likewise.
30373         * gmp.h (mpz_tstbit): Declare.
30375         * mpz/tests/logic.c: Use MPZ_CHECK_FORMAT.
30376         * mpz/tests/bit.c: New test.
30377         * mpz/tests/Makefile.in: Handle bit.c.
30379         * mpz/ior.c: In -OP2,+OP1 case, normalize OP2 after call to mpn_sub_1.
30381         * gmp-impl.h (MPZ_CHECK_FORMAT): New #define.
30383 Thu Apr 10 00:30:14 1997  Torbjorn Granlund  <tege@tmg.se>
30385         * longlong.h (POWER/PowerPC): Test _ARCH_PWR instead of _IBMR2.
30387 Wed Apr  9 18:23:31 1997  Torbjorn Granlund  <tege@pro.tmg.se>
30389         * gmp-impl.h: Move defaulting of UMUL_TIME and UDIV_TIME from here...
30390         * longlong.h: ...to here.
30392 Sun Mar 30 12:16:23 1997  Torbjorn Granlund  <tege@matematik.su.se>
30394         * mpn/generic/next_prime.c: New file.
30396         * mpn/generic/perfsqr.c: Remove definitions of PP and PP_INVERTED.
30397         * gmp-impl.h: Put them here.
30399 Fri Mar 28 08:18:05 1997  Torbjorn Granlund  <tege@matematik.su.se>
30401         * gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR): Define as inline asm for
30402         for x86, but leave disabled for now.
30404 Fri Feb 28 02:39:47 1997  Torbjorn Granlund  <tege@matematik.su.se>
30406         * mpn/Makefile.in (.S.o): Pass SFLAGS and CFLAGS also to compiler
30407         for assembly phase.
30408         (.s.o): Pass SFLAGS.
30410 Wed Feb 26 06:46:08 1997  Torbjorn Granlund  <tege@matematik.su.se>
30412         * mpn/configure.in: For Pentium Pro, use default code, not Pentium
30413         optimized code.
30415         * mpn/x86/addmul_1.S: Unroll and optimize for Pentium Pro.
30416         * mpn/x86/submul_1.S: Likewise.
30418 Thu Feb 13 08:26:09 1997  Torbjorn Granlund  <tege@matematik.su.se>
30420         * mpf/Makefile.in: Compile floor.o, ceil.o and trunc.o (from
30421         integer.c).
30422         * make.bat: Likewise.
30424 Wed Feb  5 05:58:44 1997  Torbjorn Granlund  <tege@matematik.su.se>
30426         * mpn/configure.in (alpha*): Add cntlz to extra_functions.
30428 Wed Feb  4 03:30:45 1997  Torbjorn Granlund  <tege@matematik.su.se>
30430         * mpf/integer.c: New file (supporting mpf_floor, mpf_ceil, mpf_trunc).
30432 Mon Feb  3 14:21:36 1997  Torbjorn Granlund  <tege@matematik.su.se>
30434         * make.bat: Fix typo, set_dfl_prc => set_dfl_prec.
30436 Sun Feb  2 02:34:33 1997  Torbjorn Granlund  <tege@matematik.su.se>
30438         * mpf/out_str.c: After outputting `-', decrement n_digits.
30440 Wed Jan  8 02:50:20 1997  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30442         * mpn/generic/divrem.c: qextra_limbs => qxn.
30444 Wed Dec 18 07:50:46 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30446         * mpz/tests/t-tdiv.c (SIZE): Increase to 200.
30448 Tue Dec 17 19:32:48 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30450         * mpn/generic/divrem.c (mpn_divrem_classic): New name for mpn_divrem.
30451         * gmp.h (mpn_divrem): New function.
30452         * mpn/generic/divrem_newton.c: New file.
30453         * mpn/configure.in (functions): Add divrem_newton.
30454         * make.bat: Likewise.
30456 Thu Dec 12 17:55:13 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30458         * gmp.h (_GMP_H_HAVE_FILE): Test also __dj_include_stdio_h_.
30460 Sat Dec  7 09:40:06 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30462         * mpn/alpha/invert-limb.s: New file.
30464 Thu Dec  5 01:25:31 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30466         * mpz/ui_pow_ui.c (mpz_pow2): New (static) function.
30467         (mpz_ui_pow_ui): Rewrite.
30469         * make.bat: `pre_mod_1.c' => `pre_mod_.c'.  Fix typo in path to
30470         gmp-mpar.h.
30472 Fri Nov 15 00:49:55 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30474         * mpz/ui_pow_ui.c: Rewrite for better speed.
30476 Fri Nov  1 16:36:56 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30478         * Makefile.in (recursive make rules): Use `&&' instead of `;' as
30479         delimiter.
30481 Fri Oct 25 17:12:36 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30483         * gmp-impl.h (Cray/uxp MPN_COPY): Really declare as inline.
30485 Thu Oct 24 15:08:19 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30487         * mpn/fujitsu/rshift.c: Fix typo in loop boundaries.
30489 Fri Oct 18 03:13:54 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30491         * mpn/configure.in: Recognize `nextstep' for m68k variants; likewise
30492         for x86 variants.
30494         * mpn/x86/syntax.h (INSND): New macro.
30495         * mpn/x86/[lr]shift.S: Use INSND.
30496         * mpn/x86/pentium/[lr]shift.S: Likewise.
30497         * mpn/config/t-oldgas (SFLAGS): Pass -DOLD_GAS.
30499         * gmp-impl.h: In code for determining endianness, test also
30500         __BIG_ENDIAN__ and __hppa__.  Remove test of __NeXT__.
30502 Wed Oct 16 03:50:34 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30504         * mpf/set_str.c: Let `prec' determine precision used in
30505         exponentiation code; decrease allocation accordingly.
30507         * mpn/vax: Change `jsob*' to `sob*' in all files.
30509 Tue Oct 15 03:54:06 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30511         * longlong.h (m88110 udiv_qrnnd): Change type of intermediate quotient
30512         to DImode (divu.d generates a 64-bit quotient).
30514         * configure.in (m88110*): Fix typo.
30516         * mpf/get_str.c: Compute exp_in_base using `double' to avoid overflow.
30518         * gmp-impl.h (struct bases): Change type of chars_per_bit_exactly from
30519         float to double.
30520         * mpn/mp_bases.c (__mp_bases): Give 17 digits for chars_per_bit_exactly
30521         field.
30523         * mpf/get_str.c: Let `prec' determine precision used in
30524         exponentiation code; decrease allocation accordingly.
30526 Sun Oct 13 03:31:53 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30528         * longlong.h: Major cleanup.
30529         (__udiv_qrnnd_c): Compute remainders using multiply and subtract,
30530         not explicit `%' operator.
30531         (C umul_ppmm): Get rid of a redundant __ll_lowpart.
30533         * mpz/invert.c: Properly detect all operands that would yield an
30534         undefined inverse; make sure the inverse is always positive.
30536         * mpz/xor.c: New file.
30537         * mpz/Makefile.in: Compile it.
30538         * make.bat: Likewise.
30539         * gmp.h (mpz_xor): Declare.
30541         * mpz/tests/logic.c: Also test mpz_xor.
30543         * mpz/lcm.c: Special case for when either operand equals 0.
30545 Sat Oct 12 01:57:09 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30547         * mpn/generic/gcd.c (find_a): Don't inline on x86.
30549         * Makefile.in (CFLAGS): Default to just `-g'.
30551         * configure.in: Recognize 386 and 486 wherever other x86 cpus are
30552         recognized.
30553         * configure.in: Use mt-x86 for all x86 cpus.
30554         * config/mt-x86: New file.
30556         * mpn/alpha/cntlz.s: New file.
30558 Tue Oct  8 00:16:18 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30560         * longlong.h: Define smul_ppmm for Fujitsu vpp/uxp.
30561         Rewrite umul_ppmm to actually work on the hardware.
30563         * mpn/x86/sub_n.S: Avoid parens around displacement of `leal'.
30564         * mpn/x86/add_n.S: Likewise.
30566         * mpn/x86/syntax.h (R): Define differently depending on __STDC__.
30568 Mon Oct  7 16:48:08 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30570         * longlong.h: Don't test for __NeXT__ in outer 68k conditional;
30571         add test for __m68k__.
30573 Sun Oct  6 00:59:09 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30575         * gmp.h: Declare mpn_random.
30576         * make.bat: Compile mpn/generic/random.c.
30578         * longlong.h: Define umul_ppmm for Fujitsu vpp/uxp.
30580         * gmp-impl.h: Protect definitions using `__attribute__ ((mode (...)))'
30581         with test also for __GNUC_MINOR__.
30583         * gmp.h: Don't define macros using __builtin_constant_p when using
30584         NeXT's compiler.
30586 Fri Oct  4 16:53:50 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30588         * mpz/lcm.c: New file.
30589         * mpz/Makefile.in: Compile it.
30590         * make.bat: Likewise.
30591         * gmp.h (mpz_lcm): Declare.
30593 Wed Sep 25 00:06:21 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30595         * mpq/tests/t-cmp_ui.c: Make sure numerator and denominator of `b' is
30596         within limits of an `unsigned long int'.
30598         * mpz/tests/t-powm_ui.c: Change type of exp2 to `unsigned long int'.
30600 Tue Sep 24 18:58:20 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30602         * mpz/powm_ui.c: Make result always positive.
30604         * urandom.h (urandom): Make it return mp_limb_t.
30606         * gmp-impl.h (CNST_LIMB): New macro.
30607         * mpn/mp_bases.c: Use CNST_LIMB.
30608         * mpn/generic/hamdist.c (popc_limb): Likewise.
30609         * mpn/generic/popcount.c (popc_limb): Likewise.
30610         * mpn/generic/perfsqr.c: Likewise.
30612 Fri Sep 20 03:08:10 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30614         * mpz/pprime_p.c: When n <= 3, don't clear out n before using it.
30616 Wed Sep 18 11:22:45 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30618         * mpn/fujitsu/mul_1.c: New file.
30619         * mpn/fujitsu/addmul_1.c: New file.
30620         * mpn/fujitsu/sub_n.c: New file.
30621         * mpn/fujitsu/add_n.c: Mew file.
30623 Sun Sep 15 03:13:02 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30625         * mpn/generic/random.c: New file.
30626         * mpn/configure.in (functions): Add `random'.
30628         * gmp-impl.h (MPN_COPY): Define as annotated inline function for
30629         Crays and Fujitsu VPPs.
30631         * gmp.h (mp_size_t): Define as `int' for non-MPP Cray.
30632         (mp_exp_t): Likewise.
30634         * configure.in: Add support for Fujitsu VPP machines.
30635         * mpn/configure.in: Likewise.
30636         * config.guess: Likewise.
30637         * config.sub: Likewise.
30639         * mpn/fujitsu/rshift.c: New file.
30640         * mpn/fujitsu/lshift.c: New file.
30641         * mpn/fujitsu: New directory, for Fujitsu VPP machines.
30643 Wed Sep 11 11:34:38 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30645         * mpn/generic/mul_n.c (__gmpn_mul_n): New name for impn_mul_n.
30646         Call __gmpn_mul_basecase, not impn_mul_n_basecase; update parameter
30647         list to work with __gmpn_mul_basecase.
30648         (__gmpn_sqr): New name for impn_sqr_n.
30649         Call __gmpn_sqr_basecase, not impn_sqr_n_basecase; update parameter
30650         list to work with __gmpn_sqr_basecase.
30651         (mpn_mul_n): Update calls to match new names and parameter conventions.
30652         * gmp-impl.h (MPN_MUL_N_RECURSE): Likewise.
30653         (MPN_SQR_RECURSE): New name for MPN_SQR_N_RECURSE.
30654         Update calls to match new names and parameter conventions.
30655         * mpn/generic/mul.c: Never perform multiply explicitly here, call
30656         __gmpn_mul_basecase instead.
30657         Update calls to match new names and parameter conventions.
30659         * mpn/x86/mul_basecase.S: New file.
30660         * mpn/generic/mul_basecase.c: New file.
30661         * mpn/generic/sqr_basecase.c: New file.
30663 Wed Sep  4 02:59:21 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30665         * mpz/set_str.c: Let `0b' and `0B' mean base 2.
30667 Fri Aug 30 00:44:00 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30669         * longlong.h (x86 umul_ppmm): Work around GCC bug that was
30670         triggered by Aug 28 change.
30672         * mpbsd/min.c (digit_value_in_base): New function.
30674         * mpz/set_str.c: Refine allocation size computation, use
30675         chars_per_bit_exactly instead of chars_per_limb.
30677         * mpbsd/Makefile.in (.c.o): Add -D_mpz_realloc=_mp_realloc.
30679 Wed Aug 28 02:52:14 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30681         * longlong.h (x86 umul_ppmm): Don't cast result operands.
30682         (x86 udiv_qrnnd): Likewise.
30683         (default smul_ppmm): Fix typo, umul_ppmm => smul_ppmm.
30684         (default umul_ppmm): New #define using smul_ppmm.
30685         (vax smul_ppmm): New #define.
30686         (vax umul_ppmm): Delete.
30687         (POWER umul_ppmm): Delete.
30688         (IBM 370 smul_ppmm): New #define.
30689         (IBM 370 umul_ppmm): Delete.
30690         (IBM RT/ROMP smul_ppmm): New #define.
30691         (IBM RT/ROMP umul_ppmm): Delete.
30693 Tue Aug 27 01:03:25 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30695         * gmp-impl.h (__gmp_0): Make it `const'.
30697         * mpn/Makefile.in (clean mostlyclean): Comment out recursive clean
30698         of `tests'.
30700         * mpn/generic/mul.c: Identify when we do squaring, and call
30701         impn_sqr_n_basecase/impn_sqr_n as appropriate.  Use
30702         KARATSUBA_MUL_THRESHOLD and KARATSUBA_SQR_THRESHOLD.
30703         Don't #define KARATSUBA_THRESHOLD.
30705         * mpn/generic/mul_n.c: Don't #define KARATSUBA_THRESHOLD.
30706         (impn_mul_n, impn_sqr_n): Rewrite, based on code contributed by
30707         Robert Harley.
30708         (impn_sqr_n_basecase): Rewrite.
30710         * gmp-impl.h (KARATSUBA_MUL_THRESHOLD): New #define.
30711         (KARATSUBA_SQR_THRESHOLD): Likewise.
30712         (MPN_SQR_N_RECURSE): Use KARATSUBA_SQR_THRESHOLD.
30713         (MPN_MUL_N_RECURSE): Use KARATSUBA_MUL_THRESHOLD.
30715         * configure.in: Fix typo in last change.
30717 Mon Aug 26 22:25:18 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30719         * mpn/generic/random2.c: Fix typo, `alpha__' => `__alpha'.
30720         * mpf/random2.c: Likewise.
30722 Sun Aug 25 00:07:09 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
30724         * mpz/tests/t-mul.c: Also test squaring.
30726 Fri Aug 16 05:12:08 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30728         * mp_clz_tab.c (__clz_tab): Declare as `const'.
30729         * version.c (gmp_version): Likewise.
30730         * mpn/generic/sqrtrem.c (even_approx_tab, odd_approx_tab): Likewise.
30732 Thu Aug 15 02:34:47 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30734         * gmp.h: Fix typo, `mips__' => `__mips'.
30736         * mpf/set_str.c: Allow a number to start with a period, if next
30737         position contains a digit.
30739 Tue Aug 13 18:41:25 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30741         * mpz/gcdext.c: Get cofactor sign right for negative input operands.
30742         Clean up code for computing tt.
30744         * mpz/invert.c: Get rid of variable `rv'.
30746         * mpz/divexact.c: Test for zero divisor in special case for zero
30747         dividend.
30749 Mon Aug 12 18:04:07 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30751         * mpz/?div_*_ui.c: Special case for division by 0.
30752         * mpz/tdiv_q.c: Likewise.
30754 Sat Aug 10 14:45:26 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30756         * mpz/dmincl.c: Special case for division by 0.
30758         * mpz/tdiv_*_ui.c: Delete special case for dividend being 0; handle
30759         it when computing size after mpn_divmod_1 call.
30761         * mp_bpl.c: (__gmp_junk): New variable.
30762         (__gmp_0): New constant.
30764         * gmp-impl.h (DIVIDE_BY_ZERO): New #define.
30766 Fri Aug  9 20:03:27 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30768         * mpz/divexact.c: Test for dividend being zero before testing
30769         for small divisors.
30771 Thu Aug  8 13:20:23 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30773         * configure.in: Require operating system specification for cpus
30774         where assembly syntax differs between system.
30776         * Makefile.in (many targets): Change `-' action prefix to `@'.
30778         * mpn/Makefile.in: (distclean): Fix typo.
30780         * mpq/cmp_ui.c: Rename function to _mpq_cmp_ui.
30781         (mpq_cmp_ui): #undef deleted.
30782         * mpz/cmp_si.c: Rename function to _mpz_cmp_si.
30783         (mpz_cmp_si): #undef deleted.
30784         * mpz/cmp_ui.c: Rename function to _mpz_cmp_ui.
30785         (mpz_cmp_ui): #undef deleted.
30786         * Makefile.in: Corresponding changes.
30788         * mpf/get_prc.c: Return the *highest* precision achievable.
30790         * mpf/get_str.c: Complete rewrite.
30792         * mpf/set_str.c (swapptr): New #define.
30793         (assert): New #define.
30794         * mpf/set_str.c: Set prec to one more than the saved _mp_prec.
30795         Misc cleanups.
30797         * mpz/set_str.c: #include string.h.
30798         * mpf/out_str.c: #include string.h.
30799         * mpbsd/xtom.c: #include string.h and ctype.h.
30800         * mpbsd/mout.c: #include string.h.
30802 Wed Aug  7 11:46:04 EDT 1996  Ken Weber <kweber@mcs.kent.edu>
30804         * mpn/generic/gcd.c: Reorder mpn_gcd argument list.
30805         * mpz/gcd.c: Change call to mpn_gcd.
30806         * gmp.texi: Update manual entry on mpn_gcd.
30807         * mpn/generic/bdivmod.c: Delete limb cache to make mpn_bdivmod
30808         reentrant.
30810 Wed Aug  7 02:15:38 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30812         * mpf/get_str.c: Rewrite code for converting integral part of a
30813         number with both an integral and fractional part.
30815         * mpf/set_str.c: Get rid of variable xxx.  New variables madj and radj.
30816         In exp_in_base==0 case, add madj to msize for EXP field.
30818         * mpz/tests/t-gcd.c: Test deleted.  Rename t-gcd2.c to t-gcd.c.
30819         Increase reps to 2000.
30820         * mpz/tests/t-gcd2.c: Get rid of mpz_refgcd.
30822         * mpf/set_str.c: Ignore excess limbs in MP,MSIZE.
30824 Thu Jul 25 04:39:10 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30826         * mpn/configure.in: Fix typo in setting path, "sparc" => "sparc32".
30828 Wed Jul 24 02:27:02 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30830         * mpn/generic/gcdext.c: Reorganize and clean up.  Get rid of all
30831         signed limb arithmetic.
30833 Mon Jul 22 02:39:56 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30835         * mpn/generic/gcdext.c (mpn_gcdext): For large enough operands,
30836         work with most significant *two* limbs.
30837         (div2): New function (two variants).
30838         (THRESHOLD): New #define.
30840         * mpz/gcdext.c: Fix typo in MPZ_TMP_INIT call.
30842         * longlong.h (alpha UMUL_TIME): Now 30.
30843         (alpha UDIV_TIME): Now 350.
30844         (x86 UMUL_TIME): Now 10 (let Pentium decide).
30845         (SuperSPARC UDIV_TIME): Override default.
30847         * extract-dbl.c (MP_BASE_AS_DOUBLE): Don't redefine here.
30849         * extract-dbl.c: New name for extract-double.c.
30850         * insert-dbl.c: New name for insert-double.c.
30851         * Makefile.in: Corresponding changes.
30852         * make.bat: Likewise.
30854         * mpz/Makefile.in (.c.o): Don't pass non-portable `-f' to cp.
30855         * mpq/Makefile.in: Likewise.
30856         * mpf/Makefile.in: Likewise.
30858 Sat Jul 20 01:35:18 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30860         * mpz/getlimbn.c: Take ABS of integer->_mp_size.
30862         * mpz/divexact.c: Use mpn_divmod_1 if divisor is a single limb.
30864 Thu Jul 18 00:31:15 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30866         * mpn/generic/popcount.c (popc_limb): Use different masking trick
30867         for first step (due to David Seal).
30868         * mpn/generic/hamdist.c (popc_limb): Likewise.
30870 Wed Jul 17 23:21:48 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30872         * mpn/generic/divrem.c: In MPN_COPY_DECR call, copy dsize - 1 limbs.
30874 Sun Jul 14 17:47:46 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30876         * configure.in: Handle sparc9, sparc64, and ultrasparc like sparc8.
30878 Thu Jul 11 14:05:54 1996  J.T. Conklin  <jtc@rtl.cygnus.com>
30880         * longlong.h (mc680x0): Define umul_ppmm, udiv_qrnnd, sdiv_qrnnd
30881         for the '020, '030, '040, and '332.  Define count_leading_zeros
30882         for the '020, '030, '040, and '060.
30884 Sun Jul 14 15:24:53 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30886         From Joe Keane:
30887         * mpq/equal.c: Take ABS of num1_size before passing it to mpn_cmp.
30889 Fri Jul 12 17:11:17 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30891         * mpn/generic/sqrtrem.c (SQRT): New asm for x86, but leave it
30892         disabled for now.
30894         * mpn/generic/sqrtrem.c: Use MP_BASE_AS_DOUBLE.
30896 Wed Jul 10 03:17:45 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30898         * cre-mparam.c: Delete obsolete file.
30900         * gmp.h: #define _LONG_LONG_LIMB if __mips && _ABIN32.
30901         * longlong.h: Test __mips instead of __mips__.
30903 Sun Jul  7 23:19:13 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30905         * longlong.h (_PROTO): Define, unless already defined.
30906         (alpha __udiv_qrnnd): Declare using _PROTO.
30907         (hppa __udiv_qrnnd): Likewise.
30908         (sparc __udiv_qrnnd): Likewise.
30910 Mon Jul  1 01:44:30 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30912         * config.guess: Update from master version; add Cray x90 handling.
30914 Wed Jun 26 05:35:02 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30916         * mpn/power/add_n.s (__mpn_add_n): Work around GAS bug.
30917         * mpn/power/sub_n.s (__mpn_sub_n): Likewise.
30919         * insert-double.c: Rework loop to avoid potential overflow.
30921         * mpq/get_d.c: For vax, if qsize > N_QLIMBS, ignore excess limbs.
30923         * mpq/tests/t-get_d.c (SIZE): Special case for vax.
30925         * gmp.h (mpX_cmp_ui): #define also when ! __GNUC__.
30927 Mon Jun 24 17:13:21 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30929         * longlong.h (vax sdiv_qrnnd): Fix typo.
30931 Sat Jun 15 01:33:33 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30933         * gmp.h: Support `small' and `large' type and function variants,
30934         controlled by GMP_SMALL.
30936         * mpz/Makefile.in (.c.o): Compile each function twice, for small and
30937         large variant.
30938         (MPZS_OBJS): New variable.
30939         (libmpz.a): Include MPZS_OBJS in archive.
30940         * mpf/Makefile.in: Analogous changes.
30941         * mpq/Makefile.in: Analogous changes.
30943         * gmp.h: Prefix all functions with __gmp, to allow namespace-clean
30944         internal calls.
30946         * mp.h: Rip out __MP_SMALL__ stuff.
30947         (__mpz_struct): mp_size_t => int.
30949         * mpz/invert.c: #include "gmp-impl.h".
30950         Use MPZ_TMP_INIT, not mpz_init.
30952         * mpz/gcdext.c: Rewrite to call mpn_gcdext.
30954 Fri Jun 14 18:05:29 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30956         * mpn/generic/gcdext.c (s0size): New parameter.
30957         * gmp.h (mpn_gcdext): Update prototype.
30959         * mpn/generic/gcdext.c: Major rewrite.
30961 Mon Jun 10 00:14:27 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30963         * mpn/generic/dump.c: Add missing `else'.
30965 Fri Jun  7 03:35:12 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30967         * Makefile.in (gmp_toc.html): Pass -expandinfo to texi2html.
30969 Thu Jun  6 19:00:53 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30971         * Version 2.0.2 released.
30973         * install.sh: New file.
30974         * Makefile.in (INSTALL): Use install.sh.
30975         (install-normal): New name for target `install'.
30976         (install): New dummy target.
30978         * mpz/pow_ui.c: Swap tests for (e == 0) and (bsize == 0).
30979         * mpz/ui_pow_ui.c: Swap tests for (e == 0) and (blimb == 0).
30981         * config/mt-linux (AR_FLAGS): New file.
30982         * configure.in: Use config/mt-linux for all linux systems.
30984 Tue Jun  4 03:42:18 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
30986         * Version 2.0.1 released.
30988         * mpf/tests/ref.c: Cast result of TMP_ALLOC to the right pointer type.
30990         * extract-double.c: Test _GMP_IEEE_FLOATS with #if, not plain if.
30992         * insert-double.c: Don't #include stdlib.h.
30994         * gmp-impl.h (union ieee_double_extract): Test sparc and __sparc.
30995         Do not test __sparc__.
30997         * mpf/reldiff.c: Change declaration to work around irix5 compiler bug.
30998         * mpq/equal.c: Likewise.
31000         * mpn/generic/gcd.c: Delete spurious comma at end of enumeration.
31002         * mpn/generic/gcdext.c: Add K&R declaration syntax.
31003         * stack-alloc.h: Likewise.
31004         * insert-double.c: Likewise.
31005         * extract-double.c: Likewise.
31006         * mpf/tests/reuse.c: Likewise.
31007         * mpz/tests/reuse.c: Likewise.
31008         * mpf/tests/t-sub.c: Likewise.
31009         * mpf/tests/t-add.c: Likewise.
31010         * mpf/tests/t-muldiv.c: Likewise.
31011         * mpf/tests/t-conv.c: Likewise.
31012         * mpf/tests/ref.c: Likewise.
31014         * mpn/config/t-oldgas: Renamed from t-freebsd.
31015         * mpn/configure.in: Use t-oldgas for freebsd, netbsd, and some linux
31016         configurations.
31018         * mpn/powerpc32/mul_1.s: Really clear cy before entering loop.
31019         * mpn/powerpc32/*.s: Fix power/powerpc syntax issues.
31021         * mpn/config/t-ppc-aix: New file.
31022         * mpn/configure.in: Use t-ppc-aix for powerpc like t-pwr-aix for power.
31024 Wed May 29 02:07:31 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31026         * gmp.h (mp_bits_per_limb): Change qualifier from `const' to
31027         __gmp_const.
31029         * gmp.h (mpf_init_set_str): Add `const' qualifier for 2nd parameter.
31030         * mpf/iset_str.c: Likewise.
31032 Mon May 27 00:15:58 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31034         * gmp-impl.h: Declare __gmp_extract_double.
31036         * mpz/set_q.c: Delete unused variables.
31038         * gmp.h (mpq_equal): Declare.
31040         * mpf/eq.c: mpf_cmp2 -> mpf_eq.
31042 Fri May 24 03:20:44 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31044         * mpz/iset_d.c: Don't include <math.h>.
31046         * insert-double.c (__gmp_scale2): New name for scal2.
31047         * mpz/get_d.c: Corresponding change.
31048         * mpf/get_d.c: Likewise.
31049         * mpq/get_d.c: Likewise.
31050         * gmp-impl.h: Declare __gmp_scale2.
31052         * mpn/generic/scan0.c: Clarify comment.
31054         * mpz/set_q.c: New file.
31055         * Makefile.in: Compile it.
31056         * make.bat: Likewise.
31057         * gmp.h: Declare mpz_set_q.
31059         * insert-double.c: New file.
31060         * Makefile.in: Compile it.
31061         * make.bat: Likewise.
31063         * mpz/get_d.c: New file.
31064         * mpz/Makefile.in: Compile it.
31065         * make.bat: Likewise.
31066         * gmp.h: Declare mpz_get_d.
31068         * mpf/get_d.c: New file.
31069         * mpf/Makefile.in: Compile it.
31070         * make.bat: Likewise.
31071         * gmp.h: Declare mpf_get_d.
31073         * make.bat: Compile things in alphabetical order.
31075         * gmp-impl.h (MP_BASE_AS_DOUBLE): New #define.
31076         (LIMBS_PER_DOUBLE): New #define.
31078         * extract-double.c: New file.
31079         * Makefile.in: Compile it.
31080         * make.bat: Likewise.
31081         * mpz/set_d.c: Rewrite to use __gmp_extract_double.
31082         * mpf/set_d.c: Likewise.
31084         * mpn/configure.in: Use t-pwr-aix also for aix 3.2.4 and up.
31086 Wed May 22 02:48:35 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31088         * gmp-impl.h: Rework code for defining ieee_double_extract.
31089         (IEEE_DOUBLE_BIG_ENDIAN): Macro removed.
31090         (_GMP_IEEE_FLOATS): New macro.
31091         * mpn/vax/gmp-mparam.h: Delete.
31093         * mpn/config/t-pwr-aix: New file.
31094         * mpn/configure.in: Use t-pwr-aix for aix 4 and later.
31096 Mon May 20 16:30:31 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31098         * gmp.h: In code for setting _GMP_H_HAVE_FILE, test more symbols.
31100         * mpf/tests/t-add.c (oo): Add some `l' printf modifiers.
31101         * mpf/tests/t-sub.c (oo): Likewise.
31102         * mpf/tests/t-conv.c (oo): Likewise.
31103         * mpf/tests/t-sqrt.c (oo): Likewise.
31105         * mpz/tests/t-mul.c (_mpn_mul_classic): Remove unused variables.
31107         * mpn/{pyr,i960,clipper}/*.s: Add missing copyright headers.
31109 Fri May 17 02:24:43 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31111         * mpz/set_d.c: Call _mpz_realloc.
31113         * mpq/set_z.c: New file.
31114         * mpq/Makefile.in: Compile it.
31115         * make.bat: Likewise.
31116         * gmp.h: Declare mpq_set_z.
31118         * mp?/Makefile.in (libmp?.a): Depend on Makefile, not Makefile.in.
31119         * mpf/Makefile.in (test): Delete spurious target.
31120         * mpq/Makefile.in (test): Likewise.
31122         * mpf/out_str.c: Use `e' to separate exponent when base <= 10.
31124         * mpn/configure.in: Treat ultrasparc just like sparc v8,
31125         until 64-bit compilers are ready.
31127         * mpf/set_d.c: Make it work for 64-bit machines.
31129 Thu May 16 20:53:57 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31131         * gmp-impl.h: Set IEEE_DOUBLE_BIG_ENDIAN to 0 for little-endian
31132         machines.
31133         * mpn/x86/gmp-mparam.h: Delete file.
31135         * configure.in: Treat microsparc like sparc8.
31137         * urandom.h: Test __alpha instead of __alpha__, since the former
31138         is the standard symbol.
31139         * mpn/generic/random2.c: Likewise.
31140         * mpf/random2.c: Likewise.
31142 Tue May 14 13:42:39 1996  Torbjorn Granlund  (tege@tiny.matematik.su.se)
31144         * mpz/set_f.c: New file.
31145         * mpz/Makefile.in: Compile it.
31146         * gmp.h: Declare mpz_set_f.
31148         * mpf/set_q.c: Simplify expression in rsize == nsize if-then-else arms.
31150 Tue May 14 13:03:07 1996  Torbjorn Granlund  (tege@tiny.matematik.su.se)
31152         * make.bat: Add all new files.
31154 Sun May 12 22:24:36 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31156         * mpf/set_z.c: New file.
31157         * mpf/Makefile.in: Compile it.
31158         * gmp.h: Declare mpf_set_z.
31160 Sat May 11 19:26:25 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31162         * gmp.h: Declare mpf_set_q.
31164         * mpf/set_q.c: Compute prec-1 limbs in mpn_divrem call.
31166 Fri May 10 17:37:38 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31168         * mpf/set_q.c: New file.
31169         * mpf/Makefile.in: Compile it.
31171         * config.sub: Recognize sparc8.
31173 Wed May  8 09:19:11 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31175         * mpf/tests/t-dm2exp.c: New file.
31177         * mpf/tests/t-add.c: Correct header comment.
31178         * mpf/tests/t-sub.c: Likewise.
31179         * mpf/tests/t-sqrt.c: Likewise.
31181         * mpf/div.c: Misc variable name cleanups.
31182         * mpf/div_ui.c: Base more closely on mpf/div.c.
31183         * mpf/ui_div.c: Likewise.
31185         * mpz/tests/Makefile.in (check): Depend on Makefile.
31186         * mpq/tests/Makefile.in (check): Likewise.
31187         * mpf/tests/Makefile.in (check): Likewise.
31189         * mpf/tests/t-muldiv.c: New file.
31190         * mpf/tests/Makefile.in: Compile and run `t-muldiv'.
31191         (t-ref.o): Delete spurious rule.
31193         * mpf/sqrt.c: Properly detect negative input operand.
31195         * mpf/sqrt_ui.c: Delete spurious header comment.
31196         * mpf/sqrt.c: Likewise.
31197         * mpz/sqrt.c: Likewise.
31199         * mpz/tests/reuse.c (main): Read `reps' from command line.
31201         * mpf/tests/reuse.c: New file.
31202         * mpf/tests/Makefile.in: Compile and run `reuse'.
31204         * mpf/mul_ui.c: Disable code for removing low zero limbs.
31206         * mpf/div.c: Fix condition for when vp and qp overlaps.
31208         * mpf/add_ui.c: When sum equals u, copy up to prec+1 limbs.
31210         * mpf/out_str.c: Don't output '\n' after exponent.
31212         * mpf/add_ui.c: New special case for when U is completely cancelled.
31214 Wed Apr 24 05:33:28 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31216         * Version 2.0 released.
31218         * All files: Update FSF's address.
31220         * Makefile.in (gmp_toc.html): New name for gmp.html.
31221         (TAGS): Depend on force.
31223         * mpf/tests/t-conv.c: Pass -base to mpf_set_str.
31225 Sat Apr 20 03:54:06 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31227         * Makefile.in (ps): New target, depend on gmp.ps.
31229 Fri Apr 19 14:03:15 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31231         * mpf/out_str.c: Print `@' before exponent, not `e'.
31233         * make.bat: Update from Makefiles.
31235 Thu Apr 18 01:22:05 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31237         * mpf/set_str.c: If parameter `base' is negative, expect exponent
31238         to be decimal, otherwise in the same base as the mantissa.
31240 Wed Apr 17 17:28:36 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31242         * mpf/set_dfl_prec.c: Don't return anything.
31243         * gmp.h: Corresponding changes.
31245         * mpf/set_dfl_prec.c: Use `unsigned long int' for bit counts.
31246         * mpf/init2.c: Likewise.
31247         * mpf/get_prc.c: Likewise.
31248         * mpf/set_prc.c: Likewise.
31249         * mpf/set_prc_raw.c: Likewise.
31250         * mpz/popcount.c: Likewise.
31251         * mpz/hamdist.c: Likewise.
31252         * mpz/scan1.c: Likewise.
31253         * mpz/scan0.c: Likewise.
31254         * mpn/generic/popcount.c: Likewise.
31255         * mpn/generic/hamdist.c: Likewise.
31256         * mpn/generic/scan1.c: Likewise.
31257         * mpn/generic/scan0.c: Likewise.
31258         * gmp.h: Likewise.
31260         * mpf/eq.c: New file, based on mpf/diff.c.
31261         * mpf/diff.c: Delete.
31262         * mpf/Makefile.in: Corresponding changes.
31263         * gmp.h: Likewise.
31265         * mpf/reldiff.c: New file.
31266         * mpf/Makefile.in: Compile it.
31267         * gmp.h: Declare mpf_reldiff.
31269         * mpz/iset_d.c: New file.
31270         * mpz/Makefile.in: Compile it.
31271         * gmp.h: Declare mpz_init_set_d.
31273 Tue Apr 16 16:28:31 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31275         * Makefile.in (gmp.html): Pass -acc to texi2html.
31277 Mon Apr 15 16:20:24 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31279         * mpf/set_str.c: Switch off code for defaulting the base from the
31280         leading characters.
31282         * gmp.h (mp?_sign): Delete.
31283         (mp?_sgn): New macros.
31285 Fri Apr 12 17:23:33 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31287         * Makefile.in (gmp.dvi): Delete tmp.* at end of rule.
31289 Wed Apr 10 22:52:02 1996  Torbjorn Granlund  (tege@tiny.matematik.su.se)
31291         * mpf/random2.c: Change of `exp' param, mp_size_t => mp_exp_t.
31292         * gmp.h: Corresponding change.
31294         * gmp.h (mp_bits_per_limb): Make it const.
31296 Sat Mar 30 01:20:23 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31298         * configure.in: Re-enable recognition of with_gcc.
31300         * mpf/Makefile.in (.c.o): Pass XCFLAGS.
31301         * mpn/Makefile.in (.c.o): Likewise.
31302         * mpz/Makefile.in (.c.o): Likewise.
31303         * mpq/Makefile.in (.c.o): Likewise.
31304         * mpbsd/Makefile.in (.c.o): Likewise.
31305         * mpf/tests/Makefile.in (.c.o): Likewise.
31306         * mpz/tests/Makefile.in (.c.o): Likewise.
31307         * mpq/tests/Makefile.in (.c.o): Likewise.
31309         * Makefile.in (XCFLAGS): Default to empty.
31310         (FLAGS_TO_PASS): Pass on XCFLAGS.
31311         (.c.o): Pass XCFLAGS.
31313         * config/mt-m88110 (XCFLAGS): Define instead of CC.
31314         * config/mt-sprc8-gcc (XCFLAGS): Likewise.
31315         * config/mt-supspc-gcc (XCFLAGS): Likewise.
31317         * configure: Don't default CC to "gcc -O2" is -with-gcc=no was
31318         specified.
31320 Mon Mar 25 01:07:54 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31322         * urandom.h: Test for __SVR4 in addition to __svr4__.
31324         * mp_bpl.c (mp_bits_per_limb): Declare as `const'.
31326         * Makefile.in (CFLAGS): `-O2' => `-O'.
31327         * mpn/Makefile.in (CFLAGS): Likewise.
31329         * gmp-impl.h: Get rid of obsolete field access macros.
31331         * mpn/mp_bases.c (__mp_bases): 1e39 => 1e38 to work around Solaris
31332         cc compiler bug.
31334         * gmp.h (__MPN): Make it work also for non-ANSI compilers.
31336 Thu Mar 21 01:07:54 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31338         * mpf/sub.c: New special case for ediff <= 1 before generic code.
31339         Simplify generic code for ediff == 0.
31340         Rename uexp => exp.
31342 Mon Mar 11 18:24:57 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31344         * mpf/tests/*.c: Use ref_mpf_sub for error calculation.
31345         * mpf/tests/Makefile.in: Link ref.o to all executables.
31347         * mpf/tests/t-sub.c: Make u = v + 1 with 50% probability.
31349 Sun Mar 10 21:03:17 1996  Torbjorn Granlund  (tege@tiny.matematik.su.se)
31351         * mpf/get_str.c: In digit development loop for fractions, change
31352         loop condition from `<' to `<='.
31354 Thu Mar  7 04:58:11 1996  Torbjorn Granlund  <tege@tiny.matematik.su.se>
31356         * mpn/mp_bases.c (__mp_bases): 1e100 => 1e39 to avoid overflow warning.
31358 Wed Mar  6 01:10:42 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31360         * mpf/tests/t-sqrt.c: New file.
31361         * mpf/tests/Makefile.in: Corresponding changes.
31363         * mpf/sqrt.c: Special case for square root of zero.
31365         * mpq/add.c: Clean up variable names.
31366         * mpq/sub.c: Update from mpq/add.c.
31368         * mpz/divexact.c: abs => ABS.
31369         * mpz/gcd.c: Likewise.  Rewrite final fixup code, to decrease
31370         allocation.  Misc cleanups.
31372 Tue Mar  5 22:24:56 1996  Torbjorn Granlund  <tege@matematik.su.se>
31374         * mpn/configure.in: Recognize linuxoldld as a synonym for linuxaout.
31376         * gmp.h (mpn_add, mpn_add_1, mpn_sub, mpn_sub_1): Add prototypes.
31378         * mpn/configure.in: Use t-freebsd also for netbsd.
31380 Mon Mar  4 15:13:28 1996  Torbjorn Granlund  <tege@matematik.su.se>
31382         * mpq/Makefile.in (cmp.o): Depend on longlong.h.
31384         * mpq/equal.c: New file.
31385         * mpq/Makefile.in: Corresponding changes.
31387         * mpf/tests/t-add.c: New file.
31388         * mpf/tests/t-sub.c: Renamed from t-addsub.c.
31389         * mpf/tests/ref.c: New file.
31390         * mpf/tests/Makefile.in: Corresponding changes.
31392         * gmp-impl.h (SIZ, ABSIZ, PTR, EXP, PREC, ALLOC): New #defines.
31394 Sun Mar  3 07:45:46 1996  Torbjorn Granlund  <tege@matematik.su.se>
31396         * mpf/set_str.c: In exponentiation code, allocate 3 extra
31397         limbs, not just 2.
31399         * mpf/get_str.c: Allocate sufficient space for tstr.
31400         When calculating exp_in_base, round result down.
31402         * mpf/tests/t-conv.c: New file.
31403         * mpf/tests/Makefile.in: Corresponding changes.
31405         * mp_bpl.c: New file.
31406         * gmp.h: Declare it.
31407         * Makefile.in: Corresponding changes.
31409 Sat Mar  2 06:27:56 1996  Torbjorn Granlund  <tege@matematik.su.se>
31411         * mpf/set_prc_raw.c: New file.
31412         * mpf/set_prc.c: Renamed from set_prec.c.
31413         * mpf/get_prc.c: New file.
31414         * mpf/Makefile.in: Corresponding changes.
31415         * gmp.h: Declare new functions.
31417         * mpn/generic/gcdext.c: Add copyright header.
31419 Fri Mar  1 01:22:24 1996  Torbjorn Granlund  <tege@matematik.su.se>
31421         * mpn/configure.in: For ppc601, search "power" before "powerpc32".
31423         * mp?/Makefile.in (AR_FLAGS): New variable.
31424         (libmp?.a): Use it.
31426         * make.bat: New file.
31427         * mpn/msdos: New directory.
31428         * mpn/msdos/asm-syntax.h: New file.
31430         * mpn/Makefile.in (distclean maintainer-clean): Delete asm-syntax.h.
31432         * config.sub: Recognize [ctj]90-cray.
31434         * mpn/configure.in: Recognize [ctj]90-cray-unicos*.
31436         * mpn/generic/gcdext.c: Don't use alloca directly, use TMP_* macros.
31438         * mpn/generic/gcd.c: Split increment from use of USIZE to avoid
31439         undefined behaviour.
31441 Thu Feb 29 04:11:24 1996  Torbjorn Granlund  <tege@matematik.su.se>
31443         * Makefile.in (install-info-files): Update for new install-info
31444         behaviour.
31446         * mpn/power/add_n.s: Rewrite.
31447         * mpn/power/sub_n.s: Rewrite.
31449 Wed Feb 28 01:34:30 1996  Torbjorn Granlund  <tege@matematik.su.se>
31451         * mpz/pow_ui.c: Compute allocation more aggressively for small bases.
31452         * mpz/ui_pow_ui.c: Likewise.
31454         * mpn/mp_bases.c (__mp_bases): Put huge value in 2nd field for index 1.
31456         * mpn/generic/sqrtrem.c: sizeof (mp_limb_t) => BYTES_PER_MP_LIMB.
31457         * mpn/generic/gcd.c: Likewise.
31458         (SIGN_BIT): Compute differently.
31460 Mon Feb 26 00:07:36 1996  Torbjorn Granlund  <tege@matematik.su.se>
31462         * All files: mp_limb => mp_limb_t, mp_limb_signed => mp_limb_signed_t.
31464         * Makefile.in (install, install-bsdmp, install-info-files): Depend
31465         on installdirs.  chmod all installed files.
31467 Sun Feb 25 01:47:41 1996  Torbjorn Granlund  <tege@matematik.su.se>
31469         * mpbsd/configure.in: Delete debugging code.
31471         * All Makefile.in: Update clean targets.
31473         * Makefile.in (AR_FLAGS): New variable.
31474         (libgmp.a): Use it.
31475         (libmp.a): Likewise.
31477         * VERSION: Delete file.
31479         * Makefile.in (installdirs): New target.
31480         * mkinstalldirs: New file (from the texinfo package).
31482         * Makefile.in (INSTALL, INSTALL_DATA, INSTALL_PROGRAM): New variables.
31483         (MAKEINFO, MAKEINFOFLAGS, TEXI2DVI): New variables.
31484         (install-info): New target.
31485         (install, install-bsdmp): Depend on install-info.
31486         ($(srcdir)/gmp.info): Changed from plain gmp.info; put info files
31487         into source directory.
31488         (distclean, mostlyclean): New targets.
31489         (maintainer-clean): New name for realclean.
31490         (uninstall): New target.
31491         (TAGS): New target.
31492         (info, dvi): New targets.
31493         (.PHONY): Assign.
31495         * Makefile.in (install, install-bsdmp): Use INSTALL_DATA.
31497         * mp{n,z,f,bsd}/move-if-change: Delete.
31499         * mpbsd/Makefile.in (stamp-stddefh): Delete target.
31501         * Makefile.in (.c.o): Pass CFLAGS last.
31502         * mpbsd/Makefile.in (.c.o): Likewise.
31503         * mpf/Makefile.in (.c.o): Likewise.
31504         * mpq/Makefile.in (.c.o): Likewise.
31505         * mpz/Makefile.in (.c.o): Likewise.
31506         * mpn/Makefile.in (.c.o): Likewise.
31507         (.S.o): Likewise.
31509         * memory.c: Change allocation error message.
31511         * Makefile.in (install): Prefix gmp.h with $(srcdir).
31512         (install-bsdmp): Prefix mp.h with $(srcdir).
31514         * mp{n,z,f,bsd}/{configure,config.sub}: Delete.
31516         * Makefile.in (gmp.dvi): Set TEXINPUTS also for 2nd tex invocation
31517         (install targets): Install gmp.info-N.
31519 Sat Feb 24 03:36:52 1996  Torbjorn Granlund  <tege@matematik.su.se>
31521         * mpf/get_str.c: Fix typo.
31523         * mpz/legendre.c: Clarify expression with extra parens.
31525         * version.c (gmp_version): Not static.
31527         * mpf/iset_str.c: Properly return error code.
31529         * mpf/add.c: Delete unused variables.
31530         * mpf/inp_str.c: Likewise.
31531         * mpq/get_d.c: Likewise.
31533         * mpn/generic/dump.c: #include <stdio.h>.
31534         * mpf/dump.c: Likewise.
31535         * mpf/set_str.c: #include <ctype.h>.
31536         (strtol): Declare.
31538         * gmp.h: mpn_sqrt => mpn_sqrtrem.
31540         * Makefile.in (clean, realclean): Clean in mpbsd.
31541         (check): Test in mpf.
31543         * mpf/Makefile.in (clean): Clean in tests.
31544         * mpq/Makefile.in (clean): Clean in tests.
31546         * mpf/tests/Makefile.in: New file.
31547         * mpf/tests/configure.in: New file.
31548         * mpf/tests/t-addsub.c: New file.
31550         * mpf/sub_ui.c: Simply call mpf_sub for now.
31552         * mpf/sub.c: Increase prec by 1.
31553         * mpf/ui_sub.c: Likewise.
31555 Fri Feb 23 00:59:54 1996  Torbjorn Granlund  <tege@matematik.su.se>
31557         * mpf/ui_sub.c: Fix typos.
31559         * mpf/get_str.c: When allocating space for tmp, allow for an extra
31560         limb.  In code for fraction conversion, add special case for bases
31561         that are a power of 2.
31563         * mpf/out_str.c: Output leading "0.".
31564         Default base to 10, before computing string allocation.
31566         * mpf/get_str.c: Make variables for string size have type size_t.
31567         * gmp.h: Corresponding change.
31569         * mpf/random2.c: Allow creation of prec+1 large mantissas.
31571         * mpf/add_ui.c: Don't abort if u < 0; special case for u <= 0.
31572         Fix typo in MPN_COPY offset.
31573         * mpf/sub_ui.c: Analogous changes.
31575         * mpf/set_prec.c: Rewrite.
31577         * mpf/init2.c: Compute precision as in set_prec.c.
31579         * mpf/div_2exp.c: Special case for u == 0.
31580         * mpf/mul_2exp.c: Likewise.  Write r->_mp_size always.
31582         * mpf/sqrt_ui.c: mpn_sqrt => mpn_sqrtrem.
31583         * mpf/sqrt.c: Likewise.  When computing new exponent, round quotient
31584         towards -infinity.
31586         * mpf/add.c: Fix typos.
31587         * mpf/sub.c: Fix typos.
31589 Thu Feb 22 00:24:48 1996  Torbjorn Granlund  <tege@matematik.su.se>
31591         * mpz/Makefile.in (stamp-stddefh): Delete target.
31592         (test): Delete target.
31593         * Makefile.in (stamp-stddefh): Delete target.
31594         (cre-stddefh.o): Delete target.
31595         (gmp.dvi): Set TEXINPUTS before invoking tex.
31597         * cre-stddefh.c: Delete.
31599         * mpz/sqrt.c: Fix typo.
31601         * mpz/powm.c: Special case for mod == 0.
31602         * mpz/powm_ui.c: Likewise.
31604         * mpz/get_si.c: Handle -0x80000000 correctly.
31606         * mpz/inp_str.c: Now returns size_t.
31607         Make it return number of bytes read or error indication.
31608         * mpf/inp_str.c: Likewise.
31610         * mpz/out_raw.c: Replace by mpz/out_binary.c, with modifications.
31611         * mpz/inp_raw.c: Rewrite, using mpz/inp_binary as a base.
31612         * mpz/inp_binary.c: Delete.
31614         * mpn/Makefile.in (XCFLAGS): Remove variable.
31615         (.c.o): Don't pass XCFLAGS.
31616         (SFLAGS): Set to nothing.
31617         (.S.o): Pass SFLAGS, not XCFLAGS.
31619         * mpn/config/t-freebsd (SFLAGS): New name for XCFLAGS.
31621         * mpf/out_str.c: Make return number of bytes written or error
31622         indication.
31623         * mpz/out_str.c: Likewise.
31624         * gmp.h: Corresponding changes.
31626         * gmp.h (__mpz_struct): mp_size_t => int.
31627         (__mpq_struct): Likewise.
31628         (__mpf_struct): Likewise.
31629         (mp_size_t): int => long int.
31631         * mpn/cray: New directory.
31632         * mpn/cray/gmp-mparam.h: New file.
31633         * mpn/configure.in: Recognize cray variants.
31635         * Makefile.in: Set defaults for prefix, libdir, etc.
31636         (install): New target.
31637         (install-bsdmp): New target.
31638         (gmp.html): New target.
31640         * stack-alloc.c (__tmp_alloc): Cast void ptrs to char * in comparison.
31642 Wed Feb 21 04:35:02 1996  Torbjorn Granlund  <tege@matematik.su.se>
31644         * gmp.h: Sort mpn declarations.
31645         (mpn_gcdext): Add declaration.
31647         * mpn/generic/divrem_1.c: New file.
31648         * mpn/Makefile.in (divrem_1.o): New rule.
31649         * configure.in (functions): Add divrem_1.
31651         * mpn/generic/divmod.c: Delete file.
31652         * mpn/configure.in (functions): Delete divmod.
31653         * Makefile.in (divmod.o): Delete rule.
31654         * gmp.h (mpn_divmod): New #define.
31656         * gmp.h (mpn_next_bit_set): Delete spurious declaration.
31658         * mpn/generic/divrem.c (default case): In code assigning
31659         most_significant_q_limb, move reassignment of n0 into if statement.
31661         * gmp.h (mpf_inp_str): Fix typo.
31662         (mpf_out_str): Make prototype match reality.
31663         * mpf/inp_str.c: New file.
31664         * mpf/out_str.c: New file.
31665         * mpf/Makefile.in: Compile new files.
31667         * mpn/Makefile.in (dump.o): Fix dependency path.
31668         (inlines.o): Likewise.
31670         * mpn/configure.in: Make m68060 be the same as m68000.  Clean up
31671         m68k configs.
31673 Tue Feb 20 01:35:11 1996  Torbjorn Granlund  <tege@matematik.su.se>
31675         * mpn/generic/sqrtrem.c: Renamed from sqrt.
31676         * mpn/configure.in (functions): Corresponding change.
31677         * mpn/Makefile.in: Likewise.
31678         * mpz/sqrtrem.c: Likewise.
31679         * mpz/sqrt.c: Likewise.
31680         * mpn/generic/perfsqr.c: Likewise.
31682         * Makefile.in (clean): Also remove libmp.a.
31683         Don't compile cre-conv-tab.c or mp_bases.c.
31684         cre-conv-tab.c: Delete file.
31685         (gmp.ps): New rule.
31687         * mpn/mp_bases.c: New file.
31688         * mpn/Makefile.in: Compile mp_bases.c.
31690         * mpz/set_str.c: Skip initial whitespace.
31691         * mpf/set_str.c: Likewise.
31692         * mpbsd/xtom.c: Likewise.
31694         * gmp.h: Add missing mpz declarations.
31695         Delete all formal parameter names from declarations.
31697         * mpn/Makefile.in: Add dependencies for .c files.
31699         * Makefile.in (check): Write recursive make calls separately, not as
31700         a loop.
31701         (FLAGS_TO_PASS): New variable.  Use it for most recursive makes.
31703 Mon Feb 19 01:02:20 1996  Torbjorn Granlund  <tege@matematik.su.se>
31705         * mpn/Makefile.in (.S.o): Pipe cpp output to grep in order to delete
31706         lines starting with #.
31707         (CPP): Set to $(CC) -E to avoid gcc dependency.
31709         * mpn/m68k/syntax.h (moveql): Define to moveq for MIT_SYNTAX.
31711         * mpn/hppa/hppa1_1/pa7100/addmul_1.S: Fix typo in s1_ptr alignment
31712         code.
31713         * mpn/hppa/hppa1_1/pa7100/submul_1.S: Likewise.
31715         * gmp.h: Fix typos in #defines of recently added mpn functions.
31717         * mpz/inp_str.c: Skip all whitespace, not just plain space.
31718         * mpbsd/min.c: Likewise.
31720         * mpn/configure.in (functions): Add gcdext.
31721         * mpn/generic/gcdext.c: New file.
31723         * mpz/legendre.c: mpz_div_2exp => mpz_tdiv_q_2exp.
31725         * gmp.h: Surround mpn declarations with extern "C" { ... }.
31727         * Makefile.in (check): New target.
31729         * mpq/get_d.c: Update comments.  Use rsize instead of dsize + N_QLIMBS
31730         when possible.  Add special case for nsize == 0.
31732         * gmp.h (mpq_get_d): Add declaration.
31733         (mpq_canonicalize): Likewise.
31734         (mpq_cmp_ui): Likewise.
31735         (mpf_diff): Likewise.
31736         (mpf_ui_sub): Likewise.
31737         (mpf_set_prec): Likewise.
31738         (mpf_random2): Likewise.
31740         * gmp.h (mpz_cmp_ui): New #define.
31741         (mpz_cmp_si): New #define.
31742         (mpq_cmp_ui): New #define.
31743         (mpz_sign): New #define.
31744         (mpq_sign): New #define.
31745         (mpf_sign): New #define.
31746         (mpq_numref): New #define.
31747         (mpq_denref): New #define.
31749         * mpq/set_z.c: File deleted.
31750         * mpq/Makefile.in: Corresponding changes.
31752 Sun Feb 18 01:34:47 1996  Torbjorn Granlund  <tege@matematik.su.se>
31754         * mpbsd/sdiv.c: Use _mp_realloc, not _mpz_realloc.
31756         * mpz/inp_binary.c: Default stream to stdin.
31757         * mpz/inp_str.c: Likewise.
31758         * mpz/inp_raw.c: Likewise.
31759         * mpz/out_binary.c: Default stream to stdout.
31760         * mpz/out_raw.c: Likewise.
31761         * mpz/out_str.c: Likewise.
31763         * mpbsd/realloc.c: New file.
31764         * mpbsd/Makefile.in: Corresponding changes.
31766         * mpbsd/min.c: Rewrite (base on mpz/inp_str.c).
31767         * mpbsd/mtox.c: Rewrite (base on mpz/get_str.c).
31769         * mpbsd/mout.c: Rewrite (base on mpz/out_str) but make it output
31770         spaces in each 10th position.
31771         * mpbsd/xtom.c: Rewrite (base on mpz/set_str).
31773         * mpq/tests/Makefile.in (st-cmp): New file.
31774         * mpq/tests/configure.in (srcname): New file.
31776         * mpz/tests/configure.in (srcname): Fix typo.
31778         * mpq/cmp.c: Add check using number of significant bits, to avoid
31779         general multiplication.
31781 Sat Feb 17 11:58:30 1996  Torbjorn Granlund  <tege@matematik.su.se>
31783         * mpq/cmp_ui.c: Store cy_limb after the mpn_mul_1 calls.
31785         * mpq/tests: New directory.
31786         * mpq/tests/t-cmp.c: New file.
31787         * mpq/tests/t-cmp_ui.c: New file.
31789         * mpz/tests/dive.c (main): Generate zero numerator.
31790         (get_random_size) : Delete.
31792         * mpz/divexact.c: Add special case for 0/x.
31794         * gmp.h (mpz_mod): Add declaration.
31796 Fri Feb 16 18:18:39 1996  Andreas Schwab  <schwab@informatik.uni-dortmund.de>
31798         * mpn/m68k/*: Rewrite code not to use the INSN macros.
31799         (L): New macro to properly prefix local labels for ELF.
31801 Fri Feb 16 00:20:56 1996  Torbjorn Granlund  <tege@matematik.su.se>
31803         * gmp-impl.h (ieee_double_extract): Use plain `unsigned int' for
31804         fields.
31805         * mpn/generic/inlines.c (_FORCE_INLINES): New #define.  Delete
31806         conditional __GNUC__.
31807         * gmp.h (mpn_add, mpn_sub, mpn_add_1, mpn_sub_1):
31808         Only define these if __GNUC__ || _FORCE_INLINES.
31809         * mpf/random2.c: Add missing parameter in non-ANSI header.
31810         * mpn/generic/gcd.c (SIGN_BIT): Do as #define to work around bug
31811         in AIX compilers.
31812         * mpq/get_d.c: #define N_QLIMBS.
31813         * mpz/divexact.c: Obscure division by 0 to silent compiler warnings.
31814         * stack-alloc.c: Cast void* pointer to char* before doing arithmetic
31815         on it.
31817         * Makefile.in (mpbsd/libmpbsd.a): New rule.
31818         * configure.in (configdirs): Add mpbsd.
31820         * gmp.h: Add declarations for a few missing mpn functions.
31822         * Makefile.in (libmp.a): New rule.
31824         * mpbsd/mdiv.c: #include "dmincl.c", not "mpz_dmincl.c"
31825         * gmp.h: Move #define of __GNU_MP__ into the `#if __GNU_MP__' block.
31826         * mp.h: Likewise.  Update typedefs from gmp.h.
31827         * mpbsd/configure.in: New file.
31828         * mpbsd/Makefile.in: New file.
31829         * mpbsd/configure: Link to master configure.
31830         * mpbsd/config.sub: Link to master config.sub.
31832         * Makefile.in: Set RANLIB_TEST.
31833         * (libgmp.a): Use it.
31834         * (libgmp.a): Do ranlib before moving the libgmp.a to the build
31835         directory.
31836         * mp?/Makefile.in: Don't use or set RANLIB.
31838 Thu Feb 15 16:38:41 1996  Torbjorn Granlund  <tege@matematik.su.se>
31840         * mpz/add_ui.c: MP_INT => mpz_t.
31841         * mpz/cmp_ui.c: Likewise.
31842         * mpz/fac_ui.c: Likewise.
31843         * mpz/inp_binary.c: Likewise.
31844         * mpz/inp_raw.c: Likewise.
31845         * mpz/legendre.c: Likewise.
31846         * mpz/jacobi.c: Likewise.
31847         * mpz/out_binary.c: Likewise.
31848         * mpz/out_raw.c: Likewise.
31849         * mpz/random2.c: Likewise.
31850         * mpz/random.c: Likewise.
31851         * mpz/realloc.c: Likewise.
31853         * mpz/legendre.c: __mpz_2factor(X) => mpz_scan1(X,0),
31854         __mpz_odd_less1_2factor => mpz_scan1(X,1).
31855         * mpz/ntsup.c: File deleted.
31856         * mpz/Makefile.in: Corresponding changes.
31858         * mpz/pprime_p: Use mpz_scan1 to avoid looping.
31860         * mpz/fac_ui.c: Type of `k' and `p' is `unsigned long'.
31861         * mpz/pprime_p.c: Pass long to *_ui functions.
31862         * mpz/gcdext.c: Likewise.
31863         * mpz/fdiv_r_2exp.c: Likewise.
31864         * mpz/fac_ui.c: Likewise.
31866         * mpz/powm.c: Don't use mpn_rshift when mod_shift_cnt is 0.
31868         * mpz/tests/Makefile.in (st-sqrtrem): Fix typo.
31870         * mpz/cmp_ui.c: #undef mpz_cmp_ui.
31871         * mpz/cmp_si.c: #undef mpz_cmp_si.
31872         * gmp.h (mpz_cmp_ui): New #define.
31873         (mpz_cmp_si): New #define.
31875 Wed Feb 14 22:11:24 1996  Torbjorn Granlund  <tege@matematik.su.se>
31877         * gmp.h: Test __cplusplus in addition to __STDC__.
31878         * gmp-impl.h: Likewise.
31880         * gmp.h: Surround declarations with extern "C" { ... }.
31882 Tue Feb 13 15:20:45 1996  Torbjorn Granlund  <tege@matematik.su.se>
31884         * mpz/fdiv_r_2exp.c: Use MPN_NORMALIZE.
31885         * mpz/tdiv_r_2exp.c: Likewise.
31887         * mpz/fdiv_r_2exp.c: New file.
31888         * mpz/fdiv_q_2exp.c: New file.
31889         * mpz/tdiv_r_2exp.c: Renamed from mpz/mod_2exp.c.
31890         * mpz/tdiv_q_2exp.c: Renamed from mpz/div_2exp.c
31891         * mpz/Makefile.in: Corresponding changes.
31893         * mpz/scan0.c,scan1.c: New files.
31894         * mpz/Makefile.in: Compile them.
31896         * gmp.h (mpn_normal_size): Delete.
31898         * config.guess: Update from Cygnus version.
31900         * mpn/m68k/rshift.S: Use INSN2 macro for lea instructions.
31901         * mpn/m68k/lshift.S: Likewise.
31903         * mpn/configure.in: Fix configuration for plain 68000.
31905 Mon Feb 12 01:06:06 1996  Torbjorn Granlund  <tege@matematik.su.se>
31907         * mpz/tests/t-powm.c: Generate negative BASE operand.
31909         * mpz/powm.c: Make result always positive.
31911 Sun Feb 11 01:44:56 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31913         * mpz/tests/*.c: Add t- prefix.
31914         * mpz/tests/Makefile.in: Corresponding changes.
31915         * mpz/tests/configure.in: Update srctrigger.
31917         * mpz/tests/gcd.c: Generate negative operands.
31918         * mpz/tests/gcd2.c: Likewise.
31920         * mpz/gcdext.c: At end, if G is negative, negate all G, S, and T.
31922 Thu Feb  8 17:16:12 UTC 1996 Ken Weber <kweber@mat.ufrgs.br>
31924         * mp{z,n}/gcd.c: Change mpn_gcd interface.
31925         * gmp.h: Ditto.
31926         * gmp.texi: update documentation.
31928 Mon Feb  7 23:58:43 1996  Andreas Schwab  <schwab@informatik.uni-dortmund.de>
31930         * mpn/m68k/{lshift,rshift}.S: New files.
31931         * mpn/m68k/syntax.h: New ELF_SYNTAX macros.
31932         (MEM_INDX, R, PROLOG, EPILOG): New macros.
31933         * mpn/m68k/*.S: Use R macro with register name.  Use PROLOG and EPILOG
31934         macros.  Rename `size' to `s_size' or s1_size to avoid clash with ELF
31935         .size directive.
31936         * mpn/configure.in: New target m68k-*-linux*.
31938 Wed Feb  7 07:41:31 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31940         * Makefile.in (cre-conv-tab): Workaround for SunOS make.
31942         * mpz/tests/reuse.c: New file.
31943         * mpz/tests/Makefile.in: Handle reuse.c.
31945 Tue Feb  6 11:56:24 UTC 1996 Ken Weber <kweber@mat.ufrgs.br>
31947         * mpz/gcd.c: Fix g->size when one op is 0 and g == other op.
31949 Tue Feb  6 01:36:39 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31951         * gmp.h (mpz_divexact): Delete parameter names.
31952         (mpz_lcm): Delete spurious declaration.
31954         * mpz/dmincl.c: Fix typo.
31956 Mon Feb  5 01:11:56 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31958         * mpn/generic/gcd.c (gcd_2): Declare consistently.
31960         * mpz/tdiv_q.c: Optimize division by a single-limb divisor.
31961         * mpz/dmincl.c: Likewise.
31963         * mpz/add.c: Use MPN_NORMALIZE instead of mpn_normal_size.
31964         * mpz/sub.c: Likewise.
31965         * mpn/generic/sqrt.c: Likewise.
31967         * mpn/tests/{add_n,sub_n,lshift,rshift}.c: Put garbage in the
31968         destination arrays.
31970 Fri Feb  2 02:21:27 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31972         * mpz/{jacobi.c,legendre.c,ntsup.c,invert.c}: New files.
31973         * mpz/Makefile.in: Compile them.
31975         * mpn/Makefile.in (INCLUDES): Don't search in `generic'.
31977 Thu Feb  1 02:15:11 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31979         Change from Ken Weber:
31980         * mpz/divexact.c: Make it work when quot is identical to either input.
31982         * mpf/ui_sub.c: New file.
31983         * mpf/Makefile.in: Compile it.
31985         * gmp-impl.h (MPZ_TMP_INIT): alloca -> TMP_ALLOC.
31986         * mpz/{c,f}div_{q,qr,r}.c: Use TMP_DECL/TMP_MARK/TMP_FREE since
31987         these use MPZ_TMP_INIT.
31988         * mpz/mod.c: Likewise.
31989         * mpq/{add,sub}.c: Likewise.
31990         * mpq/canonicalize: Likewise.
31992         * mpq/{add,sub,mul,div}.c: Use mpz_divexact. MP_INT -> mpz_t.
31993         * mpq/canonicalize.c: Likewise.
31995 Wed Jan 31 01:45:00 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
31997         * mpn/generic/gcd.c: Misc changes from Ken.
31999         * mpz/tests/gcd2.c: New file.
32000         * mpz/tests/Makefile.in: Handle gcd2.c.
32002         * mpn/generic/gcd.c (mpn_gcd): When GCD == ORIG_V, return vsize,
32003         not orig_vsize.  Fix parameter declaration.
32005         * mpz/mod_ui.c: Delete file.
32006         * mpz/Makefile.in: Don't try to compile mod_ui.
32008         * mpz/cdiv_*_ui.c): Make them work right.
32009         * gmp.h: Declare cdiv*.
32011 Tue Jan 30 02:22:56 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32013         * mpz/{cdiv_q.c,cdiv_q_ui.c,cdiv_qr.c,cdiv_qr_ui.c,cdiv_r.c,
32014         cdiv_r_ui.c,cdiv_ui.c}: New files.
32015         * mpz/Makefile.in: Compile them.
32017         * All files: Make file permissions right.
32019         Changes from Ken Weber:
32020         * mpn/generic/accelgcd.c: Delete.
32021         * mpn/generic/bingcd.c: Delete.
32022         * mpn/generic/numbits.c: Delete.
32023         * mpn/generic/gcd.c: New file.
32024         * mpn/configure.in (functions): Update accordingly.
32025         * mpz/divexact.c: New file.
32026         * mpz/Makefile.in: Compile divexact.c.
32027         * mpz/gcd.c: Rewrite to accommodate for gcd changes in mpn.
32028         * gmp.h: declare new functions, delete obsolete declarations.
32029         * mpz/tests/dive.c: New file.
32030         * mpz/tests/Makefile.in: Handle dive.c.
32032 Mon Jan 29 03:53:24 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32034         * mpz/random.c: Handle negative SIZE parameter.
32036         * mpz/tests/tdiv(_ui).c: New name for tst-dm(_ui).c.
32037         * mpz/tests/tst-mdm(_ui).c: Delete.
32038         * mpz/tests/fdiv(_ui).c: New test based in tst-mdm(_ui).
32039         * mpz/tests/*.c: Get rid of tst- prefix for DOS 8+3 naming.
32040         * mpz/tests/Makefile.in: Corresponding changes.
32041         * mpz/tests/configure.in: Update srctrigger.
32043         * mpn/generic/divmod.c: Update from divrem.
32044         * mpn/generic/divrem.c: Misc cleanups.
32046 Sun Jan 28 03:25:08 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32048         * All files: Use new TMP_ALLOC interface.
32050         * mpz/powm_ui.c: Make Jan 25 changes to powm.c also here.
32052         * mpz/tests/powm_ui.c: New file.
32053         * mpz/tests/Makefile.in: Add rules for tst-powm and tst-powm_ui.
32055         * Makefile.in: Update dependency list.
32056         * mpf/Makefile.in: Likewise.
32057         * mpz/Makefile.in: Likewise.
32058         * mpq/Makefile.in: Likewise.
32059         * Makefile.in: Set RANLIB simply to ranlib, and allow configure
32060         to override it.
32062         * mpz/Makefile.in (conf): Delete spurious target.
32063         (mp_bases.c): Delete.
32064         (cre-conv-tab rules): Delete.
32066         * Makefile.in (cre-conv-tab): Greatly simplify.
32068 Sat Jan 27 13:38:15 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32070         * stack-alloc.c: New file.
32071         * stack-alloc.h: New file.
32073         * gmp.h (__gmp_inline): Define using __inline__.
32075 Thu Jan 25 00:28:37 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32077         * mpn/generic/scan0.c: New file.
32078         * mpn/generic/scan1.c: Renamed from next_bit.c.
32079         * mpn/configure.in (functions): Include scan0 and scan1.
32081         * mpn/m68k/*: #include sysdep.h.  Use C_GLOBAL_NAME.
32083         * configure: Update from Cygnus version.
32084         * config.guess: Likewise.
32085         * config.sub: Likewise.
32086         * configure: Pass --nfp to recursive configures.
32088         * mpz/tests/tst-*.c: Adjust SIZE and reps.
32090         * mpz/powm.c: Move esize==0 test earlier.
32091         In final reduction of rp,rsize, don't call mpn_divmod unless
32092         reduction is really needed.
32094         * mpz/tests/tst-powm.c: Fix thinko in checking code.
32096         * All files: Get rid of `__' prefix from mpn_* calls and declarations.
32097         * gmp.h: #define __MPN.
32098         * gmp.h: Use __MPN in #defines for mpn calls.
32100         * mpn/generic/mul_n.c: Prepend `i' to internal routines.
32101         * gmp-impl.h: Add #defines using __MPN for those internal routines.
32103         * mpn/generic/sqrt.c: Change call to mpn_mul to mpn_mul_n.
32105 Wed Jan 24 13:28:19 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32107         * mpn/sparc32/udiv_fp.S: New name for udiv_qrnnd.S.
32108         * mpn/sparc32/udiv_nfp.S: New name for v8/udiv_qrnnd.S.
32109         * mpn/sparc32/v8/supersparc: New directory.
32110         * mpn/sparc32/v8/supersparc/udiv.S: New file.
32112 Tue Jan 23 01:10:11 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32114         This major contribution is from Ken Weber:
32115         * mpn/generic/accelgcd.c: New file.
32116         * mpn/generic/bdivmod.c: New file.
32117         * mpn/generic/bingcd.c: New file.
32118         * mpn/generic/gcd_1.c: Rewrite.
32119         * mpn/generic/numbits.c: New file (to go away soon).
32120         * mpz/gcd.c: Rewrite.
32121         * mpz/tests/tst-gcd.c (SIZE): Now 128.
32122         * gmp.h: Declare new functions.
32123         * mpn/configure.in (functions): List new files.
32124         * gmp-impl.h (MPN_SWAP): Delete.
32125         (MPN_LESS_BITS_LIMB, MPN_LESS_BITS, MPN_MORE_BITS): Delete.
32126         (MPN_COMPL_INCR, MPN_COMPL): Delete.
32128 Mon Jan 22 02:04:59 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32130         * gmp.h (mpn_name): New #define.
32132         * mpn/m88k/mc88110/addmul_1.s: New file.
32133         * mpn/m88k/mc88110/add_n.S: New file.
32134         * mpn/m88k/mc88110/sub_n.S: New file.
32136         * mpn/m88k/sub_n.s: Correctly initialize carry.
32138         * mpn/sparc32/{add_n.S,sub_n.S,lshift.S,rshift.S): `beq' => `be'.
32140 Sun Jan 21 00:04:35 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32142         * mpn/sparc64/addmul_1.s: New file.
32143         * mpn/sparc64/submul_1.s: New file.
32144         * mpn/sparc64/rshift.s: New file.
32146 Sat Jan 20 00:32:54 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32148         * mpz/iset.c: Fix typo introduced Dec 25.
32150 Wed Jan 17 13:16:44 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32152         * config/mt-sprc8-gcc: New name for mt-sparc8-gcc.
32153         * config/mt-sparcv8-gcc: Delete.
32154         * configure.in: Corresponding changes.
32156 Tue Jan 16 16:31:01 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32158         * gmp-impl.h: #include alloca.h when necessary.
32160         * longlong.h: Test __alpha instead of __alpha__, since the former
32161         is the standard symbol.
32163 Mon Jan 15 18:06:57 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32165         * mpn/sparc64/mul_1.s: Swap operands of mulx instructions.
32166         * mpn/sparc64/lshift.s: New file.
32168 Fri Dec 29 17:34:03 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32170         * mpn/x86/pentium/add_n.S: Get rid of #defines for register names.
32171         * mpn/x86/pentium/sub_n.S: Likewise.
32173 Thu Dec 28 03:16:57 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32175         * mpn/x86/pentium/mul_1.S: Rework loop to avoid AGI between update
32176         of loop induction variable and load insn at beginning of loop.
32177         * mpn/x86/pentium/addmul_1.S: Likewise.
32178         * mpn/x86/pentium/submul_1.S: Likewise.
32180 Mon Dec 25 23:22:55 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32182         * All files: Prefix user-visible structure fields with _mp_.
32184 Fri Dec 22 20:42:17 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32186         * mpn/configure.in (m68k configs): Terminate path variable with
32187         plain "m68k".
32189 Fri Dec 22 03:29:33 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32191         * mpn/sparc32/add_n.S: Update from sub_n.S to fix bugs, and to
32192         clean things up.
32194         * mpn/configure.in (m68k configs): Update #include path for new
32195         mpn directory organization.
32197 Tue Dec 12 02:53:02 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32199         * gmp.h: Prefix all structure field with _mp_.
32200         * gmp-impl.h: Define access macros for these fields.
32202 Sun Dec 10 00:47:17 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32204         * mpn/alpha/addmul_1.s: Prefix labels with `.'.
32205         * mpn/alpha/submul_1.s: Likewise.
32206         * mpn/alpha/[lr]shift.s: Likewise.
32207         * mpn/alpha/udiv_qrnnd.S: Likewise.
32208         * mpn/alpha/ev5/[lr]shift.s: Likewise.
32210         * mpn/alpha/ev5/lshift.s: Fix typos.
32212 Fri Dec  1 14:28:20 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32214         * mpn/Makefile.in (.SUFFIXES): Define.
32216 Wed Nov 29 23:11:57 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32218         * mpn/sparc64/{add_n.s, sub_n.s}: New files.
32220 Tue Nov 28 06:03:13 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32222         * mpn/x86/syntax.h: Handle ELF_SYNTAX.
32223         Rename GAS_SYNTAX => BSD_SYNTAX.
32225         * mpn/configure.in: Handle linuxelf and SysV for x86 variants.
32227 Mon Nov 27 01:32:12 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32229         * mpn/hppa/hppa1_1/pa7100/submul_1.S: New file.
32231 Sun Nov 26 04:30:47 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32233         * mpn/hppa/hppa1_1/pa7100/addmul_1.S: New file.
32235         * mpn/sparc32/add_n.S: Rewrite to use 64 bit loads/stores.
32236         * mpn/sparc32/sub_n.S: Likewise.
32238 Fri Nov 17 00:18:46 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32240         * mpn/configure.in: Handle m68k on NextStep.
32242 Thu Nov 16 02:30:26 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32244         * mpn: Reorganize machine-specific directories.
32245         * mpn/configure.in: Corresponding changes.
32246         (sh, sh2): Handle these.
32247         (m68k targets): Create asm-syntax.h.
32249 Thu Nov  9 02:20:50 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32251         * mpn/generic/mul_n.c (____mpn_sqr_n): Delete code that calls abort.
32252         (____mpn_mul_n): Likewise.
32254 Tue Nov  7 03:25:12 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32256         * mpf/get_str.c: In exponentiation code (two places), don't swap
32257         input and output areas when calling mpn_mul_1.
32258         * mpf/set_str.c: Likewise.
32260 Fri Nov  3 02:35:58 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32262         * mpf/Makefile.in: Make sure all objects are listed in dependency list;
32263         delete spurious entries.
32265         * mpf/mul.c: Handle U or V being 0.  Allow prec+1 for result precision.
32267         * mpf/set_prec.c: New computation of limb precision.
32268         * mpf/set_dfl_prec.c: Likewise.
32270         * mpf/random2.c: Fix typo computing exp.
32271         * mpf/get_str.c: In (uexp > usize) case, set n_limbs as a function of
32272         the user-requested number of digits, n_digits.
32274 Thu Nov  2 16:25:07 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32276         * mpn/generic/divrem.c (case 2): Don't move np vector back, it is
32277         never read.
32278         (default case): Put most significant limb from np in new variable n2;
32279         decrease size argument for MPN_COPY_DECR; use n2 instead of np[dsize].
32281 Wed Nov  1 02:59:53 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32283         * mpn/sparc/[lr]shift.S: New files.
32285 Tue Oct 31 00:08:12 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32287         * mpz/gcd_ui.c: Set w->size unconditionally when v is zero.
32289         * gmp-impl.h (assert): Delete definition.
32291         * mpf/sub.c: Delete all assert calls.  Delete variable `cy'.
32293         * mpf/neg.c: Use prec+1 as precision.  Optimize for when arguments
32294         are the same.
32295         * mpf/abs.c: Likewise.
32296         * mpf/{set,neg,abs}.c: Make structure and variable names similar.
32298 Mon Oct 30 12:45:26 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32300         * mpf/random2.c (random): Test __SVR4 in addition to __svr4__.
32301         * mpn/generic/random2.c (random): Likewise.
32303 Sun Oct 29 01:54:28 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32305         * mpf/div.c: Special handle U or V being 0.
32307         * mpf/random2.c: New file.
32309         * longlong.h (i860 rshift_rhlc): Define.
32310         (i960 udiv_qrnnd): Define.
32311         (i960 count_leading_zeros): Define.
32312         (i960 add_ssaaaa): Define.
32313         (i960 sub_ddmmss): Define.
32314         (i960 rshift_rhlc): Define.
32316 Sat Oct 28 19:09:15 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32318         * mpn/pentium/rshift.S: Fix and generalize condition for when to use
32319         special code for shift by 1.
32320         * mpn/pentium/lshift.S: Likewise.
32322 Thu Oct 26 00:02:56 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32324         * gmp.h: #undef __need_size_t.
32325         * mp.h: Update from gmp.h.
32327 Wed Oct 25 00:17:27 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32329         * mpf/Makefile.in: Compile set_prec.c.
32330         * mpf/realloc.c: Delete this file.
32331         * mpf/Makefile.in: Delete mentions of realloc.c.
32333         * gmp.h (__mpf_struct): Get rid of `alloc' field.
32334         * mpf/clear.c: Likewise.
32335         * mpf/init*.c: Likewise.
32336         * mpf/set_prec.c: Likewise.
32337         * mpf/iset*.c: Likewise.
32339         * mpf/iset_str.c: New file.
32341         * mpn/configure.in: Handle pyramid.
32343         * mpf/set.c: Use prec+1 as precision.
32345         * mpf/set_prec.c: New file.
32347 Tue Oct 24 00:56:41 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32349         * mpn/generic/divrem.c: New file.  Will replace mpn/generic/divmod.c
32350         when rest of source is converted.
32351         * mpn/configure.in (functions): Add `divrem'
32352         * mpn/generic/set_str.c: Never call __mpn_mul_1 with zero size.
32354         * mpf/get_str.c: Completely rewritten.
32355         * mpf/add.c: Fix several problems.
32356         * mpf/sub.c: Compare operands from most significant end until
32357         first difference, exclude skipped limbs from computation.
32358         Accordingly simplify normalization code.
32359         * mpf/set_str.c: Fix several problems.
32360         * mpf/dump.c: New file.
32361         * mpf/Makefile.in: Compile dump.c.
32362         * mpf/init2.c: Set prec field correctly.
32364 Sun Oct 22 03:02:09 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32366         * cre-conv-tab.c: #include math.h; don't declare log and floor.
32368 Sat Oct 21 23:04:10 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32370         * mpf/mul_ui.c: Handle U being 0.
32372 Wed Oct 18 19:39:27 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32374         * mpn/generic/set_str.c: Correctly handle input like "000000000000".
32375         Misc cleanups.
32377 Tue Oct 17 15:14:13 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32379         * longlong.h: Define COUNT_LEADING_ZEROS_0 for machines where
32380         appropriate.
32382 Mon Oct 16 19:14:43 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32384         * mpf/add.c: Rewrite.
32385         * mpf/set_str.c: New file.  Needs more work.
32387 Sat Oct 14 00:14:04 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32389         * mpf/div_2exp.c: Vastly simplify.
32390         * mpf/mul_2exp.c: Likewise.
32392         * mpf/sub.c: Rewrite.
32394         * gmp-impl.h (udiv_qrnnd_preinv2gen): Terminate comment.
32396         * mpf/dump.c: Free allocated memory.
32398         * gmp-impl.h (assert): Define.
32400 Wed Oct 11 13:31:00 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32402         * mpn/pentium/rshift.S: Install new code to optimize shift-by-1.
32404 Tue Oct 10 00:37:21 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32406         * mpn/pentium/lshift.S: Install new code to optimize shift-by-1.
32408         * mpn/powerpc32/{lshift.s,rshift.s}: New files.
32410         * configure.in: Fix typo.
32412 Sat Oct  7 08:17:09 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32414         * longlong.h (smul_ppmm): Correct type of __m0 and __m1.
32416 Wed Oct  4 16:31:28 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32418         * mpn/configure.in: Handle alphaev5.
32419         * mpn/ev4: New name for alpha subdir.
32420         * mpn/ev5: New subdir.
32421         * mpn/ev5/lshift.s: New file.
32423 Tue Oct  3 15:06:45 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32425         * mpn/alpha/mul_1.s: Avoid static increments of pointers; use
32426         corresponding offsets in ldq and stq instructions instead.
32427         (Loop): Swap cmpult and stq to save one cycle on EV5.
32429         * mpn/tests/{add_n.s,sub_n.s,lshift.s,rshift.s,mul_1.s,addmul_1.s,
32430         submul_1.s}: Don't check results if NOCHECK is defined.
32432 Mon Oct  2 11:40:18 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32434         * longlong.h (mips umul_ppmm [32 and 64 bit versions]):
32435         Make new variants, based on GCC version number, that use `l' and `h'
32436         constraints instead of explicit mflo and mfhi instructions
32438 Sun Oct  1 00:17:47 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32440         * mpn/mc88100/add_n.s: Decrease unrolling factor from 16 to 8.
32441         * mpn/mc88100/sub_n.s: Likewise.
32443         * config/mt-m88110: New file.
32444         * configure.in: Use it.
32446         * mpn/mc88110/mul_1.s: Fix thinko.
32448 Sat Sep 30 21:28:19 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32450         * mpz/set_d.c: Declare `size' at function start.
32452         * experimental: New directory for mpx and mpz2.
32454         * mpz/tdiv_q.c: Clarify comments.
32455         * mpz/{mod.c,mod_ui.c}: New file, for math mod function.
32457         * mpn/sh2/{mul_1.s,addmul_1.s,submul_1.s}: New files.
32459         * mpn/sh/{add_n.s,sub_n.s}: New files.
32461         * mpn/pyr/{add_n.s,sub_n.s,mul_1.s,addmul_1.s}: New files.
32463         * mpn/i960/{add_n.s,sub_n.s}: New files.
32465         * mpn/alpha/addmul_1.s (Loop): Move decrement of r18 to before umulh,
32466         to save cycles on EV5.
32467         * mpn/alpha/submul_1.s: Ditto.
32468         * mpn/alpha/mul_1.s: Ditto.
32470 Thu Sep 28 02:48:59 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32472         * gmp.h (mp_limb, mp_limb_signed): Define as `long long' if
32473         _LONG_LONG_LIMB is defined.
32475         * longlong.h (m88110): Test __m88110__, not __mc88110__
32477         * mpn/mc88110/mul_1.s: Rewrite.
32479 Tue Sep 26 23:29:05 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32481         * config.sub: Update from current Cygnus version.
32483         * mpn/configure.in: Recognize canonical m88*, not mc88*.
32485 Fri Sep 22 14:58:05 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32487         * mpz/set_d.c: New file.
32488         * mpz/Makefile.in: Build new files.
32490         * mpq/get_d.c: Replace usage of scalbn with ldexp.
32492         * mpn/{vax,i386}/gmp-mparam.h: New files.
32493         * gmp-impl.h (ieee_double_extract): Define here.
32494         * mpf/set_d.c (ieee_double_extract): Not here.
32496 Thu Sep 21 00:56:36 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32498         * longlong.h (C umul_ppmm): Use UWtype, not USItype for temps.
32499         (udiv_qrnnd): For cases implemented with call to __udiv_qrnnd,
32500         protect with new symbol LONGLONG_STANDALONE.
32501         (68000 umul_ppmm): Use %# prefix for immediate constants.
32503 Wed Sep 20 15:36:23 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32505         * mpn/generic/divmod_1.c: Handle
32506         divisor_limb == 1 << (BITS_PER_MP_LIMB - 1)
32507         specifically also when normalization_steps != 0.
32509 Mon Sep 18 15:42:30 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32511         * mpq/get_d.c: New file.
32513 Sun Sep 17 02:04:36 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32515         * longlong.h (pyr): Botch up for now.
32517 Sat Sep 16 00:11:50 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32519         * mpn/clipper/mul_1.s: New file.
32520         * mpn/clipper/add_n.s: New file.
32521         * mpn/clipper/sub_n.s: New file.
32522         * mpn/configure.in: Handle clipper*-*-*.
32524         * mpn/configure.in: Recognize rs6000-*-*.
32526 Fri Sep 15 00:41:34 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32528         * mpn/alpha/add_n.s: New file.
32529         * mpn/alpha/sub_n.s: New file.
32531         * mpn/mips3: New name for mpn/r4000.
32532         * mpn/mips2: New name for mpn/r3000.
32533         * mpn/configure.in: Corresponding changes.
32535         * mpn/generic/perfsqr.c (primes): Delete.
32536         (residue_map): Delete.
32538 Thu Sep 14 00:07:58 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32540         * mpn/r3000/sub_n.s: Fix typo.
32542         * dm_trunc.c: Delete spurious file.
32544         * mpz/out_binary.c: Fix typo.
32546         * mpn/configure.in (per-target): Make mips*-*-irix6* imply r4000.
32548         * gmp-impl.h: For sparc and sgi, include alloca.h.
32550         * mpn/z8000/mul_1.s: Replace `test r' with `and r,r'.  Replace
32551         `ldk r,#0' with `xor r,r'.
32553 Wed Sep  6 00:58:38 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32555         * mpz/inp_binary.c: New file.
32556         * mpz/out_binary.c: New file.
32557         * mpz/Makefile.in: Build new files.
32559 Tue Sep  5 22:53:51 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32561         * gmp.h (__mpz_struct): Change `long int' => `mp_size_t' for alloc
32562         and size fields.
32564 Sat Sep  2 17:47:59 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32566         * mpn/r4000/{add_n.s,sub_n.s}: Optimize away some pointer arithmetic.
32567         * mpn/r3000/{add_n.s,sub_n.s,lshift.s,rshift.s}: New files,
32568         derived from r4000 code.
32570 Fri Sep  1 05:35:52 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32572         * mpn/r3000/mul_1.s: Fix typo.
32574         * mpn/powerpc32: Fix some old vs new mnemonic issues.
32576         * mpn/powerpc32/{add_n.s,sub_n.s}: New files.
32577         * mpn/r4000/{add_n.s,sub_n.s,lshift.s,rshift.s}: New files.
32579 Wed Aug 30 10:43:47 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32581         * mpn/r3000/mul_1.s ($LC1): Use addiu for immediate add.
32582         * mpn/r4000/{mul_1.s,addmul_1.s,submul_1.s}: New files.
32584         * config.guess: Update to latest FSF revision.
32586 Mon Aug 28 02:18:13 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32588         * mpz/out_str.c: Cast str to char * in fputs call.
32590         * gmp-impl.h: Define UQItype, SItype, and USItype also
32591         when not __GNUC__.
32593 Fri Aug 25 01:45:04 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32595         * mpn/i386/syntax.h: Renamed from asm-syntax.h.
32596         * mpn/mc68020/syntax.h: Renamed from asm-syntax.h.
32597         * mpn/configure.in: Corresponding changes.
32599 Sun Aug 13 19:20:04 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
32601         * mpn/generic/random2.c: Test __hpux, not hpux.
32603 Sat Apr 15 20:50:33 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32605         * mpn/sparc/add_n.S: Make it work for PIC.
32606         * mpn/sparc/sub_n.s: Likewise.
32607         * mpn/sparc8/addmul_1.S: Likewise.
32608         * mpn/sparc8/mul_1.S: Likewise.
32609         * mpn/i386/add_n.S: Likewise.
32610         * mpn/i386/sub_n.S: Likewise.
32612 Thu Apr 13 23:15:03 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32614         * mpn/configure.in: Don't search power subdir for generic ppc configs.
32615         Add some ppc cpu-specific configs.  Misc clean up.
32617 Mon Apr 10 00:16:35 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32619         * mpz/ui_pow_ui.c: Delete spurious code to handle negative results.
32621 Sun Apr  9 12:38:11 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32623         * longlong.h (SPARC v8 udiv_qrnnd): Generate remainder in C,
32624         not in asm.
32626         * mpn/generic/sqrt.c (SQRT): Test for __SOFT_FLOAT.
32628 Tue Mar 28 00:19:52 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32630         * mpn/generic/hamdist.c (popc_limb): Make Mar 16 change here too.
32632 Fri Mar 17 23:29:22 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32634         * longlong.h (SH umul_ppmm): Define.
32636 Thu Mar 16 16:40:44 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32638         * mpn/generic/popcount.c (popc_limb): Rearrange 32 bit case
32639         to help CSE.
32641 Fri Mar 10 20:03:49 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32643         * mpn/powerpc32/mul_1.s: Clear cy before entering loop.
32644         Rearrange loop to save a cycle.
32645         * mpn/powerpc32/addmul_1.s: New file.
32646         * mpn/powerpc32/submul_1.s: New file.
32648 Fri Feb 17 22:44:45 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32650         * mpn/configure.in: Set target_makefile_frag for freebsd
32651         in new case stmt.
32652         * mpn/config/t-freebsd: New file.
32653         * mpn/Makefile.in: Add #### for frag insertion.
32654         (XCFLAGS): Clear by default.
32655         (.c.o, .S.o rules): Pass XCFLAGS.
32657 Tue Feb  7 16:27:50 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32659         * longlong.h (68000 umul_ppmm): Merge improvements from henderson.
32661 Tue Jan 24 04:23:20 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
32663         * longlong.h (default umul_ppmm): Store input parameters in temporaries
32664         to avoid reading them twice.
32665         (default smul_ppmm): New definition.
32667 Thu Dec 29 04:20:07 1994  Jim Meyering  (meyering@comco.com)
32669         * generic/perfsqr.c (__mpn_perfect_square_p): Remove declaration
32670         of unused variable.
32671         * generic/pre_mod_1.c (__mpn_preinv_mod_1): Likewise.
32672         * mpz/powm.c (pow): Likewise.
32674         * mpz/and.c (mpz_and): Use {} instead of `;' for empty else clause
32675         to placate `gcc -Wall'.
32676         * mpz/ior.c (mpz_ior): Likewise.
32678 Wed Dec 28 13:31:40 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32680         * mpn/m*68*/*.S: #include asm-syntax.h, not asm.h.
32682 Mon Dec 26 17:15:36 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32684         * longlong.h: Test for more symbols, in __mc68000__ case.
32686         * mpn/mpn/config.sub: Recognize m68060.
32687         * mpn/configure.in: Change mc* to m* for 68k targets.
32688         * mpn/Makefile.in (.S.o): Delete spurious creation of temp .c file.
32690 Mon Dec 19 01:56:30 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32692         * config.sub: Recognize pentium as a valid CPU.
32693         * mpn/configure.in: Handle pentium specifically, to use new assembly
32694         code.
32696 Mon Dec 19 00:13:01 1994  Jim Meyering  (meyering@comco.com)
32698         * gmp.h: Define _GMP_H_HAVE_FILE if FILE, __STDIO_H__, or H_STDIO
32699         is defined.
32700         * gmp.h: test _GMP_H_HAVE_FILE instead of FILE everywhere else.
32702 Mon Dec 19 00:04:54 1994  Kent Boortz  (boortz@sics.se)
32704         * Makefile.in (recursive makes): Pass CFLAGS.
32706 Sun Dec 18 22:34:49 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32708         * mpn/pentium: New directory.
32710         * mpz/pprime.c: Make sure to mpz_clear all temporaries.
32712         * longlong.h: Don't use udiv instruction when SUPERSPARC is defined.
32713         * configure.in: Handle supersparc*-.
32714         * config/mt-supspc-gcc: New file.
32715         * config/mt-sparc8-gcc: New name for mt-sparcv8-gcc.
32717 Mon Dec 12 22:22:10 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32719         * mpn/i386/*.S: #include "asm-syntax.h", not "asm.h".
32720         #include sysdep.h before asm-syntax.h.
32722         * mpn/mc68020/asm-syntax.h: #undef ALIGN before defining it.
32723         * mpn/i386/asm-syntax.h: Likewise.
32725         * mpn/mc68020/asm-syntax.h: New name for asm.h.
32726         * mpn/i386/asm-syntax.h: New name for asm.h.
32728 Tue Dec  6 21:55:25 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32730         * mpz/array_init.c: Fix typo in declaration.
32732 Fri Nov 18 19:50:52 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32734         * mpn/Makefile.in (.S.o): Pass CFLAGS and INCLUDES.
32736 Mon Nov 14 00:34:12 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32738         * mpn/generic/random2.c (random): Test for __svr4__.
32740 Wed Oct 12 23:28:16 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32742         * cre-conv-tab.c (main): Avoid upper-case X in printf format string.
32744 Tue Aug 23 17:16:35 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32746         * mpz/perfsqr.c: Use mpn_perfect_square_p.
32747         * mpn/generic/perfsqr.c: New file.
32749 Wed Jul  6 13:46:51 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32751         * mpz/array_init.c: New file.
32752         * mpz/Makefile.in: Compile array_init.
32753         * gmp.h: Declare mpz_array_init.
32755 Mon Jul  4 01:10:03 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32757         * mpz/add.c: Fix bogus comment.
32758         * mpz/sub.c: Likewise.
32760 Sat Jul  2 02:14:56 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32762         * mpn/generic/pre_mod_1.c: New file.
32763         * mpz/perfsqr.c: Use __mpn_preinv_mod_1 when faster.
32765 Fri Jul 01 22:10:19 1994  Richard Earnshaw (rwe11@cl.cam.ac.uk)
32767         * longlong.h (arm umul_ppmm): Fix typos in last change.  Mark
32768         hard-coded registers with "%|"
32770 Thu Jun 30 03:59:33 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32772         * mpz/perfsqr.c: Define PP, etc, for machines with 64 bit limbs.
32773         Use __mpn_mod_1.
32774         * mpz/perfsqr.c: Don't clobber REM in quadratic residue check loop.
32776 Wed Jun 29 18:45:41 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32778         * mpn/generic/sqrt.c (SQRT): New asm for IBM POWER2.
32780         * mpz/gcd_ui.c: Return 0 if result does not fit an unsigned long.
32782         * gmp.h: Use "defined (__STDC__)" consistently.
32784 Tue Jun 28 18:44:58 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32786         * gmp.h (mpz_get_si): Don't use "signed" keyword for return type.
32788         * mpz/tests/Makefile.in: Use CFLAGS for linking.
32790         * Makefile.in (CFLAGS): Use -O2 here.
32791         * mpn/Makefile (CFLAGS): Not here.
32793         * mpq/cmp_ui.c: Fix typo.
32794         * mpq/canonicalize.c: Fix typo.
32795         * mpz/gcd_ui.c: Handle gcd(0,v) and gcd(u,0) correctly.
32796         * mpn/generic/gcd_1.c: Fix braino in last change.
32798 Mon Jun 27 16:10:27 1994  Torbjorn Granlund  (tege@rtl.cygnus.com)
32800         * mpz/gcd_ui.c: Change return type and return result.
32801         Allow destination param to be NULL.
32802         * gmp.h: Corresponding change.
32803         * mpn/generic/gcd_1.c: Handle zero return from mpn_mod_1.
32805 Tue Jun 14 02:17:43 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
32807         * mpn/i386/asm.h (ALIGN): Make it take a parameter.
32808         * mpn/i386/*.S: Use ALIGN to align all loops.
32810         * mpn/i386/*.S: Move colon inside C_GLOBAL_NAME expression.
32811         (Makes old versions of GAS happy.)
32813 Sat May 28 01:43:54 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32815         * Many files: Delete unused variables and labels.
32816         * mpn/generic/dump.c: cast printf width argument to int.
32818 Wed May 25 00:42:37 1994  Torbjorn Granlund  (tege@thepub.cygnus.com)
32820         * mpz/gcd.c (mpz_gcd): Normalize after __mpn_sub calls.
32821         (xmod): Ignore return value of __mpn_divmod.
32822         (xmod): Improve normalization code.
32824 Sat May 21 01:30:09 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32826         * mpz/gcdext.c: Cosmetic changes.
32828         * mpz/fdiv_ui.c: New file.
32830 Fri May 20 00:24:53 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32832         * mpz/tests/Makefile.in: Use explicit rules for running tests,
32833         not a shell loop.
32834         (clean): Delete stmp-*.
32836         * mpz/Makefile.in: Update.
32838         * mpz/div_ui.c: Don't include longlong.h.
32839         * mpz/dm_ui.c: Likewise.
32841         * mpz/fdiv_q.c, mpz/fdiv_q_ui.c, mpz/fdiv_qr.c, mpz/fdiv_qr_ui.c,
32842         mpz/fdiv_r.c, mpz/fdiv_r_ui.c: New files.  Code partly from deleted
32843         mdm.c, mdm_ui.c, etc, partly rewritten.
32844         * mpz/dm_floor_ui.c, mpz/dm_floor.c: Delete.
32845         * mpz/mdm.c, mpz/mdm_ui.c, mpz/mdiv.c, mpz/mdiv_ui.c, mpz/mmod.c,
32846         mpz/mmod_ui.c: Delete.
32848         * mpz/tdiv_q.c, mpz/tdiv_q_ui.c, mpz/tdiv_qr.c, mpz/tdiv_qr_ui.c,
32849         mpz/tdiv_r.c, mpz/tdiv_r_ui.c:
32850         New names for files implementing truncating division.
32851         * mpz/div_ui.c, mpz/dm_ui.c, mpz/mod_ui.c: Simplify.
32853         * mpn/Makefile.in (.S.o): Don't rely on CPP being defined, use CC
32854         instead.
32855         (clean): Delete tmp-*.
32857 Thu May 19 01:37:44 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32859         * mpz/cmp.c: Call __mpn_cmp.
32861         * mpz/popcount.c: Fix typo.
32863         * mpz/powm_ui.c: Simplify main loop.  Keep principal operand size
32864         smaller than MSIZE when possible.
32865         * mpz/powm.c: Likewise.
32867         * mpn/generic/sqrt.c: Move alloca calls into where the memory is
32868         needed.  Simplify.
32870         * gmp.h: (_PROTO): New macro.
32871         Add many function declarations; use _PROTO macro in all declarations.
32873         * mpf/*.c: Prepend mpn calls with __.
32875 Wed May 18 20:57:06 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32877         * mpf/*ui*.c: Make ui argument `long' for consistency with mpz
32878         functions.
32880         * mpf/div_ui.c: Simplify.
32882 Tue May 17 01:05:14 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32884         * mpz/*.c: Prepend mpn calls with __.
32886         * mpz/mul_ui.c: Use mpn_mul_1.
32888 Mon May 16 17:19:41 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32890         * mpn/i386/mul_1.S: Use C_GLOBAL_NAME.
32891         * mpn/i386/mul_1.S, mpn/i386/addmul_1.S, mpn/i386/submul_1.S:
32892         Nuke use of LAB.
32894 Sat May 14 14:21:02 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32896         * gmp-impl.h: Don't define abort here.
32898         * mpz/pow_ui.c: Increase temporary allocation.
32899         * mpz/ui_pow_ui.c: Likewise.
32901         * gmp.h (mpz_add_1, mpz_sub_1): Don't call memcpy.
32903         * All Makefile.in: Delete spurious -I arguments.
32904         Update dependencies.
32906         * mpz/popcount.c: New file.
32907         * mpz/hamdist.c: New file.
32909         * All configure: Latest version from Cygnus.
32911         * mpq/Makefile.in: New file.
32912         * mpq/configure.in: New file.
32913         * Makefile.in, configure.in: Enable compilation of mpq.
32915         * mpq/set_z.c: Fix typos.
32916         * mpq/canonicalize.c: Fix typos.
32917         * mpq/cmp_ui.c: Fix typos.
32919         * mpf/add_ui.c: Read U->D into UP always.  Delete spurious MPN_COPY.
32920         * mpf/sub_ui.c: Likewise.
32922         * gmp-impl.h: Don't redefine alloca.
32924         * COPYING.LIB: Renamed from COPYING.
32926 Wed May 11 01:45:44 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
32928         * mpz/powm_ui.c: When shifting E left by C+1, handle out-of-range
32929         shift counts.  Fix typo when testing negative_result.
32930         * mpz/powm.c: Likewise.
32932         * mpz/ui_pow_ui.c: New file.
32933         * mpz/Makefile.in: Update.
32935         * mpz/pow_ui.c: Call __mpn_mul_n instead of __mpn_mul when possible.
32937         * mpz/div.c, mpz/div_ui.c, mpz/gcd.c: Prefix external mpn calls.
32938         * mpz/gcd.c: Declare mpn_xmod.
32940         * mpz/powm.c: Major changes to accommodate changed mpn semantics.
32941         * mpz/powm_ui.c: Update from mpz/powm.c.
32943         * mpz/tests/tst-io.c: New file.
32944         * mpz/tests/tst-logic: New file.
32945         * mpz/tests/Makefile.in: Update.
32947         * mpz/inp_str.c: Get base right when checking for first digit.
32948         * mpz/inp_str.c: Allocate more space for DEST when needed.
32950         * mpz/com.c: Use mpn_add_1 and mpn_sub_1.
32951         * mpz/and.c, mpz/ior.c: Likewise.  Simplify somewhat.
32953         * mpz/add_ui.c: Use mpn_add_1 and mpn_sub_1.
32954         Rename parameters to be consistent with mpz/sub_ui.
32955         General simplifications.
32956         * mpz/sub_ui.x: Likewise.
32958 Tue Aug 10 19:41:16 1993  Torbjorn Granlund  (tege@prudens.matematik.su.se)
32960         * mpf: New directory.
32961         * mpf/*.c: Merge basic set of mpf functions.
32963         * Many logs missing...
32965 Sun Apr 25 18:40:26 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
32967         * memory.c: Use #if instead of #ifdef for __STDC__ for consistency.
32968         * bsd/xtom.c: Likewise.
32970         * mpz/div.c: Remove free_me and free_me_size and their usage.
32971         Use mpn_divmod for division; corresponding changes in return value
32972         convention.
32973         * mpz/powm.c: `carry_digit' => `carry_limb'.
32974         * bsd/sdiv.c: Clarify comment.
32976 Sun Apr 25 00:31:28 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
32978         * longlong.h (__udiv_qrnnd_c): Make all variables `unsigned long int'.
32980 Sat Apr 24 16:23:33 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
32982         * longlong.h (__udiv_qrnnd_c): Make all variables `unsigned long int'.
32984         * gmp-impl.h: #define ABS.
32985         * (Many files): Use ABS instead of abs.
32987         * mpn/generic/sqrt.c, mpz/clrbit.c, mpz/get_si.c, mpz/mod_2exp.c,
32988         mpz/pow_ui.c: Cast 1 to mp_limb before shifting.
32990         * mpz/perfsqr.c: Use #if, not plain if for exclusion of code for
32991         non-32-bit machines.
32993 Tue Apr 20 13:13:58 1993  Torbjorn Granlund  (tege@du.nada.kth.se)
32995         * mpn/generic/sqrt.c: Handle overflow for intermediate quotients by
32996         rounding them down to fit.
32998         * mpz/perfsqr.c (PP): Define in hexadecimal to avoid GCC warnings.
33000         * mpz/inp_str.c (char_ok_for_base): New function.
33001         (mpz_inp_str): Use it.
33003 Sun Mar 28 21:54:06 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
33005         * mpz/inp_raw.c: Allocate x_index, not xsize limbs.
33007 Mon Mar 15 11:44:06 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
33009         * mpz/pprime.c: Declare param `const'.
33010         * gmp.h: Add declarations for mpz_com.
33012 Thu Feb 18 14:10:34 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
33014         * mpq/add.c, mpq/sub.c: Call mpz_clear for t.
33016 Fri Feb 12 20:27:34 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
33018         * mpz/inp_str.c: Recog minus sign as first character.
33020 Wed Feb  3 01:36:02 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
33022         * mpz/iset.c: Handle 0 size.
33024 Tue Feb  2 13:03:33 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
33026         * mpz/mod_ui.c: Initialize dividend_size before it's used.
33028 Mon Jan  4 09:11:15 1993  Torbjorn Granlund  (tege@sics.se)
33030         * bsd/itom.c: Declare param explicitly 'signed'.
33031         * bsd/sdiv.c: Likewise.
33033         * mpq/cmp.c: Remove unused variable tmp_size.
33034         * mpz/powm_ui.c: Fix typo in esize==0 if stmt.
33035         * mpz/powm.c: Likewise.
33037 Sun Nov 29 01:16:11 1992  Torbjorn Granlund  (tege@sics.se)
33039         * mpn/generic/divmod_1.c (mpn_divmod_1): Handle
33040         divisor_limb == 1 << (BITS_PER_MP_LIMB - 1)
33041         specifically.
33043         * Reorganize sources.  New directories mpn, mpn/MACH, mpn/generic,
33044         mpz, mpq, bsd.  Use full file name for change logs hereafter.
33046 Wed Oct 28 17:40:04 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
33048         * longlong.h (__hppa umul_ppmm): Fix typos.
33049         (__hppa sub_ddmmss): Swap input arguments.
33051         * mpz_perfsqr.c (mpz_perfect_square_p): Avoid , before } in
33052         initializator.
33054 Sun Oct 25 20:30:06 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
33056         * mpz_pprime.c (mpz_probab_prime_p): Handle numbers <= 3
33057         specifically (used to consider all negative numbers prime).
33059         * mpz_powm_ui: `carry_digit' => `carry_limb'.
33061         * sdiv: Handle zero dividend specifically.  Replace most code in
33062         this function with a call to mpn_divmod_1.
33064 Fri Sep 11 22:15:55 1992  Torbjorn Granlund  (tege@tarrega.sics.se)
33066         * mpq_clear: Don't free the MP_RAT!
33068         * mpn_lshift, mpn_rshift, mpn_rshiftci: Remove `long' from 4:th arg.
33070 Thu Sep  3 01:47:07 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
33072         * All files: Remove leading _ from mpn function names.
33074 Wed Sep  2 22:21:16 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
33076         Fix from Jan-Hein Buhrman:
33077         * mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c: Make them work as documented.
33079         * mpz_mmod.c, mpz_mdm.c: Move decl of TEMP_DIVISOR to reflect its
33080         life.
33082 Sun Aug 30 18:37:15 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
33084         * _mpz_get_str: Use mpz_sizeinbase for computing out_len.
33085         * _mpz_get_str: Don't remove leading zeros.  Abort if there are some.
33087 Wed Mar  4 17:56:56 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33089         * gmp.h: Change definition of MP_INT to make the & before params
33090         optional.  Use typedef to define it.
33091         * mp.h: Use typedef to define MINT.
33093 Tue Feb 18 14:38:39 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33095         longlong.h (hppa umul_ppmm): Add missing semicolon.  Declare type
33096         of __w1 and __w0.
33098 Fri Feb 14 21:33:21 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33100         * longlong.h: Make default count_leading_zeros work for machines >
33101         32 bits.  Prepend `__' before local variables to avoid conflicts
33102         with users' variables.
33104         * mpn_dm_1.c: Remove udiv_qrnnd_preinv ...
33105         * gmp-impl.h: ... and put it here.
33106         * mpn_mod_1: Use udiv_qrnnd_preinv if it is faster than udiv_qrnnd.
33108 Tue Feb 11 17:20:12 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33110         * mpn_mul: Enhance base case by handling small multiplicands.
33111         * mpn_dm_1.c: Revert last change.
33113 Mon Feb 10 11:55:15 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33115         * mpn_dm_1.c: Don't define udiv_qrnnd_preinv unless needed.
33117 Fri Feb  7 16:26:16 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33119         * mpn_mul: Replace code for base case.
33121 Thu Feb  6 15:10:42 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33123         * mpn_dm_1.c (_mpn_divmod_1): Add code for avoiding division by
33124         pre-inverting divisor.
33126 Sun Feb  2 11:10:25 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33128         * longlong.h: Make __LLDEBUG__ work differently.
33129         (_IBMR2): Reinsert old code.
33131 Sat Feb  1 16:43:00 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33133         * longlong.h (#ifdef _IBMR2): Replace udiv_qrnnd with new code
33134         using floating point operations.  Don't define
33135         UDIV_NEEDS_NORMALIZATION any longer.
33137 Fri Jan 31 15:09:13 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33139         * longlong.h: Define UMUL_TIME and UDIV_TIME for most machines.
33140         * longlong.h (#ifdef __hppa): Define umul_ppmm.
33142 Wed Jan 29 16:41:36 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33144         * mpn_cmp: Only one length parameter, assume operand lengths are
33145         the same.  Don't require normalization.
33146         * mpq_cmp, mpz_add, mpz_sub, mpz_gcd, mpn_mul, mpn_sqrt: Change for
33147         new mpn_cmp definition.
33149 Tue Jan 28 11:18:55 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33151         * _mpz_get_str: Fix typo in comment.
33153 Mon Jan 27 09:44:16 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33155         * Makefile.in: Add new files.
33157         * mpn_dm_1.c: New file with function _mpn_divmod_1.
33158         * mpz_dm_ui.c (mpz_divmod_ui): Use _mpn_divmod_1.
33159         * mpz_div_ui: Likewise.
33161         * mpn_mod_1.c: New file with function _mpn_mod_1.
33162         * mpz_mod_ui: Use _mpn_mod_1.
33164 Thu Jan 23 18:54:09 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33166         Bug found by Paul Zimmermann (zimmermann@inria.inria.fr):
33167         * mpz_div_ui.c (mpz_div_ui), mpz_dm_ui.c (mpz_divmod_ui):
33168         Handle dividend == 0.
33170 Wed Jan 22 12:02:26 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33172         * mpz_pprime.c: Use "" for #include.
33174 Sun Jan 19 13:36:55 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33176         * mpn_rshiftci.c (header): Correct comment.
33178 Wed Jan 15 18:56:04 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33180         * mpz_powm, mpz_powm_ui (if (bsize > msize)): Do alloca (bsize + 1)
33181         to make space for ignored quotient at the end.  (The quotient might
33182         always be an extra limb.)
33184 Tue Jan 14 21:28:48 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33186         * mpz_powm_ui: Fix comment.
33187         * mpz_powm: Likewise.
33189 Mon Jan 13 18:16:25 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33191         * tests/Makefile.in: Prepend $(TEST_PREFIX) to Makefile target.
33193 Sun Jan 12 13:54:28 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33195         Fixes from Kazumaro Aoki:
33196         * mpz_out_raw: Take abs of size to handle negative values.
33197         * mpz_inp_raw: Reallocate before reading ptr from X.
33198         * mpz_inp_raw: Store, don't read, size to x->size.
33200 Tue Jan  7 17:50:25 1992  Torbjorn Granlund  (tege@zevs.sics.se)
33202         * gmp.h, mp.h: Remove parameter names from prototypes.
33204 Sun Dec 15 00:09:36 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33206         * tests/Makefile.in: Prepend "./" to file names when executing
33207         tests.
33209         * Makefile.in: Fix many problems.
33211 Sat Dec 14 01:00:02 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33213         * mpn_sqrt.c: New file with _mpn_sqrt.
33214         * mpz_sqrt, mpz_sqrtrem, mpz_perfect_square_p: Use _mpn_sqrt.
33215         * msqrt.c: Delete.  Create from mpz_sqrtrem.c in Makefile.in.
33216         * mpz_do_sqrt.c: Delete.
33217         * Makefile.in: Update to reflect these changes.
33219         * Makefile.in, configure, configure.subr: New files
33220         (from bothner@cygnus.com).
33221         * dist-Makefile: Delete.
33223         * mpz_fac_ui: Fix comment.
33225         * mpz_random2: Rewrite a bit to make it possible for the most
33226         significant limb to be == 1.
33228         * mpz_pprime.c (mpz_probab_prime_p): Remove \t\n.
33230 Fri Dec 13 23:10:02 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33232         * mpz_do_sqrt: Simplify special case for U == 0.
33233         * m*sqrt*.c, mpz_perfsqr.c (mpz_perfect_square_p):
33234         Rename _mpz_impl_sqrt to _mpz_do_sqrt.
33236 Fri Dec 13 12:52:28 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33238         * gmp-impl.h (MPZ_TMP_INIT): Cast to the right type.
33240 Thu Dec 12 22:17:29 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33242         * mpn_add, mpn_sub, mpn_mul, mpn_div: Change type of several
33243         variables to mp_size.
33245 Wed Dec 11 22:00:34 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33247         * mpn_rshift.c: Fix header comments.
33249 Mon Dec  9 17:46:10 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33251         Released 1.2.
33253         * gmp-impl.h (MPZ_TMP_INIT): Cast alloca return value.
33255         * dist-Makefile: Add missing dependency for cre-mparam.
33257         * mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c,
33258           mpz_mmod_ui.c, mpz_mdm_ui.c: Remove obsolete comment.
33260         * dist-Makefile (clean): clean in tests subdir too.
33261         * tests/Makefile: Define default values for ROOT and SUB.
33263         * longlong.h (__a29k__ udiv_qrnnd): Change "q" to "1" for operand
33264         2 constraint.
33266 Mon Nov 11 00:06:05 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33268         * mpz_sizeinb.c (mpz_sizeinbase): Special code for size == 0.
33270 Sat Nov  9 23:47:38 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33272         Released 1.1.94.
33274         * dist-Makefile, Makefile, tests/Makefile: Merge tests into
33275         distribution.
33277 Fri Nov  8 22:57:19 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33279         * gmp.h: Don't use keyword `signed' for non-ANSI compilers.
33281 Thu Nov  7 22:06:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33283         * longlong.h: Cosmetic changes to keep it identical to gcc2 version
33284         of longlong.h.
33285         * longlong.h (__ibm032__): Fix operand order for add_ssaaaa and
33286         sub_ddmmss.
33288 Mon Nov  4 00:36:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33290         * mpn_mul: Fix indentation.
33292         * mpz_do_sqrt: Don't assume 32 bit limbs (had constant
33293         4294967296.0).
33294         * mpz_do_sqrt: Handle overflow in conversion from double returned
33295         by SQRT to mp_limb.
33297         * gmp.h: Add missing function definitions.
33299 Sun Nov  3 18:25:25 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33301         * mpz_pow_ui: Change type of `i' to int.
33303         * ChangeLog: Add change log entry.
33304         * ChangeLog: Add change log entry.
33305         * ChangeLog: Add change log entry.
33306         * ChangeLog: Add change log entry.
33307         * ChangeLog: Add change log entry.
33308         * ChangeLog: Add change log entry.
33309         * ChangeLog: Add change log entry.
33310         * ChangeLog: Add change log entry.
33311 Stack overflow.
33313         * mpz_pow_ui.c: Fix typo in comment.
33315         * dist-Makefile: Create rpow.c from mpz_powm_ui.c.
33316         * mpz_powm_ui.c: Add code for rpow.
33317         * rpow.c: Delete this file.  The rpow function is now implemented
33318         in mpz_powm_ui.c.
33320         * mpz_fac_ui.c: New file.
33321         * gmp.h, dist-Makefile: Add stuff for mpz_fac_ui.
33323         Bug found by John Amanatides (amana@sasquatch.cs.yorku.ca):
33324         * mpz_powm_ui, mpz_powm: Call _mpn_mul in the right way, with
33325         the first argument not smaller than the second.
33327 Tue Oct 29 13:56:55 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33329         * cre-conv-tab.c (main), cre-mparam.c (main): Fix typo in output
33330         header text.
33332 Mon Oct 28 00:35:29 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33334         * mpz_random2: Handle size == 0.
33336         * gmp-impl.h (struct __mp_bases): Rename chars_per_limb_exactly to
33337         chars_per_bit_exactly, and change its definition.
33338         * cre-conv-tab.c (main): Output field according to its new
33339         definition.
33340         * mpz_out_str, _mpz_get_str, mpz_sizeinb, mout:
33341         Use chars_per_bit_exactly.
33343         * mpz_random2: Change the loop termination condition in order to
33344         get a large most significant limb with higher probability.
33346         * gmp.h: Add declaration of new mpz_random2 and mpz_get_si.
33347         * mpz_get_si.c: New file.
33348         * dist-Makefile: Add mpz_random2 and mpz_get_si.
33350         * mpz_sizeinb.c (mpz_sizeinbase): Special code for base being a
33351         power of 2, giving exact result.
33353         * mpn_mul: Fix MPN_MUL_VERIFY in various ways.
33354         * mpn_mul: New macro KARATSUBA_THRESHOLD.
33355         * mpn_mul (karatsuba's algorithm): Don't write intermediate results
33356         to prodp, use temporary pp instead.  (Intermediate results can be
33357         larger than the final result, possibly writing into hyperspace.)
33358         * mpn_mul: Make smarter choice between Karatsuba's algorithm and the
33359         shortcut algorithm.
33360         * mpn_mul: Fix typo, cy instead of xcy.  Unify carry handling code.
33362 Sun Oct 27 19:57:32 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33364         * mpn_mul: In non-classical case, choose Karatsuba's algorithm only
33365         when usize > 1.5 vsize.
33367         * mpn_mul: Break between classical and Karatsuba's algorithm at
33368         KARATSUBA_THRESHOLD, if defined.  Default to 8.
33370         * mpn_div: Kludge to fix stray memory read.
33372 Sat Oct 26 20:06:14 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33374         * mpz_gcdext: Handle a = b = 0.  Remove memory leakage by calling
33375         mpz_clear for all temporary variables.
33377         * mpz_gcd: Reduce w_bcnt in _mpn_lshift call to hold that
33378         function's argument constraints.  Compute wsize correctly.
33380         * mpz_gcd: Fix typo in comment.
33382         * memory.c (_mp_default_allocate, _mp_default_reallocate): Call
33383         abort if allocation fails, don't just exit.
33385 Fri Oct 25 22:17:20 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33387         * mpz_random2.c: New file.
33389 Thu Oct 17 18:06:42 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33391         Bugs found by Pierre-Joseph Gailly (pjg@sunbim.be):
33392         * mpq_cmp: Take sign into account, don't just compare the
33393         magnitudes.
33394         * mpq_cmp: Call _mpn_mul in the right way, with the first argument
33395         not smaller than the second.
33397 Wed Oct 16 19:27:32 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33399         * mpz_random: Ensure the result is normalized.
33401 Tue Oct 15 14:55:13 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33403         * mpz_clrbit: Support non-ANSI compilers.
33405 Wed Oct  9 18:03:28 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33407         * longlong.h (68k add_ssaaaa, sub_ddmmss): Generalize constraints.
33409 Tue Oct  8 17:42:59 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33411         * mpz_mdm_ui: Add comments.
33413         * mpz_mdiv: Use MPZ_TMP_INIT instead of mpz_init.
33414         * mpz_init_ui: Change spacing and header comment.
33416 Thu Oct  3 18:36:13 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33418         * dist-Makefile: Prepend `./' before some filenames.
33420 Sun Sep 29 14:02:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33422         Released 1.1 (public).
33424         * mpz_com: New name of mpz_not.
33425         * dist-Makefile: Change mpz_not to mpz_com.
33427 Tue Sep 24 12:44:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33429         * longlong.h: Fix header comment.
33431 Mon Sep  9 15:16:24 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33433         Released 1.0.92.
33435         * mpn_mul.c (_mpn_mul): Handle leading zero limbs in non-Karatsuba
33436         case.
33438         * longlong.h (m68000 umul_ppmm): Clobber one register less by
33439         slightly rearranging the code.
33441 Sun Sep  1 18:53:25 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33443         * dist-Makefile (stamp-stddefh): Fix typo.
33445 Sat Aug 31 20:41:31 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33447         Released 1.0.91.
33449         * mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c,
33450           mpz_mmod_ui.c, mpz_mdm_ui.c: New files and functions.
33451         * gmp.h, gmp.texi: Define the new functions.
33453 Fri Aug 30 08:32:56 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33455         * mpz_gcdext: Compute t argument from the other quantities at the
33456           end, of the function, not in the loop.  New feature: Allow t to be
33457           NULL.
33459         * mpz_add.c, mpz_sub.c, mpz_mul.c, mpz_powm.c, mpz_gcd.c: Don't
33460           include "mp.h".  Use type name `MP_INT' always.
33462         * dist-Makefile, mpz_cmp.c: Merge mcmp.c from mpz_cmp.c.
33464 Wed Aug 28 00:45:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33466         * dist-Makefile (documentation): Go via tmp.texi to avoid the
33467           creation of gmp.dvi if any errors occur.  Make tex read input
33468           from /dev/null.
33470 Fri Aug 23 15:58:52 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33472         * longlong.h (68020, i386): Don't define machine-dependent
33473           __umulsidi3 (so the default definition is used).
33474         * longlong.h (all machines): Cast all operands, sources and
33475           destinations, to `unsigned long int'.
33476         * longlong.h: Add gmicro support.
33478 Thu Aug 22 00:28:29 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33480         * longlong.h: Rename BITS_PER_LONG to LONG_TYPE_SIZE.
33481         * longlong.h (__ibm032__): Define count_leading_zeros and umul_ppmm.
33482         * longlong.h: Define UMUL_TIME and UDIV_TIME for some CPUs.
33483         * _mpz_get_str.c: Add code to do division by big_base using only
33484           umul_qrnnd, if that is faster.  Use UMUL_TIME and UDIV_TIME to
33485           decide which variant to use.
33487 Wed Aug 21 15:45:23 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33489         * longlong.h (__sparc__ umul_ppmm): Move two insn from end to the
33490           nops.  (Saves two insn.)
33492         * longlong.h (__sparc__ umul_ppmm): Rewrite in order to avoid
33493           branch, and to permit input/output register overlap.
33495         * longlong.h (__29k__): Remove duplicated udiv_qrnnd definition.
33496         * longlong.h (__29k__ umul_ppmm): Split asm instructions into two
33497           asm statements (gives better code if either the upper or lower
33498           part of the product is unused.
33500 Tue Aug 20 17:57:59 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33502         * _mpz_get_str.c (outside of functions): Remove
33503           num_to_ascii_lower_case and num_to_ascii_upper_case.  Use string
33504           constants in the function instead.
33506 Mon Aug 19 00:37:42 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33508         * cre-conv-tab.c (main): Output table in hex.  Output 4 fields, not
33509           3, for components 0 and 1.
33511         * gmp.h: Add declaration of mpq_neg.
33513         Released 1.0beta.13.
33515         * _mpz_set_str.c (mpz_set_str): Cast EOF and SPC to char before
33516           comparing to enum literals SPC and EOF.  This makes the code work
33517           for compilers where `char' is unsigned.  (Bug found by Brian
33518           Beuning).
33520         Released 1.0beta.12.
33522         * mpz_mod_ui: Remove references to quot.  Remove quot_ptr, quot_size
33523           declarations and assignment code.
33525 Sun Aug 18 14:44:26 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33527         * mpz_mod_ui: Handle dividend < 0.
33529         Released 1.0beta.11.
33531         * mpz_dm_ui, mpz_div_ui, mpz_mod_ui, sdiv: Make them share the same
33532           general structure, variable names, etc.
33534         * sdiv: Un-normalize the remainder in n1 before it is negated.
33536         * longlong.h: Mention UDIV_NEEDS_NORMALIZATION in description of
33537           udiv_qrnnd.
33539         * mpz_dm_ui.c (mpz_divmod_ui), mpz_div_ui.c (mpz_div_ui): Increment
33540           the quotient size if the dividend size is incremented.  (Bug found
33541           by Brian Beuning.)
33543         * mpz_mod_ui: Shift back the remainder, if UDIV_NEEDS_NORMALIZATION.
33544           (Bug found by Brian Beuning.)
33546         * mpz_mod_ui: Replace "digit" by "limb".
33548         * mpz_perfsqr.c (mpz_perfect_square_p): Disable second test case
33549           for non-32-bit machines (PP is hardwired for such machines).
33550         * mpz_perfsqr.c (outside of functions): Define PP value with an L.
33552         * mpn_mul.c (_mpn_mul): Add verification code that is activated if
33553           DEBUG is defined.  Replace "digit" by "limb".
33554         * mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 4.): Normalize temp
33555           after the addition.
33556         * mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 1.): Compare u0_size
33557           and v0_size, and according to the result, swap arguments in
33558           recursive call.  (Don't violate mpn_mul's own argument
33559           constraints.)
33561 Fri Aug 16 13:47:12 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33563         Released 1.0beta.10.
33565         * longlong.h (IBMR2): Add udiv_qrnnd.
33567         * mpz_perfsqr: Remove unused variables.
33569         * mpz_and (case for different signs): Initialize loop variable i!
33571         * dist-Makefile: Update automatically generated dependencies.
33572         * dist-Makefile (madd.c, msub.c, pow.c, mult.c, gcd.c): Add mp.h,
33573           etc to dependency file lists.
33575         * longlong.h (add_ssaaaa, sub_ddmmss [C default versions]): Make __x
33576           `unsigned long int'.
33577         * longlong.h: Add `int' after `unsigned' and `long' everywhere.
33579 Wed Aug 14 18:06:48 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33581         * longlong.h: Add ARM, i860 support.
33583         * mpn_lshift, mpn_rshift, mpn_rshiftci: Rename *_word with *_limb.
33585 Tue Aug 13 21:57:43 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33587         * _mpz_get_str.c, _mpz_set_str.c, mpz_sizeinb.c (mpz_sizeinbase),
33588           mpz_out_str.c, mout.c: Remove declaration of __mp_bases.
33589         * gmp-impl.h: Put it here, and make it `const'.
33590         * cre-conv-tab.c (main): Make struct __mp_bases `const'.
33592 Mon Aug 12 17:11:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33594         * cre-conv-tab.c (main): Use %lu in printf for long ints.
33596         * dist-Makefile: Fix cre-* dependencies.
33598         * cre-conv-tab.c (main): Output field big_base_inverted.
33600         * gmp-impl.h (struct bases): New field big_base_inverted.
33601         * gmp-impl.h (struct bases): Change type of chars_per_limb_exactly
33602           to float (in order to keep the structure smaller).
33604         * mp.h, gmp.h: Change names of macros for avoiding multiple
33605           includes.
33607 Fri Aug  9 18:01:36 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33609         * _mpz_get_str: Only shift limb array if normalization_steps != 0
33610           (optimization).
33612         * longlong.h (sparc umul_ppmm): Use __asm__, not asm.
33613         * longlong.h (IBMR2 umul_ppmm): Refer to __m0 and __m1, not to m0
33614           and m1 (overlap between output and input operands did not work).
33615         * longlong.h: Add VAX, ROMP and HP-PA support.
33616         * longlong.h: Sort the machine dependent code in alphabetical order
33617           on the CPU name.
33618         * longlong.h: Hack comments.
33620 Thu Aug  8 14:13:36 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33622         Released 1.0beta.9.
33624         * longlong.h: Define BITS_PER_LONG to 32 if it's not already
33625           defined.
33626         * Define __BITS4 to BITS_PER_LONG / 4.
33627         * Don't assume 32 bit word size in "count_leading_zeros" C macro.
33628           Use __BITS4 and BITS_PER_LONG instead.
33630         * longlong.h: Don't #undef internal macros (reverse change of Aug 3).
33632         * longlong.h (68k): Define add_ssaaaa sub_ddmmss, and umul_ppmm
33633           even for plain mc68000.
33635         * mpq_div: Flip the sign of the numerator *and* denominator of the
33636           result if the intermediate denominator is negative.
33638         * mpz_and.c, mpz_ior.c: Use MPN_COPY for all copying operations.
33640         * mpz_and.c: Compute the result size more conservatively.
33641         * mpz_ior.c: Likewise.
33643         * mpz_realloc: Never allocate zero space even if NEW_SIZE == 0.
33645         * dist-Makefile: Remove madd.c, msub.c, pow.c, mult.c, gcd.c from
33646           BSDMP_SRCS.
33648         * dist-Makefile: Create mult.c from mpz_mul.c.
33649         * mult.c: Delete this file.
33651         * _mpz_set_str: Normalize the result (for bases 2, 4, 8... it was
33652           not done properly if the input string had many leading zeros).
33654 Sun Aug  4 16:54:14 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33656         * dist-Makefile (gcd.c, pow.c, madd.c, msub.c): Make these targets
33657           work with VPATH and GNU MP.
33659         * mpz_gcd: Don't call mpz_set; inline its functionality.
33661         * mpq_mul, mpq_div: Fix several serious typos.
33663         * mpz_dmincl, mpz_div: Don't normalize the quotient if it's already
33664           zero.
33666         * mpq_neg.c: New file.
33668         * dist-Makefile: Remove obsolete dependencies.
33670         * mpz_sub: Fix typo.
33672         Bugs found by Pierre-Joseph Gailly (pjg@sunbim.be):
33673         * mpq_mul, mpq_div: Initialize tmp[12] variables even when the gcd
33674           is just 1.
33675         * mpz_gcd: Handle gcd(0,v) and gcd(u,0) in special cases.
33677 Sat Aug  3 23:45:28 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33679         * longlong.h: Clean up comments.
33680         * longlong.h: #undef internal macros.
33682 Fri Aug  2 18:29:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33684         * mpq_set_si, mpq_set_ui: Canonicalize 0/x to 0/1.
33685         * mpq_set_si, mpq_set_ui: Cosmetic formatting changes.
33687         * mpz_dmincl.c: Normalize the remainder before shifting it back.
33689         * mpz_dm_ui.c (mpz_divmod_ui): Handle rem == dividend.
33691         * mpn_div.c: Fix comment.
33693         * mpz_add.c, mpz_sub.c: Use __MP_INT (not MP_INT) for intermediate
33694           type, in order to work for both GNU and Berkeley functions.
33696         * dist-Makefile: Create gcd.c from mpz_gcd.c, pow.c from mpz_powm,
33697           madd.c from mpz_add.c, msub.c from mpz_sub.c.
33698           respectively.
33699         * pow.c, gcd.c, mpz_powmincl.c, madd.c, msub.c: Remove these.
33700         * mpz_powm.c, mpz_gcd.c, mpz_add.c, mpz_sub.c: #ifdef for GNU and
33701           Berkeley function name variants.
33702         * dist-Makefile: Add created files to "clean" target.
33704 Tue Jul 16 15:19:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33706         * mpq_get_den: No need for absolute value of the size, the
33707           denominator is always positive.
33709         * mpz_get_ui: If the operand is zero, return zero.  Don't read the
33710           limb array!
33712         * mpz_dmincl.c: Don't ignore the return value from _mpn_rshift, it
33713           is the size of the remainder.
33715 Mon Jul 15 11:08:05 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33717         * Several files: Remove unused variables and functions.
33719         * gmp-impl.h: Declare _mpz_impl_sqrt.
33721         * mpz_dm_ui (mpz_divmod_ui), sdiv: Shift back the remainder if
33722           UDIV_NEEDS_NORMALIZATION.  (Fix from Brian Beuning.)
33724         * mpz_dm_ui.c, sdiv: Replace *digit with *limb.
33726         * mpz_ior: Add missing else statement in -OP1 | -OP2 case.
33727         * mpz_ior: Add missing else statement in OP1 | -OP2 case.
33728         * mpz_ior: Swap also OP1 and OP2 pointers in -OP1 & OP2 case.
33729         * mpz_ior: Duplicate _mpz_realloc code.
33731         * mpz_and: Add missing else statement in -OP1 & -OP2 case.
33732         * mpz_and: Rewrite OP1 & -OP2 case.
33733         * mpz_and: Swap also OP1 and OP2 pointers in -OP1 & OP2 case.
33735         * mpz_gcdext: Loop in d1.size (not b->size).  (Fix from Brian
33736           Beuning.)
33738         * mpz_perfsqr: Fix argument order in _mpz_impl_sqrt call.  (Fix from
33739           Brian Beuning.)
33741 Fri Jul 12 17:10:33 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33743         * mpq_set.c, mpq_set_ui.c, mpq_set_si.c, mpq_inv.c,
33744           mpq_get_num.c, mpq_get_den.c, mpq_set_num.c, mpq_set_den.c:
33745           New files.
33747         * mpz_dmincl.c: Remove second re-allocation of rem->d.  It
33748           was never executed.
33750         * dist-Makefile: Use `-r' instead of `-x' for test for ranlib (as
33751           some unixes' test doesn't have the -r option).
33753         * *.*: Cast allocated pointers to the appropriate type (makes old C
33754           compilers happier).
33756         * cre-conv-tab.c (main): Divide max_uli by 2 and multiply again
33757           after conversion to double.  (Kludge for broken C compilers.)
33759         * dist-Makefile (stamp-stddefh): New target.  Test if "stddef.h"
33760           exists in the system and creates a minimal one if it does not
33761           exist.
33762         * cre-stddefh.c: New file.
33763         * dist-Makefile: Make libgmp.a and libmp.a depend on stamp-stddefh.
33764         * dist-Makefile (clean): Add some more.
33765         * gmp.h, mp.h: Unconditionally include "stddef.h".
33767 Thu Jul 11 10:08:21 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33769         * min: Do ungetc of last read character.
33770         * min.c: include stdio.h.
33772         * dist-Makefile: Go via tmp- files for cre* redirection.
33773         * dist-Makefile: Add tmp* to "clean" target.
33775         * dist-Makefile: Use LOCAL_CC for cre*, to simplify cross
33776           compilation.
33778         * gmp.h, mp.h: Don't define NULL here.
33779         * gmp-impl.h: Define it here.
33781 Wed Jul 10 14:13:33 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33783         * mpz_mod_2exp: Don't copy too much, overwriting most significant
33784           limb.
33786         * mpz_and, mpz_ior: Don't read op[12]_ptr from op[12] when
33787           reallocating res, if op[12]_ptr got their value from alloca.
33789         * mpz_and, mpz_ior: Clear up comments.
33791         * cre-mparam.c: Output parameters for `short int' and `int'.
33793         * mpz_and, mpz_ior: Negate negative op[12]_size in several places.
33795 Tue Jul  9 18:40:30 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33797         * gmp.h, mp.h: Test for _SIZE_T defined before typedef'ing size_t.
33798           (Fix for Sun lossage.)
33800         * gmp.h: Add declaration of mpq_clear.
33802         * dist-Makefile: Check if "ranlib" exists, before using it.
33803         * dist-Makefile: Add mpz_sqrtrem.c and mpz_size.c.
33804         * mpz_powm: Fix typo, "pow" instead of "mpz_powm".
33806 Fri Jul  5 19:08:09 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33808         * move: Remove incorrect comment.
33810         * mpz_free, mpq_free: Rename to *_clear.
33811         * dist-Makefile: Likewise.
33812         * mpq_add, mpq_sub, mpq_mul, mpq_div: Likewise.
33814         * mpz_dmincl.c: Don't call "move", inline its functionality.
33816 Thu Jul  4 00:06:39 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33818         * Makefile: Include dist-Makefile.  Fix dist target to include
33819           dist-Makefile (with the name "Makefile" in the archive).
33821         * dist-Makefile: New file made from Makefile.  Add new mpz_...
33822           functions.
33824         * mpz_powincl.c New file for mpz_powm (Berkeley MP pow)
33825           functionality.  Avoids code duplication.
33826         * pow.c, mpz_powm.c: Include mpz_powincl.c
33828         * mpz_dmincl.c: New file containing general division code.  Avoids
33829           code duplication.
33830         * mpz_dm.c (mpz_divmod), mpz_mod.c (mpz_mod), mdiv.c (mdiv): Include
33831           mpz_dmincl.c.
33833         * _mpz_get_str: Don't call memmove, unless HAS_MEMMOVE is defined.
33834           Instead, write the overlapping memory copying inline.
33836         * mpz_dm_ui.c: New name for mpz_divmod_ui.c (SysV file name limit).
33838         * longlong.h: Don't use #elif.
33839         * mpz_do_sqrt.c: Likewise.
33841         * longlong.h: Use __asm__ instead of asm.
33842         * longlong.h (sparc udiv_qrnnd): Make it to one string over several
33843           lines.
33845         * longlong.h: Preend __ll_ to B, highpart, and lowpart.
33847         * longlong.h: Move array t in count_leading_zeros to the new file
33848           mp_clz_tab.c.  Rename the array __clz_tab.
33849         * All files: #ifdef for traditional C compatibility.
33851 Wed Jul  3 11:42:14 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33853         * mpz_and: Initialize res_ptr always (used to be initialized only
33854           when reallocating).
33856         * longlong.h (umul_ppmm [C variant]): Make __ul...__vh
33857           `unsigned int', and cast the multiplications.  This way
33858           compilers more easily can choose cheaper multiplication
33859           instructions.
33861         * mpz_mod_2exp: Handle input argument < modulo argument.
33862         * mpz_many: Make sure mp_size is the type for sizes, not int.
33864         * mpz_init, mpz_init_set*, mpq_init, mpq_add, mpq_sub, mpq_mul,
33865           mpq_div: Change mpz_init* interface.  Structure pointer as first
33866           arg to initialization function, no longer *return* struct.
33868 Sun Jun 30 19:21:44 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33870         * Rename mpz_impl_sqrt.c to mpz_do_sqrt.c to satisfy SysV 14
33871           character file name length limit.
33873         * Most files: Rename MINT to MP_INT.  Rename MRAT to MP_RAT.
33874         * mpz_sizeinb.c: New file with function mpz_sizeinbase.
33875         * mp_bases.c: New file, with array __mp_bases.
33876         * _mpz_get_str, _mpz_set_str: Remove struct bases, use extern
33877           __mp_bases instead.
33878         * mout, mpz_out_str: Use array __mp_bases instead of function
33879           _mpz_get_cvtlen.
33880         * mpz_get_cvtlen.c: Remove.
33881         * Makefile: Update.
33883 Sat Jun 29 21:57:28 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33885         * longlong.h (__sparc8__ umul_ppmm): Insert 3 nop:s for wr delay.
33886         * longlong.h (___IBMR2__): Define umul_ppmm, add_ssaaaa, sub_ddmmss.
33887         * longlong.h (__sparc__): Don't call .umul; expand asm instead.
33888           Don't define __umulsidi3 (i.e. use default definition).
33890 Mon Jun 24 17:37:23 1991  Torbjorn Granlund  (tege@amon.sics.se)
33892         * _mpz_get_str.c (num_to_ascii_lower_case, num_to_ascii_upper_case):
33893           Swap 't' and 's'.
33895 Sat Jun 22 13:54:01 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33897         * mpz_gcdext.c: New file.
33899         * mpn_mul: Handle carry and unexpected operand sizes in last
33900           additions/subtractions.  (Bug trigged when v1_size == 1.)
33902         * mp*_alloc*: Rename functions to mp*_init* (files to mp*_iset*.c).
33903         * mpq_*: Call mpz_init*.
33905         * mpz_pow_ui, rpow: Use _mpn_mul instead of mult.  Restructure.
33907 Wed May 29 20:32:33 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33909         * mpz_get_cvtlen: multiply by size.
33911 Sun May 26 15:01:15 1991  Torbjorn Granlund  (tege@bella.nada.kth.se)
33913         Alpha-release 0.95.
33915         Fixes from Doug Lea (dl@g.oswego.edu):
33916         * mpz_mul_ui: Loop to MULT_SIZE (not PROD_SIZE).  Adjust PROD_SIZE
33917           correctly.
33918         * mpz_div: Prepend _ to mpz_realloc.
33919         * mpz_set_xs, mpz_set_ds: Fix typos in function name.
33921 Sat May 25 22:51:16 1991  Torbjorn Granlund  (tege@bella.nada.kth.se)
33923         * mpz_divmod_ui: New function.
33925         * sdiv: Make the sign of the remainder correct.
33927 Thu May 23 15:28:24 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33929         * Alpha-release 0.94.
33931         * mpz_mul_ui: Include longlong.h.
33933         * mpz_perfsqr.c (mpz_perfect_square_p): Call _mpz_impl_sqrt instead
33934           of msqrt.
33936         * mpz_impl_sqrt: Don't call "move", inline its functionality.
33938         * mdiv: Use MPN_COPY instead of memcpy.
33939         * rpow, mpz_mul, mpz_mod_2exp: Likewise.
33940         * pow.c: Likewise, and fix bug in the size arg.
33942         * xtom: Don't use mpz_alloc, inline needed code instead.  Call
33943           _mpz_set_str instead of mpz_set_str.
33945         * Makefile: Make two libraries, libmp.a and libgmp.a.
33947 Thu May 22 20:25:29 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33949         * Add manual to distribution.
33950         * Fold in many missing routines described in the manual.
33951         * Update Makefile.
33953 Wed May 22 13:48:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33955         * mpz_set_str: Make it handle 0x prefix OK.
33957 Sat May 18 18:31:02 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33959         * memory.c (_mp_default_reallocate): Swap OLD_SIZE and NEW_SIZE
33960           arguments.
33961         * mpz_realloc (_mpz_realloc): Swap in call to _mp_reallocate_func.
33962         * min: Likewise.
33964 Thu May 16 20:43:05 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33966         * memory.c: Make the default allocations functions global.
33967         * mp_set_fns (mp_set_memory_functions): Make a NULL pointer mean the
33968           default memory function.
33970 Wed May  8 20:02:42 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33972         * mpz_div: Handle DEN the same as QUOT correctly by copying DEN->D
33973           even if no normalization is needed.
33974         * mpz_div: Rework reallocation scheme, to avoid excess copying.
33976         * mpz_sub_ui.c, mpz_add_ui.c: New files.
33978         * mpz_cmp.c, mpz_cmp_ui.c: New files.
33980         * mpz_mul_2exp: Handle zero input MINT correctly.
33982         * mpn_rshiftci: Don't handle shift counts > BITS_PER_MP_DIGIT.
33984         * mpz_out_raw.c, mpz_inp_raw.c: New files for raw I/O.
33986 Tue May  7 15:44:58 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33988         * mpn_rshift: Don't handle shift counts > BITS_PER_MP_DIGIT.
33989         * mpz_div_2exp: Don't call _mpn_rshift with cnt > BITS_PER_MP_DIGIT.
33990         * gcd, mpz_gcd: Likewise.
33992         * gcd, mpz_gcd: Handle common 2 factors correctly.
33994 Mon May  6 20:22:59 1991  Torbjorn Granlund  (tege@zevs.sics.se)
33996         * gmp-impl.h (MPN_COPY): Inline a loop instead of calling memcpy.
33998         * gmp-impl.h, mpz_get_str, rpow: Swap DST and SRC in TMPCOPY* macros.
34000 Sun May  5 15:16:23 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34002         * mpz_div: Remove test for QUOT == 0.
34004 Sun Apr 28 20:21:04 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34006         * pow: Don't make MOD normalization in place, as it's a bad idea to
34007           write on an input parameter.
34008         * pow: Reduce BASE if it's > MOD.
34009         * pow, mult, mpz_mul: Simplify realloc code.
34011 Sat Apr 27 21:03:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34013         * Install multiplication using Karatsuba's algorithm as default.
34015 Fri Apr 26 01:03:57 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34017         * msqrt: Store in ROOT even for U==0, to make msqrt(0) defined.
34019         * mpz_div_2exp.c, mpz_mul_2exp.c: New files for shifting right and
34020           left, respectively.
34021         * gmp.h: Add definitions for mpz_div_2exp and mpz_mul_2exp.
34023         * mlshift.c, mrshift.c: Remove.
34025 Wed Apr 24 21:39:22 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34027         * mpn_mul: Check only for m2_size == 0 in function header.
34029 Mon Apr 22 01:31:57 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34031         * karatsuba.c: New file for Karatsuba's multiplication algorithm.
34033         * mpz_random, mpz_init, mpz_mod_2exp: New files and functions.
34035         * mpn_cmp: Fix header comment.
34037 Sun Apr 21 00:10:44 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34039         * pow: Switch off initial base reduction.
34041 Sat Apr 20 22:06:05 1991  Torbjorn Granlund  (tege@echnaton.sics.se)
34043         * mpz_get_str: Don't generate initial zeros for initial word.
34044           Used to write outside of allocated storage.
34046 Mon Apr 15 15:48:08 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34048         * _mpz_realloc: Make it accept size in number of mp_digits.
34049         * Most functions: Use new _mpz_realloc definition.
34051         * mpz_set_str: Remove calls _mp_free_func.
34053         * Most functions: Rename mpn_* to _mpn_*.  Rename mpz_realloc to
34054           _mpz_realloc.
34055         * mpn_lshift: Redefine _mpn_lshift to only handle small shifts.
34056         * mdiv, mpz_div, ...: Changes for new definition of _mpn_lshift.
34057         * msqrt, mp*_*shift*: Define cnt as unsigned (for speed).
34059 Sat Apr  6 14:05:16 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
34061         * mpn_mul: Multiply by the first digit in M2 in a special
34062           loop instead of zeroing the product area.
34064         * mpz_abs.c: New file.
34066         * sdiv: Implement as mpz_div_si for speed.
34068         * mpn_add: Make it work for second source operand == 0.
34070         * msub: Negate the correct operand, i.e. V before swapping, not
34071           the smaller of U and V!
34072         * madd, msub: Update abs_* when swapping operands, and not after
34073           (optimization).
34075 Fri Apr  5 00:19:36 1991  Torbjorn Granlund  (tege@black.nada.kth.se)
34077         * mpn_sub: Make it work for subtrahend == 0.
34079         * madd, msub: Rewrite to minimize mpn_cmp calls.  Ensure
34080           mpn_cmp is called with positive sizes (used to be called
34081           incorrectly with negative sizes sometimes).
34083         * msqrt: Make it divide by zero if fed with a negative number.
34084         * Remove if statement at end of precision calculation that was
34085           never true.
34087         * itom, mp.h: The argument is of type short, not int.
34089         * mpz_realloc, gmp.h: Make mpz_realloc return the new digit pointer.
34091         * mpz_get_str.c, mpz_set_str.c, mpz_new_str.c: Don't include mp.h.
34093         * Add COPYING to distribution.
34095         * mpz_div_ui.c, mpz_div_si.c, mpz_new_ui.c, mpz_new_si.c: New files.
34097 Fri Mar 15 00:26:29 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
34099         * Add Copyleft headers to all files.
34101         * mpn_mul.c, mpn_div.c: Add header comments.
34102         * mult.c, mdiv.c: Update header comments.
34104         * mpq_add.c, mpq_sub.c, mpq_div.c, mpq_new.c, mpq_new_ui.c,
34105           mpq_free.c: New files for rational arithmetics.
34107         * mpn_lshift.c: Avoid writing the most significant word if it is 0.
34109         * mdiv.c: Call mpn_lshift for the normalization.
34110         * mdiv.c: Remove #ifdefs.
34112         * Makefile: Add ChangeLog to DISTFILES.
34114         * mpn_div.c: Make the add_back code work (by removing abort()).
34115         * mpn_div.c: Make it return if the quotient is size as compared
34116           with the difference NSIZE - DSIZE.  If the stored quotient is
34117           larger than that, return 1, otherwise 0.
34118         * gmp.h: Fix mpn_div declaration.
34119         * mdiv.c: Adopt call to mpn_div.
34120         * mpz_div.c: New file (developed from mdiv.c).
34122         * README: Update routine names.
34124 Thu Mar 14 18:45:28 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
34126         * mpq_mul.c: New file for rational multiplication.
34128         * gmp.h: Add definitions for rational arithmetics.
34130         * mpn_div: Kludge the case where the high numerator digit > the
34131           high denominator digit.  (This code is going to be optimized later.)
34133         * New files: gmp.h for GNU specific functions, gmp-common.h for
34134           definitions common for mp.h and gmp.h.
34136         * Ensure mp.h just defines what BSD mp.h defines.
34138         * pow.c: Fix typo for bp allocation.
34140         * Rename natural number functions to mpn_*, integer functions to
34141           mpz_*.
34143 Tue Mar  5 18:47:04 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
34145         * mdiv.c (_mp_divide, case 2): Change test for estimate of Q from
34146           "n0 >= r" to "n0 > r".
34148         * msqrt: Tune the increasing precision scheme, to do fewer steps.
34150 Tue Mar  3 18:50:10 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
34152         * msqrt: Use the low level routines.  Use low precision in the
34153         beginning, and increase the precision as the result converges.
34154         (This optimization gave a 6-fold speedup.)