xref: /netbsd-src/external/lgpl3/gmp/dist/ChangeLog (revision 1daf83e636cd998f45e5597a8f995a540e2d5b4a)
12020-11-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
2
3	* Version 6.2.1 released.
4
5	* gmp-h.in (__GNU_MP_VERSION_PATCHLEVEL): Bump version info.
6	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump revision info.
7
82020-11-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
9
10	* configure.ac (fat_path): Add bd1, goldmont,silvermont for CPUVEC.
11	* mpn/x86_64/fat/fat.c: Add more CPUs.
12	* mpn/x86/fat/fat.c: Add more CPUs.
13
142020-11-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
15
16	* configure.ac: X86_{,64_}PATTERN: GMP_ASM_COFF_TYPE for all ABIs;
17	* mpn/x86_64/x86_64-defs.m4 (COFF_TYPE): Copy from mpn/x86/x86-defs.m4
18	as suggested by Jeremy Drake.
19
20	* tests/misc/t-locale.c (nl_langinfo): No redefine on __TERMUX__,
21	spotted by Sanselme and Glisse.
22	* configure.ac: Consider *-*-msys as *-*-mingw* (except on arm* |
23	aarch64*), as suggested by Ralph Peterson.
24	* Makefile.am (EXTRA_DIST): Add mini-gmp/ChangeLog.
25
262020-10-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
27
28	* tests/mpf/t-get_d_2exp.c: Test also the case zero.
29	* tests/mpz/t-get_d.c: Likewise.
30	* tests/mpf/t-trunc.c: Use mpf_size.
31
32	* tests/mpf/t-conv.c: Some more tests on zero.
33
342020-10-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
35
36	* configfsf.guess: Updated to version 2020-10-22, from gnulib.
37
382020-10-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
39
40	* tests/devel/Makefile.am: Remove redundancies.
41
42	* tests/mpz/io.c: Test out-of-range bases for mpz_out_str.
43
442020-10-15  Torbjörn Granlund  <tg@gmplib.org>
45
46	* configure.ac: Recognise zen3.
47	* config.guess: Recognise zen3.
48
492020-10-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
50
51	* doc/gmp.texi (Number sequences): Remove redundancy. (spotted: TonyMcC)
52
53	* configfsf.sub: Updated to version 2020-10-13, from gnulib.
54	* configfsf.guess: Updated to version 2020-09-19, from gnulib.
55
562020-10-06  Niels Möller  <nisse@lysator.liu.se>
57
58	* Makefile.am: Better support for make check-mini-gmp on wine or cygwin.
59
602020-09-22  Torbjörn Granlund  <tg@gmplib.org>
61
62	* tests/mpz/t-mul.c: Print GMP_CHECK_FFT.
63
64	* longlong.h (x86 umul_ppmm): Fix typo.
65
662020-09-21  Torbjörn Granlund  <tg@gmplib.org>
67
68	* mpz/n_pow_ui.c: Detect and report overflow.
69
702020-07-04  Torbjörn Granlund  <tg@gmplib.org>
71
72	* mpn/arm64/bdiv_q_1.asm: Use LEA_HI/LEA_LO
73	* mpn/arm64/invert_limb.asm: Likewise.
74
75	* mpn/arm64/arm64-defs.m4: New file.
76	* mpn/arm64/darwin.m4: New file.
77	* configure.ac: Use arm64/arm64-defs.m4 and arm64/darwin.m4.
78
792020-06-20  Torbjörn Granlund  <tg@gmplib.org>
80
81	* longlong.h (add_sssaaaa arm32/arm64): Generalise allowed operands
82	when using adds for sub and subs for add, while disallowing 0.
83	(sub_ddmmss ppc64): Disallow 0 when using addic.  Also disallow
84	constants for register-only middle addic operand.
85	(C add_sssaaaa and sub_ddmmss): Use more temps to make operation more
86	well-defined.
87
882020-06-18  Torbjörn Granlund  <tg@gmplib.org>
89
90	* tests/devel/gen-test-longlong_h.c: New file.
91	* tests/devel/Makefile.am: Compile and use gen-test-longlong_h.c.
92
932020-06-10  Torbjörn Granlund  <tg@gmplib.org>
94
95	* configure.ac: Recognise armcortexa55.
96
972020-05-25  Torbjörn Granlund  <tg@gmplib.org>
98
99	* tests/cxx/t-assign.cc: Use reference parameter for 'catch'.
100	* tests/cxx/t-constr.cc: Likewise.
101	* tests/cxx/t-ops2z.cc: Likewise.
102	* tests/cxx/t-rand.cc: Likewise.
103	* tests/cxx/t-do-exceptions-work-at-all-with-this-compiler.cc: Likewise.
104
105	* tune/speed.c: Undo 2020-05-24 _POSIX_C_SOURCE change, it breaks on
106	many broken systems.
107	* tune/freq.c: Likewise.
108	* tune/time.c: Likewise.
109	* tune/tuneup.c: Likewise.
110
111	* tests/devel/try.c: Revert 2020-05-24 changes.
112
1132020-05-21  Torbjörn Granlund  <tg@gmplib.org>
114
115	* tune/freq.c (_POSIX_C_SOURCE): Define.
116
117	* tune/tuneup.c (print_define_with_speedup): Fall back from snprintf to
118	sprintf for C90.
119	(_POSIX_C_SOURCE): Define.
120	(max_opsize): Set by #define instead of const size_t to please C90.
121	(n_measurements): Likewise.
122	(speed_mpn_pre_set_str): Adhere to C90 declaration rules.
123
124	* tune/tune-gcd-p.c: Back out 2020-01-10 change to comply to C90.
125
126	* tune/time.c (speed_endtime): Cast printf args to right type.
127	(_POSIX_C_SOURCE): Define.
128
129	* tune/speed.h (CACHE_LINE_SIZE): Do #undef before defining.
130	(SPEED_ROUTINE_MPN_GCD_1): Provide dummy first argument for standard
131	compliance.
132	(SPEED_ROUTINE_MPN_HGCD2): Adhere to C90 declaration rules.
133
134	* tune/speed.c (main): Cast printf args to right type.
135	(_POSIX_C_SOURCE): Define.
136
137	* tests/mpz/reuse.c: Avoid using non-standard function fileno().
138	* tests/spinner.c: Likewise.
139
140	* tests/mpz/convert.c (str_casecmp): New function.
141	(main): Use it instead of non-standard strcasecmp.
142
143	* tests/misc.c (tests_start): Fall back from snprintf to sprintf for
144	C90.
145
146	* tests/devel/try.c: Avoid getpagesize and use POSIX sysconf instead.
147	(_POSIX_C_SOURCE): Define.
148
149	* mpn/generic/mod_1_1.c: Don't use C++ comments.
150
151	* mpn/generic/get_d.c: Add clarifying parens.
152
1532020-05-18  Torbjörn Granlund  <tg@gmplib.org>
154
155	* mpn/generic/toom_interpolate_12pts.c (DO_mpn_addlsh_n): Define only
156	when needed.
157	* mpn/generic/toom_interpolate_16pts.c: Likewise.
158
1592020-05-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
160
161	* mpz/cmp.c: Avoid overflow on int even for huge sizes.
162	* mpq/cmp.c: Likewise.
163
164	* mpn/generic/mul_fft.c (mpn_fft_mul_modF_K):
165	Fully handle carry propagation in basecase multiplication.
166
1672020-05-16  Torbjörn Granlund  <tg@gmplib.org>
168
169	* mpn/generic/hgcd2.c (tabp): Combine several undefined tabp
170	variable definitions with a macro.
171
172	* mpn/generic/gcd_22.c: Avoid C99 constructs.
173
1742020-05-12  Torbjörn Granlund  <tg@gmplib.org>
175
176	* mpn/generic/compute_powtab.c: Avoid C99 constructs.
177	* mpn/generic/get_str.c: Likewise.
178	* mpn/generic/set_str.c: Likewise.
179
180	* gmp-impl.h (memset): Move ASSERT to before decls.
181	* tests/refmpn.c: Likewise.
182
183	* mpn/generic/hgcd2.c (tabp): Combine several undefined tabp variable
184	definitions with a macro.
185
186	* mpn/generic/strongfibo.c: Avoid defining helper function when unused.
187
188	* mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q_n_itch): Disable unused
189	static function.
190
191	* mpz/mul.c: Add some {} to suppress warning.
192
193	* tests/mpn/t-gcd_11.c: Exit main() properly.
194	* tests/mpn/t-gcd_22.c: Likewise.
195	* tests/mpn/t-gcdext_1.c: Likewise.
196
1972020-04-28  Torbjörn Granlund  <tg@gmplib.org>
198
199	* tests/mpz/reuse.c (realloc_if_reducing): New function.
200	(INVOKE_RRS, etc): Use realloc_if_reducing.
201
2022020-01-17  Torbjörn Granlund  <tg@gmplib.org>
203
204	* Version 6.2.0 released.
205
206	* gmp-h.in (__GNU_MP__): Bump.
207	(__GNU_MP_VERSION,__GNU_MP_VERSION_MINOR,__GNU_MP_VERSION_PATCHLEVEL):
208	Bump version info.
209	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*):
210	Bump version info.
211
2122020-01-15  Torbjörn Granlund  <tg@gmplib.org>
213
214	* mpn/x86_64/bt1/gcd_11.asm: Add missing FUNC_EXIT.
215
2162020-01-10  Torbjörn Granlund  <tg@gmplib.org>
217
218	* longlong.h (powerpc): Add clobbers, make formatting cleanups.
219
220	* configure.ac (HAVE_NATIVE): Add mpn_sbpi1_bdiv_r.
221
222	* tune/tune-gcd-p.c (main): Use %zu for size_t printing.
223
224	* configfsf.guess: Update from upstream.
225
226	* mpn/x86/pentium4/sse2/popcount.asm: For simplicity and correctness
227	use LEAL directly.
228
2292020-01-03  Niels Möller  <nisse@lysator.liu.se>
230
231	* configure.ac: Delete suggestion to use TESTS_ENVIRONMENT to run
232	wine. It worked only with older versions of automake.
233
2342019-12-23  Torbjörn Granlund  <tg@gmplib.org>
235
236	* mpf/mul.c: Rewrite to invoke mpn_sqr when appropriate.
237
2382019-12-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
239
240	* mpz/powm.c: Full normalisation when e=1 & b<0.
241	* tests/mpz/t-powm.c: More tests for the e=1 case.
242
2432019-12-02  Torbjörn Granlund  <tg@gmplib.org>
244
245	* mpn/generic/gcd_11.c: Remove check for NATIVE_ implementation.
246
2472019-11-24  Niels Möller  <nisse@lysator.liu.se>
248
249	* mpn/generic/gcdext_1.c [USE_ZEROTAB]: Delete code variant for
250	USE_ZEROTAB != 0. Was used in the currently disabled binary
251	gcdext.
252
2532019-11-20  Torbjörn Granlund  <tg@gmplib.org>
254
255	* mpn/generic/powm.c (MPN_REDC_1): Prefer mpn_sbpi1_bdiv_r when it is
256	provided.
257	* mpn/generic/sec_powm.c (MPN_REDC_1_SEC): Likewise.
258
2592019-11-17  Torbjörn Granlund  <tg@gmplib.org>
260
261	* config.guess: Recognise zen2.
262	* configure.ac: Likewise.
263
264	* mpn/x86_64/bt1/aorsmul_1.asm: Rewrite.
265	* mpn/x86_64/bt1/mul_1.asm: Rewrite.
266
267	* mpn/arm/v6t2/gcd_11.asm: Increase alignment; update x/l table.
268
2692019-11-16 Seth Troisi <sethtroisi@google.com>
270
271	* tune/common.c (speed_mpn_perfect_power_p): New function.
272	(speed_mpn_perfect_power_p): New function.
273	* tune/speed.h: Declare both.
274	* tune/speed.c (routine): Add mpn_perfect_{power,square}_p.
275
276	* tune/common.c (speed_mpz_nextprime): New function.
277	* tune/speed.h: Declare it.
278	* tune/speed.c (routine): Add mpz_nextprime.
279
2802019-11-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
281
282	* tune/speed.c (routine_t): Add R flag to mpz_powm
283	* tune/speed.h (SPEED_ROUTINE_MPZ_POWM): Use R flag as the base.
284
2852019-10-02  Torbjörn Granlund  <tg@gmplib.org>
286
287	* configure.ac: Make more path distinctions for the benefit of
288	gmp-mparam.h.
289
2902019-10-01  Torbjörn Granlund  <tg@gmplib.org>
291
292	* configure.ac (arm64): Let cortex-a7x look in a57 folder.
293
2942019-10-01  Niels Möller  <nisse@lysator.liu.se>
295
296	* mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]: Fix
297	canonicalization condition.
298
2992019-09-30  Niels Möller  <nisse@lysator.liu.se>
300
301	* tests/mpn/t-gcdext_1.c: New test.
302
3032019-09-23  Torbjörn Granlund  <tg@gmplib.org>
304
305	* mpn/generic/hgcd2.c: Mark added div1 variants as static.
306
307	* tune/tuneup.c, tune/speed.c, tune/speed.h, tune/common.c,
308	tune/Makefile.am: Add measuring of mpn_hgcd2 method 4 and 5.
309	* tune/hgcd2-4.c, tune/hgcd2-5.c: New files.
310
3112019-09-23  Niels Möller  <nisse@lysator.liu.se>
312
313	* gmp-impl.h (hgcd2_func_t) [TUNE_PROGRAM_BUILD]: New typedef.
314	(hgcd2_func) [TUNE_PROGRAM_BUILD]: New function pointer.
315
316	* tune/hgcd2.c (mpn_hgcd2): New file, with a redefined function to
317	invoke an implementation via the hgcd2_func function pointer.
318	Initially points to the default implementation in
319	mpn/generic/hgcd2.c.
320	* tune/Makefile.am (tuneup_SOURCES): Add hgcd2.c.
321
322	* tune/tuneup.c (one_method): Return index of selected function.
323	(tune_hgcd2): Set hgcd2_func to point to selected function. So
324	that the later tuning of mpn_hgcd and mpn_gcd uses the right
325	implementation of hgcd2.
326
3272019-09-23  Torbjörn Granlund  <tg@gmplib.org>
328
329	* mpn/generic/hgcd2.c: Improve method 4 and 5 by using the division
330	free methods optimistically, detecting errors.  Tweak table values.
331
3322019-09-22  Torbjörn Granlund  <tg@gmplib.org>
333
334	* mpn/generic/hgcd2.c: Add a 4th and 5th div1 method.
335
3362019-09-18  Torbjörn Granlund  <tg@gmplib.org>
337
338	* mpn/generic/hgcd2.c (div1, div2): Rearrange things to allow for asm.
339	(div2): Avoid out-of-specs shift.
340	(div2): Use same variable naming in all variants.
341
3422019-09-16  Niels Möller  <nisse@lysator.liu.se>
343
344	* mpn/generic/hgcd2.c (HGCD2_DIV2_METHOD): New define.
345	(div2): Replaced, since the old implementation had lots of poorly
346	predicted and expensive branches. Two new implementaions, selected
347	by HGCD2_DIV2_METHOD.
348	(div2) [HGCD2_DIV2_METHOD == 1]: Calls div1 on the high limbs,
349	with unlikely case handling large quotients.
350	(div2) [HGCD2_DIV2_METHOD == 2]: The previously #if:ed out
351	version. A bitwise division, relying on fast count_leading_zeros,
352	and with fewer branches than the previous code.
353
3542019-09-15  Torbjörn Granlund  <tg@gmplib.org>
355
356	* acinclude.m4 (GMP_ASM_X86_ADX): Remove unused.
357
358	* configure.ac (x86): Amend last change.
359
3602019-09-14  Niels Möller  <nisse@lysator.liu.se>
361
362	* mpn/generic/hgcd2.c (HGCD2_DIV1_METHOD): Rename, and change
363	default to 3. Updated all usage.
364	(HGCD2_METHOD): ... the old name, deleted.
365
3662019-09-14  Torbjörn Granlund  <tg@gmplib.org>
367
368	* configure.ac: Remove obsolete path-triggered invocation of
369	GMP_ASM_X86_ADX and GMP_ASM_X86_MULX.
370
371	* acinclude.m4 (GMP_ASM_X86_MULX): Set X86_ASM_MULX to config.h.
372	* configure.ac (x86): Set x86_have_mulx for relevant CPUs.
373	Use if to conditionally invoke GMP_ASM_X86_MULX.
374	* longlong.h (x86 umul_ppmm): Test also X86_ASM_MULX for when to use
375	mulx variant.
376
3772019-09-13  Niels Möller  <nisse@lysator.liu.se>
378
379	* tune/tuneup.c (one_method): New helper function, to measure
380	several functions for a fix size.
381	(tune_hgcd2, tune_div_qr_1, tune_mod_1, tune_jacobi_base): Use it.
382
3832019-09-13  Torbjörn Granlund  <tg@gmplib.org>
384
385	* configure.ac (HAVE_HOST_CPU_1): Add many x86_64 CPU types.
386	* longlong.h (x86 umul_ppmm): Fix criterion for when to use mulx.
387	(count_leading_zeros): Use lzcnt for appropriate CPUs.
388	(count_trailing_zeros): Use tzcnt for appropriate CPUs.
389
390	* mpn/generic/hgcd2.c (HGCD2_METHOD=2 div1): Rewrite.
391
3922019-09-09  Torbjörn Granlund  <tg@gmplib.org>
393
394	* mpn/generic/mul.c: Call mpn_mul_basecase early when in range.  Never
395	call mpn_sqr.
396
397	* mpn/generic/gcd.c: Rewrite tail of function, for n <= 2.
398
3992019-09-08  Torbjörn Granlund  <tg@gmplib.org>
400
401	* configure.ac (arm): Select arch armv7ve for a7, a12, a15, and a17,
402	this enables the use of the udiv instruction.
403
404	* mpn/generic/hgcd2.c (disabled div2): Micro-optimise.
405
4062019-09-07  Torbjörn Granlund  <tg@gmplib.org>
407
408	* mpn/generic/hgcd2.c (HGCD2_METHOD=3 div1): Micro-optimise.
409
4102019-09-07  Vincent Lefevre <vincent@vinc17.net>
411
412	* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Append EXEEXT for executable.
413
4142019-09-05  Torbjörn Granlund  <tg@gmplib.org>
415
416	* mpn/arm64/gcd_22.asm: Rewrite to make better use of Arm conditional
417	execution.
418	* mpn/arm32/gcd_22.asm: Likewise.
419
4202019-09-05  Niels Möller  <nisse@lysator.liu.se>
421
422	* mpn/generic/hgcd2.c (div1): Return both r and q as a
423	mp_double_limb_t, replacing the DIV1 macro.
424	(div1) [HGCD2_METHOD == 3]: New implementation handling q <= 7
425	specially and without branches. Based on Torbjörn's mail to the
426	gmp-devel list.
427	* tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Add
428	corresponding speed support.
429	* tune/hgcd2-3.c: New file.
430	* tune/tuneup.c (print_define_with_speedup): New function, to
431	output a comment with speedup compared to next-best method.
432	(tune_hgcd2): Update tuning.
433
4342019-09-04  Niels Möller  <nisse@lysator.liu.se>
435
436	* mpn/generic/hgcd2.c (HGCD2_METHOD): New parameter.
437	(DIV1): New macro, using either the div1 function or plain
438	division, depending on the value of HGCD2_METHOD.
439	(mpn_hgcd2): Use DIV1.
440	* tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Add
441	measuring of mpn_hgcd2 methods.
442	* tune/hgcd2-1.c, tune/hgcd2-2.c: New files.
443	* tune/tuneup.c: Tune HGCD2_METHOD.
444
445	* tune/speed.h (SPEED_ROUTINE_MPN_HGCD2): New macro.
446	* tune/common.c (speed_mpn_hgcd2): New function.
447	* tune/speed.c (routine): Add mpn_hgcd2.
448
4492019-09-04  Torbjörn Granlund  <tg@gmplib.org>
450
451	* mpn/arm/v6t2/gcd_22.asm: New file.
452	* mpn/arm64/gcd_22.asm: New file.
453	* mpn/ia64/gcd_11.asm: New file.
454
4552019-09-01  Torbjörn Granlund  <tg@gmplib.org>
456
457	* mpn/x86_64/bt1/gcd_11.asm: Replace grabber with bt1 optimised code.
458
4592019-08-30  Torbjörn Granlund  <tg@gmplib.org>
460
461	* mpn/x86_64/bd4/gcd_22.asm: New grabber file.
462
463	* mpn/x86_64/zen/gcd_22.asm: Use coreihwl instead of bd2 gcd_22.
464
465	* mpn/x86_64/bd2/gcd_22.asm: Fix typo in FUNC_ENTRY (currently unused).
466	Avoid a register copy before return.
467	* mpn/x86_64/core2/gcd_22.asm: Likewise.
468	* mpn/x86_64/k10/gcd_22.asm: Likewise.
469	* mpn/x86_64/gcd_22.asm: Likewise.
470
471	* mpn/x86_64/coreihwl/gcd_22.asm: Optimise, now runs well on more CPUs.
472
473	* mpn/x86_64/gcd_11.asm: Remove PROTECT from symbols as they are
474	actually local.
475	* mpn/x86_64/gcd_22.asm: Likewise.
476
4772019-08-25  Torbjörn Granlund  <tg@gmplib.org>
478
479	* mpn/x86_64/bd2/gcd_22.asm: Repeat tzcnt for exceptional lowz case.
480	Remove dead code.
481
482	* mpn/powerpc64/mode64/p7/gcd_22.asm: Make logic for determining ABI
483	wrt struct return more robust.
484	* mpn/powerpc64/mode64/p9/gcd_22.asm: Likewise.
485
4862019-08-24  Torbjörn Granlund  <tg@gmplib.org>
487
488	* mpn/x86_64/bt1/gcd_11.asm: New grabber.
489	* mpn/x86_64/bt1/gcd_22.asm: New grabber.
490	* mpn/x86_64/bt2/gcd_22.asm: New grabber.
491
492	* mpn/x86_64/atom/gcd_22.asm: Remove stale grabber file.
493	* mpn/x86_64/zen/gcd_22.asm: Grab bd2 instead of hwl code.
494	* mpn/x86_64/bd2/gcd_22.asm: New file.
495	* mpn/x86_64/k8/gcd_22.asm: Remove, rely on top-level code instead.
496	* mpn/x86_64/bt1/gcd_22.asm: Remove.
497	* x86_64/gcd_22.asm: New file, improved version of removed bt1 code.
498
4992019-08-22  Torbjörn Granlund  <tg@gmplib.org>
500
501	* mpn/x86_64/coreihwl/gcd_11.asm: Remove as it was never beneficial.
502
503	* mpn/x86_64/bd2/gcd_11.asm: Make sure rdx is zero on return to benefit
504	gcd_22's private calls. Make gcd_11 files more similar in register use.
505	* mpn/x86_64/bd4/gcd_11.asm: Likewise.
506	* mpn/x86_64/core2/gcd_11.asm: Likewise.
507	* mpn/x86_64/gcd_11.asm:: Likewise.
508
5092019-08-22  Niels Möller  <nisse@lysator.liu.se>
510
511	From Hugh McMaster:
512	* gmp.pc.in, gmpxx.pc.in: New files.
513	* configure.ac: New output files gmp.pc and gmpxx.pc.
514	* Makefile.am (pkgconfigdir, pkgconfig_DATA): New automake
515	settings, to install gmp.pc and optionally gmpxx.pc for use with
516	pkg-config.
517
5182019-08-21  Torbjörn Granlund  <tg@gmplib.org>
519
520	* mpn/x86_64/core2/gcd_22.asm: New file.
521	* mpn/x86_64/k8/gcd_22.asm: New file.
522	* mpn/x86_64/k10/gcd_22.asm: New file.
523	* mpn/x86_64/coreihwl/gcd_22.asm: New file.
524	* mpn/x86_64/bt1/gcd_22.asm: New file.
525	* mpn/x86_64/bd4/gcd_22.asm: New grabber.
526	* mpn/x86_64/zen/gcd_22.asm: New grabber.
527	* mpn/x86_64/atom/gcd_22.asm: New grabber.
528
5292019-08-19  Torbjörn Granlund  <tg@gmplib.org>
530
531	* configure.ac: Check for ELFv1 ABI on PowerPC.
532
5332019-08-18  Torbjörn Granlund  <tg@gmplib.org>
534
535	* longlong.h (arm32 sub_ddmmss): Define separately for thumb and
536	non-thumb as rsc instruction is missing for thumb.
537
538	* mpn/powerpc64/mode64/p7/gcd_22.asm: New file.
539	* mpn/powerpc64/mode64/p9/gcd_22.asm: New file.
540
5412019-08-17  Torbjörn Granlund  <tg@gmplib.org>
542
543	* demos/expr/t-expr.c: #include gmp-impl.h as it includes tests.h.
544
545	* mpn/asm-defs.m4: Add gcd_22.
546
547	* tests/refmpn.c (refmpn_gcd_22): New function.
548	* tests/tests.h: Declare it.
549
550	* tests/t-constants.c: #include gmp-impl.h.
551	* tests/mpf/t-get_d.c: Likewise.
552
5532019-08-17  Niels Möller  <nisse@lysator.liu.se>
554
555	* mpn/generic/gcd_22.c (mpn_gcd_22): New implementation with less
556	branches.
557
5582019-08-16 Marco Bodrato <bodrato@mail.dm.unipi.it>
559
560	* mpn/generic/brootinv.c: Shorten computations, using even exponent.
561	* mpn/generic/powlo.c: Avoid copies with a flipflop.
562
5632019-08-16  Niels Möller  <nisse@lysator.liu.se>
564
565	Speed support for gcd_22. Calls mpn_gcd_22(al, al, bl, bl), so
566	that B+1 is a common factor.
567	* tune/speed.h (SPEED_ROUTINE_MPN_GCD_22): New macro.
568	* tune/speed.c (routine): Add mpn_gcd_22.
569	* tune/common.c (speed_mpn_gcd_22): New function.
570
571	* mpn/generic/gcd.c (gcd_2): Moved to gcd_22.c below.
572	(mpn_gcd): Adapt for calling gcd_22.
573	* mpn/generic/gcd_22.c (mpn_gcd_22): New file and function.
574	* gmp-impl.h (mp_double_limb_t): New (typedef) struct.
575	* configure.ac (gmp_mpn_functions): Added gcd_22.
576
577	* tests/mpn/t-gcd_22.c: New test.
578	* tests/mpn/Makefile.am (check_PROGRAMS): Add t-gcd_22.
579	* tests/refmpz.c (refmpz_gcd): New function (plain binary gcd).
580
5812019-08-15  Torbjörn Granlund  <tg@gmplib.org>
582
583	* mpn/x86_64/zen/gcd_11.asm: Use bd2 instead of bd4 code.
584
5852019-08-13  Torbjörn Granlund  <tg@gmplib.org>
586
587	* mpn/x86_64: Add more gcd_11 variants of of x86_64 gcd_11.asm and
588	tweak existing ones.
589
5902019-08-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
591
592	From Seth Troisi:
593	* doc/gmp.texi: Update mpz_millerrabin documentation.
594
595	* mpn/x86_64/bd2/gcd_11.asm: Micro-optimisation.
596	* doc/gmp.texi: Further update in mpz_millerrabin.
597	* tests/misc.c: Silence a warning.
598	* tests/mpz/t-pprime_p.c (const primes): One more prime in the list.
599	* mpz/millerrabin.c: Return 2 for surely prime numbers (BPSW checked).
600
6012019-08-08  Torbjörn Granlund  <tg@gmplib.org>
602
603	* mpn/x86/gcd_11.asm: New file.
604
605	* config.sub: Make arm cpu types match what config.guess returns.
606
6072019-08-08  Niels Möller  <nisse@lysator.liu.se>
608
609	* tests/refmpn.c (refmpn_gcd_11): New function, based on refmpn_gcd_1.
610	(refmpn_gcd_1): Use it.
611	* tests/mpn/t-gcd_11.c: New file, test mpn_gcd_11.
612	* tests/mpn/Makefile.am (check_PROGRAMS): Add t-gcd_11.
613
6142019-08-07  Torbjörn Granlund  <tg@gmplib.org>
615
616	* mpn/alpha/ev67/gcd_11.asm: New file, mostly extracted from gcd_1.asm.
617	* mpn/arm/v5/gcd_11.asm: Likewise.
618	* mpn/arm/v6t2/gcd_11.asm: Likewise.
619	* mpn/arm64/gcd_11.asm: Likewise.
620	* mpn/powerpc64/mode64/gcd_11.asm: Likewise.
621	* mpn/powerpc64/mode64/p7/gcd_11.asm: Likewise.
622	* mpn/powerpc64/mode64/p9/gcd_11.asm: Likewise.
623	* mpn/sparc64/gcd_11.asm: Likewise.
624	* mpn/x86/k7/gcd_11.asm: Likewise.
625	* mpn/x86/p6/gcd_11.asm: Likewise.
626	* mpn/x86_64/bd2/gcd_11.asm: Likewise.
627	* mpn/x86_64/core2/gcd_11.asm: Likewise.
628	* mpn/x86_64/gcd_11.asm: Likewise.
629	* mpn/asm-defs.m4: Add gcd_11.
630
6312019-08-06  Niels Möller  <nisse@lysator.liu.se>
632
633	* tune/common.c (speed_mpn_gcd_11): New function.
634	* tune/speed.h (speed_mpn_gcd_11): Declare it.
635	(SPEED_ROUTINE_MPN_GCD_11): New macro.
636	* tune/speed.c (routine): Add mpn_gcd_11.
637
638	* configure.ac (gmp_mpn_functions): Added gcd_11. Also add
639	HAVE_NATIVE_mpn_gcd_11.
640	* mpn/generic/gcd_11.c (mpn_gcd_11): New file and function,
641	extracted from mpn_gcd_1.
642	* gmp-h.in (mpn_gcd_11): Declare it.
643	* mpn/generic/gcd_1.c (mpn_gcd_1): Adapted to call mpn_gcd_11.
644
6452019-08-04  Torbjörn Granlund  <tg@gmplib.org>
646
647	* mpn/x86_64/bt2/gcd_1.asm: New grabber file.
648	* mpn/x86_64/zen/gcd_1.asm: Grab from "bd2" directory, was "core2".
649
6502019-08-02  Torbjörn Granlund  <tg@gmplib.org>
651
652	* mpn/x86_64/bd2/gcd_1.asm: New file.
653
6542019-08-01  Torbjörn Granlund  <tg@gmplib.org>
655
656	* tests/mpf/t-conv.c: Add several more fixed test cases.
657
658	* mpf/set_str.c: Ignore leading zeros including ones after radix point
659	to avoid invalid output formats.
660
6612019-07-30  Torbjörn Granlund  <tg@gmplib.org>
662
663	* mpn/powerpc64/mode64/p9/gcd_1.asm: New file.
664
6652019-07-30  Niels Möller  <nisse@lysator.liu.se>
666
667	From Seth Troisi:
668	* doc/gmp.texi (Jacobi Symbol): Update algorithm documentation.
669	* tests/mpz/t-jac.c: Comment update.
670
6712019-07-13  Torbjörn Granlund  <tg@gmplib.org>
672
673	* configure.ac (arm): Generalise arm a72 pattern to match a73...a79.
674
6752019-07-08  Torbjörn Granlund  <tg@gmplib.org>
676
677	* mpn/arm/arm-defs.m4 (ASM_START): Rewrite (fix broken error handling).
678
6792019-07-02  Torbjörn Granlund  <tg@gmplib.org>
680
681	* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Compile conftest.c to executable
682	in order to trigger final compile in case of LTO.
683
6842019-06-17  Torbjörn Granlund  <tg@gmplib.org>
685
686	* config.guess: Work around upstream configfsf.guess's regression wrt
687	mips vs mips64.
688
6892019-06-14  Torbjörn Granlund  <tg@gmplib.org>
690
691	* longlong.h (mips64): Provide r6 asm code as default expression yields
692	libcall.
693
694	* configure.ac (mips64): Use separate paths for r6 and non-r6 as these
695	architectures are mutually incompatible.
696
697	* mpn/mips64/{addmul_1,mul_1,sqr_diagonal,submul_1,umul}.asm:
698	Move into hilo subdir.
699
7002019-05-28  Torbjörn Granlund  <tg@gmplib.org>
701
702	* config.sub: Fixes to which cpu types end with a "*".
703
7042019-04-20  Niels Möller  <nisse@lysator.liu.se>
705
706	* doc/gmp.texi (References): Link to paper on subquadratic GCD.
707
7082019-04-19  Torbjörn Granlund  <tg@gmplib.org>
709
710	* mpn/x86_64/bd1/hamdist.asm: Really make 2017-06-01 change: Use
711	3-operand DEF_OBJECT.
712
713	* mpn/x86_64/invert_limb.asm: Simplify mpn_invert_limb_table ref.
714
715	* mpn/x86_64/x86_64-defs.m4 (LEA): Use rip addressing for non-PIC.
716
7172019-04-17  Niels Möller  <nisse@lysator.liu.se>
718
719	* mpn/generic/jacobi.c (mpn_jacobi_n): Use JACOBI_DC_THRESHOLD,
720	not GCD_DC_THRESHOLD. Inconsistency spotted by Seth Troisi.
721
7222019-04-02  Torbjörn Granlund  <tg@gmplib.org>
723
724	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init):
725	Split out silvermont handling, add handling of goldmont.
726
727	* configure.ac: Setup distinct paths for silvermont and goldmont.
728	(fat_path): Add missing x86_64/goldmont.
729
730	* config.guess: Recognise "Goldmont Plus".
731
7322018-12-09  Torbjörn Granlund  <tg@gmplib.org>
733
734	* mpn/generic/mul_fft.c (mpn_fft_add_sub_modF): New function.
735	(mpn_fft_fft, mpn_fft_fftinv): Use it.
736
7372018-11-30  Torbjörn Granlund  <tg@gmplib.org>
738
739	* mpn/powerpc64/mode64/p9/gmp-mparam.h: New file.
740
741	* mpn/powerpc64/mode64/p9/add_n_sub_n.asm: New file.
742
7432018-11-28  Torbjörn Granlund  <tg@gmplib.org>
744
745	* mpn/powerpc64/mode64/p9/sqr_basecase.asm: New file.
746	* mpn/powerpc64/mode64/p9/mul_1.asm: New file.
747
7482018-11-18  Torbjörn Granlund  <tg@gmplib.org>
749
750	* mpn/powerpc64/mode64/p9/mul_basecase.asm: New file.
751
752	* mpn/powerpc64/mode64/p9/addmul_1.asm: Optimise.
753
7542018-11-12  Torbjörn Granlund  <tg@gmplib.org>
755
756	* mpn/powerpc64/mode64/p9/aorsmul_1.asm: New file, providing fast
757	submul_1 (and redundant addmul_1).
758
7592018-11-11  Torbjörn Granlund  <tg@gmplib.org>
760
761	* mpn/powerpc64/mode64/p9/addmul_1.asm: Tweak for slightly better
762	speed.
763
764	* mpn/powerpc32/powerpc-defs.m4: Define addex.
765	* mpn/powerpc64/mode64/p9/mul_2.asm: Use it.
766	* mpn/powerpc64/mode64/p9/addmul_2.asm: Likewise.
767
7682018-11-08  Torbjörn Granlund  <tg@gmplib.org>
769
770	* tests/devel/cnd_aors_n.c: New file.
771
772	* mpn/arm/neon/lorrshift.asm: Declare use of neon insns.
773	* mpn/arm/neon/lshiftc.asm: Likewise + cleanup.
774
775	* tests/devel/Makefile.am (EXTRA_PROGRAMS): Add missing files.
776
777	* mpn/powerpc64/mode64/p9/mul_2.asm: New file.
778	* mpn/powerpc64/mode64/p9/addmul_2.asm: New file.
779
7802018-11-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
781
782	* mpz/lucnum2_ui.c: Use mpn_rsblsh1_n if available.
783	* tests/mpz/t-nextprime.c: Add one more interval.
784	* tests/mpz/t-pprime_p.c (check_fermat_mersenne): New tests.
785	* mpn/generic/mod_1_3.c: typo in a comment.
786	* mpz/nextprime.c: Use tdiv instead of fdiv.
787
788	* mpn/generic/fib2m.c: New file, Fibonacci numbers modulo.
789	* configure.ac (gmp_mpn_functions): Add it.
790	* gmp-impl.h: Declare mpn_fib2m.
791	* tests/mpn/t-fib2m.c: New file, tests for mpn_fib2m.
792	* tests/mpn/Makefile.am (check_PROGRAMS): Add t-fib2m.
793
794	* mpn/generic/mod_34lsub1.c: Initialise c[012] once.
795	* tests/mpz/t-pprime_p.c (check_primes): Two more primes.
796	* tests/mp?: Use TESTS_REPS in many files.
797
798	* mpn/generic/strongfibo.c: New file, Fibonacci primality test.
799	* configure.ac (gmp_mpn_functions): Add it.
800	* gmp-impl.h: Declare mpn_strongfibo.
801
802	* mpz/stronglucas.c: New file, strong Lucas primality test.
803	* Makefile.am (MPZ_OBJECTS): Add it.
804	* mpz/Makefile.am (libmpz_la_SOURCES): Add it.
805	* gmp-impl.h: Declare mpz_stronglucas.
806
807	* mpz/millerrabin.c: Implement BPSW test for primality.
808
8092018-11-07  Torbjörn Granlund  <tg@gmplib.org>
810
811	* configure.ac (arm): Support a12 and a17.
812	* config.sub: Generalise arm matching.
813	* config.guess: Recognise additional arm CPUs.
814
815	* mpn/arm/arm-defs.m4 (ASM_START): Provide local definition.
816
8172018-10-30  Torbjörn Granlund  <tg@gmplib.org>
818
819	* mpn/arm/v7a/cora17/mod_34lsub1.asm: New file.
820	* mpn/arm/v7a/cora17/gmp-mparam.h: New file.
821	* mpn/arm/v7a/cora17/mul_1.asm: New grabber file.
822	* mpn/arm/v7a/cora17/addmul_1.asm: Likewise.
823	* mpn/arm/v7a/cora17/submul_1.asm: Likewise.
824
8252018-10-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
826
827	* mpn/generic/fib2_ui.c: Simplify the possible -2 case.
828
8292018-07-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
830
831	* mpz/millerrabin.c (mod_eq_m1): New function, equality with -1.
832	* mpz/powm_ui.c: Small optimisations.
833
8342018-07-03  Torbjörn Granlund  <tg@gmplib.org>
835
836	* mpn/x86_64/lshift.asm: Remove cnt = 1 special code.
837
838	* mpn/x86_64/silvermont/popcount.asm: Add missing ABI_SUPPORT decls.
839	* mpn/x86_64/silvermont/hamdist.asm: Likewise.
840	* mpn/x86_64/zen/mul_1.asm: Likewise.
841
842	* mpn/x86_64/fastsse/lshift.asm: Support DOS64.
843	* mpn/x86_64/fastsse/lshiftc.asm: Likewise.
844
845	* mpn/x86_64/pentium4/gmp-mparam.h: Retune.
846
8472018-07-01  Torbjörn Granlund  <tg@gmplib.org>
848
849	* lshift.asm: Replace with grabber file.
850	* lshiftc.asm: Replace with grabber file.
851	* x86_64/pentium4/addmul_2.asm: New grabber file.
852	* x86_64/pentium4/aorsmul_1.asm: New grabber file.
853	* x86_64/pentium4/mul_1.asm: New grabber file.
854	* x86_64/pentium4/mul_2.asm: New grabber file.
855	* x86_64/pentium4/mul_basecase.asm: New grabber file.
856	* x86_64/pentium4/mullo_basecase.asm: New grabber file.
857	* x86_64/pentium4/redc_1.asm: New grabber file.
858	* x86_64/pentium4/sqr_basecase.asm: New grabber file.
859
8602018-06-13  Niels Möller  <nisse@lysator.liu.se>
861
862	* mpn/generic/gcd_1.c (mpn_gcd_1): Delete unused code variant for
863	GCD_1_METHOD == 1, and delete GCD_1_METHOD macro. Simplify the
864	structure of the remaining code variant, without gotos to the
865	mid-loop strip_u_maybe label.
866
8672018-05-30  Torbjörn Granlund  <tg@gmplib.org>
868
869	* configure.ac (x86): Provide goldmont specific path.
870
871	* mpn/x86_64/goldmont/gmp-mparam.h: New file.
872
8732018-05-29  Torbjörn Granlund  <tg@gmplib.org>
874
875	* configure.ac (x86): Pass more exact arch/tune options for nehalem.
876
8772018-05-28  Niels Möller  <nisse@lysator.liu.se>
878
879	* mpn/generic/gcd_1.c (mpn_gcd_1) [USE_ZEROTAB]: Delete unused code
880	variant for USE_ZEROTAB != 0.
881
8822018-05-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
883
884	* bootstrap.c: Define DONT_USE_FLOAT_H before including mini-gmp.
885
8862018-05-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
887
888	* mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q_n): Decl. static.
889	(mpn_dcpi1_bdiv_q_n_itch): Declare static.
890	* mpn/generic/dcpi1_divappr_q.c (mpn_dcpi1_divappr_q_n): static.
891	* mpn/generic/matrix22_mul.c (mpn_matrix22_mul_strassen): static.
892	* mpn/generic/mu_div_qr.c (mpn_mu_div_qr_choose_in): static.
893	* mpn/generic/mu_divappr_q.c (mpn_preinv_mu_divappr_q): static.
894	(mpn_mu_divappr_q_choose_in): static.
895	* gmp-impl.h: Remove declaration of previous functions.
896
897	* mpn/generic/get_d.c: Enhance generic code using DBL_MANT_DIG.
898
899	* printf/repl-vsnprintf.c: Better handling floating-point
900	specifiers "EeGgFf" (Thanks Vincent Lefevre).
901
9022018-05-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
903
904	* doc/gmp.texi (mpq_*_str): Document the full base allowed range.
905	* mpq/get_str.c: Make all bases either work or return an error.
906
907	* doc/gmp.texi (Integer Internals): Lazy allocation and read-only.
908
9092018-04-27  Niels Möller  <nisse@lysator.liu.se>
910
911	* mpn/generic/div_q.c (mpn_div_q): Replace dead code with ASSERT.
912	Spotted by Paul Zimmermann and Raphaël Rieu-Hleft.
913
914	* tests/mpn/t-div.c (main): Fill quotient area with junk before
915	calling mpn_div_q.
916
9172018-04-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
918
919	* Makefile.am (EXTRA_DIST): Add mini-gmp/mini-mpq.[ch].
920
9212018-04-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
922
923	* mpn/generic/toom2_sqr.c: Handle the cy=-1 branch slightly faster.
924	* mpn/generic/toom22_mul.c: Likewise. (Thanks Paul and Raphaël!)
925
9262018-04-22  Niels Möller  <nisse@lysator.liu.se>
927
928	From Martin Storsjö:
929	* configure.ac (aarch64): Just as on windows/x86_64, "long" still
930	is 32 bit on aarch64. To distinguish between 32-bit and 64-bit
931	ABI, test sizeof(void*) instead of sizeof(long). Use long long for
932	mp_limb_t for mingw targets.
933	* acinclude.m4 (GMP_C_TEST_SIZEOF): Allow '*' in the type name,
934	e.g., void*.
935
9362018-04-18  Marc Glisse  <marc.glisse@inria.fr>
937
938	* mpq/clear.c: Handle lazy numerator.
939	* mpq/clears.c: Likewise.
940	* mpq/init.c: Likewise.
941	* mpq/set_si.c: Likewise.
942	* mpq/set_ui.c: Likewise.
943
944	* tests/cxx/t-ops2z.cc: Add parentheses to quiet a warning.
945
9462018-03-28  Torbjörn Granlund  <tg@gmplib.org>
947
948	* configure.ac (mips): Recognise "mipsisa64*".
949
9502018-03-23  Torbjörn Granlund  <tg@gmplib.org>
951
952	* mpn/generic/sec_powm.c: Remove unused macros.
953	Simplify code for choosing between redc_1 and redc_2.
954	Compute power table with squaring for even powers.
955
9562018-02-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
957
958	* gmpxx.h (__gmp_binary_plus): Special case for mpq + 1.
959	(__gmp_binary_minus): Special case for mpq - 1.
960	(__gmp_binary_equal): Optimised comparison mpq == integer.
961	* tests/cxx/t-ops2qf.cc (checkqf): Some check for +/- 1, +/- 0.
962
9632018-02-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
964
965	* tune/Makefile.am: Disallow parallel make (thanks Vincent Lefevre).
966	* mpq/swap.c: Use *_SWAP_* macros.
967	* mpq/cmp_ui.c: One more little shortcut, comparing fractions to 1.
968	* mpq/get_d.c: Compare (zeros > 0) once, replace tdiv_qr with div_q.
969	* mpq/equal.c: Check size early.
970
971	* printf/obprintf.c: Adda dummy typedef to avoid empty unit.
972	* printf/obvprintf.c: Likewise.
973	* printf/obprntffuns.c: Likewise.
974	* printf/repl-vsnprintf.c: Move #ifdef after #include gmp-impl.h .
975
9762018-02-09  Torbjörn Granlund  <tg@gmplib.org>
977
978	* mpn/arm: Really revert 2018-01-04 changes.
979
9802018-02-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
981
982	* printf/snprntffuns.c: Report -1 as an error.
983	* acinclude.m4 (GMP_FUNC_VSNPRINTF): Refuse -1 as return value.
984
985	* mpz/bin_uiui.c (mpz_smallk_bin_uiui): One more shortcut for small k.
986	* gmp-impl.h (popc_limb): Use fewer constants (GMP_LIMB_BITS == 16).
987	* mpz/divegcd.c (mpz_divexact_limb): Use MPN_DIVREM_OR_DIVEXACT_1.
988	* primesieve.c (fill_bitpattern): Use MPN_FILL.
989
9902018-02-01  Marc Glisse  <marc.glisse@inria.fr>
991
992	* longlong.h (i586): Remove assert.
993
9942018-01-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
995
996	* mpz/and.c: Rearrange the 3 cases, both <0, both >=0, one and one.
997	* mpz/ior.c: Likewise.
998	* mpz/xor.c: Likewise.
999
1000	* mpz/bin_uiui.c (mul[4-8]): Reduce the number of multiplications.
1001
1002	* printf/doprnt.c: Use __GMP_FREE_FUNC_TYPE.
1003	* printf/doprntf.c: Likewise.
1004	* printf/snprntffuns.c: Likewise, and use size_t instead of int.
1005
10062018-01-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
1007
1008	* tests/mpz/t-bin.c: Extended tests for bin_ui and uint border cases.
1009
10102018-01-10  Torbjörn Granlund  <tg@gmplib.org>
1011
1012	* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Fix old pentium recog.
1013	* config.guess: Likewise.
1014
1015	* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Add many 64-bit CPUs.
1016
10172018-01-07  Torbjörn Granlund  <tg@gmplib.org>
1018
1019	* mpn/arm: Revert last change, it hides a symbol needed for testing.
1020
10212018-01-04  Torbjörn Granlund  <tg@gmplib.org>
1022
1023	* bdiv_q_1.asm (binvert_limb_table): Declare as ".hidden".
1024	* v7a/cora8/bdiv_q_1.asm: Likewise.
1025	* dive_1.asm: Likewise.
1026	* v6/dive_1.asm: Likewise.
1027
1028	* mode1o.asm (binvert_limb_table): Remove ".protected", add ".hidden".
1029	* v6/mode1o.asm: Likewise.
1030
10312018-01-02  Torbjörn Granlund  <tg@gmplib.org>
1032
1033	* mpn/powerpc64/mode64/divrem_2.asm: Use different rlwinm variant (to
1034	appease clang).
1035
10362018-01-01  Torbjörn Granlund  <tg@gmplib.org>
1037
1038	* mpn/powerpc32/powerpc-defs.m4: Define maddld, maddhdu, popcntd, and
1039	divdeu.
1040	* mpn/powerpc64/mode64/p8/invert_limb.asm: Use new insn defs.
1041	* mpn/powerpc64/mode64/p9/addmul_1.asm: Use new insn defs.
1042	* mpn/powerpc64/p7/hamdist.asm: Use new insn defs.
1043	* mpn/powerpc64/p7/popcount.asm: Use new insn defs.
1044
10452017-12-31  Torbjörn Granlund  <tg@gmplib.org>
1046
1047	* mpn/powerpc64/mode64/p9/addmul_1.asm: Moved from
1048	mpn/powerpc64/p9/addmul_1.asm.
1049
10502017-12-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
1051
1052	* mpz/bin_ui.c: Rewrite, using Fredrik Johansson's suggestions.
1053
10542017-12-27  Niels Möller  <nisse@lysator.liu.se>
1055
1056	* longlong.h (arm32/arm64): Leave COUNT_LEADING_ZEROS_0 undefined,
1057	since we use gcc's __builtin_clzl, which doesn't allow zero inputs.
1058
10592017-12-27  Torbjörn Granlund  <tg@gmplib.org>
1060
1061	* mpn/powerpc64/mode64/bdiv_q_1.asm: Use 64-bit cmp for sizes.
1062
1063	* mpn/powerpc64/p9/addmul_1.asm: New file.
1064
1065	* configure.ac: Separate handling of POWER8 and POWER9.
1066
1067	* config.guess: Recognise POWER9 and more variants of POWER8.
1068	Reorder recog code to favour PVR over proc/cpuinfo.
1069
10702017-12-14  Torbjörn Granlund  <tg@gmplib.org>
1071
1072	* mpn/x86_64/fastsse/com.asm: Adhere to DOS64 xmm callee-saves rules.
1073	* mpn/x86_64/fastsse/com-palignr.asm: Likewise.
1074	* mpn/x86_64/fastsse/copyd.asm: Likewise.
1075	* mpn/x86_64/fastsse/copyi.asm: Likewise.
1076	* mpn/x86_64/fastsse/lshiftc.asm: Likewise.
1077	* mpn/x86_64/fastsse/sec_tabselect.asm: Likewise.
1078
10792017-12-11  Torbjörn Granlund  <tg@gmplib.org>
1080
1081	* mpn/x86_64/bd1/aorrlsh_n.asm: New grabber file.
1082
10832017-12-10  Torbjörn Granlund  <tg@gmplib.org>
1084
1085	* mpn/x86_64/bd1/aors_n.asm: New grabber file.
1086
1087	* mpn/x86_64/bd4/aorrlsh_n.asm: New grabber file.
1088
10892017-08-31  Torbjörn Granlund  <tg@gmplib.org>
1090
1091	* mpn/sparc32/sparc-defs.m4 (LEA64): Rewrite for both PIC and non-PIC.
1092
1093	* mpn/sparc64/ultrasparct3/cnd_aors_n.asm: Allow arbitrary cnd arg.
1094
10952017-08-29  Torbjörn Granlund  <tg@gmplib.org>
1096
1097	* mpn/x86_64/silvermont/gmp-mparam.h: Disable mul_2 and addmul_2.
1098
10992017-08-28  Torbjörn Granlund  <tg@gmplib.org>
1100
1101	* mpn/sparc64: Revert 2017-07-23 PIC changes.
1102
1103	* mpn/powerpc32/divrem_2.asm: Avoid bc+ insn form to accommodate clang.
1104
1105	* mpn/generic/sbpi1_bdiv_qr.c: Correct ASSERT.
1106	* mpn/generic/sbpi1_bdiv_q.c: Likewise.
1107	* mpn/generic/sbpi1_bdiv_r.c: Likewise.
1108
11092017-08-18  Torbjörn Granlund  <tg@gmplib.org>
1110
1111	* acinclude.m4 (X86_64_PATTERN): Match zen*.
1112
1113	* configure.ac (x86): Support AVX challenged systems for Zen.
1114
11152017-07-24  Torbjörn Granlund  <tg@gmplib.org>
1116
1117	* mpn/generic/sbpi1_bdiv_q.c: Add ASSERT for inverse correctness.
1118	* mpn/generic/sbpi1_bdiv_qr.c: Likewise.
1119
1120	* tests/mpn/t-bdiv.c (main): Amend last change.
1121
1122	* tests/devel/try.c (choice_array): Amend 2013-05-03 change to include
1123	more functions.
1124
11252017-07-23  Torbjörn Granlund  <tg@gmplib.org>
1126
1127	* mpn/sparc64/gcd_1.asm: Enforce PIC as GNU/Linux toolchain workaround.
1128	* mpn/sparc64/ultrasparct3/bdiv_q_1.asm: Likewise.
1129	* mpn/sparc64/ultrasparct3/dive_1.asm: Likewise.
1130	* mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise.
1131	* mpn/sparc64/ultrasparct3/mode1o.asm: Likewise.
1132
1133	* gmp-impl.h: Reorganise foolshC_ip1 -> foolshC -> foolsh chain to make
1134	it transitive.
1135
11362017-07-23  Niels Möller  <nisse@lysator.liu.se>
1137
1138	* longlong.h: Purge definitions of obsolete UMUL_TIME and
1139	UDIV_TIME constants. Also mentioned (but unused) in
1140	mpn/cray/gmp-mparam.h and tune/common.c.
1141
11422017-07-21  Torbjörn Granlund  <tg@gmplib.org>
1143
1144	* tests/mpn/t-bdiv.c (main): Test mpn_sbpi1_bdiv_r.
1145
1146	* tune/common.c (speed_mpn_sbpi1_bdiv_r): New function.
1147	* tune/speed.h: Declare it.
1148	(SPEED_ROUTINE_MPN_PI1_BDIV_R): New macro.
1149	* tune/speed.c (routine): Add mpn_sbpi1_bdiv_r.
1150
11512017-07-20  Torbjörn Granlund  <tg@gmplib.org>
1152
1153	* configure.ac (gmp_mpn_functions): Add sbpi1_bdiv_r.
1154
1155	* gmp-impl.h (mpn_sbpi1_bdiv_r): Declare.
1156
1157	* mpn/asm-defs.m4 (define_mpn): Add sbpi1_bdiv_q, sbpi1_bdiv_qr,
1158	sbpi1_bdiv_r.
1159
1160	* mpn/generic/sbpi1_bdiv_r.c: New file.
1161	* mpn/x86_64/zen/sbpi1_bdiv_r.asm: New file.
1162
11632017-07-19  Torbjörn Granlund  <tg@gmplib.org>
1164
1165	* mpn/x86/p6/sse2/submul_1.asm: Get pentium4 code instead of k6 code
1166	for better speed on modern Intel P6 cores.
1167
11682017-07-02  Torbjörn Granlund  <tg@gmplib.org>
1169
1170	* tune/tuneup.c (tune_mullo): For MULLO_BASECASE_THRESHOLD start at 2.
1171	(tune_sqrlo): Likewise.
1172
11732017-06-28  Torbjörn Granlund  <tg@gmplib.org>
1174
1175	* tests/Makefile.am tests/*/Makefile.am tune/Makefile.am (AM_LDFLAGS):
1176	Define.  (Thanks to Emmanuel Thomé and Vincent Lefevre.)
1177
11782017-06-27  Torbjörn Granlund  <tg@gmplib.org>
1179
1180	* mpn/x86_64/zen/sqr_basecase.asm: Expand to use 4 addmul_1 loops.
1181
1182	* mpn/x86_64/x86_64-defs.m4 (sarx): New macro.
1183
11842017-06-26  Torbjörn Granlund  <tg@gmplib.org>
1185
1186	* mpn/x86_64/coreibwl/sqr_basecase.asm: Rewrite to do 2x and limb
1187	squaring in main loop.
1188
11892017-06-20  Torbjörn Granlund  <tg@gmplib.org>
1190
1191	* mpn/x86_64/atom/cnd_add_n.asm: New grabber file.
1192	* mpn/x86_64/atom/cnd_sub_n.asm: Likewise.
1193
1194	* mpn/x86_64/coreihwl/aorrlsh_n.asm: New grabber file.
1195
11962017-06-16  Torbjörn Granlund  <tg@gmplib.org>
1197
1198	* mpn/x86_64/zen/mul_basecase.asm: Do overlapped software pipelining.
1199
1200	* mpn/x86_64/silvermont/mul_basecase.asm: New grabber file.
1201	* mpn/x86_64/silvermont/sqr_basecase.asm: Likewise.
1202	* mpn/x86_64/silvermont/mullo_basecase.asm: Likewise.
1203
12042017-06-14  Torbjörn Granlund  <tg@gmplib.org>
1205
1206	* mpn/x86_64/zen/mullo_basecase.asm: New file.
1207	* mpn/x86_64/coreibwl/mullo_basecase.asm: New file.
1208
12092017-06-11  Torbjörn Granlund  <tg@gmplib.org>
1210
1211	* mpn/x86_64/popham.asm: Crossjump for code size and mix lead-in insns
1212	for lower overhead.
1213
12142017-06-09  Torbjörn Granlund  <tg@gmplib.org>
1215
1216	* configure.ac: Set GMP_NONSTD_ABI protecting against dots in the abi.
1217	(hppa): Remove old GNU/Linux restriction to 32-bit ABI.
1218
12192017-06-07  Torbjörn Granlund  <tg@gmplib.org>
1220
1221	* mpn/x86_64/bd1/addmul_2.asm: New file.
1222
12232017-06-06  Torbjörn Granlund  <tg@gmplib.org>
1224
1225	* mpn/x86_64/coreihwl/aors_n.asm: New file.
1226
1227	* mpn/x86_64/x86_64-defs.m4 (c4_helper): New macro.
1228	(mulx, shlx, shrx): Use c4_helper.
1229
1230	* mpn/x86_64/zen/mul_basecase.asm: Use 8-bit imm operands for "test".
1231
1232	* mpn/x86_64/zen/aorrlsh1_n.asm: New grabber file.
1233	* mpn/x86_64/zen/sublsh1_n.asm: Likewise.
1234	* mpn/x86_64/zen/aorrlsh_n.asm: New file
1235
12362017-06-04  Torbjörn Granlund  <tg@gmplib.org>
1237
1238	* configure.ac: Use bt1/bt2 for bobcat and jaguar dirs.
1239	(fat_path): Add x86_64/bt2.
1240
1241	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Adapt to bt1/bt2 changes.
1242	Make zen path correspond to non-fat path.
1243	* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Adapt to bt1/bt2 changes.
1244
1245	* mpn/x86_64/bt2/copyi.asm: New grabber file.
1246	* mpn/x86_64/bt2/copyd.asm: New grabber file.
1247	* mpn/x86_64/bt2/com.asm: New grabber file.
1248
12492017-06-03  Torbjörn Granlund  <tg@gmplib.org>
1250
1251	* mpn/x86_64/bd1/popcount.asm: Expand some instructions as .byte
1252	sequences.
1253	* mpn/x86_64/bd1/hamdist.asm: Likewise.
1254
12552017-06-02  Torbjörn Granlund  <tg@gmplib.org>
1256
1257	* mpn/x86_64/x86_64-defs.m4 (DEF_OBJECT): Fix quoting (amends recent
1258	change).
1259	(JUMPTABSECT): Get rid of spurious "w".
1260
12612017-06-02  Marc Glisse  <marc.glisse@inria.fr>
1262
1263	* gmpxx.h (mpf_class::operator bool): Use mpf_sgn to access _mp_size.
1264
12652017-06-02  Torbjörn Granlund  <tg@gmplib.org>
1266
1267	* mpn/x86_64/bd1/popcount.asm: Use both SSE and XOP trickery, and
1268	plain popcnt insn.
1269	* mpn/x86_64/bd1/hamdist.asm: Likewise.
1270
12712017-06-01  Torbjörn Granlund  <tg@gmplib.org>
1272
1273	* mpn/x86_64/x86_64-defs.m4 (DEF_OBJECT): Allow 3rd argument defining
1274	section, while making alignment argument non-optional.
1275
1276	* mpn/x86_64/core2/popcount.asm: Use 3-operand DEF_OBJECT.
1277	* mpn/x86_64/core2/hamdist.asm: Likewise.
1278	* mpn/x86_64/bd1/popcount.asm: Likewise.
1279	* mpn/x86_64/bd1/hamdist.asm: Likewise.
1280
1281	* configure.ac (GMP_AVX_NOT_REALLY_AVAILABLE): New m4 define.
1282	* mpn/x86_64/bd1/popcount.asm: Use GMP_AVX_NOT_REALLY_AVAILABLE.
1283	* mpn/x86_64/bd1/hamdist.asm: Likewise.
1284
1285	* mpn/x86_64/silvermont/popcount.asm: Reinstate, grabbing nehalem code.
1286	* mpn/x86_64/silvermont/hamdist.asm: Replace with grabber.
1287
12882017-05-31  Torbjörn Granlund  <tg@gmplib.org>
1289
1290	* mpn/x86_64/silvermont/popcount.asm: Remove.
1291
1292	* mpn/x86_64/core2/logops_n.asm: New file.
1293
12942017-05-30  Torbjörn Granlund  <tg@gmplib.org>
1295
1296	* mpn/x86_64/coreisbr/popcount.asm: Remove.
1297
12982017-05-29  Torbjörn Granlund  <tg@gmplib.org>
1299
1300	* mpn/x86_64/coreinhm/popcount.asm: Replace grabber code with
1301	implementation proper.
1302	* mpn/x86_64/coreinhm/hamdist.asm: Likewise.
1303	* mpn/x86_64/bd1/popcount.asm: Likewise.
1304	* mpn/x86_64/bd1/hamdist.asm: Likewise.
1305	* mpn/x86_64/core2/popcount.asm: Likewise.
1306	* mpn/x86_64/core2/hamdist.asm: New file.
1307
13082017-05-22  Torbjörn Granlund  <tg@gmplib.org>
1309
1310	* mpn/x86_64/core2/com.asm: New grabber file.
1311
1312	* mpn/x86_64/core2/lshift.asm: Rewrite.
1313	* mpn/x86_64/core2/rshift.asm: Rewrite.
1314	* mpn/x86_64/core2/lshiftc.asm: Rewrite.
1315
13162017-05-16  Torbjörn Granlund  <tg@gmplib.org>
1317
1318	* mpn/x86_64/zen/mul_1.asm: Port to DOS64.
1319	* mpn/x86_64/zen/aorsmul_1.asm: Likewise.
1320	* mpn/x86_64/coreibwl/addmul_1.asm: Likewise.
1321
13222017-05-16  Niels Möller  <nisse@lysator.liu.se>
1323
1324	* mpn/generic/divis.c (mpn_divisible_p): Updated the divisibility
1325	test; bdiv now returns R = D rather than R = 0 when D divides a
1326	non-zero U.
1327
1328	* mpn/generic/binvert.c (mpn_binvert): Negate bdiv quotient.
1329	* mpn/generic/divexact.c (mpn_divexact): Likewise.
1330	* mpn/generic/remove.c (mpn_remove): Likewise.
1331	* mpz/bin_uiui.c (mpz_bdiv_bin_uiui): Likewise.
1332
1333	* tests/mpn/t-bdiv.c (check_one): Updated to new convention,
1334	B^{qn} R = U + QD.
1335
1336	* mpn/generic/sbpi1_bdiv_qr.c (mpn_sbpi1_bdiv_qr): Reimplemented,
1337	for new bdiv convention.
1338	* mpn/generic/sbpi1_bdiv_q.c (mpn_sbpi1_bdiv_q): Likewise.
1339	* mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q_n)
1340	(mpn_dcpi1_bdiv_q): Adapted to new bdiv convention.
1341	* mpn/generic/dcpi1_bdiv_qr.c (mpn_dcpi1_bdiv_qr_n)
1342	(mpn_dcpi1_bdiv_qr): Likewise.
1343	* mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr): Adapted to new bdiv
1344	convention, using a wrapper calling the old function.
1345	* mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q): Likewise.
1346
13472017-05-03  Torbjörn Granlund  <tg@gmplib.org>
1348
1349	* mpn/x86_64/coreisbr/cnd_aors_n.asm: New file.
1350	* mpn/x86_64/coreisbr/cnd_add_n.asm: New file.
1351
1352	* mpn/x86_64/core2/aorsmul_1.asm: Tune.
1353
1354	* mpn/x86_64/silvermont/mul_1.asm: New file, grabbing another asm file.
1355	* mpn/x86_64/silvermont/aorsmul_1.asm: Likewise.
1356	* mpn/x86_64/silvermont/aorrlsh1_n.asm: Likewise.
1357	* mpn/x86_64/silvermont/aorrlsh2_n.asm: Likewise.
1358	* mpn/x86_64/silvermont/lshift.asm: Likewise.
1359	* mpn/x86_64/silvermont/rshift.asm: Likewise.
1360	* mpn/x86_64/silvermont/lshiftc.asm: Likewise.
1361
1362	* mpn/x86_64/zen/mul_basecase.asm: Split outer loop into 4 loops.
1363
13642017-05-02  Torbjörn Granlund  <tg@gmplib.org>
1365
1366	* mpn/x86_64/zen/sqr_basecase.asm: Use .byte for encoding all mulx.
1367	Misc tuning.
1368
13692017-04-27  Torbjörn Granlund  <tg@gmplib.org>
1370
1371	* mpn/x86_64/zen/sqr_basecase.asm: Rewrite to do 2x and limb squaring
1372	in main loop.
1373
13742017-04-25  Torbjörn Granlund  <tg@gmplib.org>
1375
1376	* mpn/x86_64/fat/fat_entry.asm: Allocate correct DOS64 frame.
1377	* mpn/x86_64/divrem_2.asm: Likewise.
1378	* mpn/x86_64/mod_1_2.asm: Likewise.
1379	* mpn/x86_64/mod_1_4.asm: Likewise.
1380	* mpn/x86_64/mod_1_1.asm: Likewise.
1381
13822017-04-23  Torbjörn Granlund  <tg@gmplib.org>
1383
1384	* mpn/x86_64/coreisbr/mul_1.asm: Rewrite feed-in code and add mul_1c
1385	entry point.
1386
13872017-04-17  Torbjörn Granlund  <tg@gmplib.org>
1388
1389	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Amend last change.
1390
1391	* mpn/x86_64/zen/mul_basecase.asm: New file.
1392	* mpn/x86_64/zen/sqr_basecase.asm: New file.
1393
13942017-04-16  Torbjörn Granlund  <tg@gmplib.org>
1395
1396	* mpn/generic/sqr_basecase.c (addmul_1 variant): Rewrite to compute
1397	in-place and to avoid a re-computation.
1398
1399	* configure.ac: Remove k8, k10 from zen path.
1400
14012017-04-15  Torbjörn Granlund  <tg@gmplib.org>
1402
1403	* mpn/x86_64/zen/gmp-mparam.h: New file.
1404
1405	* mpn/x86_64/zen/com.asm: New file, grabbing another asm file.
1406	* mpn/x86_64/zen/copyd.asm: Likewise.
1407	* mpn/x86_64/zen/copyi.asm: Likewise.
1408	* mpn/x86_64/zen/gcd_1.asm: Likewise.
1409	* mpn/x86_64/zen/hamdist.asm: Likewise.
1410	* mpn/x86_64/zen/lshift.asm: Likewise.
1411	* mpn/x86_64/zen/lshiftc.asm: Likewise.
1412	* mpn/x86_64/zen/popcount.asm: Likewise.
1413	* mpn/x86_64/zen/rshift.asm: Likewise.
1414
1415	* config.guess: Recognise AMD zen.
1416	* acinclude.m4 (X86_64_PATTERN): Add zen.
1417	* config.sub: Corresponding changes.
1418	* configure.ac: Corresponding changes.
1419	* mpn/x86_64/fat/fat.c: Corresponding changes.
1420
14212017-03-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
1422
1423	* mpz/oddfac_1.c (limb_apprsqrt): Better approximation.
1424	* mpz/bin_uiui.c (limb_apprsqrt): Likewise.
1425
14262017-03-12  Torbjörn Granlund  <tg@gmplib.org>
1427
1428	* tests/mpf/t-get_d_2exp.c (check_data): Rewrite of check_onebit.
1429
14302017-03-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
1431
1432	* mpn/generic/sqrtrem.c: Direct use of sqrtrem2 when n==2.
1433	* mpn/generic/div_qr_2.c (udiv_qr_4by2): Replace add_csaac with add_sssaaaa.
1434
14352017-03-07  Torbjörn Granlund  <tg@gmplib.org>
1436
1437	* mpf/get_d_2exp.c: Return negative value for negative input.
1438
14392017-03-06  Torbjörn Granlund  <tg@gmplib.org>
1440
1441	* longlong.h (aarch64): Provide asm-free umul_ppmm.
1442	* longlong.h (powerpc64): Enable asm-free umul_ppmm.
1443
14442017-03-04  Torbjörn Granlund  <tg@gmplib.org>
1445
1446	* mpn/arm64/sqr_diag_addlsh1.asm: Complete rewrite.
1447
14482017-02-27  Torbjörn Granlund  <tg@gmplib.org>
1449
1450	* longlong.h (arm32/arm64): Remove useless comparison to 0 introduced
1451	in last change (spotted by Marco).
1452
14532017-02-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
1454
1455	* mpn/generic/pow_1.c: Use umul_ppmm for a single limb.
1456
14572017-02-25  Torbjörn Granlund  <tg@gmplib.org>
1458
1459	* configure.ac: Allow MP_SIZE_T_MAX for thresholds exported to
1460	config.m4.
1461
1462	* mpn/x86_64/gcd_1.asm: Handle BMOD_1_TO_MOD_1_THRESHOLD=MP_SIZE_T_MAX.
1463	Streamline non-reduction path.
1464	* mpn/x86_64/core2/gcd_1.asm: Streamline small operands cases similarly
1465	to top-level code.
1466
14672017-02-24  Torbjörn Granlund  <tg@gmplib.org>
1468
1469	* longlong.h (arm32/arm64 add_ssaaaa): Use "subs" for some immediates.
1470	* longlong.h (arm32/arm64 sub_ddmmss): Use "adds" for some immediates.
1471
1472	* mpn/arm64/copyi.asm: Avoid branching on flags.
1473	* mpn/arm64/copyd.asm: Likewise.
1474
1475	* mpn/generic/div_qr_2.c (aarch64 add_sssaaaa): New.
1476	* mpn/generic/div_qr_1n_pi2.c: Same.
1477	* mpn/generic/div_qr_1u_pi2.c: Same.
1478
1479	* mpn/generic/div_qr_2.c (powerpc add_sssaaaa): Fix typo.
1480	* mpn/generic/div_qr_1n_pi2.c: Same.
1481	* mpn/generic/div_qr_1u_pi2.c: Same.
1482
14832017-02-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
1484
1485	* tests/devel/sqrtrem_1_2.c: New exhaustive test for sqrtrem_[12].
1486	* tests/devel/Makefile.am (EXTRA_PROGRAMS): add it.
1487
14882017-02-23  Torbjörn Granlund  <tg@gmplib.org>
1489
1490	* mpn/x86_64/silvermont/gmp-mparam.h: New file.
1491
14922017-02-22  Torbjörn Granlund  <tg@gmplib.org>
1493
1494	* mpn/arm64/aorsmul_1.asm: Rewrite.
1495
1496	* mpn/arm64/lshiftc.asm: New file.
1497
14982017-02-21  Torbjörn Granlund  <tg@gmplib.org>
1499
1500	* mpn/arm64/lshift.asm: Rewrite.
1501	* mpn/arm64/rshift.asm: Rewrite.
1502
1503	* mpn/arm64/rsh1aors_n.asm: New file.
1504
15052017-02-19  Torbjörn Granlund  <tg@gmplib.org>
1506
1507	* mpn/arm64/mul_1.asm: Rewrite.
1508	* mpn/arm64/xgene1/mul_1.asm: Remove.
1509
15102017-02-17  Torbjörn Granlund  <tg@gmplib.org>
1511
1512	* mpn/arm64/cora53/cnd_aors_n.asm: Moved from "..".
1513
1514	* mpn/arm64/xgene1/cnd_aors_n.asm: Remove file since default code
1515	performs better.
1516
1517	* mpn/arm64/cnd_aors_n.asm: Rewrite.
1518
1519	* mpn/arm64/logops_n.asm: Rewrite based on new aors_n.asm.
1520
15212017-02-16  Pedro Gimeno  <pggimeno@wanadoo.es>
1522
1523	* rand/randmt.c (__gmp_randiset_mt): Set generator functions from
1524	source.
1525
15262017-02-16  Torbjörn Granlund  <tg@gmplib.org>
1527
1528	* mpn/arm64/aorsorrlshC_n.asm: New file.
1529	* mpn/arm64/aorsorrlsh2_n.asm: New file.
1530	* mpn/arm64/aorsorrlsh1_n.asm: New file.
1531
1532	* mpn/arm64/xgene1/aors_n.asm: Remove file since default code now
1533	performs similarly.
1534
1535	* mpn/arm64/aors_n.asm: Rewrite to use 4x unrolling.
1536
15372017-02-15  Torbjörn Granlund  <tg@gmplib.org>
1538
1539	* mpn/x86_64/silvermont/hamdist.asm: New file, based on k10 code.
1540
1541	* mpn/x86_64/silvermont/popcount.asm: Grab coreisbr/popcount.asm.
1542
15432017-02-14  Torbjörn Granlund  <tg@gmplib.org>
1544
1545	* mpn/x86_64/silvermont/aors_n.asm: New file, grabbing coreisbr code.
1546
1547	* mpn/x86_64/atom/aors_n.asm: Replace coreisbr grabbing code with
1548	code based on Marco's x64/atom/aors_n.asm.
1549
15502017-02-12  Torbjörn Granlund  <tg@gmplib.org>
1551
1552	* mpn/powerpc64/aix.m4 (AIX): New define.
1553
1554	* mpn/powerpc64/mode64/bdiv_q_1.asm: For AIX, don't jump from
1555	mpn_bdiv_q_1 to middle of mpn_pi1_bdiv_q_1.  Streamline.
1556
1557	* mpn/powerpc64/darwin.m4 (LEA): Put code in lea_list instead of in
1558	EPILOGUE_cpu.
1559	(EPILOGUE_cpu): Output lea_list, the zap it.
1560
1561	* mpn/sparc64/ultrasparct3/bdiv_q_1.asm: New file, based on dive_1.asm.
1562
15632017-02-11  Torbjörn Granlund  <tg@gmplib.org>
1564
1565	* mpn/arm/v7a/cora8/bdiv_q_1.asm: New file, based on v6/dive_1.asm.
1566	* mpn/arm/v7a/cora9/bdiv_q_1.asm: New file, grabbing cora8 code.
1567	* mpn/arm/v7a/cora15/bdiv_q_1.asm: Likewise.
1568
1569	* mpn/arm64/aors_n.asm: (SETCY, RETVAL): Shorten insn sequences.
1570	* mpn/arm64/cnd_aors_n.asm: Likewise.
1571	* mpn/arm64/xgene1/aors_n.asm: Likewise.
1572	* mpn/arm64/xgene1/cnd_aors_n.asm: Likewise.
1573
1574	* mpn/arm/bdiv_q_1.asm: New file, based on dive_1.asm.
1575
1576	* mpn/generic/bdiv_q_1.c (mpn_bdiv_q_1): Remove odd d special case.
1577
1578	* mpn/powerpc64/mode64/bdiv_q_1.asm: New file.
1579
1580	* mpn/arm64/bdiv_q_1.asm: New file.
1581
15822017-02-10  Torbjörn Granlund  <tg@gmplib.org>
1583
1584	* mpn/arm/arm-defs.m4 (EPILOGUE_cpu): Zap lea_list to avoid repetition.
1585
1586	* mpn/x86_64/bdiv_q_1.asm: Rewrite, base on atom/dive_1.asm.
1587
15882017-02-08  Torbjörn Granlund  <tg@gmplib.org>
1589
1590	* mpn/generic/compute_powtab.c: Choose mpn_pi1_bdiv_q_1 vs
1591	mpn_divexact_1 more wisely (spotted by Marco).
1592
15932017-02-07  Torbjörn Granlund  <tg@gmplib.org>
1594
1595	* tune/tuneup.c (relspeed_div_1_vs_mul_1): Prefer mpn_pi1_bdiv_q_1.
1596
1597	* mpn/generic/compute_powtab.c: Use mpn_pi1_bdiv_q_1/mpn_bdiv_q_1
1598	instead of mpn_divexact_1.
1599
1600	* gen-bases.c (binvert): New function, computing modular inverse and
1601	low zero count.
1602	(header): Print MP_BASES_BIG_BASE_CTZ_10 and
1603	MP_BASES_BIG_BASE_BINVERTED_10.
1604
16052017-02-06  Torbjörn Granlund  <tg@gmplib.org>
1606
1607	* mpn/generic/bdiv_q_1.c: Make return value consistent.
1608
1609	* mpn/x86/p6/mmx/gmp-mparam.h (SQR_TOOM2_THRESHOLD): Revert to bogus
1610	value to accommodate p6/sqr_basecase.asm fragility.
1611
16122017-01-29 Marco Bodrato <bodrato@mail.dm.unipi.it>
1613
1614	* mpz/and.c: Simplify branches.
1615	* mpz/ior.c: Likewise.
1616	* mpz/xor.c: Likewise.
1617
1618	* gen-bases.c: In generated file, include just gmp-impl.h, not gmp.h
1619
16202017-01-29  Torbjörn Granlund  <tg@gmplib.org>
1621
1622	* configure.ac: Don't check if we got a C99 compiler for now (partially
1623	revert 2017-01-24 change as C++ compilers become rejected).
1624
16252017-01-24  Torbjörn Granlund  <tg@gmplib.org>
1626
1627	* mpn/generic/compute_powtab.c: New file, providing mpn_compute_powtab
1628	for both get_str and set_str.
1629
1630	* gmp-impl.h (mpn_str_powtab_alloc): New macro.
1631	(mpn_dc_set_str_powtab_alloc, mpn_dc_get_str_powtab_alloc): Remove.
1632	(mpn_compute_powtab): Declare.
1633
1634	* mpn/generic/set_str.c: Use mpn_compute_powtab.
1635	(mpn_set_str_compute_powtab): Remove.
1636
1637	* mpn/generic/get_str.c: Use mpn_compute_powtab.
1638	(mpn_get_str_compute_powtab): Remove.
1639	(mpn_bc_get_str): New name for mpn_sb_get_str.
1640
1641	* configure.ac (gmp_mpn_functions): Add compute_powtab.
1642
1643	* tune/tuneup.c (speed_mpn_pre_set_str): Call mpn_compute_powtab.
1644	* tune/set_strb.c: Remove mpn_set_str_compute_powtab name mangling.
1645	* tune/set_strs.c: Likewise.
1646
1647	* configure.ac: Invoke AC_PROG_CC_C99 instead of AC_PROG_CC_STDC.
1648
16492017-01-03  Torbjörn Granlund  <tg@gmplib.org>
1650
1651	* configure.ac (arm*-*-*): Properly point to cortex-a5 subdir.
1652
16532016-12-31  Torbjörn Granlund  <tg@gmplib.org>
1654
1655	* tune/tuneup.c (relspeed_div_1_vs_mul_1): New function.
1656
16572016-12-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
1658
1659	* tune/common.c (speed_mpz_mfac_uiui, speed_mpz_invert): New
1660	functions.
1661	* tune/speed.h: Declare them.
1662	* tune/speed.c (routine): Add mpz_mfac_uiui, mpz_invert.
1663
1664	* tests/mpz/t-primorial_ui.c: Add randomization to the test.
1665	* mpz/tdiv_r.c: Reduce allocation in some corner-case conditions.
1666	* mpz/tdiv_r_2exp.c: Rearrange counting non-zero limbs.
1667	* mpz/tdiv_q.c: Move common code out of some branches.
1668	* mpz/and.c: Alloc only when needed.
1669	* mpz/xor.c: Reorder branches.
1670	* mpz/gcd.c: Reorder branches.
1671	* mpz/pprime_p.c: Save the initial branch of a loop.
1672	* mpn/generic/divrem.c: Save an allocation.
1673
16742016-12-26  Torbjörn Granlund  <tg@gmplib.org>
1675
1676	* longlong.h (x86_64 umul_ppmm): Add mulx variant (not automatically
1677	used).
1678
16792016-12-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
1680
1681	* mpz/gcdext.c: Save an allocation if both cofactors are needed.
1682	* mpz/oddfac_1.c: Revision of all ASSERTs.
1683	* tests/mpz/t-invert.c: All elements are invertible in the zero ring.
1684
16852016-12-13  Torbjörn Granlund  <tg@gmplib.org>
1686
1687	* longlong.h: Test LONGLONG_STANDALONE in two more places.
1688
16892016-12-07  Torbjörn Granlund  <tg@gmplib.org>
1690
1691	* gmp-h.in: Check yet another symbol for FILE.
1692
16932016-12-04  Torbjörn Granlund  <tg@gmplib.org>
1694
1695	* tests/mpz/reuse.c: Use mpz_clobber.  Split mpz_gcdext macros to avoid
1696	spurious res3 dependency.
1697
1698	* tests/misc.c (mpz_clobber): New function.
1699
17002016-12-03  Niels Möller  <nisse@lysator.liu.se>
1701
1702	* doc/gmp.texi (Number Theoretic Functions): Tweak mpz_gcdext
1703	documentation. The first and third argument may be NULL, but not
1704	the second.
1705
17062016-12-02  Niels Möller  <nisse@lysator.liu.se>
1707
1708	* tests/mpz/reuse.c (main): Test additional cases of reuse for
1709	mpz_gcd and mpz_gcdext.
1710
17112016-12-01  Torbjörn Granlund  <tg@gmplib.org>
1712
1713	* tests/misc.c (seed_from_tod): Make shift well-defined.
1714
17152016-11-29  Torbjörn Granlund  <tg@gmplib.org>
1716
1717	* gmp-h.in (__GNU_MP__): Bump.
1718
1719	* mpz/inp_raw.c: Rewrite size computation to avoid overflow.
1720
1721	* mpz/kronsz.c: Use ABS_CAST to avoid undefined code.
1722
17232016-11-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
1724
1725	* mpz/gcd.c, mpz/gcdext.c: Use NEWALLOC.
1726	* mpz/oddfac_1.c: Disable an ASSERT that needs a revision.
1727
17282016-11-27  Torbjörn Granlund  <tg@gmplib.org>
1729
1730	* tests/mpz/reuse.c: Rewrite operand randomisation to use fixed ranges.
1731
1732	* tune/time.c (cgt_works_p): Add a missing verbosity check.
1733
1734	* configure.ac: Make udiv_w_sdiv use conditional on enable_assembly.
1735
17362016-11-25  Marc Glisse  <marc.glisse@inria.fr>
1737
1738	* mpz/gcdext.c (mpz_gcdext): Allow a first argument of NULL.
1739	* doc/gmp.texi (Number Theoretic Functions): Document it.
1740	* tests/mpz/t-gcd.c (main): Test it.
1741
17422016-11-25  Marc Glisse  <marc.glisse@inria.fr>
1743
1744	* tests/cxx/t-ops2z.cc (checkz): Avoid left shift of negative number.
1745
17462016-11-22  Torbjörn Granlund  <tg@gmplib.org>
1747
1748	* configure.ac (x86): Define LINUX for GNU/Linux systems.
1749	* mpn/x86_64/fat/fat_entry.asm: Set PRETEND_PIC for GNU/Linux.
1750
17512016-11-21  Torbjörn Granlund  <tg@gmplib.org>
1752
1753	* configure.ac (powerpc): Never use -O3.
1754
1755	* acinclude.m4 (mpn_lshift_com optimization 2): Make it well-defined
1756	also for 32-bit systems.
1757	(mpn_lshift_com optimization 2): Free allocated memory.
1758
17592016-11-19  Niels Möller  <nisse@lysator.liu.se>
1760
1761	* Makefile.am (check-mini-gmp): Override CFLAGS and CPPFLAGS
1762	instead of the deleted EXTRA_CFLAGS. Set TEST_LIBRARY_PATH,
1763	instead of LD_LIBRARY_PATH and DYLD_LIBRARY_PATH, to avoid getting
1764	gcc linked with an unexpected version of gmp.
1765
17662016-11-18  Niels Möller  <nisse@lysator.liu.se>
1767
1768	* Makefile.am (check-mini-gmp): Get CC and EXTRA_CFLAGS right.
1769
17702016-11-17  Torbjörn Granlund  <tg@gmplib.org>
1771
1772	* asl.h: Initial support for artificially small limbs.
1773
17742016-11-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
1775
1776	* pz/iset_str.c: Lazy allocation.
1777
17782016-11-01  Torbjörn Granlund  <tg@gmplib.org>
1779
1780	* mpn/generic/dive_1.c: Remove a forgotten dummy while-loop.  (Spotted
1781	by Peter Barfuss.)
1782
17832016-10-31   Oleg Oshmyan  <chortos@inbox.lv>
1784
1785	* gmp-impl.h (x86_64 MPN_IORD_U): Use proper asm constraint.
1786
17872016-10-30  Torbjörn Granlund  <tg@gmplib.org>
1788
1789	* mpn/Makefile.am (TARG_DIST): Add riscv.
1790
17912016-10-28  Marc Glisse  <marc.glisse@inria.fr>
1792
1793	* gmpxx.h (__gmp_binary_divides): Let 1/q call mpq_inv.
1794	* tests/cxx/t-ops.cc (check_mpq): Test it.
1795
17962016-10-24  Torbjörn Granlund  <tg@gmplib.org>
1797
1798	* config.guess: Recognise Itanium Poulson.
1799
18002016-10-15  Torbjörn Granlund  <tg@gmplib.org>
1801
1802	* configure.ac (arm*-*-*): Amend last change.
1803
18042016-10-14  Torbjörn Granlund  <tg@gmplib.org>
1805
1806	* longlong.h (riscv umul_ppmm): New.
1807
1808	* mpn/riscv/64/aors_n.asm: New file.
1809	* mpn/riscv/64/mul_1.asm: New file.
1810	* mpn/riscv/64/aorsmul_1.asm: New file.
1811
1812	* mpn/generic/addmul_1.c: Rewrite for shallower recurrency.
1813	* mpn/generic/submul_1.c: Likewise.
1814
1815	* configure.ac (riscv-*-*): New.
1816	(arm*-*-*): Rewrite arm support to handle armv8 CPUs in 32-bit mode.
1817
18182016-08-29  Torbjörn Granlund  <tg@gmplib.org>
1819
1820	* All C files: Include just gmp-impl.h, make gmp-impl.h grab gmp.h.
1821
1822	* mpf/get_str.c: Use __GMP_ALLOCATE_FUNC_TYPE and friends.
1823	* mpf/inp_str.c: Likewise.
1824	* mpq/get_str.c: Likewise.
1825	* mpz/get_str.c: Likewise.
1826	* mpz/inp_str.c: Likewise.
1827	* scanf/vsscanf.c: Likewise.
1828	* tal-reent.c: Likewise.
1829
18302016-08-24  Vlad Zakharov <vzakhar@synopsys.com>
1831
1832	* longlong.h (arc add_ssaaaa, sub_ddmmss): Replace obsolete 'J'
1833	constraint with 'Cal'.
1834
18352016-08-22  Marc Glisse  <marc.glisse@inria.fr>
1836
1837	* longlong.h (umul_ppmm from __umulsidi3): Protect with do ...
1838	while (0).
1839
18402016-06-02  Torbjörn Granlund  <tg@gmplib.org>
1841	    Vincent Lefevre <vincent@vinc17.net>
1842
1843	* doc/gmp.texi: Various clarifications about variable conventions.
1844
18452016-04-07  Marc Glisse  <marc.glisse@inria.fr>
1846
1847	* gmp-h.in (__GMP_NOTHROW): Prefer noexcept to throw().
1848	(mpz_init, mpz_inits): Mark as __GMP_NOTHROW.
1849	* mpz/init.c, mpz/inits.c: Likewise.
1850	* gmpxx.h (mpz_class): Mark default and move constructors noexcept.
1851	* tests/cxx/t-cxx11.cc: Check noexcept.
1852
18532016-04-02  Torbjörn Granlund  <torbjorng@google.com>
1854
1855	* mpf/set_q.c: Rewrite, mainly to use mpn_div_q.
1856
18572016-03-29  Torbjörn Granlund  <torbjorng@google.com>
1858
1859	* mpn/x86_64/fat/addmul_2.c: New file.
1860
18612016-03-28  Torbjörn Granlund  <torbjorng@google.com>
1862
1863	* mpn/x86_64/addmul_2.asm: Move from here...
1864	* mpn/x86_64/k8/addmul_2.asm: ...to here.
1865
18662016-03-26  Torbjörn Granlund  <torbjorng@google.com>
1867
1868	* mpn/arm64/sqr_diag_addlsh1.asm: New file.
1869
18702016-03-25  Torbjörn Granlund  <torbjorng@google.com>
1871
1872	* mpn/arm64/xgene1/aors_n.asm: New file.
1873	* mpn/arm64/xgene1/aorsmul_1.asm: New file.
1874	* mpn/arm64/xgene1/cnd_aors_n.asm: New file.
1875	* mpn/arm64/xgene1/gmp-mparam.h: New file.
1876	* mpn/arm64/xgene1/mul_1.asm: New file.
1877
1878	* config.guess: Prefix all arm CPUs with "arm" to accommodate our
1879	matchers.
1880	* configure.ac (arm): Match arm CPUs consistently.
1881
18822016-03-21  Torbjörn Granlund  <torbjorng@google.com>
1883
1884	* configure.ac: Support many arm64 processors.
1885
18862016-03-20  Marc Glisse  <marc.glisse@inria.fr>
1887
1888	* configure.ac (WANT_ASSEMBLY): Remove.
1889	(NO_ASM): Remove from CFLAGS, add to AC_DEFINE.
1890	* tests/misc.c: Test NO_ASM instead of WANT_ASSEMBLY.
1891
18922016-03-20  Torbjörn Granlund  <torbjorng@google.com>
1893
1894	* config.guess (arm*): Handle big.LITTLE CPUs by extracting the
1895	lexically largest id.
1896	* config.guess (arm*): Add many aarch64 CPUs.
1897	* config.guess (main): Corresponding changes.
1898
1899	* mpn/arm/v7a/cora5/gmp-mparam.h: New file.
1900
1901	* configure.ac (arm*): Support cortex-a5 better.
1902
19032016-02-25  Pavel Kopyl  <p.kopyl@samsung.com>
1904
1905	* acinclude.m4 (GMP_ASM_UNDERSCORE): Tighten gurkmacka detection.
1906
19072016-01-27  Niels Möller  <nisse@lysator.liu.se>
1908
1909	* errno.c (__gmp_exception): Use raise(SIGFPE) when available.
1910
19112016-01-15  Torbjörn Granlund  <torbjorng@google.com>
1912
1913	* config.guess (s390): Don't assume /proc/cpuinfo exists.
1914
19152016-01-13  Torbjörn Granlund  <torbjorng@google.com>
1916
1917	* config.guess: Reorder and generalise ppc code.
1918
19192016-01-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
1920
1921	* tests/cxx/clocale.c: Do not re-define localeconv for mingw.
1922	* tests/misc/t-locale.c: Likewise (Thanks Alexander).
1923
1924	* primesieve.c: Heal a speed regression on small values.
1925	* mpz/bin_uiui.c (mpz_bdiv_bin_uiui): 2 factors all at once.
1926	  (mpz_goetgheluck_bin_uiui): Use STOP/CONT for loops on primesieve.
1927	* mpz/oddfac_1.c: Likewise.
1928	* mpz/primorial_ui.c (LOOP_ON_SIEVE_CONTINUE): Define prime locally.
1929
1930	* gen-fac.c: Use unsigned types for sizes.
1931
1932	* mpn/generic/invert.c: Use MPN_FILL macro.
1933	* mpn/generic/invertappr.c: Likewise.
1934	* mpn/generic/toom53_mul.c: Use _ip1 when available.
1935
19362015-12-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
1937
1938	* mpq/set_str.c: Use __GMP_FREE_FUNC_TYPE.
1939	* tests/mpz/t-nextprime.c: Speedup using swap, and correct type.
1940
19412015-12-26  Torbjörn Granlund  <torbjorng@google.com>
1942
1943	* tests/misc.c (tests_start): Assert library version.
1944
19452015-12-19  Marc Glisse  <marc.glisse@inria.fr>
1946
1947	* gmp-impl.h (fft_table_nk): Use gmp_uint_least32_t.
1948	* mpn/generic/trialdiv.c (gmp_primes_ptab): Likewise.
1949
19502015-12-14  Torbjörn Granlund  <torbjorng@google.com>
1951
1952	* mpn/x86_64/fat/fat.c (gmp_workaround_skylake_cpuid_bug):
1953	New function.
1954	(__gmpn_cpuvec_init): Handle more BMI2 crippled CPUs.
1955
19562015-12-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
1957
1958	* mpf/clears.c, mpf/inits.c, mpq/clears.c, mpq/inits.c,
1959	* mpz/clears.c, mpz/inits.c: Stop supporting empty list.
1960	* tests/arm32call.asm: bx->ret to support thumb-less chips
1961	  (thanks Martin Husemann).
1962
19632015-12-13  Torbjörn Granlund  <torbjorng@google.com>
1964
1965	* config.sub: Fix spelling of kabylake.
1966	* acinclude.m4: Likewise.
1967	* mpn/x86_64/fat/fat.c: Likewise.
1968
19692015-12-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
1970
1971	* tests/misc/t-printf.c: Test a sequence of '%'.
1972	* printf/doprnt.c: Avoid buffer overread with long long limbs.
1973
1974	* mpn/generic/toom_interpolate_7.c: Use the rsh1 functions,
1975	  when available, also for negatives (clearing the carry).
1976	* mpn/generic/toom_interpolate_12.c: Likewise.
1977	* mpn/generic/toom_interpolate_16.c: Likewise.
1978
19792015-12-06  Torbjörn Granlund  <torbjorng@google.com>
1980
1981	* configure.ac (arm*): Conditionally define NOTHUMB.
1982	Simplify and generalise.
1983	* mpn/arm/arm-defs.m4 (ret): New macro, conditional on NOTHUMB.
1984	* mpn/arm/*.asm: Use ret.
1985
19862015-12-03  Torbjörn Granlund  <torbjorng@google.com>
1987
1988	* config.guess: Work around skylake cpuid bug.
1989	Fix spelling of kabylake.
1990
19912015-12-01  Torbjörn Granlund  <torbjorng@google.com>
1992
1993	* mpn/x86_64/coreibwl/mul_basecase.asm: Add FUNC_EXITs.
1994
19952015-11-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
1996
1997	* gmp-impl.h (MPN_TOOM22_MUL_MINSIZE): Consider ToomX2 limits
1998	  (thanks Paul).
1999	* tests/mpn/t-toom22.c: Keep on testing small sizes.
2000	* tests/mpz/t-primorial_ui.c: Test a single "large" number.
2001
2002	* tune/common.c (speed_mpz_primorial_ui): New function.
2003	* tune/speed.h: Declare it.
2004	* tune/speed.c (routine): Add mpz_primorial_ui.
2005
2006	* primesieve.c: Use two presieved patterns on 64-bits CPUs.
2007
20082015-11-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
2009
2010	* mpq/init.c: Remove conditional code for __CHECKER__.
2011	* mpq/set.c: Shorten scope of local variables.
2012	* mpq/set_den.c: Likewise.
2013	* mpq/set_num.c: Likewise.
2014	* mpq/set_z.c: Likewise.
2015
2016	* primesieve.c: Fill sieve with a presieved 70bits pattern.
2017
20182015-11-12  Marc Glisse  <marc.glisse@inria.fr>
2019
2020	* gmpxx.h (__gmp_fibonacci_function): New class.
2021	(fibonacci, mpz_class::fibonacci): New functions.
2022	(__gmp_fac_function, __gmp_primorial_function): Add braces.
2023	* tests/cxx/t-ops2z.cc: Test fibonacci.
2024	* doc/gmp.texi (C++ Interface Integers): Document fibonacci.
2025	Warn about factorial and primorial of negative numbers.
2026
20272015-11-10  Marc Glisse  <marc.glisse@inria.fr>
2028
2029	* gmpxx.h (__gmp_primorial_function): Throw on negative operands.
2030	* tests/cxx/t-ops2z.cc: Test it.
2031
20322015-11-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
2033
2034	* mpz: Experimental, lazy allocation.
2035
20362015-11-09  Marc Glisse  <marc.glisse@inria.fr>
2037
2038	* tests/cxx/Makefile.am: Move EXTRA_DIST out of WANT_CXX.
2039
20402015-11-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
2041
2042	* mpz/urandomm.c: Use mpn_zero_p to shorten code.
2043
20442015-11-08  Marc Glisse  <marc.glisse@inria.fr>
2045
2046	* gmpxx.h (__gmp_fac_function, __gmp_primorial_function): New classes.
2047	(__GMPP_DECLARE_UNARY_STATIC_MEMFUN,
2048	__GMPNN_DECLARE_UNARY_STATIC_MEMFUN,
2049	__GMPNS_DECLARE_UNARY_STATIC_MEMFUN,
2050	__GMPNU_DECLARE_UNARY_STATIC_MEMFUN,
2051	__GMPND_DECLARE_UNARY_STATIC_MEMFUN,
2052	__GMPN_DECLARE_UNARY_STATIC_MEMFUN,
2053	__GMP_DECLARE_UNARY_STATIC_MEMFUN, __GMPP_DEFINE_UNARY_STATIC_MEMFUN,
2054	__GMPNN_DEFINE_UNARY_STATIC_MEMFUN,
2055	__GMPNS_DEFINE_UNARY_STATIC_MEMFUN,
2056	__GMPNU_DEFINE_UNARY_STATIC_MEMFUN,
2057	__GMPND_DEFINE_UNARY_STATIC_MEMFUN, __GMPN_DEFINE_UNARY_STATIC_MEMFUN,
2058	__GMP_DEFINE_UNARY_STATIC_MEMFUN): New macros.
2059	(factorial, mpz_class::factorial, primorial, mpz_class::primorial):
2060	New functions.
2061	* tests/cxx/t-ops2.cc: Test factorial and primorial.
2062	* tests/cxx/Makefile.am: Move t-ops2 after
2063	t-do-exceptions-work-at-all-with-this-compiler.
2064	* doc/gmp.texi: Document factorial and primorial.
2065	* NEWS: Likewise.
2066
2067	* tests/cxx/t-ops2.cc: Remove and split into ...
2068	* tests/cxx/t-ops2z.cc, tests/cxx/t-ops2qf.cc, tests/cxx/t-ops2f.cc,
2069	tests/cxx/t-ops2.h: New files.
2070	* tests/cxx/Makefile.am: Update for the split.
2071
20722015-11-07  Marc Glisse  <marc.glisse@inria.fr>
2073
2074	* gmpxx.h (__GMP_DEFINE_UNARY_FUNCTION_1,
2075	__GMPP_DEFINE_BINARY_FUNCTION_1, __GMPNN_DEFINE_BINARY_FUNCTION_1,
2076	__GMPNS_DEFINE_BINARY_FUNCTION_1, __GMPNU_DEFINE_BINARY_FUNCTION_1,
2077	__GMPND_DEFINE_BINARY_FUNCTION_1, __GMPNLD_DEFINE_BINARY_FUNCTION_1,
2078	__GMPN_DEFINE_BINARY_FUNCTION_1, __GMP_DEFINE_BINARY_FUNCTION_1):
2079	New macros.
2080	(operator~, trunc, floor, ceil, sqrt, operator%, operator&, operator|,
2081	operator^, hypot, gcd, lcm): Use them.
2082
20832015-11-06 Marco Bodrato <bodrato@mail.dm.unipi.it>
2084
2085	* mpz/and.c: Use MPZ_NEWALLOC.
2086	* mpz/ior.c: Remove duplicated branches, add branch hints.
2087	* mpz/xor.c: Likewise, and use NORMALIZE_NOT_ZERO.
2088
2089	* mpz/init.c: Remove conditional code for __CHECKER__.
2090	* mpz/init2.c: Likewise.
2091	* mpz/inits.c: Likewise.
2092	* mpz/iset.c: Likewise.
2093	* mpz/iset_str.c: Likewise.
2094
20952015-11-04  Torbjörn Granlund  <torbjorng@google.com>
2096
2097	* mpz/xor.c: Use MPZ_REALLOC.
2098	* mpz/ior.c: Likewise
2099
21002015-11-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
2101
2102	* mpz/xor.c: Use the return value of _mpz_realloc.
2103	* mpz/ior.c: Likewise.
2104	* mpn/generic/sec_div.c: Remove unused var.
2105
21062015-11-01  Torbjörn Granlund  <torbjorng@google.com>
2107
2108	* tests/misc.c (seed_from_tod, seed_from_urandom): New functions.
2109	(tests_rand_start): Use them.
2110
21112015-11-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
2112
2113	* Version 6.1.0 released.
2114
2115	* mpz/inits.c [__CHECKER__]: Init limb, not pointer.
2116	* mpz/init.c [__CHECKER__]: Likewise (spotted by Vicente Benjumea).
2117	* tests/mpf/t-pow_ui.c: Use another mpf for the size limit.
2118
21192015-10-30  Torbjörn Granlund  <torbjorng@google.com>
2120
2121	* mpf/pow_ui.c: Add log(e) precision bits.
2122
2123	* doc/gmp.texi (Floating-point): Rewrite mpf introduction.
2124
21252015-10-29 Marco Bodrato <bodrato@mail.dm.unipi.it>
2126
2127	* demos/factorize.c: mpz_div_2exp => mpz_tdiv_q_2exp.
2128	* demos/perl/GMP.xs: Likewise.
2129	* tests/mpf/t-pow_ui.c: Use reference value to check the size.
2130
2131	* doc/gmp.texi (Floating-point): Remove "infinite precision" claim.
2132
2133	* gmp-h.in: Update version.
2134
21352015-10-28  Torbjörn Granlund  <torbjorng@google.com>
2136
2137	* tests/mpf/t-pow_ui.c: New file.
2138	* tests/mpf/Makefile.am (check_PROGRAMS): Compile it.
2139
2140	* mpf/pow_ui.c: Rewrite for accuracy and performance.
2141
21422015-10-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
2143
2144	* configfsf.guess: Updated to version 2015-10-21, for a typo.
2145
2146	* tests/cxx/t-ops.cc (check_mpq): Compare also with mpz.
2147	(check_mpf): Compare also with mpz and mpq.
2148
21492015-10-25  Torbjörn Granlund  <torbjorng@google.com>
2150
2151	* configure.ac: Avoid passing ambiguous -march=skylake.
2152
21532015-10-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
2154
2155	* Version 6.1.0-rc1 published.
2156
2157	* gmp-h.in: Revert version for RC.
2158
21592015-10-20  Torbjörn Granlund  <torbjorng@google.com>
2160
2161	* mpn/x86/pentium4/sse2/popcount.asm: Use LEAL.
2162	* mpn/x86/k7/invert_limb.asm: Likewise.
2163
21642015-10-18  Torbjörn Granlund  <torbjorng@google.com>
2165
2166	* mpn/arm64/gmp-mparam.h: New file.
2167
21682015-10-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
2169
2170	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
2171	* gmp-h.in: Bump version.
2172
21732015-10-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
2174
2175	* tests/mpf/t-cmp_si.c: Initialise a variable (only when error arise)
2176	* mpn/generic/toom43_mul.c: Insert parentheses around & expressions.
2177	* mpn/generic/toom52_mul.c: Likewise.
2178	* tests/mpn/t-minvert.c: Remove an unused var.
2179	* tests/mpz/t-cong_2exp.c: Likewise.
2180
21812015-10-16  Hans Wennborg <hwennborg at google.com>
2182
2183	* mpn/generic/div_qr_2.c: Insert parentheses around & expressions.
2184	* mpn/generic/toom44_mul.c: Likewise.
2185	* mpn/generic/toom53_mul.c: Likewise.
2186	* mpn/generic/toom62_mul.c: Likewise.
2187	* tests/mpn/t-bdiv.c: Simplify conditional printing of whitespace.
2188	* tests/mpn/t-div.c: Likewise.
2189
21902015-10-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
2191
2192	* configfsf.sub: Updated to version 2015-08-20, from gnulib.
2193	* configfsf.guess: Updated to version 2015-09-14, from gnulib.
2194
21952015-10-14  Torbjörn Granlund  <torbjorng@google.com>
2196
2197	* demos/pexpr.c (main): Clear out a variable.
2198
2199	* mpn/generic/sqrlo_basecase.c: Move things before addmul_1 to reduce
2200	register pressure.
2201
2202	* .hgignore: Add 'compile' and 'test-driver'.
2203
2204	* mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Simplify, add ASSERT.
2205	* mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise.
2206
2207	* tune/tuneup.c (tune_mu_bdiv): Start at measured BDIV_DC_ thresholds.
2208
22092015-10-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
2210
2211	* mpf/clears.c, mpf/inits.c, mpq/clears.c, mpq/inits.c,
2212	* mpz/clears.c, mpz/inits.c: Keep on supporting empty list.
2213
22142015-10-13  Marc Glisse  <marc.glisse@inria.fr>
2215
2216	* gmpxx.h (__GMPP_DEFINE_BINARY_TYPE_FUNCTION): Allow mixed operations.
2217	(__gmp_cmp_function, __gmp_binary_equal, __gmp_binary_less):
2218	Handle mixed operations.
2219	(__gmp_cmp_function): Move before __gmp_binary_equal.
2220
22212015-10-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
2222
2223	* mpf/pow_ui.c: Increased precision of partial results.
2224
22252015-10-12  Torbjörn Granlund  <torbjorng@google.com>
2226
2227	* configure.ac: Reject AVX for NetBSD.
2228
22292015-10-11  Torbjörn Granlund  <torbjorng@google.com>
2230
2231	* configure.ac (fat_path): Add skylake.
2232
22332015-10-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
2234
2235	* gen-fib.c: Correct the name of the program in error message.
2236	* gen-fac.c: Likewise.
2237
2238	* mpf/get_str.c: Increase precision of base^e computation.
2239
22402015-10-09  Torbjörn Granlund  <torbjorng@google.com>
2241
2242	* config.guess: Recognise cabylake and goldmont and more versions of
2243	skylake and silvermont.
2244	* acinclude.m4 (X86_64_PATTERN): Add cabylake and goldmont.
2245	* config.sub: Corresponding changes.
2246	* configure.ac: Corresponding changes.
2247	* mpn/x86_64/fat/fat.c: Corresponding changes.
2248
22492015-09-12  Torbjörn Granlund  <torbjorng@google.com>
2250
2251	* mpf/clear.c, mpf/clears.c, mpf/inits.c, mpq/clear.c, mpq/clears.c
2252	* mpq/inits.c, mpz/clear.c, mpz/clears.c, mpz/inits.c:
2253	Streamline, use macros.
2254
22552015-09-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
2256
2257	* mpz/cfdiv_r_2exp.c: Use mpn_neg and MPZ_NEWALLOC.
2258	* mpz/cfdiv_q_2exp.c: Use MPZ_REALLOC return value.
2259
22602015-09-12  Torbjörn Granlund  <torbjorng@google.com>
2261
2262	* tests/mpf/t-cmp_si.c (check_data): Set precision reflecting data.
2263
22642015-09-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
2265
2266	* mpf/cmp_z.c: New file implementing mpf_cmp_z.
2267	* mpf/Makefile.am (libmpf_la_SOURCES): Add it.
2268	* Makefile.am (MPF_OBJECTS): Add generate object to libs.
2269	* gmp-h.in: Declare new function.
2270	* tests/mpf/t-cmp_si.c: Test also the new function.
2271	* doc/gmp.texi: Document it.
2272
22732015-09-06  Torbjörn Granlund  <torbjorng@google.com>
2274
2275	* Wrap remaining limb allocations in __GMP_ALLOCATE_FUNC_LIMBS.
2276
2277	* mpn/x86/fat/fat.c (fake_cpuid_table): Add missing commas.
2278	* mpn/x86_64/fat/fat.c: Likewise.
2279
2280	* mpn/x86/fat/fat.c (fake_cpuid_table): Improve struct type.
2281	* mpn/x86/fat/fat.c: Likewise.
2282
22832015-09-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
2284
2285	* tests/mpq/t-cmp_z.c (sizes_test): New function, tests sizes.
2286
22872015-09-03  Torbjörn Granlund  <torbjorng@google.com>
2288
2289	* acinclude.m4 (GMP_C_HIDDEN_ALIAS): New.
2290	* configure.ac (GMP_C_HIDDEN_ALIAS): Invoke.
2291
22922015-09-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
2293
2294	* mpq/cmp.c (mpq_cmp_numden): Cast to avoid over/underflow.
2295	* tests/mpn/t-toom22.c (MIN_AN): Use defined value.
2296	* tests/mpz/t-fac_ui.c: Check big factorial modulo a larger prime.
2297	* mpn/generic/bsqrtinv.c: Use sqrlo+mullo_n instead of powlo(,,3,,).
2298	* mpq/div.c: Move a branch out of the normal flow.
2299
23002015-08-31  Torbjörn Granlund  <torbjorng@google.com>
2301
2302	* mpn/x86/fat/fat.c (fake_cpuid_table): Update similarly to
2303	corresponding x86_64 code.
2304
23052015-08-31 Marco Bodrato <bodrato@mail.dm.unipi.it>
2306
2307	* mpq/cmp.c (mpq_cmp_z): New function to compare mpq with mpz,
2308	asked by Vincent Delecroix for the SageMath project.
2309	* gmp-h.in: Declare it.
2310	* doc/gmp.texi: Document it.
2311	* tests/mpq/t-cmp_z.c: New file to test mpq_cmp_z (from t-cmp.c).
2312	* tests/mpq/Makefile.am (check_PROGRAMS): Add t-cmp_z.
2313
2314	* mpn/generic/powlo.c: Use mpn_sqrlo.
2315
23162015-08-29  Torbjörn Granlund  <torbjorng@google.com>
2317
2318	* mpn/x86_64/fat/fat.c (fake_cpuid_table): Add CPU aliases.
2319
23202015-08-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
2321
2322	* configure.ac (AH_VERBATIM): Add HAVE_NATIVE_mpn_mullo_basecase.
2323	* mpn/generic/sqrlo.c (mpn_sqrlo): Use mullo_basecase when faster.
2324	* mpn/generic/sqrlo_basecase.c: More readable #defines.
2325
2326	* tune/tuneup.c (tune_sqrlo): New function to tune sqrlo thresholds.
2327	(all): Call it, after multiplication and FFT.
2328	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add sqrlo{,_basecase}.c .
2329	* gmp-impl.h: Add all SQRLO_*_THRESHOLD* defs, for tuning and default.
2330	* mpn/generic/sqrlo.c: Remove default threshold definitions.
2331	* mpn/generic/sqrlo_basecase.c: Use SQRLO_DC_THRESHOLD_LIMIT.
2332	* mpn/minithres/gmp-mparam.h: New SQRLO_*_THRESHOLDs.
2333
2334	* tune/tuneup.c (tune_mullo): Set MULLO_MUL_N_THRESHOLD to never
2335	whenever the FFT threshold does not exist.
2336
2337	* mpf/cmp.c: Remove some branches.
2338
23392015-08-25  Torbjörn Granlund  <torbjorng@google.com>
2340
2341	* mpn/x86_64/x86_64-defs.m4: Output computed numbers in base-10 instead
2342	of base-16 to avoid bugs on Solaris, FreeBSD, and old NetBSD.
2343
23442015-08-23  Torbjörn Granlund  <torbjorng@google.com>
2345
2346	* mpn/x86_64/fat/fat.c (fake_cpuid_table): Add more entries, handle
2347	Broadwell separately.
2348
2349	* configure.ac (fat_path): Add coreibwl.
2350
23512015-08-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
2352
2353	* mpn/generic/rootrem.c (logbased_root): New function.
2354	(mpn_rootrem_internal): Use it to estimate highest 9 bits of the root.
2355
2356	* gmp-impl.h (MPQ_PTR_SWAP, MPQ_SRCPTR_SWAP): New macros.
2357
23582015-08-17  Torbjörn Granlund  <torbjorng@google.com>
2359
2360	* acinclude.m4 (X86_64_PATTERN): Add skylake.
2361	* config.guess: Corresponding changes.
2362	* config.sub: Corresponding changes.
2363	* configure.ac: Corresponding changes.
2364	* mpn/x86_64/skylake/gmp-mparam.h: New file.
2365
23662015-08-15  Torbjörn Granlund  <torbjorng@google.com>
2367
2368	* mpn/generic/mullo_basecase.c: Provide alternative code, make default.
2369
23702015-08-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
2371
2372	* tests/refmpn.c (refmpn_sqrlo): New function.
2373	* tests/tests.h: Define it.
2374
2375	* mpn/generic/sqrlo.c: New file, new function.
2376	* mpn/generic/sqrlo_basecase.c: New file, new function.
2377	* gmp-impl.h (mpn_sqrlo, mpn_sqrlo_basecase): Declare them.
2378	* configure.ac (gmp_mpn_functions): Add new files.
2379
2380	* tests/mpn/t-sqrlo.c: New file, new test.
2381	* tests/mpn/Makefile.am (check_PROGRAMS): Add new test.
2382	* tests/devel/try.c: Support mpn_sqrlo and mpn_sqrlo_basecase.
2383
2384	* tune/common.c (speed_mpn_sqrlo{,_basecase}): New functions.
2385	* tune/speed.c: Support new functions.
2386	* tune/speed.h (SPEED_ROUTINE_MPN_MULLO_BASECASE): Update.
2387	(SPEED_ROUTINE_MPN_SQRLO): New macro.
2388
2389	* mpn/generic/rootrem.c: Avoid divisions if not needed.
2390
2391	* tests/mpn/t-broot.c: Test also k=1.
2392	* mpz/aorsmul_i.c: Move branches out of main line.
2393
23942015-07-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
2395
2396	* mpn/generic/sqrtrem.c (mpn_dc_sqrt): Support odd sizes.
2397
23982015-07-16  Torbjörn Granlund  <torbjorng@google.com>
2399
2400	* tune/speed.c: Remove now redundant MPN_FILL.
2401
2402	* configure.ac (hppa-hpux): Never use O3 optimisation.
2403
24042015-07-09  Torbjörn Granlund  <torbjorng@google.com>
2405
2406	* mpn/ia64/add_n_sub_n.asm: Make it work for HP-UX.
2407	* mpn/ia64/addmul_2.asm: Likewise.
2408	* mpn/ia64/aors_n.asm: Likewise.
2409	* mpn/ia64/aorsorrlshC_n.asm: Likewise.
2410	* mpn/ia64/cnd_aors_n.asm: Likewise.
2411	* mpn/ia64/gcd_1.asm: Likewise.
2412	* mpn/ia64/lshiftc.asm: Likewise.
2413	* mpn/ia64/mod_34lsub1.asm: Likewise.
2414	* mpn/ia64/mul_2.asm: Likewise.
2415	* mpn/ia64/sec_tabselect.asm: Likewise.
2416	* mpn/ia64/sqr_diag_addlsh1.asm: Likewise.
2417
24182015-07-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
2419
2420	* gmp-impl.h (MPN_FILL): New macro, generalise MPN_ZERO.
2421
2422	* mpn/generic/sqrtrem.c (mpn_dc_sqrt): New function not computing remainder.
2423	(mpn_dc_sqrtrem): Use tdiv_q instead of divrem, use given scratch space.
2424	(mpn_sqrtrem): Use mpn_dc_sqrt for both even and odd sizes.
2425
24262015-06-24  Torbjörn Granlund  <torbjorng@google.com>
2427
2428	* mpn/x86_64/fastsse/com.asm: Disallow zero size operands.
2429
2430	* mpn/x86_64/fastsse/copyi.asm: Suppress looping in basecase code.
2431
24322015-06-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
2433
2434	* mpn/generic/sqrtrem.c (mpn_sqrtrem2): Simplify branches.
2435	(mpn_dc_sqrtrem): Don't compute remainder if not needed.
2436
24372015-06-23  Torbjörn Granlund  <torbjorng@google.com>
2438
2439	* gmp-impl.h: Remove K&R stringize support.
2440	* tests/devel/try.c: Likewise.
2441	* tests/t-constants.c: Likewise.
2442	* tests/mpf/t-fits.c: Likewise.
2443	* tests/mpz/t-fits.c: Likewise.
2444
2445	* configure.ac (AC_C_STRINGIZE): Remove.
2446
24472015-06-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
2448
2449	* tests/devel/try.c: Support mpn_sqrt (sqrtrem with remainder = NULL).
2450	* mpn/generic/sqrtrem.c: Reorder branches for single limb operands.
2451
24522015-06-15  Torbjörn Granlund  <torbjorng@google.com>
2453
2454	* config.guess: Rewrite code for AVX handling to deal with broken cpuid
2455	states.
2456
24572015-06-11  Torbjörn Granlund  <torbjorng@google.com>
2458
2459	* mpn/x86/k7/gcd_1.asm: Align stack for calls.
2460	* mpn/x86/p6/gcd_1.asm: Amend last change: align for PIC and non-PIC.
2461
24622015-06-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
2463
2464	* mpn/generic/sqrtrem.c: Use sqrtrem1 for single limb operands.
2465
2466	* tests/mpz/t-root.c: Check also mpz_root return value.
2467	* mpn/generic/rootrem.c: Shorten first and last loop.
2468
2469	* mpn/generic/toom2_sqr.c: Add some ASSERTs.
2470	* mpn/generic/toom22_mul.c: Likewise.
2471	* tests/mpn/t-toom22.c: stop testing some unsafe (unused) corner cases.
2472
24732015-06-08  Torbjörn Granlund  <torbjorng@google.com>
2474
2475	* mpn/x86/p6/gcd_1.asm: Align stack for calls.
2476
24772015-06-06  Torbjörn Granlund  <torbjorng@google.com>
2478
2479	* config.sub: Recognise any arm*neon CPU.
2480	* configure.ac (powerpc): Add p8 directory for power8 and later.
2481	* mpn/powerpc64/mode64/p8/invert_limb.asm: New file.
2482
24832015-06-01  Torbjörn Granlund  <torbjorng@google.com>
2484
2485	* tune/speed.c (routine): Measure "mpn_sqrt" and "mpn_root", which are
2486	really the corresponding "rem" functions with NULL remainder argument.
2487
2488	* tune/speed.h (SPEED_ROUTINE_MPN_SQRTROOT_CALL): New.
2489	(SPEED_ROUTINE_MPN_SQRTREM, SPEED_ROUTINE_MPN_ROOTREM):	Remove.
2490
2491	* tune/common.c (speed_mpn_sqrt, speed_mpn_root): New functions.
2492	(speed_mpn_sqrtrem): Use SPEED_ROUTINE_MPN_SQRTROOT_CALL
2493	(speed_mpn_rootrem): Likewise.
2494
24952015-05-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
2496
2497	* mpf/cmp_ui.c: Use macros, remove branches, correct nails.
2498	* mpf/cmp_si.c: Likewise.
2499	* mpf/int_p.c: Use a simpler loop to ignore zero limbs.
2500
2501	* mpf/sqrt_ui.c: Special case for sqrt(1).
2502	* tests/mpf/t-sqrt_ui.c: Test special cases.
2503
2504	* gmp-h.in: Declare (and inline) mpn_zero_p.
2505	* gmp-impl.h: Remove mpn_zero_p.
2506	* mpn/generic/zero_p: New file to include the function in the library.
2507	* configure.ac (gmp_mpn_functions): Add it.
2508	* doc/gmp.texi: Document it.
2509
2510	* mpz/combit.c: Call mpn_zero_p only if size is not zero.
2511	* mpz/scan1.c: Likewise.
2512	* tests/mpn/t-brootinv.c: Likewise.
2513	* tests/mpn/t-div.c: Likewise.
2514	* tests/mpn/t-minvert.c: Likewise.
2515
25162015-05-28  Niels Möller  <nisse@lysator.liu.se>
2517
2518	* doc/gmp.texi (Low-level Functions): Document mpn_divexact_1 and
2519	mpn_cnd_swap (the latter was forgotten for the 2015-02-08 change).
2520
25212015-05-28  Linus Nordberg  <linus@nordberg.se>
2522
2523	* configure.ac: Remove double quotes in help strings, make some
2524	clarifications.
2525
25262015-05-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
2527
2528	* mpq/div.c: Reduce memory use.
2529	* tests/mpq/reuse.c: Test also mpq_FUNCTION (x,x,x).
2530	* mpz/swap.c: Use _SWAP macros.
2531
25322015-05-18  Torbjörn Granlund  <torbjorng@google.com>
2533
2534	* configure.ac (arm): Let compiler decide about arm vs thumb encoding.
2535
25362015-05-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
2537
2538	* gmp-h.in (mpn_neg): Niels' code using mpn_neg.
2539	* gmp-h.in (mpn_com): Unconditionally declare prototype.
2540
25412015-05-17  Torbjörn Granlund  <torbjorng@google.com>
2542
2543	* mpn/arm/v6/sqr_basecase.asm: Rewrite for speed.
2544
25452015-05-16  Torbjörn Granlund  <torbjorng@google.com>
2546
2547	* mpn/arm/v6/addmul_2.asm: Rewrite for speed and size.
2548
25492015-05-15  Torbjörn Granlund  <torbjorng@google.com>
2550
2551	* mpn/arm/v7a/cora7/gmp-mparam.h: New file.
2552	* mpn/arm/v7a/cora8/gmp-mparam.h: New file.
2553	* configure.ac (arm): Point to new directories.
2554
25552015-05-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
2556
2557	* mpn/generic/invertappr.c: Reduce memory usage.
2558	* gmp-impl.h (mpn_invertappr_itch): Update accordingly.
2559	* tune/tuneup.c (tune_invertappr, tune_invert): Update min_size.
2560
2561	* mpn/generic/mu_div_qr.c: Pass scratch memory to mpn_invertappr.
2562	* mpn/generic/mu_divappr_q.c: Likewise.
2563
25642015-05-12  Felix Janda  <felix.janda@posteo.de>
2565
2566	* mpn/powerpc32/elf.m4 (LEA): Adopt to new ABI.
2567
25682015-05-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
2569
2570	* mpn/generic/invertappr.c: Reduce memory usage.
2571	* gmp-impl.h (mpn_invertappr_itch): Update accordingly.
2572
25732015-05-01  Torbjörn Granlund  <torbjorng@google.com>
2574
2575	* tune/tuneup.c (all): Make GCD tuning last since it is not robust.
2576
25772015-04-27  Torbjörn Granlund  <torbjorng@google.com>
2578
2579	* mpn/x86_64/coreibwl/gmp-mparam.h: New file.
2580
25812015-04-26  Torbjörn Granlund  <torbjorng@google.com>
2582
2583	* mpn/x86_64/coreibwl/mul_basecase.asm: New file.
2584	* mpn/x86_64/coreibwl/sqr_basecase.asm: New file.
2585
25862015-04-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
2587
2588	* tune/common.c (speed_mpn_neg, speed_mpz_2fac_ui): New functions.
2589	(speed_mpn_add_1, speed_mpn_add_1_inplace): New functions.
2590	(speed_mpn_sub_1, speed_mpn_sub_1_inplace): New functions.
2591	* tune/speed.h: Declare them all.
2592	* tune/speed.c (routine): Added mpn_neg, mpn_add_1, mpn_sub_1,
2593	mpn_add_1_inplace, mpn_sub_1_inplace, and mpz_2fac_ui.
2594
25952015-04-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
2596
2597	* mpn/generic/invert.c: Split add in the correction test.
2598	* mpn/generic/invertappr.c: Cleanup of loops and branches.
2599
2600	* mpn/generic/hgcd_reduce.c: Use TMP_ALLOC_LIMBS_3.
2601	* mpn/generic/powm.c: Use TMP_ALLOC_LIMBS_2.
2602	* mpn/generic/rootrem.c: Likewise.
2603	* mpn/generic/remove.c: Remove redundant #ifdef.
2604	* mpn/generic/perfpow.c: Likewise.
2605
26062015-04-21  Torbjörn Granlund  <torbjorng@google.com>
2607
2608	* printf/sprintffuns.c (gmp_sprintf_final): Remove extra parameters.
2609
2610	* mpn/arm/v6/popham.asm: Add MULFUNC_PROLOGUE.
2611	* mpn/powerpc64/mode64/rsh1aors_n.asm: Likewise.
2612	* mpn/powerpc64/mode64/p6/aorsmul_1.asm: Likewise.
2613
26142015-04-19  Torbjörn Granlund  <torbjorng@google.com>
2615
2616	* mpn/x86_64/x86_64-defs.m4 (oplist): Fix typo.
2617	(mulx): Simplify.
2618	(adcx, adox): New defines, using helper function adx.
2619	* mpn/x86_64/coreibwl/mul_1.asm: New file.
2620	* mpn/x86_64/coreibwl/addmul_1.asm: New file.
2621	* configure.ac (x86_64): Put coreibwl in appropriate code path.
2622
2623	* configure.ac (x86_64): Pass more exact Intel CPU options.
2624
26252015-04-13  Torbjörn Granlund  <torbjorng@google.com>
2626
2627	* longlong.h (arm): Rewrite.  Support thumb2; use gcc builtins for
2628	count_leading_zeros, use accurate code selection critera.
2629
26302015-04-13  Marc Glisse  <marc.glisse@inria.fr>
2631
2632	* configure.ac (x86_64): Extend noavx to ABI=64.
2633
26342015-04-10  Torbjörn Granlund  <torbjorng@google.com>
2635
2636	* mpn/alpha/ev6/mod_1_4.asm: Use LDGP.
2637
26382015-04-01  Torbjörn Granlund  <torbjorng@google.com>
2639
2640	* configure.ac (sparc): Don't use use -xO4, it miscompiles by design.
2641
26422015-03-24  Torbjörn Granlund  <torbjorng@google.com>
2643
2644	* mpn/generic/mul_fft.c (mpn_fft_best_k): Don't make pointers `static'
2645	just because they point to static (i.e., file-local) data.
2646
26472015-03-15  Torbjörn Granlund  <torbjorng@google.com>
2648
2649	* acinclude.m4 (X86_64_PATTERN): Add CPU code names.
2650
2651	* config.guess: Add more CPUs, use CPU code names.
2652	* config.sub: Corresponding changes.
2653	* configure.ac: Corresponding changes.
2654
26552015-02-21  Niels Möller  <nisse@lysator.liu.se>
2656
2657	* gmp-h.in (mpn_divexact_1): New public declaration.
2658	* gmp-impl.h: Moved from here.
2659
26602015-02-08  Niels Möller  <nisse@lysator.liu.se>
2661
2662	* doc/gmp.texi (Low-level Functions): Document mpn_cnd_swap.
2663
2664	* mpn/generic/cnd_swap.c (mpn_cnd_swap): New file, moved function
2665	here. Also changed cnd argument type from int to mp_limb_t.
2666	* mpn/generic/sec_invert.c (mpn_cnd_swap): Old location.
2667	* configure.ac: Added cnd_swap.
2668	* gmp-h.in (mpn_cnd_swap): Added prototype.
2669
26702015-01-19  Torbjörn Granlund  <torbjorng@google.com>
2671
2672	* configure.ac (arm): Provide architecture specific configs in addition
2673	to implementation specific configs.
2674
2675	* config.guess (arm): Use configfsf.guess's guess as default before
2676	conditionally appending "neon".
2677
26782015-01-08  Torbjörn Granlund  <torbjorng@google.com>
2679
2680	* config.guess: Match POWER8 for AIX.
2681
2682	* longlong.h: Add many casts inside assembly input operands, this
2683	insures proper zero extension.
2684
26852014-12-27  Marc Glisse  <marc.glisse@inria.fr>
2686
2687	* gmpxx.h (__gmp_unary_expr): Use __gmp_resolve_ref.
2688	(__gmp_expr): New specialization for unary expressions with
2689	a builtin argument.
2690
26912014-12-26  Marc Glisse  <marc.glisse@inria.fr>
2692
2693	* gmp-impl.h (tmp_debug_entry_t): Change block to type void*.
2694
26952014-12-22  Torbjörn Granlund  <torbjorng@google.com>
2696
2697	* longlong.h (mips64, mips32): Work around one clang bug.
2698
26992014-12-18  Torbjörn Granlund  <torbjorng@google.com>
2700
2701	* longlong.h (umul_ppmm): Use input temps in more places.
2702
27032014-12-10  Marc Glisse  <marc.glisse@inria.fr>
2704
2705	* tests/cxx/clocale.c (localeconv, nl_langinfo): Match glibc's
2706	prototype in C++.
2707
27082014-12-09  Torbjörn Granlund  <torbjorng@google.com>
2709
2710	* configure.ac (powerpc): Remove hardwired -mpowerpc, causes clang
2711	problems.  Optionally pass -m32.
2712
27132014-12-08  Marc Glisse  <marc.glisse@inria.fr>
2714
2715	* config.guess (ultrasparc*-*-*): Update for T4 and T5.
2716	* config.sub (ultrasparc*-*-*): Update for T5.
2717	* configure.ac (ultrasparc*-*-*): Update for T5.
2718
2719	* longlong.h (sparc64): Define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
2720	with VIS3.
2721
2722	* tests/misc/t-locale.c (localeconv, nl_langinfo): Match glibc's
2723	prototype in C++.
2724	* tests/mpf/t-get_si.c (check_limbdata): Avoid narrowing conversion
2725	from -1 to unsigned inside {}.
2726
27272014-12-02  Torbjörn Granlund  <torbjorng@google.com>
2728
2729	* config.guess (arm*-*-*): Redirect stderr.
2730
27312014-11-26  Torbjörn Granlund  <torbjorng@google.com>
2732
2733	* configure.ac (arm*-*-*): Optionally pass redundant fpu mode options
2734	in order to placate clang.
2735
2736	* mpn/arm/neon/lshiftc.asm: Avoid insn form missing from clang.
2737
27382014-11-24  Torbjörn Granlund  <torbjorng@google.com>
2739
2740	* configure.ac (mips*-*-*): Provide ABI synonyms (for clang pretending
2741	to be gcc).
2742
27432014-11-18  Torbjörn Granlund  <torbjorng@google.com>
2744
2745	From Hannes Mehnert:
2746	* config.guess (arm*-*-*): Base guesses on first matching /proc/cpuinfo
2747	line.
2748
27492014-11-17  Torbjörn Granlund  <torbjorng@google.com>
2750
2751	* longlong.h (__longlong_h_C): New macro.
2752	(mpn_umul_ppmm, etc): Use it for C++ support.
2753
27542014-11-15  Torbjörn Granlund  <torbjorng@google.com>
2755
2756	* tests/mpz/reuse.c: Make function vectors 'static'.
2757
2758	* tests/mpn/logic.c (check_one): Make string variable 'const'.
2759
2760	* tests/mpz/t-perfpow.c (tests): Make 'static'.
2761
2762	* tune/tuneup.c (fftmes): Remove an unused variable.
2763
27642014-11-15  Marc Glisse  <marc.glisse@inria.fr>
2765
2766	* tests/amd64check.c (calling_conventions_fenv): Mark as extern "C".
2767	* tests/x86check.c (calling_conventions_fenv): Likewise.
2768
27692014-11-13  Hans Wennborg  <hwennborg@google.com>
2770
2771	* mpn/generic/toom_interpolate_8pts.c: Fix operator precedence in
2772	ASSERT.
2773
27742014-11-13  Torbjörn Granlund  <torbjorng@google.com>
2775
2776	* tune/speed.h: Add casts for C++ compatibility.
2777	(speed_cyclecounter): Mark as extern "C".
2778	(mpn_mod_1_1p_1, mpn_mod_1_1p_2): Correct prototype.
2779
2780	* tune/tune-gcd-p.c: Add casts for C++ compatibility.
2781
2782	* tune/tuneup.c: Add casts for C++ compatibility.
2783	(mpn_divrem_1_tune, mpn_mod_1_tune): Mark as extern "C".
2784	(INSERT_FFTTAB): Produce sentinels differently to silence compiler.
2785
27862014-11-12  Torbjörn Granlund  <torbjorng@google.com>
2787
2788	* gen-psqr.c: Add casts for C++ compatibility.
2789
2790	* tests/misc/t-scanf.c: Include config.h early for HAVE_xxx.
2791
27922014-11-08  Torbjörn Granlund  <torbjorng@google.com>
2793
2794	* mpn/x86/x86-defs.m4 (LEA, LEAL): Make sure to put eip stub code in
2795	text segment.
2796	* mpn/x86/darwin.m4: Likewise.
2797
2798	* tune/speed.h (i386 speed_cyclecounter): Remove inline asm code, rely
2799	on external version.
2800
28012014-11-06  Torbjörn Granlund  <torbjorng@google.com>
2802
2803	* config.guess: Ignore appended letters such E in POWER8E.
2804	* configure.ac: Supply cflags for power8, power9.
2805
28062014-11-03  Torbjörn Granlund  <torbjorng@google.com>
2807
2808	* mpn/powerpc32/addmul_1.asm: Avoid negative stack pointer references.
2809	* mpn/powerpc32/lshift.asm: Likewise.
2810	* mpn/powerpc32/lshiftc.asm: Likewise.
2811	* mpn/powerpc32/p3-p7/aors_n.asm: Likewise.
2812	* mpn/powerpc32/rshift.asm: Likewise.
2813	* mpn/powerpc32/sec_tabselect.asm: Likewise.
2814	* mpn/powerpc32/submul_1.asm: Likewise.
2815	* mpn/powerpc32/vmx/mod_34lsub1.asm: Likewise.
2816
28172014-10-13  Torbjörn Granlund  <torbjorng@google.com>
2818
2819	* acinclude.m4 (freebsd hacked gcc): Test for crash-prone FreeBSD gcc.
2820
28212014-10-03  Peter Breitenlohner <peb@mppmu.mpg.de>
2822
2823	* mpn/generic/sec_tabselect.c: Adjust type to silence compiler.
2824
28252014-10-01  Torbjörn Granlund  <torbjorng@google.com>
2826
2827	* All Makefile.am: INCLUDES => AM_CPPFLAGS.
2828
2829	* configure.ac (arm64): Set gcc_cflags_maybe to enable Neon (for clang
2830	pretending to be gcc).
2831
28322014-09-24  Marc Glisse  <marc.glisse@inria.fr>
2833
2834	* longlong.h (arm64 count_trailing_zeros, count_leading_zeros): Use
2835	gcc's builtins.
2836	(arm64 umul_ppmm): Use macro arguments only once.
2837
28382014-09-22  Marc Glisse  <marc.glisse@inria.fr>
2839
2840	* mpn/arm64/lshift.asm: Avoid negative immediates.
2841	* mpn/arm64/rshift.asm: Likewise.
2842
28432014-09-13  Marc Glisse  <marc.glisse@inria.fr>
2844
2845	* mpn/generic/div_qr_1n_pi1.c: Honor NO_ASM.
2846	* mpn/generic/div_qr_1n_pi2.c: Likewise.
2847	* mpn/generic/div_qr_1u_pi2.c: Likewise.
2848	* mpn/generic/div_qr_2.c: Likewise.
2849	* mpn/generic/mod_1_1.c: Likewise.
2850	* mpn/generic/redc_2.c: Likewise.
2851
28522014-08-31  Torbjörn Granlund  <tege@gmplib.org>
2853
2854	* mpn/arm64/lshift.asm: New file.
2855	* mpn/arm64/rshift.asm: New file.
2856
28572014-09-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
2858
2859	* gmp-impl.h (TMP_ALLOC_LIMBS_3): New macro to allocate 3 blocks.
2860	(mpn_remove): Update declaration with mp_srcptr arguments.
2861	* mpn/generic/remove.c: Use TMP_ALLOC_LIMBS_3. mp_srcptr for args.
2862
2863	* mpn/generic/perfpow.c (pow_equals): TMP_DECL only where needed.
2864	(perfpow): Use TMP_ALLOC_LIMBS_3.
2865	(mpn_perfect_power_p): Skip useless allocations. Use mpn_remove.
2866	* tests/mpz/t-perfpow.c (check_random): Check more perfect powers.
2867
2868	* mpn/generic/divis.c: Use TMP_ALLOC_LIMBS_2. Share a count.
2869
28702014-08-30  Torbjörn Granlund  <tege@gmplib.org>
2871
2872	* mpn/arm64/mod_34lsub1.asm: New file.
2873
28742014-08-23  Torbjörn Granlund  <tege@gmplib.org>
2875
2876	* mpn/arm64/bdiv_dbm1c.asm: New file.
2877
2878	* mpn/arm64/com.asm: New file.
2879
2880	* mpn/arm64/sec_tabselect.asm: New file.
2881
2882	* mpn/arm64/popcount.asm: New file.
2883	* mpn/arm64/hamdist.asm: New file.
2884
2885	* configure.ac: Put generic arm/neon earlier in path.
2886
28872014-08-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
2888
2889	* mpq/canonicalize.c: Earlier check for negative denominator.
2890	* mpq/set_d.c: Stricter allocation.
2891
28922014-08-03  Torbjörn Granlund  <tege@gmplib.org>
2893
2894	* mpn/x86_64/bobcat/mul_1.asm: Fix typo in offset affecting DOS64.
2895
28962014-07-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
2897
2898	* mpn/generic/fib2_ui.c: remove #if HAVE_NATIVE_mpn_rsblsh_n.
2899	* mpz/fib2_ui.c: Use tabulated values, when available.
2900	* mpz/fib_ui.c: #if HAVE_NATIVE_mpn_addlsh1_n, use it.
2901
2902	* mpq/cmp_ui.c: Remove a branch.
2903	* mpq/cmp_si.c: Likewise.
2904
2905	* mpn/generic/toom_interpolate_7pts.c: Replace an in-place add
2906	with add_n + INCR_U.
2907
2908	* tests/mpf/t-fits.c: use ui_sub instead of sub_ui+neg.
2909
29102014-07-27  Torbjörn Granlund  <tege@gmplib.org>
2911
2912	* mpn/x86/k7/gcd_1.asm: Use LEAL.
2913
2914	* mpn/x86/x86-defs.m4 (LEAL): New.
2915	(LEA): Append to `load_eip' instead of ASM_END, like darwin.m4.
2916	* mpn/x86/darwin.m4 (LEAL): New.
2917
29182014-07-26  Torbjörn Granlund  <tege@gmplib.org>
2919
2920	* mpn/x86/pentium/mode1o.asm: Add Darwin PIC code.
2921	* mpn/x86/pentium/bdiv_q_1.asm: Likewise.
2922	* mpn/x86/pentium/dive_1.asm: Likewise.
2923	* mpn/x86/pentium/popcount.asm: Likewise.
2924	* mpn/x86/pentium/hamdist.asm: Likewise.
2925	* mpn/x86/k6/gcd_1.asm: Likewise.
2926
2927	* mpn/x86: Append ASM_END to many files.
2928	* tests/x86call.asm: Append ASM_END.
2929
2930	* mpn/x86/fat/fat_entry.asm (FAT_ENTRY, FAT_INIT):
2931	Support Darwin.
2932
2933	* mpn/x86/darwin.m4 (ASM_END): New, body from EPILOGUE_cpu.
2934	(EPILOGUE_cpu): Remove.
2935
2936	* mpn/x86/x86-defs.m4 (LEA): Put `mov_eip_' thunks in ASM_END instead
2937	of EPILOGUE_cpu.
2938
29392014-07-05  Niels Möller  <nisse@lysator.liu.se>
2940
2941	* doc/gmp.texi (Low-level Functions): Document that scratch need
2942	for mpn_sec_add_1 and mpn_sec_sub_1 are at most n limbs.
2943	(Low-level Functions): Document allowed overlap for mpn_addmul_1
2944	and mpn_submul_1.
2945
29462014-07-02  Torbjörn Granlund  <tege@gmplib.org>
2947
2948	* mpn/x86_64/x86_64-defs.m4: Fix quoting.
2949
2950	* mpn/x86_64/atom/redc_1.asm: Enforce proper stack allocation.
2951	* mpn/x86_64/bobcat/redc_1.asm: Likewise.
2952	* mpn/x86_64/core2/divrem_1.asm: Likewise.
2953	* mpn/x86_64/core2/gcd_1.asm: Likewise.
2954	* mpn/x86_64/core2/redc_1.asm: Likewise.
2955	* mpn/x86_64/coreihwl/redc_1.asm: Likewise.
2956	* mpn/x86_64/coreinhm/redc_1.asm: Likewise.
2957	* mpn/x86_64/coreisbr/redc_1.asm: Likewise.
2958	* mpn/x86_64/divrem_1.asm: Likewise.
2959	* mpn/x86_64/divrem_2.asm: Likewise.
2960	* mpn/x86_64/gcd_1.asm: Likewise.
2961	* mpn/x86_64/mod_1_1.asm: Likewise.
2962	* mpn/x86_64/mod_1_2.asm: Likewise.
2963	* mpn/x86_64/mod_1_4.asm: Likewise.
2964
29652014-06-30  Torbjörn Granlund  <tege@gmplib.org>
2966
2967	* config.sub: Generalise x86 patterns.
2968
29692014-06-17  Marc Glisse  <marc.glisse@inria.fr>
2970
2971	* gmpxx.h (__gmp_gcd_function, __gmp_lcm_function): New classes.
2972	(gcd, lcm): New functions.
2973	* doc/gmp.texi (C++ Interface Integers): Document them.
2974	* tests/cxx/t-ops2.cc (checkz): Test them.
2975
29762014-06-16  Torbjörn Granlund  <tege@gmplib.org>
2977
2978	* mpf/mul.c: Postpone TMP_MARK.
2979
2980	* mpn/generic/perfpow.c (perfpow): Combine TMP_ALLOCs.
2981
29822014-06-15  Torbjörn Granlund  <tege@gmplib.org>
2983
2984	* tests/refmpn.c (refmpn_mul): Rewrite to avoid O(n) recursion depth.
2985
29862014-06-09  Torbjörn Granlund  <tege@gmplib.org>
2987
2988	* mpn/generic/mullo_n.c: Remove default THRESHOLDs.
2989	* gmp-impl.h: Put MULLO THRESHOLDs here.  Improve various THRESHOLD
2990	defaults.
2991
29922014-06-08  Torbjörn Granlund  <tege@gmplib.org>
2993
2994	* gmp-impl.h (TMP_ALLOC): Decrease limit to about half.
2995
2996	* mpn/generic/toom53_mul.c: Replace many TMP_SALLOC invocations
2997	by a single TMP_ALLOC.
2998	* mpn/generic/toom42_mul.c: Likewise.
2999
3000	* mpn/generic/sec_sqr.c: Don't unconditionally call mpn_sqr_basecase
3001	since it fails for non-cryptographic sizes for some obsolete CPUs.
3002
3003	* mpn/generic/sec_powm.c: Remove own squaring code, instead use
3004	mpn_mul_basecase.
3005
3006	* tests/mpn/logic.c (main): Don't use TMP_SALLOC_LIMBS.
3007
3008	* mpn/generic/dcpi1_div_q.c: Avoid TMP_SALLOC_LIMBS.
3009	* mpn/generic/dcpi1_div_qr.c: Likewise.
3010
30112014-06-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
3012
3013	* mpn/generic/mul.c: Tighter allocation in Toom{2,3}X branches.
3014
30152014-06-06  Torbjörn Granlund  <tege@gmplib.org>
3016
3017	* mpn/generic/mul.c: Swap some TMP_SALLOC_LIMBS for TMP_ALLOC_LIMBS
3018	and some TMP_ALLOC_LIMBS for TMP_SALLOC_LIMBS.
3019
30202014-05-31 Marco Bodrato <bodrato@mail.dm.unipi.it>
3021
3022	* mpf/ui_sub.c: Remove buggy code, use a wrapper to mpf_sub.
3023	* tests/mpf/t-sub.c: More corner cases and strict checking.
3024	* mpf/sub.c: Use more mpn_ primitives and macros.
3025
3026	* tests/mpf/t-int_p.c: Test numbers with both integer and
3027	fractionary parts.
3028
3029	* mpf/int_p.c: Delay zero branch and use mpn_zero_p.
3030	* mpf/fits_s.h: No special case for SIZ == 0.
3031	* mpf/fits_u.h: Likewise.
3032
30332014-05-29  Marc Glisse  <marc.glisse@inria.fr>
3034
3035	* gmp-h.in: Include <limits.h>.
3036	(__GMP_UINT_MAX, __GMP_ULONG_MAX, __GMP_USHRT_MAX): Remove.
3037	* gmp-impl.h (ULONG_MAX, UINT_MAX, USHRT_MAX, LONG_MAX, INT_MAX,
3038	SHRT_MAX): Remove unnecessary redefinition.
3039	* tests/t-gmpmax.c: Remove file.
3040	* tests/Makefile.am: Remove t-gmpmax.
3041
30422014-05-22 Marco Bodrato <bodrato@mail.dm.unipi.it>
3043
3044	* tests/mpf/t-sub.c (check_data): Test also ui_sub and sub_ui.
3045
30462014-05-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
3047
3048	* gen-fac.c: +1 in the init2 argument before setbit.
3049	* gen-fib.c: Likewise. (Thanks Niels)
3050	* rand/randmts.c: Likewise.
3051
3052	* mpn/generic/invert.c: Remove unused TMP_MARK.
3053	* mpn/generic/invertappr.c: Avoid a branch.
3054	* mpz/millerrabin.c (millerrabin): Consider the rare case n is a power.
3055
30562014-05-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
3057
3058	* gen-fib.c: Use mpz_setbit.
3059	* gen-psqr.c: Skip even numbers when looking for primes.
3060
3061	* mpn/generic/invert.c: Avoid a branch.
3062	* mpn/generic/toom2_sqr.c: Avoid a few branches in the odd case.
3063	* mpn/generic/toom22_mul.c: Likewise.
3064
30652014-05-08  Marc Glisse  <marc.glisse@inria.fr>
3066
3067	* gmpxx.h (std::common_type): Remove partial specialization for two
3068	identical expressions. New partial specialization for a single type.
3069	* tests/cxx/t-cxx11.cc: Test it.
3070
30712014-04-14  Niels Möller  <nisse@lysator.liu.se>
3072
3073	* doc/gmp.texi (mpz_invert): Clarify behavior in the zero ring.
3074
30752014-04-04  Marc Glisse  <marc.glisse@inria.fr>
3076
3077	* longlong.h (i386): Add comment about "cc" clobber.
3078
30792014-04-04  Torbjorn Granlund  <tege@gmplib.org>
3080
3081	* acinclude.m4 (X86_64_PATTERN): Generalise patterns to allow "noavx"
3082	suffix.
3083
3084	* mpn/generic/div_qr_1n_pi1.c: Conditionalise ARM asm on !__thumb__.
3085
30862014-04-03  Marc Glisse  <marc.glisse@inria.fr>
3087
3088	* mpn/arm64/mul_1.asm, mpn/arm64/gcd_1.asm: Use official b.cond syntax.
3089	* mpn/arm64/invert_limb.asm, mpn/arm64/aorsmul_1.asm: Prefix
3090	immediates with #.
3091
30922014-04-03  Torbjorn Granlund  <tege@gmplib.org>
3093
3094	* config.guess: Append "noavx" for CPUs which have AVX but where the
3095	kernel does not support it.
3096	* configure.ac: Accept "noavx" cpu name suffixes.  Conditionally pass
3097	-mno-avx.
3098
30992014-04-02  Torbjorn Granlund  <tege@gmplib.org>
3100
3101	* mpn/x86_64/k8/redc_1.asm: Workaround for Darwin assembler quirk.
3102
31032014-03-28  Torbjorn Granlund  <tege@gmplib.org>
3104
3105	* mpn/generic/mod_1_1.c: Conditionalise ARM asm on !__thumb__.
3106
31072014-03-31  Marc Glisse  <marc.glisse@inria.fr>
3108
3109	* mpn/arm/dive_1.asm, mpn/arm/invert_limb.asm: Use RODATA.
3110	* acinclude.m4 ([long long reliability tests]): Declare functions.
3111	(GMP_PROG_CC_FOR_BUILD_WORKS, GMP_PROG_EXEEXT_FOR_BUILD,
3112	GMP_C_FOR_BUILD_ANSI, GMP_CHECK_LIBM_FOR_BUILD): Replace exit(0) with
3113	return 0, no declaration needed.
3114	(GMP_CHECK_LIBM_FOR_BUILD): Include <math.h> to declare log.
3115
31162014-03-30  Marc Glisse  <marc.glisse@inria.fr>
3117
3118	* README: Remove mention to Berkeley MP compatibility.
3119
31202014-03-26  Torbjorn Granlund  <tege@gmplib.org>
3121
3122	* mpn/powerpc64/mode64/gcd_1.asm: Provide default for
3123	BMOD_1_TO_MOD_1_THRESHOLD.
3124
31252014-03-24  Torbjorn Granlund  <tege@gmplib.org>
3126
3127	* Version 6.0.0 released.
3128
3129	* mpn: Update countless gmp-mparam.h files.
3130
31312014-03-22  Torbjorn Granlund  <tege@gmplib.org>
3132
3133	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
3134	* gmp-h.in: Bump version.
3135
31362014-03-17  Torbjorn Granlund  <tege@gmplib.org>
3137
3138	* configure.ac: Remove clipper, i960, ns32k, pyr, a29k, z8000.
3139	* mpn/clipper: Remove directory and all its files.
3140	* mpn/i960: Likewise.
3141	* mpn/ns32k: Likewise.
3142	* mpn/pyr: Likewise.
3143	* mpn/a29k: Likewise.
3144	* mpn/z8000: Likewise.
3145	* mpn/Makefile.am (TARG_DIST): Purge removed directories.
3146	* doc/gmp.texi: Remove special mentions of removed architectures.
3147
31482014-03-12  Torbjorn Granlund  <tege@gmplib.org>
3149
3150	* mpn/x86/bd2/gmp-mparam.h: New file.
3151	* mpn/x86_64/bd2/gmp-mparam.h: New file.
3152
31532014-03-06  Niels Möller  <nisse@lysator.liu.se>
3154
3155	* tests/mpz/t-pprime_p.c (check_composites): New function.
3156	(check_primes): New function.
3157	(main): Call them. Also use TESTS_REPS.
3158
31592014-03-01  Niels Möller  <nisse@lysator.liu.se>
3160
3161	* mpn/generic/sec_powm.c (mpn_sec_powm): Clarify comment and
3162	asserts.
3163
31642014-02-28  Torbjorn Granlund  <tege@gmplib.org>
3165
3166	* mpn/x86_64/fat/fat.c (fake_cpuid): Handle id 7, make bold claims.
3167
31682014-02-27  Torbjorn Granlund  <tege@gmplib.org>
3169
3170	* mpn/x86_64/fat/fat_entry.asm: Zero ecx for the benefit of new BMI2
3171	feature test.
3172
3173	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Run CPUVEC_SETUP_coreihwl
3174	conditionally on BMI2 availability.
3175
3176	* config.guess: Revert "coreihwl" to "coreisbr" if cpuid indicates that
3177	BMI2 is missing.
3178	(x86 cpuid, 2 variants): Zero ecx for the benefit of new BMI2 feature
3179	test.
3180
31812014-02-17  Niels Möller  <nisse@lysator.liu.se>
3182
3183	* mpn/generic/div_qr_1.c (mpn_div_qr_1): Revert yesterday's fix.
3184	Hopefully no longer needed.
3185
3186	* mpn/s390_64/gmp-mparam.h (DIV_QR_1_NORM_THRESHOLD): Up to 1.
3187	* mpn/s390_64/z10/gmp-mparam.h (DIV_QR_1_NORM_THRESHOLD): Up to 1.
3188
3189	* tune/tuneup.c (tune_div_qr_1): Ensure DIV_QR_1_NORM_THRESHOLD,
3190	DIV_QR_1_UNNORM_THRESHOLD >= 1.
3191
31922014-02-16 Marco Bodrato <bodrato@mail.dm.unipi.it>
3193
3194	* mpn/generic/div_qr_1.c: Disallow DIV_QR_1_NORM_THRESHOLD==0.
3195
31962014-02-15  Torbjorn Granlund  <tege@gmplib.org>
3197
3198	* tests/mpn/t-div.c: Fix typo.
3199
32002014-02-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
3201
3202	* doc/gmp.texi (mpz_roinit_n, MPZ_ROINIT_N): Document that
3203	at least a readable limb is required.
3204
32052014-02-14  Niels Möller  <nisse@lysator.liu.se>
3206
3207	* doc/gmp.texi (Low-level Functions): Update docs for
3208	mpn_sec_powm, to specify that left-over exponent bits must be
3209	zero.
3210
32112014-02-11  Niels Möller  <nisse@lysator.liu.se>
3212
3213	* Makefile.am (EXTRA_DIST): Distribute COPYING.LESSERv3,
3214	COPYINGv2, and COPYINGv3.
3215
3216	* doc/gmp.texi (Low-level Functions): Updated mpn_sec_powm docs.
3217
3218	* mpn/generic/sec_powm.c (mpn_sec_powm): Replaced exponent limb
3219	count argument by bit count. Don't leak high exponent bits, and
3220	drop the requirement that the most significant exponent limb is
3221	non-zero.
3222	(mpn_sec_powm_itch): Analogous interface change.
3223	* gmp-h.in: Updated prototypes.
3224	* mpz/powm_sec.c (mpz_powm_sec): Update mpn_sec_powm* calls.
3225	* tune/tuneup.c (tune_powm_sec): Likewise. Also deleted code
3226	fiddling with the high exponent bits.
3227
32282014-02-09  Niels Möller  <nisse@lysator.liu.se>
3229
3230	* tune/tuneup.c (tune_powm_sec): Avoid timing of the nonsensical
3231	parameters nbits = 1, winsize = 2. Decrement tabulated values, to
3232	better match the > comparison when the table is used.
3233
3234	* mpn/generic/sec_powm.c (win_size): Comment why we always get
3235	win_size(eb) <= eb. Make the table const.
3236	(mpn_sec_powm): Deleted handling of winsize > initial ebi. For
3237	now, replaced with an ASSERT_ALWAYS.
3238
32392014-02-08  Niels Möller  <nisse@lysator.liu.se>
3240
3241	* mpn/generic/sec_invert.c (mpn_cnd_neg_itch): #if:ed out unused
3242	function.
3243
3244	* mpn/generic/sec_div.c: Simplified code for the normalized case.
3245
3246	* tests/mpn/t-div.c (main): Test mpn_sec_div_qr and mpn_sec_div_r
3247	with normalized d.
3248
32492014-02-04  Niels Möller  <nisse@lysator.liu.se>
3250
3251	* doc/gmp.texi (Low-level Functions): Document mpn_sec_add_1 and
3252	mpn_sec_sub_1.
3253
32542014-01-29  Torbjorn Granlund  <tege@gmplib.org>
3255
3256	* doc/gmp.texi (Floating-point Functions): Revise.
3257
32582014-01-29  Niels Möller  <nisse@lysator.liu.se>
3259
3260	* README: Don't refer to specific COPYING* files, instead refer to
3261	manual for details.
3262
3263	* COPYING.LIB: Renamed, to...
3264	* COPYING.LESSERv3: ... new name.
3265	* COPYING: Renamed, to...
3266	* COPYINGv3: ... new name.
3267	* COPYINGv2: New file, GPLv2.
3268
3269	* doc/gmp.texi (Copying): Document dual licensing.
3270
32712014-01-27  Torbjorn Granlund  <tege@gmplib.org>
3272
3273	* Update library files license to use LGPL3+ and GPL2+.
3274
32752014-01-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
3276
3277	* tests/mpn/t-aors_1.c: Check sec_aors_1 red zones (not smart).
3278
3279	* mpn/generic/sec_aors_1.c: Mark the 2nd argument as const.
3280	* gmp-h.in (mpn_sec_add_1, mpn_sec_sub_1): Likewise.
3281
32822014-01-24  Torbjorn Granlund  <tege@gmplib.org>
3283
3284	* mpn/x86_64/fat/fat.c (fake_cpuid_table): Use proper steamroller and
3285	excavator values.
3286
3287	* config.guess: Amend last AMD change.
3288
3289	* mpn/s390_64/lshift.asm: Align loop.
3290	* mpn/s390_64/rshift.asm: Likewise.
3291	* mpn/s390_64/lshiftc.asm: Likewise.
3292	* mpn/s390_64: Add z10 cycle numbers.
3293
32942014-01-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
3295
3296	* printf/repl-vsnprintf.c: Feed case 'z' in switch (type) with case 'z'
3297	in switch (fchar).
3298
32992014-01-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
3300
3301	* acinclude.m4 (GMP_FUNC_VSNPRINTF): Get rid of varargs.
3302
33032014-01-20  Torbjorn Granlund  <tege@gmplib.org>
3304
3305	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Fix duplicate entries for
3306	AMD "jaguar".
3307
3308	* demos/expr: Get rid of varargs code and references.
3309
33102014-01-19  Torbjorn Granlund  <tege@gmplib.org>
3311
3312	* config.guess: Add new AMD CPUs (piledriver, steamroller, excavator,
3313	jaguar).
3314	* config.sub: Corresponding updates.
3315	* configure.ac: Likewise.
3316	* acinclude.m4 (X86_64_PATTERN): Likewise.
3317	* mpn/x86_64/fat/fat.c: Likewise.
3318
3319	* Rename mpn_sec_minvert => mpn_sec_invert, many files affected.
3320	* mpn/generic/sec_invert.c: New name for sec_minvert.c.
3321
3322	* doc/gmp.texi: Undocument mpz_array_init.
3323
3324	* acinclude.m4 (GMP_C_STDARG): Comment out.
3325	* configure.ac: Suppress GMP_C_STDARG invocation.
3326
3327	* Get rid of varargs code and references, many file affected.
3328
3329	* Use mpq_t in favour of MP_RAT, many mpq files affected.
3330
3331	* Get rid of BYTES_PER_MP_LIMB, most files affected.
3332
3333	* mpz/iset.c: Avoid overflow in allocation computation.
3334	* mpz/mul.c: Likewise.
3335	* mpf/init.c: Likewise.
3336	* mpf/init2.c: Likewise.
3337	* mpf/iset.c: Likewise.
3338	* mpf/iset_d.c: Likewise.
3339	* mpf/iset_si.c: Likewise.
3340	* mpf/iset_str.c: Likewise.
3341	* mpf/iset_ui.c: Likewise.
3342
3343	* mpz/array_init.c: Avoid two overflow scenarios in allocation
3344	computation.
3345
3346	* mpn/s390_64/z10/gmp-mparam.h: New file.
3347
3348	* mpz/clears.c: Call __gmp_free_func ourselves instead of via
3349	mpz_clears.
3350	* mpf/clears.c: Analogous change.
3351	* mpq/clears.c: Analogous change.
3352
3353	* mpz/clear.c: Add cast to avoid overflow of (later ignored) argument.
3354	* mpf/clear.c: Likewise.
3355
33562014-01-18  Niels Möller  <nisse@lysator.liu.se>
3357
3358	* tests/mpn/t-aors_1.c: Test also mpn_sec_add_1 and mpn_sec_sub_1.
3359
3360	* tests/mpn/t-minvert.c (main): Pass smallest allowed bit_size
3361	argument to mpn_sec_minvert.
3362
33632014-01-18  Marc Glisse  <marc.glisse@inria.fr>
3364
3365	* doc/gmp.texi (C++ Interface Limitations): Warn against C++11 auto.
3366
33672014-01-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
3368
3369	* tests/t-parity.c: Use 1UL to generate unsigned constants.
3370	* tests/t-constants.c: Disable a non portable (unneeded) check.
3371
33722014-01-18  Niels Möller  <nisse@lysator.liu.se>
3373
3374	* mpn/generic/sec_aors_1.c (mpn_sec_add_1, mpn_sec_sub_1): New
3375	file.
3376
3377	* mpn/generic/sec_minvert.c (mpn_sec_add_1_itch, mpn_sec_add_1):
3378	Deleted static definitions.
3379	(mpn_cnd_swap): Use volatile.
3380
3381	* configure.ac (gmp_mpn_functions): sec_add_1 and sec_sub_1.
3382	(GMP_MULFUNC_CHOICES): Set up for sec_aors_1.
3383
33842014-01-16  Niels Möller  <nisse@lysator.liu.se>
3385
3386	* tune/common.c (speed_mpn_sec_minvert): New function.
3387	* tune/speed.h: Declare it.
3388	(SPEED_ROUTINE_MPN_SEC_MINVERT): New macro.
3389	* tune/speed.c (routine): Added mpn_sec_minvert.
3390
33912014-01-12  Marc Glisse  <marc.glisse@inria.fr>
3392
3393	* demos/expr/expr.h: Add extern "C" for C++.
3394
33952014-01-11  Torbjorn Granlund  <tege@gmplib.org>
3396
3397	* doc/gmp.texi (Notes for Particular Systems): Add items about old
3398	NetBSD and current FreeBSD m4 problems.  Add item about FreeBSD's
3399	broken limits.h.
3400
34012014-01-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
3402
3403	* gmp-impl.h: Declare all _itch functions using ATTRIBUTE_CONST.
3404
34052014-01-05  Torbjorn Granlund  <tege@gmplib.org>
3406
3407	* configure.ac (alpha): Set extra_functions conditionally.
3408
3409	* gmp-h.in (mpn_sec_minvert): Remove formal parameters.
3410
3411	* doc/gmp.texi: Improve doc for several functions.
3412
3413	* mpn/generic/sec_tabselect.c: Declare input arg using 'const'.
3414	* gmp-h.in: Analogous change.
3415
3416	* gmp-h.in: Declare all itch functions using __GMP_ATTRIBUTE_PURE.
3417	* gmp-impl.h: Likewise.
3418
34192014-01-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
3420
3421	* tests/mpn/t-minvert.c: Always compare with mpz_invert results,
3422	add red zone to scratch.
3423	* tests/mpn/t-sizeinbase.c: New test.
3424	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-sizeinbase.c .
3425	* tests/mpn/t-div.c: Use mpn_sec_div_*_itch().
3426
3427	* mpn/generic/pow_1.c: Micro-optimisation.
3428
34292014-01-04  Torbjorn Granlund  <tege@gmplib.org>
3430
3431	* acinclude.m4 (GMP_PROG_M4): Avoid hex output, since case varies.
3432
34332014-01-03  Torbjorn Granlund  <tege@gmplib.org>
3434
3435	* config.guess: Support newer haswell, broadwell, silvermont.
3436	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Likewise.
3437
3438	* acinclude.m4 (GMP_PROG_M4): Check that eval's radix argument work.
3439
3440	* mpz/invert.c: Rely on gcdext for all operands, removing faulty
3441	special case.
3442	* tests/mpz/t-invert.c: Enforce correct behaviour for |mod| = 1.
3443
34442014-01-02  Niels Möller  <nisse@lysator.liu.se>
3445
3446	* doc/gmp.texi (Low-level Functions): Document mpn_sizeinbase.
3447
3448	Enable previously unused mpn_sizeinbase function.
3449	* configure.ac (gmp_mpn_functions): Added sizeinbase.
3450	* gmp-h.in (mpn_sizeinbase): New prototype.
3451
34522014-01-02  Marc Glisse  <marc.glisse@inria.fr>
3453
3454	* gmp-impl.h: Always include <limits.h>.
3455	* tests/mpn/t-get_d.c: Remove comment about <limits.h>
3456
3457	* gmp-h.in (__GMP_USHRT_MAX): Use the promoted type.
3458	* gmp-impl.h (USHRT_HIGHBIT, SHRT_MIN, SHRT_MAX): Likewise.
3459	* tests/t-constants.c: Adapt printf strings.
3460	* tests/t-gmpmax.c: Likewise.
3461
3462	* tests/mpn/t-hgcd_appr.c (hgcd_appr_valid_p): Add parentheses.
3463
34642014-01-01  Torbjorn Granlund  <tege@gmplib.org>
3465
3466	* doc/gmp.texi (Low-level Functions for cryptography): Update interface
3467	for mpn_sec_div_qr and fix typos in mpn_sec_minvert text.
3468
3469	* mpn/generic/sec_div.c: Rewrite to make mpn_sec_div_qr return high
3470	quotient limb.
3471	* gmp-h.in (mpn_sec_div_qr): Update declaration.
3472	* tests/mpn/t-div.c: Adapt.
3473
34742013-12-31  Niels Möller  <nisse@lysator.liu.se>
3475
3476	* doc/gmp.texi (Low-level Functions for cryptography): Document
3477	mpn_sec_minvert.
3478
34792013-12-30  Marc Glisse  <marc.glisse@inria.fr>
3480
3481	* doc/gmp.texi (C++ interface internals): Break long line.
3482
34832013-12-30  Torbjorn Granlund  <tege@gmplib.org>
3484
3485	* doc/gmp.texi (Low-level Functions for cryptography): New section.
3486
34872013-12-29  Niels Möller  <nisse@lysator.liu.se>
3488
3489	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-minvert.
3490	* tests/mpn/t-minvert.c: New file.
3491
3492	* configure.ac (gmp_mpn_functions): Added sec_minvert.
3493	* gmp-h.in (mpn_sec_minvert, mpn_sec_minvert_itch): New
3494	declarations.
3495	* mpn/generic/sec_minvert.c (mpn_sec_minvert)
3496	(mpn_sec_minvert_itch): New functions.
3497	(mpn_sec_add_1, mpn_cnd_neg, mpn_cnd_swap, mpn_sec_eq_ui): New
3498	helper functions.
3499
35002013-12-28  Torbjorn Granlund  <tege@gmplib.org>
3501
3502	* mpn/generic/sec_powm.c: Fix an ASSERT.
3503
3504	* gmp-h.in (mpn_sec_mul, mpn_sec_mul_itch): New declarations.
3505	* gmp-h.in (mpn_sec_sqr, mpn_sec_sqr_itch): Likewise.
3506	* mpn/generic/sec_mul.c: New file.
3507	* mpn/generic/sec_sqr.c: New file.
3508
3509	* gmp-h.in (mpn_sec_powm, mpn_sec_powm_itch): New declarations.
3510	* gmp-h.in (mpn_sec_div_qr, mpn_sec_div_qr_itch): Likewise.
3511	* gmp-h.in (mpn_sec_div_r, mpn_sec_div_r_itch): Likewise.
3512	* gmp-impl: Remove declarations of above functions.
3513
3514	* configure.ac (gmp_mpn_functions): Add sec_mul and sec_sqr.
3515
35162013-12-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
3517
3518	* Update many file's encoding to UTF-8.
3519	* doc/tasks.html: Update <meta content> accordingly.
3520	* doc/projects.html: Likewise.
3521
35222013-12-26  Torbjorn Granlund  <tege@gmplib.org>
3523
3524	* configure.ac: Rename mpn_blah_sec to mpn_sec_blah.
3525	* gmp-impl.h: Corresponding changes.
3526	* mpn/asm-defs.m4: Corresponding changes.
3527	* tune/Makefile.am: Corresponding changes.
3528	* tune/common.c: Corresponding changes.
3529	* tune/speed.c: Corresponding changes.
3530	* tune/speed.h: Corresponding changes.
3531	* tune/tuneup.c: Corresponding changes.
3532	* mpz/powm_sec.c: Update calls.
3533	* tests/mpn/t-div.c: Likewise.
3534
3535	* mpn/generic/sec_powm.c: New name for mpn/generic/powm_sec.c.
3536	* mpn/generic/sec_div.c: New name for mpn/generic/sb_div_sec.c.
3537	* mpn/generic/sec_pi1_div.c: New name for mpn/generic/sbpi1_div_sec.c.
3538	* mpn/generic/sec_tabselect.c: New name for mpn/generic/tabselect.c.
3539
3540	* mpn/alpha/sec_tabselect.asm: New name for tabselect.asm.
3541	* mpn/arm/neon/sec_tabselect.asm: New name for tabselect.asm.
3542	* mpn/arm/sec_tabselect.asm: New name for tabselect.asm.
3543	* mpn/ia64/sec_tabselect.asm: New name for tabselect.asm
3544	* mpn/powerpc32/sec_tabselect.asm: New name for tabselect.asm
3545	* mpn/powerpc64/sec_tabselect.asm: New name for tabselect.asm
3546	* mpn/sparc64/sec_tabselect.asm: New name for tabselect.asm
3547	* mpn/x86/mmx/sec_tabselect.asm: New name for tabselect.asm
3548	* mpn/x86/sec_tabselect.asm: New name for tabselect.asm
3549	* mpn/x86_64/bd1/sec_tabselect.asm: New name for tabselect.asm
3550	* mpn/x86_64/core2/sec_tabselect.asm: New name for tabselect.asm
3551	* mpn/x86_64/coreinhm/sec_tabselect.asm: New name for tabselect.asm
3552	* mpn/x86_64/coreisbr/sec_tabselect.asm: New name for tabselect.asm
3553	* mpn/x86_64/fastsse/sec_tabselect.asm: New name for tabselect.asm
3554	* mpn/x86_64/k10/sec_tabselect.asm: New name for tabselect.asm
3555	* mpn/x86_64/pentium4/sec_tabselect.asm: New name for tabselect.asm
3556	* mpn/x86_64/sec_tabselect.asm: New name for tabselect.asm
3557
35582013-12-25  Torbjorn Granlund  <tege@gmplib.org>
3559
3560	* mpz/powm_sec.c: Handle 0^e mod m specially.
3561	* mpn/generic/powm_sec.c: ASSERT that the base is non-zero.
3562
35632013-12-23  Torbjorn Granlund  <tege@gmplib.org>
3564
3565	* mpn/generic/powm_sec.c (redcify): Use passed scratch instead of
3566	locally allocated.
3567	(mpn_powm_sec_itch): Accommodate mpn_sb_div_r_sec's scratch needs.
3568
35692013-12-20  Mark Sofroniou  <marks@wolfram.com>
3570
3571	* mpn/generic/mul_fft.c: Major overhaul of types.
3572
35732013-12-18  Torbjorn Granlund  <tege@gmplib.org>
3574
3575	* doc/gmp.texi (Low-level Functions): Rewrite mpn_set_str docs.
3576
35772013-12-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3578
3579	* mpn/powerpc32/darwin.m4: Allow (and ignore) optional
3580	'toc' parameter to PROLOGUE_cpu.
3581	* mpn/powerpc32/elf.m4: Likewise.
3582
35832013-12-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3584
3585	* configure.ac: Check for ELFv2 ABI on PowerPC.
3586	* mpn/powerpc64/elf.m4: Set assembler ABI version for ELFv2
3587	and use appropriate PROLOGUE_cpu/EPILOGUE_cpu sequences.
3588	Support optional 'toc' parameter to PROLOGUE_cpu.
3589	* mpn/powerpc64/aix.m4: Allow (and ignore) optional
3590	'toc' parameter to PROLOGUE_cpu.
3591	* mpn/powerpc64/darwin.m4: Likewise.
3592
3593	* mpn/powerpc64/mode64/dive_1.asm (mpn_divexact_1): Add 'toc'
3594	parameter to PROLOGUE.
3595	* mpn/powerpc64/mode64/divrem_1.asm (mpn_divrem_1): Likewise.
3596	* mpn/powerpc64/mode64/divrem_2.asm (mpn_divrem_2): Likewise.
3597	* mpn/powerpc64/mode64/gcd_1.asm (mpn_gcd_1): Likewise.
3598	* mpn/powerpc64/mode64/invert_limb.asm (mpn_invert_limb): Likewise.
3599	* mpn/powerpc64/mode64/mod_1_1.asm (mpn_mod_1_1p_cps): Likewise.
3600	* mpn/powerpc64/mode64/mod_1_4.asm (mpn_mod_1s_4p_cps): Likewise.
3601	* mpn/powerpc64/mode64/mode1o.asm (mpn_modexact_1c_odd): Likewise.
3602	* mpn/powerpc64/mode64/p7/gcd_1.asm (mpn_gcd_1): Likewise.
3603	* mpn/powerpc64/p6/lshift.asm (mpn_lshift): Likewise.
3604	* mpn/powerpc64/p6/lshiftc.asm (mpn_lshiftc): Likewise.
3605	* mpn/powerpc64/p6/rshift.asm (mpn_rshift): Likewise.
3606	* mpn/powerpc64/vmx/popcount.asm (mpn_popcount): Likewise.
3607
36082013-12-07  Niels Möller  <nisse@lysator.liu.se>
3609
3610	* configfsf.sub: Updated to version 2013-10-01, from gnulib.
3611	* configfsf.guess: Updated to version 2013-11-29, from gnulib.
3612
36132013-12-03  Torbjorn Granlund  <tege@gmplib.org>
3614
3615	* mpn/generic/div_qr_1.c: Make constant args asm inlines become limbs.
3616	* mpn/generic/div_qr_1n_pi1.c: Likewise.
3617	* mpn/generic/div_qr_2.c: Likewise.
3618	* mpn/generic/div_qr_2.c: Likewise.
3619	* mpn/generic/mod_1_1.c: Likewise.
3620	* mpn/generic/mod_1_2.c: Likewise.
3621	* mpn/generic/mod_1_3.c: Likewise.
3622	* mpn/generic/mod_1_4.c: Likewise.
3623	* mpn/generic/mulmid_basecase.c: Likewise.
3624	* mpn/generic/mulmod_bnm1.c: Likewise.
3625	* mpn/generic/sqrmod_bnm1.c: Likewise.
3626	* mpn/sparc64/divrem_1.c: Likewise.
3627	* mpn/sparc64/mod_1_4.c: Likewise.
3628
3629	* mpn/generic/toom_interpolate_7pts.c (BINVERT_15): Fix typo.
3630
36312013-11-11  Torbjorn Granlund  <tege@gmplib.org>
3632
3633	* mpn/x86_64/dos64.m4 (CALL): Provide to override default.
3634
36352013-11-08  Torbjorn Granlund  <tege@gmplib.org>
3636
3637	* mpn/x86_64/x86_64-defs.m4 (CALL): Swap PIC test and macro defn.
3638
3639	* mpn/generic/div_qr_2.c: Test HAVE_HOST_CPU_FAMILY_x86, not i386.
3640
3641	* doc/gmp.texi: Update many URLs.
3642
36432013-11-04  Torbjorn Granlund  <tege@gmplib.org>
3644
3645	* configure.ac: Set symbol OPENBSD for x86-openbsd hosts.
3646	* mpn/x86_64/fat/fat_entry.asm (PRETEND_PIC): New name for
3647	PIC_OR_DARWIN.
3648	(PRETEND_PIC): Set also for OPENBSD.
3649
36502013-10-29  Torbjorn Granlund  <tege@gmplib.org>
3651
3652	* printf/doprnt.c (__gmp_doprnt): Use memcpy instead of strcpy.
3653
36542013-10-24  Torbjorn Granlund  <tege@gmplib.org>
3655
3656	* mpn/generic/div_qr_1u_pi2.c: New file.
3657	* mpn/generic/div_qr_1n_pi2.c: New file.
3658
36592013-10-24  Niels Möller  <nisse@lysator.liu.se>
3660
3661	* mpn/x86_64/div_qr_1n_pi1.asm: Bugfixes, for case n == 1 and
3662	in-place operation.
3663	* mpn/x86_64/k8/div_qr_1n_pi1.asm: Likewise.
3664
3665	* mpn/generic/div_qr_1n_pi1.c (mpn_div_qr_1n_pi1): Bug fixes,
3666	off-by-one MPN_INCR_U, and support for in-place operation.
3667
36682013-10-24  Torbjorn Granlund  <tege@gmplib.org>
3669
3670	* mpn/x86/fat/fat.c (fake_cpuid_table): Add Haswell.
3671
36722013-10-23  Torbjorn Granlund  <tege@gmplib.org>
3673
3674	* mpn/x86_64/x86_64-defs.m4 (oplist): New define, data from `regnum'.
3675	(regnum): Use x86_lookup, feed oplist.
3676
36772013-10-22  Niels Möller  <nisse@lysator.liu.se>
3678
3679	* tests/devel/try.c: Support mpn_div_qr_1n_pi1.
3680
3681	* mpn/x86_64/k8/div_qr_1n_pi1.asm: Moved the below k10 file here.
3682	Applied tweak from Torbjörn to get it to run well on k8.
3683
3684	* mpn/x86_64/k10/div_qr_1n_pi1.asm: New file (renamed above).
3685	Differs from generic x86_64 version by using cmov.
3686
3687	* mpn/x86_64/div_qr_1n_pi1.asm: Reordered arguments to second mul.
3688	Deleted misleading cycle annotations.
3689
36902013-10-21  Niels Möller  <nisse@lysator.liu.se>
3691
3692	* configure.ac: Add HAVE_NATIVE_mpn_div_qr_1n_pi1 to config.in.
3693
3694	* mpn/generic/div_qr_1n_pi1.c (mpn_div_qr_1n_pi1): Fix typos
3695	affecting ASSERT.
3696
36972013-10-20  Niels Möller  <nisse@lysator.liu.se>
3698
3699	* mpn/x86_64/div_qr_1n_pi1.asm: New file.
3700
3701	* tune/div_qr_1_tune.c (__gmpn_div_qr_1n_pi1): Check
3702	div_qr_1n_pi1_method only when !HAVE_NATIVE_mpn_div_qr_1n_pi1.
3703
3704	* mpn/asm-defs.m4 (define_mpn): Add div_qr_1n_pi1.
3705
3706	* tune/common.c (speed_mpn_div_qr_1): New function, replacing...
3707	(speed_mpn_div_qr_1n, speed_mpn_div_qr_1u): ... deleted functions
3708	(speed_mpn_div_qr_1n_pi1, speed_mpn_div_qr_1n_pi1_1)
3709	(speed_mpn_div_qr_1n_pi1_2): New functions.
3710	* gmp-impl.h [TUNE_PROGRAM_BUILD]: Declare div_qr_1-related tuning
3711	variables.
3712	* tune/tuneup.c (speed_mpn_div_qr_1_tune, tune_div_qr_1): New
3713	functions.
3714	(div_qr_1n_pi1_method, div_qr_1_norm_threshold)
3715	(div_qr_1_unnorm_threshold): New globals.
3716	* tune/speed.c (routine): Replaced mpn_div_qr_1n and mpn_div_qr_1u
3717	by mpn_div_qr_1, requiring ".r" parameter. Added mpn_div_qr_1n_pi1
3718	and variants.
3719	* tune/speed.h (SPEED_ROUTINE_MPN_DIV_QR_1): Use the "r" parameter
3720	as divisor.
3721	* tune/div_qr_1n_pi1_2.c: New file.
3722	* tune/div_qr_1n_pi1_1.c: New file.
3723	* tune/div_qr_1_tune.c: New file.
3724	* tune/Makefile.am (libspeed_la_SOURCES): Added div_qr_1n_pi1_1.c,
3725	div_qr_1n_pi1_2.c, and div_qr_1_tune.c.
3726
3727	* tune/speed.c (routine): Added mpn_div_qr_1n and mpn_div_qr_1u.
3728	* tune/speed.h (SPEED_ROUTINE_MPN_DIV_QR_1): New macro.
3729	(speed_mpn_div_qr_1n, speed_mpn_div_qr_1u): Declare.
3730	* tune/common.c (speed_mpn_div_qr_1n, speed_mpn_div_qr_1u): New
3731	functions.
3732
3733	* gmp-impl.h (mpn_div_qr_1n_pi1): Declare function.
3734	* gmp-h.in (mpn_div_qr_1): Declare function.
3735	* configure.ac (gmp_mpn_functions): Added div_qr_1 and
3736	div_qr_1n_pi1.
3737	* mpn/generic/div_qr_1.c (mpn_div_qr_1): New file and function.
3738	* mpn/generic/div_qr_1n_pi1.c (mpn_div_qr_1n_pi1): New file and
3739	function.
3740	* tests/mpn/t-div.c (main): Test mpn_div_qr_1.
3741
37422013-10-17  Torbjorn Granlund  <tege@gmplib.org>
3743
3744	* configure.ac (alpha): Pass -mieee via gcc_cflags_maybe.
3745
37462013-10-16  Torbjorn Granlund  <tege@gmplib.org>
3747
3748	* config.guess: Let AMD64 cpuid bit override pessimistic cpu guesses.
3749
3750	* mpn/alpha/unicos.m4 (DATASTART): Accept optional align parameter.
3751	* mpn/alpha/divrem_2.asm: Use provided gp mechanisms.
3752	* mpn/alpha/default.m4 (PROLOGUE): Provide "..ng" post-gp label.
3753	* mpn/alpha/invert_limb.asm: Align table to 8-byte boundary.  Make code
3754	work if table is not fully aligned.  Properly test for BWX.
3755
37562013-10-15  Torbjorn Granlund  <tege@gmplib.org>
3757
3758	* mpn/alpha/default.m4 (DATASTART): Use RODATA instead of DATA;
3759	accept optional align parameter.
3760	* mpn/alpha/invert_limb.asm: Align table.
3761	* mpn/alpha/ev5/diveby3.asm: Likewise.
3762
37632013-10-11  Torbjorn Granlund  <tege@gmplib.org>
3764
3765	* mpn/x86/k7/mod_1_1.asm: Use 'subl' form to avoid ambiguity.
3766	* mpn/x86/k7/mod_1_4.asm: Likewise.
3767
3768	* configure.ac (X86_64_PATTERN): Append "cc" to cclist_64 and
3769	cclist_x32.
3770
37712013-10-08  Torbjorn Granlund  <tege@gmplib.org>
3772	    Marc Glisse  <marc.glisse@inria.fr>
3773
3774	* tests/mpf/reuse.c (main): Compare addresses instead of names.
3775	Use larger numbers for exponents.
3776
37772013-10-08  Marc Glisse  <marc.glisse@inria.fr>
3778
3779	* doc/mdate-sh, doc/texinfo.tex, install-sh, missing, ylwrap: Remove.
3780	* .bootstrap: Use autoreconf (and in particular automake -a).
3781
3782	* gmp-h.in: Remove __need_size_t. Include <stddef.h>, not <cstddef>.
3783
3784	* tests/mpf/reuse.c (main): Use small numbers as exponents.
3785
37862013-10-05  Torbjorn Granlund  <tege@gmplib.org>
3787
3788	* mpn/x86_64/atom/aorsmul_1.asm: Slight tweak.
3789
3790	* doc/gmp.texi (ABI and ISA): Document x32.
3791
3792	* mpn/sparc64/ultrasparct3/dive_1.asm: Use our register names.
3793
37942013-09-24  Torbjorn Granlund  <tege@gmplib.org>
3795
3796	* mpn/x86_64/atom/redc_1.asm: New file.
3797
37982013-09-23  Torbjorn Granlund  <tege@gmplib.org>
3799
3800	* mpn/x86_64/bobcat/redc_1.asm: Make the code for 1 <= n <= 3 work.
3801
38022013-09-22  Torbjorn Granlund  <tege@gmplib.org>
3803
3804	* mpn/x86_64/coreisbr/redc_1.asm: Slightly tweak basecase code.
3805
3806	* mpn/x86_64/core2/redc_1.asm: New file.
3807
3808	* mpn/x86_64/bobcat/redc_1.asm: New file.
3809
38102013-09-21  Torbjorn Granlund  <tege@gmplib.org>
3811
3812	* mpn/x86_64/coreinhm/redc_1.asm: New file.
3813
38142013-09-21  Marc Glisse  <marc.glisse@inria.fr>
3815
3816	* tests/mpn/t-mulmid.c: Cast arguments of printf to int to match %d.
3817	* tests/rand/t-urbui.c: Use 1UL for unsigned constant.
3818	* mpn/generic/get_str.c: Avoid temporarily pointing outside an array.
3819
38202013-09-20  Torbjorn Granlund  <tege@gmplib.org>
3821
3822	* mpn/x86_64/coreisbr/redc_1.asm: New file.
3823
3824	* mpn/x86_64/k8/redc_1.asm: Complete rewrite.
3825
3826	* mpn/x86_64/coreisbr/mullo_basecase.asm: Postpone pushes, short-
3827	circuit a branch.
3828	* mpn/x86_64/coreihwl/mullo_basecase.asm: Short-circuit a branch.
3829
3830	* mpn/x86_64/core2/mullo_basecase.asm: New file.
3831
38322013-09-19  Torbjorn Granlund  <tege@gmplib.org>
3833
3834	* mpn/x86_64/fastsse/copyi-palignr.asm: Allocate more stack under DOS.
3835
38362013-09-18  Torbjorn Granlund  <tege@gmplib.org>
3837
3838	* mpn/x86_64/core2/mul_basecase.asm: New file.
3839	* mpn/x86_64/core2/sqr_basecase.asm: New file.
3840
3841	* mpn/x86_64/coreihwl/mullo_basecase.asm: New file.
3842	* mpn/x86_64/coreisbr/mullo_basecase.asm: New file.
3843
38442013-09-16  Torbjorn Granlund  <tege@gmplib.org>
3845
3846	* mpn/x86_64/fastsse/copyi-palignr.asm: Preserve xmm6-xmm8 under DOS.
3847
38482013-09-15  Torbjorn Granlund  <tege@gmplib.org>
3849
3850	* mpn/x86_64/tabselect.asm: Use R8 for bit testing.
3851
3852	* mpn/x86_64/coreihwl/mul_basecase.asm: Replace mul_1 code.
3853
3854	* mpn/x86_64/coreisbr/aorsmul_1.asm: Rewrite.
3855
38562013-09-12  Torbjorn Granlund  <tege@gmplib.org>
3857
3858	* mpn/ia64/gcd_1.asm: Use dep for combining table base and low bits.
3859
3860	* mpn/x86_64/fastsse/com-palignr.asm: Implement temp fix to properly
3861	handle overlap.
3862
38632013-09-10  Torbjorn Granlund  <tege@gmplib.org>
3864
3865	* mpn/x86_64/fastsse/copyi-palignr.asm: Rewrite rp != up (mod 16) code
3866	to make it handle any allowed overlap.
3867
38682013-09-09  Torbjorn Granlund  <tege@gmplib.org>
3869
3870	* mpn/x86_64/atom/com.asm: New file, grabbing fastsse code.
3871
3872	* mpn/x86_64/bd1/copyi.asm: New file, grabbing fastsse code.
3873	* mpn/x86_64/bd1/copyd.asm: Likewise.
3874	* mpn/x86_64/bd1/com.asm: Likewise.
3875
3876	* mpn/x86_64/fastavx/copyi.asm: New file.
3877	* mpn/x86_64/fastavx/copyd.asm: New file.
3878
38792013-09-05  Torbjorn Granlund  <tege@gmplib.org>
3880
3881	* mpn/x86_64/coreihwl/aorsmul_1.asm: Streamline.
3882
38832013-09-04  Torbjorn Granlund  <tege@gmplib.org>
3884
3885	* mpn/x86_64/coreihwl/sqr_basecase.asm: Implement larger "corner".
3886	Misc tuning.
3887
38882013-09-03  Torbjorn Granlund  <tege@gmplib.org>
3889
3890	* mpn/x86_64/coreihwl/redc_1.asm: New file.
3891
3892	* mpn/x86_64/x86_64-defs.m4 (mulx): Handle negative offsets.
3893
38942013-08-31  Torbjorn Granlund  <tege@gmplib.org>
3895
3896	* mpn/x86_64/coreisbr/sqr_basecase.asm: New file.
3897
3898	* mpn/x86_64/sqr_diag_addlsh1.asm: New file.
3899
39002013-08-30  Torbjorn Granlund  <tege@gmplib.org>
3901
3902	* mpn/x86_64/fat/mul_basecase.c: New file.
3903	* mpn/x86_64/fat/sqr_basecase.c: New file.
3904	* mpn/x86_64/fat/mullo_basecase.c: New file.
3905	* mpn/x86_64/fat/redc_1.c: New file.
3906
39072013-08-29  Torbjorn Granlund  <tege@gmplib.org>
3908
3909	* mpn/x86_64/k8/mul_basecase.asm: Move top-level basecase file to k8
3910	subdir.
3911	* mpn/x86_64/k8/sqr_basecase.asm: Likewise.
3912	* mpn/x86_64/k8/redc_1.asm: Likewise.
3913	* mpn/x86_64/k8/mullo_basecase.asm: Likewise.
3914	* mpn/x86_64/k8/mulmid_basecase.asm: Likewise.
3915
3916	* mpn/ia64/aors_n.asm: Clean up some bundlings.
3917
3918	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Support Haswell.
3919	(fake_cpuid_table): Likewise.
3920
3921	* configure.ac (x86): Remove any mulx paths.  Let bwl path = hwl path.
3922	(fat_path): Add coreihwl.
3923
3924	* mpn/x86_64/coreihwl/aorsmul_1.asm: Move from `mulx' directory, use
3925	mulx() macro.
3926	* mpn/x86_64/coreihwl/mul_1.asm: Likewise.
3927	* mpn/x86_64/coreihwl/mul_2.asm: Likewise.
3928	* mpn/x86_64/coreihwl/mul_basecase.asm: Likewise.
3929	* mpn/x86_64/coreihwl/sqr_basecase.asm: Likewise.
3930
3931	* mpn/x86_64/x86_64-defs.m4 (mulx): New macro.
3932	(regnum, regnumh, ix): Supporting macros.
3933
39342013-08-28  Torbjorn Granlund  <tege@gmplib.org>
3935
3936	* mpn/x86_64/coreisbr/divrem_1.asm: New file.
3937
39382013-08-23  Torbjorn Granlund  <tege@gmplib.org>
3939
3940	* mpn/x86_64/fastsse/com-palignr.asm: New file, closely based on
3941	copyi-palignr.asm.
3942
3943	* mpn/x86_64/fastsse/copyi.asm Use "test R8(reg)" instead of "bt".
3944	* mpn/x86_64/fastsse/copyd-palignr.asm: Likewise.
3945	* mpn/x86_64/fastsse/copyi-palignr.asm: Likewise.
3946	* mpn/x86_64/fastsse/lshift-movdqu2.asm: Likewise.
3947	* mpn/x86_64/fastsse/lshiftc-movdqu2.asm: Likewise.
3948	* mpn/x86_64/fastsse/rshift-movdqu2.asm: Likewise.
3949	* mpn/x86_64/fastsse/tabselect.asm: Likewise.
3950
3951	* mpn/sparc64/ultrasparct3/sqr_diag_addlsh1.asm: New file.
3952
3953	* mpn/alpha/aorslsh2_n.asm: New file.
3954	* mpn/alpha/aorslsh1_n.asm: Rewrite.
3955	* mpn/alpha/ev6/aorslsh1_n.asm: New file.
3956
39572013-08-21  Torbjorn Granlund  <tege@gmplib.org>
3958
3959	* mpn/alpha/sqr_diag_addlsh1.asm: New file.
3960	* mpn/alpha/sqr_diagonal.asm: Remove.
3961	* mpn/alpha/ev6/sqr_diagonal.asm: Remove.
3962
39632013-08-20  Torbjorn Granlund  <tege@gmplib.org>
3964
3965	* mpn/powerpc32/sqr_diag_addlsh1.asm: New file.
3966	* mpn/powerpc32/sqr_diagonal.asm: Remove.
3967
39682013-08-15  Torbjorn Granlund  <tege@gmplib.org>
3969
3970	* mpn/x86_64/coreihwl/mulx/sqr_basecase.asm: New file.
3971
39722013-08-05  Torbjorn Granlund  <tege@gmplib.org>
3973
3974	* mpn/x86_64/coreisbr/aors_n.asm: Complete rewrite.
3975
39762013-08-04  Torbjorn Granlund  <tege@gmplib.org>
3977
3978	* mpn/x86_64/coreihwl/mulx/mul_basecase.asm: New file.
3979
3980	* mpn/x86_64/bd1/mul_2.asm: New file.
3981
3982	* mpn/x86_64/coreihwl/gmp-mparam.h: New file.
3983
39842013-08-03  Torbjorn Granlund  <tege@gmplib.org>
3985
3986	* mpn/x86_64/coreihwl/mulx/mul_2.asm: New file.
3987	* mpn/x86_64/coreihwl/mulx/addmul_2.asm: New file.
3988
3989	* mpn/x86_64/coreinhm/aorsmul_1.asm: New file.
3990
3991	* mpn/x86_64/coreisbr/mul_basecase.asm: Save some O(n) and O(1) cycles.
3992
3993	* mpn/x86_64/coreisbr/mul_2.asm: New file.
3994
39952013-08-02  Torbjorn Granlund  <tege@gmplib.org>
3996
3997	* mpn/x86_64/coreisbr/addmul_2.asm: Complete rewrite.
3998
39992013-08-01  Torbjorn Granlund  <tege@gmplib.org>
4000
4001	* mpn/x86_64/bd1/mul_basecase.asm: New file.
4002
4003	* mpn/x86_64/coreisbr/mul_basecase.asm: New file.
4004
4005	* mpn/x86_64/coreihwl/aorsmul_1.asm: New file.
4006
40072013-07-31  Torbjorn Granlund  <tege@gmplib.org>
4008
4009	* mpn/x86_64/atom/mul_2.asm: New file.
4010	* mpn/x86_64/atom/addmul_2.asm: New file.
4011	* mpn/x86_64/atom/mul_1.asm: New file.
4012	* mpn/x86_64/atom/aorsmul_1.asm: New file.
4013
4014	* mpn/x86_64/coreihwl/mul_1.asm: New file.
4015
4016	* configure.ac (x86): Add Haswell-specific path.
4017
4018	* configure.in (fat_functions): Add cnd_add_n, cnd_sub_n..
4019	* gmp-impl.h (struct cpuvec_t): Add fields for new fat functions.
4020	* gmp-impl.h: Adjust corresponding declarations.
4021
4022	* mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): Add new fat functions.
4023	* mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): Likewise.
4024	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec): Likewise.
4025	* mpn/x86/fat/fat.c (__gmpn_cpuvec): Likewise.
4026
40272013-07-30  Torbjorn Granlund  <tege@gmplib.org>
4028
4029	* mpn/x86_64/coreisbr/popcount.asm: New file.
4030
40312013-07-23  Torbjorn Granlund  <tege@gmplib.org>
4032
4033	* mpn/x86_64/bobcat/aors_n.asm: New file.
4034
4035	* mpn/x86_64/pentium4/aorslshC_n.asm: Remove a spurious emms insn.
4036
4037	* mpn/x86_64/bd1/aorrlsh1_n.asm: New file.
4038	* mpn/x86_64/bd1/sublsh1_n.asm: New file.
4039
40402013-07-22  Torbjorn Granlund  <tege@gmplib.org>
4041
4042	* mpn/powerpc64/mode64/mod_1_1.asm: Handle little-endian mode.
4043	* mpn/powerpc64/mode64/mod_1_4.asm: Likewise.
4044
40452013-07-16  Torbjorn Granlund  <tege@gmplib.org>
4046
4047	* doc/gmp.texi: Declare countless of function arguments as 'const'.
4048
40492013-07-15  Torbjorn Granlund  <tege@gmplib.org>
4050
4051	* mpn/x86_64/core2/aors_n.asm: Rewrite.
4052
4053	* mpn/generic/sb_div_sec.c: Compute inverse as floor(B^2/(dh+1)), per
4054	Niels' suggestion.
4055	* mpn/generic/sbpi1_div_sec.c: Remove inverse rounding-up code.
4056
40572013-07-14  Torbjorn Granlund  <tege@gmplib.org>
4058
4059	* mpn/powerpc64/mode64/divrem_1.asm: Remove explicit nop after CALL.
4060	* mpn/powerpc64/mode64/divrem_2.asm: Likewise.
4061	* mpn/powerpc64/mode64/mod_1_1.asm: Likewise.
4062	* mpn/powerpc64/mode64/mod_1_4.asm: Likewise.
4063
40642013-07-13  Torbjorn Granlund  <tege@gmplib.org>
4065
4066	* mpn/x86/atom/cnd_add_n.asm: New file.
4067	* mpn/x86/atom/cnd_sub_n.asm: New file.o
4068
40692013-07-12  Torbjorn Granlund  <tege@gmplib.org>
4070
4071	* mpn/generic/sbpi1_div_sec.c: Partial rewrite.
4072
40732013-07-11  Torbjorn Granlund  <tege@gmplib.org>
4074
4075	* mpn/x86_64/cnd_aors_n.asm: Tweak for better speed on K8, bobcat, bd1,
4076	NHM, Atom.
4077
40782013-07-05  Torbjorn Granlund  <tege@gmplib.org>
4079
4080	* mpn/powerpc64/p7/copyi.asm: Handle n = 0.
4081	* mpn/powerpc64/p7/copyd.asm: Likewise.
4082
40832013-07-04  Torbjorn Granlund  <tege@gmplib.org>
4084
4085	* mpn/powerpc64/mode64/p7/aormul_2.asm: New file.
4086
4087	* mpn/powerpc64/darwin.m4 (EXTRA_REGISTER): New define.
4088	* mpn/powerpc64/aix.m4: New define (actually undefine).
4089	* mpn/powerpc64/elf.m4: Likewise.
4090
40912013-07-03  Torbjorn Granlund  <tege@gmplib.org>
4092
4093	* mpn/powerpc64/com.asm: Rewrite.
4094
4095	* mpn/powerpc64/p7/copyi.asm: New file.
4096	* mpn/powerpc64/p7/copyd.asm: New file.
4097
40982013-07-02  Torbjorn Granlund  <tege@gmplib.org>
4099
4100	* mpn/powerpc64/mode64/gcd_1.asm: New file.
4101	* mpn/powerpc64/mode64/p7/gcd_1.asm: New file.
4102
41032013-07-01  Torbjorn Granlund  <tege@gmplib.org>
4104
4105	* configure.ac: Comment out AC_PROG_F77.
4106
4107	* mpn/powerpc64/mode64/rsh1add_n.asm: Remove.
4108	* mpn/powerpc64/mode64/rsh1sub_n.asm: Remove.
4109	* mpn/powerpc64/mode64/rsh1aors_n.asm: New file, code not based on
4110	removed files.
4111
41122013-06-28  Marc Glisse  <marc.glisse@inria.fr>
4113
4114	* cxx/ismpf.cc: Use GMP_DECIMAL_POINT.
4115	* cxx/osmpf.cc: Likewise.
4116	* tests/cxx/t-locale.cc: Likewise.
4117
41182013-06-28  Torbjorn Granlund  <tege@gmplib.org>
4119
4120	* mpn/powerpc64/mode64/p7/aorsorrlshC_n.asm: New file.
4121	* mpn/powerpc64/mode64/p7/aorsorrlsh1_n.asm: New file.
4122	* mpn/powerpc64/mode64/p7/aorsorrlsh2_n.asm: New file.
4123
4124	* mpn/powerpc64/mode64/aorsorrlshC_n.asm: Use alias regname.
4125
41262013-06-27  Torbjorn Granlund  <tege@gmplib.org>
4127
4128	* mpn/powerpc64/mode64/p7/aors_n.asm: New file.
4129
41302013-06-22  Torbjorn Granlund  <tege@gmplib.org>
4131
4132	* aorslshC_n.asm, aorslsh2_n.asm, aorslsh1_n.asm: Remove.
4133	* aorsorrlshC_n.asm, aorsorrlsh1_n.asm, aorsorrlsh2_n.asm: New files.
4134
41352013-06-19  Torbjorn Granlund  <tege@gmplib.org>
4136
4137	* mpn/powerpc64/p6/lshift.asm: Rewrite switching-into-loop code.
4138	* mpn/powerpc64/p6/rshift.asm: Likewise.
4139	* mpn/powerpc64/p6/lshiftc.asm: Likewise.
4140
41412013-06-17  Torbjorn Granlund  <tege@gmplib.org>
4142
4143	* mpn/powerpc64/p6/lshift.asm: Fix typo in label reference.
4144	For 32-bit mode, zero extend `n' argument and split retval.
4145	* mpn/powerpc64/p6/rshift.asm: Likewise.
4146	* mpn/powerpc64/p6/lshiftc.asm: Likewise.
4147
41482013-06-10  Torbjorn Granlund  <tege@gmplib.org>
4149
4150	* mpn/generic/mu_div_q.c: Remove obsolete comment.
4151
41522013-06-09  Marc Glisse  <marc.glisse@inria.fr>
4153
4154	* mpn/generic/get_d.c (mpn_get_d): Avoid signed overflow.
4155	* mpz/kronzs.c (mpz_kronecker_si): Use ABS_CAST.
4156
41572013-05-31  Torbjorn Granlund  <tege@gmplib.org>
4158
4159	* mpn/generic/mu_div_q.c: Call mpn_mu_divappr_q for entire division,
4160	never just for tail.  (This fixes performance issues at the expense of
4161	memory needs.)
4162
41632013-05-26  Torbjorn Granlund  <tege@gmplib.org>
4164
4165	* configure.ac (*sparc*-*-*): Major overhaul.
4166
41672013-05-22  Torbjorn Granlund  <tege@gmplib.org>
4168
4169	* doc/gmp.texi (Reporting Bugs): Ask for configure's output.
4170
4171	* mpn/ia64/divrem_2.asm: Don't clobber f16-f18.
4172
41732013-05-20  Torbjorn Granlund  <tege@gmplib.org>
4174
4175	* mpn/arm/udiv.asm: Change spacing to work around binutils bug.
4176
41772013-05-16  Torbjorn Granlund  <tege@gmplib.org>
4178
4179	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
4180
4181	* tests/misc.c (tests_hardware_getround, tests_hardware_setround):
4182	Avoid assembly dependency unless WANT_ASSEMBLY.
4183
4184	* configure.ac (WANT_ASSEMBLY): Conditionally define.
4185
41862013-05-14  Torbjorn Granlund  <tege@gmplib.org>
4187
4188	* configure.ac (arm1156): Don't fall back to plain v6 compiler option.
4189
41902013-05-11  Torbjorn Granlund  <tege@gmplib.org>
4191
4192	* mpn/x86_64/coreisbr/mul_1.asm: Handle n = 1 for DOS64.  Streamline.
4193	* mpn/x86_64/coreisbr/aorsmul_1.asm: Streamline.
4194
41952013-05-10  Torbjorn Granlund  <tege@gmplib.org>
4196
4197	* mpn/x86_64/coreisbr/aorsmul_1.asm: Fix, then enable DOS64 support.
4198	* mpn/x86_64/coreisbr/mul_1.asm: Enable DOS64 support.
4199
4200	* mpn/x86/p6/mmx/gmp-mparam.h: Set down SQR_TOOM2_THRESHOLD to parent
4201	directory value.
4202
42032013-05-09  Torbjorn Granlund  <tege@gmplib.org>
4204
4205	* configure.ac (--enable-fake-cpuid): New option.
4206	* mpn/x86_64/fat/fat.c (WANT_FAKE_CPUID): Remove defaulting.
4207	* mpn/x86/fat/fat.c (WANT_FAKE_CPUID): Likewise.
4208
4209	* mpn/x86_64/bd1/mul_1.asm: Fix typo.
4210
42112013-05-07  Torbjorn Granlund  <tege@gmplib.org>
4212
4213	* mpn/x86_64/fat/fat.c (fake_cpuid): Handle 0x80000001 request.
4214	(fake_cpuid_available): Remove unused function.
4215
4216	* mpn/generic/mod_1_1.c: Cast constant udiv_rnnd_preinv arguments.
4217	* mpn/generic/mod_1_2.c: Likewise.
4218	* mpn/generic/mod_1_3.c: Likewise.
4219	* mpn/generic/mod_1_4.c: Likewise.
4220	* mpn/generic/divrem_2.c: Likewise.
4221
42222013-05-06  Torbjorn Granlund  <tege@gmplib.org>
4223
4224	* config.guess (power*): Handle all ppc970 variants.
4225
42262013-05-03  David S. Miller  <davem@davemloft.net>
4227
4228	* tune/common.c (speed_mpn_addlsh1_n, speed_mpn_sublsh1_n,
4229	speed_mpn_rsblsh1_n, speed_mpn_addlsh2_n, speed_mpn_sublsh2_n,
4230	speed_mpn_rsblsh2_n): Don't define if these routines are macros.
4231	* tune/speed.c (routine): Likewise don't table if they are macros.
4232
4233	* mpn/sparc64/ultrasparct3/addmul_1.asm: Add T4 and T3 timings.
4234	* mpn/sparc64/ultrasparct3/aormul_4.asm: Likewise.
4235	* mpn/sparc64/ultrasparct3/aorslsh_n.asm: Likewise.
4236	* mpn/sparc64/ultrasparct3/cnd_aors_n.asm: Likewise.
4237	* mpn/sparc64/ultrasparct3/submul_1.asm: Likewise.
4238
42392013-05-03  Torbjorn Granlund  <tege@gmplib.org>
4240
4241	* mpn/sparc64/ultrasparct3/aorslsh_n.asm: Invoke INITCY where it has
4242	effect.
4243
4244	* gmp-impl.h: Amend last change.
4245	* tests/devel/try.c (choice_array): Don't try to table addlsh1_n etc if
4246	a macro.
4247
42482013-05-02  Torbjorn Granlund  <tege@gmplib.org>
4249
4250	* mpn/arm/copyd.asm: Suppress dead pointer update.
4251	* mpn/arm/copyi.asm: Likewise.
4252	* mpn/arm/neon/logops_n.asm: Likewise.
4253	* mpn/arm/neon/tabselect.asm: Likewise.
4254	* mpn/arm/rshift.asm: Likewise.
4255	* mpn/arm/tabselect.asm: Likewise.
4256	* mpn/arm/v6/dive_1.asm: Likewise
4257	* mpn/arm/v7a/cora15/neon/copyi.asm: Likewise.
4258
4259	* mpn/arm/v7a/cora15/neon/com.asm: New file.
4260
42612013-05-01  Torbjorn Granlund  <tege@gmplib.org>
4262
4263	* mpn/sparc64/ultrasparct3/aormul_4.asm: New file.
4264
4265	* configure.ac (GMP_MULFUNC_CHOICES): Support mul_3 + addmul_3 and
4266	mul_4 + addmul_4.
4267
4268	* mpn/sparc64/ultrasparct3/aormul_2.asm: Optimise lead-in code.
4269
4270	* mpn/sparc64/ultrasparct3/missing.m4 (addxccc): Allow g2 as input.
4271	(umulxhi): Save and restore o7 to allow it as in/out parameter.
4272
42732013-04-29  Torbjorn Granlund  <tege@gmplib.org>
4274
4275	* mpn/arm/v7a/cora15/cnd_aors_n.asm: New file, was mis-named.
4276
4277	* mpn/sparc64/ultrasparct3/addmul_1.asm: Rewrite.
4278
4279	* mpn/sparc64/ultrasparct3/submul_1.asm: Rewrite.
4280
4281	* mpn/sparc64/ultrasparct3/cnd_aors_n.asm: New file.
4282
4283	* gmp-impl.h: Override mpn_addlsh1_n, mpn_addlsh2_n, mpn_sublsh1_n, etc
4284	with mpn_addlsh_n, etc when !HAVE_NATIVE the former but HAVE_NATIVE the
4285	latter.
4286
4287	* mpn/sparc64/ultrasparct3/aorslsh_n.asm: New file.
4288
4289	* configure.ac (sparc-*-*): Recognise t5 along with t3 and t4.
4290	Remove sparc64/ultrasparct1 from path_64 for T3, T3, and T5.
4291
42922013-04-27  Mike Frysinger  <vapier@gentoo.org>
4293
4294	* configure.ac (arm*-*-*): Set up path also for plainest CPU variants.
4295
42962013-04-27  Torbjorn Granlund  <tege@gmplib.org>
4297
4298	* mpn/arm/v6/popham.asm: New file.
4299
4300	* mpn/arm/v7a/cora15/cnd-aors_n.asm: New file.
4301
43022013-04-25  Torbjorn Granlund  <tege@gmplib.org>
4303
4304	* mpn/arm/mod_34lsub1.asm: Clear carry smarter.
4305
4306	* mpn/arm/v7a/cora15/logops_n.asm: Conditionally suppress conditionally
4307	used code.
4308
4309	* mpn/arm/v7a/cora15/submul_1.asm: New file.
4310
43112013-04-24  Torbjorn Granlund  <tege@gmplib.org>
4312
4313	* mpn/arm/v7a/cora15/com.asm: New file.
4314
4315	* mpn/arm/v7a/cora15/logops_n.asm: New file.
4316
43172013-04-19  Torbjorn Granlund  <tege@gmplib.org>
4318
4319	* mpn/arm/v7a/cora15/aors_n.asm: New file.
4320
4321	* mpn/arm/v7a/cora15/addmul_1.asm: Rewrite.
4322
43232013-04-18  Torbjorn Granlund  <tege@gmplib.org>
4324
4325	* mpn/alpha/tabselect.asm: New file.
4326
43272013-04-17  Torbjorn Granlund  <tege@gmplib.org>
4328
4329	* mpn/powerpc32/tabselect.asm: New file.
4330
4331	* longlong.h (arm64 count_trailing_zeros): New.
4332
4333	* mpn/arm64/invert_limb.asm: New file.
4334
4335	* mpn/generic/dive_1.c: Rewrite to use Hensel division also for
4336	size = 1.
4337
4338	* mpn/generic/mod_1_1.c (add_mssaaaa): Provide VIS3 variant.
4339
4340	* configure.ac: Remove "missing" from extra_functions_64 for coreibwl.
4341
4342	* mpn/sparc64/ultrasparct3/mul_1.asm: Decrease loop alignment.
4343	* mpn/sparc64/ultrasparct3/aormul_2.asm: Likewise.
4344
43452013-04-16  Torbjorn Granlund  <tege@gmplib.org>
4346
4347	* mpn/alpha/invert_limb.asm: Generate table.
4348	* mpn/powerpc64/mode64/invert_limb.asm: Likewise.
4349	* mpn/s390_64/invert_limb.asm: Likewise.
4350	* mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise.
4351	* mpn/x86_64/invert_limb_table.asm: Likewise.
4352
43532013-04-15  David S. Miller  <davem@davemloft.net>
4354
4355	* mpn/sparc32/sparc-defs.m4 (LEA64): New macro.
4356	* mpn/sparc64/gcd_1.asm: Use it.
4357	* mpn/sparc64/ultrasparct3/dive_1.asm: Likewise.
4358	* mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise.
4359	* mpn/sparc64/ultrasparct3/mode1o.asm: Likewise.
4360
4361	* mpn/sparc64/gcd_1.asm: Use RODATA, TYPE, and SIZE.
4362
43632013-04-15  Torbjorn Granlund  <tege@gmplib.org>
4364
4365	* mpn/sparc64/ultrasparct3/invert_limb.asm: Avoid addend for GOT entry,
4366	it is not portable.
4367
4368	* mpn/sparc64/tabselect.asm: New file.
4369
4370	* mpn/x86/mmx/tabselect.asm: New file.
4371	* configure.ac (x86): Add x86/mmx to path for relevant CPUs.
4372
4373	* mpn/sparc64/gcd_1.asm: Use rdpc for PIC.
4374	* mpn/sparc64/ultrasparct3/mode1o.asm: Use rdpc for PIC.
4375	* mpn/sparc64/ultrasparct3/dive_1.asm: Use rdpc for PIC.
4376	* mpn/sparc64/ultrasparct3/invert_limb.asm: Handle PIC, use rdpc.
4377
4378	* Revert remaining parts of recent sparc LEA changes.
4379
43802013-04-14  David S. Miller  <davem@davemloft.net>
4381
4382	* mpn/sparc32/v9/sqr_diagonal.asm: Revert LEA and INT32 changes.
4383	* mpn/sparc64/gcd_1.asm: Likewise.
4384
43852013-04-13  Torbjorn Granlund  <tege@gmplib.org>
4386
4387	* mpn/x86_64/bd1/tabselect.asm: New file.
4388	* mpn/x86_64/coreisbr/tabselect.asm: New file.
4389	* mpn/x86_64/k10/tabselect.asm: New file.
4390	* mpn/x86_64/coreinhm/tabselect.asm: New file.
4391	* mpn/x86_64/core2/tabselect.asm: New file.
4392	* mpn/x86_64/pentium4/tabselect.asm: New file.
4393
4394	* mpn/x86_64/fastsse/tabselect.asm: New file.
4395	* mpn/arm/neon/tabselect.asm: Rewrite.
4396	* mpn/arm/tabselect.asm: Rewrite.
4397	* mpn/powerpc64/tabselect.asm: Rewrite.
4398	* mpn/x86_64/tabselect.asm: Rewrite.
4399
4400	* tune/speed.h (SPEED_ROUTINE_MPN_TABSELECT): Implement special code,
4401	making .r argument be table width.
4402
44032013-04-11  David S. Miller  <davem@davemloft.net>
4404
4405	* mpn/sparc32/sparc-defs.m4 (LEA): Remove unused local label.
4406	(LEA_LEAF): Likewise.
4407
44082013-04-11  Niels Möller  <nisse@lysator.liu.se>
4409
4410	* mpn/arm/v6/submul_1.asm: New file, using the corresponding
4411	addmul_1 loop + complement trick.
4412
44132013-04-10  David S. Miller  <davem@davemloft.net>
4414
4415	* acinclude.m4 (GMP_ASM_SPARC_GOTDATA,
4416	GMP_ASM_SPARC_SHARED_THUNKS): New feature tests.
4417	* configure.ac: Call GMP_ASM_SPARC_GOTDATA and
4418	GMP_ASM_SPARC_SHARED_THUNKS on sparc.
4419	* mpn/sparc32/sparc-defs.m4 (LEA, LEA_LEAF, LEA_THUNK): New macros.
4420	* mpn/sparc32/udiv.asm: Convert over to LEA, LEA_LEAF, and LEA_THUNK.
4421	* mpn/sparc32/v8/addmul_1.asm: Likewise.
4422	* mpn/sparc32/v8/mul_1.asm: Likewise.
4423	* mpn/sparc32/v8/supersparc/udiv.asm: Likewise.
4424	* mpn/sparc32/v8/udiv.asm: Likewise.
4425	* mpn/sparc64/gcd_1.asm: Likewise.
4426	* mpn/sparc64/ultrasparct3/dive_1.asm: Likewise.
4427	* mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise.
4428	* mpn/sparc64/ultrasparct3/mode1o.asm: Likewise.
4429	* mpn/sparc32/v9/sqr_diagonal.asm: Likewise and use INT32.
4430
44312013-04-09  Torbjorn Granlund  <tege@gmplib.org>
4432
4433	* longlong.h (sparc64): Test __VIS__ instead of __sparc_vis3.
4434
4435	* config.guess (sparc*): Invoke set_cc_for_build to get $dummy.
4436
44372013-04-08  Torbjorn Granlund  <tege@gmplib.org>
4438
4439	* config.guess: Rework tmp file names, make sure to remove tmp files.
4440
4441	* mpn/arm/dive_1.asm: Rewrite count-trailing-zeros code, using private
4442	table.
4443
4444	* mpn/arm: Canonicalise arm assembly to use old style "mov ... lsl" for
4445	shift ops.
4446
44472013-04-07  Torbjorn Granlund  <tege@gmplib.org>
4448
4449	* mpn/sparc64/ultrasparct3/mod_34lsub1.asm: New file.
4450
4451	* longlong.h (sparc64): Define umul_ppmm, add_ssaaaa, and
4452	count_leading_zeros conditionally under the symbol __sparc_vis3.
4453
4454	* mpn/arm/dive_1.asm: New file.
4455	* mpn/arm/v6/dive_1.asm: New file.
4456
4457	* mpn/arm/v6t2/mode1o.asm: Make trivial change to avoid v6t2...
4458	* mpn/arm/v6/mode1o.asm: ...instruction, move file accordingly.
4459
4460	* mpn/powerpc64/mode64/invert_limb.asm: Put all multiplies low-limb first.
4461
44622013-04-04  David S. Miller  <davem@davemloft.net>
4463
4464	* mpn/sparc64/ultrasparct3/add_n.asm: Rewrite.
4465	* mpn/sparc64/ultrasparct3/sub_n.asm: Rewrite.
4466
4467	* mpn/sparc64/ultrasparct3/invert_limb.asm: Align table.
4468
44692013-04-04  Torbjorn Granlund  <tege@gmplib.org>
4470
4471	* mpn/sparc32/sparc-defs.m4: Provide dummy lzcnt.
4472
4473	* tests/mpn/logic.c: Seed using RANDS, then use mpz_rrandomb.
4474
4475	* tests/mpn/t-div.c (random_word): Remove.  Let callers invoke urandom.
4476
4477	* mpn/sparc64/ultrasparct3/mul_1.asm: Rewrite.
4478
4479	* mpn/sparc64/ultrasparct3/bdiv_dbm1c.asm: New file.
4480	* mpn/sparc64/ultrasparct3/dive_1.asm: New file.
4481	* mpn/sparc64/ultrasparct3/invert_limb.asm: New file.
4482	* mpn/sparc64/ultrasparct3/mod_1_4.asm: New file.
4483	* mpn/sparc64/ultrasparct3/mode1o.asm: New file.
4484
44852013-04-03  Torbjorn Granlund  <tege@gmplib.org>
4486
4487	* mpn/sparc64/ultrasparct3/aormul_2.asm: Reschedule for better speed.
4488
44892013-04-02  Torbjorn Granlund  <tege@gmplib.org>
4490
4491	* mpn/sparc64/ultrasparct3/missing.m4: Misc tweaks.
4492	 (lzcnt): New.
4493	* mpn/sparc64/ultrasparct3/missing.asm (__gmpn_lzcnt): New function.
4494
4495	* mpn/sparc32/sparc-defs.m4: Put FAKE_T3 stuff here...
4496	* mpn/sparc64/ultrasparct3/aormul_2.asm: ...moved from here.
4497
4498	* mpn/sparc64/ultrasparc1234/lshift.asm: Remove.
4499	* mpn/sparc64/ultrasparc1234/rshift.asm: Remove.
4500
45012013-04-01  Torbjorn Granlund  <tege@gmplib.org>
4502
4503	* mpn/sparc64/ultrasparct3/missing.m4 (umulxhi): Don't clobber retaddr,
4504	allowing use in functions that does not do save/restore.
4505
4506	* mpn/sparc64/gcd_1.asm: Tweak for tighter loop.
4507
45082013-03-31  David S. Miller  <davem@davemloft.net>
4509
4510	* mpn/sparc64/lshift.asm: New file.
4511	* mpn/sparc64/rshift.asm: New file.
4512	* mpn/sparc64/lshiftc.asm: New file.
4513
45142013-03-31  Torbjorn Granlund  <tege@gmplib.org>
4515
4516	* mpn/sparc64/ultrasparct1/lshift.asm: Remove.
4517	* mpn/sparc64/ultrasparct1/rshift.asm: Remove.
4518	* mpn/sparc64/ultrasparct1/lshiftc.asm: Remove.
4519
45202013-03-29  Torbjorn Granlund  <tege@gmplib.org>
4521
4522	* mpn/sparc64/ultrasparct3/aormul_2.asm: Always do mulx before umulxhi.
4523
45242013-03-28  Torbjorn Granlund  <tege@gmplib.org>
4525
4526	* mpn/sparc64/mod_1_4.c (mpn_mod_1s_4p): Make precomputed arg 'const'.
4527	(mpn_mod_1s_4p_cps): Update from generic code.
4528
45292013-03-27  Torbjorn Granlund  <tege@gmplib.org>
4530
4531	* mpn/generic/trialdiv.c: Make variables 'const' to match tables.
4532
4533	* mpn/generic/mod_1_1.c (mpn_mod_1_1p): Make precomputed arg 'const'.
4534	* mpn/generic/mod_1_2.c (mpn_mod_1s_2p): Likewise.
4535	* mpn/generic/mod_1_3.c (mpn_mod_1s_3p): Likewise.
4536	* mpn/generic/mod_1_4.c (mpn_mod_1s_4p): Likewise.
4537	* gmp-impl.h: Update prototypes.
4538
4539	* mpn/x86_64/mulx/aorsmul_1.asm: New file.
4540	* mpn/x86_64/mulx/addmul_1.asm: Remove.
4541
45422013-03-26  Niels Möller  <nisse@lysator.liu.se>
4543
4544	Make mpn_cnd_add_n and mpn_cnd_sub_n public.
4545	* doc/gmp.texi (Low-level Functions): Document mpn_cnd_add_n and
4546	mpn_cnd_sub_n.
4547	* gmp-h.in (mpn_cnd_add_n, mpn_cnd_sub_n): Moved prototypes
4548	here...
4549	* gmp-impl.h: ... from here.
4550
45512013-03-26  Torbjorn Granlund  <tege@gmplib.org>
4552
4553	* mpn/x86/pentium4/sse2/cnd_add_n.asm: New file.
4554	* mpn/x86/pentium4/sse2/cnd_sub_n.asm: New file.
4555	* mpn/x86/cnd_aors_n.asm: New file.
4556
45572013-03-25  David S. Miller  <davem@davemloft.net>
4558
4559	* mpn/sparc64/ultrasparct3/hamdist.asm: New file.
4560	* mpn/sparc64/ultrasparct3/popcount.asm: New file.
4561
45622013-03-25  Torbjorn Granlund  <tege@gmplib.org>
4563
4564	* mpn/ia64/aorsorrlshC_n.asm: Generalised from aorslshC_n.asm.
4565	* mpn/ia64/aorsorrlsh1_n.asm: Generalised from aorslsh1_n.asm.
4566	* mpn/ia64/aorsorrlsh2_n.asm: Generalised from aorslsh2_n.asm.
4567
45682013-03-24  Torbjorn Granlund  <tege@gmplib.org>
4569
4570	* mpn/arm/v7a/cora15/neon/aorsorrlshC_n.asm: New file.
4571	* mpn/arm/v7a/cora15/neon/aorsorrlsh2_n.asm: New file.
4572	* mpn/arm/v7a/cora15/neon/aorsorrlsh1_n.asm: New file.
4573	* mpn/arm/v7a/cora15/neon/rsh1aors_n.asm: New file.
4574
4575	* configure.ac (GMP_MULFUNC_CHOICES): Support add+sub+rsb lsh files.
4576
4577	* tests/refmpn.c (refmpn_addlsh_nc, refmpn_sublsh_nc): Remove silly
4578	assert of mp_limb being non-negative.
4579
45802013-03-21  Torbjorn Granlund  <tege@gmplib.org>
4581
4582	* mpn/arm/neon/lshiftc.asm: New file.
4583
4584	* mpn/arm/v6/sqr_basecase.asm: Trim 'sqr_diag_addlsh1' loop.
4585
4586	* gen-trialdivtab.c: Output just raw data, remove actual variables.
4587	* mpn/generic/trialdiv.c: Put variables from gen-trialdivtab.c here,
4588	and make them 'const'.
4589
45902013-03-20  Torbjorn Granlund  <tege@gmplib.org>
4591
4592	* config.guess: Rework arm CPU recognition.
4593	* config.sub: Corresponding updates.
4594	* configure.ac: Likewise.
4595
4596	* mpn/x86_64/mulx/adx/addmul_1.asm: Let FAKE_MULXADX be off by default.
4597
4598	* mpn/arm/v7a/cora15/neon/copyi.asm: Move from "..".
4599	* mpn/arm/v7a/cora15/neon/copyd.asm: Likewise.
4600
4601	* config.guess: Tack on "neon" for appropriate arm CPUs.
4602	* configure.ac (arm*-*-*): Recognise neon suffix for a8, a9, and a15.
4603
46042013-03-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
4605
4606	* mpf/fits_u.h: Accept numbers truncating to zero before checking the
4607	sign.
4608	* tests/mpf/t-fits.c: Check new edges.
4609
46102013-03-19  Torbjorn Granlund  <tege@gmplib.org>
4611
4612	* tests/arm32check.c: Get printing of clobbered register right.
4613
4614	* mpn/arm/neon/popcount.asm: New file.
4615	* mpn/arm/neon/hamdist.asm: New file.
4616
4617	* tests/Makefile.am (EXTRA_libtests_la_SOURCES): Add arm32call.asm and
4618	arm32check.c.
4619
46202013-03-18  Torbjorn Granlund  <tege@gmplib.org>
4621
4622	* configure.ac (arm*-*-*): Define CALLING_CONVENTIONS_OBJS.
4623
4624	* tests/arm32call.asm: New file.
4625	* tests/arm32check.c: New file.
4626
4627	* mpn/arm/arm-defs.m4 (LEA): Rewrite to properly handle repeated use.
4628	(EPILOGUE_cpu): Define.
4629
4630	* mpn/arm/v6/addmul_3.asm: Make code work for PIC.
4631
4632	* tests/x86call.asm: Modernise asm syntax.
4633	* tests/amd64call.asm: Likewise.
4634
4635	* mpn/x86/darwin.m4 (m4append): Move definition from here...
4636	* mpn/asm-defs.m4: ...to here.
4637
46382013-03-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
4639
4640	* doc/gmp.texi (--enable-fat): No quote in concept index.
4641
4642	* mpf/swap.c: Reduce the number of variables.
4643
46442012-03-17  Marc Glisse  <marc.glisse@inria.fr>
4645
4646	* tests/cxx/t-do-exceptions-work-at-all-with-this-compiler.cc: New file.
4647	* tests/cxx/Makefile.am: Add new file. Reorder the tests.
4648
46492013-03-17  Torbjorn Granlund  <tege@gmplib.org>
4650
4651	* mpn/generic/mul_fft.c: Use TMP_BALLOC*, but combine several areas.
4652
4653	* mpz/powm_ui.c (mod): Use TMP_BALLOC in mu code.
4654
4655	* mpn/arm/v6/addmul_3.asm: New file.
4656
4657	* mpn/arm/v7a/cora15/copyd.asm: Tweak.
4658
4659	* mpn/arm64/copyi.asm: New file.
4660	* mpn/arm64/copyd.asm: New file.
4661
46622013-03-16  Torbjorn Granlund  <tege@gmplib.org>
4663
4664	* mpn/arm/v6/addmul_2.asm: Tweak for better A9 performance.
4665
46662013-03-14  Torbjorn Granlund  <tege@gmplib.org>
4667
4668	* mpn/ia64/cnd_aors_n.asm: New file.
4669
4670	* mpn/arm64/cnd_aors_n.asm: New file.
4671
4672	* mpn/arm64/aors_n.asm (ADDSUB): Remove unused definition.
4673
4674	* mpn/ia64/aors_n.asm: Remove a redundant ASM_START.
4675
4676	* mpn/arm/cnd_aors_n.asm: Avoid ARM conditional insn execution.
4677
4678	* mpn/x86_64/missing.asm: Move from mulx/adx since we cannot currently
4679	prune missing.asm from path.
4680	* mpn/x86_64/mulx/adx/missing-call.m4: Likewise.
4681	* mpn/x86_64/mulx/adx/missing-inline.m4: Likewise.
4682	* mpn/x86_64/mulx/adx/addmul_1.asm: Update hardwired path.
4683
46842013-03-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
4685
4686	* mpz/cong_2exp.c: Write loops in a cleaner way.
4687	* gmp-impl.h (mpz_zero_p): Likewise.
4688
46892013-03-12  Niels Möller  <nisse@lysator.liu.se>
4690
4691	New names mpn_cnd_add_n and mpn_cnd_sub_n.
4692	* mpn/generic/cnd_add_n.c (mpn_cnd_add_n): Renamed file and
4693	function, from addcnd.c:mpn_addcnd_n.
4694	* mpn/generic/cnd_sub_n.c (mpn_cnd_sub_n): Renamed, from
4695	subcnd.c:mpn_subcnd_n.
4696	* mpn/arm/cnd_aors_n.asm: Renamed file, from aorscnd.asm, and
4697	renamed functions.
4698	* mpn/x86_64/cnd_aors_n.asm: Analogous renaming.
4699	* mpn/powerpc64/mode64/cnd_aors_n.asm: Analogous renaming.
4700	* gmp-impl.h (mpn_cnd_add_n, mpn_cnd_add_n): Updated prototypes
4701	with new names.
4702	* configure.ac: Updated for new names.
4703	* tests/refmpn.c (refmpn_cnd_add_n): Renamed, from refmpn_addcnd_n.
4704	(refmpn_cnd_sub_n): Renamed, from refmpn_subcnd_n.
4705	* tests/tests.h (refmpn_cnd_add_n, refmpn_cnd_sub_n): Updated
4706	prototypes with new names.
4707	* tune/common.c (speed_mpn_cnd_add_n): Renamed, from
4708	speed_mpn_addcnd_n, call mpn_cnd_add_n.
4709	(speed_mpn_cnd_sub_n): Renamed, from speed_mpn_subcnd_n, call
4710	mpn_cnd_sub_n.
4711	* tune/speed.h (speed_mpn_cnd_add_n, speed_mpn_cnd_sub_n): Updated
4712	prototypes with new names.
4713	* tune/speed.c (routine): Updated list with new names.
4714	* tests/devel/try.c: Updated for new mpn_cnd_* names.
4715	* mpn/generic/sbpi1_div_sec.c: Likewise.
4716	* mpn/generic/powm_sec.c: Likewise.
4717
47182013-03-12  Torbjorn Granlund  <tege@gmplib.org>
4719
4720	* configure.ac: Add "missing" to extra_functions_64 for coreibwl.
4721
4722	* mpn/x86_64/mulx/adx/addmul_1.asm: Simplify.  Make FAKE_MULXADX the
4723	default awaiting proper qemu behaviour.
4724
47252013-03-11  Torbjorn Granlund  <tege@gmplib.org>
4726
4727	* mpn/x86_64/aorscnd_n.asm: Read 32 bits for 'n' arguments on DOS64.
4728
4729	* tests/mpz/t-powm_ui.c: Test larger arguments.  General cleanup.
4730
4731	* mpz/powm_ui.c (mod): Adhere to mpn_mu_div_qr's overlap requirements.
4732
47332013-03-10  Niels Möller  <nisse@lysator.liu.se>
4734
4735	* mpn/generic/sbpi1_div_sec.c: Update calls of mpn_addcnd_n and
4736	mpn_subcnd_n.
4737	* mpn/generic/powm_sec.c (MPN_REDC_1_SEC, MPN_REDC_2_SEC)
4738	(mpn_powm_sec): Update calls of mpn_subcnd_n.
4739
4740	* tests/tests.h (refmpn_addcnd_n, refmpn_subcnd_n): Update
4741	declarations.
4742	* tests/refmpn.c (refmpn_addcnd_n, refmpn_subcnd_n): Similar
4743	reorder of arguments.
4744	* tests/devel/try.c (call): Pass condition first, for
4745	TYPE_ADDCND_N and TYPE_SUBCND_N.
4746
4747	* tune/common.c (speed_mpn_addcnd_n, speed_mpn_subcnd_n): Update
4748	to pass condition as first argument.
4749
4750	* gmp-impl.h (mpn_addcnd_n, mpn_subcnd_n): Updated declarations.
4751
4752	* mpn/generic/addcnd_n.c (mpn_addcnd_n): Reordered arguments, make
4753	condition the first argument.
4754	* mpn/generic/subcnd_n.c (mpn_subcnd_n): Likewise.
4755	* mpn/arm/aorscnd_n.asm: Likewise.
4756	* mpn/x86_64/aorscnd_n.asm: Likewise.
4757	* mpn/powerpc64/mode64/aorscnd_n.asm: Likewise.
4758
47592013-03-10  Torbjorn Granlund  <tege@gmplib.org>
4760
4761	* mpn/x86_64/mulx/adx/missing.asm: Simulate some mulx/adx insns.
4762	* mpn/x86_64/mulx/adx/missing-call.m4: Call variant.
4763	* mpn/x86_64/mulx/adx/missing-inline.m4: Inline variant.
4764
4765	* mpn/sparc64/ultrasparct3/missing.asm: Simulate some v9-2011 insns.
4766	* mpn/sparc64/ultrasparct3/missing.m4: Inline or invoke missing.asm for
4767	v9-2011 insn.
4768
4769	* configure.ac: Strip `haswell' from paths for now.
4770
4771	* mpn/x86_64/mulx/addmul_1.asm: New.
4772	* mpn/x86_64/mulx/mul_1.asm: Rewrite file from `haswell' subdir.
4773	* mpn/x86_64/mulx/adx/addmul_1.asm: Likewise.
4774	* mpn/x86_64/haswell: Remove.
4775
4776	* mpn/arm/v7a/cora15/mul_1.asm: New file.
4777	* mpn/arm/v7a/cora15/addmul_1.asm: New file.
4778
47792013-03-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
4780
4781	* tests/mpz/t-cong_2exp.c: Improve coverage.
4782
47832013-03-09  Torbjorn Granlund  <tege@gmplib.org>
4784
4785	* mpn/sparc64/ultrasparc1234/add_n.asm: Use g5 instead of g4.
4786	* mpn/sparc64/ultrasparc1234/sub_n.asm: Likewise.
4787
4788	* mpn/sparc64/ultrasparct3/aormul_2.asm: Fix a typo.
4789
47902013-03-07  Torbjorn Granlund  <tege@gmplib.org>
4791
4792	* mpn/arm/v7a/cora9/gmp-mparam.h: New file.
4793
4794	* configure.ac (GMP_MULFUNC_CHOICES): Support mul_2 + addmul_2.
4795
4796	* mpn/sparc64/ultrasparct3/aormul_2.asm: New file.
4797
4798	* mpn/sparc64/ultrasparct3/submul_1.asm: Optimise out two carry
4799	propagating adds.
4800
48012013-03-06  David Miller  <davem@davemloft.net>
4802
4803	* config.guess: Recognize UltraSparc T4 under Linux.
4804	* configure.ac: Add sparc64/ultrasparct3 to path_64 when T3 or T4.
4805	Append -xarch=v8plusd or -xarch=v9d to command line, as needed.
4806	* mpn/sparc64/ultrasparct3/mul_1.asm: New file.
4807	* mpn/sparc64/ultrasparct3/addmul_1.asm: New file.
4808	* mpn/sparc64/ultrasparct3/submul_1.asm: New file.
4809	* mpn/sparc64/ultrasparct3/add_n.asm: New file.
4810	* mpn/sparc64/ultrasparct3/sub_n.asm: New file.
4811
4812	* mpn/sparc32/ultrasparct1/mul_1.asm: Unroll main loop one time, add
4813	T2/T3/T4 timings.
4814	* mpn/sparc32/ultrasparct1/addmul_1.asm: Likewise.
4815	* mpn/sparc32/ultrasparct1/submul_1.asm: Likewise.
4816
48172013-03-04  Torbjorn Granlund  <tege@gmplib.org>
4818
4819	* mpn/arm/neon/lorrshift.asm: New file.
4820
48212013-03-03  Torbjorn Granlund  <tege@gmplib.org>
4822
4823	* mpn/arm/v7a/cora15/copyd.asm: New file.
4824	* mpn/arm/v7a/cora15/copyi.asm: New file.
4825
4826	* mpn/arm64/logops_n.asm: New file.
4827	* mpn/arm64/gcd_1.asm: New file.
4828	* mpn/arm64/aorsmul_1.asm: New file.
4829	* mpn/arm64/addmul_1.asm: Remove.
4830	* mpn/arm64/aors_n.asm: Complete rewrite.
4831
4832	* mpn/arm/tabselect.asm: New file.
4833	* mpn/arm/neon/tabselect.asm: New file.
4834
4835	* mpn/arm/copyi.asm: Software pipeline.
4836	* mpn/arm/copyd.asm: Likewise.
4837
4838	* config.guess: Rework tmp file handling to resemble configfsf.guess's.
4839
48402013-03-03  Niels Möller  <nisse@lysator.liu.se>
4841
4842	* doc/gmp.texi (Integer Special Functions): Document
4843	mpz_limbs_read, mpz_limbs_write, mpz_limbs_modify,
4844	mpz_limbs_finish, mpz_roinit_n and MPZ_ROINIT_N.
4845
4846	* mpz/roinit_n.c (mpz_roinit_n): Normalize the input.
4847
48482013-02-27  Niels Möller  <nisse@lysator.liu.se>
4849
4850	* tune/common.c (speed_measure): Increase repetition count if we
4851	get a zero measurement.
4852
48532013-02-26  Niels Möller  <nisse@lysator.liu.se>
4854
4855	* tests/mpz/t-limbs.c (check_roinit): Test MPZ_ROINIT_N only if
4856	compiler supports c99.
4857
48582013-02-25  Niels Möller  <nisse@lysator.liu.se>
4859
4860	* mpz/limbs_finish.c (mpz_limbs_finish): New file and function.
4861	* mpz/limbs_modify.c (mpz_limbs_modify): New file and function.
4862	* mpz/limbs_read.c (mpz_limbs_read): New file and function.
4863	* mpz/limbs_write.c (mpz_limbs_write): New file and function.
4864	* mpz/roinit_n.c (mpz_roinit_n): New file and function.
4865	* gmp-h.in: Declare new functions.
4866	(MPZ_ROINIT_N): New macro.
4867	* mpz/Makefile.am (libmpz_la_SOURCES): Added new files.
4868	* Makefile.am (MPZ_OBJECTS): Added new object files.
4869
4870	* tests/mpz/t-limbs.c: New testcase.
4871	* tests/mpz/Makefile.am (check_PROGRAMS): Added t-limbs.
4872
48732013-02-22  Torbjorn Granlund  <tege@gmplib.org>
4874
4875	* configure.ac: Fix typo in adx/mulx path stripping code.
4876	* config.sub: Match coreibwl.
4877
48782013-02-20  Niels Möller  <nisse@lysator.liu.se>
4879
4880	* tests/mpq/t-get_d.c (check_random): Rewrote to make test less
4881	dependent on float operations. Fixes problem with m68k-linux and
4882	extended float precision.
4883
48842013-02-20  Torbjorn Granlund  <tege@gmplib.org>
4885
4886	* mpn/x86_64/haswell/mulx/adx/addmul_1.asm: New file.
4887
4888	* configure.ac: Support coreibwl.  Use proper name for ADX extension.
4889	* acinclude.m4 (GMP_ASM_X86_ADX): Rename from GMP_ASM_X86_ADOX.
4890
4891	* tests/tests.h (TESTS_REPS): Keep count >= 1.
4892
48932013-02-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
4894
4895	* gmpxx.h (mpq_class, mpf_class) [init_ui, init_si, assign_si]:
4896	Optimise _si using _ui for positive arguments.
4897	(__gmp_hypot_function): Use _mul_ui to square an ui, abs for si.
4898
4899	* mpz/remove.c: Delay allocation in the generic case; use swap
4900	instead of set.
4901	* mpn/generic/remove.c: Delay (possibly smaller) allocation.
4902
49032013-02-17  Marc Glisse  <marc.glisse@inria.fr>
4904
4905	* cxx/osdoprnti.cc: Use <stdarg.h> and <string.h> rather than <cstdarg>
4906	and <cstring> (revert 2002-12-21).
4907
4908	* tests/cxx/Makefile.am: Link with libm.
4909	* tests/cxx/t-ops2.cc: Comment about more tests. Use <math.h> rather
4910	than <cmath> and using namespace. Don't include <iostream>.
4911
4912	* gmpxx.h (__GMPXX_BITS_TO_LIMBS, __GMPQ_NUM_DBL_LIMBS,
4913	__GMPQ_DEN_DBL_LIMBS, __GMPXX_TMPQ_D): New macros.
4914	(__gmp_binary_plus, __gmp_binary_minus, __gmp_binary_multiplies,
4915	__gmp_binary_divides, __gmp_binary_equal, __gmp_binary_less,
4916	__gmp_cmp_function): Use __GMPXX_TMPQ_D.
4917	* tests/cxx/t-ops2.cc: Test __GMPXX_TMPQ_D on DBL_MIN, DBL_MAX.
4918
4919	* gmpxx.h (__gmp_binary_multiplies, __gmp_binary_divides): Use
4920	__GMPXX_CONSTANT_TRUE.
4921
49222013-02-16  Marc Glisse  <marc.glisse@inria.fr>
4923
4924	* gmpxx.h: Include <algorithm>.
4925
49262013-02-16  Torbjorn Granlund  <tege@gmplib.org>
4927
4928	* mpn/Makefile.am (TARG_DIST): Add arm64.
4929
4930	* mpn/x86_64/x86_64-defs.m4 (PROTECT): Emit '.hidden' instead of
4931	'.protected" to please Sun's assembler, but also for semantic reasons.
4932
49332013-02-15  Torbjorn Granlund  <tege@gmplib.org>
4934
4935	* configure.ac (arm64*-*-*): Match this.
4936
4937	* mpn/arm64/aors_n.asm: New file.
4938	* mpn/arm64/addmul_1.asm: New file.
4939	* mpn/arm64/mul_1.asm: New file.
4940
49412013-02-15  Marc Glisse  <marc.glisse@inria.fr>
4942
4943	* gmpxx.h (__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS,
4944	__GMPXX_DEFINE_ARITHMETIC_ASSIGNMENTS): New macros.
4945	(mpz_class, mpq_class, mpf_class) [init_ui, init_si, init_d,
4946	assign_ui, assign_si, assign_d]: New functions.
4947	(__gmp_expr::__gmp_expr, __gmp_expr::operator=): Replace with macros.
4948	(__GMPXX_CONSTANT_TRUE): New macro.
4949
49502013-02-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
4951
4952	* gmp-impl.h (NEG_CAST, ABS_CAST): Use __GMP_CAST.
4953	* mpz/fits_s.h: Use NEG_CAST.
4954
49552013-02-14  Marc Glisse  <marc.glisse@inria.fr>
4956
4957	* gmpxx.h (__gmp_binary_greater): Forward to __gmp_binary_less.
4958	(__gmp_binary_equal): Forward to itself after swapping operands.
4959
49602013-02-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
4961
4962	* mp_dv_tab.c (__gmp_digit_value_tab): Remove a line of unused values.
4963	* mpf/set_str.c: Update offset accordingly.
4964	* mpz/inp_str.c: Likewise.
4965	* mpz/set_str.c: Likewise.
4966
4967	* gmp-h.in (mpq_cmp_ui): Optimise comparison with 1/1.
4968	* tests/mpq/t-cmp_ui.c: Test special comparisons: 0/1, 1/1.
4969
4970	* mpz/clrbit.c: Reorganise branches.
4971	* mpz/setbit.c: Likewise.
4972	* mpz/combit.c: Same micro-optimisations as in set/clr.
4973
4974	* mpz/aors_ui.h: No realloc if size was zero.
4975	* mpz/ior.c: Use macros: MPZ_REALLOC and MPN_INCR_U.
4976
4977	* gmp-impl.h (NEG_CAST): New macro, used by ABS_CAST.
4978	* mpq/cmp_si.c: Use NEG_CAST.
4979	* mpz/cmp_si.c: Reorganise branches.
4980
49812013-02-13  Torbjorn Granlund  <tege@gmplib.org>
4982
4983	* acinclude.m4 (GMP_ASM_X86_MULX, GMP_ASM_X86_ADOX): New feature tests.
4984	* configure.ac: Use new feature tests.
4985
4986	* mpn/x86_64/haswell/mulx/mul_1.asm: File moved to cope with older
4987	assemblers.
4988	* configure.ac: Update haswell path to include "mulx".
4989
49902013-02-12  Torbjorn Granlund  <tege@gmplib.org>
4991
4992	* configure.ac: Recognise haswell.
4993	* config.guess: Recognise haswell.
4994	* config.sub: Match haswell.
4995
4996	* mpn/x86_64/haswell/mul_1.asm: New file, mainly for testing HNI.
4997
49982013-02-12 Marco Bodrato <bodrato@mail.dm.unipi.it>
4999
5000	* gmp-impl.h (MPZ_PROVOKE_REALLOC): Remove unused macro.
5001	* gen-fac.c (gen_consts): Remove obsolete code, use swap instead of set.
5002
5003	* mpn/generic/mulmod_bnm1.c: Reorganise branches.
5004
5005	* mpz/bin_ui.c: Avoid a copy when n < 0.
5006	* mpz/mfac_uiui.c: Reduce memory usage.
5007	* mpz/primorial_ui.c: Use MPZ_NEWALLOC.
5008
5009	* mpz/import.c: Use BITS_TO_LIMBS and MPZ_NEWALLOC.
5010	* mpz/inp_raw.c: Likewise.
5011	* mpz/rrandomb.c: Likewise.
5012	* mpz/urandomb.c: Likewise.
5013	* mpn/generic/random2.c: Likewise.
5014
5015	* mpn/generic/brootinv.c: Micro-optimisation.
5016
5017	* mpf/set_str.c: Don't chech base==0 when base is strictly positive.
5018
50192013-02-10  Torbjorn Granlund  <tege@gmplib.org>
5020
5021	* Version 5.1.1 released.
5022
50232013-02-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
5024
5025	* tune/speed.h (SPEED_ROUTINE_MPN_MUL): Use operands from struct s.
5026	* tune/README: Document new parameter syntax mpn_mul.<#> .
5027
50282013-02-06  Niels Möller  <nisse@lysator.liu.se>
5029
5030	* tests/mpz/t-jac.c (check_large_quotients): Rewrote. Now uses a
5031	more efficient method for generating the test inputs.
5032
50332013-02-05  Torbjorn Granlund  <tege@gmplib.org>
5034
5035	* tests/mpn/t-div.c: Limit random dbits to avoid an infinite loop.
5036
50372013-02-03  Torbjorn Granlund  <tege@gmplib.org>
5038
5039	* tests/mpz/reuse.c: Fix typo causing the same negation condition to be
5040	applied to all operands.  Fix condition for when to invoke mpz_remove.
5041	Make different-size random operands.
5042
50432013-02-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
5044
5045	* mpz/remove.c: Correct the sign in case of reuse.
5046
50472013-02-01  Torbjorn Granlund  <tege@gmplib.org>
5048
5049	* gmp-impl.h (DIGITS_IN_BASE_PER_LIMB): Add a cast.
5050	(LIMBS_PER_DIGIT_IN_BASE): Likewise.
5051
5052	* tests/refmpn.c (refmpn_mul): Use toom6h instead of toom44 for the
5053	largest operands.
5054
50552013-01-31  Torbjorn Granlund  <tege@gmplib.org>
5056
5057	* mpn/generic/toom44_mul.c: Revert last change in favour of a simple
5058	change (thanks Marco!).
5059	* mpn/generic/toom4_sqr.c: Likewise.
5060
50612013-01-30  Torbjorn Granlund  <tege@gmplib.org>
5062
5063	* mpn/generic/toom44_mul.c (MAYBE_mul_toom44): Take toom6h and toom8h
5064	into account, using new macro MUL_NEXTALG_THRESHOLD.
5065	* mpn/generic/toom4_sqr.c (MAYBE_sqr_toom4): Likewise.
5066
50672013-01-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
5068
5069	* mpz/remove.c: init+set=init_set, cast before shifting.
5070
5071	* mpz/cmp_si.c: Use ABS_CAST.
5072
50732013-01-26  Torbjorn Granlund  <tege@gmplib.org>
5074
5075	* tests/mpn/logic.c: Set things up to always test library logops, not
5076	gmp-impl.h's inlined variants.  Test also mpn_com.
5077
5078	* tests/mpn/t-mod_1.c: Test also mpn_mod_1s_3p.
5079
5080	* mpn/generic/mod_1_3.c: Swap some lines to make it similar to mod_4.c.
5081
5082	* tests/mpz/reuse.c: Fix typo in last change.
5083
50842013-01-22  Torbjorn Granlund  <tege@gmplib.org>
5085
5086	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
5087	* gmp-h.in: Bump version.
5088
5089	* tests/mpz/reuse.c: Delete always zero 'failures' and code depending
5090	on it.  Replace rotating progress with real measure.
5091
5092	* Makefile.am (check-mini-gmp): Fix typo in last change.
5093
50942013-01-20  Torbjorn Granlund  <tege@gmplib.org>
5095
5096	* Makefile.am (check-mini-gmp): Set also DYLD_LIBRARY_PATH for the
5097	benefit of Darwin.
5098
5099	* tests/mpn/t-div.c: Test mpn_sb_div_qr_sec and mpn_sb_div_r_sec.
5100	(main): Separate divisor into normalised (dnp) and unnormalised (dup),
5101	pass appropriate variant to each function.
5102	(main): Make negative `test' index value mean divisor bits, for better
5103	small operands coverage.
5104	(main): Put random junk at qp[] instead of zeroing.
5105
5106	* tests/mpz/t-remove.c: Back out last change which left `divisor_size'
5107	uninitialised; achieve change's aim with a parameter tweak.
5108
51092013-01-20  Torbjorn Granlund  <tege@gmplib.org>
5110
5111	* tests/memory.c (PTRLIMB): New macro, used for conformant casting.
5112
51132013-01-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
5114
5115	* tests/mpz/t-set_str.c: Check also failing conditions.
5116
5117	* tests/mpz/t-remove.c: Test removal of 1.
5118
51192013-01-18  Torbjorn Granlund  <tege@gmplib.org>
5120
5121	* mpn/generic/set_str.c (normalization_steps): Eliminate set-but-unused
5122	variable.
5123
5124	* tests/tests.h (TESTS_REPS): Fix printf argument type clashes.
5125
51262013-01-15  Torbjorn Granlund  <tege@gmplib.org>
5127
5128	From Mike Frysinger:
5129	* configure.ac: Add x32 ABI for x86_64.
5130
51312013-01-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
5132
5133	* doc/gmp.texi (gmp_version): Remove "was used" repetition.
5134	(Upward compatibility): Mention mpn_bdivmod, GMP 4 -> GMP 5.
5135
51362013-01-13  Marc Glisse  <marc.glisse@inria.fr>
5137
5138	* doc/gmp.texi: Let mpn_sqrtrem reference mpn_perfect_square_p instead
5139	of mpz_perfect_square_p.
5140
51412013-01-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
5142
5143	* mpz/export.c: Less restrictive ASSERTs.
5144
51452013-01-10  Torbjorn Granlund  <tege@gmplib.org>
5146
5147	* Makefile.am (check-mini-gmp): Set LD_LIBRARY_PATH to allow testing
5148	with dynamic main GMP build.
5149
51502013-01-05  Torbjorn Granlund  <tege@gmplib.org>
5151
5152	* longlong.h (aarch64): Make add_ssaaaa and sub_ddmmss actually work.
5153
51542013-01-04  Torbjorn Granlund  <tege@gmplib.org>
5155
5156	From Marko Lindqvist:
5157	* configure.ac: Use AC_CONFIG_HEADERS instead of the obsolete
5158	AM_CONFIG_HEADER.
5159
51602013-01-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
5161
5162	* tests/mpz/bit.c: Wider testing for mpz_combit.
5163	* tests/mpz/logic.c: Check the -2^n case.
5164
5165	* mpz/ior.c: Fixed an allocation bug in the -2^n case.
5166
51672012-12-31  Torbjorn Granlund  <tege@gmplib.org>
5168
5169	* mpn/generic/get_d.c: Minor reorg, add vax D code.
5170
5171	* gmp-impl.h (double_extract): New union type for vax D floats.
5172
5173	* tests/mpq/t-get_d.c (check_random): Limit exponents on vax.
5174
51752012-12-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
5176
5177	* tests/mpz/bit.c (check_clr_extend): Check _set shrink.
5178
51792012-12-29  Torbjorn Granlund  <tege@gmplib.org>
5180
5181	* demos/calc/calc.c: Remove generated file from repo.
5182	* demos/calc/calc.h: Likewise.
5183	* demos/calc/calclex.c: Likewise.
5184
51852012-12-27  Torbjorn Granlund  <tege@gmplib.org>
5186
5187	* mpn/generic/get_d.c: Complete rewrite of non-IEEE code.
5188
5189	* tests/mpq/t-get_d.c (main): Suppress check_random for vax.
5190
51912012-12-25  Torbjorn Granlund  <tege@gmplib.org>
5192
5193	* mpn/x86_64/bdiv_q_1.asm: Use LEA for binvert_limb_table.
5194
51952012-12-23  Torbjorn Granlund  <tege@gmplib.org>
5196
5197	* tests/mpz/t-get_d.c (check_onebit): Decrease vax limit to avoid
5198	overflow in last, unused 'want' value.
5199
5200	* config.guess: Recognise AMD family 22 as a future bobcat.
5201
52022012-12-21  Torbjorn Granlund  <tege@gmplib.org>
5203
5204	* configure.ac: Rename configure.in.
5205
52062012-12-17  Torbjorn Granlund  <tege@gmplib.org>
5207
5208	* Version 5.1.0 released.
5209
5210	* configure.in (none-*-*): Allow this again, but print a warning.
5211
52122012-12-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
5213
5214	* mpz/n_pow_ui.c: Fix typos in an ASSERT.
5215
52162012-12-16  Torbjorn Granlund  <tege@gmplib.org>
5217
5218	* mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr): Explicitly use
5219	MPN_COPY_INCR for slightly overlapping copy.
5220
52212012-12-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
5222
5223	* tests/mpn/toom-sqr-shared.h: Skip ALLOCs if the test is skipped.
5224
52252012-12-13  Torbjorn Granlund  <tege@gmplib.org>
5226
5227	* mpn/x86_64/dos64.m4 (PIC): Move definition early.
5228	(JMPENT): Remove PIC variant.
5229
5230	* mpn/x86_64/darwin.m4 (JUMPTABSECT): Define to .text, instead of
5231	something sensible.
5232
52332012-12-12  Torbjorn Granlund  <tege@gmplib.org>
5234
5235	* mpn/x86_64/x86_64-defs.m4 (JMPENT): New macro.
5236	* mpn/x86_64/dos64.m4: Likewise.
5237	* mpn/x86_64/darwin.m4: Likewise.
5238	* mpn/x86_64/mod_34lsub1.asm: Use JMPENT to properly support PIC.
5239	* mpn/x86_64/mullo_basecase.asm: Likewise.
5240	* mpn/x86_64/sqr_basecase.asm: Likewise.
5241
52422012-12-11  Torbjorn Granlund  <tege@gmplib.org>
5243
5244	* mpn/x86_64/mod_34lsub1.asm: Try different jump table for the benefit
5245	of broken Apple linkers.
5246
52472012-12-09  Torbjorn Granlund  <tege@gmplib.org>
5248
5249	* configure.in: Make GMP_NONSTD_ABI ABI specific.
5250
52512012-12-08  Torbjorn Granlund  <tege@gmplib.org>
5252
5253	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info.
5254	* gmp-h.in: Bump version.
5255
52562012-12-06 Marco Bodrato <bodrato@mail.dm.unipi.it>
5257
5258	* tests/mpq/reuse.c: New test (adapted from mpf/reuse.c).
5259	* tests/mpq/Makefile.am (check_PROGRAMS): Add reuse.
5260
5261	* mpz/abs.c: Use NEWALLOC.
5262	* mpz/neg.c: Likewise.
5263	* mpz/com.c: Reduce branches.
5264
52652012-12-05  Niels Möller  <nisse@lysator.liu.se>
5266
5267	* mpn/generic/brootinv.c (mpn_brootinv): Make valgrind happier, at
5268	the cost of a redundant MPN_ZERO.
5269
5270	* mpz/jacobi.c (mpz_jacobi): Check for asize == 0 or bsize == 0
5271	before using the low limbs.
5272
52732012-12-05  Torbjorn Granlund  <tege@gmplib.org>
5274
5275	* mpn/generic/set_str.c (mpn_dc_set_str): Work around a valgrind issue.
5276
5277	* mpz/powm_ui.c: Don't assume >= 2 limbs in mod argument.
5278
5279	* tests/tests.h (TESTS_REPS): Handle float GMP_CHECK_REPFACTOR.
5280
5281	* longlong.h: Refine cpp test for vax.
5282	* tests/mpn/t-get_d.c: Likewise.
5283	* tests/mpz/t-get_d.c: Likewise.
5284	* tests/mpz/t-cmp_d.c: Likewise.
5285	* tests/mpz/t-get_d.c: Likewise.
5286	* tests/mpq/t-get_d.c: Likewise.
5287	* tests/mpf/t-get_d.c: Likewise.
5288
52892012-11-30  Torbjorn Granlund  <tege@gmplib.org>
5290
5291	* gen-fac.c (gen_consts): Correct printf types.
5292
5293	* mpn/arm/v7a/cora15/gmp-mparam.h: New file.
5294
5295	* configure.in (arm*-*-*): New compiler optional "tune".  Pass value for
5296	selected processors.  Add more specific path components.
5297
52982012-11-29  Torbjorn Granlund  <tege@gmplib.org>
5299
5300	From Andoni Morales Alastruey:
5301	* longlong.h: Conditionalise ARM asm on !__thumb__.
5302
53032012-11-28  Torbjorn Granlund  <tege@gmplib.org>
5304
5305	* config.guess (arm*-*-*): Support specific ARM processors.
5306	* config.sub: Match arm CPUs.
5307	* configure.in (arm*-*-*): Likewise.
5308
5309	* mpz/powm.c: Move new_b out since it lives on through b.
5310
5311	* configure.in (arm*-*-*): Pass -marm to deal with compilers defaulting
5312	to thumb code.
5313
53142012-11-26  Torbjorn Granlund  <tege@gmplib.org>
5315
5316	* tests/cxx/t-ops2.cc (checkz): Reduce huge numbers to avoid vax
5317	overflow.
5318
53192012-11-25  Torbjorn Granlund  <tege@gmplib.org>
5320
5321	* mpn/generic/get_d.c: Reinsert non-IEEE code.
5322
5323	* mpn/vax/add_n.asm: New file.
5324	* mpn/vax/add_n.s: Remove.
5325	* mpn/vax/addmul_1.asm: New file.
5326	* mpn/vax/addmul_1.s: Remove.
5327	* mpn/vax/lshift.asm: New file.
5328	* mpn/vax/lshift.s: Remove.
5329	* mpn/vax/mul_1.asm: New file.
5330	* mpn/vax/mul_1.s: Remove.
5331	* mpn/vax/rshift.asm: New file.
5332	* mpn/vax/rshift.s: Remove.
5333	* mpn/vax/sub_n.asm: New file.
5334	* mpn/vax/sub_n.s: Remove.
5335	* mpn/vax/submul_1.asm: New file.
5336	* mpn/vax/submul_1.s: Remove.
5337
5338	* mpn/vax/elf.m4: New file.
5339	* configure.in (vax*-*-*elf*): New case, grabbing vax/elf.m4.
5340
5341	* tests/mpn/t-get_d.c (check_onebit): Get vax bounds right.
5342	(main): Switch off check_rand for vax.
5343
53442012-11-16  Torbjorn Granlund  <tege@gmplib.org>
5345
5346	* mpn/generic/powm_sec.c (redcify): Use mpn_sb_div_r_sec.
5347
5348	* mpn/generic/sb_div_sec.c: New file.
5349	* mpn/generic/sbpi1_div_sec.c: New file.
5350	* configure.in (gmp_mpn_functions): Add new files.
5351	* gmp-impl.h: Declare new functions.
5352
53532012-11-12  Torbjorn Granlund  <tege@gmplib.org>
5354
5355	* longlong.h: Add ARM64 support.
5356	* longlong.h: Add AVR support.
5357
5358	* mpn/powerpc64/mode64/divrem_1.asm: Tune, simplify.
5359
5360	* mpq/md_2exp.c: Use MPN_COPY_INCR, not MPN_COPY_DECR.
5361	* tests/mpq/t-md_2exp.c (check_random): New function.
5362
53632012-11-10  Torbjorn Granlund  <tege@gmplib.org>
5364
5365	* mpn/generic/remove.c (mpn_bdiv_qr_wrap): Make static.
5366
53672012-11-04  Torbjorn Granlund  <tege@gmplib.org>
5368
5369	* mpz/powm_ui.c: Rewrite.
5370
53712012-11-01  Niels Möller  <nisse@lysator.liu.se>
5372
5373	* mpn/generic/brootinv.c (mpn_brootinv): Input size in limbs
5374	rather than bits. Use single-precision iterations for the first
5375	limb.
5376	* mpn/generic/perfpow.c (is_kth_power): Update mpn_brootinv call.
5377	* tests/mpn/t-brootinv.c (main): Likewise.
5378	* tune/speed.h (SPEED_ROUTINE_MPN_BROOTINV): Likewise.
5379	* gmp-impl.h (mpn_brootinv): Updated prototype.
5380
5381	* mpn/generic/hgcd2.c (mpn_hgcd2): Removed redundant loop exit
5382	tests in the single-precision loop.
5383
5384	* mpz/combit.c (mpz_combit): Rewrite, optimizing for the common
5385	case.
5386
53872012-10-31  Niels Möller  <nisse@lysator.liu.se>
5388
5389	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-brootinv.
5390	* tests/mpn/t-brootinv.c: New file
5391
5392	* mpn/generic/broot.c (mpn_broot_invm1): Avoid a mullo_n in the
5393	loop, and do powering as a plain mpn_sqr followed by mpn_powlo.
5394
5395	* tune/speed.c (routine): Added mpn_broot, mpn_broot_invm1,
5396	mpn_brootinv.
5397
5398	* tune/common.c (speed_mpn_broot, speed_mpn_broot_invm1)
5399	(speed_mpn_brootinv): New functions.
5400	* tune/speed.h (SPEED_ROUTINE_MPN_BROOT)
5401	(SPEED_ROUTINE_MPN_BROOTINV): New macros.
5402
5403	* mpn/generic/broot.c (mpn_broot_invm1): Made non-static (mainly
5404	for benchmarking).
5405	* gmp-impl.h (mpn_broot_invm1): Declare it.
5406
54072012-10-28  Torbjorn Granlund  <tege@gmplib.org>
5408
5409	* configure.in (gmp_mpn_functions): Add new files.
5410	* gmp-impl.h: Declare new functions.
5411	* mpn/generic/perfpow.c: Overhaul.
5412	(binv_root, binv_sqroot): Remove.
5413	* mpn/generic/brootinv.c: New file, code from overhauled binv_root.
5414	* mpn/generic/bsqrtinv.c: New file, code from overhauled binv_sqroot.
5415	* mpn/generic/bsqrt.c: New file.
5416
5417	* tests/mpn/t-broot.c: Add a forgotten TMP_MARK.
5418
54192012-10-28  Niels Möller  <nisse@lysator.liu.se>
5420
5421	* mpn/generic/broot.c (mpn_broot): New file and function.
5422	* configure.in (gmp_mpn_functions): Add broot.
5423	* gmp-impl.h (mpn_broot): Declare.
5424	* tests/mpn/t-broot.c: New testcase.
5425	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-broot.
5426
54272012-10-27  Torbjorn Granlund  <tege@gmplib.org>
5428
5429	* mpn/generic/remove.c: Get remainder allocation right.
5430
54312012-10-25  Torbjorn Granlund  <tege@gmplib.org>
5432
5433	* longlong.h: De-support old POWER asm syntax.
5434
5435	* tests/mpz/t-remove.c: Run more tests, but use a tad smaller operands.
5436
5437	* mpn/generic/remove.c (mpn_bdiv_qr_wrap): New function.
5438	(mpn_remove): Call mpn_bdiv_qr_wrap.
5439	* mpz/remove.c: Enable suppressed mpn_remove call.
5440
54412012-10-17  Torbjorn Granlund  <tege@gmplib.org>
5442
5443	* mpz/powm_ui.c (mpz_powm_ui): Deflect to mpz_powm for large exponent.
5444
54452012-09-10  Torbjorn Granlund  <tege@gmplib.org>
5446
5447	* demos/factorize.c: Rewrite no more current form.  Implement Lucas
5448	prime proving, and make its use the default.
5449	* demos/primes.h: New file.
5450
54512012-08-24  Torbjorn Granlund  <tege@gmplib.org>
5452
5453	* demos/factorize.c: Overhaul.
5454
54552012-08-06 Marco Bodrato <bodrato@mail.dm.unipi.it>
5456
5457	* doc/gmp.texi (mpn_neg): Correctly document returned type.
5458
5459	* gmp-impl.h (_mpz_newalloc, log_n_max): mark with inline (spotted by Niels).
5460
54612012-07-28  Marc Glisse  <marc.glisse@inria.fr>
5462
5463	* gmpxx.h (std::common_type): New partial specializations with builtin
5464	types.
5465	* tests/cxx/t-cxx11.cc: Test it.
5466
54672012-07-21  Torbjorn Granlund  <tege@gmplib.org>
5468
5469	* mpn/powerpc32/vmx/mod_34lsub1.asm: Fix r0 clobbering issue with
5470	"large" code affecting elf+darwin PIC.
5471
54722012-07-21  Marc Glisse  <marc.glisse@inria.fr>
5473
5474	* gmpxx.h (__GMPXX_CONSTANT): Disable for g++-3.4.
5475
54762012-06-26  Torbjorn Granlund  <tege@gmplib.org>
5477
5478	* Makefile.am (LIBMP_LT_*): Remove these.
5479
54802012-06-26  Marc Glisse  <marc.glisse@inria.fr>
5481
5482	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Update comment for 5.1.0.
5483
54842012-06-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
5485
5486	* configure.in (CALLING_CONVENTIONS_OBJS): Disable any use of
5487	assembly code with the --disable-assembly option.
5488	* mpz/oddfac_1.c: Use the ASSERT_CODE macro.
5489	* gen-trialdivtab.c (mpz_log2): Use mpz_sizeinbase (., 2).
5490
5491	* gmp-impl.h (MPN_SIZEINBASE_16): Replace with MPN_SIZEINBASE_2EXP
5492	from mpz/export.c .
5493	* mpz/export.c (MPN_SIZEINBASE_2EXP): Removed.
5494	* mpn/generic/sizeinbase.c: Use MPN_SIZEINBASE.
5495
5496	* mpz/nextprime.c: Use MPN_SIZEINBASE_2EXP to count bits.
5497	* mpn/generic/perfpow.c: Likewise.
5498	* mpn/generic/rootrem.c: Likewise.
5499	* mpz/get_d_2exp.c: Likewise.
5500	* mpn/generic/powm_sec.c: Likewise, nailify.
5501	* mpn/generic/powlo.c: Likewise.
5502	* mpn/generic/powm.c: Likewise.
5503
55042012-06-23  Marc Glisse  <marc.glisse@inria.fr>
5505
5506	* gmpxx.h (numeric_limits): Make content public.
5507	* cxx/limits.cc: New file, proper declarations.
5508	* Makefile.am: List new file.
5509	* cxx/Makefile.am: Likewise.
5510	* cxx/t-misc.cc: Add minimal test for numeric_limits.
5511
55122012-06-09  Marc Glisse  <marc.glisse@inria.fr>
5513
5514	* gmpxx.h (__gmp_resolve_expr::srcptr_type): New typedef.
5515	(__gmp_temp): Wrapper for mp*_class, the constructor copies the
5516	precision of its second argument for mpf_t.
5517	(__gmp_expr::eval(p, prec)): Remove.
5518	(__gmp_expr::eval(p)): Use __gmp_temp.
5519	(__gmp_set_expr): Never pass prec to eval().
5520
55212012-06-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
5522
5523	* gmp-impl.h (__GMP_WITHIN_CONFIGURE): Use the same #if as in gmp-h.in.
5524	(MPN_NORMALIZE_NOT_ZERO): Tighter ASSERT.
5525	(MPZ_NEWALLOC): New macro.
5526	* mpq: Use the new macro when possible.
5527	* mpz/bin_uiui.c: Likewise.
5528	* mpz/oddfac_1.c: Likewise.
5529	* mpz/prodlimbs.c: Likewise.
5530
55312012-06-04  Torbjorn Granlund  <tege@gmplib.org>
5532
5533	* mpn/powerpc64/aix.m4 (ASM_START): Claim machine type "any".
5534
55352012-06-03  Niels Möller  <nisse@lysator.liu.se>
5536
5537	* mpn/generic/gcdext.c (mpn_gcdext): Deleted code for handling
5538	impossible case u1 == 0, Simplified test for unlikely case u0 == 0.
5539
55402012-06-02  Torbjorn Granlund  <tege@gmplib.org>
5541
5542	* mpn/arm/lshiftc.asm: New file.
5543
55442012-06-01  Torbjorn Granlund  <tege@gmplib.org>
5545
5546	* mpn/arm/aorslsh1_n.asm: Use cmp/cmn instead of subs/adds in more
5547	places.
5548
5549	* mpz/get_str.c: Don't strip leading zeros since current mpn_get_str
5550	won't generate any.  Misc streamlining.
5551	* mpz/out_str.c: Analogous changes.
5552
5553	* tests/mpz/io.c: Use a wider range of bases.
5554
5555	* tests/mpz/t-cong.c (check_random): Rewrite random generation for
5556	exponentially distributed operand sizes.
5557
55582012-06-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
5559
5560	* mpq: Use more macros and MPZ_REALLOC return value when possible.
5561
5562	* gmp-impl.h (LIMBS): Removed, was an alias for PTR.
5563	* mpz/combit.c: Use PTR and CNST_LIMB.
5564
5565	* tests/mpn/t-bdiv.c: Test also mpn_bdiv_qr.
5566	* mpn/generic/bdiv_qr.c: Add an ASSERT.
5567
5568	* mpn/generic/remove.c: Add a zero limb to use bdiv_qr...
5569
55702012-05-31  Marc Glisse  <marc.glisse@inria.fr>
5571
5572	* gmpxx.h (mpq_class::mpq_class): Handle mpq_class(0,1).
5573	* tests/cxx/t-constr.cc: Test it.
5574
55752012-05-30  Torbjorn Granlund  <tege@gmplib.org>
5576
5577	* mpn/x86_64 (FUNC_ENTRY): New name for DOS64_ENTRY.
5578	* mpn/x86_64 (FUNC_EXIT): New name for DOS64_EXIT.
5579
55802012-05-29 Marco Bodrato <bodrato@mail.dm.unipi.it>
5581
5582	* mpz/remove.c: Optimise branches.
5583
5584	* mpn/generic/toom6h_mul.c: less branches in the LIKELY balanced path.
5585	* mpn/generic/toom8h_mul.c: Likewise.
5586
55872012-05-29  Torbjorn Granlund  <tege@gmplib.org>
5588
5589	* mpn/arm/v5/mod_1_1.asm: New file.
5590
55912012-05-28  Niels Möller  <nisse@lysator.liu.se>
5592
5593	* mpn/generic/gcdext.c (compute_v): Simplified carry handling a
5594	bit, reduced stated scratch need from 2n+1 to 2n. Also comment and
5595	ASSERT improvements.
5596
55972012-05-27  Torbjorn Granlund  <tege@gmplib.org>
5598
5599	* config.guess: Add new x86 CPUs.
5600	* mpn/x86/fat/fat.c: Likewise.
5601	* mpn/x86_64/fat/fat.c: Likewise.
5602
56032012-05-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
5604
5605	* mpn/x86_64/fat/fat.c: abort iff longmode-capable-bit is turned off.
5606
5607	* mpn/generic/toom8h_mul.c: mark UNLIKELY branches.
5608
56092012-05-26  Torbjorn Granlund  <tege@gmplib.org>
5610
5611	* mpz: Use MPZ_REALLOC return value when possible.
5612
56132012-05-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
5614
5615	* mpz/scan1.c: Simplify, and add a shortcut for scan1(z, 0).
5616
56172012-05-24  Torbjorn Granlund  <tege@gmplib.org>
5618
5619	* mpz/n_pow_ui.c: Cast non-limb count_leading_zeros argument.
5620
56212012-05-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
5622
5623	* mpz/remove.c: Support negative divisor.
5624	* tests/mpz/t-remove.c: Test negative divisor.
5625
56262012-05-23  Torbjorn Granlund  <tege@gmplib.org>
5627
5628	* tests/mpz/reuse.c: Major rewrite.
5629
56302012-05-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
5631
5632	* mpz/sqrt.c: Further simplify.
5633	* mpz/sqrtrem.c: Likewise.
5634
5635	* Mark failing branches with UNLIKELY. Many files affected.
5636
56372012-05-22  Torbjorn Granlund  <tege@gmplib.org>
5638
5639	* mpz/sqrt.c: Allocate less for overlapping operands, simplify.
5640	* mpz/sqrtrem.c: Likewise.
5641
56422012-05-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
5643
5644	* mpn/generic/toom8_sqr.c: Reduce branches for recursion.
5645	* mpn/generic/toom8h_mul.c: Likewise.
5646
5647	* tests/mpn/t-toom8h.c: Don't use GMP_NUMB_BITS when not yet defined.
5648
56492012-05-20  Torbjorn Granlund  <tege@gmplib.org>
5650
5651	* tests/mpz/t-gcd.c: Rewrite.
5652
56532012-05-19  Torbjorn Granlund  <tege@gmplib.org>
5654
5655	* tests/mpz/t-gcd.c: Generate larger operands for better gcd code
5656	coverage; distribute size exponentially.
5657
56582012-05-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
5659
5660	* mpf/pow_ui.c: Simplify.
5661	* tests/mpf/reuse.c (dsi_func): Exercise pow_ui.
5662
5663	* tests/mpf/t-set_ui.c (check_data): LONG_HIGHBIT -> ULONG_HIGHBIT.
5664	* tests/mpf/t-set.c (check_random): New check, both set and init_set.
5665
5666	* tests/cxx/t-ops.cc (check_mpq): Check squaring.
5667	* tests/mpq/t-equal.c (check_various): Check different den-size.
5668
5669	* mpn/generic/mullo_n.c: Disable MAYBE_ if WANT_FAT_BINARY.
5670	* mpz/cmpabs_d.c: Remove an unused branch.
5671
5672	* tests/mpz/t-get_d_2exp.c (check_zero): New check.
5673	* tests/mpz/t-inp_str.c: A few more cases.
5674	* tests/mpz/t-cmp_d.c: More bases and symbols, a few cases.
5675
5676	* mpz/rootrem.c: Correctly handle odd roots of negatives.
5677	* tests/mpz/t-root.c: Test it.
5678
56792012-05-16  Torbjorn Granlund  <tege@gmplib.org>
5680
5681	* tests/mpf/t-eq.c (check_random): New function, meat from old main().
5682	(check_data): New function.
5683
56842012-05-13  Torbjorn Granlund  <tege@gmplib.org>
5685
5686	* mpn/arm/rsh1aors_n.asm: New file.
5687	* mpn/arm/v5/mod_1_2.asm: New file.
5688
56892012-05-11  Marc Glisse  <marc.glisse@inria.fr>
5690
5691	* gmpxx.h (explicit operator bool): New functions.
5692	* tests/cxx/t-cxx11.cc: Test the above.
5693
56942012-05-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
5695
5696	* gmp-impl.h (__gmpn_cpuvec_initialized): Was __gmpn_cpuvec.initialized
5697	* mpn/x86/fat/fat.c: Use separated _initialized variable.
5698	* mpn/x86_64/fat/fat.c: Likewise.
5699	* tests/mpn/t-fat.c: Likewise.
5700
5701	* mpn/generic/toom2_sqr.c: Override global __gmpn_cpuvec_initialized.
5702	* mpn/generic/toom22_mul.c: Likewise.
5703	* mpn/generic/toom3_sqr.c: Likewise.
5704	* mpn/generic/toom33_mul.c: Likewise.
5705
57062012-05-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
5707
5708	* mpn/generic/sqrtrem.c (invsqrttab): Reduce size removing common byte.
5709
5710	* mpz/bin_uiui.c (mul3, mul4, mul8): Remove unneeded shifts.
5711	(MAXFACS): Redefine, using the shared (safer) log_n_max.
5712
57132012-05-08  Torbjorn Granlund  <tege@gmplib.org>
5714
5715	* mpn/minithres/gmp-mparam.h (REDC_1_TO_REDC_N_THRESHOLD): Up to 9, for
5716	coherency with ASSERT in mpn/generic/redc_n.c.
5717
57182012-05-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
5719
5720	* mpn/minithres/gmp-mparam.h: Updated TOOM6 and FAC_DSC.
5721	* tests/mpn/toom-sqr-shared.h: Don't test if no range.
5722
5723	* mpz/oddfac_1.c: Add ASSERTs to warn about small threshold.
5724	* tune/tuneup.c: Update minimal threshold for FAC_DSC.
5725
57262012-05-06  Torbjorn Granlund  <tege@gmplib.org>
5727
5728	* mpn/arm/v6/sqr_basecase.asm: Simplify n=4 code.
5729
57302012-05-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
5731
5732	* mpn/generic/invert.c: Mark a branch UNLIKELY.
5733	* tune/tuneup.c (tune_fac_u): Update DSC_THRESHOLD minimum.
5734	* gmp-impl.h (FAC_???_THRESHOLD): Update default values.
5735	(ABOVE_THRESHOLD): New definition with __builtin_constant_p.
5736
5737	* mpn/generic/toom22_mul.c: Disable MAYBE_ if WANT_FAT_BINARY.
5738	* mpn/generic/toom33_mul.c: Likewise.
5739	* mpn/generic/toom2_sqr.c: Likewise.
5740	* mpn/generic/toom3_sqr.c: Likewise.
5741
57422012-05-04  Torbjorn Granlund  <tege@gmplib.org>
5743
5744	* tune/tuneup.c: Measure POWM_SEC_TABLE after the REDC thresholds.
5745
57462012-05-03  Torbjorn Granlund  <tege@gmplib.org>
5747
5748	* mpn/generic/powm_sec.c: Use redc_2.
5749	(INNERLOOP): Use this mechanism, like plain powm.c.
5750	(WANT_CACHE_SECURITY): Remove, feature now unconditional.
5751
57522012-05-02  Torbjorn Granlund  <tege@gmplib.org>
5753
5754	* mpz/bin_uiui.c: Make use of CNST_LIMB.
5755
57562012-05-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
5757
5758	* mpz/mfac_uiui.c: Support limb != ui.
5759
57602012-05-02  Torbjorn Granlund  <tege@gmplib.org>
5761
5762	* mpn/arm/logops_n.asm: Work around register clobbering issue.
5763
5764	* mpn/arm/aorscnd_n.asm: New file.
5765
57662012-05-01  Torbjorn Granlund  <tege@gmplib.org>
5767
5768	* configure.in: Put arm dirs in path in proper prio order.
5769
5770	* mpn/arm/logops_n.asm: New file.
5771
5772	* mpz/2fac_ui.c: Fix assumed typo.
5773
5774	* mpn/arm/v6/gmp-mparam.h: New file.
5775
5776	* mpn/arm/v5/gcd_1.asm: Hack for undefined BMOD_1_TO_MOD_1_THRESHOLD.
5777	* mpn/arm/v6t2/gcd_1.asm: Likewise.
5778
57792012-04-30  Torbjorn Granlund  <tege@gmplib.org>
5780
5781	* mpn/arm/v6/sqr_basecase.asm: New file.
5782
57832012-04-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
5784
5785	* mpn/generic/comb_tables.c: New file.
5786	* configure.in: Add it.
5787	* gen-fac.c: Define table limits.
5788	* gmp-impl.h: Declare tables.
5789	(log_n_max): New static function.
5790	* mpz/2fac_ui.c: Use shared tables.
5791	* mpz/bin_uiui.c: Likewise.
5792	* mpz/oddfac_1.c: Likewise.
5793	* mpz/primorial_ui.c: Likewise.
5794
5795	* mpz/mfac_uiui.c: New file.
5796	* Makefile.am: Compile it.
5797	* mpz/Makefile.am (libmpz_la_SOURCES): Add mpz_mfac_uiui.c
5798	* gmp-h.in (mpz_mfac_uiui): Declare.
5799
5800	* tests/mpz/t-mfac_uiui.c: New file.
5801	* tests/mpz/Makefile.am: Run it.
5802
5803	* doc/gmp.texi: Document mpz_mfac_uiui, collapsing with other factorial functions.
5804
5805	* tests/mpz/t-lcm.c: Test zero too.
5806
5807	* mpz/prodlimbs.c: Simplify threshold (should be tuned, not guessed).
5808
58092012-04-29  Torbjorn Granlund  <tege@gmplib.org>
5810
5811	* mpn/arm/aors_n.asm: Tune for more stable performance.
5812
5813	* mpn/arm/aorslsh1_n.asm: New file.
5814
5815	* mpn/arm/mod_34lsub1.asm: New file.
5816
5817	* mpn/arm/v6t2/divrem_1.asm: New file.
5818
58192012-04-28  Torbjorn Granlund  <tege@gmplib.org>
5820
5821	* mpn/thumb/add_n.asm: New file.
5822	* mpn/thumb/sub_n.asm: New file.
5823	* mpn/thumb/add_n.s: Remove broken code.
5824	* mpn/thumb/sub_n.s: Likewise.
5825
5826	* mpn/arm/v6/addmul_1.asm: Rewrite for stable speed, smaller size.
5827	* mpn/arm/v6/mul_1.asm: Likewise.
5828
58292012-04-27  Torbjorn Granlund  <tege@gmplib.org>
5830
5831	* configure.in: Search arm/v6t2 for arm7.
5832
5833	* mpn/arm/v5/gcd_1.asm: New file.
5834	* mpn/arm/v6t2/gcd_1.asm: New file.
5835
5836	* mpn/arm/mode1o.asm: New file.
5837	* mpn/arm/v6t2/mode1o.asm: New file.
5838
5839	* mpn/arm/arm-defs.m4 (LEA): New define.
5840	* mpn/arm/invert_limb.asm: Use LEA.
5841
58422012-04-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
5843
5844	* mpz/bin_uiui.c (bc_bin_uiui): Nail support.
5845	* tests/cxx/t-ops2.cc: Test 0/3.
5846	* oddfac_1.c: assume n > 26.
5847	* tests/mpz/t-jac.c (mpn_jacobi_n): Enlarge tested sizes.
5848
58492012-04-24  Torbjorn Granlund  <tege@gmplib.org>
5850
5851	* mpn/arm/v6/addmul_2.asm: New file.
5852	* mpn/arm/v6/mul_2.asm: New file.
5853
58542012-04-23  Torbjorn Granlund  <tege@gmplib.org>
5855
5856	* mpn/arm/aorsmul_1.asm: Tweak loop control for a 6% speed increase.
5857
58582012-04-22  Torbjorn Granlund  <tege@gmplib.org>
5859
5860	* configure.in: Recognise ARM sub-architectures.
5861
5862	* configfsf.guess: Update to current FSF version.
5863	* configfsf.sub: Likewise.
5864
5865	* mpn/arm/bdiv_dbm1c.asm: New file.
5866
5867	* mpn/arm/v6/mul_1.asm: New file.
5868	* mpn/arm/v6/addmul_1.asm: New file.
5869
58702012-04-22 Marco Bodrato <bodrato@mail.dm.unipi.it>
5871
5872	* gen-fac.c: Renamed, was gen-fac_ui.c .
5873	* Makefile.am: Renamed gen-fac.c and fac_table.h .
5874	* gmp-impl.h: #include "fac_table.h".
5875	* mpz/oddfac_1.c: Use generated constant.
5876	* mpz/bin_ui.c: Small optimisations.
5877
5878	* tune/common.c (speed_mpz_bin_ui): New function.
5879	* tune/speed.h: Declare it.
5880	* tune/speed.c: Use it.
5881
58822012-04-21  Torbjorn Granlund  <tege@gmplib.org>
5883
5884	* mpn/arm/mul_1.asm: Cleanup.
5885	* mpn/arm/copyi.asm: Cleanup, assume allocate-on-write cache.
5886	* mpn/arm/copyd.asm: Likewise.
5887
5888	* mpn/arm/add_n.asm: Delete.
5889	* mpn/arm/sub_n.asm: Delete.
5890	* mpn/arm/aors_n.asm: New file, made from old files.
5891
5892	* mpn/arm/addmul_1.asm: Delete.
5893	* mpn/arm/submul_1.asm: Delete.
5894	* mpn/arm/aorsmul_1.asm: New file, made from old files.
5895
5896	* mpn/arm/com.asm: New file.
5897	* mpn/arm/lshift.asm: New file.
5898	* mpn/arm/rshift.asm: New file.
5899
59002012-04-20  Torbjorn Granlund  <tege@gmplib.org>
5901
5902	* tests/mpq/io.c: New file.
5903	* tests/mpq/Makefile.am: Run it.
5904
5905	* mpz/clrbit.c: Simplify along the lines of setbit.c.
5906
59072012-04-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
5908
5909	* mpz/setbit.c: Simplify.
5910
5911	* gmp-impl.h (LOG2C): Define.
5912	* mpz/fac_ui.c (LOG2C): Remove.
5913	* mpz/2fac_ui.c (LOG2C): Remove.
5914	* mpz/oddfac_1.c (LOG2C): Remove.
5915	* mpn/generic/binvert.c (LOG2C): Remove.
5916	* mpn/generic/invertappr.c (LOG2C): Remove.
5917
5918	* mpz/bin_uiui.c (mpz_goetgheluck_bin_uiui): Move declarations,
5919	and assume that n and k are not small.
5920
59212012-04-19  Torbjorn Granlund  <tege@gmplib.org>
5922
5923	* tests/mpz/Makefile.am (check_PROGRAMS): Add t-remove.
5924
5925	* tests/mpz/t-remove.c: Clear out mpz variables.
5926
5927	* tests/mpz/t-cong.c (check_random): Use much larger numbers.
5928	(check_data): Check congruences mod 0.
5929
5930	* tests/mpz/t-divis.c: Test divisibility by zero.
5931
5932	* tests/mpz/reuse.c: Test mpz_mod.
5933
5934	* mpz/setbit.c: Remove dead code.  Use CNST_LIMB.
5935	* mpz/clrbit.c: Use CNST_LIMB.
5936
59372012-04-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
5938
5939	* primesieve.c: New file, with functions from mpz/oddfac_1.c .
5940	* mpz/oddfac_1.c (bitwise_primesieve): Re-moved.
5941	* Makefile.am (libgmp_la_SOURCES): Add primesieve.c .
5942	* gmp-impl.h (gmp_primesieve): Declare.
5943
5944	* mpz/bin_uiui.c (mpz_goetgheluck_bin_uiui): New, factor-based
5945	implementation.
5946	* tests/mpz/t-bin.c: Extend tests, to cover _goetgheluck.
5947
5948	* mpz/primorial_ui.c: New file.
5949	* mpz/Makefile.am (libmpz_la_SOURCES): Add mpz/primorial_ui.c
5950	* Makefile.am (MPZ_OBJECTS): Add mpz/primorial_ui$U.lo
5951	* gmp-h.in (mpz_primorial_ui): Declare.
5952	* tests/mpz/t-primorial_ui.c: New test for the new function.
5953	* tests/mpz/Makefile.am (check_PROGRAMS): Add t-primorial_ui.
5954	* doc/gmp.texi: Short documentation for the new function.
5955
59562012-04-17  Torbjorn Granlund  <tege@gmplib.org>
5957
5958	* mpn/x86_64/coreisbr/aorsmul_1.asm: Fix some DOS64 issues.
5959	* mpn/x86_64/coreisbr/mul_1.asm: Likewise.
5960
5961	* mpn/x86_64/fastsse/lshiftc-movdqu2.asm: Adhere to DOS64 register
5962	partitioning rules.
5963
5964	* mpn/x86_64/fastsse/copyi-palignr.asm: Implement temporary workaround
5965	to overlap issue.
5966
59672012-04-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
5968
5969	* mpz/bin_uiui.c: Support small limbs (fallback on bin_ui).
5970
5971	* tests/mpn/toom-sqr-shared.h: Use a restricted range.
5972	* tests/mpn/t-toom2-sqr.c: Specify correct range.
5973	* tests/mpn/t-toom3-sqr.c: Likewise.
5974	* tests/mpn/t-toom4-sqr.c: Likewise.
5975	* tests/mpn/t-toom6-sqr.c: Likewise.
5976	* tests/mpn/t-toom8-sqr.c: Likewise, but extended.
5977	* tests/mpn/Makefile.am (check_PROGRAMS): Add t-toom?-sqr tests.
5978
5979	* mpn/generic/sbpi1_bdiv_q.c: Move ASSERTs, to support qp = np.
5980
59812012-04-17  Torbjorn Granlund  <tege@gmplib.org>
5982
5983	* mpn/x86_64/copyd.asm: Rewrite.
5984	* mpn/x86_64/copyi.asm: Rewrite.
5985
59862012-04-16  Torbjorn Granlund  <tege@gmplib.org>
5987
5988	* mpn/x86_64/fastsse/lshift-movdqu2.asm: Add DOS entry/exit sequences.
5989	* mpn/x86_64/fastsse/rshift-movdqu2.asm: Likewise.
5990	* mpn/x86_64/fastsse/lshiftc-movdqu2.asm: Likewise.
5991
5992	* mpn/x86_64/x86_64-defs.m4 (palignr): New macro.
5993	(x86_opcode_regxmm, x86_opcode_regxmm_list): New, made from x86 mmx
5994	counterparts.
5995	(x86_lookup): Copy from x86/x86-defs.m4.
5996	* mpn/x86_64/fastsse/copyd-palignr.asm: Use palignr macro.
5997	* mpn/x86_64/fastsse/copyi-palignr.asm: Likewise.
5998
59992012-04-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
6000
6001	* tests/mpz/t-bin.c: Add more tests on small values.
6002	* mpz/bin_uiui.c (mpz_bdiv_bin_uiui): Smaller temporary areas.
6003
60042012-04-15  Torbjorn Granlund  <tege@gmplib.org>
6005
6006	* mpn/x86_64/fastsse/copyd-palignr.asm: New file.
6007	* mpn/x86_64/fastsse/copyi-palignr.asm: New file.
6008	* mpn/x86_64/core2/copyd.asm: New file.
6009	* mpn/x86_64/core2/copyi.asm: New file.
6010	* mpn/x86_64/nano/copyd.asm: New file.
6011	* mpn/x86_64/nano/copyi.asm: New file.
6012	* mpn/x86_64/atom/copyd.asm: New file.
6013	* mpn/x86_64/atom/copyi.asm: New file.
6014
60152012-04-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
6016
6017	* mpz/bin_uiui.c: Rewrite (some parts are Torbjorn's).
6018	* gen-fac_ui.c: Generate new constants for bin_uiui.
6019
6020	* tests/mpz/t-fac_ui.c: Check Wilson's theorem on a big value.
6021
6022	* mpn/generic/invert.c: Remove support for scratch == NULL.
6023	* tune/speed.h (SPEED_ROUTINE_MPN_MUPI_DIV_QR): Allocate scratch
6024	space for mpn_invert.
6025
6026	* mpz/mul_i.h: Small clean-up.
6027
6028	* tests/mpn/toom-sqr-shared.h: New file.
6029	* tests/mpn/t-toom2-sqr.c: New file.
6030	* tests/mpn/t-toom3-sqr.c: New file.
6031	* tests/mpn/t-toom4-sqr.c: New file.
6032	* tests/mpn/t-toom6-sqr.c: New file.
6033	* tests/mpn/t-toom8-sqr.c: New file.
6034	* tests/mpn/Makefile.am (EXTRA_DIST): Add toom-sqr-shared.h .
6035
6036	* mpn/generic/toom62_mul.c: Use add_n, sub_n, when possible.
6037
60382012-04-12  Torbjorn Granlund  <tege@gmplib.org>
6039
6040	* mpn/x86_64/fastsse/lshift-movdqu2.asm: New file.
6041	* mpn/x86_64/fastsse/rshift-movdqu2.asm: New file.
6042	* mpn/x86_64/fastsse/lshiftc-movdqu2.asm: New file.
6043	* mpn/x86_64/coreisbr/lshift.asm: New file.
6044	* mpn/x86_64/coreisbr/rshift.asm: New file.
6045	* mpn/x86_64/coreisbr/lshiftc.asm: New file.
6046	* mpn/x86_64/k10/lshift.asm: New file.
6047	* mpn/x86_64/k10/rshift.asm: New file.
6048	* mpn/x86_64/k10/lshiftc.asm: New file.
6049
6050	* mpn/x86_64/fastsse/lshift.asm: Simplify to very basic form.
6051
60522012-04-11  Niels Möller  <nisse@lysator.liu.se>
6053
6054	* Makefile.am (check-mini-gmp): Pass -I../.. in EXTRA_CFLAGS, to
6055	locate gmp.h.
6056
60572012-04-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
6058
6059	* Makefile.am (check-mini-gmp): Use $(MAKE).
6060	(clean-mini-gmp): New target.
6061	(clean-local, distclean-local): New automake targets. Depend on
6062	clean-mini-gmp.
6063
6064	* gen-fac_ui.c (mpz_root): Remove.
6065
60662012-04-07  Torbjorn Granlund  <tege@gmplib.org>
6067
6068	* mpn/ia64/gcd_1.asm: Rewrite inner loop to use ctz table.
6069
60702012-04-05  Torbjorn Granlund  <tege@gmplib.org>
6071
6072	* mpn/powerpc64/p7/popcount.asm: Properly extend arg n for mode32.
6073	* mpn/powerpc64/p7/hamdist.asm: Likewise.
6074
60752012-04-04  Torbjorn Granlund  <tege@gmplib.org>
6076
6077	* mpn/powerpc64/p7/popcount.asm: New file.
6078	* mpn/powerpc64/p7/hamdist.asm: New file.
6079
6080	* longlong.h (ARM count_leading_zeros): Enable for more arch versions.
6081
6082	* mpn/x86_64/gcd_1.asm: Make room for DOS64 regparm shadow area.
6083	* mpn/x86_64/core2/gcd_1.asm: Likewise.
6084
60852012-04-03  Torbjorn Granlund  <tege@gmplib.org>
6086
6087	* mpn/x86_64/coreisbr/aorrlsh_n.asm: Make it actually work for DOS64.
6088
60892012-04-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
6090
6091	* mpz/oddfac_1.c: Initialize size for ASSERT.
6092
60932012-04-02  Torbjorn Granlund  <tege@gmplib.org>
6094
6095	* gmp-h.in (_GMP_H_HAVE_FILE): Test also __STDIO_LOADED (for VMS).
6096
6097	* gmp-impl.h (doprnt_format_t, etc): Remove bogus __GMP_DECLSPECs.
6098
60992012-03-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
6100
6101	* mpn/x86_64/sqr_basecase.asm: Speed-up for small cases.
6102
61032012-03-29  Torbjorn Granlund  <tege@gmplib.org>
6104
6105	* mpn/sparc64/gcd_1.asm: New file.
6106
61072012-03-27  Torbjorn Granlund  <tege@gmplib.org>
6108
6109	* config.guess: Fix typo in coreisbr recognition.
6110
61112012-03-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
6112
6113	* mpn/x86_64/gcd_1.asm: Reduce latency.
6114	* mpn/x86_64/mul_basecase.asm: Save one jump.
6115
6116	* mpz/iset_ui.c: Don't realloc.
6117
61182012-03-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
6119
6120	* mp_clz_tab.c: Add __clz_tab[128].
6121	* longlong.h (count_trailing_zeros): Use it in pure C variant.
6122
61232012-03-20  Torbjorn Granlund  <tege@gmplib.org>
6124
6125	* configure.in (x86 fat_path): Add many missing directories.
6126	* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Rewrite.
6127	(fake_cpuid_table): Add many more CPUs.
6128
6129	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Minor spacing cleanup.
6130
61312012-03-19  Torbjorn Granlund  <tege@gmplib.org>
6132
6133	* mpn/x86/x86-defs.m4 (CALL, PIC_WITH_EBX): New macros.
6134	* mpn/x86/darwin.m4: Likewise.
6135	* mpn/x86/k7/gcd_1.asm: Use new macros to support PIC.
6136	* mpn/x86/p6/gcd_1.asm: Likewise.
6137
61382012-03-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
6139
6140	* gen-fac_ui.c: Generate more constants (possible mini-mpz_root).
6141	* mpz/oddfac_1.c: Improve ASSERTs.
6142	(log_n_max): Use precomputed table.
6143
6144	* longlong.h (_PROTO): Remove.
6145
61462012-03-18  Torbjorn Granlund  <tege@gmplib.org>
6147
6148	* longlong.h (count_trailing_zeros): Write better pure C default
6149	variant.
6150
6151	* mpn/x86/p6/gcd_1.asm: Remove forgotten x86_64 reference.
6152
6153	* mpn/x86/p6/gmp-mparam.h: Update, to get BMOD_1_TO_MOD_1_THRESHOLD
6154	defined for fat binaries.
6155
61562012-03-17  Torbjorn Granlund  <tege@gmplib.org>
6157
6158	* mpn/x86/k7/gcd_1.asm: Rewrite.
6159	* mpn/x86/p6/gcd_1.asm: New file.
6160
6161	* mpn/x86_64/core2/gcd_1.asm: Conditionally suppress reduction calls.
6162	* mpn/x86_64/gcd_1.asm: Rewrite.
6163
61642012-03-15  Torbjorn Granlund  <tege@gmplib.org>
6165
6166	* mpn/generic/gcd_1.c: Parameterise zerotab code.
6167
6168	* mpn/x86_64/nano/gcd_1.asm: New file, grabbing core2 asm file.
6169
6170	* mpn/x86_64/core2/gcd_1.asm: Speed up loop code, simplify non-loop
6171	code.
6172
61732012-03-13  Torbjorn Granlund  <tege@gmplib.org>
6174
6175	* mpn/x86_64/core2/gcd_1.asm: Add hack to support fat builds.
6176
6177	* mpn/x86_64/core2/gcd_1.asm: Shorten critical path.
6178
61792012-03-12  Torbjorn Granlund  <tege@gmplib.org>
6180
6181	* mpn/x86_64/core2/gcd_1.asm: New file.
6182	* mpn/x86_64/k10/gcd_1.asm: New file, grabbing core2 asm file.
6183	* mpn/x86_64/bd1/gcd_1.asm: Likewise.
6184
6185	* mpn/x86_64/bobcat/sqr_basecase.asm: New file.
6186	* mpn/x86_64/bobcat/mul_basecase.asm: Minor tuning.
6187
61882012-03-10  Torbjorn Granlund  <tege@gmplib.org>
6189
6190	* configure.in (fat_functions): Add addlsh1_n, addlsh2_n, addmul_2,
6191	mullo_basecase, redc_1, redc_2, sublsh1_n.
6192
6193	* gmp-impl.h (struct cpuvec_t): Add fields for new fat functions.
6194	* gmp-impl.h: Adjust corresponding declarations.
6195
6196	* mpn/generic/redc_2.c (mpn_addmul_2): Make static.
6197
6198	* mpn/x86_64/fat/fat_entry.asm (FAT_INIT): Expand before fat_init to
6199	reduce branch offsets.  Pass plain 0,1,3... in %al since we'd else run
6200	out of 8-bit range.
6201
6202	* mpn/x86_64/fat/fat_entry.asm (fat_init): Scale passed index value.
6203	* mpn/x86/fat/fat_entry.asm (fat_init): Use movzbl for expanding index
6204	value.
6205
6206	* mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): Add new fat functions.
6207	* mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): Likewise.
6208	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec): Likewise.
6209	* mpn/x86/fat/fat.c (__gmpn_cpuvec): Likewise.
6210
6211	* mpn/x86_64/fat/redc_2.c: New file.
6212	* mpn/x86/fat/mullo_basecase.c: New file.
6213	* mpn/x86/fat/redc_1.c: New file.
6214	* mpn/x86/fat/redc_2.c: New file.
6215
6216	* tests/mpn/t-fat.c: Test mullo_basecase.
6217
62182012-03-08  Torbjorn Granlund  <tege@gmplib.org>
6219
6220	* mpn/x86_64/coreisbr/addmul_2.asm: Port to DOS64.
6221
62222012-02-29  Marc Glisse  <marc.glisse@inria.fr>
6223
6224	* gmpxx.h: Ignore partial C++11 support in g++-4.6.
6225	* tests/cxx/t-cxx11.cc: Likewise.
6226
6227	* gmpxx.h (operator""): New functions.
6228	* tests/cxx/t-cxx11.cc: Test the above.
6229	* doc/gmp.texi: Document the above.
6230
62312012-03-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
6232
6233	* acinclude.m4 (GMP_H_ANSI): Remove.
6234	* configure.in: Don't use GMP_H_ANSI.
6235	* gmp-h.in (__GMP_HAVE_PROTOTYPES): Remove.
6236
62372012-03-08  Torbjorn Granlund  <tege@gmplib.org>
6238
6239	* mpn/x86_64/fat/fat.c (fake_cpuid_table): Recognise "bulldozer".
6240	(__gmpn_cpuvec_init): Overhaul to match configure.in.
6241
6242	* configure.in: Adjust bulldozer path_64.
6243
62442012-03-07  Torbjorn Granlund  <tege@gmplib.org>
6245
6246	* configure.in (x86_64 fat_path): List recently added AMD directories.
6247
6248	* mpn/x86_64/bobcat/copyi.asm: New file.
6249	* mpn/x86_64/bobcat/copyd.asm: New file.
6250
6251	* config.guess: Handle AMD 11h correctly.
6252
6253	* tune/tuneup.c (tune_redc): Better handle situation where redc_2 is
6254	never faster.
6255
62562012-03-06  Torbjorn Granlund  <tege@gmplib.org>
6257
6258	* mpn/x86_64/bobcat/mul_basecase.asm: New file.
6259
62602012-03-04  Torbjorn Granlund  <tege@gmplib.org>
6261
6262	* mpn/x86_64/bobcat/mul_1.asm: New file.
6263	* mpn/x86_64/bobcat/aorsmul_1.asm: New file.
6264
62652012-03-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
6266
6267	* mpz/invert.c: Remove mod 0 branch.
6268	* tests/mpz/t-invert.c: Avoid testing mod 0.
6269	* doc/gmp.texi (mpz_invert): Specify mod 0 is not handled.
6270
6271	* gmp-h.in (__gmp_signed, __gmp_const): Remove.
6272	(__GMP_HAVE_TOKEN_PASTE, __GMP_HAVE_CONST): Remove.
6273	* gmp-impl.h: Strip __GMP_HAVE_TOKEN_PASTE and __GMP_HAVE_CONST.
6274	* demos/expr/: Strip __gmp_const usage from all files.
6275
6276	* tests/mpz/t-powm.c (allsizes_seen): Require unsigned*.
6277
62782012-03-03  Torbjorn Granlund  <tege@gmplib.org>
6279
6280	* mpn/x86_64/k8/gmp-mparam.h: New file.
6281	* mpn/x86_64/k10/gmp-mparam.h: New file.
6282
6283	* mpn/generic/hgcd_step.c (mpn_hgcd_step): Remove unused variables.
6284	* mpn/generic/hgcd_jacobi.c (hgcd_jacobi_step): Likewise.
6285	* mpn/generic/hgcd_reduce.c (hgcd_matrix_apply): Likewise.
6286	* mpn/generic/mu_bdiv_qr.c: Likewise.
6287	* mpz/jacobi.c: Likewise.
6288	* mpz/mod.c: Likewise.
6289
6290	* mpn/generic/toom42_mul.c: Remove unread variable.
6291	* mpn/generic/set_str.c (mpn_set_str_compute_powtab): Likewise.
6292	* mpn/generic/rootrem.c (mpn_rootrem_internal): Likewise.
6293	* tests/refmpn.c (refmpn_mul): Likewise.
6294	* mpn/generic/hgcd_appr.c (mpn_hgcd_appr): Propagate mask computation
6295	into ASSERT, remove variable.
6296
6297	* gmp-h.in (__GMP_PROTO): Remove.
6298	* Strip __GMP_PROTO usage from all files.
6299	* Strip prototype parameter names from all files.
6300
63012012-03-01 Marco Bodrato <bodrato@mail.dm.unipi.it>
6302
6303	* doc/gmp.texi (mpz_invert): Correctly document result range.
6304	* tests/mpz/t-invert.c: Small range correction.
6305
63062012-03-01  Torbjorn Granlund  <tege@gmplib.org>
6307
6308	* mpn/x86_64/mullo_basecase.asm: New file.
6309
63102012-02-29  Marc Glisse  <marc.glisse@inria.fr>
6311
6312	* gmpxx.h (std::numeric_limits): New partial specialization.
6313
63142012-02-29  Niels Möller  <nisse@lysator.liu.se>
6315
6316	* Makefile.am (check-mini-gmp): Use $(MAKE).
6317	(clean-mini-gmp): New target.
6318	(clean-local, distclean-local): New automake targets. Depend on
6319	clean-mini-gmp.
6320
63212012-02-28  Niels Möller  <nisse@lysator.liu.se>
6322
6323	* Makefile.am (check-mini-gmp): New target, for running the
6324	mini-gmp testsuite.
6325
63262012-02-27  Torbjorn Granlund  <tege@gmplib.org>
6327
6328	* mpn/x86_64/fastsse/lshiftc.asm: New file.
6329	* mpn/x86_64/fastsse/com.asm: New file.
6330
6331	* mpn/x86_64/bd1/popcount.asm: New file.
6332	* mpn/x86_64/bd1/hamdist.asm: New file.
6333
6334	* mpn/x86_64/fastsse/copyi.asm: New file.
6335	* mpn/x86_64/fastsse/copyd.asm: New file.
6336	* mpn/x86_64/fastsse/lshift.asm: New file.
6337
63382012-02-26  Torbjorn Granlund  <tege@gmplib.org>
6339
6340	* mpn/x86_64/coreisbr/addmul_2.asm: New file.
6341
6342	* tests/devel/try.c (param_init): Don't require addmul_N to handle
6343	overlap.
6344
6345	* mpn/x86_64/bd1/mul_1.asm: New file.
6346	* mpn/x86_64/bd1/aorsmul_1.asm: New file.
6347
63482012-02-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
6349
6350	* mpz/2fac_ui.c: New file: implements n!!.
6351	* Makefile.am (MPZ_OBJECTS): Add mpz/2fac_ui.
6352	* gmp-h.in: Declare mpz_2fac_ui.
6353	* tests/mpz/t-fac.c: Test mpz_2fac_ui.
6354	* doc/gmp.texi: Document mpz_2fac_ui.
6355	* mpz/Makefile.am (libmpz_la_SOURCES): Add 2fac_ui.c.
6356
6357	* mpz/oddfac_1.c (mpz_oddfac_1): Use umul_ppmm when size = 2.
6358
63592012-02-26  Niels Möller  <nisse@lysator.liu.se>
6360
6361	* bootstrap.c: New file, replacing dumbmp.c. Uses mini-gmp for the
6362	standard GMP functions, and then defines the few functions
6363	particular for the bootstrap.
6364	* dumbmp.c: Deleted file. A few functions moved to bootstrap.c.
6365
6366	* gen-bases.c: Include bootstrap.c, not dumbmp.c.
6367	* gen-fac_ui.c: Likewise.
6368	* gen-trialdivtab.c: Likewise.
6369	* gen-fib.c: Include bootstrap.c, not dumbmp.c. Use assert rather
6370	than ASSERT. Deleted casts of xmalloc return value.
6371	* gen-psqr.c: Likewise.
6372	(COLLAPSE_ELEMENT): Use memmove rather than mem_copyi.
6373
6374	* Makefile.am: Replaced all uses of dumbmp.c by bootstrap.c.
6375	(EXTRA_DIST, dist-hook): Arrange for distribution of the mini-gmp
6376	files.
6377
63782012-02-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
6379
6380	* mpz/invert.c: Use ABSIZ, MPZ_EQUAL_1_P.
6381	* mpz/abs.c: Collapse MPZ_REALLOC(x,.) and PTR(x).
6382	* mpz/aors_ui.h: Likewise.
6383	* mpz/com.c: Likewise.
6384	* mpz/neg.c: Likewise.
6385
6386	* mpz/invert.c: Reply "no-inverse" when modulus is zero.
6387	* tests/mpz/t-invert.c: Add more checks.
6388	* doc/gmp.texi (mpz_invert): Inverse can not be zero.
6389
63902012-02-24  Torbjorn Granlund  <tege@gmplib.org>
6391
6392	* tests/mpn/logic.c: New file.
6393	* tests/mpn/Makefile.am (check_PROGRAMS): Add logic.
6394
6395	* tests/mpz/t-invert.c: New file.
6396	* tests/mpz/Makefile.am (check_PROGRAMS): Add t-invert.
6397
63982012-02-24  Marc Glisse  <marc.glisse@inria.fr>
6399
6400	* tests/mpq/t-cmp.c: Move NUM and DEN macros...
6401	* tests/mpq/t-cmp_ui.c: Likewise...
6402	* gmp-impl.h: ... to here.
6403
6404	* mpq/abs.c: Use NUM, DEN, SIZ, ALLOC, PTR, MPZ_REALLOC.
6405	* mpq/aors.c: Likewise.
6406	* mpq/canonicalize.c: Likewise.
6407	* mpq/clear.c: Likewise.
6408	* mpq/cmp.c: Likewise.
6409	* mpq/cmp_si.c: Likewise.
6410	* mpq/cmp_ui.c: Likewise.
6411	* mpq/div.c: Likewise.
6412	* mpq/equal.c: Likewise.
6413	* mpq/get_d.c: Likewise.
6414	* mpq/get_den.c: Likewise.
6415	* mpq/get_num.c: Likewise.
6416	* mpq/get_str.c: Likewise.
6417	* mpq/init.c: Likewise.
6418	* mpq/inp_str.c: Likewise.
6419	* mpq/inv.c: Likewise.
6420	* mpq/md_2exp.c: Likewise.
6421	* mpq/mul.c: Likewise.
6422	* mpq/neg.c: Likewise.
6423	* mpq/set.c: Likewise.
6424	* mpq/set_d.c: Likewise.
6425	* mpq/set_den.c: Likewise.
6426	* mpq/set_f.c: Likewise.
6427	* mpq/set_num.c: Likewise.
6428	* mpq/set_si.c: Likewise.
6429	* mpq/set_str.c: Likewise.
6430	* mpq/set_ui.c: Likewise.
6431	* mpq/set_z.c: Likewise.
6432	* mpq/swap.c: Likewise.
6433
6434	* tests/mpq/t-inv.c: New test file.
6435	* tests/mpq/Makefile.am: Add the above.
6436
6437	* gmpxx.h (__gmp_set_expr): Use mpq_set_z.
6438
6439	* mpq/md_2exp.c: Collapse MPZ_REALLOC(x,.) and PTR(x).
6440	* mpq/set_d.c: Likewise.
6441	* mpq/set_f.c: Likewise.
6442
64432012-02-24  Niels Möller  <nisse@lysator.liu.se>
6444
6445	* mpn/x86_64/core2/aorsmul_1.asm: Added mpn_addmul_1c and
6446	mpn_submul_1c entry points.
6447
64482012-02-23  Marc Glisse  <marc.glisse@inria.fr>
6449
6450	* mpz/abs.c: Use ALLOC, SIZ, ABSIZ, PTR, MPZ_REALLOC.
6451	* mpz/aors_ui.h: Likewise.
6452	* mpz/array_init.c: Likewise.
6453	* mpz/cdiv_q.c: Likewise.
6454	* mpz/cdiv_qr.c: Likewise.
6455	* mpz/cdiv_r.c: Likewise.
6456	* mpz/clear.c: Likewise.
6457	* mpz/clrbit.c: Likewise.
6458	* mpz/cmp_si.c: Likewise.
6459	* mpz/com.c: Likewise.
6460	* mpz/fdiv_q.c: Likewise.
6461	* mpz/fdiv_qr.c: Likewise.
6462	* mpz/fdiv_r.c: Likewise.
6463	* mpz/get_si.c: Likewise.
6464	* mpz/get_str.c: Likewise.
6465	* mpz/init.c: Likewise.
6466	* mpz/inp_str.c: Likewise.
6467	* mpz/iset.c: Likewise.
6468	* mpz/iset_d.c: Likewise.
6469	* mpz/iset_si.c: Likewise.
6470	* mpz/iset_str.c: Likewise.
6471	* mpz/iset_ui.c: Likewise.
6472	* mpz/mod.c: Likewise.
6473	* mpz/neg.c: Likewise.
6474	* mpz/out_str.c: Likewise.
6475	* mpz/random2.c: Likewise.
6476	* mpz/set_si.c: Likewise.
6477	* mpz/set_str.c: Likewise.
6478	* mpz/set_ui.c: Likewise.
6479	* mpz/setbit.c: Likewise.
6480	* mpz/sqrt.c: Likewise.
6481	* mpz/swap.c: Likewise.
6482	* mpz/tdiv_r_2exp.c: Likewise.
6483
6484	* tests/cxx/t-ops.cc: Test mpz_abs reallocation.
6485
64862012-02-23  Torbjorn Granlund  <tege@gmplib.org>
6487
6488	* mpn/x86_64/core2/rsh1aors_n.asm: Complete rewrite.
6489	* mpn/x86_64/coreisbr/rsh1aors_n.asm: Move old core2 code here.
6490
6491	* mpn/x86_64/redc_1.asm: Make it work for DOS64 (broken in last edit).
6492
64932012-02-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
6494
6495	* mpn/generic/toom_interpolate_8pts.c: Compute carry iif non-trivial.
6496
6497	* mpz/gcdext.c: Adapt to relaxed mpn_gcdext's input requirements.
6498
6499	* mpz/and.c: Use mpn_ logic everywhere. Reduce branches.
6500	* mpz/ior.c: Likewise.
6501	* mpz/xor.c: Likewise.
6502
65032012-02-20  Torbjorn Granlund  <tege@gmplib.org>
6504
6505	* mpn/x86_64/coreisbr/mul_1.asm: New file.
6506
6507	* mpn/x86_64/coreisbr/aorsmul_1.asm: New file.
6508
6509	* mpn/x86_64/mod_34lsub1.asm: Avoid ",pt" branch hint since many
6510	assemblers don't support it.
6511
65122012-02-19  Torbjorn Granlund  <tege@gmplib.org>
6513
6514	* mpn/generic/redc_1.c: Put back mpn_add_n call, return its carry.
6515	Reintroduce previously removed RP argument.
6516	* mpn/x86_64/redc_1.asm: Likewise.
6517
6518	* mpn/generic/redc_2.c: Remove mpn_sub_n call, return carry from
6519	mpn_add_n call.
6520
6521	* gmp-impl.h (mpn_redc_1, mpn_redc_2): Now return an mp_limb_t.
6522
6523	* tune/speed.h (SPEED_ROUTINE_REDC_1): Adopt to pass RP argument.
6524
6525	* tests/refmpn.c (refmpn_redc_1): Adopt to new redc_1 interface.
6526
6527	* mpn/generic/powm.c (MPN_REDC_1): Pass rp parameter to mpn_redc_1.
6528	* mpn/generic/powm_sec.c (MPN_REDC_1_SEC): Likewise.
6529	* mpn/generic/powm.c (MPN_REDC_2): New macro, use for mpn_redc_2.
6530
65312012-02-18  Marc Glisse  <marc.glisse@inria.fr>
6532
6533	* gmpxx.h (std::common_type): New partial specialization in C++11.
6534	* tests/cxx/t-cxx11.cc: Test it.
6535
6536	* gmpxx.h: Don't declare long double functions that are never defined.
6537
6538	* gmpxx.h (__gmp_binary_expr): Let things happen in place: q=q*q+z*z
6539	becomes tmp=z*z, q=q*q, q+=tmp.
6540	* tests/cxx/t-binary.cc: More variable reuse tests.
6541
65422012-02-17  Marc Glisse  <marc.glisse@inria.fr>
6543
6544	* gmp-h.in (__GMP_WITHIN_GMP): Test with #ifdef instead of #if, for
6545	the benefit of applications using gcc -Wundef.
6546	(__GMP_WITHIN_GMPXX): Likewise.
6547
65482012-02-16  Marc Glisse  <marc.glisse@inria.fr>
6549
6550	* gmpxx.h (__gmp_binary_expr): Let things happen in place: e=a*b-c*d
6551	becomes tmp=c*d, e=a*b, e-=tmp.
6552	* tests/cxx/t-binary.cc: More variable reuse tests.
6553
65542012-02-15  Niels Möller  <nisse@lysator.liu.se>
6555
6556	* tune/tuneup.c (mul_toom43_to_toom54_threshold): New global.
6557	(tune_mul): Added tuning of MUL_TOOM43_TO_TOOM54_THRESHOLD.
6558	* tune/speed.h (SPEED_ROUTINE_MPN_TOOM43_FOR_TOOM54_MUL): New macro.
6559	(SPEED_ROUTINE_MPN_TOOM54_FOR_TOOM43_MUL): New macro.
6560	Prototypes for corresponding functions.
6561	* tune/common.c (speed_mpn_toom43_for_toom54_mul): New function.
6562	(speed_mpn_toom54_for_toom43_mul): New function.
6563
6564	* gmp-impl.h (MPN_TOOM43_MUL_MINSIZE): Corrected constant.
6565	(MPN_TOOM53_MUL_MINSIZE): Likewise.
6566	(MPN_TOOM54_MUL_MINSIZE): New constant.
6567	(mpn_toom54_mul): Added prototype.
6568	(MUL_TOOM43_TO_TOOM54_THRESHOLD): New threshold. Default value and
6569	tuning setup.
6570
65712012-02-14  Niels Möller  <nisse@lysator.liu.se>
6572
6573	* mpn/generic/toom54_mul.c: New file, originally contributed by
6574	Marco.
6575	* gmp-impl.h (mpn_toom54_mul_itch): New function.
6576	* configure.in (gmp_mpn_functions): Added toom54_mul.
6577	* tests/mpn/t-toom54.c: New file.
6578	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-toom54.
6579
65802012-02-13  Niels Möller  <nisse@lysator.liu.se>
6581
6582	* configure.in: Display summary of options.
6583
65842012-02-11  Torbjorn Granlund  <tege@gmplib.org>
6585
6586	* tests/tests.h (TESTS_REPS): Print any non-standard repetitions.
6587
65882012-02-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
6589
6590	* doc/gmp.texi (Factorial): Shortly describe current algorithm.
6591	(Multiplication Algorithms): Add Toom[68]'n'half, (too) shortly.
6592	* gmp-impl.h (ASSERT_ALWAYS): Consider failures UNLIKELY.
6593
65942012-02-10  Niels Möller  <nisse@lysator.liu.se>
6595
6596	* tests/mpz/t-gcd.c (gcdext_valid_p): Enforce slightly stricter
6597	bound for cofactors.
6598
6599	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_hook): Corrected
6600	handling of unlikely (maybe impossible?) case u1n < un. Related to
6601	the 2012-02-05 bugfix of gcdext_subdiv_step.c in the gmp-5.0 repo.
6602
66032012-02-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
6604
6605	* gmp-impl.h (mpn_toom3*_itch): Support any recursion depth.
6606	* tests/refmpn.c (refmpn_mul): Restore tight allocations.
6607
6608	* mpz/oddfac_1.c (mpz_oddfac_1): Get ready for n!!
6609	* gmp-impl.h (mpz_oddfac_1): Update signature.
6610	* mpz/fac_ui.c (mpz_fac_ui): Update call to mpz_oddfac_1.
6611
66122012-02-09  Marc Glisse  <marc.glisse@inria.fr>
6613
6614	* gmp-impl.h (ABS_CAST): New macro.
6615	* mpf/cmp_si.c: Use ABS_CAST.
6616	* mpf/get_si.c: Use ABS_CAST.
6617	* mpf/iset_si.c: Use ABS_CAST.
6618	* mpf/set_si.c: Use ABS_CAST.
6619	* mpq/set_si.c: Use ABS_CAST.
6620	* mpz/cmp_si.c: Use ABS_CAST.
6621	* mpz/get_si.c: Use ABS_CAST.
6622	* mpz/iset_si.c: Use ABS_CAST.
6623	* mpz/mul_i.h: Use ABS_CAST.
6624	* mpz/set_si.c: Use ABS_CAST.
6625
66262012-02-08  Torbjorn Granlund  <tege@gmplib.org>
6627
6628	* mpn/powerpc32/divrem_2.asm: Fix off-by-one condition in invert_limb
6629	code.
6630
66312012-02-08  Niels Möller  <nisse@lysator.liu.se>
6632
6633	* doc/gmp.texi (mpz_gcdext): Clarified corner cases in cofactor
6634	canonicalization.
6635
66362012-02-07  Niels Möller  <nisse@lysator.liu.se>
6637
6638	* mpn/generic/gcdext.c (mpn_gcdext): Fixed assert, related to the
6639	special case A = (2k+1) G, B = 2 G. Fix copied from gmp-5.0 repo.
6640
66412012-02-06  Niels Möller  <nisse@lysator.liu.se>
6642
6643	* mpn/generic/hgcd_matrix.c (hgcd_matrix_update_q): Fixed carry
6644	handling bug. Fix copied from gmp-5.0 repo, where the function is
6645	found in hgcd.c.
6646
6647	* tests/mpz/t-gcd.c (main): Use mpz_rrandomb for test operands,
6648	not mpz_urandomb. Change copied from gmp-5.0 repo.
6649	* tests/mpn/t-hgcd.c (main): Likewise.
6650
66512012-02-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
6652
6653	* tests/refmpn.c (refmpn_mul): More conservative allocations.
6654
66552012-02-03  Torbjorn Granlund  <tege@gmplib.org>
6656
6657	* mpn/x86_64/bd1/gmp-mparam.h: New file.
6658
6659	* longlong.h (udiv_qrnnd from sdiv_qrnnd): Declare udiv_w_sdiv.
6660
6661	* mpn/generic/udiv_w_sdiv.c: Use c89 function header.
6662
66632012-02-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
6664
6665	* mpz/fac_ui.c: mpz_oddfac_1 removed, with many related functions.
6666	* mpz/oddfac_1.c: New file, mpz_oddfac_1 implementation.
6667	* gmp-impl.h: mpz_oddfac_1 declaration.
6668	* Makefile.am (MPZ_OBJECTS): add mpz/oddfac_1$U.lo .
6669	* mpz/Makefile.am (libmpz_la_SOURCES): add oddfac_1.c .
6670	* tune/Makefile.am (fac_ui.c): include mpz/oddfac_1.c .
6671
66722012-02-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
6673
6674	* mpn/generic/toom_interpolate_16pts.c: Correct an unlikely 32-bit bug.
6675
66762012-02-02  Torbjorn Granlund  <tege@gmplib.org>
6677
6678	* mpn/generic/toom63_mul.c: Allow s+t==n by adjusting an ASSERT.
6679	* mpn/generic/toom_interpolate_8pts.c: Perform final incr iff s+t!=n.
6680
6681	* tests/mpn/t-toom6h.c (MIN_BN): Make more consistent with ASSERT in
6682	tested function.
6683
66842012-02-01  Torbjorn Granlund  <tege@gmplib.org>
6685
6686	* tests/mpn/t-mul.c: New file.
6687	* tests/mpn/Makefile.am: Compile it.
6688
66892012-02-01  Marc Glisse  <marc.glisse@inria.fr>
6690
6691	* gmpxx.h: Remove check for g++ older than 2.91.
6692
66932012-02-01  Niels Möller  <nisse@lysator.liu.se>
6694
6695	* mpn/generic/mul.c: Added diagram on where toom functions can be
6696	called.
6697
66982012-02-01  Marc Glisse  <marc.glisse@inria.fr>
6699
6700	* gmpxx.h (__gmp_unary_expr): Make the constructor explicit.
6701	(__gmp_expr(__gmp_expr&&)): New move constructors.
6702	(__gmp_expr::operator=(__gmp_expr&&)): New move assignments.
6703	(swap): Mark as noexcept.
6704	(__GMPXX_USE_CXX11): New macro.
6705	(__GMPXX_NOEXCEPT): New macro.
6706	* tests/cxx/t-cxx11.cc: New file.
6707	* tests/cxx/Makefile.am: Added t-cxx11.
6708
67092012-01-31  Torbjorn Granlund  <tege@gmplib.org>
6710
6711	* mpn/generic/powm_sec.c (SQR_BASECASE_LIM): New name for
6712	SQR_BASECASE_MAX.
6713	(SQR_BASECASE_LIM, fat variant): Define to read __gmpn_cpuvec.
6714	(SQR_BASECASE_LIM, native variant): Define to SQR_TOOM2_THRESHOLD
6715	straight, without arithmetic.
6716	(mpn_local_sqr): Use BELOW_THRESHOLD as per Marco's suggestion.
6717
67182012-01-30  Torbjorn Granlund  <tege@gmplib.org>
6719
6720	* tests/mpz/t-powm.c: Ensure all sizes are seen.
6721
67222012-01-30  Marc Glisse  <marc.glisse@inria.fr>
6723
6724	* gmpxx.h (__gmp_binary_expr): Let things happen in place: d=a+b+c
6725	when d != c.
6726	* tests/cxx/t-binary.cc: Test variable reuse: c=a+b+c.
6727
67282012-01-28  Marc Glisse  <marc.glisse@inria.fr>
6729
6730	* gmpxx.h: Don't compute -LONG_MIN.
6731
6732	* doc/gmp.texi (gmp_randclass::get_z_bits): Use mp_bitcnt_t.
6733	* gmpxx.h: Replace unsigned long with mp_bitcnt_t.
6734
67352012-01-27  Torbjorn Granlund  <tege@gmplib.org>
6736
6737	* Upgrade to libtool 2.4.2.
6738
67392012-01-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
6740
6741	* tests/mpz/t-fac_ui.c: Increase default test cases.
6742
6743	* mpz/prodlimbs.c: New file, mpz_prodlimbs implementation.
6744	* gmp-impl.h: mpz_prodlimbs declaration.
6745	* Makefile.am (MPZ_OBJECTS): add mpz/prodlimbs$U.lo .
6746	* mpz/Makefile.am (libmpz_la_SOURCES): add prodlimbs.c .
6747	(fac_ui.h): remove target (moved up one directory).
6748	* mpz/fac_ui.c: mpz_prodlimbs removed, micro-optimisations.
6749
67502012-01-25  Torbjorn Granlund  <tege@gmplib.org>
6751
6752	* tune/tuneup.c: Remove unused tuneup variables.
6753
67542012-01-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
6755
6756	* mpz/fac_ui.c: Reduce branches in basecases.
6757
67582012-01-18  Marc Glisse  <marc.glisse@inria.fr>
6759
6760	* doc/gmp.texi (mpf_class::mpf_class): Use mp_bitcnt_t.
6761
67622012-01-17  Torbjorn Granlund  <tege@gmplib.org>
6763
6764	* configure.in: Add ultrasparc T4 support.
6765
6766	* demos/isprime.c (main): Run 25 millerrabin tests.
6767
67682012-01-16 Marco Bodrato <bodrato@mail.dm.unipi.it>
6769
6770	* mpz/fac_ui.c (SIEVE_SEED): Define value for small limb size.
6771	(mpz_oddswing_1): Reduce the number of divisions.
6772	(mpz_oddfac_1): Reduce memory usage.
6773	* mpn/minithres/gmp-mparam.h: Correct minimum for FAC_DSC_.
6774	* tune/tuneup.c (tune_fac_ui): Likewise.
6775
67762012-01-15  Niels Möller  <nisse@lysator.liu.se>
6777
6778	* mpz/scan0.c (mpz_scan0): Use ~(mp_bitcnt_t) 0, rather than
6779	ULONG_MAX, when returning "infinity".
6780	* mpz/scan1.c (mpz_scan1): Likewise.
6781
67822012-01-12  Torbjorn Granlund  <tege@gmplib.org>
6783
6784	* tests/t-popc.c: Test longer bit strings.
6785
67862012-01-12 Marco Bodrato <bodrato@mail.dm.unipi.it>
6787
6788	* mpz/divexact.c: Tight realloc, delayed if variables are reused.
6789	* mpz/lcm.c: Smaller temp space, avoid goto.
6790	* gmp-impl.h (popc_limb): avoid double & (for 8-bits limb).
6791
67922012-01-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
6793
6794	* mpn/minithres/gmp-mparam.h: New FAC_ODD_ and FAC_DSC_ thresholds.
6795	* tune/tuneup.c (tune_fac_ui): Correct minimum for FAC_DSC_.
6796
67972012-01-07  Torbjorn Granlund  <tege@gmplib.org>
6798
6799	* mpz/mul_2exp.c: Rewrite.
6800	* mpz/tdiv_q_2exp.c: Rewrite.
6801
68022012-01-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
6803
6804	* gen-fac_ui.c: Remove currently unused constants; add new odd
6805	double factorial table.
6806	* mpz/fac_ui.c (RECURSIVE_PROD_THRESHOLD): Increase default.
6807	(mpz_oddfac_1): New function: a merge of _bc_odd and _dsc_odd.
6808	(mpz_prodlimbs): More in-place computations.
6809
6810	* tune/tuneup.c (tune_fac_ui): min_is_always for FAC_ODD_.
6811
68122012-01-02 Marco Bodrato <bodrato@mail.dm.unipi.it>
6813
6814	* tune/tuneup.c (tune_fac_ui): Compute FAC_DSC before FAC_ODD.
6815
68162011-12-31  Torbjorn Granlund  <tege@gmplib.org>
6817
6818	* Makefile.am (fac_ui.h): Put file in top-level dir, not in mpz.
6819
68202011-12-31 Marco Bodrato <bodrato@mail.dm.unipi.it>
6821
6822	* tune/Makefile.am (fac_ui.c): New target.
6823	(nodist_tuneup_SOURCES,CLEANFILES): Add fac_ui.c.
6824	* tune/tuneup.c (mpz_fac_ui_tune): Declare prototype.
6825	(fac_odd_threshold,fac_dsc_threshold): New global variables.
6826	(speed_mpz_fac_ui_tune,tune_fac_ui): New functions.
6827	(all): Call tune_fac_ui.
6828	* gmp-impl.h (FAC_ODD_THRESHOLD,FAC_DSC_THRESHOLD):
6829	New thresholds: default values, and setup for tuning.
6830	(FAC_DSC_THRESHOLD_LIMIT): Define (when tuning).
6831	* mpz/fac_ui.c (FAC_ODD_THRESHOLD,FAC_DSC_THRESHOLD):
6832	Default values removed.
6833
68342011-12-30  Torbjorn Granlund  <tege@gmplib.org>
6835
6836	* mpz/hamdist.c: Fix typo in a return statement.
6837
6838	* mpn/generic/powm_sec.c (SQR_BASECASE_MAX): Set safely from
6839	SQR_TOOM2_THRESHOLD.
6840
68412011-12-17  Torbjorn Granlund  <tege@gmplib.org>
6842
6843	* tests/mpz/t-perfpow.c: Decrease default # of tests.
6844
68452011-12-16  Torbjorn Granlund  <tege@gmplib.org>
6846
6847	* tests/refmpn.c (AORS_1): Fix typo in variable type.
6848
68492011-12-10  Torbjorn Granlund  <tege@gmplib.org>
6850
6851	* mpn/generic/sbpi1_bdiv_q.c: Delay quotient limb stores in order to
6852	allow quotient and dividend to completely overlap.
6853	* mpn/generic/sbpi1_bdiv_qr.c: Likewise.
6854
68552011-12-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
6856
6857	* mpz/fac_ui.c: fac_bc_ui inlined in fac_ui.
6858
68592011-12-08  Torbjorn Granlund  <tege@gmplib.org>
6860
6861	* mpn/generic/powm_sec.c: Handle fat binaries better.
6862
6863	* mpz/fac_ui.c (mpz_bc_fac_1): Fix typo in allocation size.
6864
6865	* mpn/x86/fat/com.c: New file.
6866
6867	* mpn/x86_64/pentium4/aors_n.asm: Make it actually work for DOS64.
6868	* mpn/x86_64/pentium4/rsh1aors_n.asm: Conditionalise jump on DOS64
6869	to avoid overhead for standard ABIs.
6870
6871	* mpn/x86_64/gcd_1.asm: Support DOS64.
6872
68732011-12-07  Torbjorn Granlund  <tege@gmplib.org>
6874
6875	* configure.in: Fix typo making HAVE_NATIVE_mpn_X fail for fat
6876	functions.
6877
6878	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Add a missing break.
6879
68802011-12-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
6881
6882	* gen-fac_ui.c: Generate two more tables: odd factorial, swing.
6883
6884	* mpz/fac_ui.c: Rewrite.
6885
68862011-12-06  Niels Möller  <nisse@lysator.liu.se>
6887
6888	* mpn/generic/hgcd.c (mpn_hgcd): Use hgcd_reduce for first
6889	recursive call.
6890
68912011-12-06  Torbjorn Granlund  <tege@gmplib.org>
6892
6893	* tune/mod_1_1-1.c: Redefine the mpn_ functions, not __gmpn_ (for the
6894	benefit of fat builds).
6895	* tune/mod_1_1-2.c: Likewise.
6896
68972011-12-05  Torbjorn Granlund  <tege@gmplib.org>
6898
6899	* mpn/x86/fat/lshiftc.c: New file.
6900	* mpn/x86/fat/mod_1_1.c: New file.
6901	* mpn/x86/fat/mod_1_2.c: New file.
6902	* mpn/x86/fat/mod_1_4.c: New file.
6903
6904	* mpn/x86/fat/diveby3.c: Remove no longer fat function.
6905	* mpn/x86_64/fat/diveby3.c: Likewise.
6906
6907	* mpn/x86_64/fat/gcd_1.c: Remove since always provided as asm.
6908	* mpn/x86_64/fat/mode1o.c: Likewise.
6909
6910	* configure.in (fat_functions): Update to more relevant function set.
6911	Add special handling for mod_1_N_cps functions.
6912	* gmp-impl.h (struct cpuvec_t) : Corresponding changes.  Also add
6913	vrious declarations for new functions.
6914	* mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): Corresponding changes.
6915	* mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): Corresponding changes.
6916	* mpn/x86/fat/fat.c (__gmpn_cpuvec): Corresponding changes.
6917	* mpn/x86_64/fat/fat.c (__gmpn_cpuvec): Corresponding changes.
6918
6919	* mpn/x86_64: Port most remaining x86_64 files to DOS64.
6920
6921	* mpn/x86_64/coreisbr/aors_n.asm: Add forgotten DOS64_EXIT.
6922
6923	* mpn/x86_64/x86_64-defs.m4 (LEA): Handle non-PIC code.
6924	* mpn/x86_64/darwin.m4 (LEA): Likewise.
6925
69262011-12-04  Torbjorn Granlund  <tege@gmplib.org>
6927
6928	* mpn/x86_64/fat/fat.c (MAKE_FMS): Rewrite to handle modern CPUs.
6929	* mpn/x86/fat/fat.c (MAKE_FMS): Likewise.
6930
6931	* mpn/x86_64/darwin.m4 (PROTECT): Define to potentially useful value.
6932
69332011-12-02  Torbjorn Granlund  <tege@gmplib.org>
6934
6935	* mpn/x86_64/invert_limb_table.asm: Use PROTECT.
6936	* mpn/x86_64/invert_limb.asm: Likewise.
6937
6938	* mpn/x86_64/darwin.m4 (PROTECT, IFELF): New defines.
6939	* mpn/x86_64/dos64.m4 (PROTECT, IFELF): New defines.
6940	* mpn/x86_64/x86_64-defs.m4 (PROTECT, IFELF): New defines.
6941
69422011-12-01  Torbjorn Granlund  <tege@gmplib.org>
6943
6944	* mpn/x86_64/fat/fat.c: Copy fake cpuid code from x86/fat/fat.c.
6945
6946	* mpn/x86_64 (STD64, IFSTD): New names for ELF64, IFELF (since these
6947	denote all standard calling conventions).
6948
6949	* mpn/x86_64: Add DOS64 ABI support to more files.
6950
6951	* mpn/x86_64/mod_1_1.asm: Finish DOS64 support.
6952	* mpn/x86_64/mod_1_2.asm: Likewise.
6953	* mpn/x86_64/mod_1_4.asm: Likewise.
6954
6955	* configure.in: Add GMP_NONSTD_ABI also for fat builds.
6956
6957	* mpn/x86_64/fat/fat_entry.asm: Rewrite to support DOS64.
6958
6959	* mpn/x86_64/dos64.m4 (IFDOS, IFSTD): New defines.
6960	* mpn/x86_64/x86_64-defs (IFDOS, IFSTD): New defines.
6961
6962	* mpn/x86_64/dive_1.asm: Add DOS64 ABI support.
6963	* mpn/x86_64/mode1o.asm: Likewise.
6964
6965	* mpn/x86_64/mod_34lsub1.asm: Enable for DOS64.
6966
6967	* mpn/x86_64/invert_limb.asm: Wrap .protected decl.
6968
6969	* gmp-impl.h (DECL_divexact_1): Fix typo in return type.
6970
6971	* mpn/x86_64/dos64.m4 (LEA): New define.
6972	(PIC): Define.
6973
69742011-11-29  Torbjorn Granlund  <tege@gmplib.org>
6975
6976	* mpn/x86_64: Add DOS64 ABI support to most files.
6977
69782011-11-28  Torbjorn Granlund  <tege@gmplib.org>
6979
6980	* mpn/x86_64/mul_basecase.asm: Support ABI DOS64.
6981	* mpn/x86_64/sqr_basecase.asm: Support ABI DOS64.
6982	* mpn/x86_64/aorsmul_1.asm: Support ABI DOS64.
6983	* mpn/x86_64/mul_1.asm: Support ABI DOS64.
6984
6985	* mpn/x86_64/x86_64-defs.m4 (DOS64_ENTRY, DOS64_EXIT): New, empty defs.
6986
6987	* mpn/x86_64/dos64.m4: New file.
6988
6989	* mpn/asm-defs.m4 (ABI_SUPPORT): New dummy macro.
6990
6991	* configure.in (64-bit mingw/cygwin): Define HOST_DOS64,GMP_NONSTD_ABI.
6992	No longer clear out path_64.
6993	(mpn code selection loop): Handle GMP_NONSTD_ABI.
6994
6995	* mpn/generic/udiv_w_sdiv.c: Use CNST_LIMB for some constants.
6996
69972011-11-25  Torbjorn Granlund  <tege@gmplib.org>
6998
6999	* x86/*: Many new gmp-mparam.h file for 64-bit CPUs in 32-bit mode.
7000
7001	* configure.in: Overhaul x86/x86_64 support, merging three case
7002	statements into one.
7003
70042011-11-24  Torbjorn Granlund  <tege@gmplib.org>
7005
7006	* doc/gmp.texi (Formatted Output Strings): Clarify rules for mpf_t
7007	precision.
7008
7009	* mpn/powerpc32/p7/gmp-mparam.h: New file.
7010
7011	* tune/tuneup.c (tune_mu_div, tune_mu_bdiv): Up min_size to karatsuba's
7012	threshold.
7013
70142011-11-22  Torbjorn Granlund  <tege@gmplib.org>
7015
7016	* mpn/powerpc64/mode64/p6/aorsmul_1.asm: New file.
7017
7018	* configure.in: Don't fail fat builds under 64-bit DOS.
7019
7020	* mpn/powerpc64/mode64/aors_n.asm: Align loop for slightly better
7021	power5 performance.
7022
70232011-11-21  Torbjorn Granlund  <tege@gmplib.org>
7024
7025	* gmp-h.in (__GNU_MP_RELEASE): Renamed from typo name.
7026
70272011-11-20  Torbjorn Granlund  <tege@gmplib.org>
7028
7029	* configure.in: Split x86 CPUs into more subtypes for more accurate
7030	passing of gcc flags.
7031
7032	* mpn/powerpc32/p3-p7/aors_n.asm: New file.
7033
7034	* configure.in: Pass -m32 for powerpc64 with abi=32, using via _maybe
7035	mechanism.
7036
7037	* configure.in: Support powerpc32/p3-p7 directory for affected CPUs.
7038
70392011-11-17  Torbjorn Granlund  <tege@gmplib.org>
7040
7041	* tune/speed.c (routine): Add mpn_tabselect.
7042	* tune/common.c (speed_mpn_tabselect): New function.
7043	* tune/speed.h (SPEED_ROUTINE_MPN_COPY_CALL): New macro, made from
7044	old SPEED_ROUTINE_MPN_COPY.
7045	(SPEED_ROUTINE_MPN_COPY): Just invoke SPEED_ROUTINE_MPN_COPY_CALL.
7046	(SPEED_ROUTINE_MPN_TABSELECT): New macro.
7047
70482011-11-17  Niels Möller  <nisse@lysator.liu.se>
7049
7050	* tune/tuneup.c (tune_hgcd_appr): Increase stop_since_change.
7051
70522011-11-16  Torbjorn Granlund  <tege@gmplib.org>
7053
7054	* mpn/powerpc32/tabselect.asm: New file.
7055
7056	* mpn/powerpc64/mode64/aorscnd_n.asm: New file.
7057
70582011-11-15  Niels Möller  <nisse@lysator.liu.se>
7059
7060	* tune/speed.h (speed_mpn_hgcd_appr_lehmer): New prototype.
7061	(mpn_hgcd_lehmer_itch): Likewise.
7062	(mpn_hgcd_appr_lehmer): Likewise.
7063	(mpn_hgcd_appr_lehmer_itch): Likewise.
7064	(MPN_HGCD_LEHMER_ITCH): Deleted macro.
7065
7066	* tune/speed.c (routine): Added mpn_hgcd_appr_lehmer.
7067
7068	* tune/common.c (speed_mpn_hgcd_lehmer): Use mpn_hgcd_lehmer_itch
7069	rather than similarly named macro.
7070	(speed_mpn_hgcd_appr_lehmer): New function.
7071
7072	* tune/Makefile.am (libspeed_la_SOURCES): Added
7073	hgcd_appr_lehmer.c.
7074
7075	* tune/hgcd_appr_lehmer.c: New file.
7076
7077	* tune/tuneup.c (tune_hgcd_appr): Increased min_size to 50; some
7078	machines got small thresholds which appear to be bogus.
7079
70802011-11-15  Torbjorn Granlund  <tege@gmplib.org>
7081
7082	* mpn/generic/powm_sec.c (mpn_local_sqr): Remove forgotten TMP_* calls.
7083	(redcify): Likewise.
7084	(mpn_powm_sec): Likewise.
7085
7086	* mpn/generic/powm_sec.c (mpn_powm_sec): Rework scratch usage
7087	(mpn_powm_sec_itch): Rewrite.
7088
7089	* mpn/generic/powm_sec.c (mpn_powm_sec): Use mpn_tabselect also in
7090	initialisation.
7091
7092	* configure.in: Amend 2011-11-03 gcc_cflags change.
7093
7094	* mpn/powerpc64/tabselect.asm: New file.
7095	* mpn/x86_64/tabselect.asm: New file.
7096	* mpn/x86/tabselect.asm: New file.
7097	* mpn/ia64/tabselect.asm: New file.
7098
7099	* mpn/asm-defs.m4 (define_mpn): Add tabselect.
7100
7101	* configure.in (gmp_mpn_functions): Add tabselect.
7102	(HAVE_NATIVE): Add entries for addncd_n, subcnd_n, tabselect.
7103
7104	* mpn/generic/powm_sec.c: Remove mpn_tabselect implementation.
7105	* mpn/generic/tabselect.c: New file with removed code.
7106
71072011-11-13  Torbjorn Granlund  <tege@gmplib.org>
7108
7109	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add powm_sec.c.
7110
7111	* mpn/generic/powm_sec.c (win_size): Use POWM_SEC_TABLE
7112	(POWM_SEC_TABLE): Define default.
7113
7114	* tune/tuneup.c (tune_powm_sec): New function computing POWM_SEC_TABLE.
7115	(all): Call new function.
7116
7117	* mpn/generic/powm_sec.c (win_size): Define only when
7118	TUNE_PROGRAM_BUILD is not set.
7119
71202011-11-13  Niels Möller  <nisse@lysator.liu.se>
7121
7122	* tune/tuneup.c (tune_hgcd_appr): Use default min_size.
7123	(tune_hgcd_reduce): Increase max_size and step_factor, to 7000
7124	and 0.04, respectively.
7125
71262011-11-11  Torbjorn Granlund  <tege@gmplib.org>
7127
7128	* mpn/powerpc64/mode64/sqr_diag_addlsh1.asm: Remove.
7129
71302011-11-11  Niels Möller  <nisse@lysator.liu.se>
7131
7132	* tune/hgcd_reduce_2.c: New file.
7133	* tune/hgcd_reduce_1.c: New file.
7134
7135	* tune/tuneup.c (hgcd_appr_threshold): New threshold variable.
7136	(hgcd_reduce_threshold): Likewise.
7137	(tune_hgcd_appr): New function.
7138	(tune_hgcd_reduce): New function.
7139	(all): Call tune_hgcd_appr and tune_hgcd_reduce.
7140
7141	* tune/speed.h (speed_mpn_hgcd_reduce): Declaration.
7142	(speed_mpn_hgcd_reduce_[12]): Likewise.
7143	(mpn_hgcd_reduce_[12]): Likewise.
7144	(SPEED_ROUTINE_MPN_HGCD_REDUCE_CALL): New macro.
7145
7146	* tune/speed.c (routine): Added mpn_hgcd_reduce,
7147	mpn_hgcd_reduce_1, and mpn_hgcd_reduce_2.
7148
7149	* tune/common.c (speed_mpn_hgcd_reduce): New function.
7150	(speed_mpn_hgcd_reduce_[12]): Likewise.
7151
7152	* tune/Makefile.am (libspeed_la_SOURCES): Added hgcd_reduce_1.c
7153	hgcd_reduce_2.c.
7154	(TUNE_MPN_SRCS_BASIC): Added hgcd_appr.c and hgcd_reduce.c.
7155
7156	* mpn/generic/hgcd_appr.c (submul, hgcd_matrix_apply): Deleted
7157	functions, earlier copied to hgcd_reduce.c.
7158	(mpn_hgcd_appr): Use hgcd_reduce.
7159
71602011-11-09  Torbjorn Granlund  <tege@gmplib.org>
7161
7162	* mpn/powerpc64/mode64/sqr_basecase.asm: New file.
7163
7164	* mpn/x86_64/aorscnd_n.asm: New file.
7165
7166	* tune/speed.c (routine): Add measuring of mpn_addcnd_n, mpn_subcnd_n.
7167	* tune/common.c (speed_mpn_addcnd_n,speed_mpn_subcnd_n): New functions.
7168	* tune/speed.h: Declare them.
7169
7170	* tests/devel/try.c: Add tests for mpn_addcnd_n and mpn_subcnd_n.
7171	* tests/refmpn.c (refmpn_addcnd_n, refmpn_subcnd_n): New functions.
7172	* tests/tests.h: Declare them.
7173
7174	* configure.in (gmp_mpn_functions): Add addcnd_n and subcnd_n.
7175
71762011-11-07  Torbjorn Granlund  <tege@gmplib.org>
7177
7178	* mpn/generic/redc_1.c: Just reduce U operand using Hensel norm, but
7179	not fully canonically; leave add_n and conditional sub_n to caller.
7180	Therefore omit R argument.
7181
7182	* mpn/generic/redc_1_sec.c: Remove.
7183
7184	* gmp-impl.h (mpn_redc_1): Update declaration.
7185	(mpn_redc_1_sec): Remove declaration.
7186
7187	* configure.in (gmp_mpn_functions): Remove redc_1.
7188
7189	* mpn/x86_64/redc_1.asm: Adopt to new defined functionality/interface.
7190	* tune/speed.h (SPEED_ROUTINE_REDC_1): Likewise.
7191
7192	* tests/refmpn.c (refmpn_redc_1): Likewise; also call refmpn_addmul_1
7193	instead of mpn_addmul_1.
7194
7195	* mpn/generic/powm.c (MPN_REDC_1): New macro, use for mpn_redc_1.
7196	* mpn/generic/powm_sec.c (MPN_REDC_1_SEC): New macro, use for
7197	mpn_redc_1_sec.
7198
71992011-11-03  Torbjorn Granlund  <tege@gmplib.org>
7200
7201	* dumbmp.c (mpz_sub): Abort for non-handled case.
7202
7203	* mpn/powerpc64/mode64/lshiftc.asm: Move file from here...
7204	* mpn/powerpc64/lshiftc.asm: ...to here, with trivial modifications.
7205
7206	* configure.in: Pass -m32 in more cases, using _maybe mechanism.
7207	Inherit default gcc_cflags in more places.
7208
7209	* mpn/powerpc64/mode64/p7/gmp-mparam.h: New file.
7210
72112011-11-02  Torbjorn Granlund  <tege@gmplib.org>
7212
7213	* mpn/s390_64/invert_limb.asm: Slight optimisation.
7214
7215	* configure.in (s390): Set gcc_32_cflags_maybe.
7216
7217	* mpn/s390_32/gmp-mparam.h: Put in proper data.
7218	* mpn/s390_32/esame/gmp-mparam.h: New file.
7219
7220	* mpn/x86_64/bobcat/gmp-mparam.h: New file.
7221
7222	* mpn/s390_32/lshift.asm: New file.
7223	* mpn/s390_32/rshift.asm: New file.
7224	* mpn/s390_32/lshiftc.asm: New file.
7225
72262011-10-31  Torbjorn Granlund  <tege@gmplib.org>
7227
7228	* mpn/powerpc64/sqr_diagonal.asm: Move from here...
7229	* mpn/powerpc64/mode32/sqr_diagonal.asm: ...to here.
7230
7231	* mpn/powerpc64/mode64/sqr_diag_addlsh1.asm: New file.
7232
7233	* mpn/s390_64/sqr_basecase.asm: Rewrite sqr_diag_addlsh1 code.
7234	* mpn/s390_32/esame/sqr_basecase.asm: Likewise.
7235
72362011-10-29  Torbjorn Granlund  <tege@gmplib.org>
7237
7238	* mpn/s390_64/lshift.asm: Complete rewrite.
7239	* mpn/s390_64/rshift.asm: Likewise.
7240
7241	* mpn/s390_64/lshiftc.asm: New file.
7242
72432011-10-28  Torbjorn Granlund  <tege@gmplib.org>
7244
7245	* mpn/s390_32/esame/aors_n.asm: New file, with rewritten add/sub code.
7246
72472011-10-27  Torbjorn Granlund  <tege@gmplib.org>
7248
7249	From Per Olofsson:
7250	* gmp-impl.h (BSWAP_LIMB): Rename variable to avoid BSWAP_LIMB_FETCH
7251	clash.
7252
7253	* mpn/s390_32/esame/mul_basecase.asm: New file.
7254
7255	* mpn/s390_32/esame/sqr_basecase.asm: New file.
7256
7257	* mpn/s390_32/logops_n.asm: New file.
7258
7259	* mpn/s390_64/logops_n.asm: Fix rp=up code.  Remove a leftover insn.
7260
72612011-10-26  Niels Möller  <nisse@lysator.liu.se>
7262
7263	* gmp-impl.h (mpn_hgcd_reduce, mpn_hgcd_reduce_itch): Added
7264	prototypes.
7265	(HGCD_APPR_THRESHOLD): Set up threshold for tuning.
7266	(HGCD_REDUCE_THRESHOLD): Likewise.
7267
7268	* configure.in (gmp_mpn_functions): Added hgcd_reduce.
7269
7270	* mpn/generic/hgcd_reduce.c: New file.
7271
72722011-10-24  Torbjorn Granlund  <tege@gmplib.org>
7273
7274	* mpn/x86_64/sqr_basecase.asm: Put intermediate result into R, don't
7275	allocate any stack space.
7276
72772011-10-23  Torbjorn Granlund  <tege@gmplib.org>
7278
7279	* mpn/s390_64/logops_n.asm: Use nc, oc, xc when possible.
7280
7281	* tune/common.c (speed_mpn_and_n, speed_mpn_andn_n, etc):
7282	Pass correct input args.
7283
7284	* mpn/s390_64/mod_34lsub1.asm: Use llgfr for zero extensions.
7285
7286	* mpn/s390_64/mul_basecase.asm: New file.
7287
7288	* mpn/s390_64/sqr_basecase.asm: New file.
7289	* mpn/s390_64/sqr_diag_addlsh1.asm: Removed, lives on in sqr_basecase.
7290
7291	* mpn/s390_64/bdiv_dbm1c.asm: Shave off 1 c/l.
7292
7293	* mpn/s390_64/aorrlsh1_n.asm: New file, developed from aorslsh1_n.asm.
7294	* mpn/s390_64/sublsh1_n.asm: New file.
7295	* mpn/s390_64/aorslsh1_n.asm: Remove file.
7296
72972011-10-22  Torbjorn Granlund  <tege@gmplib.org>
7298
7299	* mpn/s390_64/logops_n.asm: New file.
7300
7301	* mpn/s390_64/aors_n.asm: New file, with rewritten add/sub code.
7302
73032011-10-20  Torbjorn Granlund  <tege@gmplib.org>
7304
7305	* tune/speed.h (SPEED_ROUTINE_MPN_SQR_DIAL_ADDLSH1_CALL): New macro.
7306	* tune/common.c (speed_mpn_sqr_diag_addlsh1): New function.
7307	* tune/speed.c (routine): Measure mpn_sqr_diag_addlsh1.
7308
7309	* mpn/s390_64/sqr_diag_addlsh1.asm: Rewrite like s390_32/esame code.
7310
7311	* mpn/s390_32/esame/sqr_diag_addlsh1.asm: Save just needed registers.
7312
73132011-10-19  Torbjorn Granlund  <tege@gmplib.org>
7314
7315	* mpn/s390_32/esame/add_n.asm: Rewrite, similar to s390_64 code.
7316	* mpn/s390_32/esame/add_n.asm: Likewise.
7317
73182011-10-17  Torbjorn Granlund  <tege@gmplib.org>
7319
7320	* mpn/s390_32/esame/aorslsh1_n.asm: New file.
7321
73222011-10-16  Torbjorn Granlund  <tege@gmplib.org>
7323
7324	* mpn/s390_32/esame/sqr_diag_addlsh1.asm: New file.
7325
7326	* mpn/s390_32/copyi.asm: New file.
7327	* mpn/s390_32/copyd.asm: New file.
7328
7329	* mpn/s390_64/copyd.asm: Optimise.
7330
7331	* mpn/s390_64/copyi.asm: Rewrite along the lines of glibc memcpy.
7332
7333	* mpn/s390_64/aorslsh1_n.asm: New file.
7334
7335	* mpn/s390_64/mod_34lsub1.asm: New file.
7336
7337	* mpn/s390_64/sqr_diag_addlsh1.asm: New file.
7338
73392011-10-15  Torbjorn Granlund  <tege@gmplib.org>
7340
7341	* configure.in (s390): Rewrite support to handle known CPUs.
7342	* config.guess: Recognise s390 CPUs.
7343	* config.sub: Match s390 CPUs.
7344	* acinclude.m4 (S390_PATTERN, S390X_PATTERN): New defines.
7345
73462011-10-14  Torbjorn Granlund  <tege@gmplib.org>
7347
7348	From Per Olofsson:
7349	* mpn/generic/popham.c: Add __GMP_NOTHROW to make it match gmp.h.
7350	* mpn/generic/gcd_1.c: Separate declarations and initialisers for the
7351	benefit of C++.
7352
7353	* configure.in: AC_DEFINE HAVE_HOST_CPU_s390_zarch.
7354	* longlong.h (s390): Use it.
7355	(s390 umul_ppmm): Fix typo in pure C variant.
7356
73572011-10-13  Torbjorn Granlund  <tege@gmplib.org>
7358
7359	* longlong.h (s390): Put back an accidentally deleted #else.
7360
7361	* configure.in (s390): Unset extra_functions for s390x.
7362
73632011-10-12  Torbjorn Granlund  <tege@gmplib.org>
7364
7365	* mpn/s390_64/lshift.asm: Reduce register usage.
7366	* mpn/s390_64/rshift.asm: Likewise.
7367
7368	* longlong.h (s390 umul_ppmm): With new-enough gcc, avoid asm.
7369
7370	From Andreas Krebbel:
7371	* longlong.h (s390 umul_ppmm): Support 32-bit limbs with gcc using
7372	64-bit registers.
7373	(s390 udiv_qrnnd): Likewise.
7374
73752011-10-11  Torbjorn Granlund  <tege@gmplib.org>
7376
7377	* configure.in (s390x): Pass -mzarch to gcc in 32-bit mode.
7378
7379	* longlong.h (s390x): Add __CLOBBER_CC for relevant asm patterns.
7380	* mpn/generic/mod_1_1.c (s390x add_mssaaaa): Likewise.
7381
7382	* mpn/s390_64/copyd.asm: New file.
7383
73842011-10-10  Niels Möller  <nisse@lysator.liu.se>
7385
7386	* mpn/generic/hgcd_appr.c: Deleted debugging code.
7387
7388	* tests/mpn/t-hgcd_appr.c (main): Added -v flag.
7389	(hgcd_appr_valid_p): Increased margin of non-minimality for
7390	divide-and-conquer algorithm. Display bit counts only if
7391	-v is used.
7392
7393	* mpn/generic/hgcd_appr.c (submul): New (static) function.
7394	(hgcd_matrix_apply): New function.
7395	(mpn_hgcd_appr_itch): Account for divide-and-conquer algorithm.
7396	(mpn_hgcd_appr): Implemented divide-and-conquer.
7397
73982011-10-10  Torbjorn Granlund  <tege@gmplib.org>
7399
7400	* mpn/generic/mod_1_1.c (add_mssaaaa): Add s390x variant.  Put arm code
7401	inside __GNUC__.
7402
7403	* tune/time.c (STCK): Use proper memory constraint.
7404
7405	From Marco Trudel:
7406	* tests/mpz/t-scan.c (check_ref): Fix loop end bound.
7407
74082011-10-10  Niels Möller  <nisse@lysator.liu.se>
7409
7410	* gmp-impl.h: (HGCD_APPR_THRESHOLD): New threshold.
7411
7412	* mpn/generic/hgcd_appr.c (mpn_hgcd_appr): Interface change.
7413	Destroy inputs, let caller make working copies if needed.
7414	(mpn_hgcd_appr_itch): Reduced scratch need.
7415	* gmp-impl.h: Updated mpn_hgcd_appr prototype.
7416	* tests/mpn/t-hgcd_appr.c (one_test): Make working copies for
7417	hgcd_appr.
7418	* tune/common.c (speed_mpn_hgcd_appr): Use SPEED_ROUTINE_MPN_HGCD_CALL.
7419	* tune/speed.h (SPEED_ROUTINE_MPN_HGCD_APPR_CALL): Deleted.
7420
74212011-10-09  Torbjorn Granlund  <tege@gmplib.org>
7422
7423	* mpn/s390_64/copyi.asm: New file.
7424	* mpn/s390_64/lshift.asm: New file.
7425	* mpn/s390_64/rshift.asm: New file.
7426
7427	* mpn/s390_64/add_n.asm: Rewrite using lmg/stmg.
7428	* mpn/s390_64/sub_n.asm: Likewise.
7429
7430	* mpn/s390_64/invert_limb.asm: Save a callee-saves register less.
7431
7432	* tune/time.c (getrusage_backwards_p): Properly cast printed values.
7433
7434	* longlong.h (s390x): Put back UDItype casts to make gcc reloading use
7435	right more for constants.
7436	(s390x count_leading_zeros): Disable until we support z10 specifically.
7437	(s390x add_ssaaaa): Remove algsi/slgsi until we support z10.
7438
74392011-10-09  Niels Möller  <nisse@lysator.liu.se>
7440
7441	* mpn/generic/hgcd_matrix.c (mpn_hgcd_matrix_adjust): Declare
7442	matrix argument const.
7443
74442011-10-08  Niels Möller  <nisse@lysator.liu.se>
7445
7446	* tests/mpn/t-hgcd_appr.c (hgcd_appr_valid_p): Adjusted the
7447	allowed margin of non-minimality for hgcd_appr.
7448
7449	* mpn/generic/hgcd_appr.c (mpn_hgcd_appr): Fixed handling of
7450	extra_bits, starting at zero, to ensure that we don't produce too
7451	small remainders. Added a final reduction loop when we we
7452	otherwise terminate with extra_bits > 0, to make the returned
7453	remainders closer to minimal.
7454
74552011-10-07  Torbjorn Granlund  <tege@gmplib.org>
7456
7457	* longlong.h (s390): Add 32-bit zarch umul_ppmm and udiv_qrnnd.
7458	(s390): Overhaul 32-bit and 64-bit code.
7459
74602011-10-07  Niels Möller  <nisse@lysator.liu.se>
7461
7462	* tune/speed.h (speed_mpn_hgcd_appr): New prototype.
7463	(SPEED_ROUTINE_MPN_HGCD_APPR_CALL): New macro.
7464	* tune/common.c (speed_mpn_hgcd_appr): New function.
7465	* tune/speed.c (routine): Added mpn_hgcd_appr.
7466
7467	* tests/mpn/t-hgcd_appr.c: New file.
7468	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-hgcd_appr.
7469
7470	* configure.in (gmp_mpn_functions): Added hgcd_step and hgcd_appr.
7471
7472	* gmp-impl.h: Added prototypes for mpn_hgcd_step,
7473	mpn_hgcd_appr_itch and mpn_hgcd_appr.
7474
7475	* mpn/generic/hgcd_appr.c: New file.
7476
7477	* mpn/generic/hgcd_step.c: New file, extracted from hgcd.c.
7478	(mpn_hgcd_step): Renamed, from...
7479	* mpn/generic/hgcd.c (hgcd_step): ...old name. Renamed and moved
7480	to hgcd_step.c.
7481	(hgcd_hook): Also moved to hgcd_step.c.
7482	(mpn_hgcd): Updated for hgcd_step renaming.
7483
74842011-10-06  Torbjorn Granlund  <tege@gmplib.org>
7485
7486	* mpn/s390_64/invert_limb.asm: New file.
7487
74882011-10-04  Torbjorn Granlund  <tege@gmplib.org>
7489
7490	* mpn/s390_64/submul_1.asm: New file.
7491	* mpn/s390_32/esame/submul_1.asm: New file.
7492
7493	* mpn/generic/mulmid.c (mpn_mulmid): Move a TMP_DECL to block start.
7494
7495	* mpn/Makefile.am (TARG_DIST): Add s390_32 and s390_64, remove s390 and
7496	z8000x.
7497
7498	* doc/gmp.texi (Custom Allocation): Rephrase a paragraph.
7499
7500	* demos/factorize.c: Run 25 Miller-Rabin tests.
7501
7502	* mpz/nextprime.c: Run 25 mpz_millerrabin tests (was 10).
7503
75042011-10-03  Torbjorn Granlund  <tege@gmplib.org>
7505
7506	* configure.in: Support s390x.
7507
7508	* longlong.h: Add support for 64-bit s390x.
7509
7510	* mpn/s390_64: New directory.
7511	* mpn/s390_64/add_n.asm: New file.
7512	* mpn/s390_64/sub_n.asm: New file.
7513	* mpn/s390_64/mul_1.asm: New file.
7514	* mpn/s390_64/addmul_1.asm: New file.
7515	* mpn/s390_64/bdiv_dbm1c.asm: New file.
7516	* mpn/s390_64/gmp-mparam.h: New file, taken from x86_64.
7517
7518	* mpn/s390_32: Directory renamed from mpn/s390.
7519	* mpn/s390_32/gmp-mparam.h: New file, taken from x86_64.
7520	* mpn/s390_32/esame/add_n.asm: New file.
7521	* mpn/s390_32/esame/sub_n.asm: New file.
7522	* mpn/s390_32/esame/mul_1.asm: New file.
7523	* mpn/s390_32/esame/addmul_1.asm: New file.
7524	* mpn/s390_32/esame/bdiv_dbm1c.asm: New file.
7525
75262011-10-03  Niels Möller  <nisse@lysator.liu.se>
7527
7528	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-mulmid.
7529	* tests/mpn/t-mulmid.c: New file.
7530
7531	mulmid-related assembly for x86_64, from David Harvey:
7532	* mpn/asm-defs.m4 (define_mpn): Added [add,sub]_err[1,2,3]_n and
7533	mulmid_basecase. Also use m4_not_for_expansion on the
7534	corresponding OPERATION_* symbols.
7535	* mpn/x86_64/aors_err1_n.asm: New file.
7536	* mpn/x86_64/aors_err2_n.asm: Likewise.
7537	* mpn/x86_64/aors_err3_n.asm: Likewise.
7538	* mpn/x86_64/mulmid_basecase.asm: Likewise.
7539	* mpn/x86_64/core2/aors_err1_n.asm: Likewise.
7540	* mpn/x86_64/gmp-mparam.h (MULMID_TOOM42_THRESHOLD): New value.
7541	* mpn/x86_64/core2/gmp-mparam.h (MULMID_TOOM42_THRESHOLD): Likewise.
7542
7543	Tuning of mulmid, from David Harvey:
7544	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Added mulmid.c
7545	mulmid_n.c toom42_mulmid.c.
7546	* tune/speed.h: Prototypes for mulmid-related functions.
7547	(struct speed_params): Increased max number of sources to 5.
7548	(SPEED_ROUTINE_MPN_BINARY_ERR_N_CALL): New macro.
7549	(SPEED_ROUTINE_MPN_BINARY_ERR1_N): Likewise.
7550	(SPEED_ROUTINE_MPN_BINARY_ERR2_N): Likewise.
7551	(SPEED_ROUTINE_MPN_BINARY_ERR3_N): Likewise.
7552	(SPEED_ROUTINE_MPN_MULMID): Likewise.
7553	(SPEED_ROUTINE_MPN_MULMID_N): Likewise.
7554	(SPEED_ROUTINE_MPN_TOOM42_MULMID): Likewise.
7555	* tune/common.c (mpn_[add,sub]_err[1,2,3]_n): New functions.
7556	(speed_mpn_mulmid_basecase): New function.
7557	(speed_mpn_mulmid): New function.
7558	(speed_mpn_mulmid_n): New function.
7559	(speed_mpn_toom42_mulmid): New function.
7560	* tune/speed.c (routine): Added mpn_[add,sub]_err[1,2,3]_n,
7561	mpn_mulmid_basecase, mpn_toom42_mulmid, mpn_mulmid_n, and
7562	mpn_mulmid.
7563	* tune/tuneup.c (mulmid_toom42_threshold): New threshold variable.
7564	(tune_mulmid): New function.
7565	(all): Call tune_mulmid.
7566
7567	Testing of mulmid, from David Harvey:
7568	* tests/refmpn.c (AORS_ERR1_N): New macro.
7569	(refmpn_add_err1_n, refmpn_sub_err1_n): New functions.
7570	(AORS_ERR2_N): New macro.
7571	(refmpn_add_err2_n, refmpn_sub_err2_n): New functions.
7572	(AORS_ERR3_N): New macro.
7573	(refmpn_add_err3_n, refmpn_sub_err3_n): New functions.
7574	(refmpn_mulmid_basecase): New function.
7575	(refmpn_toom42_mulmid): New function, wrapper for
7576	refmpn_mulmid_basecase.
7577	(refmpn_mulmid_n): Likewise.
7578	(refmpn_mulmid): Likewise.
7579	* tests/tests.h: Prototypes for new functions.
7580	* tests/devel/try.c (NUM_SOURCES): Increased to 5.
7581	(struct try_t): Use NUM_SOURCES and NUM_DESTS constants.
7582	(SIZE_4, SIZE_6, SIZE_DIFF_PLUS_3, SIZE_ODD): New constants.
7583	(OVERLAP_NOT_DST2): New flag.
7584	(param_init): New mulmid-related operation types.
7585	(mpn_toom42_mulmid_fun): New function.
7586	(choice_array): Added mulmid-related entries.
7587	(overlap_array): Extended for larger NUM_SOURCES.
7588	(OVERLAP_COUNT): Handle OVERLAP_NOT_DST2.
7589	(call): Support mulmid-related functions.
7590	(pointer_setup): Handle SIZE_4, SIZE_6, and SIZE_DIFF_PLUS_3.
7591	(SIZE_ITERATION): Handle SIZE_ODD.
7592	(SIZE2_FIRST): Handle SIZE_CEIL_HALF.
7593	(SIZE2_LAST): Likewise.
7594
7595	Implementation of mulmid, from David Harvey:
7596	* mpn/generic/add_err1_n.c (mpn_add_err1_n): New file and function.
7597	* mpn/generic/add_err2_n.c (mpn_add_err2_n): Likewise.
7598	* mpn/generic/add_err3_n.c (mpn_add_err3_n): Likewise.
7599	* mpn/generic/sub_err1_n.c (mpn_sub_err1_n): Likewise.
7600	* mpn/generic/sub_err2_n.c (mpn_sub_err2_n): Likewise.
7601	* mpn/generic/sub_err3_n.c (mpn_sub_err3_n): Likewise.
7602	* mpn/generic/mulmid_basecase.c (mpn_mulmid_basecase): Likewise.
7603	* mpn/generic/mulmid_n.c (mpn_mulmid_n): Likewise.
7604	* mpn/generic/toom42_mulmid.c (mpn_toom42_mulmid): Likewise.
7605	* configure.in (gmp_mpn_functions): Added mulmid-related
7606	functions.
7607	(GMP_MULFUNC_CHOICES): Handle aors_err1_n, aors_err2_n, and
7608	aors_err3_n.
7609	* gmp-impl.h: Added prototypes for mulmid functions.
7610	(MPN_TOOM42_MULMID_MINSIZE): New constant.
7611	(MULMID_TOOM42_THRESHOLD): New threshold.
7612	(mpn_toom42_mulmid_itch): New macro.
7613
76142011-10-03  Niels Möller  <nisse@lysator.liu.se>
7615
7616	* tune/tune-gcd-p.c (main): Fixed broken loop conditions.
7617
76182011-09-26  Torbjorn Granlund  <tege@gmplib.org>
7619
7620	* mpn/sh/sh2/submul_1.asm: Make this old submul_1 implementation
7621	actually compute intended function.
7622
7623	* longlong.h (SH): Recognise predefs for all SH processors as defined
7624	by current gcc versions.
7625
76262011-09-25  Torbjorn Granlund  <tege@gmplib.org>
7627
7628	* mpn/sh: Migrate files to '.asm'.
7629	* configure.in: Recognise sh3 and sh4.
7630
76312011-09-21  Marc Glisse  <marc.glisse@inria.fr>
7632
7633	* gmpxx.h (mpz_class::swap): New function.
7634	(mpq_class::swap): Likewise.
7635	(mpf_class::swap): Likewise.
7636	(swap): New function.
7637	* tests/cxx/t-assign.cc: Test the above.
7638	* doc/gmp.texi (swap): Document the above.
7639
76402011-08-21  Marc Glisse  <marc.glisse@inria.fr>
7641
7642	* tests/cxx/t-ops2.cc: check mul-div by 2.
7643
7644	* gmpxx.h (__GMPXX_CONSTANT): New macro (__builtin_constant_p).
7645	(__gmp_binary_lshift): Move before multiplication. Optimize x << 0.
7646	(__gmp_binary_rshift): Move before division. Optimize x >> 0.
7647	(__gmp_binary_plus): Optimize x + 0. Rewrite rational + integer.
7648	(__gmp_binary_minus): Optimize x - 0 and 0 - x.
7649	Rewrite rational - integer.
7650	(__gmp_binary_multiplies): Optimize x * 2^n.
7651	(__gmp_binary_divides): Optimize x / 2^n.
7652	(__gmp_binary_*): Deduplicate code for symmetric operations.
7653
76542011-08-18  Torbjorn Granlund  <tege@gmplib.org>
7655
7656	* printf/doprntf.c (__gmp_doprnt_mpf): For DOPRNT_CONV_FIXED, ask for
7657	one more digit.
7658
76592011-08-17  Torbjorn Granlund  <tege@gmplib.org>
7660
7661	* mpf/sub.c: Fix typo in copy condition.  Delay an allocation.
7662
76632011-08-12  Torbjorn Granlund  <tege@gmplib.org>
7664
7665	* gmp-impl.h (LIMBS_PER_DIGIT_IN_BASE): Fix typo.
7666
76672011-08-10  Torbjorn Granlund  <tege@gmplib.org>
7668
7669	* gmp-impl.h (DIGITS_IN_BASEGT2_FROM_BITS): New.
7670	(DIGITS_IN_BASE_FROM_BITS): Compute more accurate result.
7671	(MPN_SIZEINBASE): Use DIGITS_IN_BASEGT2_FROM_BITS.
7672
7673	* tests/rand/t-lc2exp.c (check_bigc): Call abort after reporting error.
7674
76752011-08-09  Torbjorn Granlund  <tege@gmplib.org>
7676
7677	* mpz/out_str.c (mpz_out_str): Reinsert accidentally deleted str_size
7678	adjustment.
7679
7680	* gmp-impl.h (DIGITS_IN_BASE_FROM_BITS): Simplify, also avoiding
7681	overflow for base 2.
7682
76832011-08-07  Torbjorn Granlund  <tege@gmplib.org>
7684
7685	* gmp-impl.h (struct bases): Add log2b and logb2 field, remove
7686	chars_per_limb_exactly field.
7687	(DIGITS_IN_BASE_FROM_BITS): New.
7688	(DIGITS_IN_BASE_PER_LIMB): New.
7689	(LIMBS_PER_DIGIT_IN_BASE): New.
7690	* gen-bases.c: Generate log2b and logb2 fields; do not generate
7691	chars_per_limb_exactly field.
7692	* mpf/get_str.c mpf/out_str.c mpf/set_str.c mpn/generic/get_str.c
7693	  mpn/generic/sizeinbase.c mpq/get_str.c mpz/inp_str.c mpz/out_str.c
7694	  mpz/set_str.c printf/doprntf.c tune/speed.h tune/tuneup.c:
7695	Use new macros.
7696
76972011-08-04  Torbjorn Granlund  <tege@gmplib.org>
7698
7699	* dumbmp.c (mpz_root): Reinsert accidentally removed line.
7700
77012011-08-03  Torbjorn Granlund  <tege@gmplib.org>
7702
7703	* dumbmp.c (mpz_tdiv_qr): Correctly handle dividend value being equal
7704	to divisor value.
7705	(mpz_root): Create reasonable starting approximation.
7706	(mpz_sqrt): New function.
7707	(mpz_mul_2exp): Add faster block shifting code, disabled for now.
7708
77092011-07-15  Torbjorn Granlund  <tege@gmplib.org>
7710
7711	* mpn/arm/invert_limb.asm: Swap around some registers to silence 'as'
7712	warnings.
7713
77142011-07-14  Torbjorn Granlund  <tege@gmplib.org>
7715
7716	* mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q): Get mpn_sub_1 size
7717	argument right.
7718
77192011-07-04  Torbjorn Granlund  <tege@gmplib.org>
7720
7721	* tests/misc/t-locale.c: Disable test for mingw.
7722
7723	* configure.in (x86_64 *-*-mingw*): Handle also cygwin here; clear out
7724	extra_functions_64.
7725
77262011-07-02  Torbjorn Granlund  <tege@gmplib.org>
7727
7728	* config.guess: Don't print newline in x86 cpuid function.
7729	Rewrite x86-64 cpu recognition asm code to work under Windoze.
7730
77312011-06-16  Torbjorn Granlund  <tege@gmplib.org>
7732
7733	* acinclude.m4 (GMP_ASM_RODATA): Fix typo in 2011-04-20 change.
7734
7735	* configure.in: Surround tr ranges with [] for portability.
7736
77372011-05-25  Niels Möller  <nisse@lysator.liu.se>
7738
7739	* tune/tune-gcd-p.c (search): New function to search for minimum.
7740	(main): Replaced slow linear search.
7741
77422011-05-24  Niels Möller  <nisse@lysator.liu.se>
7743
7744	* tune/Makefile.am (EXTRA_PROGRAMS): Added tune-gcd-p. Also added
7745	related automake variables.
7746
7747	* mpn/Makefile.am (tune-gcd-p): Deleted target.
7748
7749	* tune/tune-gcd-p.c: New file, extracted from mpn/generic/gcd.c
7750	and updated.
7751	* mpn/generic/gcd.c: Deleted the corresponding code, including
7752	main function.
7753
77542011-05-23  Niels Möller  <nisse@lysator.liu.se>
7755
7756	* mpz/jacobi.c (mpz_jacobi): Simplified by swapping operands when
7757	needed, to get asize >= bsize. Use the reciprocity law generalized
7758	to work when one operand is even.
7759
77602011-05-22  Niels Möller  <nisse@lysator.liu.se>
7761
7762	* mpz/jacobi.c (mpz_jacobi): Another bugfix for the asize == 1
7763	case. Sometimes, powers of two in b were taken into account twice.
7764
77652011-05-21  Niels Möller  <nisse@lysator.liu.se>
7766
7767	* mpz/jacobi.c (mpz_jacobi): The handling of asize == 1 was
7768	broken. Rewrote it.
7769
7770	* tests/mpz/t-jac.c (mpz_nextprime_step): Sanity check that prime
7771	candidate and step has no common factor.
7772	(check_data): Added some test cases related to the asize == 1 case
7773	in mpz_jacobi.
7774
77752011-05-20  Niels Möller  <nisse@lysator.liu.se>
7776
7777	* gmp-impl.h: Jacobi-related prototypes.
7778
7779	* configure.in (gmp_mpn_functions): Added jacobi_2, jacobi,
7780	hgcd2_jacobi, hgcd_jacobi, and removed jacobi_lehmer.
7781
7782	* mpz/jacobi.c (STRIP_TWOS): Deleted macro.
7783	(mpz_jacobi): Partially rewritten, to no longer makes the A
7784	operand odd. Use new mpn_jacobi_n.
7785
7786	* mpn/generic/jacobi_lehmer.c: Deleted file.
7787
7788	* mpn/generic/jacobi.c (mpn_jacobi_n): New subquadratic jacobi
7789	implementation. Supersedes jacobi_lehmer.c.
7790
7791	* mpn/generic/hgcd_jacobi.c (mpn_hgcd_jacobi): New file and
7792	function. A copy of mpn_hgcd, using mpn_hgcd2_jacobi, and with calls to
7793	mpn_jacobi_update when appropriate.
7794
7795	* mpn/generic/jacobi_2.c (mpn_jacobi_2): New file. Extracted from
7796	jacobi_lehmer.c.
7797	* mpn/generic/hgcd2_jacobi.c (mpn_hgcd2_jacobi): Likewise.
7798
7799	* mpn/generic/hgcd.c (hgcd_hook): Avoid using NULL.
7800
78012011-05-19  Niels Möller  <nisse@lysator.liu.se>
7802
7803	* tune/hgcd_lehmer.c (__gmpn_hgcd_itch): Don't rename symbols for
7804	the functions moved to hgcd_matrix.c.
7805
7806	* configure.in (gmp_mpn_functions): Added hgcd_matrix.
7807
7808	* mpn/generic/hgcd.c (hgcd_matrix_update_1): Deleted. Several other
7809	helper functions moved to hgcd_matrix.c, see below.
7810	(hgcd_hook): New function.
7811	(hgcd_step): Simplified, using mpn_gcd_subdiv_step and hgcd_hook.
7812
7813	* mpn/generic/hgcd_matrix.c: New file.
7814	(mpn_hgcd_matrix_init): Moved here, from hgcd.c.
7815	(mpn_hgcd_matrix_update_q): Likewise.
7816	(mpn_hgcd_matrix_mul_1): Likewise.
7817	(mpn_hgcd_matrix_mul): Likewise.
7818	(mpn_hgcd_matrix_adjust): Likewise.
7819
7820	* mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): New
7821	argument s, for use by hgcd.
7822	* gmp-impl.h (mpn_gcd_subdiv_step): Update declaration.
7823
7824	* mpn/generic/gcd.c (mpn_gcd): Pass s = 0 to mpn_gcd_subdiv_step.
7825	* mpn/generic/gcdext.c (mpn_gcdext): Likewise. Also added an ASSERT.
7826	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Likewise.
7827	(mpn_gcdext_hook): Added some ASSERTs.
7828	* mpn/generic/jacobi_lehmer.c (mpn_jacobi_lehmer): Likewise.
7829
78302011-05-17  Niels Möller  <nisse@lysator.liu.se>
7831
7832	* doc/gmp.texi (mpn_gcd, mpn_gcdext): Document input requirements:
7833	Must have un >= vn > 0, and V normalized.
7834	* mpn/generic/gcdext.c (mpn_gcdext): Added ASSERT for input
7835	normalization.
7836	* mpn/generic/gcd.c (mpn_gcd): Added ASSERTs for input
7837	requirements.
7838
78392011-05-15  Marc Glisse  <marc.glisse@inria.fr>
7840
7841	* gmpxx.h (operator<<): Dedup.
7842	* tests/cxx/t-iostream.cc: Test on compound types.
7843
7844	* gmpxx.h (__gmp_binary_expr): Let things happen in place: c=(a+b)/2.
7845
78462011-05-10  Marc Glisse  <marc.glisse@inria.fr>
7847
7848	* gmpxx.h (__gmp_unary_expr): Let things happen in place: c=-(a+b).
7849	(operator>>): Clean the commenting out.
7850	* tests/cxx/t-iostream.cc: New file.
7851	* tests/cxx/Makefile.am: Added t-iostream.
7852
78532011-05-10  Niels Möller  <nisse@lysator.liu.se>
7854
7855	* doc/gmp.texi (mpz_gcd): Document that gcd(0,0) = 0.
7856	(mpz_gcdext): Document range for cofactors.
7857
78582011-05-09  Niels Möller  <nisse@lysator.liu.se>
7859
7860	* mpz/gcdext.c (mpz_gcdext): Increased sp allocation to bsize+1 limbs.
7861	* doc/gmp.texi (mpn_gcdext): Fixed documentation of allocation
7862	requirements; one extra limb is still needed for S.
7863
78642011-05-09  Torbjorn Granlund  <tege@gmplib.org>
7865
7866	* mpn/x86/fat/gmp-mparam.h (BMOD_1_TO_MOD_1_THRESHOLD): Define.
7867	* mpn/x86_64/fat/gmp-mparam.h (BMOD_1_TO_MOD_1_THRESHOLD): Define.
7868
78692011-05-08  Marc Glisse  <marc.glisse@inria.fr>
7870
7871	* gmpxx.h: Replace unsigned long with mp_bitcnt_t in many places.
7872	* doc/gmp.texi: Likewise.
7873
78742011-05-06  Marc Glisse  <marc.glisse@inria.fr>
7875
7876	* gmpxx.h (mpz_class): Make constructor from mp[qf]_class explicit.
7877	(mpq_class): Make constructor from mpf_class explicit.
7878	* doc/gmp.texi: Document the above.
7879	* NEWS: Likewise, and mention the EOF istream fix.
7880	* tests/cxx/t-mix.cc: New file.
7881	* tests/cxx/Makefile.am: Added t-mix.
7882
7883	* tests/cxx/t-assign.cc: Minor tweak.
7884	* tests/cxx/t-misc.cc: Likewise.
7885
7886	* gmpxx.h (__gmp_resolve_temp): Remove.
7887	(__gmp_set_expr): Remove some overloads.
7888	(mpq_class): mpz_init_set the numerator and denominator instead of
7889	mpq_init + mpq_set.
7890	(mpz_class): Dedup the string constructors.
7891	(mpq_class): Likewise.
7892
7893	* tests/cxx/t-ops3.cc: New file.
7894	* tests/cxx/Makefile.am: Added t-ops3.
7895
78962011-05-05  Torbjorn Granlund  <tege@gmplib.org>
7897
7898	* mpz/gcdext.c: Correct sgn computation.
7899	Use MPZ_REALLOC.
7900
79012011-05-05  Marc Glisse  <marc.glisse@inria.fr>
7902
7903	* mpn/x86_64/fat/fat.c: Update for Sandy Bridge.
7904	* config.guess: warning to keep it in sync with fat.c.
7905
79062011-05-05  Torbjorn Granlund  <tege@gmplib.org>
7907
7908	* mpn/x86_64/fat/fat_entry.asm (PIC_OR_DARWIN): New symbol.  Use it to
7909	work around Darwin problems.
7910
79112011-05-04  Niels Möller  <nisse@lysator.liu.se>
7912
7913	* mpz/gcdext.c (mpz_gcdext): Reduced temporary allocations. Use
7914	mpz_divexact when computing the second cofactor.
7915
79162011-05-03  David Harvey  <dmharvey@cims.nyu.edu>
7917
7918	* configure.in: make invert_limb_table work correctly with
7919	--disable-assembly (from Niels Möller)
7920
79212011-05-02  Marc Glisse  <marc.glisse@inria.fr>
7922
7923	* .bootstrap: libtoolize doesn't need -c.
7924
7925	* configfsf.guess: Update to version of 2011-02-02.
7926	* configfsf.sub: Update to version of 2011-03-23.
7927
79282011-05-02  Niels Möller  <nisse@lysator.liu.se>
7929
7930	* mpz/gcdext.c (mpz_gcdext): Don't allocate extra limbs at the end
7931	of mpn_gcdext parameters.
7932
7933	* doc/gmp.texi (mpn_gcdext): Updated doc.
7934
79352011-05-01  Niels Möller  <nisse@lysator.liu.se>
7936
7937	* mpn/generic/div_qr_2u_pi1.c (mpn_div_qr_2u_pi1): Fixed ASSERT.
7938
79392011-04-30  Marc Glisse  <marc.glisse@inria.fr>
7940
7941	* gmp-h.in (mpz_cdiv_q_2exp): Use mp_bitcnt_t to match the definition
7942	and the documentation.
7943	(mpz_remove): Likewise.
7944	(mpf_eq): Likewise.
7945
7946	* ltmain.sh: Remove.
7947	* .bootstrap: Let libtoolize generate ltmain.sh.
7948
7949	* tests/cxx/t-ops2.cc: Add a couple tests.
7950	* tests/cxx/t-rand.cc: Likewise.
7951
7952	* doc/gmp.texi (mpf_urandomb): Explicit the fact that it does not
7953	change the precision.
7954
7955	* gmp-h.in (__GMP_EXTERN_INLINE): Recent g++ uses gnu_inline.
7956
79572011-04-28  Torbjorn Granlund  <tege@gmplib.org>
7958
7959	* configure.in (x86_64): Support bobcat specifically.
7960	(x86): Match bobcat and bulldozer, handle like k10.
7961
79622011-04-28  David Harvey  <dmharvey@cims.nyu.edu>
7963
7964	* README.HG: update autotools version numbers.
7965
79662011-04-27  Torbjorn Granlund  <tege@gmplib.org>
7967
7968	* tune/speed.h (speed_cyclecounter): Always use PIC variant when
7969	compiled with Apple's GCC.
7970
7971	* mpn/x86/darwin.m4 (LEA): Complete rewrite.
7972	(m4append): New macro.
7973
79742011-04-26  Torbjorn Granlund  <tege@gmplib.org>
7975
7976	* mpn/sparc32/sparc-defs.m4 (changecom): Don't redefine '!' as it
7977	interferes with expressions.
7978
79792011-04-20  Torbjorn Granlund  <tege@gmplib.org>
7980
7981	* acinclude.m4 (GMP_ASM_RODATA): Make 'foo' larger to avoid clang
7982	problems.
7983
79842011-04-12  Niels Möller  <nisse@lysator.liu.se>
7985
7986	* mpn/x86_64/invert_limb.asm [PIC]: Declare mpn_invert_limb_table
7987	as .protected.
7988
79892011-04-11  Torbjorn Granlund  <tege@gmplib.org>
7990
7991	* mpn/x86/k7/invert_limb.asm: Use deflit for Darwin bug workaround.
7992	Undo 2011-03-28 change.
7993
7994	* mpn/asm-defs.m4 (define_mpn): Use deflit.
7995
79962011-04-10  Niels Möller  <nisse@lysator.liu.se>
7997
7998	* mpn/asm-defs.m4 (define_mpn): Added invert_limb_table.
7999
8000	* configure.in: Add invert_limb_table to extra_functions_64 on
8001	x86_64.
8002
8003	* mpn/x86_64/invert_limb.asm: Changed references from approx_tab
8004	mpn_invert_limb_table.
8005
8006	* mpn/x86_64/invert_limb_table.asm (mpn_invert_limb_table): New
8007	file. Extracted approximation table from invert_limb.asm, renamed
8008	and made global.
8009
80102011-03-30  Niels Möller  <nisse@lysator.liu.se>
8011
8012	* mpn/x86_64/div_qr_2u_pi1.asm: New file.
8013
8014	* configure.in (gmp_mpn_functions): Add div_qr_2u_pi1.
8015
8016	* gmp-impl.h (mpn_div_qr_2u_pi1): Declare.
8017
8018	* mpn/generic/div_qr_2u_pi1.c (mpn_div_qr_2u_pi1): Moved to
8019	separate file, from...
8020	* mpn/generic/div_qr_2.c: ... old location.
8021
8022	* mpn/generic/div_qr_2n_pi1.c: Renamed file, from...
8023	* mpn/generic/div_qr_2_pi1_norm.c: ...old name.
8024	* mpn/x86_64/div_qr_2n_pi1.asm: Renamed file, from...
8025	* mpn/x86_64/div_qr_2_pi1_norm.asm: ...old name.
8026
8027	* gmp-impl.h (mpn_div_qr_2n_pi1): Use new name in declaration.
8028	* tune/speed.h (speed_mpn_div_qr_2n): Likewise.
8029	(speed_mpn_div_qr_2u): Likewise.
8030
8031	* tune/tuneup.c (tune_div_qr_2): Use new name speed_mpn_div_qr_2n.
8032
8033	* tune/speed.c (routine): Use new names mpn_div_qr_2n and
8034	mpn_div_qr_2u, also on the command line.
8035
8036	* tune/common.c (speed_mpn_div_qr_2n): Renamed, from...
8037	(speed_mpn_div_qr_2_norm): ... old name.
8038	(speed_mpn_div_qr_2u): Renamed, from...
8039	(speed_mpn_div_qr_2_unnorm): ... old name.
8040
8041	* mpn/generic/div_qr_2_pi1_norm.c (mpn_div_qr_2n_pi1): Renamed,
8042	from...
8043	(mpn_div_qr_2_pi1_norm): ...old name.
8044	* mpn/x86_64/div_qr_2_pi1_norm.asm: Likewise.
8045
8046	* mpn/generic/div_qr_2.c (mpn_div_qr_2n_pi2): Renamed, from...
8047	(mpn_div_qr_2_pi2_norm): ... old name.
8048	(mpn_div_qr_2u_pi1): Renamed, from...
8049	(mpn_div_qr_2_pi1_unnorm): ... old name.
8050	(mpn_div_qr_2): Call functions using new names.
8051
8052	* mpn/asm-defs.m4: Renamed div_qr_2-functions to new names.
8053
80542011-03-29  Niels Möller  <nisse@lysator.liu.se>
8055
8056	* mpn/x86_64/div_qr_2_pi1_norm.asm: Updated to use a separate rp
8057	argument.
8058
8059	* gmp-impl.h (mpn_div_qr_2_pi1_norm): Updated declaration.
8060	* gmp-h.in (mpn_div_qr_2): Likewise.
8061
8062	* tests/mpn/t-div.c (main): Adapted to new mpn_div_qr2 interface.
8063	* tune/speed.h (SPEED_ROUTINE_MPN_DIV_QR_2): Likewise.
8064
8065	* mpn/generic/div_qr_2.c (mpn_div_qr_2_pi2_norm): Added rp
8066	argument. Don't clobber the input dividend.
8067	(mpn_div_qr_2_pi1_unnorm): Likewise.
8068	(mpn_div_qr_2): Likewise.
8069	* mpn/generic/div_qr_2_pi1_norm.c (mpn_div_qr_2_pi1_norm): Likewise.
8070
80712011-03-29  Niels Möller  <nisse@lysator.liu.se>
8072
8073	* mpn/x86/k7/invert_limb.asm: Use mov rather than push and pop.
8074	Earlier load of divisor from stack.
8075
80762011-03-28  Torbjorn Granlund  <tege@gmplib.org>
8077
8078	* mpn/x86/k7/invert_limb.asm: Protect movzwl register parameters from
8079	being interpreted as m4 macro parameters.
8080
80812011-03-22  Niels Möller  <nisse@lysator.liu.se>
8082
8083	* mpn/x86_64/div_qr_2_pi1_norm.asm: Copied optimized inner loop
8084	from divrem_2.asm.
8085
8086	* mpn/x86_64/div_qr_2_pi1_norm.asm: First working, but poorly
8087	optimized, implementation.
8088
8089	* mpn/asm-defs.m4 (define_mpn): Added div_qr_2_pi[12]_*norm.
8090
8091	* mpn/generic/div_qr_2_pi1_norm.c (mpn_div_qr_2_pi1_norm): Moved
8092	to separate file, from...
8093	* mpn/generic/div_qr_2.c: ... old location.
8094
8095	* gmp-impl.h (mpn_div_qr_2_pi1_norm): Declare.
8096
8097	* configure.in (gmp_mpn_functions): Added div_qr_2_pi1_norm.
8098
80992011-03-22  Torbjorn Granlund  <tege@gmplib.org>
8100
8101	* configure.in (powerpc): Reinsert lost AIX cpu_path 32-bit handling.
8102	Reinsert lost linux/bsd cpu_path handling.
8103
8104	* mpn/generic/mod_1_1.c: Disable powerpc asm for _LONG_LONG_LIMB.
8105	* mpn/generic/div_qr_2.c: Likewise.
8106
8107	* mpn/generic/div_qr_2.c: Use asm just for gcc.
8108	Make powerpc add_sssaaaa work for 32-bit case, and use less strict
8109	constraints.
8110
81112011-03-21  Niels Möller  <nisse@lysator.liu.se>
8112
8113	* tune/tuneup.c (div_qr_2_pi2_threshold): New global variable.
8114	(tune_div_qr_2): New function.
8115	(all): Call tune_div_qr_2.
8116
8117	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Added div_qr_2.c.
8118
8119	* gmp-impl.h (DIV_QR_2_PI2_THRESHOLD): Setup for tuning.
8120
8121	New 4/2 division loop, based on Torbjörn's work:
8122	* mpn/generic/div_qr_2.c (add_sssaaaa, add_csaac): New macros.
8123	(udiv_qr_4by2): New macro.
8124	(invert_4by2): New function.
8125	(mpn_div_qr_2_pi2_norm): New function.
8126	(DIV_QR_2_PI2_THRESHOLD): New threshold.
8127	(mpn_div_qr_2_pi1_norm): Renamed, from...
8128	(mpn_div_qr_2_norm): ... old name.
8129	(mpn_div_qr_2_pi1_unnorm): Renamed, from...
8130	(mpn_div_qr_2_unnorm): ... old name.
8131	(mpn_div_qr_2): Use mpn_div_qr_2_pi2_norm for large enough
8132	normalized divisors.
8133
8134	* gmp-impl.h (udiv_qr_3by2): Avoid a copy.
8135
81362011-03-21  Torbjorn Granlund  <tege@gmplib.org>
8137
8138	* configure.in (hppa): Under linux, treat 64-bit processors as if they
8139	were 32-bit processors.
8140
8141	* mpn/generic/addcnd_n.c: New file.
8142	* mpn/asm-defs.m4 (define_mpn): Add addcnd_n and subcnd_n.
8143	* configure.in (gmp_mpn_functions): Add addcnd_n.
8144	* gmp-impl.h (mpn_addcnd_n): Declare.
8145
8146	* mpn/generic/subcnd_n.c: Combine nails and non-nails functions.
8147
8148	* gmp-impl.h (invert_pi1): Prepend _ to local variables, protect
8149	parameters within () where necessary.
8150
8151	* mpn/asm-defs.m4 (define_mpn): Add div_qr_2.
8152	* configure.in (gmp_mpn_functions): Reinsert mercurial-bug-removed
8153	line.
8154
81552011-03-20  Torbjorn Granlund  <tege@gmplib.org>
8156
8157	* configure.in (powerpc): Add cpu_path for all three ABIs.
8158	Rename "aix64" to "mode64" for consistency.
8159
81602011-03-16  Marc Glisse  <marc.glisse@inria.fr>
8161
8162	* gmpxx.h (__gmp_binary_not_equal): Remove, use !__gmp_binary_equal.
8163	(__gmp_binary_less_equal): Remove, use !__gmp_binary_greater.
8164	(__gmp_binary_greater_equal): Remove, use !__gmp_binary_less.
8165	* tests/cxx/t-ops2.cc: Typo.
8166
81672011-03-20  Niels Möller  <nisse@lysator.liu.se>
8168
8169	* tune/common.c (speed_mpn_div_qr_2_norm): New function.
8170	(speed_mpn_div_qr_2_unnorm): New function.
8171	* tune/speed.c (routine): Recognize above functions.
8172	* tune/speed.h: Declarations for above functions.
8173	(SPEED_ROUTINE_MPN_DIV_QR_2): New macro.
8174
8175	* tests/mpn/t-div.c (main): Added tests for mpn_divrem_2 and
8176	mpn_div_qr_2.
8177
8178	* mpn/generic/div_qr_2.c (mpn_div_qr_2): New file and function.
8179	Intended to eventually replace divrem_2.
8180	* configure.in (gmp_mpn_functions): Add div_qr_2.
8181
81822011-03-16  Marc Glisse  <marc.glisse@inria.fr>
8183
8184	* gmpxx.h (__gmp_set_expr): Remove broken declarations.
8185
81862011-03-19  Torbjorn Granlund  <tege@gmplib.org>
8187
8188	* mpz/fac_ui.c (mpz_fac_ui): Use MPZ_REALLOC for standard, conditional
8189	reallocation.
8190
81912011-03-19  Niels Möller  <nisse@lysator.liu.se>
8192
8193	* mpn/generic/divrem_2.c (mpn_divrem_2): Fixed comment and assert
8194	regarding q and n overlap.
8195
81962011-03-16  Marc Glisse  <marc.glisse@inria.fr>
8197
8198	* gmpxx.h (__mpz_set_ui_safe): New inline function.
8199	(__mpz_set_si_safe): Likewise.
8200	(__GMPXX_TMPZ_UI): Use the new function.
8201	(__GMPXX_TMPZ_SI): Likewise.
8202	(__GMPXX_TMPQ_UI): Likewise.
8203	(__GMPXX_TMPQ_SI): Likewise.
8204	* tests/cxx/t-ops2.cc: test converting 0 to stack mpq_t.
8205
82062011-03-15  Marc Glisse  <marc.glisse@inria.fr>
8207
8208	* gmpxx.h (__GMPXX_TMPQ_UI): New macro.
8209	(__GMPXX_TMPQ_SI): New macro.
8210	(struct __gmp_binary_multiplies): Rewrite, using the new macros.
8211	(struct __gmp_binary_divides): Likewise.
8212
8213	* gmpxx.h (__GMPZ_ULI_LIMBS): Rewrite.
8214	* tests/cxx/t-ops2.cc: test converting ULONG_MIN to stack mpq_t.
8215
82162011-03-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
8217
8218	* mpn/generic/toom_interpolate_16pts.c: Remove ambiguity.
8219
82202011-03-14  Torbjorn Granlund  <tege@gmplib.org>
8221
8222	* tune/tuneup.c (tune_mul): Set tuning min size considering print skew.
8223
8224	* doc/gmp.texi: Make reference to "Formatted I/O" chapters from type
8225	specific I/O sections.
8226
8227	* mpn/alpha/add_n.asm: Add _nc entry point.
8228	* mpn/alpha/sub_n.asm: Likewise.
8229	* mpn/mips64/add_n.asm: Likewise.
8230	* mpn/mips64/sub_n.asm: Likewise.
8231	* mpn/sparc64/ultrasparc1234/add_n.asm: Likewise.
8232	* mpn/sparc64/ultrasparc1234/sub_n: Likewise.
8233
82342011-03-13  Marc Glisse  <marc.glisse@inria.fr>
8235
8236	* tests/cxx/t-ops2.cc: New file.
8237	* tests/cxx/Makefile.am: Added t-ops2.
8238
82392011-03-13  Torbjorn Granlund  <tege@gmplib.org>
8240
8241	* mpn/generic/toom32_mul.c (mpn_toom32_mul): Make 'hi' be limb-sized
8242	for better code.
8243
8244	* gmp-impl.h (MPN_IORD_U): Handle x86_64 as well as x86_32.  Generate
8245	no code for incrementing by constant 0.
8246
82472011-03-12  Marc Glisse  <marc.glisse@inria.fr>
8248
8249	* gmpxx.h: Rename __GMPXX_TMP_* to __GMPXX_TMPZ_*. Use in more places.
8250
82512011-03-12  Torbjorn Granlund  <tege@gmplib.org>
8252
8253	* mpn/powerpc64/rshift.asm: Accept/return values correctly also for
8254	32-bit ABI.
8255	* mpn/powerpc64/lshift.asm: Likewise.
8256
8257	* tune/powerpc.asm: Use powerpc syntax, not power syntax.
8258
8259	* tune/common.c (speed_udiv_qrnnd_preinv1, etc): Remove.
8260	* tune/speed.c (routine): Remove udiv_qrnnd_preinv1, etc.
8261
82622011-03-12  Marc Glisse  <marc.glisse@inria.fr>
8263
8264	* tests/cxx/t-istream.cc: Restrict mpq test in t-istream -s.
8265
8266	* gmpxx.h: Remove leftover #undefs.
8267
82682011-03-11  Torbjorn Granlund  <tege@gmplib.org>
8269
8270	* gmp-impl.h (udiv_qrnnd_preinv1, udiv_qrnnd_preinv2,
8271	udiv_qrnnd_preinv2gen): Remove obsolete macros.
8272	(udiv_qrnnd_preinv): New name for udiv_qrnnd_preinv3.
8273
82742011-03-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
8275
8276	* gmp-impl.h: Declare many mpn_{sub,add}lsh*_n_ip[12] functions/macros.
8277	* mpn/generic/toom_interpolate_5pts.c: Use mpn_sublsh1_n_ip1.
8278
8279	* tests/devel/try.c: Tests for {add,sub}lsh*_n_ip[12].
8280	* tests/refmpn.c: New reference for mpn_{add,sub}lsh*_n_ip[12].
8281	* tests/tests.h: Declarations for reference functions above.
8282
8283	* tune/common.c: New speed_mpn_{add,sub}lsh*_n_ip[12] functions.
8284	* tune/speed.h: Prototypes for functions above.
8285	* tune/speed.c: Support for mpn_{add,sub}lsh*_n_ip[12].
8286
8287	* mpn/x86/k7/sublsh1_n.asm: Replaced generic sublsh1 code with faster _ip1.
8288	* mpn/x86/atom/sublsh1_n.asm: Changed PROLOGUE accordingly.
8289
8290	* configure.in: Define HAVE_NATIVE_mpn_addlsh*_n*_ip[12].
8291	* mpn/asm-defs.m4: Declare mpn_addlsh*_n*_ip[12].
8292
82932011-03-10  Marc Glisse  <marc.glisse@inria.fr>
8294
8295	* tests/cxx/t-istream.cc: Explicit conversion to streampos.
8296
82972011-03-10  Torbjorn Granlund  <tege@gmplib.org>
8298
8299	* mpn/x86/atom/sse2/mul_basecase.asm: Suppress wind-down rp updates.
8300
8301	* Move new aorrlsh_n.asm to new k8 dir.  Revert
8302	mpn/x86_64/aorrlsh_n.asm.
8303	* configure.in: Setup path for new k8 directory.
8304
83052011-03-10 Marco Bodrato <bodrato@mail.dm.unipi.it>
8306
8307	* mpn/x86/pentium4/sse2/bdiv_dbm1c.asm: New file, was in atom.
8308	* mpn/x86/atom/sse2/bdiv_dbm1c.asm: Grab file above.
8309
83102011-03-09  Torbjorn Granlund  <tege@gmplib.org>
8311
8312	* mpn/x86_64/aorrlsh_n.asm: Complete rewrite.
8313
8314	* mpn/x86_64/core2/aorrlsh_n.asm: New file, grabbing another asm file.
8315
83162011-03-09  Marc Glisse  <marc.glisse@inria.fr>
8317
8318	* tests/cxx/t-ostream.cc: Use bool instead of int.
8319	* tests/cxx/t-istream.cc: Likewise.
8320	* tests/cxx/t-misc.cc: Likewise.
8321
8322	* cxx/ismpznw.cc: Don't clear eofbit.
8323	* cxx/ismpq.cc: Likewise.
8324	* cxx/ismpf.cc: Likewise.
8325	* tests/cxx/t-istream.cc: Test accordingly.
8326
83272011-03-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
8328
8329	* mpn/x86/atom/sse2/bdiv_dbm1c.asm: New file.
8330
83312011-03-09  Marc Glisse  <marc.glisse@inria.fr>
8332
8333	* doc/gmp.texi: Remove void return type from constructors. Document
8334	explicit constructors. Document mpf_class::mpf_class(mpf_t).
8335
83362011-03-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
8337
8338	* mpn/x86/atom/sse2/sqr_basecase.asm: Postponed pushes. Cleaned
8339	outer loop exit.
8340
83412011-03-07  Torbjorn Granlund  <tege@gmplib.org>
8342
8343	* mpn/x86_64/gcd_1.asm: Workaround Oracle assembler bug.
8344
8345	* mpn/x86/atom/sse2/mul_basecase.asm: Replace addmul_1 loops.
8346	Tweak outer loop rp updates.
8347
83482011-03-06  Torbjorn Granlund  <tege@gmplib.org>
8349
8350	* mpn/x86/atom/sse2/sqr_basecase.asm: New file.
8351
83522011-03-05  Torbjorn Granlund  <tege@gmplib.org>
8353
8354	* mpn/x86_64/bdiv_dbm1c.asm: Write proper feed-in code.
8355
83562011-03-04  Torbjorn Granlund  <tege@gmplib.org>
8357
8358	* mpn/x86_64/addmul_2.asm: Rewrite for linear performance.
8359
83602011-03-03  Torbjorn Granlund  <tege@gmplib.org>
8361
8362	* mpn/generic/mod_1_1.c (add_mssaaaa): Canonicalise layout.  Add arm
8363	variant.  Enable sparc64 code and powerpc code (the latter for 32-bit
8364	and 64-bit).
8365
8366	* mpn/generic/sqrtrem.c (mpn_dc_sqrtrem): Use mpn_addlsh1_n.
8367
8368	* gmp-impl.h (mpn_addlsh_nc, mpn_rsblsh_nc): Declare.
8369	* mpn/asm-defs.m4: Likewise.
8370
8371	* mpn/x86_64/coreisbr/aorrlsh_n.asm: Disable mpn_rsblsh_n due to
8372	carry-in issues.
8373	* mpn/x86_64/coreinhm/aorrlsh_n.asm: Likewise.
8374	* mpn/x86_64/coreisbr/aorrlsh2_n.asm: Likewise.
8375
83762011-03-03  Niels Möller  <nisse@lysator.liu.se>
8377
8378	* mpn/generic/mod_1_1.c (add_mssaaaa): For x86 and x86_64, treat m
8379	as in output operand only. Added sparc32 implementation. Also
8380	added #if:ed out attempts at sparc64 and powerpc64.
8381
8382	* tune/tuneup.c (tune_mod_1): Record result of MOD_1_1P_METHOD
8383	measurement for use by mpn_mod_1_tune. And omit measurement if
8384	mpn_mod_1_1p is native assembly code.
8385
8386	* mpn/generic/mod_1.c (mpn_mod_1_1p) [TUNE_PROGRAM_BUILD]: Macro
8387	to check mod_1_1p_method and call the right function.
8388	(mpn_mod_1_1p_cps) [TUNE_PROGRAM_BUILD]: Likewise.
8389
8390	* gmp-impl.h (MOD_1_1P_METHOD) [TUNE_PROGRAM_BUILD]: Define macro.
8391	(mod_1_1p_method) [TUNE_PROGRAM_BUILD]: Declare variable.
8392
83932011-03-02  Torbjorn Granlund  <tege@gmplib.org>
8394
8395	* mpn/x86_64/coreinhm/aorrlsh_n.asm: New file.
8396	* mpn/x86_64/coreisbr/aorrlsh_n.asm: New file.
8397
83982011-03-01  Niels Möller  <nisse@lysator.liu.se>
8399
8400	* mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p_cps): Eliminated a neg and
8401	two mov instructions.
8402
8403	* mpn/x86/k7/mod_1_1.asm (mpn_mod_1_1p_cps): Simplified
8404	computation, analogous to recent x86_64/mod_1_1.asm changes.
8405	(mpn_mod_1_1p): Corresponding changes. Don't shift b.
8406
8407	* mpn/sparc64/mod_1_4.c (mpn_mod_1s_4p_cps): Use udiv_rnnd_preinv
8408	rather than udiv_rnd_preinv.
8409	(mpn_mod_1s_4p): Likewise.
8410
84112011-03-01  Torbjorn Granlund  <tege@gmplib.org>
8412
8413	* mpn/x86/pentium4/sse2/mul_1.asm: Swap entry insns to share more code
8414	between entry points.
8415	* mpn/x86/pentium4/sse2/addmul_1.asm: Likewise.
8416
8417	* mpz/divegcd.c: Rewrite, as per Marc Glisse's suggestion.  Also fix
8418	problem with passing a longlong limb to a _ui function.
8419
8420	* gmp-impl.h (udiv_qrnnd_preinv3): Cast truth value to mask's type.
8421	(udiv_rnnd_preinv): Likewise.
8422	* mpn/generic/mod_1_1.c (mpn_mod_1_1p): Likewise.
8423
84242011-02-28  Niels Möller  <nisse@lysator.liu.se>
8425
8426	* mpn/generic/mod_1_1.c (add_mssaaaa): Typo fix, define
8427	add_mssaaaa, not add_sssaaaa.
8428
8429	* tune/tuneup.c (tune_mod_1): Measure mpn_mod_1_1_1 and
8430	mpn_mod_1_1_2, to set MOD_1_1P_METHOD.
8431
8432	* tune/speed.c (routine): Added mpn_mod_1_1_1 and mpn_mod_1_1_2.
8433
8434	* tune/speed.h: Declare speed_mpn_mod_1_1_1, speed_mpn_mod_1_1_2,
8435	mpn_mod_1_1p_1, mpn_mod_1_1p_2, mpn_mod_1_1p_cps_1, and
8436	mpn_mod_1_1p_cps_2.
8437
8438	* tune/common.c (speed_mpn_mod_1_1_1): New function.
8439	(speed_mpn_mod_1_1_2): New function.
8440
8441	* tune/Makefile.am (libspeed_la_SOURCES): Added mod_1_1-1.c
8442	mod_1_1-2.c.
8443
8444	* tune/mod_1_1-1.c: New file.
8445	* tune/mod_1_1-2.c: New file.
8446
8447	* mpn/generic/mod_1_1.c: Implemented an algorithm with fewer
8448	multiplications, configured via MOD_1_1P_METHOD.
8449
8450	* mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p_cps): Simplified
8451	computation of B2modb, use B^2 mod (normalized b).
8452	(mpn_mod_1_1p): Corresponding changes. Don't shift b.
8453
8454	* mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Use udiv_rnnd_preinv rather
8455	than udiv_rnd_preinv.
8456	(mpn_mod_1_1p): Likewise.
8457	* mpn/generic/mod_1_4.c: Analogous changes.
8458	* mpn/generic/mod_1_3.c: Analogous changes.
8459	* mpn/generic/mod_1_2.c: Analogous changes.
8460	* mpn/generic/mod_1.c: Analogous changes.
8461	* mpn/generic/pre_mod_1.c: Analogous changes.
8462
8463	* gmp-impl.h (udiv_qrnnd_preinv3): Eliminated unpredictable branch
8464	using masking logic. Further optimization of the nl == constant 0
8465	case, similar to udiv_rnd_preinv.
8466	(udiv_rnnd_preinv): Likewise.
8467	(udiv_rnd_preinv): Deleted, use udiv_rnnd_preinv with nl == 0
8468	instead.
8469
8470	* tests/mpn/t-divrem_1.c (check_data): Added testcase to exercise
8471	the nl == constant 0 special case in udiv_qrnnd_preinv3.
8472
84732011-02-28  Torbjorn Granlund  <tege@gmplib.org>
8474
8475	* mpn/generic/rootrem.c (mpn_rootrem): Combine two similar scalar
8476	divisions.  Misc minor cleanup.
8477
8478	* mpn/x86/atom/sse2/aorsmul_1.asm: Shorten software pipeline.
8479
8480	* mpn/x86/atom/mul_basecase.asm: Remove file no longer used.
8481
8482	* mpn/generic/rootrem.c (mpn_rootrem_internal): Delay O(log(U))
8483	allocations until they are known to be needed.
8484
84852011-02-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
8486
8487	* mpn/x86/atom/sse2/mul_1.asm: New code.
8488
84892011-02-27  Niels Möller  <nisse@lysator.liu.se>
8490
8491	* gmp-impl.h (udiv_rnnd_preinv): New macro.
8492
84932011-02-27  Torbjorn Granlund  <tege@gmplib.org>
8494
8495	* mpn/x86/atom/sse2/mul_basecase.asm: New file.
8496
84972011-02-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
8498
8499	* mpn/x86/atom/sse2/aorsmul_1.asm: Optimise non-loop code.
8500
85012011-02-26  Torbjorn Granlund  <tege@gmplib.org>
8502
8503	* mpn/powerpc64/mode64/aorsmul_1.asm: Add MULFUNC_PROLOGUE.
8504	* mpn/m68k/mc68020/aorsmul_1.asm: Likewise.
8505
85062011-02-25  Torbjorn Granlund  <tege@gmplib.org>
8507
8508	* mpn/x86/atom/sse2/aorsmul_1.asm: New file.
8509	* mpn/x86/atom/aorsmul_1.asm: File removed.
8510
85112011-02-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
8512
8513	* mpn/x86/atom/sse2/divrem_1.asm: New file (was in x86/atom).
8514	* mpn/x86/atom/sse2/mul_1.asm: Likewise.
8515	* mpn/x86/atom/sse2/popcount.asm: Likewise.
8516	* mpn/x86/atom/divrem_1.asm: ReMoved (in sse2/ now).
8517	* mpn/x86/atom/mul_1.asm: Likewise.
8518	* mpn/x86/atom/popcount.asm: Likewise.
8519
8520	* configure.in: Set up mmx path for atom.
8521	* mpn/x86/atom/mmx/copyd.asm: New file (was in x86/atom).
8522	* mpn/x86/atom/mmx/copyi.asm: Likewise.
8523	* mpn/x86/atom/mmx/hamdist.asm: Likewise.
8524	* mpn/x86/atom/copyd.asm: ReMoved (in mmx/ now).
8525	* mpn/x86/atom/copyi.asm: Likewise.
8526	* mpn/x86/atom/hamdist.asm: Likewise.
8527
85282011-02-24  Torbjorn Granlund  <tege@gmplib.org>
8529
8530	* mpn/x86/atom/sse2/mod_1_1.asm: New file.
8531	* mpn/x86/atom/sse2/mod_1_4.asm: New file.
8532	* configure.in: Set up sse2 path for atom.
8533
8534	* mpn/x86/p6/sse2/mod_1_1.asm: New file.
8535	* mpn/x86/p6/sse2/mod_1_4.asm: Fix typo in MULFUNC_PROLOGUE.
8536
85372011-02-24  Niels Möller  <nisse@lysator.liu.se>
8538
8539	* mpn/x86/k7/mod_1_1.asm (mpn_mod_1_1p): Rewrite using the same
8540	algorithm as the x86_64 version.
8541
85422011-02-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
8543
8544	* mpn/x86/atom/logops_n.asm: New file (same loop as aors_n).
8545
85462011-02-23  Niels Möller  <nisse@lysator.liu.se>
8547
8548	* mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p): Shaved off one
8549	instruction and one register in the inner loop. Rearranged
8550	registers slightly, and no longer needs the callee-save register
8551	%r12.
8552
85532011-02-22  Torbjorn Granlund  <tege@gmplib.org>
8554
8555	* configure.in: Export SHLD_SLOW and SHRD_SLOW to config.m4, also
8556	fixing typo in exporting code.
8557
8558	* mpn/x86_64/nano/gmp-mparam.h (SHLD_SLOW, SHRD_SLOW): Define.
8559	* mpn/x86_64/atom/gmp-mparam.h (SHLD_SLOW, SHRD_SLOW): Define.
8560
85612011-02-22  Niels Möller  <nisse@lysator.liu.se>
8562
8563	* mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p): Rewrite.
8564
85652011-02-22 Marco Bodrato <bodrato@mail.dm.unipi.it>
8566
8567	* mpn/x86/atom/lshiftc.asm: New file (a copy of lshift.asm with a handful of neg added).
8568
85692011-02-21  Torbjorn Granlund  <tege@gmplib.org>
8570
8571	* mpn/x86/aors_n.asm: Move _nc entry to after main code.  Align loop
8572	and _n entry for claimed performance.  Normalise mnemonic usage.
8573
8574	* mpn/x86/atom/aorrlsh1_n.asm: New file (code from rsblsh_1, slightly
8575	slower for addlsh_1 for large operands, but much faster for small).
8576	* mpn/x86/atom/addlsh1_n.asm: Remove.
8577	* mpn/x86/atom/rsblsh1_n.asm: Remove.
8578
85792011-02-20  Marc Glisse  <marc.glisse@inria.fr>
8580
8581	* mpq/aors.c: Rewrite to remove redundant division.
8582
85832011-02-20  Torbjorn Granlund  <tege@gmplib.org>
8584
8585	* mpn/x86/atom/lshift.asm: New file.
8586	* mpn/x86/atom/rshift.asm: Normalise mnemonic usage.
8587
8588	* gmp-impl.h (mpn_divexact_by7): Relax inclusion condition.
8589
8590	* mpz/divegcd.c (mpz_divexact_by5): New conditionally enabled function.
8591	(mpz_divexact_by3): Wrap inside appropriate conditions.
8592	(mpz_divexact_gcd): Rewrite.
8593
8594	* mpn/x86/bdiv_dbm1c.asm: Save a jump.
8595
85962011-02-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
8597
8598	* mpn/x86/atom/aorslshC_n.asm: New file.
8599	* mpn/x86/atom/sublsh2_n.asm: New file.
8600
8601	* mpn/x86/atom/aors_n.asm: New code.
8602	* mpn/x86/atom/rshift.asm: Atom64 code adapted to 32-bit.
8603	* mpn/x86/atom/lshift.asm: Likewise.
8604
86052011-02-19  Torbjorn Granlund  <tege@gmplib.org>
8606
8607	* mpn/x86_64/atom/rsh1aors_n.asm: New file.
8608
8609	* mpn/x86_64/atom/lshift.asm: New file.
8610	* mpn/x86_64/atom/rshift.asm: New file.
8611	* mpn/x86_64/atom/lshiftc.asm: New file.
8612
86132011-02-17 Marco Bodrato <bodrato@mail.dm.unipi.it>
8614
8615	* mpn/x86/atom/aorsmul_1.asm: Small improvements for small sizes.
8616	* mpn/x86/atom/aorrlshC_n.asm: Tiny size improvements.
8617
86182011-02-16  Torbjorn Granlund  <tege@gmplib.org>
8619
8620	* configure.in: Fix k8/k10 32-bit path setup problem.
8621
86222011-02-16 Marco Bodrato <bodrato@mail.dm.unipi.it>
8623
8624	* mpn/x86/atom/aorsmul_1.asm: Revive an old k7/aorsmul.
8625
86262011-02-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
8627
8628	* gmp-impl.h (mpn_sublsh_n): Declare.
8629	* mpn/asm-defs.m4: Likewise.
8630
8631	* mpn/x86/atom/aorrlshC_n.asm: New file (was k7).
8632	* mpn/x86/k7/aorrlshC_n.asm: ReMoved.
8633	* mpn/x86/atom/aorrlsh2_n.asm: Grab atom/aorrlshC_n.asm.
8634	* mpn/x86/atom/rsblsh1_n.asm: Grab atom/aorrlshC_n.asm.
8635
86362011-02-13  Torbjorn Granlund  <tege@gmplib.org>
8637
8638	* mpn/x86_64/atom/aorrlsh2_n.asm: New file.
8639
86402011-02-12  Torbjorn Granlund  <tege@gmplib.org>
8641
8642	* mpn/x86_64/aorrlsh_n.asm: Minor tweaks, update c/l numbers.
8643
8644	* mpn/x86_64/atom/sublsh1_n.asm: New file.
8645
8646	* mpn/x86_64/atom/aorrlsh1_n.asm: New file.
8647
86482011-02-11  Torbjorn Granlund  <tege@gmplib.org>
8649
8650	* mpn/powerpc64/mode64/mod_1_1.asm: Fix Darwin syntax issues.
8651
86522011-02-10  Torbjorn Granlund  <tege@gmplib.org>
8653
8654	* mpn/powerpc64/mode64/mod_1_4.asm: Tune away a cycle for 970.
8655
86562011-02-11 Marco Bodrato <bodrato@mail.dm.unipi.it>
8657
8658	* mpn/x86/k7/addlsh1_n.asm: Faster core loop (Torbjorn's).
8659
8660	* configure.in: Add HAVE_NATIVE_{add,sub,rsb}lsh{,1,2}_nc.
8661	* tests/tests.h: refmpn_{add,sub,rsb}lsh{,1,2}_nc prototypes.
8662	* tests/refmpn.c: New refmpn_{add,sub,rsb}lsh{,1,2}_nc.
8663	* tests/devel/try.c: Tests for mpn_{add,sub,rsb}lsh{,1,2}_nc.
8664
8665	* mpn/x86/k7/aorrlshC_n.asm: New file.
8666	* mpn/x86/atom/aorrlsh2_n.asm: Grab k7/aorrlshC_n.asm.
8667	* mpn/x86/atom/rsblsh1_n.asm: Grab k7/aorrlshC_n.asm.
8668
86692011-02-06 Marco Bodrato <bodrato@mail.dm.unipi.it>
8670
8671	* mpn/x86/k7/addlsh1_n.asm: New file.
8672	* mpn/x86/k7/sublsh1_n.asm: New file.
8673	* mpn/x86/atom/addlsh1_n.asm: Grab k7/addlsh1_n.asm.
8674	* mpn/x86/atom/sublsh1_n.asm: Grab k7/sublsh1_n.asm.
8675
86762011-02-05  Torbjorn Granlund  <tege@gmplib.org>
8677
8678	* gmp-impl.h (mpn_addlsh1_nc, mpn_addlsh2_nc, mpn_sublsh1_nc,
8679	mpn_sublsh2_nc, mpn_rsblsh1_nc, mpn_rsblsh2_nc): Declare.
8680	* mpn/asm-defs.m4: Likewise.
8681
8682	* mpn/x86_64/coreisbr/aorrlshC_n.asm: New file.
8683	* mpn/x86_64/coreisbr/aorrlsh1_n.asm: New file.
8684	* mpn/x86_64/coreisbr/aorrlsh2_n.asm: New file.
8685
8686	* mpn/x86_64/coreisbr/aors_n.asm: New file, based on old
8687	atom/aors_n.asm.
8688	* mpn/x86_64/atom/aors_n.asm: Grab coreisbr/aors_n.asm.
8689
86902011-02-05 Marco Bodrato <bodrato@mail.dm.unipi.it>
8691
8692	* gmp-impl.h (mpn_toom6_mul_n_itch): Handle threshold == zero.
8693	(mpn_toom8_mul_n_itch): Likewise.
8694	(MPN_TOOM6H_MIN, MPN_TOOM8H_MIN): Define.
8695	* tests/mpn/t-toom6h.c: No tests below MPN_TOOM6H_MIN.
8696	* tests/mpn/t-toom8h.c: No tests below MPN_TOOM8H_MIN.
8697
8698	* mpz/lucnum_ui.c: Use mpn_addlsh2_n.
8699
87002011-02-04  Torbjorn Granlund  <tege@gmplib.org>
8701
8702	* mpn/x86_64/atom/rsh1aors_n.asm: Add a MULFUNC_PROLOGUE.
8703	* mpn/x86_64/atom/dive_1.asm: Likewise.
8704	* mpn/x86_64/atom/popcount.asm: Likewise.
8705	* mpn/x86_64/core2/popcount.asm: Likewise.
8706	* mpn/x86_64/coreinhm/hamdist.asm: Likewise.
8707	* mpn/x86_64/coreinhm/popcount.asm: Likewise.
8708	* mpn/x86_64/nano/popcount.asm: Likewise.
8709	* mpn/x86_64/pentium4/popcount.asm: Likewise.
8710
87112011-02-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
8712
8713	* mpn/x86/atom/mode1o.asm: New file, grabbing another asm file.
8714	* mpn/x86/atom/mul_1.asm: Claim mul_1c.
8715
87162011-02-02  Niels Möller  <nisse@lysator.liu.se>
8717
8718	* tune/speed.h (SPEED_ROUTINE_MPN_HGCD_CALL): Fixed one
8719	speed_operand_dst call.
8720
87212011-02-01  Torbjorn Granlund  <tege@gmplib.org>
8722
8723	* tune/speed.h (struct speed_params): Allow for 4 dst operands.
8724	* tune/common.c (TOLERANCE): Increase from 0.5% to 1%.
8725
8726	* tune/speed.h (SPEED_ROUTINE_MPN_HGCD_CALL): New macro, mainly based
8727	on old speed_mpn_hgcd, but with speed_operand_src calls (as suggested
8728	by Niels).
8729	* tune/common.c (speed_mpn_hgcd): Invoke SPEED_ROUTINE_MPN_HGCD_CALL.
8730	(speed_mpn_hgcd_lehmer): Likewise.
8731
8732	* configure.in: Set up 32-bit x86 paths for new corei* CPU strings.
8733
87342011-01-31  Torbjorn Granlund  <tege@gmplib.org>
8735
8736	* config.guess: Recognise new Intel processors.
8737
8738	* config.guess: Support 'coreinhm' and 'coreisbr'.
8739	* config.sub: Likewise.
8740	* configure.in: Likewise.
8741
87422011-01-30  Torbjorn Granlund  <tege@gmplib.org>
8743
8744	* configure.in: Support x86/geode.
8745	* mpn/x86/geode/gmp-mparam.h: New file.
8746
87472011-01-29 Marco Bodrato <bodrato@mail.dm.unipi.it>
8748
8749	* mpn/x86/atom/addlsh1_n.asm: Removed.
8750	* mpn/x86/atom/rsh1add_n.asm: Likewise.
8751
87522011-01-28  Torbjorn Granlund  <tege@gmplib.org>
8753
8754	* mpn/alpha/ev6/slot.pl: Add some missing insns.
8755
87562011-01-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
8757
8758	* mpn/x86/atom/copyd.asm: New file, grabbing another asm file.
8759	* mpn/x86/atom/copyi.asm: Likewise.
8760	* mpn/x86/atom/aors_n.asm: Likewise.
8761	* mpn/x86/atom/addlsh1_n.asm: Likewise.
8762	* mpn/x86/atom/aorsmul_1.asm: Likewise.
8763	* mpn/x86/atom/bdiv_q_1.asm: Likewise.
8764	* mpn/x86/atom/dive_1.asm: Likewise.
8765	* mpn/x86/atom/divrem_1.asm: Likewise.
8766	* mpn/x86/atom/hamdist.asm: Likewise.
8767	* mpn/x86/atom/logops_n.asm: Likewise.
8768	* mpn/x86/atom/lshift.asm: Likewise.
8769	* mpn/x86/atom/mod_34lsub1.asm: Likewise.
8770	* mpn/x86/atom/mul_1.asm: Likewise.
8771	* mpn/x86/atom/mul_basecase.asm: Likewise.
8772	* mpn/x86/atom/popcount.asm: Likewise.
8773	* mpn/x86/atom/rsh1add_n.asm: Likewise.
8774	* mpn/x86/atom/rshift.asm: Likewise.
8775	* mpn/x86/atom/sqr_basecase.asm: Likewise.
8776
87772011-01-27  Torbjorn Granlund  <tege@gmplib.org>
8778
8779	* mpn/x86_64/atom/rsh1aors_n.asm: New file, grabbing another asm file.
8780	* mpn/x86_64/atom/popcount.asm: Likewise.
8781	* mpn/x86_64/atom/dive_1.asm: Likewise.
8782	* mpn/x86_64/nano/popcount.asm: Likewise.
8783
87842011-01-26  Torbjorn Granlund  <tege@gmplib.org>
8785
8786	* mpn/alpha/invert_limb.asm: Complete rewrite.
8787
87882011-01-25  Torbjorn Granlund  <tege@gmplib.org>
8789
8790	* mpn/powerpc32/invert_limb.asm: New file.
8791
87922011-01-25 Marco Bodrato <bodrato@mail.dm.unipi.it>
8793
8794	* mpn/x86/pentium4/sse2/bdiv_q_1.asm: New file.
8795	* mpn/x86/k7/bdiv_q_1.asm: New file.
8796
87972011-01-24  Torbjorn Granlund  <tege@gmplib.org>
8798
8799	* tune/tuneup.c (tune_mul_n, tune_sqr): Loop, re-measuring thresholds
8800	until no tiny ranges remain.
8801
88022011-01-23  Torbjorn Granlund  <tege@gmplib.org>
8803
8804	* mpn/ia64/mul_2.asm: Tweak to 1.5 c/l, less overhead.
8805
8806	* mpn/ia64/addmul_2.asm: Rewrite, adding mpn_addmul_2s entry point.
8807
88082011-01-22  Torbjorn Granlund  <tege@gmplib.org>
8809
8810	* mpn/ia64/aors_n.asm: Fix some incorrect bundle types.
8811
8812	* mpn/ia64/sqr_diagonal.asm: Remove.
8813
8814	* mpn/ia64/sqr_diag_addlsh1.asm: New file.
8815
8816	* mpn/ia64/ia64-defs.m4: Define some shorter convenience mnemonics.
8817
8818	* mpn/generic/sqr_basecase.c (MPN_SQR_DIAG_ADDLSH1): New macro, using
8819	new function mpn_sqr_diag_addlsh1 or defining its equivalent.
8820
8821	* gmp-impl.h (mpn_addmul_2s): Declare.
8822	(mpn_sqr_diag_addlsh1): Declare.
8823	* mpn/asm-defs.m4 (define_mpn): Add addmul_2s and sqr_diag_addlsh1.
8824
8825	* configure.in: Add HAVE_NATIVEs for mpn_sqr_diag_addlsh1 and
8826	mpn_addmul_2s.
8827	(gmp_mpn_functions_optional): Add sqr_diag_addlsh1.
8828
88292011-01-21 Marco Bodrato <bodrato@mail.dm.unipi.it>
8830
8831	* tests/devel/try.c: Initial support for mpn_bdiv_q_1.
8832	* mpn/x86/pentium/bdiv_q_1.asm: New file.
8833	* mpn/x86/p6/bdiv_q_1.asm: New file.
8834
88352011-01-20  Torbjorn Granlund  <tege@gmplib.org>
8836
8837	* tune/speed.c (run_gnuplot): Update to current gnuplot syntax.
8838
8839	* mpn/powerpc64/mode64/aorsmul_1.asm: Trim away 0.5 c/l for submul_1
8840	for POWER5.
8841
88422011-01-19  Torbjorn Granlund  <tege@gmplib.org>
8843
8844	* mpn/x86_64/core2/rsh1aors_n.asm: New file.
8845
88462011-01-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
8847
8848	* mpn/x86/bdiv_q_1.asm: New file (same core alg. as dive_1).
8849
88502011-01-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
8851
8852	* mpn/generic/divexact.c: Avoid COPY if not needed.
8853
88542011-01-14  Torbjorn Granlund  <tege@gmplib.org>
8855
8856	* gmp-impl.h (struct cpuvec_t): Add field bmod_1_to_mod_1_threshold.
8857	* configure.in (fat_thresholds): Add BMOD_1_TO_MOD_1_THRESHOLD.
8858
88592011-01-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
8860
8861	* mpz/mul.c: Remove redundant size computation.
8862
88632011-01-08  Torbjorn Granlund  <tege@gmplib.org>
8864
8865	* tests/devel/try.c (types enum): Add TYPE_MUL_5 and TYPE_MUL_6.
8866	(param_init): Support new types.
8867	(choice_array): Support testing of mpn_mul_5 and mpn_mul_6.
8868	(call): Support new routines.
8869
8870	* tests/refmpn.c (refmpn_mul_5, refmpn_mul_6): New functions.
8871	* tests/tests.h (refmpn_mul_5, refmpn_mul_6): Declare.
8872	Remove parameter names from some other functions.
8873
8874	* gmp-impl.h (mpn_mul_5, mpn_mul_6): Declare.
8875	* mpn/asm-defs.m4: Likewise, also declare mpn_addmul_5, mpn_addmul_6,
8876	mpn_addmul_7, and mpn_addmul_8.
8877
8878	* configure.in (gmp_mpn_functions_optional): Add mul_5 and mul_6.
8879
8880	* tune/speed.c (routine): Add measuring of mpn_mul_5 and mpn_mul_6.
8881	* tune/common.c (speed_mpn_mul_5, speed_mpn_mul_6): New functions.
8882	* tune/speed.h: Declare new functions.
8883
88842011-01-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
8885
8886	* mpz/aors.h: Remove #ifdef BERKELEY_MP, and cleanup.
8887	* mpz/cmp.c: Likewise.
8888	* mpz/gcd.c: Likewise.
8889	* mpz/mul.c: Likewise.
8890	* mpz/powm.c: Likewise.
8891	* mpz/set.c: Likewise.
8892	* mpz/sqrtrem.c: Likewise.
8893	* mpz/tdiv_qr.c: Likewise.
8894
88952010-12-28  Torbjorn Granlund  <tege@gmplib.org>
8896
8897	* mpn/minithres/gmp-mparam.h: Update with several recent thresholds.
8898
88992010-12-19  Torbjorn Granlund  <tege@gmplib.org>
8900
8901	* mpn/x86/k7/mod_1_1.asm: Canonicalise cmov forms.
8902	* mpn/x86/k7/mod_1_4.asm: Likewise.
8903	* mpn/x86/pentium4/sse2/mod_1_1.asm: Likewise.
8904	* mpn/x86/pentium4/sse2/mod_1_4.asm: Likewise.
8905	* mpn/x86_64/core2/divrem_1.asm: Likewise.
8906	* mpn/x86_64/divrem_1.asm: Likewise.
8907	* mpn/x86_64/mod_1_1.asm: Likewise.
8908	* mpn/x86_64/mod_1_2.asm: Likewise.
8909	* mpn/x86_64/mod_1_4.asm: Likewise.
8910
8911	* mpn/x86/k7/gcd_1.asm: Rewrite.  Remove slow 'div' loop.  Call
8912	mpn_mod_1 for operands with mode than BMOD_1_TO_MOD_1_THRESHOLD limbs.
8913	Misc cleanups.
8914
89152010-12-18  Torbjorn Granlund  <tege@gmplib.org>
8916
8917	* mpn/x86_64/gcd_1.asm: Call mpn_mod_1 for operands with mode than
8918	BMOD_1_TO_MOD_1_THRESHOLD limbs.
8919
8920	* configure.in: Generalise code for putting THRESHOLDs in config.m4.
8921	Add BMOD_1_TO_MOD_1_THRESHOLD to list.
8922
8923	* mpn/x86_64/core2/divrem_1.asm: Tweak slightly, correct cycle counts.
8924
8925	* mpn/x86_64/addmul_2.asm: Remove constant index.
8926	* mpn/x86_64/lshiftc.asm: Likewise.
8927	* mpn/x86_64/pentium4/lshift.asm: Likewise.
8928	* mpn/x86_64/pentium4/lshiftc.asm: Likewise.
8929	* mpn/x86_64/pentium4/rshift.asm: Likewise.
8930
89312010-12-16  Torbjorn Granlund  <tege@gmplib.org>
8932
8933	* mpn/x86_64/mod_34lsub1.asm: Complete rewrite.
8934	* mpn/x86_64/pentium4/mod_34lsub1.asm: New file, old
8935	mpn/x86_64/mod_34lsub1.asm.
8936
89372010-12-15  Torbjorn Granlund  <tege@gmplib.org>
8938
8939	* mpn/powerpc64/vmx/popcount.asm: Rewrite to use vperm count table.
8940
89412010-12-14  Torbjorn Granlund  <tege@gmplib.org>
8942
8943	* mp-h.in: Remove.
8944	* configure.in: Remove mp-h.in from AC_OUTPUT invocation.
8945
89462010-12-13  Torbjorn Granlund  <tege@gmplib.org>
8947
8948	* mpz/mod.c: Rewrite.
8949
8950	* mpn/x86_64/corei/popcount.asm: New file.
8951	* mpn/x86_64/corei/hamdist.asm: New file.
8952
8953	* mpn/x86_64/k10/hamdist.asm: New file.
8954
8955	* configure.in: Amend last change for lame /bin/sh.
8956
89572010-12-12  Torbjorn Granlund  <tege@gmplib.org>
8958
8959	* configure.in: Comment out M4=m4-not-needed.
8960
8961	* mpn/x86_64/k10/popcount.asm: New file.
8962	* configure.in: Setup special path for k10 and later AMD CPUs.
8963	Remove special x86_64'k8' path, since directory is non-existent.
8964
89652010-12-11  Torbjorn Granlund  <tege@gmplib.org>
8966
8967	* mpn/sparc32/ultrasparct1: New directory.
8968	* mpn/sparc32/ultrasparct1/add_n.asm: New file.
8969	* mpn/sparc32/ultrasparct1/sub_n.asm: New file.
8970	* mpn/sparc32/ultrasparct1/mul_1.asm: New file.
8971	* mpn/sparc32/ultrasparct1/addmul_1.asm: New file.
8972	* mpn/sparc32/ultrasparct1/submul_1.asm: New file.
8973	* mpn/sparc32/ultrasparct1/sqr_diagonal.asm: New file.
8974
8975	* config.guess: Support Ultrasparc T2 and T3.
8976	* config.sub: Likewise.
8977	* configure.in: Likewise.
8978
8979	* config.guess: Generalise BSD Sparc recognition by allowing any
8980	caps (needed for OpenBSD which spells things innovatively).
8981
89822010-12-01  Torbjorn Granlund  <tege@gmplib.org>
8983
8984	* config.guess: Match new AMD processors, allow finer distinctions
8985	among old ones.
8986	* acinclude.m4 (X86_64_PATTERN): Likewise.
8987	* config.sub: Likewise.
8988	* configure.in: Rudimentarily support new AMD processors.
8989
8990	* configure.in (--enable_assembly): New option.
8991	(target none-*-*): Disable, give error.
8992
89932010-11-29  Torbjorn Granlund  <tege@gmplib.org>
8994
8995	* mpn/x86/x86-defs.m4 (LEA): Support non-PIC code.
8996	* mpn/x86/darwin.m4 (LEA): Likewise.
8997
8998	* tests/amd64call.asm: Rewrite for code size, and to match calls and
8999	returns.
9000
9001	* tests/x86call.asm: Rewrite for code size, to support PIC, and to
9002	match calls and returns.
9003	* tests/x86check.c: Rewrite.
9004
90052010-11-22  Torbjorn Granlund  <tege@gmplib.org>
9006
9007	* mpz/get_str.c: Make all bases either work or return an error.
9008	* mpz/out_str.c: Likewise.
9009	* mpq/get_str.c: Likewise.
9010	* mpf/get_str.c: Likewise.
9011
90122010-11-14  Torbjorn Granlund  <tege@gmplib.org>
9013
9014	* tests/misc/t-printf.c: Add explicit casts for type conversions.
9015	* mpn/generic/toom62_mul.c: Likewise.
9016
90172010-11-13  Torbjorn Granlund  <tege@gmplib.org>
9018
9019	* mpn/generic/get_d.c: Misc cleanup.  Fail with a syntax error for
9020	non-IEEE fp formats.
9021
9022	* tests/devel/try.c (malloc_region): Add explicit casts for type
9023	conversions.
9024
9025	* acinclude.m4 (GMP_ASM_RODATA): Make test code snippet C++ compatible.
9026	(GMP_C_DOUBLE_FORMAT): Likewise.
9027	(GMP_FUNC_VSNPRINTF): Likewise.
9028
9029	* config.guess (x86): Make test C snippet C++ compatible.
9030
90312010-11-12  Torbjorn Granlund  <tege@gmplib.org>
9032
9033	* Makefile.am: Remove mpbsd.
9034	* configure.in: Remove mpbsd.
9035	* doc/configuration: Remove mpbsd mentions.
9036	* doc/gmp.texi: Remove mpbsd docs.
9037	* tests/Makefile.am: Remove mpbsd.
9038	* libmp.sym: Remove.
9039	* mpbsd: Remove directory and files.
9040	* tests/mpbsd: Remove directory and files.
9041
90422010-11-11  Torbjorn Granlund  <tege@gmplib.org>
9043
9044	* mpn/x86_64/atom/aors_n.asm: Don't rely on ZF after 'bt' insn.
9045	Use 64-bit 'test' to support operands of 2^32 limbs and more.
9046
9047	* rand: New directory, move rand*.c and randmt.h here.
9048	* rand/Makefile.am: New file.
9049	* Makefile.am (SUBDIRS): Add rand.
9050	(RANDOM_OBJECTS): New variable.
9051	(libgmp_la_SOURCES): Remove random objects.
9052	(libgmp_la_DEPENDENCIES): Add RANDOM_OBJECTS.
9053	* configure.in (AC_OUTPUT): Add rand/Makefile.
9054
9055	* ansi2knr.1: File removed.
9056	* ansi2knr.c: File removed.
9057
90582010-11-10  Torbjorn Granlund  <tege@gmplib.org>
9059
9060	Make it possible to compile GMP with g++:
9061
9062	* gmp-impl.h: Declare __gmp_digit_value_tab here.
9063	* mpbsd/min.c: ...not here.
9064	* mpbsd/xtom.c: ...nor here.
9065	* mpf/set_str.c: ...nor here.
9066	* mpz/inp_str.c: ...nor here.
9067	* mpz/set_str.c: ...nor here.
9068
9069	* mpn/generic/toom43_mul.c: Add casts for logical operations on enums.
9070	* mpn/generic/toom44_mul.c: Likewise.
9071	* mpn/generic/toom4_sqr.c: Likewise.
9072	* mpn/generic/toom52_mul.c: Likewise.
9073	* mpn/generic/toom53_mul.c: Likewise.
9074	* mpn/generic/toom62_mul.c: Likewise.
9075
9076	* mpz/clrbit.c: Clean up typing using MPZ_REALLOC.
9077	* mpz/setbit.c: Likewise.
9078
9079	* mpz/powm.c: Avoid variable name 'new'.
9080
9081	* randlc2x.c: Add explicit casts for type conversions.
9082	* tests/misc/t-printf.c: Likewise.
9083	* tests/misc/t-scanf.c: Likewise.
9084	* tests/misc.c: Likewise.
9085	* tests/mpz/convert.c: Likewise.
9086	* tests/refmpn.c: Likewise.
9087
9088	* tests/tests.h: Unconditionally use <sstream> for now.
9089
9090	* tests/memory.c: Include "tests.h.
9091
9092	* mp_get_fns.c: Add a __GMP_NOTHROW for coherency with prototype.
9093	* mp_set_fns.c: Likewise.
9094	* mpf/cmp.c: Likewise.
9095	* mpf/cmp_si.c: Likewise.
9096	* mpf/cmp_ui.c: Likewise.
9097	* mpf/fits_s.h: Likewise.
9098	* mpf/fits_u.h: Likewise.
9099	* mpf/get_dfl_prec.c: Likewise.
9100	* mpf/get_prc.c: Likewise.
9101	* mpf/get_si.c: Likewise.
9102	* mpf/get_ui.c: Likewise.
9103	* mpf/int_p.c: Likewise.
9104	* mpf/set_dfl_prec.c: Likewise.
9105	* mpf/set_prc_raw.c: Likewise.
9106	* mpf/size.c: Likewise.
9107	* mpf/swap.c: Likewise.
9108	* mpq/equal.c: Likewise.
9109	* mpq/swap.c: Likewise.
9110	* mpz/cmp.c: Likewise.
9111	* mpz/cmp_si.c: Likewise.
9112	* mpz/cmp_ui.c: Likewise.
9113	* mpz/cmpabs.c: Likewise.
9114	* mpz/cmpabs_ui.c: Likewise.
9115	* mpz/cong_2exp.c: Likewise.
9116	* mpz/divis_2exp.c: Likewise.
9117	* mpz/fits_s.h: Likewise.
9118	* mpz/get_si.c: Likewise.
9119	* mpz/hamdist.c: Likewise.
9120	* mpz/scan0.c: Likewise.
9121	* mpz/scan1.c: Likewise.
9122	* mpz/sizeinbase.c: Likewise.
9123	* mpz/swap.c: Likewise.
9124	* mpz/tstbit.c: Likewise.
9125	* tal-reent.c: Likewise.
9126
91272010-11-09  Torbjorn Granlund  <tege@gmplib.org>
9128
9129	* configure.in: Get rid of K&R support.
9130	* Makefile.am: Likewise.
9131	* mpn/Makefile.am: Likewise.
9132	* doc/configuration: Update docs wrt K&R support.
9133	* doc/gmp.texi: Likewise.
9134
9135	* configure.in (AC_INIT): Amend bug reporting address with manual
9136	reference.
9137
91382010-11-06  Torbjorn Granlund  <tege@gmplib.org>
9139
9140	* config.guess: If cpuid says we have 32bit-only x86 but
9141	configfsf.guess return x86_64, return the latter.
9142
9143	* mpn/x86_64/aors_n.asm: Rewrite not to rely on ZF after 'bt' insn.
9144
91452010-10-09  Torbjorn Granlund  <tege@gmplib.org>
9146
9147	* mpn/generic/trialdiv.c: Update documentation.
9148
91492010-10-04  Torbjorn Granlund  <tege@gmplib.org>
9150
9151	* mpn/x86_64/gcd_1.asm: Use m4_lshift to avoid << operator.
9152	* mpn/x86_64/aorrlshC_n.asm: Likewise.
9153	* mpn/x86_64/pentium4/aorslshC_n.asm: Likewise.
9154	* mpn/x86/k7/gcd_1.asm: Likewise.
9155
91562010-08-20  Niels Möller  <nisse@lysator.liu.se>
9157
9158	Suggested by Ozkan Sezer:
9159	* configure.in: If $M4 is already set in the environment, don't
9160	touch it. Fixed the case that no assembler files are used, and
9161	GMP_PROG_M4 is omitted.
9162
91632010-08-08  Torbjorn Granlund  <tege@gmplib.org>
9164
9165	* mpn/x86_64/fat/fat.c: Recognise many more processors.
9166
91672010-06-30  Torbjorn Granlund  <tege@gmplib.org>
9168
9169	* mpn/x86_64/divrem_2.asm: Tune.
9170
91712010-06-19  Niels Möller  <nisse@lysator.liu.se>
9172
9173	* tune/speed.h (SPEED_ROUTINE_MPN_MOD_1_1): Pass normalized
9174	divisor to the benchmarked function.
9175
91762010-06-15  Torbjorn Granlund  <tege@gmplib.org>
9177
9178	* mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p_cps): Rewrite.
9179	* mpn/x86_64/mod_1_2.asm (mpn_mod_1s_2p_cps): Rewrite.
9180	* mpn/x86_64/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite.
9181
9182	* gmp-impl.h (udiv_rnd_preinv): Simplify.
9183
9184	* mpn/x86/k7/mod_1_1.asm: New file.
9185	* mpn/x86/pentium4/sse2/mod_1_1.asm (mpn_mod_1_1p_cps): Rewrite.
9186	* mpn/x86/k7/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite.
9187	* mpn/x86/pentium4/sse2/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite.
9188
9189	* mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Store results as they are
9190	computed.
9191	* mpn/generic/mod_1_2.c (mpn_mod_1s_2p_cps): Likewise.
9192	* mpn/generic/mod_1_4.c (mpn_mod_1s_4p_cps): Likewise.
9193
9194	* mpn/x86/k7/invert_limb.asm: Moved from mpn/x86/invert_limb.asm.
9195
91962010-06-15  Niels Möller  <nisse@lysator.liu.se>
9197
9198	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-mod_1.
9199	* tests/mpn/t-mod_1.c: New file.
9200
92012010-05-25  Torbjorn Granlund  <tege@gmplib.org>
9202
9203	* mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr_itch): Trim out space
9204	for inverse, since that is passed in already.
9205
92062010-05-24  Torbjorn Granlund  <tege@gmplib.org>
9207
9208	* mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr_itch): New function.
9209	* gmp-impl.h: Declare it.
9210	* tune/common.c (speed_mpn_mupi_div_qr): Use new itch function.
9211	* tune/speed.h (SPEED_ROUTINE_MPN_MUPI_DIV_QR): Pass parameters right
9212	for new itch function.
9213
9214	* mpn/powerpc32/lshiftc.asm: New file.
9215
92162010-05-22  Torbjorn Granlund  <tege@gmplib.org>
9217
9218	* tune/tuneup.c (tune_mod_1): Revert to version of 2010-05-06.
9219
92202010-05-17  Torbjorn Granlund  <tege@gmplib.org>
9221
9222	* configure.in (ia64): Get 32-bit sizeof test right.
9223
9224	* tune/tuneup.c (tune_mod_1): Undo unintensional change to tuning of
9225	PREINV_MOD_1_TO_MOD_1_THRESHOLD.
9226
92272010-05-16  Torbjorn Granlund  <tege@gmplib.org>
9228
9229	* mpn/sparc64/mod_1.c: Rewrite.
9230	* mpn/sparc64/sparc64.h (umul_ppmm_s): New macro.
9231	* mpn/sparc64/mod_1_4.c: New file.
9232
9233	* mpn/generic/divrem_1.c: Minor cleanup.
9234	* mpn/generic/mod_1.c: Likewise.
9235	* mpn/generic/mod_1_1.c: Likewise.
9236	* mpn/generic/mod_1_2.c: Likewise.
9237	* mpn/generic/mod_1_3.c: Likewise.
9238	* mpn/generic/mod_1_4.c: Likewise.
9239
9240	* configure.in (ia64-hpux): Do sizeof tests for 32-bit and 64-bit ABI.
9241
9242	* tune/tuneup.c (tune_mod_1): Completely finish MOD_1_N tuning before
9243	tuning MOD_1U_TO_MOD_1_1_THRESHOLD.
9244
92452010-05-14  Torbjorn Granlund  <tege@gmplib.org>
9246
9247	* mpn/generic/redc_2.c: Use asm code just for GNU C.
9248
92492010-05-13  Torbjorn Granlund  <tege@gmplib.org>
9250
9251	* mpn/sparc64/ultrasparc1234: New directory.  Move all code that uses
9252	floating-point into this directory.
9253	* configure.in: Point to ultrasparc1234 for appropriate CPUs.
9254
9255	* mpn/sparc64/ultrasparct1/add_n.asm: New file.
9256	* mpn/sparc64/ultrasparct1/addlsh2_n.asm: New file.
9257	* mpn/sparc64/ultrasparct1/addmul_1.asm: New file.
9258	* mpn/sparc64/ultrasparct1/lshift.asm: New file.
9259	* mpn/sparc64/ultrasparct1/mul_1.asm: New file.
9260	* mpn/sparc64/ultrasparct1/rsblsh2_n.asm: New file.
9261	* mpn/sparc64/ultrasparct1/rshift.asm: New file.
9262	* mpn/sparc64/ultrasparct1/sublsh1_n.asm: New file.
9263	* mpn/sparc64/ultrasparct1/sublshC_n.asm: New file.
9264	* mpn/sparc64/ultrasparct1/addlsh1_n.asm: New file.
9265	* mpn/sparc64/ultrasparct1/addlshC_n.asm: New file.
9266	* mpn/sparc64/ultrasparct1/lshiftc.asm: New file.
9267	* mpn/sparc64/ultrasparct1/rsblsh1_n.asm: New file.
9268	* mpn/sparc64/ultrasparct1/rsblshC_n.asm: New file.
9269	* mpn/sparc64/ultrasparct1/sub_n.asm: New file.
9270	* mpn/sparc64/ultrasparct1/sublsh2_n.asm: New file.
9271	* mpn/sparc64/ultrasparct1/submul_1.asm: New file.
9272	* mpn/sparc64/ultrasparct1/gmp-mparam.h: New file.
9273
9274	* configure.in: Give ultrasparct1 and ultrasparct2 special code path.
9275
9276	* mpn/x86_64/pentium4/gmp-mparam.h: Disable mpn_addlsh_n, mpn_rsblsh_n.
9277
92782010-05-12  Niels Möller  <nisse@lysator.liu.se>
9279
9280	* mpz/jacobi.c (mpz_jacobi): Fixed off-by-one error in use of
9281	scratch space.
9282
9283	* tune/common.c (speed_mpz_powm_sec): New function.
9284	* tune/speed.h: Declare speed_mpz_powm_sec.
9285	* tune/speed.c (routine): Added speed_mpz_powm_sec.
9286
9287	* tune/common.c (speed_mpn_addlsh_n, speed_mpn_sublsh_n)
9288	(speed_mpn_rsblsh_n): New functions.
9289	* tune/speed.h: Declare new functions.
9290	* tune/speed.c (routine): Add new functions.
9291
92922010-05-12  Torbjorn Granlund  <tege@gmplib.org>
9293
9294	* mpn/x86_64/mod_1_4.asm: Tune for more processors.
9295
9296	* mpn/x86_64/pentium4/lshiftc.asm: New file.
9297
92982010-05-11  Niels Möller  <nisse@lysator.liu.se>
9299
9300	* mpz/jacobi.c (mpz_jacobi): Deleted old implementation.
9301	Reorganized new implementation, to handle small inputs efficiently.
9302
9303	* tests/mpz/t-jac.c (check_large_quotients): Reduced test sizes.
9304	(check_data): One more input pair related to a fixed bug.
9305	(main): Enable check_large_quotients.
9306
93072010-05-10  Torbjorn Granlund  <tege@gmplib.org>
9308
9309	* mpn/x86_64/aorrlsh2_n.asm: Fix typo.
9310
93112010-05-09  Torbjorn Granlund  <tege@gmplib.org>
9312
9313	* mpn/x86_64/aorrlshC_n.asm: New file based on aorrlsh2_n.asm.
9314	* mpn/x86_64/aorrlsh2_n.asm: Now just include aorrlshC_n.asm.
9315	* mpn/x86_64/core2/aorrlsh1_n.asm: New file, include ../aorrlshC_n.asm.
9316	* mpn/x86_64/core2/aorrlsh2_n.asm: Likewise.
9317
9318	* mpn/x86_64/core2/sublshC_n.asm: New file based on aorslsh1_n.asm.
9319	* mpn/x86_64/core2/aorslsh1_n.asm: Remove.
9320	* mpn/x86_64/core2/sublsh1_n.asm: Just include sublshC_n.asm.
9321	* mpn/x86_64/core2/sublsh2_n.asm: Likewise.
9322
93232010-05-08  Torbjorn Granlund  <tege@gmplib.org>
9324
9325	* mpn/x86_64/atom/gmp-mparam.h: Disable mpn_rsh1add_n, mpn_rsh1sub_n.
9326
9327	* mpn/x86_64/pentium4/aorslshC_n.asm: New file based on aorslsh1_n.asm.
9328	* mpn/x86_64/pentium4/aorslsh1_n.asm: Now just include aorslshC_n.asm.
9329	* mpn/x86_64/pentium4/aorslsh2_n.asm: New file.
9330
93312010-05-07  Torbjorn Granlund  <tege@gmplib.org>
9332
9333	* mpn/sparc64: Support operands of >= 2^32 limbs.
9334
9335	* mpn/sparc64/lshiftc.asm: New file.
9336
9337	* mpn/ia64/divrem_2.asm: Complete rewrite.
9338
93392010-05-06  Torbjorn Granlund  <tege@gmplib.org>
9340
9341	* tune/tuneup.c (all): Don't call tune_divrem_2.
9342
9343	* mpn/generic/divrem_2.c: Complete rewrite.
9344
9345	* tune/tuneup.c (tune_mod_1): Fix typo.
9346
93472010-05-05  Torbjorn Granlund  <tege@gmplib.org>
9348
9349	* mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p): Use macro register names.
9350	(mpn_mod_1_1p_cps): Rewrite.
9351
9352	* mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Micro-optimise.
9353
9354	* longlong.h: Undo 2009-03-01 change for powerpc64, it gives poor code.
9355
9356	* mpn/x86/pentium4/sse2/mod_1_1.asm: New file.
9357
9358	* mpn/powerpc64/mode64/mod_1_1.asm: New file.
9359
9360	* tune/tuneup.c (tune_mod_1): Use more typical divisor, for the benefit
9361	of machines with early-out multipliers.
9362
93632010-05-04  Torbjorn Granlund  <tege@gmplib.org>
9364
9365	* tune/tuneup.c (tune_mod_1): Fix typo.
9366
9367	* mpn/generic/mod_1_1.c: Undo last change.
9368	* mpn/x86_64/mod_1_1.asm: Likewise.
9369
93702010-05-03  Niels Möller  <nisse@lysator.liu.se>
9371
9372	* mpn/generic/jacobi_lehmer.c (jacobi_hook): New function.
9373	(mpn_jacobi_subdiv_step): Deleted function.
9374	(mpn_jacobi_lehmer): Use general mpn_gcd_subdiv_step.
9375
9376	* mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): Reorganized
9377	to use a single hook function.
9378	* mpn/generic/gcdext.c (mpn_gcdext): Adapted to new hook
9379	interface.
9380	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_hook): New unified hook
9381	function.
9382	* mpn/generic/gcd.c (gcd_hook): Renamed from gcd_done, and adapted
9383	to new hook interface.
9384	* gmp-impl.h (gcd_subdiv_step_hook): New typedef, now a function
9385	type, not a struct.
9386	(mpn_gcdext_hook): Declare.
9387
93882010-05-03  Torbjorn Granlund  <tege@gmplib.org>
9389
9390	* mpn/generic/mod_1_1.c: Avoid multiply for 2 limb feed-in.
9391	* mpn/generic/mod_1_2.c: Likewise.
9392	* mpn/generic/mod_1_3.c: Likewise.
9393	* mpn/generic/mod_1_4.c: Likewise.
9394	* mpn/x86_64/mod_1_1.asm: Likewise.
9395	* mpn/x86_64/mod_1_2.asm: Likewise.
9396	* mpn/x86_64/mod_1_4.asm: Likewise.
9397	* mpn/x86/k7/mod_1_4.asm: Likewise.
9398	* mpn/x86/pentium4/sse2/mod_1_4.asm: Likewise.
9399	* mpn/alpha/ev6/mod_1_4.asm: Likewise.
9400
9401	* tune/tuneup.c (tune_mod_1): Measure MOD_1_1_TO_MOD_1_2_THRESHOLD and
9402	MOD_1_2_TO_MOD_1_4_THRESHOLD before MOD_1U_TO_MOD_1_1_THRESHOLD for
9403	correctness.
9404
9405	* mpn/powerpc64/sqr_diagonal.asm: Complete rewrite.
9406
9407	* mpn/powerpc64/mode64/mod_1_4.asm: New file.
9408
94092010-05-02  Torbjorn Granlund  <tege@gmplib.org>
9410
9411	* config.guess: Recognise power7.
9412
9413	* configure.in: Major overhaul of powerpc support.
9414
9415	* mpn/powerpc64/p6/lshift.asm: New file.
9416	* mpn/powerpc64/p6/lshiftc.asm: Likewise.
9417	* mpn/powerpc64/p6/rshift.asm: Likewise.
9418
94192010-04-30  Torbjorn Granlund  <tege@gmplib.org>
9420
9421	* configure.in (powerpc64): Support CPU specific mode-less subdirs.
9422
9423	* mpn/powerpc64/aix.m4 (PROLOGUE_cpu): Use "named csect" making
9424	requested alignment actually honoured.
9425
94262010-04-30  Niels Möller  <nisse@lysator.liu.se>
9427
9428	* mpn/generic/jacobi_lehmer.c (mpn_jacobi_2): Fixed handling of
9429	the case bl == 1. Fixed missing application of reciprocity.
9430
94312010-04-29  Niels Möller  <nisse@lysator.liu.se>
9432
9433	* configure.in (gmp_mpn_functions): Deleted gcdext_subdiv_step.
9434
9435	* mpn/generic/gcdext.c (mpn_gcdext): Use new generalized
9436	mpn_gcd_subdiv_step.
9437
9438	* mpn/generic/gcdext_lehmer.c (gcdext_update): New function.
9439	(gcdext_done): New function.
9440	(gcdext_hook): New const hook struct.
9441	(mpn_gcdext_lehmer_n): Use new generalized mpn_gcd_subdiv_step.
9442
9443	* mpn/generic/gcd.c (gcd_done): New function.
9444	(gcd_hook): New const hook struct.
9445	(mpn_gcd): Adapted to new mpn_gcd_subdiv_step interface.
9446
9447	* mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): Reorganized
9448	function. Added hook function pointers to the argument list, so
9449	the same function can be used for gcd, gcdext, and jacobi.
9450
9451	* gmp-impl.h (struct gcd_subdiv_step_hook): New struct.
9452	(mpn_gcdext_subdiv_step): Deleted prototype.
9453	(struct gcdext_ctx): New struct.
9454	(gcdext_hook): Declare const struct.
9455	(mpn_gcd_subdiv_step): Updated prototype.
9456
9457	* mpn/generic/gcdext_subdiv_step.c: Deleted file.
9458
94592010-04-28  Torbjorn Granlund  <tege@gmplib.org>
9460
9461	* mpn/powerpc64/lshift.asm: Rewrite.
9462	* mpn/powerpc64/rshift.asm: Likewise.
9463	* mpn/powerpc64/mode64/lshiftc.asm: New file.
9464
9465	* mpn/powerpc64/aix.m4: Align functions to 32-byte boundary.
9466	* mpn/powerpc64/darwin.m4: Likewise.
9467	* mpn/powerpc64/elf.m4: Likewise.
9468
94692010-04-28  Niels Möller  <nisse@lysator.liu.se>
9470
9471	* tests/mpz/t-jac.c (check_data): Added some more test cases.
9472
9473	* mpn/generic/jacobi_lehmer.c (mpn_jacobi_2): Bugfix, count
9474	trailing zeros, not leading.
9475
94762010-04-27  Torbjorn Granlund  <tege@gmplib.org>
9477
9478	* mpn/powerpc64/mode64/p6/mul_basecase.asm: New file.
9479
94802010-04-23  Niels Möller  <nisse@lysator.liu.se>
9481
9482	* gmp-impl.h (MPN_GCD_LEHMER_N_ITCH): Deleted.
9483	(mpn_gcd_lehmer_n): Deleted declaration.
9484
9485	* mpn/generic/gcd.c (gcd_2): Moved from gcd_lehmer.c.
9486	(mpn_gcd): Inlined the code from mpn_gcd_lehmer_n. Also use
9487	MPN_GCD_SUBDIV_STEP_ITCH rather than MPN_GCD_LEHMER_N_ITCH.
9488
94892010-04-22  Torbjorn Granlund  <tege@gmplib.org>
9490
9491	* mpn/powerpc64/mode64/bdiv_dbm1c.asm: Swap multiply insns to make them
9492	consecutive, for the benefit of POWER6.
9493
9494	* mpn/powerpc64/mode64/p6/gmp-mparam.h: New file.
9495
94962010-04-21  Torbjorn Granlund  <tege@gmplib.org>
9497
9498	* mpn/generic/gcd_lehmer.c: Deleted file.
9499
9500	* mpn/powerpc64/mode64/divrem_1.asm: Swap multiply insns to make them
9501	consecutive, for the benefit of POWER6.
9502	* mpn/powerpc64/mode64/dive_1.asm: Likewise.
9503	* mpn/powerpc64/mode64/divrem_2.asm: Likewise.
9504	* mpn/powerpc64/mode64/mul_1.asm: Likewise.
9505	* mpn/powerpc64/mode64/aorsmul_1.asm: Likewise.
9506
9507	* mpn/powerpc64/mode64/aorslshC_n.asm: Swap ldx operands as a temporary
9508	workaround for POWER6 pipeline glitch.
9509
95102010-04-19  Niels Möller  <nisse@lysator.liu.se>
9511
9512	* mpz/jacobi.c (mpz_jacobi): New implementation using
9513	mpn_jacobi_lehmer. Currently #if:ed out.
9514
9515	* mpn/generic/jacbase.c (mpn_jacobi_base)
9516	[JACOBI_BASE_METHOD < 4]: Support inputs with a >= b.
9517
9518	* gmp-impl.h (mpn_jacobi_lehmer): Added prototype.
9519	(jacobi_table): Declare.
9520	(mpn_jacobi_init): New inline function.
9521	(mpn_jacobi_finish): Likewise.
9522	(mpn_jacobi_update): Likewise.
9523
9524	* mpn/generic/jacobi_lehmer.c (mpn_jacobi_lehmer): New file, new
9525	function.
9526
9527	* configure.in (gmp_mpn_functions): Added jacobi_lehmer.
9528
95292010-04-14  Niels Möller  <nisse@lysator.liu.se>
9530
9531	* configure.in (gmp_mpn_functions): Added
9532	matrix22_mul1_inverse_vector.
9533	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Added
9534	matrix22_mul1_inverse_vector.c.
9535
9536	* gmp-impl.h (mpn_matrix22_mul1_inverse_vector): Updated for
9537	rename of mpn_matrix22_mul1_inverse_vector.
9538	* mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer_n): Likewise.
9539	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Likewise.
9540	* mpn/generic/hgcd.c (hgcd_step): Likewise.
9541
9542	* mpn/generic/matrix22_mul1_inverse_vector.c
9543	(mpn_matrix22_mul1_inverse_vector): New file, function moved and
9544	renamed...
9545	* mpn/generic/hgcd2.c (mpn_hgcd_mul_matrix1_inverse_vector):
9546	...from here.
9547
95482010-04-12  Torbjorn Granlund  <tege@gmplib.org>
9549
9550	* tests/mpn/t-toom6h.c (SIZE_LOG): Define.
9551	* tests/mpn/t-toom8h.c (SIZE_LOG): Likewise.
9552
95532010-04-10  Torbjorn Granlund  <tege@gmplib.org>
9554
9555	* mpn/ia64/lorrshift.asm: Rewrite feed-in and wind-down code.
9556
9557	* mpn/ia64/aorslsh1_n.asm: Adapt to new aorslsh1_n.
9558	* mpn/ia64/aorslsh1_n.asm: Likewise.
9559
9560	* mpn/ia64/aors_n.asm: Complete rewrite.
9561	* mpn/ia64/aorslsh1_n.asm: Likewise.
9562
9563	* mpn/ia64/add_n_sub_n.asm: Misc cleanups.  Add slotting comments.
9564
9565	* mpn/ia64/lshiftc.asm: New file.
9566
9567	* mpn/x86_64/pentium4/gmp-mparam.h: No longer disable rsh1add_n and
9568	rsh1sub_n; instead disable rsblsh1_n, addlsh2_n, rsblsh2_n.
9569
9570	* mpn/x86/divrem_2.asm: Use "orb" instead of "or" to work around
9571	Solaris assembler bug.
9572	* mpn/x86_64/mpn/x86_64/divrem_2.asm: Likewise.
9573
9574	* mpn/x86/aors_n.asm: Use operand-less shift-by-1 insn form.
9575	* mpn/x86/pentium/aors_n.asm: Likewise.
9576	* mpn/x86_64/invert_limb.asm: Likewise.
9577
9578	* mpn/x86_64/pentium4/aors_n.asm: Let non-nc code fall into nc code.
9579
9580	* mpn/x86_64/pentium4/rsh1aors_n.asm: New file.
9581
95822010-03-25  Torbjorn Granlund  <tege@gmplib.org>
9583
9584	* mpn/ia64/add_n_sub_n.asm: New file.
9585
9586	* mpn/generic/toom33_mul.c: Fix mpn_add_n_sub_n usage.
9587	* mpn/generic/toom3_sqr.c: Likewise.
9588	* mpn/generic/toom63_mul.c: Likewise.
9589
9590	* mpn/generic/add_n_sub_n.c: Renamed from addsub_n.c.
9591
95922010-03-23  Torbjorn Granlund  <tege@gmplib.org>
9593
9594	* mpn/x86_64/divrem_2.asm: Use mpn_invert_limb instead of div insn.
9595
9596	* mpn/ia64/aorslshC_n.asm: New file, generalised from last iteration of
9597	aorslsh1_n.asm.
9598	* mpn/ia64/aorslsh1_n.asm: Use aorslshC_n.asm.
9599	* mpn/ia64/aorslsh1_n.asm: New file, use aorslshC_n.asm.
9600
96012010-03-20  Torbjorn Granlund  <tege@gmplib.org>
9602
9603	* mpn/powerpc64/mode64/invert_limb.asm: Rewrite to exploit cancellation
9604	in the Newton iteration.
9605
96062010-03-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
9607
9608	* mpn/generic/toom_interpolate_8pts.c: Use mpn_sublsh2_n.
9609
96102010-03-20  Torbjorn Granlund  <tege@gmplib.org>
9611
9612	* mpn/powerpc64/mode64/aorslshC_n.asm: New file, generalised from
9613	last iteration of aorslsh1_n.asm.
9614	* mpn/powerpc64/mode64/aorslsh1_n.asm: Use aorslshC_n.asm.
9615	* mpn/powerpc64/mode64/aorslsh1_n.asm: New file, use aorslshC_n.asm.
9616
96172010-03-19  Torbjorn Granlund  <tege@gmplib.org>
9618
9619	* mpn/x86_64/nano/dive_1.asm: New file.
9620
9621	* mpn/x86_64/divrem_1.asm: Avoid shld since it is slow on several CPU
9622	types.  Unconditionally provide code for normalised and unnormalised
9623	divisors.  Cleanup labels.
9624
9625	* mpn/x86_64/core2/divrem_1.asm: Remove special code for normalised
9626	divisors.  Cleanup labels.
9627
9628	* mpn/generic/toom_interpolate_6pts.c: Call mpn_sublsh2_n and
9629	mpn_sublsh_n with correct args.
9630
9631	* tests/devel/try.c: Use enum for TYPE_*.
9632
9633	* tests/devel/try.c: Test mpn_sublsh2_n.
9634	* tests/refmpn.c (refmpn_sublsh2_n): New function.
9635	* tests/tests.h (refmpn_sublsh2_n): Declare.
9636
9637	* mpn/powerpc64/mode64/aorslsh1_n.asm: New file, with faster
9638	mpn_addlsh1_n and mpn_sublsh1_n.
9639	* mpn/powerpc64/mode64/addlsh1_n.asm: Delete.
9640	* mpn/powerpc64/mode64/sublsh1_n.asm: Delete.
9641
96422010-03-18  Torbjorn Granlund  <tege@gmplib.org>
9643
9644	* configure.in (*-*-aix): Define gcc_32_cflags_maybe, ar_32_flags and
9645	nm_32_flags.
9646
9647	* mpn/x86/pentium4/sse2/addlsh1_n.asm: Tune for slightly better speed.
9648	Misc cleanups.  Add cycle table.
9649
9650	* mpn/x86_64/copyi.asm: Update cycle table.
9651	* mpn/x86_64/copyd.asm: Likewise.
9652	* mpn/x86_64/rsh1aors_n.asm: Likewise.
9653	* mpn/x86_64/dive_1.asm: Likewise.
9654
9655	* mpn/x86/pentium4/sse2/add_n.asm: Misc cleanups.  Add cycle table.
9656	* mpn/x86/pentium4/sse2/sub_n.asm: Likewise.
9657
96582010-03-16  Torbjorn Granlund  <tege@gmplib.org>
9659
9660	* mpn/x86_64/divrem_1.asm: Use mpn_invert_limb instead of div insn.
9661	* mpn/x86_64/core2/divrem_1.asm: Likewise.
9662
9663	* tune/speed.c (routine): Add FLAG_R_OPTIONAL for many binops.
9664
96652010-03-15  Torbjorn Granlund  <tege@gmplib.org>
9666
9667	* mpn/alpha/ev6/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite.
9668
9669	* mpn/ia64/aors_n.asm: Insert explicitly typed nops to trigger intended
9670	bundling.
9671	* mpn/ia64/aorslsh1_n.asm: Likewise.
9672	* mpn/ia64/dive_1.asm: Likewise.
9673
96742010-03-13  Torbjorn Granlund  <tege@gmplib.org>
9675
9676	* mpn/x86/pentium4/sse2/submul_1.asm: Rewrite.
9677
9678	* mpn/powerpc64/mode64/aorsmul_1.asm: New file, faster than old code
9679	for both mpn_addmul_1 and mpn_submul_1.
9680	* mpn/powerpc64/mode64/addmul_1.asm: Remove.
9681	* mpn/powerpc64/mode64/submul_1.asm: Remove.
9682
96832010-03-11  Niels Möller  <nisse@lysator.liu.se>
9684
9685	* mpn/generic/gcd_lehmer.c (gcd_2): Use sub_ddmmss.
9686
9687	* mpn/generic/jacbase.c (mpn_jacobi_base): Reorganized the
9688	JACOBI_BASE_METHOD 4 slightly. Now requires that b > 1.
9689
96902010-03-10  Torbjorn Granlund  <tege@gmplib.org>
9691
9692	* mpn/x86_64/divrem_1.asm: Make fraction code take documented # of
9693	cycles.  Annotate code for more CPUs.  Misc cleanups.
9694	* mpn/x86_64/core2/divrem_1.asm: Annotate code for more CPUs.
9695
9696	* mpn/alpha/ev6/mod_1_4.asm: New file.
9697
9698	* mpn/ia64/mod_34lsub1.asm: New file.
9699
9700	* doc/gmp.texi (Language Bindings): Update Python site, add Ruby.
9701
97022010-03-10  Niels Möller  <nisse@lysator.liu.se>
9703
9704	* tune/tuneup.c (tune_jacobi_base): Consider mpn_jacobi_base_4.
9705	* tune/speed.c (routine): Added mpn_jacobi_base_4.
9706	* tune/common.c (speed_mpn_jacobi_base_4): New function.
9707	* tune/speed.h (speed_mpn_jacobi_base_4): Declare it.
9708	* tune/Makefile.am (libspeed_la_SOURCES): Added jacbase4.c.
9709	* tune/jacbase4.c: New file.
9710
9711	* mpn/generic/jacbase.c (mpn_jacobi_base): New function, for
9712	JACOBI_BASE_METHOD 4.
9713
97142010-03-09  Niels Möller  <nisse@lysator.liu.se>
9715
9716	* tests/mpz/t-jac.c (check_large_quotients): Also generate inputs
9717	with large quotients and a large gcd.
9718
97192010-03-09 Marco Bodrato <bodrato@mail.dm.unipi.it>
9720
9721	* tests/mpz/t-bin.c (randomwalk): New test-generator function.
9722
97232010-03-07  Torbjorn Granlund  <tege@gmplib.org>
9724
9725	* tune/speed.c (routine): Force r argument for several mod_1 calls.
9726
97272010-03-06  Torbjorn Granlund  <tege@gmplib.org>
9728
9729	* mpn/x86_64/divrem_1.asm: Disable SPECIAL_CODE_FOR_NORMALIZED_DIVISOR.
9730	Misc clean up.
9731
9732	* mpn/x86_64/mod_1_1.asm: New file.
9733	* mpn/x86_64/mod_1_2.asm: New file.
9734	* mpn/x86_64/mod_1_4.asm: Update cycle counts.
9735
9736	* tests/tests.h (TESTS_REPS): Fix typo.
9737
97382010-03-03  Torbjorn Granlund  <tege@gmplib.org>
9739
9740	* mpn/x86_64/core2/divrem_1.asm: New file.
9741
97422010-02-26  Niels Möller  <nisse@lysator.liu.se>
9743
9744	* tune/speed.c (routine): Added udiv_qrnnd_preinv3.
9745
9746	* tune/common.c (speed_udiv_qrnnd_preinv3): New function.
9747	* tune/speed.h: Added prototype for it.
9748
97492010-02-26  Niels Möller  <nisse@lysator.liu.se>
9750
9751	* tests/mpz/t-jac.c (check_large_quotients): New test. Currently
9752	disabled, since it's quite slow.
9753	(mpz_nextprime_step): New function.
9754
97552010-02-26  Torbjorn Granlund  <tege@gmplib.org>
9756
9757	* mpn/pa64/aors_n.asm: Fix typo in last change.
9758
97592010-02-25  Niels Möller  <nisse@lysator.liu.se>
9760
9761	* tests/mpz/t-jac.c (ref_jacobi): New reference implementation,
9762	using factorization and legendre symbols computed by powm.
9763
9764	* tests/devel/try.c (param_init, call): Don't pass negative values
9765	for the second argument to mpz_jacobi and refmpz_jacobi.
9766
9767	* tests/refmpz.c (refmpz_jacobi): Require that b is odd and positive.
9768
9769	* tests/devel/try.c (param_init): Support mpz_legendre.
9770	(choice_array): Added mpz_kronecker (apparently forgotten) and
9771	mpz_legendre.
9772	(call): Added TYPE_MPZ_LEGENDRE.
9773	(try_one): Added support for DATA_SRC1_ODD_PRIME.
9774
9775	* tests/refmpz.c (refmpz_legendre): Rewrote using powm.
9776
97772010-02-25  Torbjorn Granlund  <tege@gmplib.org>
9778
9779	* config.guess: Make "corei" default for unrecognised Intel P6 CPUs.
9780
9781	* tests/mpz/t-perfpow.c (check_random): Use mp_limb_t type for limb
9782	variables.
9783
9784	* tests/mpn/t-toom6h.c (COUNT): Define.
9785	* tests/mpn/t-toom8h.c (COUNT): Define.
9786
9787	* tests/mpn/t-div.c: Cast a switch index to placate HP's cc.
9788	* tests/mpn/t-bdiv.c: Likewise.
9789
9790	* mpn/pa64/aors_n.asm: Fix support of the 2.0n ABI.
9791
97922010-02-24 Marco Bodrato <bodrato@mail.dm.unipi.it>
9793
9794	* tests/mpz/t-bin.c (data): Replace (2k,k), tested by twos ().
9795	* tests/mpf/t-inp_str.c (data): Test also "+" in the exponent.
9796
97972010-02-23  Torbjorn Granlund  <tege@gmplib.org>
9798
9799	* mpn/generic/mod_1_3.c: Cast a switch index to placate HP's cc.
9800
9801	* mpn/generic/sqrtrem.c: Use CNST_LIMB.
9802
98032010-02-20  Niels Möller  <nisse@lysator.liu.se>
9804
9805	* tune/speed.h (mpn_gcd_accel): Deleted prototype.
9806	(mpn_hgcd_lehmer): New prototype.
9807	(MPN_HGCD_LEHMER_ITCH): New macro (previously in gmp-impl.h).
9808
9809	* tune/Makefile.am (libspeed_la_SOURCES): Added hgcd_lehmer.c.
9810	* tune/hgcd_lehmer.c: New file.
9811	* tune/gcd_accel.c: Deleted obsolete file.
9812
9813	* gmp-impl.h (MPN_HGCD_LEHMER_ITCH): Deleted macro.
9814
9815	* mpn/generic/hgcd.c (mpn_hgcd_lehmer): Deleted function,
9816	(mpn_hgcd): Don't call mpn_hgcd_lehmer, instead use inlined loop
9817	around hgcd_step.
9818	(mpn_hgcd_itch): Substitute n for MPN_HGCD_LEHMER_ITCH (n).
9819
98202010-02-19  Niels Möller  <nisse@lysator.liu.se>
9821
9822	* Makefile.am (mpn/jacobitab.h): Added the rules needed to
9823	generate this file.
9824
9825	* gen-jacobitab.c: New file.
9826
98272010-02-19  Torbjorn Granlund  <tege@gmplib.org>
9828
9829	* mpn/generic/powm.c: Honour SQR_BASECASE_THRESHOLD in innerloop
9830	expansions.
9831
98322010-02-16  Niels Möller  <nisse@lysator.liu.se>
9833
9834	* tune/time.c (cgt_works_p): Added rudimentary sanity check for
9835	clock_gettime working.
9836
98372010-02-15  Niels Möller  <nisse@lysator.liu.se>
9838
9839	* tune/time.c (speed_time_init): Make use of cycle counter
9840	configurable, via the speed_option_cycles_broken flag.
9841	* tune/common.c (speed_option_cycles_broken): New global variable.
9842	(speed_option_set): Recognize option "cycles-broken".
9843
9844	* tune/time.c (cycles_works_p): Deleted hack to disable cycle
9845	counter on linux. Needs to be replaced by something more
9846	selective.
9847
98482010-02-11  Niels Möller  <nisse@lysator.liu.se>
9849
9850	* tune/time.c (speed_time_init): Fix speed_time_string when using
9851	clock_gettime.
9852	(cycles_works_p): On linux, don't use the cycle counter.
9853
9854	* tune/Makefile.am: Add $(TUNE_LIBS) when linking programs.
9855
9856	* configure.in: Check if -lrt is needed for clock_gettime, and if
9857	so, add that flag to TUNE_LIBS.
9858
98592010-02-07  Torbjorn Granlund  <tege@gmplib.org>
9860
9861	* tune/tuneup.c (tune_redc): Set min_size and min_is_always when
9862	measuring REDC_1_TO_REDC_2_THRESHOLD.
9863	(tune_mod_1): Set min_size for PREINV_MOD_1_TO_MOD_1_THRESHOLD.
9864
9865	* mpn/x86_64/aorrlsh_n.asm (cnt): Fix a typo.
9866	* mpn/x86_64/lshsub_n.asm: Likewise.
9867
98682010-02-05  Torbjorn Granlund  <tege@gmplib.org>
9869
9870	* Version 5.0.1 released.
9871
9872	* mpn/generic/powm.c: Use rp target area for power table computation in
9873	order to use less scratch.
9874
9875	* mpn/generic/binvert.c (mpn_binvert_itch): Enable more economical
9876	mpn_mulmod_bnm1_itch call.
9877
9878	* mpn/generic/mu_div_qr.c: Remove always true #if.
9879	* mpn/generic/mu_divappr_q.c: Likewise.
9880	* mpn/generic/mu_bdiv_q.c: Likewise.
9881	* mpn/generic/mu_bdiv_qr.c: Likewise.
9882
98832010-02-01  Torbjorn Granlund  <tege@gmplib.org>
9884
9885	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*):
9886	Bump version info.
9887
9888	* mpn/powerpc64/mode64/gmp-mparam.h: Remove {MUL,SQR}_FFT_TABLE2.
9889	* mpn/x86/p6/gmp-mparam.h: Likewise.
9890	* mpn/x86/p6/mmx/gmp-mparam.h: Likewise.
9891	* mpn/generic/mul_fft.c: Don't depend on FFT_TABLE2, it was broken.
9892
98932010-01-29  Torbjorn Granlund  <tege@gmplib.org>
9894
9895	* mpn/generic/mul_fft.c (mpn_mul_fft_internal): Remove arguments n, m,
9896	k and rec; add argument sqr.  Don't call mpn_mul_fft_decompose here,
9897	instead do that in all callers.
9898	(mpn_mul_fft): Trim allocation when squaring, and use TMP_ALLOC*, not
9899	explicit alloc/free.
9900	(mpn_fft_div_2exp_modF): Avoid a scalar division.
9901	(mpn_fft_mul_modF_K): Replace some multiplies by K with shifting by k.
9902	(mpn_fft_mul_2exp_modF): Make function more symmetrical.
9903
99042010-01-27  Torbjorn Granlund  <tege@gmplib.org>
9905
9906	* mpn/generic/mu_div_q.c (mpn_mu_div_q_itch): Rewrite.
9907	* mpn/generic/mu_div_qr.c (mpn_mu_div_qr_itch): Re-enable
9908	better mulmod itch estimate.
9909	* mpn/generic/mu_divappr_q.c (mpn_mu_divappr_q_itch): Likewise.
9910	* mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Likewise.
9911	* mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise.
9912
99132010-01-27 Marco Bodrato <bodrato@mail.dm.unipi.it>
9914
9915	* mpn/generic/mu_div_qr.c (mpn_mu_div_qr_itch): Disabled guessed
9916	estimate, enabled a conservative one.
9917	* mpn/generic/mu_divappr_q.c (mpn_mu_divappr_q_itch): Likewise.
9918	* mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Likewise.
9919	* mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise.
9920
99212010-01-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
9922
9923	* mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Partial rewrite to
9924	reduce memory usage.
9925	* mpn/generic/sqrmod_bnm1.c (mpn_sqrmod_bnm1): Likewise.
9926	(mpn_sqrmod_bnm1_next_size): New function.
9927
9928	* gmp-impl.h (mpn_mulmod_bnm1_itch): Accepts 3 parameters now.
9929	(mpn_sqrmod_bnm1_itch): New inline function.
9930	(mpn_sqrmod_bnm1_next_size): Declaration and mangling.
9931	* mpn/generic/nussbaumer_mul.c: Use the new functions.
9932
9933	* mpn/generic/invertappr.c (mpn_ni_invertappr): Use new syntax for
9934	mpn_mulmod_bnm1_itch.
9935	* mpn/generic/mu_divappr_q.c (mpn_mu_divappr_q_itch): Likewise.
9936	* mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Likewise.
9937	* mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise.
9938	* mpn/generic/mu_div_qr.c (mpn_mu_div_qr_itch): Likewise.
9939	* mpn/generic/binvert.c (mpn_binvert_itch): Likewise.
9940	* tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL): Likewise.
9941	(SPEED_ROUTINE_MPN_MULMOD_BNM1_ROUNDED): Likewise.
9942
9943	* tests/mpn/t-sqrmod_bnm1.c, tests/mpn/t-mulmod_bnm1.c: Test
9944	reduced memory usage.
9945
99462010-01-25  Torbjorn Granlund  <tege@gmplib.org>
9947
9948	* tune/tuneup.c (INSERT_FFTTAB): New macro, like old insertion code but
9949	also inserting a sentinel.
9950	(fftmes): Use INSERT_FFTTAB for inserting new measurements.
9951	Limit k range to best_k - 4 ... best_k + 4.
9952
99532010-01-23  Torbjorn Granlund  <tege@gmplib.org>
9954
9955	* gmp-h.in (__GNU_MP_VERSION_PATCHLEVEL): Bump.
9956	(__GMP_MP_RELEASE): New macro.
9957
9958	* mpf/div.c: Rewrite to use mpn_div_q.
9959
99602010-01-21  Torbjorn Granlund  <tege@gmplib.org>
9961
9962	* Add FFT_TABLE3 tables for a basic set of machines.
9963
9964	* configure.in: Use -mtune=nocona for 64-bit pentium4.
9965
9966	* config.guess: Recognise many more Intel processors.
9967
9968	* tune/common.c: Whitespace cleanup.
9969	(speed_mpn_matrix22_mul): Rewrite.
9970
99712010-01-21  Niels Möller  <nisse@lysator.liu.se>
9972
9973	* mpn/generic/nussbaumer_mul.c (mpn_nussbaumer_mul): Take
9974	advantage of new mpn_mulmod_bnm1 interface, to reduce allocation.
9975
9976	* tests/mpn/t-mulmod_bnm1.c (ref_mulmod_bnm1, main): Adapted to
9977	mpn_mulmod_bnm1 interface change.
9978
9979	* mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Interface change,
9980	in case an + bn < rn, only write an + bn output limbs. New input
9981	requirement, an + bn > rn/2.
9982	* mpn/generic/sqrmod_bnm1.c (mpn_sqrmod_bnm1): Corresponding
9983	changes.
9984
99852010-01-19  Torbjorn Granlund  <tege@gmplib.org>
9986
9987	* tune/tuneup.c (fftmes): Round up initial n according to initial k.
9988	Limit k to 24 in loop.  Remove an obsolete always-true condition.
9989	Remove a redundant trace printout.
9990
99912010-01-18  Torbjorn Granlund  <tege@gmplib.org>
9992
9993	* tune/tuneup.c (fftmes): New function
9994	(fft): Rewrite.
9995	(mpn_mul_fft_lcm): New function, copied from mpn/generic/mul_fft.c.
9996	(fftfill): New function, code taken from mul_fft.c (mpn_mul_fft).
9997	(cached_measure): New function.
9998
9999	* gmp-impl.h (struct fft_table_nk): Moved from mul_fft.c.
10000	(MUL_FFT_TABLE3, SQR_FFT_TABLE3): Provide dummy versions for tuneup
10001	builds.
10002	(FFT_TABLE3_SIZE): Increase value for tuneup builds.
10003
10004	* mpn/generic/mul_fft.c: Handle a new FFT threshold table type ("3").
10005	Misc cleanups to old table type code.
10006
100072010-01-16  Torbjorn Granlund  <tege@gmplib.org>
10008
10009	* mpn/x86_64/darwin.m4: Fix typo in last change.
10010
100112010-01-15  Torbjorn Granlund  <tege@gmplib.org>
10012
10013	* gmp-h.in (__GMP_EXTERN_INLINE): Remove "extern" for newer Sun C.
10014
10015	* gmp-impl.h (GMP_LIMB_BYTES): New define.
10016
10017	* mpn/x86_64/darwin.m4 (LEA): New define.
10018
10019	* mpn/x86/invert_limb.asm (approx_tab): Use DEF_OBJECT.
10020	Rename and globalise it to work around Mac OS bug.
10021
10022	With Philip McLaughlin:
10023	* mpn/x86_64/gcd_1.asm (ctz_table): Don't use local prefix, but
10024	use DEF_OBJECT...END_OBJECT.
10025	Keep stack pointer at ABI mandated alignment over call.
10026
100272010-01-12  Torbjorn Granlund  <tege@gmplib.org>
10028
10029	* tune/speed.c (routine): Remove obsolete mpn_dc_tdiv_qr and
10030	mpn_dc_div_qr_n.
10031	* tune/common.c (speed_mpn_dc_tdiv_qr, speed_mpn_dcpi1_div_qr_n):
10032	Remove now unused functions.
10033	* tune/speed.h (SPEED_ROUTINE_MPN_DC_DIVREM_N,
10034	SPEED_ROUTINE_MPN_DC_DIVREM_SB, SPEED_ROUTINE_MPN_DC_TDIV_QR): Remove
10035	now unused macros.
10036
10037	* mpn/x86_64/fat/fat_entry.asm (mpn_cpuid_available): Remove function.
10038
10039	* ltmain.sh: Upgrade from 1.5.24 to 2.2.6b.
10040	* ylwrap: New file.
10041	* .bootstrap: Remove explicit versions.
10042
10043	* doc/gmp.texi (Block-wise Barrett Division): New node.
10044
10045	* mpn/generic/powm.c: Change some #if to plain 'if' to avoid fat build
10046	problems.
10047
100482010-01-11  Torbjorn Granlund  <tege@gmplib.org>
10049
10050	* tune/speed.h (SPEED_ROUTINE_MPN_PI1_DIV): Accept arguments for size
10051	restrictions.
10052	* tune/common.c (speed_mpn_sbpi1_div_qr, speed_mpn_dcpi1_div_qr,
10053	(speed_mpn_sbpi1_divappr_q, speed_mpn_dcpi1_divappr_q): Pass size
10054	limits for SPEED_ROUTINE_MPN_PI1_DIV.
10055
10056	* tune/speed.c (routine): Allow .r argument for mpn_sbpi1_divappr_q and
10057	mpn_dcpi1_divappr_q.
10058
100592010-01-08  Torbjorn Granlund  <tege@gmplib.org>
10060
10061	* Version 5.0.0 released.
10062
10063	* mpn/generic/div_q.c: Handle mpn_*_divappr_q returning high limb
10064	everywhere.
10065
100662010-01-07  Torbjorn Granlund  <tege@gmplib.org>
10067
10068	* Update MUL_FFT_TABLE2 and SQR_FFT_TABLE2 for many machines.
10069
10070	* mpn/generic/mu_div_q.c: Account for divisor truncation error as well
10071	as mpn_mu_divappr_q's error.
10072
10073	* mpn/generic/mu_div_q.c: Handle mpn_preinv_mu_divappr_q returning a
10074	high limb.
10075
10076	* tests/mpn/t-bdiv.c: Move a random call for debugability.
10077	* tests/mpn/t-div.c: Likewise.
10078
10079	* mpn/generic/mu_divappr_q.c: Rewrite quotient round-up code.
10080
10081	* mpn/generic/mu_div_qr.c: Handle carry-out from a carry propagation
10082	subtract.
10083	* mpn/generic/mu_divappr_q.c: Likewise.
10084
10085	* mpn/generic/mu_divappr_q.c
10086	(mpn_preinv_mu_divappr_q, mpn_mu_divappr_q): Declare dividend constant.
10087	* gmp-impl.h: Likewise.
10088
10089	* perfpow.c (mpn_perfect_power_p): Call mpn_divexact instead of
10090	mpn_bdiv_q (with too little scratch space!).
10091
10092	From Niels Möller:
10093	* tests/mpn/t-div.c (check_one): Get rid of the poorly managed variable
10094	tn.
10095
10096	* mpn/minithres/gmp-mparam.h: Add all lately defined thresholds.
10097
10098	* mpn/generic/div_q.c: Use SB division for small quotients as well as
10099	small divisors.  Fix typo in itch call.
10100
101012010-01-06  Niels Möller  <nisse@lysator.liu.se>
10102
10103	* tests/mpn/t-div.c (check_one): Checking based on multiplication,
10104	refmpn_mul, rather than refmpn_tdiv_qr.
10105
101062010-01-06 Marco Bodrato <bodrato@mail.dm.unipi.it>
10107
10108	* mpn/generic/toom8h_mul.c: Avoid overflows of mp_size_t.
10109
101102010-01-06  Torbjorn Granlund  <tege@gmplib.org>
10111
10112	* gmp-h.in (__GNU_MP__): Bump.
10113	(__GNU_MP_VERSION,__GNU_MP_VERSION_MINOR,__GNU_MP_VERSION_PATCHLEVEL):
10114	Bump version info.
10115	* mp-h.in (__GNU_MP__): Bump.
10116	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*):
10117	Bump version info.
10118
10119	* doc/gmp.texi: Rewrite mpn_gcdext text.  Remove some out-of-date
10120	text in Algorithms chapter.
10121
10122	* mpn/generic/div_q.c: Properly handle np=scratch.  Fix critical typo
10123	in final adjustment code.  Misc cleanups.
10124
10125	* mpn/generic/rootrem.c: Use mpn_div_q.
10126	* mpz/tdiv_q.c: Likewise.
10127
10128	* tests/mpn/t-div.c: Test mpn_div_q.
10129	(SIZE_LOG): Up to 17.
10130
10131	* mpn/generic/div_q.c: New file.
10132	* configure.in (gmp_mpn_functions): Add div_q.
10133
10134	* mpn/generic/mu_div_q.c: Actually declare dividend constant.
10135
101362010-01-04  Torbjorn Granlund  <tege@gmplib.org>
10137
10138	* tune/tuneup.c (fft): Separate tuning of modf and full products.
10139	(struct fft_param_t): New field, mul_modf_function.
10140	(tune_fft_sqr): Fix typo.
10141	(tune_fft_mul, tune_fft_sqr): Initialise mul_modf_function field.
10142	* tune/common.c (speed_mpn_fft_mul, speed_mpn_fft_sqr): New functions.
10143
10144	* tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_ROUNDED): Clean up.
10145
10146	* mpn/generic/mul.c: Simplify rational expression.
10147
10148	* gmp-impl.h: Cleanup threshold variables; remove obsolete ones and
10149	make all possibly needed definitions for existing ones.
10150	* tune/tuneup.c (tune_mul): Write fractions-compensated values to
10151	threshold variables.
10152
101532010-01-03 Marco Bodrato <bodrato@mail.dm.unipi.it>
10154
10155	* tune/common.c, tune/speed.c, tune/speed.h: Support measuring
10156	mpn_toom43_mul.
10157
10158	* mpn/generic/toom_interpolate_6pts.c: Small reorganisation.
10159
101602010-01-03  Torbjorn Granlund  <tege@gmplib.org>
10161
10162	* gmp-impl.h (MUL_TO_MULMOD_BNM1_FOR_2NXN_THRESHOLD): Default to
10163	INV_MULMOD_BNM1_THRESHOLD/2 instead.
10164
10165	* gmp-impl.h (INV_APPR_THRESHOLD, INV_MULMOD_BNM1_THRESHOLD): Default
10166	here...
10167	* mpn/generic/invert.c, mpn/generic/invertappr.c: ...not here.
10168
10169	* tests/mpn/t-div.c: Rewrite operand generation code.
10170
101712010-01-02  Torbjorn Granlund  <tege@gmplib.org>
10172
10173	* gmp-impl.h (MUL_TO_MULMOD_BNM1_FOR_2NXN_THRESHOLD): Default to
10174	INV_MULMOD_BNM1_THRESHOLD.
10175
101762010-01-02  Marco Bodrato <bodrato@mail.dm.unipi.it>
10177
10178	* mpn/generic/dcpi1_div_q.c: Handle divappr approximation problem more
10179	efficiently.
10180	* mpn/generic/mu_div_q.c: Likewise.
10181
10182	* mpn/generic/invert.c: Remove duplicated code.
10183
101842010-01-01  Torbjorn Granlund  <tege@gmplib.org>
10185
10186	* gmp-impl.h (MUL_TO_MULMOD_BNM1_FOR_2NXN_THRESHOLD): Default to 0.
10187
10188	* mpn/generic/mu_div_qr.c: Rewrite to use mpn_mulmod_bnm1.  Clean up
10189	scratch usage.  Improve itch functions.
10190	* mpn/generic/mu_divappr_q.c: Likewise.
10191	* mpn/generic/mu_bdiv_qr.c: Likewise.
10192	* mpn/generic/mu_div_q.c: Likewise.
10193
10194	* mpn/generic/dcpi1_bdiv_qr.c: Add parameter ASSERTs.
10195	* mpn/generic/dcpi1_bdiv_q.c: Likewise.
10196
10197	* tests/mpn/t-bdiv.c: Replace with unit testing code, based on t-div.c.
10198	Increase COUNT to 500.
10199
10200	* tests/mpn/t-div.c: Avoid generating too small test operands.
10201	Move SB suppression limit downwards.  Increase COUNT to 200.
10202
102032009-12-31  Torbjorn Granlund  <tege@gmplib.org>
10204
10205	* mpn/generic/tdiv_qr.c: Handle numerator/remainder overlap in MU case.
10206
10207	* tests/tests.h (TESTS_REPS): New macro.
10208	* tests/mpz/dive.c: Use larger operands, decrease default reps, use
10209	TESTS_REPS.
10210	* tests/mpz/convert.c: Likewise.
10211	* tests/mpz/t-sqrtrem.c: Likewise.
10212	* tests/mpz/reuse: Likewise.
10213	* tests/mpz/t-root.c: Likewise.
10214	* tests/mpz/t-tdiv.c: Likewise.
10215	* tests/mpz/t-gcd.c: Likewise.
10216	* tests/mpz/t-powm.c: Likewise.
10217
102182009-12-31  Marco Bodrato <bodrato@mail.dm.unipi.it>
10219
10220	* mpn/generic/toom8_sqr.c (SQR_TOOM8_MAX): Avoid overflow.
10221	* mpn/generic/toom6_sqr.c (SQR_TOOM6_MAX): Likewise.
10222
10223	* mpn/generic/mulmod_bnm1.c: Don't mention MISUSE any more,
10224	simply consider UNLIKELY any unexpected size.
10225
102262009-12-31  Torbjorn Granlund  <tege@gmplib.org>
10227
10228	* tune/tuneup.c (speed_mpn_sbordcpi1_div_qr): New function.
10229	(tune_mu_div): Use it.
10230
102312009-12-30  Torbjorn Granlund  <tege@gmplib.org>
10232
10233	* tune/tuneup.c (tune_mu_bdiv, tune_dc_bdiv, tune_mu_div)
10234	(tune_dc_div): Clear global s.r to make speed functions do 2n/n.
10235
10236	* tune/speed.c (routine): New entries for mpn_mu_div_qr and
10237	mpn_mupi_div_qr.  Allow .r parameter for mpn_sbpi1_div_qr,
10238	mpn_dcpi1_div_qr.
10239	* tune/speed.h (SPEED_ROUTINE_MPN_PI1_DIV, SPEED_ROUTINE_MPN_MU_DIV_QR)
10240	(SPEED_ROUTINE_MPN_MUPI_DIV_QR): Handle .r parameter.
10241
10242	* tests/mpz/t-tdiv.c: Increase operands size again.
10243
10244	* mpn/generic/tdiv_qr.c: Attempt to choose between DC and MU cleverer.
10245
10246	* mpn/generic/tdiv_qr.c: Don't overwrite rp with unnecessary temporary
10247	alloc.
10248
102492009-12-29  Torbjorn Granlund  <tege@gmplib.org>
10250
10251	* tune/tuneup.c (tune_mu_div): Tune MUPI_DIV_QR_THRESHOLD.
10252	* tune/speed.h (struct speed_params): Allow 3 source operands.
10253	(SPEED_ROUTINE_MPN_MUPI_DIV_QR): New macro.
10254	* tune/common.c (speed_mpn_mupi_div_qr): New function.
10255
10256	* mpn/generic/tdiv_qr.c: Call mpn_mu_div_qr.
10257
10258	* tests/mpz/t-tdiv.c: Use larger test operands.
10259
10260	* mpn/generic/mu_div_qr.c (mpn_mu_div_qr2): Remove code for dn==1.
10261
10262	* mpz/mul.c: Call mpn_sqr directly.  Use PTR,SIZ,ALLOC.
10263
10264	* tune/tuneup.c (tune_mu_div): Set min_size to 6, DC functions require
10265	this.
10266
10267	* tests/mpn/t-div.c: Call mu_div functions with operands that generate
10268	a high quotient limb.
10269
10270	* mpn/generic/mu_div_qr.c: Rewrite to return a high quotient limb,
10271	to let dividend argument be constant, and as a general cleanup.
10272	* mpn/generic/mu_divappr_q.c: Likewise.
10273	* mpn/generic/mu_div_q.c: Likewise.
10274	* gmp-impl.h: Update declarations of changed functions.
10275
10276	* mpn/generic/invertappr.c (mpn_invertappr): Allocate scratch space
10277	when caller passed NULL.
10278
102792009-12-28  Torbjorn Granlund  <tege@gmplib.org>
10280
10281	* mpn/generic/toom_couple_handling.c: Prefix name with mpn_.
10282	* gmp-impl.h: Likewise.
10283	* mpn/generic/toom63_mul.c: Likewise.
10284	* mpn/generic/toom6_sqr.c: Likewise.
10285	* mpn/generic/toom6h_mul.c: Likewise.
10286	* mpn/generic/toom8_sqr.c: Likewise.
10287	* mpn/generic/toom8h_mul.c: Likewise.
10288
10289	* configure.in (gmp_mpn_functions_optional) Move "com" from here...
10290	(gmp_mpn_functions): ...to here.
10291	* mpn/generic/com.c: New file.
10292	* (mpn_com): New name for mpn_com_n.  Make public.
10293	* (mpn_neg): Analogous changes.
10294
10295	* tune/tuneup.c (tune_mu_div, tune_mu_bdiv): Set step_factor.
10296
10297	* tune/common.c, tune/speed.c, tune/speed.h: Support measuring
10298	mpn_lshiftc.
10299
10300	* tests/devel/try.c: Test mpn_lshiftc.
10301	* tests/refmpn.c (refmpn_com): New function.
10302	(refmpn_lshiftc): Likewise.
10303
10304	* configure.in (gmp_mpn_functions_optional) Move lshiftc from here...
10305	(gmp_mpn_functions): ...to here.
10306	* mpn/generic/lshiftc.c: New file.
10307	* mpn/x86_64/lshiftc.asm: New file.
10308	* mpn/x86_64/core2/lshiftc.asm: New file.
10309	* mpn/generic/mul_fft.c (mpn_lshiftc): Remove.
10310
10311	* mpn/x86_64/core2/lshift.asm: Tweak for better Core iN performance.
10312	* mpn/x86_64/core2/rshift.asm: Likewise.
10313
103142009-12-27  Marco Bodrato <bodrato@mail.dm.unipi.it>
10315
10316	* mpn/generic/mul.c: Use toom6h and toom8h for almost balanced.
10317
10318	* mpn/generic/mullo_n.c (mpn_dc_mullo_n): New ratio, to be used in
10319	Toom-8 range.
10320
103212009-12-27  Torbjorn Granlund  <tege@gmplib.org>
10322
10323	* (mpn_sqr): New name for mpn_sqr_n.  Many files affected.
10324
10325	* tune/tuneup.c (tune_mullo): Up step_factor for MULLO_MUL_N_THRESHOLD.
10326	(tune_invertappr, tune_invert, tune_binvert): Let max_size default.
10327
10328	* tune/tuneup.c (tune_mu_div, tune_mu_bdiv) New functions.
10329	* tune/speed.h (SPEED_ROUTINE_MPN_MU_DIV_Q): New macro.
10330	(SPEED_ROUTINE_MPN_MU_DIV_QR): Likewise.
10331	(SPEED_ROUTINE_MPN_MU_BDIV_Q): Likewise.
10332	(SPEED_ROUTINE_MPN_MU_BDIV_QR): Likewise.
10333	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add bdiv_q.c and bdiv_qr.c.
10334	* tune/common.c (speed_mpn_mu_div_qr): New function.
10335	(speed_mpn_mu_divappr_q): Likewise.
10336	(speed_mpn_mu_div_q): Likewise.
10337	(speed_mpn_mu_bdiv_q): Likewise.
10338	(speed_mpn_mu_bdiv_qr): Likewise.
10339
10340	* mpn/*/gmp-mparam.h: Fix incorrect MOD_1U_TO_MOD_1_1_THRESHOLD 0
10341	values.
10342
10343	* gmp-impl.h (MODEXACT_1_ODD_THRESHOLD): Remove.
10344	(BMOD_1_TO_MOD_1_THRESHOLD): New parameter, with the reverse meaning of
10345	MODEXACT_1_ODD_THRESHOLD.
10346	(MPN_MOD_OR_MODEXACT_1_ODD): Use BMOD_1_TO_MOD_1_THRESHOLD.
10347	* mpn/generic/divis.c, mpz/{cong.c,cong_ui.c,divis_ui.c}: Likewise.
10348	* tune/tuneup.c (tune_modexact_1_odd): Tune BMOD_1_TO_MOD_1_THRESHOLD;
10349	Do not assume native mpn_modexact_1_odd is faster than mpn_mod_1.
10350	(tuned_speed_mpn_mod_1): Remove variable.
10351	(tune_mod_1): Fix thinkos.  Suppress printing of "always" etc.
10352	(all): Measure for divrem_1, mod_1, divexact_1, etc first, since Toom
10353	depends on some of them.
10354
10355	* mpn/generic/toom22_mul.c (TOOM22_MUL_REC): New name for
10356	TOOM22_MUL_MN_REC.
10357
103582009-12-26  Niels Möller  <nisse@lysator.liu.se>
10359
10360	* tests/mpn/t-toom32.c (MIN_AN, MIN_BN, MAX_BN): Relax
10361	requirements a bit.
10362
10363	* mpn/generic/toom32_mul.c (mpn_toom32_mul): Relax requirement on
10364	input sizes, to support s+t>=n (used to be s+t>=n+2). Keep high
10365	limbs of the evaluated values in scalar variables.
10366
10367	* mpn/generic/sbpi1_divappr_q.c (mpn_sbpi1_divappr_q): Remove
10368	unused variables.
10369
10370	* mpn/generic/toom32_mul.c (mpn_toom32_mul): Fixed left-over use
10371	of mpn_addsub_n which should be mpn_add_n_sub_n.
10372
103732009-12-26  Marco Bodrato <bodrato@mail.dm.unipi.it>
10374
10375	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add new toom files (spotted by Torbjorn).
10376
10377	* gmp-impl.h (mpn_toom6_sqr_itch): Rename to mpn_toom6_mul_n_itch and redefine.
10378	(mpn_toom8_sqr_itch): Rename to mpn_toom8_mul_n_itch and redefine.
10379	* mpn/generic/mul_n.c: Use renamed _itch macros.
10380
103812009-12-25  Niels Möller  <nisse@lysator.liu.se>
10382
10383	* tests/mpn/t-toom32.c (MIN_AN, MIN_BN, MAX_BN): Tightened requirements.
10384	* gmp-impl.h (mpn_toom32_mul_itch): Updated. Less scratch needed
10385	by toom32 itself, and also the pointwise multiplications are
10386	currently mpn_mul_n with no supplied scratch.
10387	* mpn/generic/toom32_mul.c (mpn_toom32_mul): Reorganized
10388	interpolation to use less scratch space. No longer supports the
10389	most extreme size ratios.
10390
103912009-12-25  Torbjorn Granlund  <tege@gmplib.org>
10392
10393	* tune/tuneup.c (tune_preinv_mod_1): Purge.
10394	(tune_mod_1): Use speed_mpn_mod_1_tune for
10395	PREINV_MOD_1_TO_MOD_1_THRESHOLD
10396
10397	* mpn/generic/dcpi1_divappr_q.c: Handle 2n/n properly.  Don't use full
10398	precision in mpn_sbpi1_divappr_q call.  Misc cleanup.
10399
10400	* tune/tuneup.c (tune_mod_1): Add a check_size for
10401	PREINV_MOD_1_TO_MOD_1_THRESHOLD.
10402
104032009-12-24  Torbjorn Granlund  <tege@gmplib.org>
10404
10405	* tune/mod_1_div.c (MOD_1N_TO_MOD_1_1_THRESHOLD,
10406	(MOD_1U_TO_MOD_1_1_THRESHOLD): Set.
10407	* tune/mod_1_inv.c (MOD_1N_TO_MOD_1_1_THRESHOLD,
10408	(MOD_1U_TO_MOD_1_1_THRESHOLD): Set.
10409
10410	* gmp-impl.h (USE_PREINV_MOD_1): Remove.
10411	(MPN_MOD_OR_PREINV_MOD_1): Define to choose functions dynamically in
10412	terms of PREINV_MOD_1_TO_MOD_1_THRESHOLD (used to choose statically
10413	using USE_PREINV_MOD_1).
10414	* mpn/generic/perfsqr.c (PERFSQR_MOD_PP): Corresponding updates.
10415
10416	* tune/tuneup.c (tune_mod_1): Rewrite.
10417	* gmp-impl.h (MOD_1N_TO_MOD_1_1_THRESHOLD): New.
10418	(MOD_1U_TO_MOD_1_1_THRESHOLD): New name for MOD_1_1_THRESHOLD.
10419	(MOD_1_1_TO_MOD_1_2_THRESHOLD): Mew name for MOD_1_2_THRESHOLD.
10420	(MOD_1_2_TO_MOD_1_4_THRESHOLD): New name for MOD_1_4_THRESHOLD.
10421	* mpn/generic/mod_1.c: Corresponding updates.
10422
104232009-12-24  Marco Bodrato <bodrato@mail.dm.unipi.it>
10424
10425	* mpn/generic/mul_n.c: Use also toom6h and toom8h.
10426	* mpn/generic/sqr_n.c: Use also toom6 and toom8.
10427	* gmp-impl.h: Initial support for tuning of Toom-6half and Toom-8half.
10428	* tune/tuneup.c: Tune Toom-6half and Toom-8half thresholds.
10429
104302009-12-24  Torbjorn Granlund  <tege@gmplib.org>
10431
10432	* mpn/generic/mod_1_4.c: Get ASSERT right.
10433	* mpn/generic/mod_1_3.c: Likewise.
10434	* mpn/generic/mod_1_2.c: Likewise.
10435
10436	* mpn/generic/powm_sec.c: Use SQR_TOOM2_THRESHOLD as limit for a native
10437	mpn_sqr_basecase, not TUNE_SQR_TOOM2_MAX.
10438
104392009-12-23  Marco Bodrato <bodrato@mail.dm.unipi.it>
10440
10441	* tune/common.c, tune/speed.c, tune/speed.h: Support for measuring
10442	mpn_toom8h_mul and mpn_toom8_sqr speed.
10443
10444	* mpn/generic/toom_eval_pm2exp.c: Fix ASSERTs.
10445
10446	* mpn/generic/toom8h_mul.c: New file.
10447	* mpn/generic/toom8_sqr.c: New file.
10448	* mpn/generic/toom_interpolate_16pts.c: New file.
10449	* gmp-impl.h: Provide corresponding declarations.
10450	* configure.in (gmp_mpn_functions): List toom_interpolate_16pts,
10451	toom8h_mul, and toom8h_sqr.
10452	* tests/mpn/t-toom8h.c: New test program.
10453
10454	* mpn/generic/toom6_sqr.c: New file, was part of toom6h_mul.
10455	* mpn/generic/toom6h_mul.c: Removed _sqr.
10456
10457	* mpn/generic/mulmod_bnm1.c: Nailify CRT.
10458	* mpn/generic/sqrmod_bnm1.c: Likewise.
10459
10460	* mpn/generic/mullo_n.c: Split dc_mullo_n function;
10461	ALLOC memory at once.
10462
10463	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Update.
10464
10465	* mpn/generic/toom6h_mul.c: Add prefix to toom_interpolate_12pts.
10466	* mpn/generic/toom_interpolate_12pts.c: Likewise.
10467
10468	* mpn/generic/invertappr.c (mpn_bc_invertappr): Use mpn_divrem_2.
10469	* mpn/generic/invert.c: Faster basecase, use mpn_sbpi1_div_q.
10470
10471	* mpn/generic/toom_eval_pm2exp.c: Assert support for degree 3.
10472	* mpn/generic/toom6h_mul.c: Avoid obsolete _itch function.
10473
104742009-12-23  Torbjorn Granlund  <tege@gmplib.org>
10475
10476	* tune/common.c, tune/speed.c, tune/speed.h: Support for measuring
10477	mpn_mod_1_1p, mpn_mod_1s_2p, mpn_mod_1s_3p, mpn_mod_1s_4p.
10478
10479	* tests/mpz/t-powm.c: Test mpz_powm_sec.
10480
10481	* mpz/powm_sec.c: New file.
10482	* gmp-h.in: Declare it.
10483	* Makefile.am, mpz/Makefile.am: Compile it.
10484	* doc/gmp.texi: Document it.
10485
10486	* mpn/generic/powm_sec.c (mpn_powm_sec_itch): New function.
10487	(mpn_powm_sec): Use passed scratch, no local allocation.
10488	Allow exp argument = 1.
10489	(win_size): Start loop from 1.
10490
10491	* mpn/generic/powm.c (win_size): Start loop from 1.
10492
104932009-12-22  Torbjorn Granlund  <tege@gmplib.org>
10494
10495	* tests/mpn/t-div.c: New file.
10496	* tests/mpn/Makefile.am: Compile it.
10497
10498	* mpn/generic/mu_divappr_q.c: Handle quotient overflow.
10499
10500	* mpn/generic/mu_div_q.c (mpn_mu_div_q_itch): New function.
10501
105022009-12-22  Niels Möller  <nisse@lysator.liu.se>
10503
10504	* mpn/generic/sbpi1_div_q.c: Use udiv_qr_3by2.  Intended to change
10505	nothing after preprocessing.
10506
10507	* mpn/generic/sbpi1_divappr_q.c: For the last call to udiv_qr_3by2,
10508	avoid using memory locations as output parameters, and revert to
10509	explicitly copying n1 and n0 to memory.
10510
10511	* gmp-impl.h (udiv_qr_3by2): Tweaked to expand to precisely the
10512	same code as was used before the introduction of this macro.
10513	Eliminated some local variables, instead do multiple updates to
10514	the output parameters.
10515
105162009-12-22  Torbjorn Granlund  <tege@gmplib.org>
10517
10518	* tests/mpn/t-toom6h.c (MIN_AN): Set to MUL_TOOM6H_THRESHOLD to avoid
10519	invalid recursive sizes.
10520
10521	* tests/mpn/t-bdiv.c: Get itch function calls right.
10522
10523	* mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Rewrite.
10524	* mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Simplify.
10525
10526	* mpn/generic/bdiv_qr.c (mpn_bdiv_qr): Simplify, don't allocate.
10527	(mpn_bdiv_qr_itch): Conditionalise on MU_BDIV_QR_THRESHOLD.
10528
105292009-12-18  Niels Möller  <nisse@lysator.liu.se>
10530
10531	* tests/mpn/t-bdiv.c: Add red-zones.
10532
105332009-12-21  Torbjorn Granlund  <tege@gmplib.org>
10534
10535	* mpn/generic/sbpi1_div_q.c: Fix fixup code to work for qn = 0.
10536
10537	* mpn/generic/dcpi1_divappr_q.c: Handle qn = 1 and qn = 2 for initial
10538	quotient block (code block copied from dcpi1_div_qr.c).
10539
10540	* mpn/generic/dcpi1_div_qr.c: Rewrite singular case giving q limb of
10541	GMP_NUMB_MAX.  Remove an impossible qn = 0 case.
10542
10543	* mpn/generic/dcpi1_bdiv_q.c: Remove a spurious mpn_sub_1.
10544
10545	* mpn/generic/mul.c: Put back call to mpn_mul_n.
10546
10547	* tune/tuneup.c (all): Call tune_mulmod_bnm1 before tuning fft due to
10548	dependency on mulmod_bnm1 from both mul_fft_mul and from mullo_n.
10549
10550	* mpn/generic/dcpi1_divappr_q.c: ASSERT that dn >= 6 and nn > dn.
10551	* mpn/generic/dcpi1_div_q.c: ASSERT that dn >= 6 and nn-dn >= 3.
10552	* mpn/generic/dcpi1_div_qr.c: ASSERT that dn >= 6 and nn-dn >= 3.
10553
10554	* mpn/generic/bdiv_q_1.c (mpn_pi1_bdiv_q_1): Renamed from
10555	mpn_bdiv_q_1_pi1.
10556	* All references changed.
10557
10558	* configure.in: Add --enable-old-fft-full.
10559	* tune/speed.c (routine): Conditionalise mpn_mul_fft_full references on
10560	WANT_OLD_FFT_FULL.
10561	* tune/common.c (speed_mpn_mul_fft_full)
10562	(speed_mpn_mul_fft_full_sqr): Likewise.
10563	* mpn/generic/mul_fft.c (mpn_mul_fft_full): Include iff
10564	WANT_OLD_FFT_FULL.
10565
105662009-12-21  Marco Bodrato <bodrato@mail.dm.unipi.it>
10567
10568	* gmp-impl.h (mpn_toom6h_mul_itch): New inline function.
10569	(MUL_TOOM6H_THRESHOLD): Default value.
10570	(SQR_TOOM6_THRESHOLD): Default value.
10571	* mpn/generic/toom6h_mul.c: Remove definitions moved to gmp-impl.h.
10572	* tune/common.c, tune/speed.c, tune/speed.h: Support for measuring
10573	mpn_toom6h_mul and mpn_toom6_sqr speed.
10574
10575	* mpn/generic/toom63_mul.c: Remove unused TMP_*.
10576
10577	* mpn/generic/toom_eval_pm2rexp.c: New file.
10578	* gmp-impl.h: Provide corresponding declaration.
10579	* configure.in (gmp_mpn_functions): List toom_eval_pm2rexp.
10580	* mpn/generic/toom6h_mul.c: Use shared toom_eval_pm2rexp.
10581
10582	* mpn/generic/toom_couple_handling.c: New file, helper function
10583	for high degree Toom.
10584	* gmp-impl.h: Provide corresponding declaration.
10585	* configure.in (gmp_mpn_functions): List toom_couple_handling.
10586	* mpn/generic/toom6h_mul.c: Use shared toom_couple_handling.
10587	* mpn/generic/toom63_mul.c: Likewise.
10588
10589	* mpn/generic/toom6h_mul.c: New file.
10590	* mpn/generic/toom_interpolate_12pts.c: New file.
10591	* gmp-impl.h: Provide corresponding declarations.
10592	* configure.in (gmp_mpn_functions): List toom_interpolate_12pts,
10593	toom6h_mul.
10594	* tests/mpn/t-toom6h.c: New test program.
10595
10596	* tests/mpn/t-mulmod_bnm1.c (ref_mulmod_bnm1): Use ref_mul.
10597	* tests/mpn/t-sqrmod_bnm1.c (ref_sqrmod_bnm1): Likewise.
10598
105992009-12-20  Marco Bodrato <bodrato@mail.dm.unipi.it>
10600
10601	* mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): New CRT.
10602	* mpn/generic/sqrmod_bnm1.c (mpn_sqrmod_bnm1): Likewise.
10603
106042009-12-20  Torbjorn Granlund  <tege@gmplib.org>
10605
10606	* Change all bit counts for bignums to use mp_bitcnt_t.
10607
10608	* mpn/generic/bdivmod.c: File removed.  All references purged.
10609
10610	* mpn/generic/mul_fft.c (mpn_mul_fft_full): Disable.
10611
10612	* gmp-impl.h: Define mpn_fft_mul as an alias for mpn_nussbaumer_mul.
10613	* mpn/generic/mul.c: Refer mpn_fft_mul.
10614	* mpn/generic/mul_n.c: Likewise.
10615	* mpn/generic/sqr_n.c: Likewise.
10616	* mpn/generic/mullo_n.c: Likewise.
10617
10618	* mpn/generic/mul.c: Loop also over mpn_nussbaumer_mul, as suggested by
10619	Marco.  Use TMP_SALLOC_LIMBS in more places.  Clean up ws allocation.
10620
106212009-12-19  Marco Bodrato <bodrato@mail.dm.unipi.it>
10622
10623	* mpn/generic/toom_interpolate_8pts.c: Nailify.
10624
106252009-12-19  Torbjorn Granlund  <tege@gmplib.org>
10626
10627	* mpn/generic/mul.c: Major rewrite.  Use toom43, toom53, toom63.
10628	Call mpn_nussbaumer_mul for largest operands.
10629
10630	* tune/speed.h (SPEED_ROUTINE_MPN_TOOM32_FOR_TOOM43_MUL): New macro.
10631	(SPEED_ROUTINE_MPN_TOOM43_FOR_TOOM32_MUL): New macro.
10632	(SPEED_ROUTINE_MPN_TOOM32_FOR_TOOM53_MUL): New macro.
10633	(SPEED_ROUTINE_MPN_TOOM53_FOR_TOOM32_MUL): New macro.
10634	(SPEED_ROUTINE_MPN_TOOM42_FOR_TOOM53_MUL): New macro.
10635	(SPEED_ROUTINE_MPN_TOOM53_FOR_TOOM42_MUL): New macro.
10636	* tune/common.c (speed_mpn_toom63_mul): New function.
10637	(speed_mpn_toom32_for_toom43_mul): New function.
10638	(speed_mpn_toom43_for_toom32_mul): New function.
10639	(speed_mpn_toom32_for_toom53_mul): New function.
10640	(speed_mpn_toom53_for_toom32_mul): New function.
10641	(speed_mpn_toom42_for_toom53_mul): New function.
10642	(speed_mpn_toom53_for_toom42_mul): New function.
10643	* tune/tuneup.c (tune_mul_n): New name for old tune_mul.
10644	(tune_sqr_n): New name for old tune_sqr.
10645	(tune_mul): New function, for unbalanced multiplication.
10646	* gmp-impl.h: Provide declarations for corresponding threshold vars.
10647
10648	* gmp-impl.h (mpn_rsh1add_nc, mpn_rsh1sub_nc): Declare.
10649	* mpn/asm-defs.m4: Likewise.
10650	* configure.in: Add corresponding HAVE_NATIVEs.
10651	* mpn/x86_64/rsh1aors_n.asm: Add _nc entry point.
10652
106532009-12-18  Niels Möller  <nisse@lysator.liu.se>
10654
10655	* mpz/divexact.c: Rewrite to use mpn_divexact.
10656
10657	* mpn/generic/bdiv_q_1.c (mpn_bdiv_q_1): Deleted some unused
10658	variables.
10659
10660	* mpn/generic/toom52_mul.c (mpn_toom52_mul)
10661	[HAVE_NATIVE_mpn_add_n_sub_n]: Moved declaration of cy to avoid a
10662	compiler warning.
10663
10664	* gmp-impl.h (gmp_pi1_t): Eliminated inv21 member.
10665	(invert_pi1): ...and don't store it here.
10666
10667	* mpn/generic/toom63_mul.c (mpn_toom63_mul): Simplified
10668	calculation of block size n.
10669	* gmp-impl.h (mpn_toom63_mul_itch): Likewise.
10670
10671	* mpn/generic/toom_eval_pm2exp.c (mpn_toom_eval_pm2exp): Fixed
10672	output asserts.
10673
106742009-12-18  Torbjorn Granlund  <tege@gmplib.org>
10675
10676	* tests/mpn/t-toom63.c: New test program.
10677
106782009-12-18  Marco Bodrato <bodrato@mail.dm.unipi.it>
10679
10680	* mpn/generic/invert.c: Nailify.
10681	* mpn/generic/invertappr.c: Nailify.
10682	* mpn/generic/mulmod_bnm1.c: Nailify.
10683	* mpn/generic/sqrmod_bnm1.c: Nailify.
10684
10685	* tests/mpn/t-invert.c: New test program.
10686
10687	* mpn/generic/toom63_mul.c: New file.
10688	* mpn/generic/toom_interpolate_8pts.c: New file.
10689	* gmp-impl.h: Provide corresponding declarations.
10690	* configure.in (gmp_mpn_functions): List toom_interpolate_8pts and
10691	toom63_mul.
10692
106932009-12-17  Torbjorn Granlund  <tege@gmplib.org>
10694
10695	* mpn/generic/mul.c: Move allocation of ws to where it is used.
10696	Identify toom22, 32, 42, in that order (in two places).  Use midline
10697	between toom22, 32, 42.
10698	* mpn/generic/toom22_mul.c (TOOM22_MUL_MN_REC): Call also
10699	mpn_toom32_mul.
10700
10701	* doc/gmp.texi: Update References section.  Update Contributors
10702	section.  Misc updates.
10703
10704	* gmp-impl.h: Renew default values for all THRESHOLDs.
10705
107062009-12-17  Niels Möller  <nisse@lysator.liu.se>
10707
10708	* mpn/generic/divexact.c (mpn_divexact): Don't require that the
10709	dividend is normalized. Use MPN_DIVREM_OR_PREINV_DIVREM_1. When
10710	shifting, allocate and process only the low qn+1 limbs. Eliminated
10711	code for the impossible case nn < qn.
10712
10713	* mpn/generic/dcpi1_div_qr.c (mpn_dcpi1_div_qr): Added some input
10714	asserts.
10715
10716	* mpn/generic/dcpi1_div_qr.c (mpn_dcpi1_div_qr): In the case that
10717	the initial quotient block is a single limb, use 3/2 division,
10718	thereby eliminating the only use of gmp_pi1_t->inv21.
10719
107202009-12-17  Marco Bodrato <bodrato@mail.dm.unipi.it>
10721
10722	* mpn/generic/invert.c: Added some comment.
10723	* mpn/generic/invertappr.c: Slightly better threshold handling.
10724	* gmp-impl.h (INV_NEWTON_THRESHOLD): Default to 200.
10725
10726	* mpn/generic/nussbaumer_mul.c: New file.
10727	* configure.in (gmp_mpn_functions): Add nussbaumer_mul.
10728	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add nussbaumer_mul.
10729	* gmp-impl.h (mpn_nussbaumer_mul): Added prototype and name-mangling.
10730	* tune/speed.h (speed_mpn_nussbaumer_mul): Declare function.
10731	* tune/common.c (speed_mpn_nussbaumer_mul): New function.
10732	* tune/speed.c (routine): Add speed_mpn_nussbaumer_mul.
10733
10734	* mpn/generic/sqrmod_bnm1.c: New file.
10735	* configure.in (gmp_mpn_functions): Add sqrmod_bnm1.
10736	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add sqrmod_bnm1.
10737	* gmp-impl.h (mpn_sqrmod_bnm1): Added prototype and name-mangling.
10738	(SQRMOD_BNM1_THRESHOLD): support for the new threshold.
10739	* tune/speed.h (speed_mpn_sqrmod_bnm1): Declare function.
10740	* tune/common.c (speed_mpn_sqrmod_bnm1): New function.
10741	* tune/speed.c (routine): Add speed_mpn_sqrmod_bnm1.
10742	* tests/mpn/t-mulmod_bnm1.c: Attribution.
10743	* tests/mpn/t-sqrmod_bnm1.c: New test file.
10744	* tests/mpn/Makefile.am (check_PROGRAMS): Add t-sqrmod_bnm1.
10745
10746	* tune/tuneup.c: Tune SQRMOD_BNM1_THRESHOLD.
10747
10748	* mpn/generic/nussbaumer_mul.c (mpn_nussbaumer_mul): Mimic fft_mul,
10749	use squaring if operands coincide.
10750	* tune/speed.h (speed_mpn_nussbaumer_mul_sqr): Declare function.
10751	* tune/common.c (speed_mpn_nussbaumer_mul_sqr): New function.
10752	* tune/speed.c (routine): Add speed_mpn_nussbaumer_mul_sqr.
10753
107542009-12-17  Torbjorn Granlund  <tege@gmplib.org>
10755
10756	* mpn/generic/bdiv_q.c (mpn_bdiv_q_itch): Rewrite.
10757
107582009-12-16  Torbjorn Granlund  <tege@gmplib.org>
10759
10760	* tests/mpn/t-bdiv.c (bdiv_q_valid_p, bdiv_qr_valid_p): Call refmpn_mul
10761	instead of refmpn_mul_basecase.
10762	* tests/mpn/toom-shared.h: Likewise.
10763	* tests/refmpn.c (refmpn_mullo_n,refmpn_sqr,refmpn_mul_any): Likewise.
10764
10765	* minithres/gmp-mparam.h: Add new thresholds, trim old values.
10766
10767	* mpn/generic/powm.c: Use mp_bitcnt_t for bit counts.
10768	Handle REDC_1_TO_REDC_N_THRESHOLD < MUL_TOOM22_THRESHOLD in
10769	non-WANT_REDC_2 INNERLOOP expansion code.
10770	* mpn/generic/powm_sec.c: Use mp_bitcnt_t for bit counts.
10771
107722009-12-16  Niels Möller  <nisse@lysator.liu.se>
10773
10774	* tests/mpz/t-gcd.c (main): Added test case to exercise the
10775	unlikely u0 == u1 case in mpn_gcdext_lehmer_n.
10776
10777	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Get ASSERT
10778	right.
10779
107802009-12-16  Torbjorn Granlund  <tege@gmplib.org>
10781
10782	* tests/mpz/t-mul.c: Misc cleanups.
10783	(mul_basecase): Remove.
10784	(ref_mpn_mul): Remove.
10785	* tests/refmpn.c (refmpn_mul): New function, mainly from t-mul.c's
10786	ref_mpn_mul.
10787	(refmpn_mullo_n): Add a missing free.
10788
10789	* tune/speed.c (routine): Measure speed_mpn_{sb,dc}pi1_div_qr,
10790	mpn_{sb,dc}pi1_divappr_q, mpn_{sb,dc}pi1_bdiv_qr, and
10791	mpn_{sb,dc}pi1_bdiv_q.
10792
10793	* mpn/generic/invertappr.c: New file, meat from invert.c.
10794	* mpn/generic/invert.c: Leave just mpn_invert.c.
10795	* configure.in (gmp_mpn_functions): Add invertappr.
10796	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add invertappr.c.
10797	* gmp-impl.h (mpn_invert_itch, mpn_invertappr_itch): New macros.
10798
107992009-12-15  Torbjorn Granlund  <tege@gmplib.org>
10800
10801	* mpn/generic/gcdext_subdiv_step.c: Get an ASSERT right.
10802
108032009-12-15  Niels Möller  <nisse@lysator.liu.se>
10804
10805	* mpn/generic/sbpi1_div_qr.c (mpn_sbpi1_div_qr): A very small step
10806	towards nail support.
10807
108082009-12-15  Marco Bodrato <bodrato@mail.dm.unipi.it>
10809
10810	* gmp-impl.h (mpn_ni_invertappr): Added prototype and name-mangling.
10811	* mpn/generic/mulmod_bnm1.c: Comment representation of class [0].
10812
108132009-12-14  Niels Möller  <nisse@lysator.liu.se>
10814
10815	* mpn/generic/sbpi1_divappr_q.c (mpn_sbpi1_divappr_q): Use
10816	udiv_qr_3by2.
10817
108182009-12-14  Torbjorn Granlund  <tege@gmplib.org>
10819
10820	* tune/tuneup.c (tune_binvert): Remove BINV_MULMOD_BNM1_THRESHOLD
10821	tuning, it was always zero and caused BINV_NEWTON_THRESHOLD to be
10822	wrong (as pointed out by Marco).
10823	* (BINV_MULMOD_BNM1_THRESHOLD): Clean from other files too.
10824
108252009-12-14  Marco Bodrato <bodrato@mail.dm.unipi.it>
10826
10827	* mpn/generic/invert.c: Improved comments.
10828	(mpn_bc_invertappr): Conditionally re-enable mpn_dcpi1_divappr_q.
10829
108302009-12-14  Niels Möller  <nisse@lysator.liu.se>
10831
10832	* gmp-impl.h (udiv_qr_3by2): Fix typo in argument list.
10833
108342009-12-13  Niels Möller  <nisse@lysator.liu.se>
10835
10836	* gmp-impl.h (udiv_qr_3by2): New macro.
10837	* mpn/generic/sbpi1_div_qr.c (mpn_sbpi1_div_qr): Use udiv_qr_3by2.
10838
108392009-12-13  Torbjorn Granlund  <tege@gmplib.org>
10840
10841	* mpn/generic/dcpi1_divappr_q.c (mpn_dcpi1_divappr_q): Avoid a buffer
10842	overrun.
10843
10844	* mpn/generic/mul_fft.c (mpn_mul_fft_full): Handle carry-out from 2nd
10845	mpn_mul_fft, add an ASSERT for the 1st mpn_mul_fft.  Replace some
10846	comments on cc's range with ASSERTs.
10847
10848	* mpn/generic/gcdext.c (compute_v): Normalise tp[] after mpn_mul.
10849
10850	* mpz/powm.c: Rework buffer handling.
10851
108522009-12-13  Niels Möller  <nisse@lysator.liu.se>
10853
10854	* tests/mpn/toom-shared.h (main): Use refmpn_mul_basecase to check
10855	results (slow!). Iteration counts of all toom tests reduced
10856	considerably.
10857
108582009-12-13  Marco Bodrato <bodrato@mail.dm.unipi.it>
10859
10860	* mpn/generic/invert.c (mpn_invertapp): Split in _bc and _ni.
10861	(mpn_bc_invertappr): New function, the basecase.
10862	(mpn_ni_invertapp): New function, Newton iteration.
10863	(mpn_invert): Use mpn_ni_invertapp.
10864	* tune/tuneup.c (tune_invert): Min for INV_APPR_THRESHOLD.
10865	(tune_invertappr): Min for INV_NEWTON_THRESHOLD.
10866
10867	* tune/speed.h (SPEED_ROUTINE_MPN_NI_INVERTAPPR): New macro.
10868	(speed_mpn_ni_invertappr): Declare function.
10869	* tune/common.c (speed_mpn_ni_invertappr): New function.
10870	* tune/speed.c (routine): Add speed_mpn_ni_invertappr.
10871
10872	* tune/tuneup.c (tune_invertappr): Use speed_mpn_ni_invertappr to
10873	tune INV_MULMOD_BNM1_THRESHOLD.
10874
108752009-12-12  Torbjorn Granlund  <tege@gmplib.org>
10876
10877	* mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Rewrite.
10878
108792009-12-12  Marco Bodrato <bodrato@mail.dm.unipi.it>
10880
10881	* tests/mpn/t-mulmod_bnm1.c (main): Disable B^n+1 stressing test
10882	for odd sizes.
10883
10884	* mpn/generic/invert.c: Complete rewrite. Uses Newton iterations.
10885	* gmp-impl.h (mpn_invertappr): Added prototype and name-mangling.
10886	(mpn_invertappr_itch): Added prototype and name-mangling.
10887	(INV_APPR_THRESHOLD): Support for a new tunable const.
10888	* tune/speed.h (SPEED_ROUTINE_MPN_INVERTAPPR): New macro.
10889	(speed_mpn_invertappr): Declare function.
10890	* tune/common.c (speed_mpn_invertappr): New function.
10891	* tune/speed.c (routine): Add speed_mpn_invertappr.
10892	* tune/tuneup.c (tune_invertappr): New function: was tune_invert.
10893	(tune_invert): Now tune only INV_APPR_THRESHOLD.
10894	(all): Enable call to tune_invert and tune_invertappr.
10895
108962009-12-11  Torbjorn Granlund  <tege@gmplib.org>
10897
10898	* mpn/generic/binvert.c: Use mpn_mulmod_bnm1 instead of FFT wrapping.
10899	Old, evidently broken wrapping code removed.
10900	* tune/tuneup.c (tune_binvert): Tune BINV_MULMOD_BNM1_THRESHOLD.
10901	* gmp-impl.h: Provide declarations for corresponding threshold var.
10902
10903	* tests/mpn/t-bdiv.c (COUNT): Decrease to keep run time reasonable.
10904
10905	* tune/tuneup.c (tune_invert): Tune INV_MULMOD_BNM1_THRESHOLD.
10906	* gmp-impl.h: Provide declarations for corresponding threshold var.
10907
10908	* tests/mpn/t-mulmod_bnm1.c: Avoid a division by zero.
10909
10910	* configure.in: Set up different paths for different 64-bit sparc
10911	processors.
10912	* mpn/sparc64/ultrasparc34/gmp-mparam.h: New file.
10913
109142009-12-10  Torbjorn Granlund  <tege@gmplib.org>
10915
10916	* mpn/*/gmp-mparam.h: Regenerate many of these files.
10917
109182009-12-10  Niels Möller  <nisse@lysator.liu.se>
10919
10920	* gmp-impl.h (mpn_divexact): Removed scratch pointer from
10921	prototype.
10922	* mpn/generic/gcdext.c (divexact): Deleted, moved to...
10923	* mpn/generic/divexact.c (mpn_divexact): New implementation (moved
10924	from gcdext.c). The bidirectional divexact is kept but #if:ed out.
10925	Interface change, since the new code doesn't take a scratch
10926	argument.
10927
10928	* tests/mpn/t-mulmod_bnm1.c (main): Ensure that an >= bn. Lowered
10929	MIN_N to 1. Various fixes to handle n == 1 properly.
10930
10931	* mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Small interface
10932	change, require an >= bn.
10933
10934	* mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Fixed non-recursive
10935	case to not write beyond end of result area.
10936
109372009-12-09  Torbjorn Granlund  <tege@gmplib.org>
10938
10939	* tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL): New macro, made
10940	from now deleted SPEED_ROUTINE_MPN_MULMOD_BNM1.
10941	* tune/common.c (speed_mpn_bc_mulmod_bnm1): New function.
10942	(speed_mpn_mulmod_bnm1): Use SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL.
10943	* tune/speed.c (routine): Add mpn_bc_mulmod_bnm1.
10944
10945	* mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1_next_size): Rewrite.
10946
10947	* tune/tuneup.c (tune_mulmod_bnm1): Rewrite.
10948
109492009-12-08  Marco Bodrato <bodrato@mail.dm.unipi.it>
10950
10951	* mpn/generic/mulmod_bnm1.c (mpn_bc_mulmod_bnm1,
10952	mpn_bc_mulmod_bnp1): Added a parameter for scratch area, possibly
10953	same as result area (as suggested by Niels Möller).
10954	(mpn_mulmod_bnm1): Calls changed accordingly.
10955
109562009-12-08  Niels Möller  <nisse@lysator.liu.se>
10957
10958	* mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]: Use
10959	table lookup for count_trailing_zeros. Binary algorithm still
10960	disabled by default.
10961
10962	* mpn/generic/gcdext.c (divexact): Local definition of divexact,
10963	using mpn_bdiv_q.
10964	(compute_v): Use it.
10965
10966	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-bdiv.
10967
10968	* tests/mpn/t-bdiv.c: New file.
10969
10970	* mpn/generic/bdiv_q.c (mpn_bdiv_q): Fixed bad quotient length,
10971	should have qn == nn.
10972
10973	* mpn/generic/bdiv_qr.c (mpn_bdiv_qr): Pass correct nn length to
10974	the lower-level functions.
10975
109762009-12-08  Torbjorn Granlund  <tege@gmplib.org>
10977
10978	* tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_ROUNDED): New define.
10979	* tune/common.c (speed_mpn_mulmod_bnm1_rounded): New function.
10980	* tune/speed.c (routine): Add mpn_mulmod_bnm1_rounded for measuring
10981	mpn_mulmod_bnm1 at recommended sizes.
10982
10983	* mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1_next_size): Rewrite.
10984	(mpn_bc_mulmod_bnm1): Use mpn_add_n instead of mpn_add.
10985
10986	* tune/speed.c (routine): Add mpn_invert.
10987
10988	* tune/tuneup.c (tune_invert): New function.
10989	* tune/speed.h (SPEED_ROUTINE_MPN_INVERT): New macro.
10990	* tune/common.c (speed_mpn_invert): New function.
10991	* gmp-impl.h: Provide declarations for corresponding threshold var.
10992	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add invert.c.
10993
109942009-12-08  Marco Bodrato <bodrato@mail.dm.unipi.it>
10995
10996	* tests/devel/try.c: Test mpn_addlsh2_n and mpn_{add,sub}lsh_n;
10997	mpn_rsblsh_n now tests all shift values.
10998	* tests/refmpn.c (refmpn_addlsh_n, refmpn_sublsh_n): New functions.
10999	(refmpn_addlsh1_n): Use generic refmpn_addlsh_n.
11000	(refmpn_sublsh1_n): Use generic refmpn_sublsh_n.
11001	(refmpn_addlsh2_n): New function.
11002	* tests/tests.h: Declare new functions.
11003
110042009-12-06  Torbjorn Granlund  <tege@gmplib.org>
11005
11006	* tune/tuneup.c (tune_mulmod_bnm1): Up min_size to 12.
11007
11008	* Globally: Rename *mullow* to *mullo*, *MULLOW* to *MULLO*.
11009
11010	* configure.in: Don't include ev5 directory for ev6* and ev7.  Misc
11011	alpha path cleanups.
11012	* mpn/alpha/add_n.asm: Replaced by mpn/alpha/ev5/add_n.asm.
11013	* mpn/alpha/sub_n.asm: Replaced by mpn/alpha/ev5/sub_n.asm.
11014	* mpn/alpha/lshift.asm: Replaced by mpn/alpha/ev5/lshift.asm.
11015	* mpn/alpha/rshift.asm: Replaced by mpn/alpha/ev5/rshift.asm.
11016	* mpn/alpha/com_n.asm: New, moved from mpn/alpha/ev5/rshift.asm.
11017	* mpn/alpha/ev5/diveby3.asm: New, moved from mpn/alpha/diveby3.asm.
11018
11019	* mpn/powerpc64/mode64/diveby3.asm: Remove, it is slower than
11020	mpn_bdiv_dbm1c on all hardware.
11021
11022	* mpn/generic/powm_sec.c: Rework logic for mpn_sqr_basecase size limit.
11023
11024	* gmp-impl.h (mpn_redc_1_sec): Declare.
11025	* configure.in (gmp_mpn_functions): Add redc_1_sec.
11026
110272009-12-06  Marco Bodrato <bodrato@mail.dm.unipi.it>
11028
11029	* tests/devel/try.c (try_one): DATA_SRC0_HIGHBIT sets the high bit.
11030
110312009-12-05  Marco Bodrato <bodrato@mail.dm.unipi.it>
11032
11033	* mpn/generic/toom_eval_dgr3_pm1.c: Change return value: 0 or ~0.
11034	* mpn/generic/toom_eval_dgr3_pm2.c: Likewise.
11035	* mpn/generic/toom_eval_pm1.c: Likewise.
11036	* mpn/generic/toom_eval_pm2exp.c: Likewise.
11037	* mpn/generic/toom_eval_pm2.c: Rewrite to use mpn_addlsh2_n.
11038
11039	* mpn/generic/toom_interpolate_5pts.c: Param sa is a flag, not a sign.
11040
11041	* mpn/generic/toom33_mul.c: Adapt to changes above.
11042	* mpn/generic/toom3_sqr.c: Likewise.
11043	* mpn/generic/toom42_mul.c: Likewise.
11044	* mpn/generic/toom43_mul.c: Reduce branches.
11045	* mpn/generic/toom44_mul.c: Likewise.
11046	* mpn/generic/toom53_mul.c: Likewise.
11047	* mpn/generic/toom62_mul.c: Likewise.
11048
11049	* mpn/generic/toom52_mul.c: Use toom_eval_ functions.
11050
11051	* mpn/generic/toom4_sqr.c: Avoid C99 construct.
11052	* mpn/generic/toom_interpolate_7pts.c: Likewise.
11053
110542009-12-05  Torbjorn Granlund  <tege@gmplib.org>
11055
11056	* mpn/generic/redc_1_sec.c: New file.
11057	* mpn/generic/powm_sec.c: Use redc_1_sec.  Use dummy full subtract
11058	instead of mpn_cmp since the latter leaks to the side channel.
11059	(mpn_local_sqr_n): New function, with associated macros.
11060	(mpn_powm_sec): Use mpn_local_sqr_n.
11061
11062	* configure.in (HAVE_NATIVE): Add missing functions, then sort.
11063
110642009-12-04  Torbjorn Granlund  <tege@gmplib.org>
11065
11066	* tune/tuneup.c (tune_dc_div): Up min_size to 6.
11067	(tune_mod_1): Set MOD_1_1_THRESHOLD min_size to 2.
11068
11069	* tune/speed.h: Negate "binvert"-type inverses, as required.
11070
11071	* mpn/generic/redc_1.c: Add ASSERTs.
11072	* mpn/generic/redc_2.c: Likewise.
11073
11074	* mpn/generic/sbpi1_bdiv_q.c: Simplify loops, indexing.
11075
110762009-12-03  Yann Droneaud  <yann@droneaud.fr>
11077
11078	* acinclude.m4 ([long long reliability test 1]): Add a "static" for C99
11079	inline semantics compatibility.
11080
110812009-12-03  Torbjorn Granlund  <tege@gmplib.org>
11082
11083	* configure.in: Move intptr_t test into common AC_CHECK_TYPES.
11084
11085	* mpn/generic/gcdext.c: Add a TMP_FREE.
11086
110872009-12-03  Niels Möller  <nisse@lysator.liu.se>
11088
11089	* mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]:
11090	Added various masking tricks.
11091
11092	* mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]:
11093	Reimplemented binary gcdext, with proper canonicalization.
11094
11095	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Handle v == 0
11096	from mpn_gcdext_1.
11097	* mpn/generic/gcdext_1.c (mpn_gcdext_1): Allow inputs with a < b,
11098	assertions fixed accordingly.
11099
111002009-12-03  Torbjorn Granlund  <tege@gmplib.org>
11101
11102	* tune/tuneup.c: Tune DC_DIVAPPR_Q_THRESHOLD.  Rewrite
11103	DC_DIV_QR_THRESHOLD tuning code.
11104	(tune_dc_div): Rewrite.
11105	* tune/speed.h (SPEED_ROUTINE_MPN_PI1_DIV): New macro.
11106	* tune/common.c (speed_mpn_sbpi1_div_qr, speed_mpn_dcpi1_div_qr,
11107	speed_mpn_sbpi1_divappr_q, speed_mpn_sbpi1_bdiv_qr): New functions.
11108	* gmp-impl.h: Provide declarations for corresponding threshold vars.
11109	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add dcpi1_divappr_q.c.
11110
11111	* tune/tuneup.c (tune_binvert): Up max_size.
11112
111132009-12-02  Marco Bodrato <bodrato@mail.dm.unipi.it>
11114
11115	* tests/devel/try.c: Test mpn_rsblsh2_n and mpn_rsblsh_n.
11116	* tests/refmpn.c (refmpn_rsblsh_n, refmpn_rsblsh2_n): New functions.
11117	(refmpn_rsblsh1_n): Use generic refmpn_rsblsh_n.
11118	* tests/tests.h: Declare new functions.
11119
111202009-12-03  Niels Möller  <nisse@lysator.liu.se>
11121
11122	* mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step):
11123	Select the right cofactor in the cases A == B or A == 2B.
11124
11125	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Deleted
11126	handling of ap[0] == 0 and bp[0] == 0; these cases don't happen.
11127	Select the right cofactor in the case ap[0] == bp[0].
11128	* mpn/generic/gcdext.c (mpn_gcdext): Analogous changes.
11129
111302009-12-02  Niels Möller  <nisse@lysator.liu.se>
11131
11132	* gmp-h.in (mpn_gcdext_1): Updated prototype.
11133	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Updated for
11134	signed cofactors from gcdext_1.
11135	* mpn/generic/gcdext_1.c (mpn_gcdext_1): Use Euclid's algorithm,
11136	and return signed cofactors.
11137
111382009-12-02  Torbjorn Granlund  <tege@gmplib.org>
11139
11140	* doc/gmp.texi (Low-level Functions): Document mpn_sqr_n.
11141
11142	* tune/speed.c (routine): Add mpn_binvert.
11143
11144	* tune/tuneup.c: Tune BINV_NEWTON_THRESHOLD.
11145	(tune_binvert): New function.
11146	* tune/speed.h (SPEED_ROUTINE_MPN_BINVERT): New macro.
11147	* tune/common.c (speed_mpn_binvert): New function.
11148	* gmp-impl.h: Provide declarations for corresponding threshold var.
11149	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add binvert.c.
11150
11151	* tune/tuneup.c: Tune DC_BDIV_QR_THRESHOLD and DC_BDIV_Q_THRESHOLD.
11152	(tune_dc_bdiv): New function.
11153	(tune_dc_div): New name for tune_dc.
11154	* tune/speed.h (SPEED_ROUTINE_MPN_PI1_BDIV_QR,
11155	SPEED_ROUTINE_MPN_PI1_BDIV_Q): New macros.
11156	* tune/common.c (speed_mpn_sbpi1_bdiv_qr, speed_mpn_dcpi1_bdiv_qr,
11157	speed_mpn_sbpi1_bdiv_q, speed_mpn_dcpi1_bdiv_q): New functions.
11158	* gmp-impl.h: Provide declarations for corresponding threshold vars.
11159	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add dcpi1_bdiv_qr.c and
11160	dcpi1_bdiv_q.c.
11161
111622009-12-01  Marco Bodrato <bodrato@mail.dm.unipi.it>
11163
11164	* mpn/generic/toom53_mul.c: Removed double computation of vinf.
11165
11166	* mpn/x86_64/aorrlsh_n.asm: Correct return value for rsblsh_n.
11167	* mpn/asm-defs.m4 (define_mpn): Add rsblsh_n.
11168	* gmp-impl.h (mpn_rsblsh_n): Added prototype and name-mangling.
11169
11170	* mpn/generic/fib2_ui.c: Reduce the amount of temporary storage.
11171	Use mpn_rsblsh_n.
11172
111732009-12-01  Torbjorn Granlund  <tege@gmplib.org>
11174
11175	* mpn/generic/redc_n.c: Rework temp allocation.
11176
11177	* mpn/generic/dcpi1_bdiv_qr.c (mpn_dcpi1_bdiv_qr_n_itch): Add pi1 also
11178	to this function.
11179
11180	* mpn/generic/dcpi1_bdiv_q.c: Get the mpn_sbpi1_bdiv_q call right.
11181	Misc cleanups.
11182
11183	* tune/speed.c (routine): Fix typo in last change.
11184	Add mpn_redc_2.
11185
11186	* tune/speed.h (SPEED_ROUTINE_REDC_N): Set min size properly.
11187
111882009-12-01  Niels Möller  <nisse@lysator.liu.se>
11189
11190	* tune/speed.c (routine): Added mpn_toom42_mul and mpn_redc_n.
11191	* tune/speed.h (SPEED_ROUTINE_MPN_TOOM42_MUL): New macro.
11192	(speed_mpn_toom42_mul): Declare function.
11193	* tune/common.c (speed_mpn_toom42_mul): New function.
11194	* gmp-impl.h (MPN_TOOM42_MUL_MINSIZE): New constant.
11195
111962009-11-30  Marco Bodrato <bodrato@mail.dm.unipi.it>
11197
11198	* mpn/generic/fib2_ui.c: Use mpn_rsblsh2_n.
11199
112002009-11-29  Torbjorn Granlund  <tege@gmplib.org>
11201
11202	* mpn/x86_64/pentium4/gmp-mparam.h
11203	(HAVE_NATIVE_mpn_addlsh1_n, HAVE_NATIVE_mpn_sublsh1_n): Don't undef.
11204
11205	* Makefile.am (EXTRA_DIST): Remove macos.
11206
112072009-11-28  Torbjorn Granlund  <tege@gmplib.org>
11208
11209	* tune/tuneup.c (tune_redc): Set min_size to 16 for redc_n tuning.
11210
11211	* mpn/x86_64/sqr_basecase.asm (SQR_TOOM2_THRESHOLD_MAX): Avoid quoting
11212	to allow configure.in parse it more easily.  Trim from 120 to 80.
11213
112142009-11-28  Marco Bodrato <bodrato@mail.dm.unipi.it>
11215
11216	* mpn/generic/mulmod_bnm1.c: Basecases made simpler, this also corrects
11217	a bug affecting previous version.
11218
112192009-11-28  Torbjorn Granlund  <tege@gmplib.org>
11220
11221	* configure.in: Handle atom also in 32-bit mode.
11222	* mpn/x86/atom/gmp-mparam.h: New file.
11223
11224	* gmp-impl.h (MULMOD_BNM1_THRESHOLD): Default.
11225
11226	* mpn/generic/redc_n.c: Use mpn_mulmod_bnm1 instead of mpn_mul_n.
11227
11228	* Use TMP_ALLOC_LIMBS consistently.
11229	* Finish renaming BITS_PER_MP_LIMB to GMP_LIMB_BITS.
11230
11231	* macos: Remove entire directory.
11232
112332009-11-27  Torbjorn Granlund  <tege@gmplib.org>
11234
11235	* mpn/x86_64/corei/gmp-mparam.h: New file.
11236	* mpn/x86_64/core2/gmp-mparam.h: Now for just core2.
11237	* mpn/powerpc64/mode64/p3/gmp-mparam.h: New file.
11238	* mpn/powerpc64/mode64/p4/gmp-mparam.h: New file.
11239	* mpn/powerpc64/mode64/p5/gmp-mparam.h: New file.
11240
11241	* config.guess: Return "corei" for core i7 and core i5.
11242	* config.sub: Recognise "corei".
11243	* acinclude.m4 (X86_64_PATTERN): Add corei.
11244	* configure.in (powerpc): Set up more CPU-specific paths.
11245	(x86): Handle corei.
11246
11247	* mpz/powm.c: Allow input operand overlap also when exponent = 1.
11248	Misc cleanups.
11249
112502009-11-26  Marco Bodrato <bodrato@mail.dm.unipi.it>
11251
11252	* tests/mpn/t-mulmod_bnm1.c: New test file.
11253	* tests/mpn/Makefile.am (check_PROGRAMS): Add t-mulmod_bnm1.
11254
11255	* mpn/generic/mullow_n.c: Comments on Mulders' trick implementation.
11256
112572009-11-26  Torbjorn Granlund  <tege@gmplib.org>
11258
11259	* mpn/generic/powm.c: Make comments reflect current code state.
11260
11261	* tests/devel/try.c: Make mpn_mullow_n testing actually work.
11262
112632009-11-25  Torbjorn Granlund  <tege@gmplib.org>
11264
11265	* mpz/powm.c: Clean up unused defs.
11266
112672009-11-24  Torbjorn Granlund  <tege@gmplib.org>
11268
11269	* tune/tuneup.c (tune_redc): Rewrite.
11270	* mpn/generic/powm.c: Use REDC_1_TO_REDC_2_THRESHOLD,
11271	REDC_1_TO_REDC_N_THRESHOLD, and REDC_2_TO_REDC_N_THRESHOLD.
11272	Get rid of previous REDC params, including LOCAL_REDC_N_THRESHOLD.
11273	(WANT_REDC_2): Define.
11274	* gmp-impl.h: Corresponding changes.
11275
112762009-11-23  Torbjorn Granlund  <tege@gmplib.org>
11277
11278	* mpn/generic/powm.c: Fix typo.
11279	Define LOCAL_REDC_N_THRESHOLD, use in REDC_2_THRESHOLD...
11280	REDC_N_THRESHOLD chain.
11281
112822009-11-22  Torbjorn Granlund  <tege@gmplib.org>
11283
11284	* tune/tuneup.c (tune_mullow): Set min_size to 1.
11285
11286	* mpn/generic/powm_sec.c: Use just mpn_mul_basecase and
11287	mpn_sqr_basecase for multiplication and squaring.
11288
11289	* tune/tuneup.c: Tune REDC_2_THRESHOLD and REDC_N_THRESHOLD.
11290	(tune_redc): New function.
11291	(tune_powm): Remove function.
11292	* tune/speed.h (SPEED_ROUTINE_REDC_2, SPEED_ROUTINE_REDC_N): New.
11293	* tune/common.c (speed_mpn_redc_2, speed_mpn_redc_n): New.
11294
11295	* mpz/powm.c: Complete rewrite.  Use mpn_powm and mpn_powlo.
11296	* mpn/generic/powm.c: Rewrite.
11297	* mpn/generic/redc_n.c: New file.
11298	* configure.in (gmp_mpn_functions): Add redc_n.
11299	* gmp-impl.h (REDC_2_THRESHOLD, REDC_N_THRESHOLD): Default, and define
11300	for tuneup.
11301
113022009-11-21  Marco Bodrato <bodrato@mail.dm.unipi.it>
11303
11304	* mpn/generic/mullow_n.c: Disable Mulders' trick for small operands,
11305	use fft for bigger ones.
11306	* tests/mpn/t-mullo.c: New test file.
11307
113082009-11-22  Torbjorn Granlund  <tege@gmplib.org>
11309
11310	* tune/tuneup.c (tune_mullow): Rewrite.
11311
113122009-11-21  Marco Bodrato <bodrato@mail.dm.unipi.it>
11313
11314	* gmp-impl.h: Removed unused macros (CACHED_ABOVE_THRESHOLD and
11315	CACHED_BELOW_THRESHOLD).
11316
11317	* mpn/generic/mullow_n.c: Use Mulders' trick.
11318	* tune/tuneup.c (tune_mullow): MULLOW_MUL_N_THRESHOLD range of
11319	search depends on FFT tuning;
11320	(all): Anticipate tune_fft_{mul,sqr}.
11321
11322	* tune/speed.c (routine): Add entry related to mpn_mulmod_bnm1.
11323
113242009-11-19  Niels Möller  <nisse@lysator.liu.se>
11325
11326	* mpn/generic/toom_eval_dgr3_pm2.c (mpn_toom_eval_dgr3_pm2)
11327	[HAVE_NATIVE_mpn_add_n_sub_n]: Fixed typo in mpn_add_n_sub_n call
11328	(spotted by Marco Bodrato).
11329	* mpn/generic/toom_eval_pm2.c (mpn_toom_eval_pm2): Likewise.
11330	* mpn/generic/toom_eval_pm2exp.c (mpn_toom_eval_pm2exp): Likewise.
11331
11332	* mpn/generic/toom_eval_pm2.c (mpn_toom_eval_pm2) [HAVE_NATIVE_mpn_addlsh_n]:
11333	Fixed missing declaration.
11334
11335	* mpn/asm-defs.m4 (define_mpn): Add addlsh_n.
11336	* gmp-impl.h (mpn_addlsh_n): Added prototype and name-mangling.
11337
113382009-11-19  Niels Möller  <nisse@lysator.liu.se>
11339
11340	* mpn/generic/toom_eval_pm2.c (mpn_toom_eval_pm2): New file.
11341	* mpn/generic/toom53_mul.c (mpn_toom53_mul): Use mpn_toom_eval_pm2.
11342	* mpn/generic/toom62_mul.c (mpn_toom62_mul): Likewise.
11343	* configure.in (gmp_mpn_functions): Added toom_eval_dgr3_pm2.
11344
113452009-11-18  Torbjorn Granlund  <tege@gmplib.org>
11346
11347	* gmp-impl.h (mpn_and_n, etc): Adapt to now-public logic functions.
11348
11349	* config.guess: Recognise VIA nano.
11350	* config.sub: Likewise.
11351	* configure.in: Generalise x86_64 support; recognise VIA nano.
11352
113532009-11-16  Torbjorn Granlund  <tege@gmplib.org>
11354
11355	* tune/speed.c (routine): Add measurement of mpn_addlsh2_n,
11356	mpn_sublsh2_n, mpn_rsblsh2_n.
11357	* tune/common.c: Add speed routines for lsh2 functions.
11358
11359	* mpn/generic/divis.c: Use MU_BDIV_QR_THRESHOLD.
11360
11361	* configure.in (gmp_mpn_functions_optional): Add *lsh_n functions.
11362
11363	* mpn/generic/toom_eval_pm2exp.c: Make HAVE_NATIVE_mpn_addlsh_n code
11364	work.
11365
11366	* mpn/x86_64/aorrlsh2_n.asm: Optimise inner loop.
11367
11368	* configure.in (gmp_mpn_functions_optional): Remove copyi,copyd, they
11369	are now in gmp_mpn_functions.  Analogously move logical functions.
11370
113712009-11-16  Marco Bodrato <bodrato@mail.dm.unipi.it>
11372
11373	* mpn/generic/toom53_mul.c: Use addlsh2 for evaluation (and fix typo).
11374	* mpn/generic/toom_eval_dgr3_pm2.c: Likewise (affects toom44 and 43).
11375
11376	* mpn/asm-defs.m4: Fix comments for op_lsh2 new functions.
11377	* gmp-impl.h: Likewise.
11378	* tests/mpz/t-fac_ui.c: Fix a comment.
11379
113802009-11-15  Torbjorn Granlund  <tege@gmplib.org>
11381
11382	* mpn/x86_64/aorrlsh2_n.asm: New file.
11383	* configure.in: Add support for addlsh2_n, sublsh2_n, and rsblsh2_n,
11384	including mulfuncs.
11385	* gmp-impl.h (mpn_addlsh2_n, mpn_sublsh2_n, mpn_rsblsh2_n): Declare.
11386	* mpn/asm-defs.m4: Likewise.
11387
11388	* mpn/generic/copyi.c: New file.
11389	* mpn/generic/copyd.c: Likewise.
11390	* mpn/generic/zero.c: Likewise.
11391	* gmp-h.in: Declare new functions.
11392	* configure.in (gmp_mpn_functions): Add new functions.
11393
113942009-11-15  Marco Bodrato <bodrato@mail.dm.unipi.it>
11395
11396	* mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1_next_size): fix typo
11397
11398	* mpn/generic/toom33_mul.c: Use rsblsh1 for evaluation.
11399	* mpn/generic/toom3_sqr.c: Likewise.
11400
114012009-11-14  Torbjorn Granlund  <tege@gmplib.org>
11402
11403	* mpn/generic/toom52_mul.c: Use mpn_addlsh1_n.
11404
11405	* mpn/generic/toom52_mul.c: Toggle the right flag bit in an
11406	HAVE_NATIVE_mpn_add_n_sub_n arm.
11407
11408	* tests/mpz/t-remove.c: New file.
11409
11410	* mpn/generic/remove.c: Major overhaul.  Add parameter 'cap'.
11411
11412	* mpn/generic/binvert.c: Fix typo in last change.
11413
11414	* mpn/generic/bdiv_qr.c: Make it actually work.  Also use passed-in
11415	scratch space.
11416
11417	* mpn/generic/mu_bdiv_qr.c: Reset FFT parameters for each call.
11418
114192009-11-12  Torbjorn Granlund  <tege@gmplib.org>
11420
11421	* mpn/x86/k7/gcd_1.asm (MASK): Compute from MAXSHIFT.
11422
114232009-11-11  Torbjorn Granlund  <tege@gmplib.org>
11424
11425	* mpn/generic/binvert.c: Simplify, fix comments.
11426
11427	* tests/devel/try.c: Test mpn_invert and mpn_binvert.
11428
11429	* tests/refmpn.c (refmpn_invert, refmpn_binvert): New functions.
11430	* tests/tests.h: Declare new functions.
11431
114322009-11-10  Torbjorn Granlund  <tege@gmplib.org>
11433
11434	* configure.in: Supply compiler options for atom in 32-bit mode.
11435
11436	* acinclude.m4 (X86_64_PATTERN): New.
11437	* configure.in: Setup and use X86_64_PATTERN.
11438
11439	* mpn/x86_64/fat/fat.c: New file.
11440	* mpn/x86_64/fat/fat_entry.asm: New file.
11441	* mpn/x86_64/fat: Copy C placeholder files from mpn/x86/fat.
11442	* mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): New, copied from
11443	mpn/x86/x86-defs.m4.
11444	* configure.in: Move down x86 fat setup code until after ABI has been
11445	determined; generalise to handle x86_64.
11446
114472009-11-09  Torbjorn Granlund  <tege@gmplib.org>
11448
11449	* mpn/x86/fat/mod_1.c: New file.
11450
11451	* acinclude.m4 (GMP_C_FOR_BUILD_ANSI): Avoid poor quoting.
11452
114532009-11-08  Torbjorn Granlund  <tege@gmplib.org>
11454
11455	* gmp-impl.h (MPN_LOGOPS_N_INLINE): Rewrite, update interface.  Callers
11456	updated.
11457	* mpn/generic/logops_n.c: New file.
11458	* doc/gmp.texi (Low-level Functions): Document logical mpn functions.
11459
114602009-11-07  Torbjorn Granlund  <tege@gmplib.org>
11461
11462	* tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1): Adapt to new
11463	mpn_mulmod_bnm1 interface.
11464
114652009-11-07  Marco Bodrato <bodrato@mail.dm.unipi.it>
11466
11467	* mpn/generic/mulmod_bnm1.c: New interface, with size
11468	specified for all operands in mpn_mulmod_bnm1.
11469	* gmp-impl.h: Changed mpn_mulmod_bnm1 prototype.
11470
114712009-11-05  Torbjorn Granlund  <tege@gmplib.org>
11472
11473	* mpn/x86/k7/gcd_1.asm: Actually use div-reduced value.
11474	Mnemonic cleanup.
11475
11476	* mpn/x86_64/gcd_1.asm: New file.
11477
114782009-11-03  Torbjorn Granlund  <tege@gmplib.org>
11479
11480	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add sqr_n.c.
11481
114822009-11-03  Marco Bodrato <bodrato@mail.dm.unipi.it>
11483
11484	* mpn/generic/toom_interpolate_6pts.c: removed an addmul_1 and cleanup.
11485
114862009-11-02  Torbjorn Granlund  <tege@gmplib.org>
11487
11488	* configure.in (gmp_mpn_functions): Remove obsolete functions
11489	dc_divrem_n and sb_divrem_mn.
11490	* gmp-impl.h: Misc cleanup.
11491	(mpn_sb_divrem_mn, mpn_dc_divrem_n): Remove.
11492	(DIV_DC_THRESHOLD): Remove.
11493	* mpn/generic/dc_divrem_n.c: Remove.
11494	* mpn/generic/sb_divrem_mn.c: Remove.
11495	* mpn/generic/tdiv_qr.c: Use DC_DIV_QR_THRESHOLD, not DIV_DC_THRESHOLD.
11496
11497	* tests/devel/try.c: Replace mpn_sb_divrem_mn by mpn_sbpi1_div_qr.
11498	* tests/refmpn.c (refmpn_sb_div_qr): New name for refmpn_sb_divrem_mn.
11499
11500	* tune/Makefile.am (libspeed_la_SOURCES): Remove sb_div.c and sb_inv.c.
11501	(TUNE_MPN_SRCS_BASIC): Remove sb_divrem_mn.c.
11502	* tune/common.c (speed_mpn_dcpi1_div_qr_n): New function.
11503	Remove mpn_sb_divrem_mn related functions.
11504	* tune/speed.c (routine): Remove entries related to mpn_dc_divrem and
11505	mpn_sb_divrem.
11506	(routine): New entry for mpn_dc_div_qr_n.
11507	* tune/speed.h (SPEED_ROUTINE_MPN_DC_DIVREM_CALL): Compute inverse
11508	needed by pi1 calls.
11509	(SPEED_ROUTINE_MPN_SB_DIVREM_M3): Remove.
11510	* tune/tuneup.c (tune_sb_preinv): Remove.
11511	(tune_dc): Update to measure DC_DIV_QR_THRESHOLD.
11512
11513	* mpn/generic/sb_divappr_q.c: Remove.
11514
115152009-11-01  Torbjorn Granlund  <tege@gmplib.org>
11516
11517	* gmp-impl.h: Misc minor cleanups.
11518
115192009-10-31  Torbjorn Granlund  <tege@gmplib.org>
11520
11521	* gmp-impl.h (toom itch functions): Simplify, make some into macros.
11522	(MPN_KARA_MUL_N_TSIZE, MPN_KARA_SQR_N_TSIZE): Remove.
11523	* mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove.
11524	* mpn/generic/mul_n.c (mpn_sqr_n): Move from here...
11525	* mpn/generic/sqr_n.c: ...to this new file.
11526	* configure.in (gmp_mpn_functions): Add sqr_n.
11527
11528	* Globally change
11529	  MUL_TOOM3_THRESHOLD => MUL_TOOM33_THRESHOLD,
11530	  MUL_KARATSUBA_THRESHOLD => MUL_TOOM22_THRESHOLD,
11531	  SQR_KARATSUBA_THRESHOLD => SQR_TOOM2_THRESHOLD,
11532	and associated names analogously.
11533
115342009-10-31  Niels Möller  <nisse@lysator.liu.se>
11535
11536	* mpn/generic/toom_interpolate_7pts.c: Changed evaluation points,
11537	replacing -1/2 by -2.
11538	* mpn/generic/toom44_mul.c: Updated to use new evaluation points,
11539	and use mpn_toom_eval_dgr3_pm2.
11540	* mpn/generic/toom4_sqr.c (mpn_toom4_sqr): Likewise.
11541	* mpn/generic/toom53_mul.c (mpn_toom53_mul): Updated to use new
11542	evaluation points, and use mpn_toom_eval_pm1 and
11543	mpn_toom_eval_pm2exp.
11544	* mpn/generic/toom62_mul.c (mpn_toom62_mul): Likewise.
11545
11546	* mpn/generic/toom_eval_pm2exp.c: New file.
11547	* mpn/generic/toom_eval_pm1.c: New file.
11548
11549	* mpn/generic/toom43_mul.c (mpn_toom43_mul): Use
11550	mpn_toom_eval_dgr3_pm2.
11551
115522009-10-30  Torbjorn Granlund  <tege@gmplib.org>
11553
11554	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add toom2* and toom3* files.
11555
115562009-10-30  Niels Möller  <nisse@lysator.liu.se>
11557
11558	* configure.in (gmp_mpn_functions): Added toom_eval_dgr3_pm2.
11559	* gmp-impl.h: Added prototype for mpn_toom_eval_dgr3_pm2.
11560	* mpn/generic/toom_eval_dgr3_pm2.c: New file.
11561
115622009-10-29  Niels Möller  <nisse@lysator.liu.se>
11563
11564	* mpn/generic/toom43_mul.c (mpn_toom43_mul): Use
11565	mpn_toom_eval_dgr3_pm1.
11566	* mpn/generic/toom42_mul.c (mpn_toom42_mul): Likewise.
11567
115682009-10-29  Torbjorn Granlund  <tege@gmplib.org>
11569
11570	* mpn/generic/mulmod_bnm1.c: Replace some add_1 by INCR.
11571
11572	* gmp-impl.h (mpn_mulmod_bnm1_itch): New macro.
11573
11574	* mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Call mpn_mul_fft.
11575	(mpn_mulmod_bnm1_next_size): Adopt to SS FFT.
11576
11577	* mpn/generic/mul_fft.c (mpn_mul_fft): Make it return high limb.
11578	(mpn_mul_fft_internal): Likewise.
11579
11580	* mpn/generic/mulmod_bnm1.c: New file, by Niels Möller.
11581	* configure.in (gmp_mpn_functions): Add mulmod_bnm1.
11582	* gmp-impl.h: Add related declarations.
11583	* tune/tuneup.c: Tune MULMOD_BNM1_THRESHOLD.
11584	* tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1): New macro.
11585	* tune/common.c (speed_mpn_mulmod_bnm1): New function.
11586	* Makefile.am (TUNE_MPN_SRCS_BASIC): Add mulmod_bnm1.c.
11587
11588	* gmp-impl.h (mpn_kara_mul_n, mpn_kara_sqr_n): Remove declarations.
11589	* tune/common.c: Remove/rename kara functions.
11590	* tune/speed.h: Likewise.
11591
11592	* tests/devel/try.c: Clean up usage of %p printf arguments.
11593
11594	* gmp-impl.h: Update MUL/SQR MINSIZE macros to reflect new function
11595	names and limitations
11596	* tune/tuneup.c: Use updated macro names.
11597	* tune/speed.h: Likewise.
11598	* tests/devel/try.c: Test new mul/sqr functions, remove old tests.
11599
116002009-10-29  Niels Möller  <nisse@lysator.liu.se>
11601
11602	* tune/speed.c: Added support for mpn_toom4_sqr.
11603
11604	* tune/speed.h (SPEED_ROUTINE_MPN_TOOM4_SQR): New macro.
11605	(SPEED_ROUTINE_MPN_KARA_MUL_N): Deleted.
11606	(SPEED_ROUTINE_MPN_TOOM3_MUL_N): Deleted.
11607	(SPEED_ROUTINE_MPN_TOOM2_SQR): Use mpn_toom2_sqr_itch.
11608
11609	* gmp-impl.h (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove
11610	declarations.
11611	(mpn_toom2_sqr_itch): Add margin for recursive calls.
11612
116132009-10-28  Niels Möller  <nisse@lysator.liu.se>
11614
11615	* mpn/generic/mul_n.c (mpn_kara_mul_n): Deleted old Karatsuba
11616	implementation.
11617	(mpn_kara_sqr_n): Likewise deleted.
11618
11619	* mpn/generic/mul_n.c (mpn_sqr_n): Use mpn_toom2_sqr and
11620	mpn_toom3_sqr, not the old implementations.
11621
11622	* gmp-impl.h (MPN_TOOM3_MUL_N_TSIZE): Deleted, replaced by
11623	mpn_toom33_mul_itch.
11624	(MPN_TOOM3_SQR_N_TSIZE): Deleted, replaced by
11625	mpn_toom3_sqr_itch.
11626	(mpn_toom33_mul_itch): Needs more scratch.
11627	(mpn_toom3_sqr_itch): Likewise.
11628	* tune/speed.h (SPEED_ROUTINE_MPN_TOOM3_MUL_N): Use
11629	mpn_toom33_mul_itch.
11630	(SPEED_ROUTINE_MPN_TOOM3_SQR_N): Use mpn_toom3_sqr_itch.
11631	* mpn/generic/mul_n.c (mpn_mul_n): Use mpn_toom33_mul_itch.
11632	(mpn_sqr_n): Use mpn_toom3_sqr_itch.
11633
11634	* mpn/generic/toom33_mul.c (mpn_toom33_mul): Avoid TMP_ALLOC. Needs
11635	some more supplied scratch instead.
11636	* mpn/generic/toom3_sqr.c (mpn_toom3_sqr): Likewise.
11637
116382009-10-26  Torbjorn Granlund  <tege@gmplib.org>
11639
11640	* gmp-impl.h (invert_pi1): Streamline, as suggested by Niels.
11641
116422009-10-24  Torbjorn Granlund  <tege@gmplib.org>
11643
11644	* mpn/generic/bdiv_q.c: Update to call new functions.
11645	* mpn/generic/bdiv_qr.c: Likewise.
11646	* mpn/generic/binvert.c: Likewise.
11647	* mpn/generic/divexact.c: Likewise.
11648	* mpn/generic/divis.c: Likewise.
11649	* mpn/generic/perfpow.c: Likewise.
11650	* mpn/generic/tdiv_qr.c: Likewise.
11651	* mpn/generic/dcpi1_bdiv_q.c: New file.
11652	* mpn/generic/dcpi1_bdiv_qr.c: New file.
11653	* mpn/generic/dcpi1_div_q.c: New file.
11654	* mpn/generic/dcpi1_div_qr.c: New file.
11655	* mpn/generic/dcpi1_divappr_q.c: New file.
11656	* mpn/generic/sbpi1_bdiv_q.c: New file.
11657	* mpn/generic/sbpi1_bdiv_qr.c: New file.
11658	* mpn/generic/sbpi1_div_q.c: New file.
11659	* mpn/generic/sbpi1_div_qr.c: New file.
11660	* mpn/generic/sbpi1_divappr_q.c: New file.
11661	* mpn/generic/dc_bdiv_q.c: Removed.
11662	* mpn/generic/dc_bdiv_qr.c: Removed.
11663	* mpn/generic/dc_div_q.c: Removed.
11664	* mpn/generic/dc_div_qr.c: Removed.
11665	* mpn/generic/dc_divappr_q.c: Removed.
11666	* mpn/generic/sb_bdiv_q.c: Removed.
11667	* mpn/generic/sb_bdiv_qr.c: Removed.
11668	* mpn/generic/sb_div_q.c: Removed.
11669	* mpn/generic/sb_div_qr.c: Removed.
11670
11671	* configure.in (gmp_mpn_functions): Add new division functions, remove
11672	obsolete division functions.
11673
11674	* gmp-impl.h: Add declarations of new division functions, remove
11675	corresponding obsolete declarations.
11676	(gmp_pi1_t, gmp_pi2_t): New types.
11677	(invert_pi1): New macro for computing 2/1 and 3/2 inverses.
11678
116792009-10-23  Niels Möller  <nisse@lysator.liu.se>
11680
11681	* gmp-impl.h (mpn_toom62_mul_itch): New function.
11682
11683	* tests/mpn/t-toom53.c: New test program.
11684	* tests/mpn/t-toom62.c: New test program.
11685
116862009-10-23  Torbjorn Granlund  <tege@gmplib.org>
11687
11688	* mpn/generic/get_d.c: Fix code handling denorms for 64-bit machines.
11689	* tests/mpf/t-get_d.c (test_denorms): New function.
11690
116912009-10-23  Niels Möller  <nisse@lysator.liu.se>
11692
11693	* mpn/generic/toom52_mul.c (mpn_toom52_mul): Use supplied scratch
11694	space, not TMP_ALLOC. Interface change, now requires input sizes
11695	such that s + t >= 5.
11696
11697	* gmp-impl.h (mpn_toom52_mul_itch): New function.
11698
11699	* tests/mpn/t-toom52.c: New test program.
11700
117012009-10-22  Torbjorn Granlund  <tege@gmplib.org>
11702
11703	* mpn/x86_64/sqr_basecase.asm: Tune for speed and a 7% size decrease.
11704
117052009-10-22  Niels Möller  <nisse@lysator.liu.se>
11706
11707	* tests/mpn/t-toom44.c: New test program.
11708	* tests/mpn/t-toom33.c: New test program.
11709
11710	* tests/mpn/toom-shared.h (main): Reorganized input generation.
11711	Users are now supposed to define macros MAX_AN, MIN_BN and MAX_BN.
11712	Updated existing toom test programs.
11713
117142009-10-22  Torbjorn Granlund  <tege@gmplib.org>
11715
11716	* tests/devel/try.c: Fix typos in last change.
11717
117182009-10-21  Torbjorn Granlund  <tege@gmplib.org>
11719
11720	* mpn/asm-defs.m4 (define_mpn): Add mullow_basecase.
11721
11722	* tests/devel/try.c: Test mpn_mullow_n.
11723
11724	* tests/refmpn.c (refmpn_mullow_n): New function.
11725	* tests/tests.h: Declare it.
11726
117272009-10-21  Niels Möller  <nisse@lysator.liu.se>
11728
11729	* tests/mpn/toom-shared.h (main): Check for writes outside of the
11730	product or scratch area.
11731
11732	* gmp-impl.h (mpn_toom43_mul_itch): New function.
11733
11734	* mpn/generic/toom43_mul.c (mpn_toom43_mul): Use supplied scratch
11735	space, not TMP_ALLOC. Interface change, now requires input sizes
11736	such that s + t >= 5.
11737
117382009-10-20  Niels Möller  <nisse@lysator.liu.se>
11739
11740	* tests/mpn/toom-shared.h (MIN_BLOCK): New constant, which can be
11741	overridden by users. Needed by t-toom42 and t-toom43.
11742
11743	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-toom32,
11744	t-toom42 and t-toom43.
11745	* tests/mpn/t-toom43.c: New test program.
11746	* tests/mpn/t-toom42.c: New test program.
11747	* tests/mpn/t-toom32.c: New test program.
11748
11749	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-toom22.
11750	* tests/mpn/t-toom22.c: New test file.
11751	* tests/mpn/toom-shared.h: New file. Test framework for Toom
11752	functions.
11753
117542009-10-14  Niels Möller  <nisse@lysator.liu.se>
11755
11756	* mpn/generic/hgcd.c (mpn_hgcd_itch): Thanks to the new
11757	mpn_matrix22_mul_strassen, the scratch need is reduced by 16%.
11758
117592009-10-14  Marco Bodrato  <bodrato@mail.dm.unipi.it>
11760
11761	* mpn/generic/matrix22_mul.c (mpn_matrix22_mul_strassen): New
11762	Strassen-like algorithm, to reduce the amount of temporary
11763	storage.
11764	(mpn_matrix22_mul_itch): Updated to reflect the reduced storage
11765	need.
11766
117672009-10-03  Torbjorn Granlund  <tege@gmplib.org>
11768
11769	* Rename mpn_addsub_n to mpn_add_n_sub_n.
11770
117712009-10-01  Torbjorn Granlund  <tege@gmplib.org>
11772
11773	* mpn/generic/tdiv_qr.c: Call mpn_divrem_1 and mpn_dc_div_qr instead of
11774	old functions.
11775
11776	* mpn/generic/mul_n.c: Call toom22 and toom33 instead of old functions.
11777
11778	* mpn/generic/toom42_mul.c (TOOM42_MUL_N_REC): Renamed from
11779	TOOM22_MUL_N_REC.  Unconditionally call the generic mpn_mul_n.
11780	* mpn/generic/toom32_mul.c: Analogous changes.
11781
117822009-09-28  Niels Möller  <nisse@lysator.liu.se>
11783
11784	* mpn/x86_64/invert_limb.asm: Rewrite. Exploit cancellation in the
11785	Newton iteration.
11786
117872009-09-27  Niels Möller  <nisse@lysator.liu.se>
11788
11789	* mpn/x86/invert_limb.asm: Reduce register usage. Eliminated $1
11790	arguments to add, sub and shift.
11791
117922009-09-25  Niels Möller  <nisse@lysator.liu.se>
11793
11794	* mpn/x86/invert_limb.asm: New file.
11795
117962009-09-24  Torbjorn Granlund  <tege@gmplib.org>
11797
11798	* mpn/generic/toom33_mul.c: Use new toom functions for all recursive
11799	products.
11800	* mpn/generic/toom3_sqr.c: Likewise.
11801	* mpn/generic/toom44_mul.c: Likewise.
11802	* mpn/generic/toom4_sqr.c: Likewise.
11803
11804	* mpn/generic/add_n.c: Relax operand overlap ASSERTs.
11805	* mpn/generic/sub_n.c: Likewise.
11806
118072009-09-15  Torbjorn Granlund  <tege@gmplib.org>
11808
11809	Suggested by Uwe Mueller:
11810	* printf/doprnt.c: Use "%ld" for exponent printing.
11811	* printf/doprntf.c (__gmp_doprnt_mpf): Make expval "long".
11812
118132009-09-14  Torbjorn Granlund  <tege@gmplib.org>
11814
11815	* configure.in: Handle mingw64.
11816	* gmp-impl.h (gmp_intptr_t): Declare.
11817	* tests/amd64check.c (calling_conventions_values): Use CNST_LIMB.
11818	* tests/memory.c: Use gmp_intptr_t; print pointers using C90 "%p".
11819	* tests/misc.c: Use gmp_intptr_t.
11820	* tests/mpq/t-get_str.c: Print pointers using C90 "%p".
11821
118222009-08-12  Torbjorn Granlund  <tege@gmplib.org>
11823
11824	* mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Remove silly ASSERT code.
11825
11826	* mpn/asm-defs.m4 (define_mpn): Remove mod_1s_1p, add mod_1_1p.
11827
11828	* mpn/arm/invert_limb.asm: Complete rewrite.
11829
11830	* longlong.h: Document LONGLONG_STANDALONE and NO_ASM.
11831
118322009-08-05  Torbjorn Granlund  <tege@gmplib.org>
11833
11834	* tests/mpz/dive_ui.c (check_random): Avoid zero divisors.
11835
118362009-07-31  Torbjorn Granlund  <tege@gmplib.org>
11837
11838	* mpn/generic/mod_1_1.c: Tweak to handle any modulus (possibility
11839	pointed out by Per Austrin).
11840	(mpn_mod_1_1p): Renamed from mpn_mod_1s_1p.
11841	(mpn_mod_1_1p_cps): Renamed from mpn_mod_1s_1p_cps.
11842	*mpn/generic/mod_1.c (mpn_mod_1): Reorganise to call mpn_mod_1_1p for
11843	any modulus.
11844
118452009-07-28  Torbjorn Granlund  <tege@gmplib.org>
11846
11847	* configure.in: Pass arch for x86 also in 64-bit mode.
11848
118492009-07-26  Torbjorn Granlund  <tege@swox.com>
11850
11851	* config.guess (_cpuid): Recognise more Intel "Core" processors.
11852
118532009-07-13  Torbjorn Granlund  <tege@gmplib.org>
11854
11855	* mpf/eq.c: Rewrite.
11856
11857	* tests/mpf/t-eq.c: New test.
11858
118592009-07-06  Torbjorn Granlund  <tege@gmplib.org>
11860
11861	* gmp-impl.h (__mp_bases): Remove this alias.
11862
11863	* mpf/get_str.c: Use less overflow prone expression for computing limb
11864	allocation.
11865	* mpz/inp_str.c: Likewise.
11866	* mpf/set_str.c: Likewise.
11867	* mpz/set_str.c: Likewise.
11868
118692009-07-03  Niels Möller  <nisse@lysator.liu.se>
11870
11871	* mpn/generic/gcd_1.c (mpn_gcd_1): Use masking tricks to reduce
11872	the number of branches in the loop.
11873
118742009-06-28  Torbjorn Granlund  <tege@gmplib.org>
11875
11876	* demos/factorize.c (factor_using_pollard_rho): Rewrite.
11877
11878	* mpz/clears.c: New file.
11879	* mpq/clears.c: New file.
11880	* mpf/clears.c: New file.
11881	* gmp-h.in (mpz_clears, mpq_clears, mpf_clears): Declare.
11882	* mpz/Makefile.am: Add clears.c.
11883	* mpq/Makefile.am: Add clears.c.
11884	* mpf/Makefile.am: Add clears.c.
11885	* Makefile.am: Add these also to respective OBJECTS variables.
11886	* doc/gmp.texi: Document inits function and clears functions.
11887
118882009-06-20  Torbjorn Granlund  <tege@gmplib.org>
11889
11890	* mp-h.in (mp_bitcnt_t): Declare here too.
11891
118922009-06-19  Torbjorn Granlund  <tege@gmplib.org>
11893
11894	* mpq/inits.c: New file.
11895	* mpf/inits.c: New file.
11896	* gmp-h.in (mpz_inits, mpq_inits, mpf_inits): Declare .
11897
11898	* mpn/generic/remove.c: New file.
11899	* configure.in (gmp_mpn_functions): Add remove.
11900	* gmp-impl.h (mpn_remove): Declare.
11901
11902	* gmp-h.in (mp_bitcnt_t): New basic type.
11903	* mpn/generic/perfpow.c (mp_bitcnt_t): Remove private definition.
11904
11905	* mpn/generic/bdiv_qr.c: Make it actually work.
11906
11907	* mpn/x86_64/core2/aorsmul_1.asm: Rewrite to use shorter pipeline and
11908	to need fewer registers.
11909
119102009-06-17  Torbjorn Granlund  <tege@gmplib.org>
11911
11912	* mpn/x86_64/rsh1aors_n.asm: New file.
11913	* mpn/x86_64/rsh1add_n.asm: Remove.
11914	* mpn/x86_64/rsh1sub_n.asm: Remove.
11915
11916	* mpz/inits.c: New file.
11917
11918	* gen-trialdivtab.c: Wrap limb constants into CNST_LIMB.
11919
11920	With Martin Boij:
11921	* mpn/generic/perfpow.c (binv_root, binv_sqroot): Change from being
11922	recursive to being iterative.
11923	(mpn_perfect_power_p): Reorganise temp memory usage to avoid a buffer
11924	overrun.  Trim allocation of next and prev.  Never create oversize
11925	products in the multiplicity binary search.
11926
11927	* mpn/generic/dc_div_q.c: Add missing TMP_FREE.
11928
119292009-06-16  Torbjorn Granlund  <tege@gmplib.org>
11930
11931	Revert:
11932	* mpn/generic/perfpow.c (perfpow): Test exponents up to ub, inclusive.
11933
119342009-06-16  Martin Boij  <mboij@kth.se>
11935
11936	* mpn/generic/perfpow.c (logs): Use more conservative table.
11937
119382009-06-15  Torbjorn Granlund  <tege@gmplib.org>
11939
11940	* mpn/pa64/aors_n.asm: New file.
11941	* mpn/pa64/add_n.asm: Remove.
11942	* mpn/pa64/sub_n.asm: Remove.
11943
11944	* mpn/generic/perfpow.c (perfpow): Test exponents up to ub, inclusive.
11945
119462009-06-14  Torbjorn Granlund  <tege@gmplib.org>
11947
11948	* mpn/x86_64/bdiv_q_1.asm: Optimise away a mov insn.
11949	* mpn/x86_64/dive_1.asm: Likewise.
11950
11951	* mpn/generic/perfpow.c (binv_root): Use mpn_bdiv_q_1, not
11952	mpn_divexact_itch for 2-adic division.
11953	(all functions): Micro optimise.
11954
11955	* Makefile.am (libmp_la_SOURCES): Add nextprime.c.
11956
119572009-06-13  Torbjorn Granlund  <tege@gmplib.org>
11958
11959	* gmp-h.in (mpn_perfect_power_p): Declare.
11960	* configure.in (gmp_mpn_functions): Add perfpow.
11961	* mpz/perfpow.c: Now trivial, simply calls mpn_perfect_power_p.
11962
119632009-06-13  Martin Boij  <mboij@kth.se>
11964
11965	* mpn/generic/perfpow.c: New file.
11966	* tests/mpz/t-perfpow.c: Rewrite.
11967
119682009-06-12  Torbjorn Granlund  <tege@gmplib.org>
11969
11970	* mpn/generic/bdiv_qr.c: New file.
11971	* mpn/generic/bdiv_q.c: New file.
11972	* configure.in (gmp_mpn_functions): Add bdiv_qr and bdiv_q.
11973	* gmp-impl.h: Declare new functions.
11974
11975	* nextprime.c: New file.
11976	* gmp-impl.h (gmp_primesieve_t, gmp_init_primesieve, gmp_nextprime):
11977	Declare.
11978	* Makefile.am (libgmp_la_SOURCES): Add nextprime.c.
11979
119802009-06-11  Torbjorn Granlund  <tege@gmplib.org>
11981
11982	* mpn/generic/trialdiv.c: New file.
11983	* gen-trialdivtab.c: New file.
11984	* configure.in (gmp_mpn_functions): Add trialdiv.
11985	* gmp-impl.h (mpn_trialdiv): Declare
11986	* Makefile.am: Add rules for gen-trialdivtab and trialdiv.
11987
11988	* longlong.h (arm count_leading_zeros): Define for armv5.
11989
11990	* gmp-impl.h: Move down toom itch functions to after we've #defined
11991	all THRESHOLDs.
11992
11993	* dumbmp.c (isprime): Replace with slightly less inefficient code.
11994	(mpz_tdiv_r): New function.
11995
119962009-06-11  Niels Möller  <nisse@lysator.liu.se>
11997
11998	Support for mpn_toom32_mul in speed:
11999	* tune/speed.c (routine): Added mpn_toom32_mul.
12000	* tune/speed.h (SPEED_ROUTINE_MPN_TOOM32_MUL): New macro.
12001	* tune/common.c (speed_mpn_toom32_mul): New function.
12002
12003	* gmp-impl.h (mpn_toom32_mul_itch): Count scratch space needed
12004	for the calls to mpn_toom22_mul.
12005	(ABOVE_THRESHOLD): Moved this and related macros so it can be used
12006	by mpn_toom32_mul_itch.
12007	(mpn_toom22_mul_itch): Count scratch space for recursive calls.
12008
120092009-06-11  Torbjorn Granlund  <tege@gmplib.org>
12010
12011	* mpn/x86/k7/mod_1_4.asm: New file, mainly for k7, but perhaps useful
12012	also for k6 and non-sse p6.
12013
120142009-06-10  Torbjorn Granlund  <tege@gmplib.org>
12015
12016	* mpn/x86_64/mod_1_4.asm: Minor size reducing tweaks.
12017
12018	* mpn/x86/mod_1.asm: Remove obsolete file.
12019	* mpn/x86/k7/mmx/mod_1.asm: Likewise.
12020	* mpn/x86/pentium4/sse2/mod_1.asm: Likewise.
12021	* mpn/x86/p6/mod_1.asm: Likewise.
12022	* mpn/x86/pentium/mod_1.asm: Likewise.
12023
120242009-06-08  Niels Möller  <nisse@lysator.liu.se>
12025
12026	* mpn/generic/toom4_sqr.c (mpn_toom4_sqr): Reorganized, to reduce
12027	the need for scratch space, and get rid of TMP_ALLOC. Also use
12028	mpn_toom_eval_dgr3_pm1.
12029
12030	* mpn/generic/toom_interpolate_6pts.c (mpn_toom_interpolate_6pts):
12031	Stricter ASSERTs based on maximum size of polynomial coefficients.
12032	Improved comments on the signedness of intermediate values.
12033
120342009-06-07  Torbjorn Granlund  <tege@gmplib.org>
12035
12036	* mpn/generic/toom2_sqr.c: Make it actually work.
12037
12038	* mpn/generic/toom3_sqr.c: Reduce local scratch space.
12039
120402009-06-05  Torbjorn Granlund  <tege@gmplib.org>
12041
12042	* mpn/generic/mul_fft.c (FFT_TABLE2_SIZE): Default to 200.
12043	(MUL_FFT_TABLE2_SIZE, SQR_FFT_TABLE2_SIZE): Let these decide
12044	FFT_TABLE2_SIZE if they are defined.
12045	(struct nk): Use bit field.
12046
120472009-06-05  Niels Möller  <nisse@lysator.liu.se>
12048
12049	* mpn/generic/toom44_mul.c (mpn_toom44_mult): Use
12050	mpn_toom_eval_dgr3_pm1.
12051
12052	* mpn/generic/toom_eval_dgr3_pm1.c: New file.
12053
12054	* mpn/generic/toom_interpolate_7pts.c (mpn_toom_interpolate_7pts):
12055	Minor cleanup, use mpn_add rather than mpn_add_n + MPN_INCR_U.
12056
12057	* mpn/generic/toom44_mul.c (mpn_toom44_mul): Reorganized, to
12058	reduce the need for scratch space, and get rid of TMP_ALLOC.
12059
120602009-06-05  Torbjorn Granlund  <tege@gmplib.org>
12061
12062	* mpn/generic/toom_interpolate_7pts.c: Fall back mpn_divexact_byN to
12063	mpn_bdiv_q_1_pi1, if the latter is NATIVE.
12064
120652009-06-04  Torbjorn Granlund  <tege@gmplib.org>
12066
12067	* mpn/x86_64/bdiv_q_1.asm: New file.
12068
12069	* configure.in (HAVE_NATIVE): Add recently added functions.
12070	(GMP_MULFUNC_CHOICES): Handle addlsh_n, sublsh_n, rsblsh_n.
12071
12072	* tune/common.c (speed_mpn_bdiv_q_1, speed_mpn_bdiv_q_1_pi1):
12073	New functions.
12074	* tune/speed.c (routine): Add mpn_bdiv_q_1 and mpn_bdiv_q_1_pi1.
12075	* tune/speed.h (SPEED_ROUTINE_MPN_BDIV_Q_1_PI1): New #define.
12076	(SPEED_ROUTINE_MPN_BDIV_Q_1): Mew #define.
12077
12078	* configure.in (gmp_mpn_functions): Add bdiv_q_1.
12079	* mpn/generic/bdiv_q_1.c: New file.
12080	* mpn/asm-defs.m4 (define_mpn): Add mpn_bdiv_q_1 and mpn_bdiv_q_1_pi1.
12081	* gmp-impl.h (mpn_bdiv_q_1, mpn_bdiv_q_1_pi1): Declare.
12082
12083	* mpn/x86_64/lshift.asm: Cleanup.
12084	* mpn/x86_64/rshift.asm: Cleanup.
12085
12086	* mpn/x86_64/addlsh1_n.asm: Removed.
12087	* mpn/x86_64/aorrlsh1_n.asm: Generalised addlsh1_n.asm to handle
12088	addlsh1_n and rsblsh1_n functionality.
12089
12090	* tests/refmpn.c (refmpn_rsblsh1_n): New function.
12091	* tests/devel/try.c: Test mpn_rsblsh1_n.
12092	* tests/tests.h: Declare refmpn_rsblsh1_n.
12093	* tune/common.c (speed_mpn_rsblsh1_n): New function.
12094	* tune/speed.c (routine): Add mpn_rsblsh1_n.
12095	* tune/speed.h (mpn_rsblsh1_n): Declare.
12096
12097	* configure.in (gmp_mpn_functions_optional): Add rsblsh1_n.
12098	(GMP_MULFUNC_CHOICES): Handle rsblsh1_n defined with a mulfunc.
12099	* mpn/asm-defs.m4 (define_mpn): Add rsblsh1_n.
12100	* gmp-impl.h (mpn_rsblsh1_n): Declare.
12101
12102	* mpn/generic/toom32_mul.c: Consistently use TOOM22_MUL_N_REC.
12103
121042009-06-03  Marco Bodrato  <bodrato@mail.dm.unipi.it>
12105
12106	* mpn/generic/toom43_mul.c: New file.
12107	* mpn/generic/toom52_mul.c: New file.
12108	* mpn/generic/toom_interpolate_6pts.c: New file.
12109
121102009-06-03  Torbjorn Granlund  <tege@gmplib.org>
12111
12112	* configure.in (gmp_mpn_functions): Add toom43_mul, toom52_mul, and
12113	toom_interpolate_6pts, but also some previously forgotten functions.
12114	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Likewise.
12115	* gmp-impl.h: Declare new functions. Sort toom function declarations.
12116
12117	* gmp-impl.h: Rename  toom4_* flags enum to toom7_*.  Relevant C files
12118	updated.
12119
12120	* mpn/generic/toom_interpolate_7pts (divexact_2exp): Remove.
12121
121222009-06-02  Torbjorn Granlund  <tege@gmplib.org>
12123
12124	* demos/factorize.c: Add -q command line option.
12125
121262009-06-02  Marco Bodrato  <bodrato@mail.dm.unipi.it>
12127
12128	* mpn/generic/toom_interpolate_7pts.c: Streamline, resulting in speed
12129	improvements.
12130
12131	* mpn/generic/toom_interpolate_5pts.c: Likewise, but also completely
12132	do away with explicit scratch space.
12133	* gmp-impl.h (mpn_toom_interpolate_5pts): Update prototype.
12134
12135	* mpn/generic/mul_n.c (mpn_toom3_sqr_n, mpn_toom3_mul_n):
12136	Update toom_interpolate_5pts call without scratch space parameter.
12137	* mpn/generic/toom3_sqr.c: Likewise.
12138	* mpn/generic/toom42_mul.c: Likewise.
12139	* mpn/generic/toom33_mul.c: Likewise.
12140
12141	* mpn/generic/toom33_mul.c: Reduce local scratch space.
12142	* mpn/generic/toom32_mul.c: Rewrite to not use local scratch space.
12143
121442009-06-02  Torbjorn Granlund  <tege@gmplib.org>
12145
12146	* mpn/generic/toom22_mul.c (TOOM22_MUL_MN_REC): New macro, use it for
12147	oo point.
12148
121492009-06-01  Torbjorn Granlund  <tege@gmplib.org>
12150
12151	* mpn/generic/mul.c: Loop to avoid excessive recursion in toom33 and
12152	toom44 slicing code.
12153
12154	* mpz/remove.c: Correctly handle multiplicity that does not fit an int.
12155
12156	* Makefile.am (dist-hook): Check library version consistency.
12157
12158	* mpn/generic/mul.c: Rewrite.
12159
121602009-05-29  Torbjorn Granlund  <tege@gmplib.org>
12161
12162	* tests/mpz/t-divis.c (check_random): Create huge test operands.
12163
12164	* mpn/generic/toom44_mul.c: Allocate temp space using one TMP_ALLOC
12165	call, not multiple TMP_SALLOC.
12166	* mpn/generic/toom4_sqr.c: Likewise.
12167
12168	* gmp-impl.h (mpn_toom22_mul_itch): Replace totally wrong code.
12169
12170	* mpn/generic/mullow_n.c: Relax overlap requirement implied by ASSERT.
12171
12172	* mpn/generic/divis.c: Rewrite.
12173
12174	* gmp-impl.h (mpn_mu_bdiv_qr): Now returns mp_limb_t.
12175	(mpn_toom2_sqr_itch): Simplify.
12176
12177	* mpn/generic/mu_bdiv_qr.c: Implement properly.
12178
121792009-05-27  Torbjorn Granlund  <tege@gmplib.org>
12180
12181	* mpn/generic/mod_1_1.c: Add proper ASSERT functionality cps function.
12182	* mpn/generic/mod_1_2.c: Likewise.
12183	* mpn/generic/mod_1_3.c: Likewise.
12184	* mpn/generic/mod_1_4.c: Likewise.
12185
12186	* tune: Add speed measuring of toom22, toom33, and toom44.
12187
12188	* mpn/generic/toom22_mul.c: Handle potentially unbalanced coefficient
12189	product better.
12190
121912009-05-26  Torbjorn Granlund  <tege@gmplib.org>
12192
12193	* tests/mpz/t-mul.c (ref_mpn_mul): Use mpn_toom44_mul in FFT range for
12194	better huge-operands performance.
12195
121962009-05-24  Torbjorn Granlund  <tege@gmplib.org>
12197
12198	* acinclude.m4 (GMP_ASM_LSYM_PREFIX): Try "$L" too, before "$".
12199
122002009-05-23  Torbjorn Granlund  <tege@gmplib.org>
12201
12202	* gmp-impl.h (mpn_mod_1s_1p,mpn_mod_1s_2p,mpn_mod_1s_3p,mpn_mod_1s_4p):
12203	Declare using __GMP_ATTRIBUTE_PURE.
12204
12205	* tune/tuneup.c (tune_mod_1): Specify check_size for measuring mod_1_N
12206	functions.
12207	(one): Remove redundant size loop exit condition.
12208
122092009-05-20  Torbjorn Granlund  <tege@gmplib.org>
12210
12211	* mpn/x86/pentium4/sse2/mod_1_4.asm: New file.
12212	* mpn/x86/p6/sse2/mod_1_4.asm: New file (grabbing pentium4 code).
12213
122142009-05-18  Torbjorn Granlund  <tege@gmplib.org>
12215
12216	* gmp-h.in (__GNU_MP_VERSION_MINOR): Bump to 4.
12217	(__GNU_MP_VERSION_PATCHLEVEL): Set to -1.
12218
12219	* mpn/x86_64/mod_1_4.asm: New file.
12220
12221	* mpn/asm-defs.m4: Correct names for mod_1_N functions.
12222	Add defines for corresponding cps functions.
12223
12224	* mpn/generic/mod_1_2.c: Support any sizes > 1.
12225	* mpn/generic/mod_1_3.c: Likewise.
12226	* mpn/generic/mod_1_4.c: Likewise.
12227
122282009-05-12  Torbjorn Granlund  <tege@gmplib.org>
12229
12230	* Version 4.3.1 released.
12231
122322009-05-11  Torbjorn Granlund  <tege@gmplib.org>
12233
12234	* gmp-h.in (__GNU_MP_VERSION_MINOR): Bump.
12235
12236	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*):
12237	Bump version info.
12238
122392009-05-09  Torbjorn Granlund  <tege@gmplib.org>
12240
12241	* tests/mpz: Add MPZ_CHECK_FORMAT to many tests.
12242
122432009-05-07  Torbjorn Granlund  <tege@gmplib.org>
12244
12245	* mpn/x86/pentium4/sse2/mul_basecase.asm: Avoid L(ret), "ret" is
12246	defined in x86-defs.m4.
12247
122482009-05-06  Torbjorn Granlund  <tege@gmplib.org>
12249
12250	* mpn/x86/p6/aors_n.asm: Use L() for labels.
12251	* mpn/x86/pentium4/sse2/addmul_1.asm: Likewise.
12252	* mpn/x86/pentium4/sse2/mul_1.asm: Likewise.
12253	* mpn/x86/pentium4/sse2/mul_basecase.asm: Likewise.
12254	* mpn/x86/pentium4/sse2/sqr_basecase.asm: Likewise.
12255	* mpn/x86_64/lshift.asm: Likewise.
12256	* mpn/x86_64/rshift.asm: Likewise.
12257
12258	* tests/cxx/t-locale.cc (point_string): Declare as extern "C" to
12259	placate compilers that mangle variable names.
12260
122612009-05-04  Torbjorn Granlund  <tege@gmplib.org>
12262
12263	* tests/mpz/t-gcd.c: Generate operands that are multiple of each other.
12264
122652009-05-01  Torbjorn Granlund  <tege@gmplib.org>
12266
12267	* gmp-h.in (__GMP_EXTERN_INLINE): Support for more systems.
12268	(gmp_randinit_set): Add missing __GMP_DECLSPEC.
12269
122702009-04-28  Torbjorn Granlund  <tege@gmplib.org>
12271
12272	* mpn/generic/neg_n.c: New file.
12273	* configure.in (gmp_mpn_functions): Add neg_n.
12274	* mpn/asm-defs.m4 (define_mpn): Add neg_n.
12275	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Add neg_n.c.
12276	* gmp-h.in: Handle mpn_neg_n properly.
12277
12278	* mpn/generic/toom_interpolate_7pts.c (divexact_2exp): Nailify.
12279
12280	* mpn/generic/gcdext.c: Change some MPN_NORMALIZE to
12281	MPN_NORMALIZE_NOT_ZERO.
12282	* mpn/generic/gcdext_lehmer.c: Likewise.
12283	Add a MPN_NORMALIZE_NOT_ZERO.
12284
12285	* mpn/generic/binvert.c: Remove own mpn_neg_n.
12286
12287	* tests/mpz/t-gcd.c: Add some MPZ_CHECK_FORMAT calls.
12288
122892009-04-27  Torbjorn Granlund  <tege@gmplib.org>
12290
12291	* mpn/Makefile.am (TARG_DIST): Add minithres.
12292
12293	* mpn/generic/bdiv_dbm1c.c: Handle nails.
12294
122952009-04-26  Torbjorn Granlund  <tege@gmplib.org>
12296
12297	* config.guess: Recognise more POWER processor types.
12298
122992009-04-25  Torbjorn Granlund  <tege@gmplib.org>
12300
12301	* mpn/x86/pentium4/sse2/popcount.asm: Work around Apple reloc bug.
12302	* mpn/x86/darwin.m4: Define symbol "DARWIN".
12303
123042009-04-19  Torbjorn Granlund  <tege@gmplib.org>
12305
12306	* mpn/generic/powm.c (mpn_redc_n): Use ASSERT_ALWAYS, not abort().
12307	* mpn/generic/powm_sec.c: Likewise.
12308
12309	* mpn/powerpc64/aix.m4 (EXTERN_FUNC): New define.  Add dummy variants
12310	for other m4 files.
12311	* mpn/powerpc64/mode64/divrem_1.asm: Use EXTERN_FUNC.
12312	* mpn/powerpc64/mode64/divrem_1.asm: Likewise.
12313
123142009-04-16  Torbjorn Granlund  <tege@gmplib.org>
12315
12316	* mpn/x86_64/x86_64-defs.m4 (JUMPTABSECT): New define.
12317	* mpn/x86_64/darwin.m4: Likewise.
12318	* mpn/x86_64/sqr_basecase.asm: Rework switch code using JUMPTABSECT.
12319
12320	* tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer):
12321	Remove an unused variable.
12322
12323	* mpn/x86/x86-defs.m4 (LEA): Get SIZE arguments right.
12324
123252009-04-14  Torbjorn Granlund  <tege@gmplib.org>
12326
12327	* Version 4.3.0 released.
12328
12329	* scanf/doscan.c (__gmp_doscan): Pad 3-operand scanf call with dummy
12330	argument.
12331	* scanf/sscanffuns.c (scan): Disable vsscanf variant for now.
12332
123332009-04-13  Torbjorn Granlund  <tege@gmplib.org>
12334
12335	* scanf/sscanffuns.c (scan): Rewrite to use stdarg.
12336
12337	* tests/mpz/t-root.c: Rewrite.  Add unconditional gcc 4.3.2 tests.
12338
123392009-04-09  Torbjorn Granlund  <tege@gmplib.org>
12340
12341	* mpn/generic/powm.c: New file.
12342	* mpn/generic/powlo.c: New file.
12343	* mpn/generic/powm_sec.c: New file.
12344	* configure.in (gmp_mpn_functions): List new functions.
12345
123462009-04-08  Torbjorn Granlund  <tege@gmplib.org>
12347
12348	* mpz/urandomm.c: Amend last fix.
12349
123502009-04-06  Torbjorn Granlund  <tege@gmplib.org>
12351
12352	* configure.in: Support Sun cc for x86_64.
12353
12354	* mpz/urandomm.c: Handle operand overlap.
12355
123562009-03-11  Torbjorn Granlund  <tege@gmplib.org>
12357
12358	* configure.in (powerpc): Brave removing -Wa,-mppc64, in the hope that
12359	GCC now passes the proper options.
12360
123612009-03-09  Torbjorn Granlund  <tege@gmplib.org>
12362
12363	* mpn/x86_64/divrem_1.asm: Add a nop to save a cycle in unnormalised
12364	case.
12365
123662009-03-05  Torbjorn Granlund  <tege@gmplib.org>
12367
12368	* ia64/gmp-mparam.h, arm/gmp-mparam.h, x86/p6/mmx/gmp-mparam.h,
12369	pa32/hppa2_0/gmp-mparam.h sparc32/v9/gmp-mparam.h: Update.
12370
123712009-03-03  Torbjorn Granlund  <tege@gmplib.org>
12372
12373	* mpn/ia64/bdiv_dbm1c.asm: Accept/return carry.
12374
123752009-03-02  Torbjorn Granlund  <tege@gmplib.org>
12376
12377	* configure.in (64-bit sparc/solaris): Pass -xO3, not -O3 to solaris
12378	system compiler.
12379
123802009-03-01  Torbjorn Granlund  <tege@gmplib.org>
12381
12382	* longlong.h (mips, powerpc): Provide assembly-free umul_ppmm for newer
12383	gcc.
12384
123852009-02-04  Torbjorn Granlund  <tege@gmplib.org>
12386
12387	* mpn/generic/redc_2.c: Remove code for testing and timing.  Update
12388	to current FSF header.
12389	* mpn/generic/redc_1.c: Update to current FSF header.
12390
123912009-01-21  Torbjorn Granlund  <tege@gmplib.org>
12392
12393	* mpz/powm.c (redc): Remove.
12394	(mpz_powm): Use mpn_redc_1 instead of redc.
12395
12396	* tests/mpz/t-powm.c: Rewrite reference code.
12397
123982009-01-18  Torbjorn Granlund  <tege@gmplib.org>
12399
12400	* tests/mpz: Increase reps for many tests.
12401
12402	* mpn/generic/rootrem.c (mpn_rootrem_internal): Use MPN_DECR_U instead of
12403	mpn_sub_1 (works around gcc 4.3 bugs and is also faster).
12404
124052009-01-16  Torbjorn Granlund  <tege@gmplib.org>
12406
12407	* tests/tests.h: Declare refmpn_divrem_2.
12408
124092009-01-15  Torbjorn Granlund  <tege@gmplib.org>
12410
12411	* mpz/perfpow.c: Add TMP_FREE before every return statement.
12412
12413	* mpn/generic/rootrem.c (mpn_rootrem_internal): Add a missing TMP_FREE.
12414
12415	* configure.in (gcc_cflags, gcc_64_cflags): Revert from -O3 to -O2,
12416	the change was accidental and cause too much miscompilation.
12417
124182009-01-14  Torbjorn Granlund  <tege@gmplib.org>
12419
12420	* tune/tuneup.c (tune_mod_1): Run MOD_1_x_THRESHOLD tests also when
12421	longlong.h specified UDIV_PREINV_ALWAYS.
12422
12423	* mpn/generic/mod_1.c (mpn_mod_1): Properly check for normalisation
12424	divisor.
12425
124262009-01-13  Torbjorn Granlund  <tege@gmplib.org>
12427
12428	* tune/tuneup.c (tune_mod_1): Tune for MOD_1_1_THRESHOLD,
12429	MOD_1_2_THRESHOLD, and MOD_1_4_THRESHOLD.
12430
12431	* mpn/generic/mod_1.c: Rewrite.
12432	* mpn/generic/mod_1_1.c: New file.
12433	* mpn/generic/mod_1_2.c: New file.
12434	* mpn/generic/mod_1_3.c: New file.
12435	* mpn/generic/mod_1_4.c: New file.
12436	* configure.in (gmp_mpn_functions): Add mod_1_*.
12437	* mpn/asm-defs.m4 (define_mpn): Add mod_1_*.
12438	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Add mod_1_*.c.
12439	* gmp-impl.h: Declare new mpn_mod_1s_* functions and associated
12440	THRESHOLD macros.
12441	(udiv_rnd_preinv): New macro.
12442
124432009-01-12  Torbjorn Granlund  <tege@gmplib.org>
12444
12445	* tune/tuneup.c (tune_gcd_dc,tune_gcdext_dc): Lower step_factor to 0.1.
12446
124472009-01-08  Torbjorn Granlund  <tege@gmplib.org>
12448
12449	* tests/mpz/t-nextprime.c: New test file.
12450	* tests/mpz/Makefile.am (check_PROGRAMS): Add t-nextprime.
12451
12452	From Niels Möller:
12453	* mpz/nextprime.c: Handle large prime gaps by limiting incr.
12454
124552009-01-04  Torbjorn Granlund  <tege@gmplib.org>
12456
12457	* mpz/and.c, mpz/ior.c, mpz/xor.c: Re-read only necessary source
12458	pointers after reallocation.  Misc cleanup.
12459
12460	* gmp-impl.h (MPN_TOOM44_MAX_N): New define, replaces MPN_TOOM3_MAX_N.
12461
12462	* mpn/x86/fat/diveby3.c: New file.
12463
124642008-12-30  Niels Möller  <nisse@lysator.liu.se>
12465
12466	* doc/gmp.texi (Greatest Common Divisor Algorithms): Updated
12467	section on GCD algorithms.
12468
124692008-12-29  Torbjorn Granlund  <tege@gmplib.org>
12470
12471	* doc/gmp.texi (Multiplication Algorithms): Add descriptions of Toom-4
12472	and unbalanced multiplication.
12473	(Radix to Binary): Add warning that text is outdated,
12474	(Contributors): Fix typos.
12475
12476	* mpn/generic/toom*.c: Use coherent MAYBE_ macros for trimming
12477	unreachable recursive functions.
12478	* gmp-impl.h: Update toom itch functions.
12479
12480	* mpn/x86_64/sqr_basecase.asm: Slightly increase stack allocation, to
12481	placate tuneup.
12482
124832008-12-28  Torbjorn Granlund  <tege@gmplib.org>
12484
12485	* mpn/x86_64/pentium4/aors_n.asm: Tune prologue code.
12486
12487	* mpn/x86_64/pentium4/aorslsh1_n.asm: New file.
12488
12489	* mpn/x86_64/darwin.m4: Define symbol "DARWIN".
12490	* mpn/x86_64/invert_limb.asm: Work around darwin quirks.
12491
12492	* mpn/x86_64/sqr_basecase.asm: Further optimize, support Darwin.
12493
12494	* mpn/x86_64/invert_limb.asm: New file.
12495
124962008-12-27  Torbjorn Granlund  <tege@gmplib.org>
12497
12498	* mpn/x86_64/core2/aorslsh1_n.asm: New file.
12499
125002008-12-26  Torbjorn Granlund  <tege@gmplib.org>
12501
12502	* mpz/perfpow.c: Handle negative arguments properly.
12503	* tests/mpz/t-perfpow.c: New file.
12504	* tests/mpz/Makefile.am (check_PROGRAMS): Add t-perfpow.
12505
125062008-12-23  Torbjorn Granlund  <tege@gmplib.org>
12507
12508	* tests/mpz/t-mul.c (dump_abort): Improve error message.
12509
12510	* gcd.c gcd_subdiv_step.c gcdext.c gcdext_subdiv_step.c:
12511	Remove private mpn_zero_p.
12512
12513	* tune/tuneup.c (tune_mul): Tune for MUL_TOOM44_THRESHOLD.
12514	(tune_sqr): Tune for SQR_TOOM4_THRESHOLD.
12515
12516	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add toom44_mul.c and
12517	toom4_sqr.c.
12518
12519	* configure.in (gmp_mpn_functions): Toom function updates.
12520
12521	* Rename mpn/mul_toomMN.c to mpn/toomMN_mul.c.  Function names changed
12522	accordingly.
12523
12524	* mpn/toomMN_mul.c: Add scratch parameter.  Do recursive multiplies
12525	properly.  Misc tuning.  Remove CHECK and TIMING code.
12526
12527	* mpn/toom2_sqr.c, mpn/toom3_sqr.c, mpn/toom4_sqr.c: New files.
12528
12529	* gmp-impl.h (mpn_toomMN_mul_itch): Several new functions.
12530	(mpn_zero_p): New functions.
12531	Add various TOOM4/TOOM44 related parameters.
12532	Update mpn_toomMN_mul prototypes.
12533
12534	* mpn/generic/mul_n.c (mpn_mul_n): Call mpn_toom44_mul.  Use TMP_BALLOC
12535	instead of malloc.
12536	(mpn_sqr_n): Analogous changes.
12537
12538	* mpn/generic/mul.c: Update unbalanced toom code to pass scratch space.
12539
125402008-12-21  Torbjorn Granlund  <tege@gmplib.org>
12541
12542	* mpz/nextprime.c: Add TMP_SDECL/MARK/FREE.
12543
125442008-12-20  Torbjorn Granlund  <tege@gmplib.org>
12545
12546	* mpn/generic/sqrtrem.c (mpn_sqrtrem1): Rewrite, improve interface.
12547	(invsqrttab): New table, remove table approx_tab.
12548	(mpn_sqrtrem2): Optimize, update mpn_sqrtrem1 call.
12549	(mpn_sqrtrem): Update mpn_sqrtrem1 call.
12550
125512008-12-18  Torbjorn Granlund  <tege@gmplib.org>
12552
12553	* mpz/nextprime.c: Run 10 mpz_millerrabin tests (was 5).
12554	Give credit to authors.
12555
12556	* mpn/x86_64/redc_1.asm: Align stack as mandated by ABI.
12557
12558	* mpn/x86_64/divrem_2.asm: Add some comments.
12559
12560	* mpn/x86_64/darwin.m4: New file.
12561	* configure.in: Use x86_64/darwin.m4.
12562
125632008-12-15  Torbjorn Granlund  <tege@gmplib.org>
12564
12565	* doc/projects.html: Remove GCD and division projects, update text on
12566	multiplication.
12567
12568	* doc/tasks.html: Add a caution about that the file is somewhat
12569	outdated.
12570
125712008-12-14  Torbjorn Granlund  <tege@gmplib.org>
12572
12573	* mpn/alpha/ev6/aorsmul_1.asm: New file (same code for mpn_addmul_1,
12574	much improved for mpn_submul_1).
12575	* mpn/alpha/ev6/addmul_1: File removed.
12576	* mpn/alpha/ev6/submul_1: File removed.
12577
125782008-12-09  Torbjorn Granlund  <tege@gmplib.org>
12579
12580	From David Harvey:
12581	* mpn/x86_64/mul_basecase.asm: Further tweaks for code size and speed.
12582
12583	* mpn/powerpc64/mode64/divrem_1.asm: Rewrite.
12584
12585	* mpn/powerpc64/mode64/mul_basecase.asm: New file.
12586
125872008-12-08  Torbjorn Granlund  <tege@gmplib.org>
12588
12589	* mpn/powerpc64/mode64/gmp-mparam.h: New file.
12590
12591	* gmp-impl.h: Additional cleanups.
12592	(mpn_set_str_compute_powtab): New prototype.
12593	(mpn_powm, mpn_powlo): New prototypes.
12594
12595	* mpz/pow_ui.c: Handle some small exponents locally.
12596
125972008-12-07  Torbjorn Granlund  <tege@gmplib.org>
12598
12599	* mpn/generic/set_str.c: Remove prototypes (they are in gmp-impl.h).
12600
12601	* tune/set_strs.c, tune/set_strb.c: Make prototypes effective by moving
12602	the #define mpn_set_str* before including gmp-impl.h.
12603
12604	* All files: Change _PROTO => __GMP_PROTO.
12605
12606	* tune/speed.c (routine): Remove non-working choice mpn_set_str_subquad.
12607	* tune/common.c (speed_mpn_dc_set_str): Remove, it is broken.
12608
12609	* mpn/generic/toom_interpolate_7pts.c (divexact_2exp): Make this static,
12610	and inline it.
12611
12612	* gmp-impl.h: Major cleanup.
12613	(Remove formal parameter names.  Use __GMP_PROTO consistently.  Move
12614	__GMP_PROTO and __MPN use to adjacent lines for declared function.
12615	Fix typos.  Remove code inside #if 0.)
12616
12617	* configure.in (gmp_mpn_functions): Add mul_toom33.  Reformat.
12618
126192008-12-05  Torbjorn Granlund  <tege@gmplib.org>
12620
12621	* mpn/generic/redc_1.c: New file.
12622	* mpn/generic/redc_2.c: New file.
12623
12624	* configure.in (gmp_mpn_functions): List redc_1 and redc_2.
12625	(HAVE_NATIVE): Likewise.
12626
12627	* tune/common.c (speed_mpn_redc_1): Renamed from speed_redc.
12628	* tune/speed.c (routine): Remove "redc", and "mpn_redc_1".
12629	* tune/speed.h (SPEED_ROUTINE_REDC_1): Renamed from SPEED_ROUTINE_REDC.
12630	Updated call.
12631	* tune/tuneup.c (tune_powm): Update redc call.
12632
126332008-12-04  Torbjorn Granlund  <tege@gmplib.org>
12634
12635	* mpn/x86_64/sqr_basecase.asm: Inline a combined diagonal product code
12636	and addlsh1 loop.  Misc cleanup.
12637
126382008-12-02  Torbjorn Granlund  <tege@gmplib.org>
12639
12640	* mpn/x86_64/sqr_basecase.asm: New file.
12641
126422008-11-30  Torbjorn Granlund  <tege@gmplib.org>
12643
12644	* mpn/generic/sqr_basecase.c: Fix typo in mpn_addmul_2s variant.
12645
126462008-11-28  Torbjorn Granlund  <tege@gmplib.org>
12647
12648	* mpn/x86_64/redc_1.asm: Rewrite.
12649
126502008-11-27  Torbjorn Granlund  <tege@gmplib.org>
12651
12652	* tests/refmpn.c (refmpn_redc_1): New function.
12653
126542008-11-25  Torbjorn Granlund  <tege@gmplib.org>
12655
12656	* mpn/x86/k7/aorsmul_1.asm: Actually handle mpn_submul_1.
12657
126582008-11-23  Torbjorn Granlund  <tege@gmplib.org>
12659
12660	* mpn/x86_64/divrem_1.asm: Rewrite.
12661
12662	* alpha/divrem_2.asm: New file.
12663	* powerpc32/divrem_2.asm: New file.
12664	* powerpc64/mode64/divrem_2.asm: New file.
12665	* x86/divrem_2.asm: New file.
12666	* x86_64/divrem_2.asm: New file.
12667	* tests/refmpn.c (refmpn_divrem_2): New function.
12668
126692008-11-22  Torbjorn Granlund  <tege@gmplib.org>
12670
12671	* mpn/x86/k7/mul_1.asm: Rewrite for smaller size and better speed.
12672	* mpn/x86/k7/aorsmul_1.asm: Likewise.
12673
12674	* acinclude.m4 (GMP_VERSION): Include last component even when zero.
12675
126762008-11-21  Torbjorn Granlund  <tege@gmplib.org>
12677
12678	* mpn/x86_64/README: Rewrite.
12679
12680	* tests/devel/try.c (malloc_region, mprotect_maybe): Add casts for
12681	printf type correctness.
12682
12683	* gmp-h.in (__GNU_MP_VERSION_MINOR): Bump.
12684
12685	* Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*):
12686	Bump version info.
12687
126882008-11-20  Torbjorn Granlund  <tege@gmplib.org>
12689
12690	* gmp-impl.h: Rename modlimb_invert to binvert_limb.
12691	* tune/speed.h: Likewise.
12692	* tune/modlinv.c: Likewise.
12693	* tune/common.c: Likewise.
12694	* tests/t-modlinv.c: Likewise.
12695	* tests/t-constants.c: Likewise.
12696	* mpn/sparc64/mode1o.c: Likewise.
12697	* mpn/alpha/dive_1.c: Likewise.
12698	* mpn/sparc64/dive_1.c: Likewise.
12699	* mpn/generic/mode1o.c: Likewise.
12700	* mpn/generic/dive_1.c: Likewise.
12701	* mpn/generic/bdivmod.c: Likewise.
12702	* mpn/alpha/mode1o.asm: Likewise.
12703	* mpn/asm-defs.m4: Likewise.
12704	* mpn/ia64/mode1o.asm: Likewise.
12705	* mpn/powerpc32/README: Likewise.
12706	* mpn/powerpc32/mode1o.asm: Likewise.
12707	* mpn/powerpc64/mode64/dive_1.asm: Likewise.
12708	* mpn/powerpc64/mode64/mode1o.asm: Likewise.
12709	* mpn/x86/dive_1.asm: Likewise.
12710	* mpn/x86/k6/mmx/dive_1.asm: Likewise.
12711	* mpn/x86/k6/mode1o.asm: Likewise.
12712	* mpn/x86/k7/dive_1.asm: Likewise.
12713	* mpn/x86/k7/mode1o.asm: Likewise.
12714	* mpn/x86/p6/dive_1.asm: Likewise.
12715	* mpn/x86/p6/mode1o.asm: Likewise.
12716	* mpn/x86/pentium/dive_1.asm: Likewise.
12717	* mpn/x86/pentium/mode1o.asm: Likewise.
12718	* mpn/x86/pentium4/sse2/dive_1.asm: Likewise.
12719	* mpn/x86/pentium4/sse2/mode1o.asm: Likewise.
12720	* mpn/x86_64/dive_1.asm: Likewise.
12721	* mpn/x86_64/mode1o.asm: Likewise.
12722
12723	* mpn/x86_64/aors_n.asm: Replace with slightly faster, more alignment
12724	neutral loop.
12725
127262008-11-18  Torbjorn Granlund  <tege@gmplib.org>
12727
12728	* configure.in: Remove gcd_finda related declarations.
12729	* gmp-impl.h (mpn_gcd_finda): Remove declaration.
12730	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Remove gcd_finda.
12731	* mpn/asm-defs.m4: Remove define_mpn(gcd_finda).
12732	* mpn/x86/k6/gcd_finda.asm: Remove file.
12733	* tests/devel/try.c (param_init): Remove mpn_gcd_finda.
12734	(choice_array): Remove mpn_gcd_finda.
12735	* tests/mpn/t-instrument.c (check): Remove testing of mpn_gcd_finda.
12736	* tests/refmpn.c (refmpn_gcd_finda): Remove.
12737	* tests/tests.h (refmpn_gcd_finda): Remove declaration.
12738	* tune/common.c (speed_mpn_gcd_finda): Remove.
12739	* tune/gcd_finda_gen.c: Remove file.
12740	* tune/speed.h (speed_mpn_gcd_finda): Remove declaration.
12741	* tune/speed.c (routine): Remove mpn_gcd_finda entry.
12742
12743	* tests/mpz/t-powm.c: Print test number when failing a test.
12744
12745	* mpn/x86_64/redc_1.asm (CALL): Move from here...
12746	* mpn/x86_64/x86_64-defs.m4: ...to here.
12747
12748	* gmp-impl.h (mpn_jacobi_base): Remove parameter names.
12749
127502008-11-11  Torbjorn Granlund  <tege@gmplib.org>
12751
12752	* tests/mpf/t-conv.c: Add some specific tests, supplementing the random
12753	tests.
12754
127552008-11-09  Torbjorn Granlund  <tege@gmplib.org>
12756
12757	* mpf/set_str.c: Default 'base' before letting exp_base inherit it.
12758
12759	* tests/cxx/t-prec.cc: Use the right precision for all float constants.
12760
127612008-11-08  Torbjorn Granlund  <tege@gmplib.org>
12762
12763	* doc/gmp.texi (Float Comparison): Update mpf_eq documentation.
12764
12765	* mpf/eq.c: Compare the right number of bits.
12766
127672008-11-02  Torbjorn Granlund  <tege@gmplib.org>
12768
12769	Undo, it made testing too slow:
12770	* tests/mpz/t-mul.c: Use slower geometric progression for operand
12771	sizes.
12772
12773	* mpn/x86/k7/mod_34lsub1.asm: Use movzb for masking low 8 bits.
12774
127752008-10-31  Niels Möller  <nisse@lysator.liu.se>
12776
12777	* mpn/generic/hgcd2.c (div1): New function (taken from old gcdext
12778	implementation)
12779	(mpn_hgcd2): Use single precision for the second half of the work.
12780
127812008-10-30  Torbjorn Granlund  <tege@gmplib.org>
12782
12783	* mpn/x86/p6/sse2/gmp-mparam.h: New file.
12784
127852008-10-29  Torbjorn Granlund  <tege@gmplib.org>
12786
12787	* configure.in (x86 fat_path): Add "x86/p6/sse2".
12788
12789	* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Recognize sse2 capable p6
12790	(pentiumm, core2).
12791
12792	* mpn/x86/p6/sse2/mul_1.asm: New file.
12793	* mpn/x86/p6/sse2/addmul_1.asm: New file.
12794	* mpn/x86/p6/sse2/submul_1.asm: New file.
12795	* mpn/x86/p6/sse2/mul_basecase.asm: New file.
12796	* mpn/x86/p6/sse2/sqr_basecase.asm: New file.
12797	* mpn/x86/p6/sse2/popcount.asm: New file.
12798
12799	* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Handle "extended" fields for
12800	model and family.
12801
128022008-10-28  Torbjorn Granlund  <tege@gmplib.org>
12803
12804	From Mickael Gastineau:
12805	* gmp-h.in (gmp_urandomm_ui, gmp_urandomb_ui): Add __GMP_DECLSPEC.
12806
128072008-10-27  Torbjorn Granlund  <tege@gmplib.org>
12808
12809	* gmp-h.in (mpn_gcdext_1): Remove bogus __GMP_ATTRIBUTE_PURE.
12810
128112008-10-27  Niels Möller  <nisse@lysator.liu.se>
12812
12813	* tune/common.c (speed_mpn_hgcd): Call mpn_hgcd_matrix_init once
12814	for each call to mpn_hgcd.
12815	(speed_mpn_hgcd_lehmer): Likewise.
12816
128172008-10-26  Torbjorn Granlund  <tege@gmplib.org>
12818
12819	* configure.in: Point to p6/sse2 for pentiumm and core2.
12820
12821	* gmp-impl.h (mpn_add_nc, mpn_sub_nc): Move these macros to after fat
12822	definitions.
12823
12824	* tune/common.c, tune/speed.c, tune/speed.h:
12825	Add speed measurement of mpn_bdiv_dbm1c.
12826
128272008-10-24  Torbjorn Granlund  <tege@gmplib.org>
12828
12829	* mpn/x86_64/gmp-mparam.h (MUL_FFT_TABLE2, SQR_FFT_TABLE2): Extend.
12830
12831	* mpz/nextprime.c: Move declarations to function beginning.
12832
128332008-10-23  Niels Möller  <nisse@lysator.liu.se>
12834
12835	* gmp-impl.h (DECL_gcdext_1): Deleted.
12836
128372008-10-22  Torbjorn Granlund  <tege@gmplib.org>
12838
12839	* mpn/x86_64/atom/aors_n.asm: New file.
12840	* mpn/x86_64/atom/gmp-mparam.h: New file.
12841
128422008-10-21  Torbjorn Granlund  <tege@gmplib.org>
12843
12844	With Neils Möller:
12845	* mpz/nextprime.c: Rewrite.
12846
12847	* tests/devel/try.c (main): Use strtol for 's' and 'S' optargs.
12848
12849	* mpn/x86_64/pentium4/rshift.asm: Misc cleanups.
12850	* mpn/x86_64/pentium4/lshift.asm: Likewise.
12851
12852	* mpn/x86_64/pentium4/aors_n.asm: Use fewer registers.
12853
12854	* configure.in: Set up specific path for x86_64/atom.
12855
128562008-10-21  Niels Möller  <nisse@lysator.liu.se>
12857
12858	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Removed
12859	qstack.c.
12860	* mpn/generic/qstack.c: Deleted obsolete file.
12861
128622008-10-20  Torbjorn Granlund  <tege@gmplib.org>
12863
12864	* mpn/x86_64/core2/aorsmul_1.asm: New file.
12865
128662008-10-19  Torbjorn Granlund  <tege@gmplib.org>
12867
12868	* mpn/x86_64/aors_n.asm: Remove redundant MULFUNC_PROLOGUE.
12869
12870	* gmp-impl.h (popc_limb): Remove redundant checks of GMP_LIMB_BITS
12871	inside several of these macros.
12872
128732008-10-17  Torbjorn Granlund  <tege@gmplib.org>
12874
12875	* tests/mpz/t-mul.c: Use slower geometric progression for operand
12876	sizes.  Do every other tests for same size operands.
12877
128782008-10-15  Torbjorn Granlund  <tege@gmplib.org>
12879
12880	* mpn/x86_64/mul_basecase.asm: Simplify addressing in epilogue.
12881
12882	* mpn/mips64/divrem_1.asm: Remove file, it is n32-only, and uses an old
12883	algorithm.
12884
12885	* config.guess, config.sub, configure.in: Support Intel Atom processor.
12886
128872008-10-10  Torbjorn Granlund  <tege@gmplib.org>
12888
12889	* mpq/mul.c: Fix typo in last change.
12890
128912008-10-09  Torbjorn Granlund  <tege@gmplib.org>
12892
12893	* tests/refmpn.c (refmpn_sb_divrem_mn): Work around a gcc bug.
12894
128952008-10-08  Torbjorn Granlund  <tege@gmplib.org>
12896
12897	* mpq/mul.c: Use TMP_ALLOC.  Cleanup.
12898	* mpq/div.c: Likewise.
12899
12900	* mpn/x86_64/mul_basecase.asm: Use lea directly for loading entry point
12901	addresses.
12902
129032008-10-09  Niels Möller  <nisse@lysator.liu.se>
12904
12905	* mpn/x86/k7/gmp-mparam.h: Updated GCD-related values.
12906
129072008-10-05  Torbjorn Granlund  <tege@gmplib.org>
12908
12909	* mpn/generic/mul_fft.c (mpn_mul_fft_internal): Do store
12910	mpn_fft_norm_modF return value, if (rec).
12911
129122008-10-04  Torbjorn Granlund  <tege@gmplib.org>
12913
12914	* mpn/x86_64/aorsmul_1.asm: Replace with faster code.
12915	* mpn/x86_64/mul_1.asm: Likewise.
12916	* mpn/x86_64/addmul_2.asm: Likewise.
12917	* mpn/x86_64/mul_2.asm: Likewise.
12918	* mpn/x86_64/mul_basecase.asm: Likewise.
12919
129202008-10-02  Torbjorn Granlund  <tege@gmplib.org>
12921
12922	* mpn/minithres/gmp-mparam.h: Update FFT values.
12923
129242008-10-02  Niels Möller  <nisse@lysator.liu.se>
12925
12926	* hgcd.c (mpn_hgcd_matrix_mul): Fixed normalization bug.
12927
129282008-09-24  Torbjorn Granlund  <tege@gmplib.org>
12929
12930	* configure.in: Handle --enable-minithres.
12931	* mpn/minithres/gmp-mparam.h: Update all values.
12932
129332008-09-22  Torbjorn Granlund  <tege@gmplib.org>
12934
12935	* tune/speed.c (routine): New entry for mpn_mul.
12936	* tune/speed.h (SPEED_ROUTINE_MPN_MUL): Renamed from
12937	SPEED_ROUTINE_MPN_MUL_BASECASE.
12938	(speed_mpn_mul): Renamed from speed_mpn_mul_basecase.
12939	(SPEED_ROUTINE_MPN_MUL): Allocate our own memory of xp operand.
12940
12941	* tune/common.c: Corresponding changes.
12942
129432008-09-22  Niels Möller  <nisse@lysator.liu.se>
12944
12945	* mpn/generic/gcdext.c (hgcd_mul_matrix_vector): New function,
12946	replaces addmul2_n. Needs less copying.
12947	(mpn_gcdext): Use hgcd_mul_matrix_vector. Updated for interface
12948	change in mpn_gcdext_subdiv_step
12949
12950	* mpn/generic/hgcd.c (hgcd_matrix_mul_1): Rewritten to use
12951	mpn_hgcd_mul_matrix1_vector.
12952	(hgcd_step): Updated for interface change in
12953	mpn_hgcd_mul_matrix1_inverse_vector.
12954
12955	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Updated for
12956	interface changes in mpn_hgcd_mul_matrix1_vector,
12957	mpn_hgcd_mul_matrix1_inverse_vector and mpn_gcdext_subdiv_step.
12958
12959	* mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer_n): Updated for
12960	interface change in mpn_hgcd_mul_matrix1_inverse_vector.
12961
12962	* mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step): Use
12963	separate scratch arguments for the quotient and for the cofactor
12964	update.
12965
12966	* mpn/generic/hgcd2.c (mpn_hgcd_mul_matrix1_vector): Interface
12967	change. Store first element in rp and leave ap unmodified. No
12968	additional scratch space or copying needed. Callers that require
12969	modification in place still need to copy one of the inputs.
12970	(mpn_hgcd_mul_matrix1_inverse_vector): Likewise.
12971
129722008-09-22  Niels Möller <nisse@lysator.liu.se>  <nisse@king.swox.se>
12973
12974	* mpn/generic/hgcd.c (hgcd_matrix_mul_1): Use mpn_addaddmul_1msb0.
12975	* mpn/generic/hgcd2.c (mpn_hgcd_mul_matrix1_vector): Likewise.
12976
12977	* mpn/generic/gcd.c: Use libspeed for timing measurements.
12978
12979	* gmp-impl.h: Declare mpn_addaddmul_1msb0.
12980	* mpn/asm-defs.m4: Added addaddmul_1msb0.
12981	* mpn/x86_64/addaddmul_1msb0.asm: New file.
12982	* configure.in (gmp_mpn_functions_optional): Added
12983	addaddmul_1msb0.
12984	(HAVE_NATIVE): List addaddmul_1msb0.
12985
129862008-09-21  Torbjorn Granlund  <tege@gmplib.org>
12987
12988	* mpn/generic/get_str.c (GET_STR_DC_THRESHOLD): Remove default.
12989	(GET_STR_PRECOMPUTE_THRESHOLD): Likewise.
12990	Misc code cleanups.
12991
12992	* gmp-impl.h (mpn_dc_set_str_itch): Allocate GMP_LIMB_BITS more limbs.
12993
12994	Revert:
12995	* mpn/generic/set_str.c:
12996	(mpn_dc_set_str): Remove impossible case, replace by an ASSERT.
12997
129982008-09-18  Torbjorn Granlund  <tege@gmplib.org>
12999
13000	* mpn/alpha/ev6/gmp-mparam.h (DIVEXACT_BY3_METHOD): Define.
13001
13002	* mpn/ia64/diveby3.asm: Remove.
13003	* mpn/x86/diveby3.asm: Remove.
13004	* mpn/x86/k6/diveby3.asm: Remove.
13005	* mpn/x86/k7/diveby3.asm: Remove.
13006	* mpn/x86/p6/diveby3.asm: Remove.
13007	* mpn/x86/pentium/diveby3.asm: Remove.
13008	* mpn/x86_64/diveby3.asm: Remove.
13009	* mpn/x86/pentium4/sse2/diveby3.asm: Remove.
13010
13011	* configure.in (HAVE_NATIVE): List divexact_by3c.
13012
13013	* gmp-impl.h (mpn_divexact_by3c): Override gmp-h.in's definition.
13014	(DIVEXACT_BY3_METHOD): Don't default to 0 if
13015	HAVE_NATIVE_mpn_divexact_by3c.
13016
130172008-09-18  Niels Möller  <nisse@lysator.liu.se>
13018
13019	* mpn/generic/gcd.c (main): Added code for tuning of CHOOSE_P.
13020
13021	* mpn/generic/hgcd.c (mpn_hgcd_matrix_mul): Assert that inputs are
13022	normalized.
13023
130242008-09-17  Niels Möller <nisse@lysator.liu.se>  <nisse@king.swox.se>
13025
13026	* mpn/generic/gcdext.c (mpn_gcdext): p = n/5 caused a
13027	slowdown for large inputs. As a compromise, use p = n/2 for the
13028	first iteration, and p = n/3 for the rest. Handle the first
13029	iteration specially, since the initial u0 and u1 are trivial.
13030
13031	* mpn/x86_64/gmp-mparam.h (GCDEXT_DC_THRESHOLD): Reduced threshold
13032	from 409 to 390.
13033
13034	* mpn/generic/gcdext.c (CHOOSE_P): New macro. Use p = n/5.
13035	(mpn_gcdext): Use CHOOSE_P, and generalized the calculation of
13036	scratch space.
13037
13038	* tune/tuneup.c (tune_hgcd): Use default step factor.
13039
13040	* mpn/x86_64/gmp-mparam.h: (GCD_DC_THRESHOLD): Reduced from 493 to
13041	412.
13042
13043	* mpn/generic/gcd.c (CHOOSE_P): New macro, to determine the
13044	split when calling hgcd. Use p = 2n/3, as that seems better than
13045	the more obvious split p = n/2.
13046	(mpn_gcd): Use CHOOSE_P, and generalized the calculation of
13047	scratch space.
13048
130492008-09-16  Torbjorn Granlund  <tege@gmplib.org>
13050
13051	* mpn/generic/toom_interpolate_7pts.c: Use new mpn_divexact_byN
13052	functions.
13053
13054	* gmp-impl.h (mpn_divexact_by3, mpn_divexact_by5, mpn_divexact_by7,
13055	mpn_divexact_by9, mpn_divexact_by11, mpn_divexact_by13,
13056	mpn_divexact_by15): New macros, defined in terms of mpn_bdiv_dbm1.
13057
13058	* configure.in (gmp_mpn_functions): List bdiv_dbm1c.
13059	(HAVE_NATIVE): Likewise.
13060	* mpn/asm-defs.m4: Define bdiv_dbm1c.
13061	* gmp-impl.h (mpn_bdiv_dbm1c): Declare.
13062	(mpn_bdiv_dbm1): New macro.
13063	* mpn/generic/bdiv_dbm1c.c: New file.
13064	* mpn/alpha/bdiv_dbm1c.asm: New file.
13065	* mpn/ia64/bdiv_dbm1c.asm: New file.
13066	* mpn/powerpc32/bdiv_dbm1c.asm: New file.
13067	* mpn/powerpc64/mode64/bdiv_dbm1c.asm: New file.
13068	* mpn/x86/bdiv_dbm1c.asm: New file.
13069	* mpn/x86_64/bdiv_dbm1c.asm: New file.
13070
13071	* mpn/generic/diveby3.c: Add mpn_bdiv_dbm1c based function.
13072	Choose function depending on DIVEXACT_BY3_METHOD.
13073	* gmp-impl.h (DIVEXACT_BY3_METHOD): Provide default.
13074
130752008-09-16  Niels Möller  <nisse@lysator.liu.se>
13076
13077	* mpn/generic/hgcd.c (mpn_hgcd_addmul2_n): Moved function to
13078	gcdext.c, where it is used.
13079	* mpn/generic/gcdext.c (addmul2_n): Moved and renamed, was
13080	mpn_hgcd_addmul2_n. Made static. Deleted input normalization.
13081	Deleted rn argument.
13082	(mpn_gcdext): Updated calls to addmul2_n, and added assertions.
13083
13084	* gmp-impl.h (MPN_HGCD_MATRIX_INIT_ITCH): Increased storage by 4 limbs.
13085	(MPN_HGCD_LEHMER_ITCH): Reduced storage by one limb.
13086	(MPN_GCD_SUBDIV_STEP_ITCH): Likewise.
13087	(MPN_GCD_LEHMER_N_ITCH): Likewise.
13088
13089	* mpn/generic/hgcd.c (mpn_hgcd_matrix_init): Use two extra limbs.
13090	(hgcd_step): Use overlapping arguments to mpn_tdiv_qr.
13091	(mpn_hgcd_matrix_mul): Deleted normalization code. Tighter bounds
13092	for the element size of the product. Needs two extra limbs of
13093	storage for the elements.
13094	(mpn_hgcd_itch): Updated storage calculation.
13095
13096	* mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): Use
13097	overlapping arguments to mpn_tdiv_qr. Use mpn_zero_p.
13098
13099	* mpn/generic/gcd.c (mpn_gcd): Use mpn_zero_p.
13100
131012008-09-15  Niels Möller  <nisse@lysator.liu.se>
13102
13103	* mpn/generic/hgcd.c (mpn_hgcd_matrix_init): Updated for deleted
13104	tp pointer.
13105	(hgcd_matrix_update_q): Likewise.
13106	(mpn_hgcd_matrix_mul): Likewise.
13107	(mpn_hgcd_itch): Updated calculation of scratch space.
13108
13109	* gmp-impl.h (struct hgcd_matrix): Deleted tp pointer.
13110	(MPN_HGCD_MATRIX_INIT_ITCH): Reduced storage.
13111	(mpn_hgcd_step, MPN_HGCD_STEP_ITCH): Deleted declarations.
13112
131132008-09-15  Niels Möller <nisse@lysator.liu.se>  <nisse@king.swox.se>
13114
13115	* mpn/x86_64/gmp-mparam.h (MATRIX22_STRASSEN_THRESHOLD): New
13116	threshold.
13117
13118	* mpn/generic/hgcd.c (mpn_hgcd_matrix_mul): Use mpn_matrix22_mul.
13119	(mpn_hgcd_itch): Updated calculation of scratch space. Use
13120	count_leading_zeros to get the recursion depth.
13121
13122	* mpn/generic/gcd.c (mpn_gcd): Fixed calculation of scratch space,
13123	and use mpn_hgcd_itch.
13124
131252008-09-15  Niels Möller  <nisse@lysator.liu.se>
13126
13127	* tune/tuneup.c (tune_matrix22_mul): New function.
13128	(all): Use it.
13129
13130	* tune/common.c (speed_mpn_matrix22_mul): New function.
13131
13132	* tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Added matrix22_mul.c.
13133
13134	* tests/mpn/t-matrix22.c: Use MATRIX22_STRASSEN_THRESHOLD to
13135	select sizes for tests.
13136
13137	* gmp-impl.h (MATRIX22_STRASSEN_THRESHOLD): New threshold
13138
13139	* configure.in (gmp_mpn_functions): Added matrix22_mul.
13140	* gmp-impl.h: Added declarations for mpn_matrix22_mul and related
13141	functions.
13142
13143	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Added
13144	matrix22_mul.c.
13145	* tests/mpn/Makefile.am (check_PROGRAMS): Added t-matrix22.
13146
13147	* tests/mpn/t-matrix22.c: New file.
13148	* mpn/generic/matrix22_mul.c: New file.
13149
131502008-09-11  Niels Möller  <nisse@king.swox.se>
13151
13152	* tune/tuneup.c: Updated tuning of gcdext.
13153
13154	* mpn/x86_64/gmp-mparam.h (GCDEXT_DC_THRESHOLD): Reduced threshold
13155	from 713 to 409.
13156
131572008-09-11  Niels Möller  <nisse@lysator.liu.se>
13158
13159	* gmp-impl.h: Updated for gcdext changes.
13160	(GCDEXT_DC_THRESHOLD): New constant, renamed from
13161	GCDEXT_SCHOENHAGE_THRESHOLD.
13162
13163	* mpn/generic/gcdext.c (compute_v): Accept non-normalized a and b
13164	as inputs.
13165	(mpn_gcdext): Rewrote and simplified. Now uses the new mpn_hgcd
13166	interface.
13167
13168	* mpn/generic/hgcd.c (mpn_hgcd_addmul2_n): Renamed from addmul2_n
13169	and made non-static. Changed interface to take non-normalized
13170	inputs, and only two size arguments.
13171	(mpn_hgcd_matrix_mul): Simplified using new mpn_hgcd_addmul2_n.
13172
13173	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_itch): Deleted
13174	function.
13175	(mpn_gcdext_lehmer_n): Renamed from mpn_gcd_lehmer. Now takes
13176	inputs of equal size. Moved the code for the division step to a
13177	separate function...
13178	* mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step): New
13179	file, new function.
13180
13181	* configure.in (gmp_mpn_functions): Added gcdext_subdiv_step.
13182
131832008-09-10  Torbjorn Granlund  <tege@gmplib.org>
13184
13185	* tests/devel/anymul_1.c: Include <string.h>.
13186
13187	* gmp-h.in: Unconditionally include <cstdio>.
13188
131892008-09-10  Niels Möller  <nisse@lysator.liu.se>
13190
13191	* tune/common.c: #if:ed out speed_mpn_gcd_binary and
13192	speed_mpn_gcd_accel.
13193	* tune/speed.c (routine): #if:ed out mpn_gcd_binary, mpn_gcd_accel
13194	and find_a.
13195	* tune/Makefile.am (libspeed_la_SOURCES): Removed gcd_bin.c
13196	gcd_accel.c gcd_finda_gen.c.
13197	* tune/tuneup.c: Enable tuning of GCD_DC_THRESHOLD.
13198
13199	* mpn/generic/gcd.c (mpn_gcd): Rewrote and simplified. Now uses
13200	the new mpn_hgcd interface.
13201
13202	* */gmp-mparam.h: Renamed GCD_SCHOENHAGE_THRESHOLD to
13203	GCD_DC_THRESHOLD.
13204
13205	* mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer_n): Renamed (was
13206	mpn_gcd_lehmer). Now takes inputs of equal size.
13207
13208	* mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer): Reintroduced gcd_2,
13209	to get better performance for small inputs.
13210
13211	* mpn/generic/hgcd.c: Don't hardcode small HGCD_THRESHOLD.
13212	* mpn/x86_64/gmp-mparam.h (HGCD_THRESHOLD): Reduced from 145 to
13213	120.
13214	* */gmp-mparam.h: Renamed HGCD_SCHOENHAGE_THRESHOLD to
13215	HGCD_THRESHOLD.
13216
132172008-09-09  Torbjorn Granlund  <tege@gmplib.org>
13218
13219	* doc/gmp.texi: Fix a typo and clarify mpn_gcdext docs.
13220
132212008-09-09  Niels Möller  <nisse@lysator.liu.se>
13222
13223	* tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): Adapted
13224	to new hgcd interface.
13225
13226	* gmp-impl.h (MPN_HGCD_LEHMER_ITCH): New macro.
13227
13228	* hgcd.c (mpn_hgcd_lehmer): Renamed function, from hgcd_base. Made
13229	non-static.
13230
13231	* gcd_lehmer.c (mpn_gcd_lehmer): Use hgcd2 also for n == 2.
13232
13233	* gcdext_lehmer.c (mpn_gcdext_lehmer): Simplified code for
13234	division step. Added proper book-keeping of swaps, which affect
13235	the sign of the returned cofactor.
13236
13237	* tests/mpz/t-gcd.c (one_test): Display co-factor when mpn_gcdext
13238	fails.
13239
13240	* gcd_lehmer.c (mpn_gcd_lehmer): At end of loop, need to handle
13241	the special case n == 1 correctly.
13242
13243	* gcd_subdiv_step.c (mpn_gcd_subdiv_step): Simplified function.
13244	The special cancellation logic is not needed here.
13245
132462008-09-08  Torbjorn Granlund  <tege@gmplib.org>
13247
13248	* mpn/generic/invert.c: Add working but slow code.
13249
13250	* mpn/x86_64/x86_64-defs.m4 (R32, R8): New macros.
13251
13252	* mpn/ia64/submul_1.asm: Move some labels for broader assembler
13253	compatibility.
13254
13255	* gmp-impl.h (mpn_mul_3, mpn_mul_4): Declare.
13256	* tests/tests.h (refmpn_mul_3, refmpn_mul_4): Declare.
13257	* tests/try.c (param_init): Set things up for mpn_mul_3 and mpn_mul_4.
13258	(choice_array): Likewise.
13259	(call): Likewise.
13260	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES):
13261	Add mul_3.c and mul_4.
13262	* mpn/asm-defs.m4: Define mul_3 and mul_4.
13263	* tests/refmpn.c (refmpn_mul_N): New function.
13264	(refmpn_mul_2): Remove old definition, call refmpn_mul_N.
13265	(refmpn_mul_3, refmpn_mul_4): New functions.
13266	* tune/common.c (speed_mpn_mul_3, speed_mpn_mul_4): New functions.
13267	* tune/speed.h (speed_mpn_mul_3, speed_mpn_mul_4): Declare.
13268	* tune/speed.c (routine): New entries for mpn_mul_2 and mpn_mul_3.
13269
13270	* ltmain.sh: Update to libtool 1.5.24.
13271
13272	* mpn/generic/mul_toom22.c: Compute s and t more cleverly.
13273
132742008-09-08  Niels Möller  <nisse@lysator.liu.se>
13275
13276	* tests/mpn/t-hgcd.c: Updated tests. Rewrite of hgcd_ref.
13277
13278	* mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_itch): New function.
13279	(mpn_gcdext_lehmer): Various bugfixes.
13280
13281	* gcdext.c (mpn_gcdext): Allocate scratch space for gcdext_lehmer.
13282
13283	* mpn/generic/gcd_lehmer.c (gcd_2): ASSERT that inputs are odd.
13284	(mpn_gcd_lehmer): Added tp argument, for scratch space. Make both
13285	arguments odd before calling gcd_2.
13286
13287	* mpn/generic/hgcd.c (mpn_hgcd): Allow the trivial case n <= 2,
13288	and return 0 immediately.
13289
13290	* gmp-impl.h (MPN_EXTRACT_NUMB): New macro.
13291
13292	* configure.in (gmp_mpn_functions): Added gcdext_lehmer.
13293
132942008-09-05  Torbjorn Granlund  <tege@gmplib.org>
13295
13296	* mpn/generic/toom_interpolate_7pts.c: Use mpn_divexact_by3c instead of
13297	divexact_odd.
13298
13299	* doc/texinfo.tex: Update to 2007-06-29.13.
13300
13301	* doc/gmp.texi: Update GMP site URL.  Fix some typos.
13302
13303	* demos/pexpr.c (main): Allow bases up to 62.
13304
13305	* gmp-impl.h: Remove formal parameter names from function prototypes.
13306
13307	* config.guess: Recognize recent AMD and Itanium CPUs.
13308	Default X86 CPU recognition to configfsf.guess' value.
13309
13310	* configure.in: Handle core2 separately from athlon64.
13311
133122008-09-05  Niels Möller  <nisse@lysator.liu.se>
13313
13314	* */Makefile.in, configure, aclocal.m4, config.in: Removed files
13315	from repository. They're instead generated by automake and
13316	autoconf before distribution.
13317
133182008-08-25  Torbjorn Granlund  <tege@gmplib.org>
13319
13320	* mpf/set_str.c: Allocate mantissa space based on mantissa size,
13321	not on destination variable space.
13322	* mpf/set_str.c: Accept unary plus before exponent.
13323
133242008-08-06  Torbjorn Granlund  <tege@gmplib.org>
13325
13326	* mpn/generic/mul_toom22.c: Add statistics gathering functionality,
13327	triggered by cpp predef STAT.
13328
13329	From David Harvey:
13330	* mpn/generic/mul_toom22.c: Decrease scratch space usage.
13331
133322008-08-02  Torbjorn Granlund  <tege@gmplib.org>
13333
13334	* tests/misc/t-scanf.c: Avoid negative arguments to _ui functions.
13335	* tests/misc/t-printf.c: Likewise.
13336
13337	* acinclude.m4 (X86_PATTERN): Add geode.
13338
13339	* acinclude.m4 (CL_AS_NOEXECSTACK): Avoid -q flag to grep.
13340
133412008-08-01  Torbjorn Granlund  <tege@gmplib.org>
13342
13343	* acinclude.m4 (CL_AS_NOEXECSTACK): New.
13344	* configure.in: Use CL_AS_NOEXECSTACK.
13345	* mpn/Makeasm.am: Use ASM_FLAGS (defined by CL_AS_NOEXECSTACK).
13346
13347	* gmpxx.h (__GMP_DBL_LIMBS): Use DBL_MAX_EXP instead of
13348	std::numeric_limits<double>::max_exponent for better portability.
13349
133502008-07-29  Torbjorn Granlund  <tege@gmplib.org>
13351
13352	* gmpxx.h (__GMP_DBL_LIMBS): New #define.
13353	(__GMP_ULI_LIMBS): New #define.
13354	(__GMPXX_TMP_UI): New macro.
13355	(__GMPXX_TMP_SI): New macro.
13356	(__GMPXX_TMP_D): New macro.
13357	(struct __gmp_binary_and): Rewrite, using the new macros.
13358	(struct __gmp_binary_ior): Likewise.
13359	(struct __gmp_binary_xor): Likewise.
13360
133612008-07-28  Torbjorn Granlund  <tege@gmplib.org>
13362
13363	* tests/cxx/t-binary.cc: Add some tests for logical operations.
13364
133652008-07-24  Torbjorn Granlund  <tege@gmplib.org>
13366
13367	* gmpxx.h: Use __GMPZ_* instead of __GMPZZ_* for bitwise ops, remove
13368	__GMPZZ_*.
13369	Remove repeated #undefs.
13370	(__gmp_alloc_cstring): Declare freefunc as extern "C".
13371
133722008-07-23  Torbjorn Granlund  <tege@gmplib.org>
13373
13374	* gmp-h.in (__GMP_CC): New define, undocumented for now.
13375	(__GMP_CFLAGS): Likewise.
13376
133772008-07-21  Torbjorn Granlund  <tege@gmplib.org>
13378
13379	* tests/amd64check.c: Fix a printf type clash.
13380
13381	* mpz/realloc.c: Amend last fix.
13382
13383	* gmp-h.in: Include <cstdlib> for C++.
13384	* gmp-h.in: Handle new gcc 4.3 inline semantics defaults.
13385
13386	* configfsf.guess: Update to version of 2008-04-14.
13387	* configfsf.sub: Update to version of 2008-06-16.
13388
13389	* configure.in: Separate core2 and athlon64 flags handling.
13390
133912008-06-19  Torbjorn Granlund  <tege@gmplib.org>
13392
13393	* config.guess: Recognize pentiumm and AMD geode.
13394	* config.sub: Likewise.
13395	* configure.in: Likewise.
13396
133972008-06-02  Torbjorn Granlund  <tege@gmplib.org>
13398
13399	* configure.in: Disallow odd nails sizes.
13400	* configure.in: Inherit default gcc_cflags/gcc_64_cflags everywhere.
13401
134022008-05-23  Torbjorn Granlund  <tege@gmplib.org>
13403
13404	* mpz/init2.c: Rewrite to avoid internal overflow and to detect mpz_t
13405	overflow.
13406	* mpz/realloc2.c: Likewise.
13407	* mpz/realloc.c: Detect mpz_t overflow.
13408
134092008-05-22  Torbjorn Granlund  <tege@gmplib.org>
13410
13411	* configure.in (sparc): Remove -fast, it causes documented
13412	miscompilation.
13413
13414	* config.guess: Properly handle the "extended" variants of x86 cpuid.
13415
134162008-05-09  Torbjorn Granlund  <tege@gmplib.org>
13417
13418	* gmp-impl.h (mpn_mul_fft): Now void.
13419	(udiv_qrnnd_preinv3): Special case for constant (nl).
13420
134212008-05-08  Torbjorn Granlund  <tege@gmplib.org>
13422
13423	* mpn/generic/mul_fft.c: Clean up types in TRACE (printf (...)).
13424	(TRACE): Redefine to allow command line control.
13425	(mpn_mul_fft_internal): Now void, remove return value.
13426	(mpn_mul_fft): Likewise.
13427	(MPN_FFT_TABLE2_SIZE): Up size fro 256 to 512.
13428	(mpn_fft_fft): Call mpn_fft_mul_2exp_modF just once instead of twice,
13429	then add/subtract result.  Get rid of temp allocation as a result.
13430	Remove some redundant CNST_LIMB.
13431	(mpn_fft_fftinv): Analogous changes.
13432	(mpn_fft_sub_modF): Re-enable, now needed by mpn_fft_fft and
13433	mpn_fft_fftinv.
13434
134352008-03-10  Torbjorn Granlund  <tege@gmplib.org>
13436
13437	* tests/mpz/t-mul.c (main): Let GMP_CHECK_FFT mean largest allowed
13438	power-of-2 of test operands.
13439
134402008-02-28  Torbjorn Granlund  <tege@gmplib.org>
13441
13442	* tests/cxx/t-binary.cc (check_mpz): Expect floor rounding for right
13443	shift.
13444
134452008-02-27  Torbjorn Granlund  <tege@gmplib.org>
13446
13447	* mpz/mul_i.h: Check sml's size (not the signed small_mult).
13448
13449	* longlong.h (umul_ppmm) [alpha]: Define using __builtin_alpha_umulh
13450	when possible.
13451
13452	* longlong.h (count_trailing_zeros): Force destination register mode.
13453
13454	* gmpxx.h (struct __gmp_binary_rshift): Use floor rounding, not
13455	truncation.
13456
13457	* gmpxx.h (__gmp_binary_and, __gmp_binary_ior, __gmp_binary_xor):
13458	Add variants with unsigned long int argument.
13459
13460	* config.sub: Recog geode.
13461	* config.guess: Likewise.
13462	* acinclude.m4 (X86_PATTERN): Likewise.
13463
134642008-02-10  Torbjorn Granlund  <tege@gmplib.org>
13465
13466	* mpn/x86/p6/aors_n.asm: Use Zdisp to work around GNU as bug.
13467	* mpn/x86/x86-defs.m4 (Zdisp): Add more instructions.
13468
134692008-02-08  Torbjorn Granlund  <tege@gmplib.org>
13470
13471	* mpn/x86_64/aors_n.asm: New file.
13472	* mpn/x86_64/add_n.asm: Delete.
13473	* mpn/x86_64/sub_n.asm: Delete.
13474
134752008-02-07  Torbjorn Granlund  <tege@gmplib.org>
13476
13477	* mpn/x86/k6/mmx/dive_1.asm: Fix typo in last change.
13478
134792007-12-10  Torbjorn Granlund  <tege@swox.com>
13480
13481	* mpf/set_str.c (mpf_set_str): Write own code for converting the
13482	exponent, avoids strtol base < 36 limitation.
13483
134842007-10-28  Torbjorn Granlund  <tege@swox.com>
13485
13486	* gmp-impl.h (mpn_dc_get_str_itch): New macro.
13487	(mpn_dc_get_str_powtab_alloc): New macro.
13488	(struct powers): Add field "shift".
13489
13490	* mpn/generic/get_str.c: Compute powers without low zero limbs; all
13491	functions modified.  Correct temporary allocation.  Misc cleanups.
13492
13493	* mpn/generic/set_str.c: Compute powers without low zero limbs; all
13494	functions modified.
13495	(mpn_dc_set_str): Remove impossible case, replace by an ASSERT.
13496
134972007-10-26  Torbjorn Granlund  <tege@swox.com>
13498
13499	* mpn/generic/set_str.c: Remove default thresholds, not in gmp-impl.h.
13500	(mpn_dc_set_str): Insert ASSERT_ALWAYS in a presumably dead code arm.
13501
135022007-10-22  Torbjorn Granlund  <tege@swox.com>
13503
13504	* gmp-impl.h (mpn_add_nc): Define as inline function, unless NATIVE.
13505	(mpn_sub_nc): Likewise.
13506
135072007-10-17  Torbjorn Granlund  <tege@swox.com>
13508
13509	* tests/misc/t-printf.c: Fix a printf type clash.
13510	* tests/mpq/t-get_str.c: Likewise.
13511	* tests/mpz/t-import.c: Likewise.
13512
13513	* acinclude.m4: Conditionally disable some tests when compiled by a C++
13514	compiler.
13515
13516	* gmp-impl.h (udiv_qrnnd_preinv3): Remove an unused variable.
13517
13518	* mpn/generic/hgcd.c: Add some WANT_ASSERTs to shut up warnings.
13519
135202007-10-08  Torbjorn Granlund  <tege@swox.com>
13521
13522	* mpn/powerpc64/elf.m4 (LEAL): Define as an alias for LEA.
13523	* mpn/powerpc32/darwin.m4 (LEAL): Likewise.
13524	* mpn/powerpc64/aix.m4: Likewise.
13525
13526	* mpn/powerpc64/vmx/popcount.asm: Use LEAL.
13527
13528	* mpn/powerpc64/darwin.m4 (LEAL): New name for LEA, since it is only
13529	usable for local symbols.
13530	(LEA): Replace with code for external references.
13531
13532	* mpn/powerpc32/vmx/mod_34lsub1.asm: Use LEAL.
13533
135342007-10-07  Torbjorn Granlund  <tege@swox.com>
13535
13536	* mpn/x86/dive_1.asm: Use LEA, remove explicit movl_eip_*.
13537	* mpn/x86/k6/mode1o.asm: Likewise.
13538	* mpn/x86/k6/mmx/dive_1.asm: Likewise.
13539	* mpn/x86/k7/dive_1.asm: Likewise.
13540	* mpn/x86/k7/mode1o.asm: Likewise.
13541	* mpn/x86/p6/dive_1.asm: Likewise.
13542	* mpn/x86/p6/mode1o.asm: Likewise.
13543	* mpn/x86/pentium4/sse2/dive_1.asm: Likewise.
13544	* mpn/x86/pentium4/sse2/mode1o.asm: Likewise.
13545	* mpn/x86/pentium4/sse2/popcount.asm: Likewise.
13546
13547	* mpn/x86/p6/aors_n.asm: Table cycle counts.
13548
13549	* mpn/x86/k7/mod_34lsub1.asm: Fix over-optimistic cycle count claims.
13550
13551	* mpn/x86/x86-defs.m4 (DEF_OBJECT, END_OBJECT): New define's.
13552
13553	* mpn/x86/darwin.m4 (LEA): Put also movl_eip_XX into EPILOGUE_cpu.
13554	Expect target register to have prepended %.
13555
13556	* mpn/x86_64/add_n.asm: Use L() for labels.
13557	* mpn/x86_64/addlsh1_n.asm: Likewise.
13558	* mpn/x86_64/addmul_2.asm: Likewise.
13559	* mpn/x86_64/aorrlsh_n.asm: Likewise.
13560	* mpn/x86_64/aorsmul_1.asm: Likewise.
13561	* mpn/x86_64/com_n.asm: Likewise.
13562	* mpn/x86_64/copyd.asm: Likewise.
13563	* mpn/x86_64/copyi.asm: Likewise.
13564	* mpn/x86_64/diveby3.asm: Likewise.
13565	* mpn/x86_64/logops_n.asm: Likewise.
13566	* mpn/x86_64/lshsub_n.asm: Likewise.
13567	* mpn/x86_64/mul_1.asm: Likewise.
13568	* mpn/x86_64/mul_2.asm: Likewise.
13569	* mpn/x86_64/mul_basecase.asm: Likewise.
13570	* mpn/x86_64/popham.asm: Likewise.
13571	* mpn/x86_64/redc_1.asm: Likewise.
13572	* mpn/x86_64/rsh1add_n.asm: Likewise.
13573	* mpn/x86_64/rsh1sub_n.asm: Likewise.
13574	* mpn/x86_64/rshift.asm: Likewise.
13575	* mpn/x86_64/sub_n.asm: Likewise.
13576	* mpn/x86_64/sublsh1_n.asm Likewise.
13577	* mpn/x86_64/pentium4/aors_n.asm: Likewise.
13578	* mpn/x86_64/pentium4/lshift.asm: Likewise.
13579	* mpn/x86_64/pentium4/rshift.asm: Likewise.
13580
13581	* mpn/x86_64/x86_64-defs.m4: New file, defining LEA, DEF_OBJECT, and
13582	END_OBJECT.
13583
13584	* mpn/generic/mul.c: Put TMP_DECL as last decl.
13585
135862007-10-06  Torbjorn Granlund  <tege@swox.com>
13587
13588	* mpn/x86/pentium4/sse2/popcount.asm: New file.
13589
135902007-09-26  Torbjorn Granlund  <tege@swox.com>
13591
13592	* mpz/get_str.c: Cast a char index to int to shut up compilers.
13593
13594	* mpn/generic/dc_div_qr.c: Pass dummy scratch argument to mpn_invert.
13595	* mpn/generic/dc_divappr_q.c: Likewise.
13596	* mpn/generic/mu_div_qr.c: Likewise.
13597	* mpn/generic/mu_divappr_q.c: Likewise.
13598	* mpn/generic/mu_div_q.c: Likewise.
13599	* mpn/generic/divexact.c: Likewise.
13600
13601	* mpn/generic/invert.c: New file, placeholder for now.
13602
136032007-09-24  Torbjorn Granlund  <tege@swox.com>
13604
13605	* mpn/generic/toom_interpolate_5pts.c: New file, contents from
13606	mpn/generic/mul_n.c
13607	* mpn/generic/mul_n.c (mpn_toom3_interpolate): Function removed.
13608
13609	* mpn/generic/toom_interpolate_7pts.c: New file.
13610
13611	* mpn/x86/k7/mmx/popham.asm: Table cycle counts.
13612
13613	* mpn/x86/k6/README: Update URLs.
13614
13615	* mpn/powerpc32/README: Update URL's, company names.
13616
13617	* mpn/generic/get_d.c: Complete rewrite.
13618
13619	* mpn/generic/mul_toom33.c: New file.
13620
13621	* mpn/generic/mul_toom22.c: Make orthogonal with other toomXY files.
13622	* mpn/generic/mul_toom32.c: Likewise.
13623	* mpn/generic/mul_toom42.c: Likewise.
13624
13625	* mpn/alpha/invert_limb.asm: Update cycle counts.  Fix a comment typo.
13626
13627	* mpf/get_str.c: Include stdlib.h, not stdio.h for NULL.
13628
13629	* doc/gmp.texi: Fix a typo.
13630
13631	* memory.c (__gmp_default_allocate, __gmp_default_reallocate):
13632	Cast size operands in error fprintf's.
13633
13634	* longlong.h (sub_ddmmss) [powerpc 64]: Add more variants for constant
13635	args.
13636
13637	* gmp-impl.h (udiv_qrnnd_preinv3): New define.
13638	* gmp-impl.h (ULONG_PARITY): Exclude masquerading __INTEL_COMPILER from
13639	ia64 asm.
13640
13641	* gmp-h.in (mpn_neg_n): New function.
13642
136432007-09-18  Torbjorn Granlund  <tege@swox.com>
13644
13645	* demos/pexpr.c (main): Add -v option.
13646	(enum op_t): New tag TIMING.
13647	(mpz_eval_expr): Execute TIMING.
13648	(fns): Add TIMING entry.
13649
13650	* gmp-impl.h: Add decls and THRESHOLDs for new toom multiplication
13651	functions and division functions.
13652
136532007-09-10  Torbjorn Granlund  <tege@swox.com>
13654
13655	* mpn/powerpc32/addlsh1_n.asm: Use L() for labels.
13656	* mpn/powerpc32/sublsh1_n.asm: Likewise.
13657
136582007-09-09  Torbjorn Granlund  <tege@swox.com>
13659
13660	* mpn/x86/x86-defs.m4 (LEA): New define.
13661	* mpn/x86/darwin.m4: New file, for now just defining LEA.
13662	* configure.in: Pick up x86/darwin.m4.
13663	* mpn/x86/*: Use LEA for PIC references.
13664
13665	* configure.in: For X86/32, treat core2 like pentium3.
13666
136672007-09-06  Torbjorn Granlund  <tege@swox.com>
13668
13669	* tests/amd64check.c (calling_conventions_values): Put constants,
13670	dynamic values in this array (was in scalars).
13671	(calling_conventions_check): Corresponding changes.
13672	* tests/amd64call.asm: Rewrite to be PIC, smaller, using amd64check.c's
13673	array.
13674
136752007-09-04  Torbjorn Granlund  <tege@swox.com>
13676
13677	* mpn/x86/pentium4/sse2/mul_basecase.asm: Misc cleanups.
13678	* mpn/x86/pentium4/sse2/sqr_basecase.asm: Likewise.
13679
13680	* mpn/x86_64/mod_34lsub1.asm: Optimize loop, reduce code size.
13681
13682	* tests/amd64call.asm: Remove bogus no-op moves.
13683
136842007-09-03  Torbjorn Granlund  <tege@swox.com>
13685
13686	From Richard Guenther:
13687	* gmp-h.in (__GMP_EXTERN_INLINE): Declare conditionally on
13688	__GNUC_STDC_INLINE__.
13689
13690	* tests/cxx/t-locale.cc: #include <cstdlib>, for abort.
13691
13692	* mpn/x86_64/core2/popcount.asm: New file.
13693	* mpn/x86_64/pentium4/popcount.asm: New file.
13694
13695	* mpn/x86_64/addmul_2.asm: New file.
13696	* mpn/x86_64/mul_2.asm: New file.
13697
13698	* mpn/x86_64/aorsmul_1.asm: Use 32-bit mov for zeroing registers
13699	(saves space).
13700
137012007-09-01  Torbjorn Granlund  <tege@swox.com>
13702
13703	* configure.in: Handle athlon64, core2, and pentium4 separately for
13704	64-bit ABI.
13705
13706	* config.sub: Recog athlon64, core2, and opteron.
13707
13708	* config.guess: Do two x86 variants, for 32-bit ABI and 64-bit ABI.
13709	Return "athlon64" and "core2", not x86_64.
13710
137112007-08-31  Torbjorn Granlund  <tege@swox.com>
13712
13713	From Patrick Pelissier:
13714	* gmp-h.in: Don't refer to FILE from C++ unless we've seen FILE.
13715
137162007-08-30  Torbjorn Granlund  <tege@swox.com>
13717
13718	* demos/isprime.c: Include string.h for strcmp.
13719
13720	* demos/factorize.c (main): Declare to int.
13721
137222007-06-22  Torbjorn Granlund  <tege@swox.com>
13723
13724	* mpn/x86_64/pentium4/lshift.asm: Minor tuning.
13725	* mpn/x86_64/pentium4/rshift.asm: Likewise.
13726
137272007-05-30  Torbjorn Granlund  <tege@swox.com>
13728
13729	* mpn/powerpc64/mode64/aors_n.asm: Add _nc entry points.
13730
137312007-05-22  Torbjorn Granlund  <tege@swox.com>
13732
13733	* tests/memory.c: Cast calls to new mem* calls to avoid unaligned ops.
13734
137352007-05-16  Torbjorn Granlund  <tege@swox.com>
13736
13737	* tests/mpz/convert.c: Tweak operand sizes for best coverage.
13738
13739	* tests/memory.c: Add red zones around allocations.
13740
137412007-05-15  Torbjorn Granlund  <tege@swox.com>
13742
13743	* mpn/ia64/mul_1.asm: Make mul_1c entry point actually work.
13744
13745	* mpn/generic/set_str.c (mpn_dc_set_str): Avoid calling mpn_add_n when
13746	ln == 0.
13747
13748	* tests/mpz/convert.c (string_urandomb): New function.
13749	(main): Use it by enabling ifdef'ed out code.
13750
137512007-04-30  Torbjorn Granlund  <tege@swox.com>
13752
13753	* mpn/x86_64/mul_basecase.asm: Complete rewrite.
13754
13755	* mpn/x86_64/copyi.asm: Use short shift-by-one form.  Misc cleanups.
13756	* mpn/x86_64/copyi.asm: Likewise.
13757	* mpn/x86_64/popham.asm: Likewise.
13758
13759	* mpn/x86_64/aorsmul_1.asm: Cleanup formatting.
13760
137612007-04-25  Torbjorn Granlund  <tege@swox.com>
13762
13763	* mpz/divexact.c: Handle undefined case of |N| < |D| to avoid segfaults.
13764
137652007-02-24  Torbjorn Granlund  <tege@swox.com>
13766
13767	* doc/gmp.texi (Toom 3-Way Multiplication): Fix typo.
13768	(mpz_scan0, mpz_scan1): Fix typos.
13769	(Float Internals): Rewrite paragraph about struct types.
13770
137712007-02-12  Torbjorn Granlund  <tege@swox.com>
13772
13773	* mpn/x86/pentium4/sse2/sqr_basecase.asm: Complete rewrite (except
13774	diagonal code).
13775
137762007-02-05  Torbjorn Granlund  <tege@swox.com>
13777
13778	* mpn/generic/mul_fft.c (mpn_fft_fft): New name for mpn_fft_fft_sqr,
13779	old mpn_fft_fft removed.
13780	(mpn_mul_fft_internal): Call mpn_fft_fft separately for each operand.
13781	(mpn_fft_add_modF): Rewrite to avoid random branches.
13782	(mpn_fft_sub_modF): Likewise.
13783
13784	* mpn/x86/pentium4/sse2/addmul_1.asm: Complete rewrite.
13785	* mpn/x86/pentium4/sse2/mul_1.asm: Complete rewrite.
13786	* mpn/x86/pentium4/sse2/mul_basecase.asm: Complete rewrite, based on
13787	new addmul and mul code.
13788
137892007-01-31  Torbjorn Granlund  <tege@swox.com>
13790
13791	* mpn/generic/get_str.c (mpn_sb_get_str): Get loop count for frac
13792	development right.
13793
13794	* mpn/powerpc32/vmx/mod_34lsub1.asm: New file.
13795
13796	* mpn/powerpc32/aors_n.asm: New file, complete rewrite.
13797	* mpn/powerpc32/add_n.asm: Remove.
13798	* mpn/powerpc32/sub_n.asm: Remove.
13799
138002007-01-25  Torbjorn Granlund  <tege@swox.com>
13801
13802	* mpn/x86_64/core2/aors_n.asm: Add _nc entry points, minor cleanups.
13803
13804	* mpn/x86_64/core2/lshift.asm: Rewrite.
13805	* mpn/x86_64/core2/rshift.asm: Rewrite.
13806
13807	* mpn/x86_64/pentium4/lshift.asm: Swap some loop insns for a small
13808	speedup.
13809	* mpn/x86_64/pentium4/rshift.asm: New file, based on lshift.asm.
13810
13811	* mpn/x86_64/pentium4/gmp-mparam.h: New file.
13812
13813	* mpn/x86_64/pentium4/aors_n.asm: Complete rewrite of add/subtract
13814	code.
13815	* mpn/x86_64/pentium4/add_n.asm: Remove.
13816	* mpn/x86_64/pentium4/sub_n.asm: Remove.
13817
138182007-01-20  Torbjorn Granlund  <tege@swox.com>
13819
13820	* mpn/x86_64/lshift.asm: Add special case for cnt=1.
13821
138222007-01-19  Torbjorn Granlund  <tege@swox.com>
13823
13824	* mpn/x86_64/aorsmul_1.asm: New file, written from scratch, finally at
13825	3.0 c/l on K8 (addmul_1 was 3.3; submul_1 was 3.5).
13826	* mpn/x86_64/addmul_1.asm: Remove.
13827	* mpn/x86_64/submul_1.asm: Remove.
13828
138292006-12-29  Torbjorn Granlund  <tege@swox.com>
13830
13831	* randmt.c (__gmp_randclear_mt): Initialize ALLOC field, like in
13832	__gmp_randinit_mt_noseed.
13833	(__gmp_randclear_mt, __gmp_randinit_mt_noseed): Make similar functions
13834	look similar.
13835	(__gmp_randclear_mt): Pass actually allocated size.
13836
13837	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Add mul_toom22.c,
13838	mul_toom32.c, mul_toom42.c.
13839
13840	* configure.in: Recognize athlon64 and core2 as alternatives to x86_64.
13841	Provide special settings for core2.
13842
13843	* configure.in (gmp_mpn_functions): Add mul_toom22, mul_toom32,
13844	mul_toom42.
13845
13846	* mpn/generic/mul_toom22.c: New file.
13847	* mpn/generic/mul.c: Use mpn_mul_toom22.  Trim cutoff points between
13848	the mpn_mul_toomN2 functions.  Handle balanced operands at function
13849	entry.
13850
138512006-12-29  Marco Bodrato  <bodrato@mail.dm.unipi.it>
13852
13853	* mpn/generic/mul_n.c: Rewrite interpolation code.
13854
138552006-12-28  Torbjorn Granlund  <tege@swox.com>
13856
13857	* mpn/generic/mul_toom32.c: New file.
13858	* mpn/generic/mul_toom42.c: New file.
13859	* mpn/generic/mul.c: Use mpn_mul_toom32 and mpn_mul_toom42 for
13860	unbalanced operands.
13861
138622006-12-17  Torbjorn Granlund  <tege@swox.com>
13863
13864	* mpn/x86_64/aorrlsh_n.asm: New file.
13865	* mpn/x86_64/lshsub_n.asm: New file.
13866
13867	* mpn/x86_64/core2/aors_n.asm: New file.
13868	* mpn/x86_64/core2/lshift.asm: New file.
13869	* mpn/x86_64/core2/rshift.asm: New file.
13870
13871	* mpn/x86/p6/aors_n.asm: Replace K7 grabbing code with P6 specific
13872	code.
13873
13874	* mpn/x86/p6/lshsub_n.asm: New file.
13875
138762006-11-23  Torbjorn Granlund  <tege@swox.com>
13877
13878	* tune/speed.h (SPEED_ROUTINE_MPN_MUL_BASECASE): Allocate space for xp
13879	locally, s->xp might be insufficient.
13880
138812006-11-22  Torbjorn Granlund  <tege@swox.com>
13882
13883	* randmt.c (__gmp_randinit_mt_noseed): Initialize ALLOC field of result
13884	param.
13885
138862006-11-06  Torbjorn Granlund  <tege@swox.com>
13887
13888	* tune/set_strp.c: New file.
13889
138902006-11-04  Torbjorn Granlund  <tege@swox.com>
13891
13892	* extract-dbl.c: Rewrite to handle nails better, and for general
13893	optimization.
13894
13895	* mpz/bin_uiui.c: Simplify.
13896
13897	* longlong.h (umul_ppmm) [mmix]: New.
13898
13899	* tune/tuneup.c, tune/common.c, tune/speed.c, tune/speed.h,
13900	tune/set_strb.c, tune/set_strs.c: Add tuning and speed measurements
13901	of separate SET_STR_DC_THRESHOLD and SET_STR_PRECOMPUTE_THRESHOLD.
13902	Add tuning and speed measurement of mpn_addsub_n.
13903
139042006-10-31  Torbjorn Granlund  <tege@swox.com>
13905
13906	* gmpxx.h: Remove ternary stuff, it is hardly an optimization and it
13907	writes to destination before reading all source operands.
13908
139092006-10-25  Torbjorn Granlund  <tege@swox.com>
13910
13911	* mpn/generic/set_str.c: Complete rewrite.
13912	* mpn/generic/get_str.c: Likewise.
13913
13914	* gmp-impl.h (struct powers, powers_t): New types.
13915	Restructure GET_STR_* and SET_STR_* thresholds.
13916
139172006-09-21  Torbjorn Granlund  <tege@swox.com>
13918
13919	* mpn/generic/rootrem.c: Remove some redundant casts.
13920
139212006-07-12  Torbjorn Granlund  <tege@swox.com>
13922
13923	* mpn/alpha/ev6/nails/addmul_2.asm: Make it run at claimed speed.
13924	* mpn/alpha/ev6/nails/addmul_4.asm: Likewise.
13925
13926	* mpf/get_str.c: Avoid copying result when not needed.  Misc cleanups.
13927
13928	* tests/amd64call.asm: Use jmp instead of jmpq to placate Solaris.
13929
139302006-06-30  Torbjorn Granlund  <tege@swox.com>
13931
13932	* configure.in (powerpc-*): Remove repeated path component.
13933
139342006-06-15  Torbjorn Granlund  <tege@swox.com>
13935
13936	* configure.in: (ia64-*-linux*): Don't use -O3.
13937
139382006-06-14  Torbjorn Granlund  <tege@swox.com>
13939
13940	* mpq/get_str.c: Fix upper base limit boundary in an ASSERT.
13941
13942	* tests/refmpn.c (refmpn_sb_divrem_mn): Use ASSERT_CARRY for add-back.
13943
139442006-05-31  Torbjorn Granlund  <tege@swox.com>
13945
13946	* tests/mpz/t-set_d.c (check_data): Add more data points.
13947
13948	* mpz/set_d.c: Handle negative return values from __gmp_extract_double.
13949
139502006-05-17  Torbjorn Granlund  <tege@swox.com>
13951
13952	* configure.in: Clear out gcc_cflags_cpu and gcc_cflags_arch for a fat
13953	build.
13954
139552006-05-16  Torbjorn Granlund  <tege@swox.com>
13956
13957	* demos/primes.c (find_primes): Increase mpz_probab_prime_p cnt to 10.
13958
13959	* mpn/generic/addsub_n.c: Fix criteria for when to call _nc functions.
13960
139612006-05-12  Torbjorn Granlund  <tege@swox.com>
13962
13963	* config.guess: Recognize more ppc processor types.
13964
139652006-05-11  Torbjorn Granlund  <tege@swox.com>
13966
13967	* tune/speed.c (usage): Update URL for gnuplot and quickplot.
13968
139692006-05-10  Torbjorn Granlund  <tege@swox.com>
13970
13971	* configure.in (powerpc-*-*): Pass -maltivec to assembler for
13972	appropriate CPUs.
13973
139742006-05-08  Torbjorn Granlund  <tege@swox.com>
13975
13976	* mpn/powerpc32/aix.m4 (LEA): Remove [RW] attribute.
13977
139782006-05-03  Torbjorn Granlund  <tege@swox.com>
13979
13980	* mpn/powerpc64/vmx/popcount.asm: Conditionally zero extend n.
13981
139822006-04-27  Torbjorn Granlund  <tege@swox.com>
13983
13984	* mpz/divexact.c: Call mpz_tdiv_q for large operands.
13985
13986	* configure.in (powerpc-*-darwin): Remove -fast, it affects PIC.
13987
139882006-04-26  Torbjorn Granlund  <tege@swox.com>
13989
13990	* config.guess: Try to recognize Ultrasparc T1 (as ultrasparct1).
13991	* config.sub: Handle ultrasparct1.
13992
139932006-04-25  Torbjorn Granlund  <tege@swox.com>
13994
13995	* mpn/sparc64/gmp-mparam.h: Retune, without separation of GNUC and
13996	non-GNUC data.
13997
139982006-04-20  Torbjorn Granlund  <tege@swox.com>
13999
14000	* tests/mpz/convert.c: Increase operands range.
14001
140022006-04-19  Torbjorn Granlund  <tege@swox.com>
14003
14004	* configure.in: Support powerpc eABI.
14005	* mpn/powerpc32/eabi.m4: New file.
14006
14007	* configure.in: Support powerpc *bsd.
14008	* mpn/powerpc64/elf.m4: New name for mpn/powerpc64/linux64.m4.
14009	* mpn/powerpc32/elf.m4: New name for mpn/powerpc32/linux.m4.
14010
14011	* mpn/powerpc64/linux64.m4 (ASM_END): Quote TOC_ENTRY.
14012
140132006-04-18  Torbjorn Granlund  <tege@swox.com>
14014
14015	* configure.in (gmp_mpn_functions_optional): Add lshiftc.
14016	(HAVE_NATIVE): Add lshiftc.
14017
14018	* mpn/powerpc64/mode64/invert_limb.asm: Use LEA, not LDSYM.
14019	* mpn/powerpc64/mode64/mode1o.asm: Likewise.
14020	* mpn/powerpc64/mode64/dive_1.asm: Likewise.
14021
14022	* mpn/powerpc64/linux64.m4 (TOC_ENTRY): Define to empty.
14023	* mpn/powerpc64/aix.m4 (TOC_ENTRY): Likewise.
14024	* mpn/powerpc32/aix.m4 (TOC_ENTRY): Likewise.
14025
14026	* mpn/powerpc32/aix.m4 (EXTERN): New, copied form powerpc64/aix.m4.
14027	* mpn/powerpc32/mode1o.asm: Use EXTERN.
14028	* mpn/powerpc32/linux.m4 (EXTERN): Provide dummy definition.
14029	* mpn/powerpc32/darwin.m4 (EXTERN): Likewise.
14030
140312006-04-13  Torbjorn Granlund  <tege@swox.com>
14032
14033	* mpn/generic/mul_fft.c: Use new thresholds mechanism if MUL_FFT_TABLE2
14034	is defined.
14035	(mpn_lshiftc): New name for mpn_lshift_com (for consistency with some
14036	stuff already in 4.1.4.
14037	(mpn_fft_mul_2exp_modF): Reorganize initial operand reductions to avoid
14038	divisions.
14039
14040	* tests/devel/try.c (choice_array): Add mpn_addsub_n[c].
14041
140422006-04-11  Torbjorn Granlund  <tege@swox.com>
14043
14044	* aclocal.m4: Regenerate with patched libtool.
14045
14046	* mpn/asm-defs.m4 (ASM_END): Provide (empty) default.
14047
140482006-04-08  Torbjorn Granlund  <tege@swox.com>
14049
14050	* configure.in (gmp_mpn_functions_optional): Add addsub.
14051
14052	* gmpxx.h: Remove missed MPFR references.
14053
14054	* gmp-impl.h (LIMBS_PER_DOUBLE): Adjust formula to not be pessimistic.
14055
14056	* gmp-impl.h (TMP_*, WANT_TMP_DEBUG): Don't expect marker argument;
14057	define TMP_SALLOC and TMP_BALLOC.
14058
14059	* mpn/minithres/gmp-mparam.h: New file.
14060
14061	* tests/mpz/t-io_raw.c: Fix printf type/arg mismatches.
14062	* tests/mpz/t-export.c: Likewise.
14063	* tests/mpz/io.c: Likewise.
14064	* tests/t-constants.c: Likewise.
14065
14066	* mpn/ia64/popcount.asm: Append "cond.dptk" to conditional branches to
14067	placate icc.
14068	* mpn/ia64/hamdist.asm: Likewise.
14069	* mpn/ia64/lorrshift.asm: Likewise.
14070	* mpn/ia64/dive_1.asm: Likewise.
14071
140722006-04-05  Torbjorn Granlund  <tege@swox.com>
14073
14074	* tal-notreent.c (__gmp_tmp_mark): Add "struct" tag for tmp_marker.
14075	(__gmp_tmp_free): Likewise.
14076
14077	* mpn/generic/mul_fft.c: Optimize many scalar divisions and mod
14078	operations into masks and shifts.
14079	(mpn_fft_mul_modF_K): Fix a spurious ASSERT_NOCARRY.
14080
140812006-03-26  Torbjorn Granlund  <tege@swox.com>
14082
14083	* Version 4.2 released.
14084
14085	* mpn/powerpc64/aix.m4 (LEA): Renamed from LDSYM.
14086	* mpn/powerpc64/darwin.m4: Likewise.
14087	* mpn/powerpc64/linux64.m4: Likewise.
14088	* mpn/powerpc64/vmx/popcount.asm: Use LEA, not LDSYM.
14089
140902006-03-23  Torbjorn Granlund  <tege@swox.com>
14091
14092	* gmp-impl.h: (class gmp_allocated_string): Prefix strlen with std::.
14093
14094	* gmpxx.h (__GMP_DEFINE_TERNARY_EXPR2): Remove for now.
14095	(struct __gmp_ternary_addmul2): Likewise.
14096	(struct __gmp_ternary_submul2): Likewise.
14097
14098	* gmpxx.h: #include <cstring>.
14099	(struct __gmp_alloc_cstring): Prefix strlen with std::.
14100
14101	* mpn/x86/pentium/com_n.asm: Add TEXT and ALIGN.
14102	* mpn/x86/pentium/copyi.asm: Likewise.
14103	* mpn/x86/pentium/copyd.asm: Likewise.
14104
141052006-03-22  Torbjorn Granlund  <tege@swox.com>
14106
14107	* gmp-h.in: Add a "using std::FILE" for C++.
14108	(_GMP_H_HAVE_FILE): Check also _ISO_STDIO_ISO_H.
14109
14110	* gmpxx.h: Remove mpfr code.
14111	* tests/cxx: Likewise.
14112
14113	* gmp-impl.h (FORCE_DOUBLE): Rename a tempvar to avoid a clash with
14114	GNU/Linux public include file.
14115
14116	* configure.in (powerpc64, darwin): New optional, gcc_cflags_subtype.
14117	Grab powerpc32/darwin.m4 for ABI=mode32.
14118
14119	* configure.in: Use host_cpu whenever just the cpu type is needed.
14120
141212006-03-08  Torbjorn Granlund  <tege@swox.com>
14122
14123	* mpz/get_si.c: Fix a typo.
14124
14125	* tests/mpq/t-get_d.c (check_random): Improve random generation for
14126	nails.
14127
141282006-02-28  Torbjorn Granlund  <tege@swox.com>
14129
14130	* tests/mpq/t-get_d.c (check_random): New function.
14131	(main): Call check_random.
14132
14133	* mpq/set_d.c: Make choices based on LIMBS_PER_DOUBLE, not
14134	BITS_PER_MP_LIMB.  Make it work for LIMBS_PER_DOUBLE == 4.
14135	Use MPZ_REALLOC.
14136
14137	* mpz/set_d.c: Make it work for LIMBS_PER_DOUBLE == 4.
14138
14139	* extract-dbl.c: Make it work for LIMBS_PER_DOUBLE > 3.
14140
141412006-02-27  Torbjorn Granlund  <tege@swox.com>
14142
14143	* mpz/cmp_d.c: Declare `i'.
14144	* mpz/cmpabs_d.c: Likewise.
14145
141462006-02-23  Torbjorn Granlund  <tege@swox.com>
14147
14148	* mpn/powerpc32/vmx/copyd.asm: Set right VRSAVE bits.
14149	* mpn/powerpc32/vmx/copyi.asm: Likewise.
14150
141512006-02-22  Torbjorn Granlund  <tege@swox.com>
14152
14153	* mpn/powerpc32/vmx/logops_n.asm: New file.
14154
14155	* mpn/powerpc32/diveby3.asm: Rewrite.
14156
141572006-02-21  Torbjorn Granlund  <tege@swox.com>
14158
14159	* mpn/powerpc32/vmx/copyi.asm: New file.
14160	* mpn/powerpc32/vmx/copyd.asm: New file.
14161
141622006-02-17  Torbjorn Granlund  <tege@swox.com>
14163
14164	* mpn/alpha/ev6/nails/aors_n.asm (CYSH): Import proper setting from
14165	deleted mpn_sub_n.
14166
141672006-02-16  Torbjorn Granlund  <tege@swox.com>
14168
14169	* mpn/alpha/ev6/addmul_1.asm: Correct slotting comments.
14170
141712006-02-15  Torbjorn Granlund  <tege@swox.com>
14172
14173	* tests/devel/anymul_1.c: Copy error reporting code from addmul_N.c.
14174
14175	* tests/devel/addmul_N.c: New file.
14176	* tests/devel/mul_N.c: New file.
14177
14178	* mpn/alpha/default.m4 (PROLOGUE_cpu): Align functions at 16-byte
14179	boundary.
14180
14181	* mpn/alpha/ev6/nails/aors_n.asm: New file.
14182	* mpn/alpha/ev6/nails/add_n.asm: Remove.
14183	* mpn/alpha/ev6/nails/sub_n.asm: Remove.
14184
14185	* mpn/alpha/ev6/nails/addmul_1.asm: Rewrite.
14186	* mpn/alpha/ev6/nails/submul_1.asm: Likewise.
14187	* mpn/alpha/ev6/nails/mul_1.asm: Likewise.
14188
14189	* mpn/alpha/ev6/nails/addmul_2.asm: Use L() for labels.
14190	* mpn/alpha/ev6/nails/addmul_3.asm: Use L() for labels.
14191	* mpn/alpha/ev6/nails/addmul_4.asm: Use L() for labels.
14192
141932006-02-13  Torbjorn Granlund  <tege@swox.com>
14194
14195	* mpn/powerpc32/diveby3.asm: Trivially reorder loop insns to save
14196	1 c/l.
14197
14198	* mpn/x86_64/dive_1.asm: Use movabsq to support large model non-PIC.
14199
14200	* mpn/x86_64/rsh1add_n.asm: Replace high register with rbx.
14201	* mpn/x86_64/rsh1sub_n.asm: Likewise.
14202
142032006-02-10  Torbjorn Granlund  <tege@swox.com>
14204
14205	* mpn/powerpc64/sqr_diagonal.asm: Software pipeline.
14206
14207	* mpn/powerpc64/vmx/popcount.asm: Add prefetching.
14208
142092006-02-07  Torbjorn Granlund  <tege@swox.com>
14210
14211	* mpn/powerpc64/mode64/diveby3.asm: Rewrite.
14212
142132006-02-04  Torbjorn Granlund  <tege@swox.com>
14214
14215	* mpn/powerpc64/vmx/popcount.asm: Remove mpn_hamdist partial code.
14216	Move compare for huge n so that it is always executed.
14217
142182006-02-03  Torbjorn Granlund  <tege@swox.com>
14219
14220	* mpn/powerpc32/linux.m4 (LEA): Add support for PIC.
14221
14222	* configure.in (powerpc): New optional, gcc_cflags_subtype.
14223
14224	* mpn/x86_64/pentium4/add_n.asm: New file.
14225	* mpn/x86_64/pentium4/sub_n.asm: New file.
14226	* mpn/x86_64/pentium4/lshift.asm: New file.
14227
14228	* mpn/powerpc64/linux64.m4 (PROLOGUE_cpu): Align function start to
14229	16-multiple.
14230	* mpn/powerpc64/aix.m4: Likewise.
14231	* mpn/powerpc64/darwin.m4: Likewise.
14232
14233	* mpn/powerpc64/copyi.asm: Align loop to 16-multiple.
14234	* mpn/powerpc64/copyd.asm: Likewise
14235
14236	* configure.in (powerpc): Add vmx to relevant paths.
14237
14238	* mpn/powerpc64/linux64.m4 (DEF_OBJECT): Accept 2nd argument, for
14239	alignment.
14240	* mpn/powerpc64/aix.m4: Likewise.
14241	* mpn/powerpc64/darwin.m4: Likewise.
14242
14243	* mpn/powerpc32/linux.m4 (DEF_OBJECT, END_OBJECT): New macros,
14244	inherited from powerpc64 versions.
14245	* mpn/powerpc32/aix.m4: Likewise.
14246	* mpn/powerpc32/darwin.m4: Likewise.
14247
14248	* mpn/powerpc64/vmx/popcount.asm: New file, for ppc32 and ppc64.
14249	* mpn/powerpc32/vmx/popcount.asm: New file, grabbing above file.
14250
142512006-01-22  Torbjorn Granlund  <tege@swox.com>
14252
14253	* configure.in: Generalize OS-dependent patterns for powerpcs.
14254
142552006-01-20  Torbjorn Granlund  <tege@swox.com>
14256
14257	* mpn/x86_64/popham.asm: Optimize.
14258
14259	* config.guess: Recognize power4 and up under linux-gnu.
14260	* config.sub: Generalize power recognition code.
14261	* acinclude.m4 (POWERPC64_PATTERN): Add 64-bit powerpc processors.
14262	* configure.in: Recognize powerpc processors masquerading as power
14263	processors.
14264
142652006-01-19  Torbjorn Granlund  <tege@swox.com>
14266
14267	* mpn/x86_64/logops_n.asm: Rewrite for more stable speed and smaller
14268	code.
14269	* mpn/x86_64/com_n.asm: Likewise.
14270
142712006-01-18  Torbjorn Granlund  <tege@swox.com>
14272
14273	* mpn/x86_64/addlsh1_n.asm: Rewrite to use indexed addressing.
14274	* mpn/x86_64/sublsh1_n.asm: Likewise.
14275
142762006-01-17  Torbjorn Granlund  <tege@swox.com>
14277
14278	* mpn/generic/diveby3.c: Use GMP standard parameter names.  Nailify
14279	alternative code.  Use restrict for params.
14280
14281	* configure.in: Recognize andn_n as not needing nailification.
14282
14283	* tests/mpq/t-equal.c (check_various): Disable a test that gives common
14284	factors for GMP_NUMB_BITS == 62.
14285
142862006-01-16  Torbjorn Granlund  <tege@swox.com>
14287
14288	* mpn/generic/get_str.c (mpn_sb_get_str): Fix digit count computation,
14289	was inaccurate for nails.
14290
142912006-01-15  Torbjorn Granlund  <tege@swox.com>
14292
14293	* mpn/x86_64/mode1o.asm: Remove unneeded carry register zeroing.
14294
142952006-01-08  Torbjorn Granlund  <tege@swox.com>
14296
14297	* mpn/alpha/ev6/sqr_diagonal.asm: New file.
14298
142992006-01-06  Torbjorn Granlund  <tege@swox.com>
14300
14301	* mpn/powerpc64/mode64/mod_34lsub1.asm: Tune to 1.5 c/l.
14302
14303	* mpn/generic/mullow_n.c (MUL_BASECASE_ALLOC): New #define.
14304	(mpn_mullow_n): Use it.
14305
14306	* mpn/powerpc64/mode64/dive_1.asm: Use EXTERN.
14307	* mpn/powerpc64/mode64/mode1o.asm: Likewise.
14308
14309	* mpn/powerpc64/aix.m4 (EXTERN): Define to import symbol.
14310	(LDSYM): Remove [RW] attribute.
14311	* mpn/powerpc64/linux64.m4 (EXTERN): Dummy definition.
14312	* mpn/powerpc64/darwin.m4 (EXTERN): Likewise.
14313
143142006-01-05  Torbjorn Granlund  <tege@swox.com>
14315
14316	* mpn/powerpc64/mode64/mode1o.asm: New file.
14317
14318	* mpn/powerpc64/mode64/dive_1.asm: Use L() for labels.  Invoke ASM_END.
14319
14320	* mpn/powerpc64/mode64/invert_limb.asm: Invoke ASM_END.
14321
14322	* mpn/powerpc64/linux64.m4: Move toc entry generation from direct at
14323	DEF_OBJECT to delayed via LDSYM, define ASM_END to output it.
14324	* mpn/powerpc64/aix.m4: Likewise.
14325	* mpn/powerpc64/darwin.m4: Define a dummy ASM_END.
14326
14327	* mpn/powerpc64/mode64/addmul_1.asm: Add POWER5 timings.
14328	* mpn/powerpc64/mode64/mul_1.asm: Likewise.
14329
14330	* mpn/powerpc64/mode64/submul_1.asm: Tweak to save 1.5 c/l for POWER5.
14331
143322006-01-04  Torbjorn Granlund  <tege@swox.com>
14333
14334	* mpn/powerpc64/mode64/dive_1.asm: New file.
14335
14336	* mpn/powerpc64/mode64/invert_limb.asm: Add missing ASM_START.
14337
14338	* mpn/powerpc64/mode64/addmul_1.asm: Fix a comment typo.
14339
14340	* mpn/x86_64/diveby3.asm: Rewrite.
14341
143422006-01-03  Torbjorn Granlund  <tege@swox.com>
14343
14344	* configure.in: Update bugs reporting address.
14345
14346	* mpn/powerpc64/mode64/diveby3.asm: Trim a cycle off of POWER4 timing.
14347	Misc cleanup.
14348
143492006-01-02  Torbjorn Granlund  <tege@swox.com>
14350
14351	* mpn/powerpc64/linux64.m4 (CALL): New macro.
14352	* mpn/powerpc64/aix.m4: Likewise.
14353	* mpn/powerpc64/darwin.m4: Likewise, also define macro "DARWIN".
14354
143552005-12-28  Torbjorn Granlund  <tege@swox.com>
14356
14357	* mpn/powerpc64/mode64/mod_34lsub1.asm: New file.
14358
143592005-12-26  Torbjorn Granlund  <tege@swox.com>
14360
14361	* mpn/x86_64/mod_34lsub1.asm: New file.
14362
143632005-12-20  Torbjorn Granlund  <tege@swox.com>
14364
14365	* mpn/x86_64/submul_1.asm: Save a push/pop by not using register r12.
14366	Use addq instead of leaq for pointer updates; schedule them.  (These
14367	changes shaves one cycle of overhead and 0.25 c/l.)
14368
143692005-12-18  Torbjorn Granlund  <tege@swox.com>
14370
14371	* mpf/ui_div.c: Implement workaround for GCC bug triggered on alpha.
14372	* mpf/set_q.c: Likewise.
14373
143742005-12-16  Torbjorn Granlund  <tege@swox.com>
14375
14376	* mpn/generic/tdiv_qr.c: Remove statement with no effect.
14377	Rename dead variable to `dummy'.
14378
143792005-12-15  Torbjorn Granlund  <tege@swox.com>
14380
14381	* demos/pexpr.c (setup_error_handler): Add a missing ";".
14382
143832005-11-27  Torbjorn Granlund  <tege@swox.com>
14384
14385	* mpn/generic/mul.c: Crudely call mpn_mul_fft_full before checking
14386	for unbalanced operands.
14387
14388	* mpn/generic/mul_fft.c: Remove many scalar divisions.
14389	(mpn_mul_fft_lcm): Simplify.
14390	(mpn_mul_fft_decompose): Rewrite to handle arbitrarily unbalanced
14391	operands.
14392
143932005-11-22  Torbjorn Granlund  <tege@swox.com>
14394
14395	* configure.in: Properly recognize all 32-bit Solaris releases.
14396
143972005-11-10  Torbjorn Granlund  <tege@swox.com>
14398
14399	* mpn/generic/mul_fft.c: Inline mpn_fft_mul_2exp_modF,
14400	mpn_fft_add_modF and mpn_fft_normalize.
14401
144022005-11-02  Torbjorn Granlund  <tege@swox.com>
14403
14404	* tests/mpz/reuse.c: Increase operand size, decrease # of reps.
14405
14406	* mpz/rootrem.c: Adapt to new mpn_rootrem.
14407	* mpz/root.c: Likewise.
14408
14409	* tests/mpz/reuse.c: Test mpz_rootrem.
14410
14411	With Paul Zimmermann:
14412	* mpn/generic/rootrem.c: Complete rewrite.
14413
144142005-10-31  Torbjorn Granlund  <tege@swox.com>
14415
14416	* mpz/pprime_p.c (mpz_probab_prime_p): Considerably limit trial
14417	dividing.
14418
14419	* mpz/perfpow.c (mpz_perfect_power_p): Use mpz_divisible_ui_p instead
14420	of mpz_tdiv_ui.
14421
14422	* mpz/divegcd.c: Correct probability number for GCD == 1.
14423
14424	* mpn/x86_64/mul_basecase.asm: Remove an obsolete comment.
14425
14426	* mpn/x86: Add cycle counts for array of x86 processors.
14427
14428	* mpn/x86/k7/mod_34lsub1.asm: Remove spurious mentions of ebp.
14429
14430	* mpn/powerpc32: Add POWER5 timings.
14431
14432	* mpn/powerpc32/README: Describe global reference variations.
14433
14434	* mpn/ia64/divrem_2.asm: Add some comments.
14435
14436	* mpn/ia64/divrem_1.asm: Reformat.
14437
14438	* mpn/ia64/addmul_2.asm: Correct a comment on slotting.
14439	* mpn/ia64/logops_n.asm: Likewise.
14440
14441	* mpn/ia64/addmul_1.asm: Remove a redundant preg mutex decl.
14442
14443	* mpn/generic/dive_1.c: Whitespace cleanup.
14444
14445	* mpn/alpha/ev6/nails/addmul_1.asm: Correct comments on slotting.
14446	* mpn/alpha/ev6/nails/addmul_2.asm: Likewise.
14447	* mpn/alpha/ev6/nails/addmul_4.asm: Likewise.
14448
14449	* mpf/out_str.c: List some allocation improvement ideas.
14450
14451	* doc/gmp.texi: Update many URLs and email addresses.
14452
14453	* gmp-h.in (_GMP_H_HAVE_FILE): Check also _STDIO_H_INCLUDED.
14454
144552005-10-26  Torbjorn Granlund  <tege@swox.com>
14456
14457	* tune/tuneup.c (tune_mullow): Update param.max_size for each threshold
14458	measurement.
14459
14460	* configure.in (POWERPC64_PATTERN/*-*-darwin*): Set
14461	SPEED_CYCLECOUNTER_OBJ_mode64 and cyclecounter_size_mode64.
14462	(POWERPC64_PATTERN/*-*-linux*): Likewise.
14463
144642005-10-03  Torbjorn Granlund  <tege@swox.com>
14465
14466	* demos/factorize.c (factor_using_division_2kp): Honor verbose flag.
14467	(factor_using_pollard_rho): Divide out new factor before it's
14468	clobbered.  Don't stop factoring after a composite factor was found.
14469
144702005-09-17  Torbjorn Granlund  <tege@swox.com>
14471
14472	* demos/pexpr.c (fns): Add factorial keywords.
14473
144742005-08-16  Torbjorn Granlund  <tege@swox.com>
14475
14476	* tune/Makefile.am (EXTRA_DIST): Change "amd64" => "x86_64".
14477	* mpn/Makefile.am (TARG_DIST): Change "amd64" => "x86_64".
14478
144792005-08-15  Torbjorn Granlund  <tege@swox.com>
14480
14481	* configure.in: Change "amd64" => "x86_64".
14482
144832005-06-13  Torbjorn Granlund  <tege@swox.com>
14484
14485	* mpn/generic/pre_mod_1.c: Canonicalize variable names.
14486
14487	* mpn/generic/divrem.c: Rate qxn test as UNLIKELY.
14488
14489	* mpn/generic/gcdext.c (sanity_check_row): Invoke TMP_MARK.
14490
14491	* tune/tuneup.c (tune_mullow): Fix all max_size fields.
14492
14493	* gmp-impl.h (SQR_TOOM3_THRESHOLD_LIMIT): New #define.
14494	* tune/tuneup.c (tune_sqr): Use SQR_TOOM3_THRESHOLD_LIMIT.
14495	(sqr_toom3_threshold): Initialize from SQR_TOOM3_THRESHOLD_LIMIT.
14496
14497	* mpn/generic/mul_n.c (mpn_sqr_n): Use SQR_TOOM3_THRESHOLD_LIMIT.
14498
14499	* gmp-impl.h (mpn_nand_n, mpn_iorn_n, mpn_nior_n, mpn_xnor_n):
14500	Handle nails.
14501
145022005-06-13  Niels Möller  <nisse@lysator.liu.se>
14503
14504	* mpn/generic/gcdext.c (gcdext_schoenhage): Check for the
14505	(unlikely) case that one of the hgcd/euclid steps results in two
14506	remainders of one limb each. Then use gcdext_1.
14507
145082005-06-12  Torbjorn Granlund  <tege@swox.com>
14509
14510	* mpn/alpha/ev6/sub_n.asm: Analogous changes as to add_n.asm last.
14511
145122005-06-11  Torbjorn Granlund  <tege@swox.com>
14513
14514	* mpn/alpha/ev6/add_n.asm: Rewrite inner loop to load later.
14515	Add mpn_add_nc entry.
14516
14517	* mpn/alpha/ev6/addmul_1.asm: Remove redundant initial loads.
14518
145192005-06-09  Torbjorn Granlund  <tege@swox.com>
14520
14521	* mpn/ia64/dive_1.asm: Fix issues with HP-UX.
14522
145232005-06-08  Torbjorn Granlund  <tege@swox.com>
14524
14525	* mpn/ia64/diveby3.asm: Update TODO list.
14526
14527	* mpn/ia64/mode1o.asm: Fix comment typos.
14528
14529	* mpn/ia64/dive_1.asm: New file.
14530
145312005-06-07  Torbjorn Granlund  <tege@swox.com>
14532
14533	* mpn/ia64/mode1o.asm: Add prefetching.
14534
14535	* mpn/generic/dive_1.c: Use variable h for upper umul_ppmm result.
14536
145372005-06-06  Torbjorn Granlund  <tege@swox.com>
14538
14539	* mpn/ia64/hamdist.asm: Complete rewrite.
14540	* mpn/ia64/popcount.asm: Rewrite to use multi-pronged feed-in.
14541
14542	* mpn/ia64/aors_n.asm: Rewrite feed-in code.
14543	* mpn/ia64/rsh1aors_n.asm: Likewise.
14544	* mpn/ia64/aorslsh1_n.asm: Likewise.
14545	* mpn/ia64/lorrshift.asm: Likewise.
14546
145472005-06-04  Torbjorn Granlund  <tege@swox.com>
14548
14549	* tests/devel/try.c (choice_array): Exclude mpn_preinv_mod_1 unless
14550	USE_PREINV_MOD_1.
14551	(choice_array): Exclude mpn_sqr_basecase if SQR_KARATSUBA_THRESHOLD
14552	is zero.
14553
145542005-06-03  Torbjorn Granlund  <tege@swox.com>
14555
14556	* mpn/alpha/ev6/addmul_1.asm: Prefix all labels with "$".
14557	* mpn/alpha/ev6/mul_1.asm: Likewise.
14558
145592005-06-02  Torbjorn Granlund  <tege@swox.com>
14560
14561	* tests/refmpn.c (refmpn_divmod_1c_workaround): Implement workaround
14562	to gcc 3.4.x bug triggered on powerpc64 with 32-bit ABI.
14563
145642005-06-01  Torbjorn Granlund  <tege@swox.com>
14565
14566	* tests/devel/try.c (main): Fix a typo.
14567
145682005-05-31  Torbjorn Granlund  <tege@swox.com>
14569
14570	* mpn/alpha/ev6/addmul_1.asm: Rewrite for L1 cache, add prefetch.
14571
145722005-05-30  Torbjorn Granlund  <tege@swox.com>
14573
14574	* tests/misc.c (tests_rand_start): Mask random seed to 32 bits.
14575
145762005-05-29  Torbjorn Granlund  <tege@swox.com>
14577
14578	* mpn/powerpc64/mode32/mul_1.asm: Handle BROKEN_LONGLONG_PARAM.
14579	* mpn/powerpc64/mode32/addmul_1.asm: Likewise.
14580	* mpn/powerpc64/mode32/submul_1.asm: Likewise.
14581
14582	* mpn/powerpc32/mode1o.asm: Rewrite to actually work.
14583
14584	* mpn/powerpc32/aix.m4 (LEA): New macro.
14585	(ASM_END): New macro.
14586
14587	* mpn/powerpc32/linux.m4: New file.
14588	* mpn/powerpc32/darwin.m4: New file.
14589	* configure.in: Use linux.m4 and darwin.m4.
14590	(powerpc64-linux-gnu): Add support for mode32.
14591
145922005-05-25  Torbjorn Granlund  <tege@swox.com>
14593
14594	* mpn/generic/mullow_n.c: Remove FIXME mentioning fixed flaw.
14595
14596	* tests/mpz/t-cmp_d.c (check_one): Fix printf fmt string typo.
14597
14598	* demos/isprime.c: #include stdlib.h.
14599	* tests/rand/t-urbui.c: Likewise.
14600	* tests/rand/t-urmui.c: Likewise.
14601
14602	* tests/mpz/t-popcount.c (check_random): Remove spurious printf arg.
14603
14604	* mpn/ia64/lorrshift.asm: Cleanup code layout.
14605	* mpn/ia64/popcount.asm: Likewise.
14606
146072005-05-24  Torbjorn Granlund  <tege@swox.com>
14608
14609	* tests/devel/try.c (param_init) [TYPE_GET_STR]: Set retval field.
14610	(compare): Handle SIZE_GET_STR as SIZE_RETVAL.
14611
14612	* tests/refmpn.c (refmpn_get_str): Rewrite to make it work.
14613
146142005-05-23  Torbjorn Granlund  <tege@swox.com>
14615
14616	* mpn/amd64/add_n.asm: Add mpn_add_nc entry point.
14617	* mpn/amd64/sub_n.asm: Add mpn_sub_nc entry point.
14618
14619	* longlong.h (many places): Remove lvalue casts.
14620
14621	* gmp-impl.h (MPF_SIGNIFICANT_DIGITS): Cast prec to avoid overflow
14622	for > 4G digits.
14623
14624	* mpn/alpha/ev6/add_n.asm: Prefetch using ldl.
14625	* mpn/alpha/ev6/sub_n.asm: Likewise.
14626
14627	* mpn/alpha/ev6/slot.pl (optable): Recognize negq and ldl.
14628
14629	* mpn/ia64/aors_n.asm: Prefetch using lfetch.
14630	* mpn/ia64/lorrshift.asm: Likewise.
14631	* mpn/ia64/popcount.asm: Likewise.
14632	* mpn/ia64/diveby3.asm: Likewise.
14633
146342005-05-22  Torbjorn Granlund  <tege@swox.com>
14635
14636	* mpn/alpha/ev67/popcount.asm: Prefetch.
14637	* mpn/alpha/ev67/hamdist.asm: Prefetch.
14638
14639	* longlong.h (add_ssaaaa) [x86]: Remove lvalue casts.
14640	(sub_ddmmss) [x86]: Likewise.
14641
14642	* tests/devel/try.c (param_init) [TYPE_MPZ_JACOBI]: Add DATA_SRC1_ODD.
14643	(param_init) [TYPE_MPZ_KRONECKER]: Clear inherited DATA_SRC1_ODD.
14644	(param_init) [TYPE_DIVEXACT_1]: Use symbolic name DIVISOR_LIMB.
14645
146462005-05-21  Torbjorn Granlund  <tege@swox.com>
14647
14648	* tests/devel/try.c (param_init) [TYPE_MPZ_JACOBI]: Initialize divisor
14649	field according to UDIV_NEEDS_NORMALIZATION.
14650
14651	* mpz/mul_i.h: Remove left-over TMP_XXXX marker arguments.
14652
146532005-05-20  Torbjorn Granlund  <tege@swox.com>
14654
14655	* mpn/x86/pentium4/sse2/addmul_1.asm (mpn_addmul_1c): Put carry in
14656	proper register.
14657
14658	* mpn/generic/sqr_basecase.c (mpn_sqr_basecase, addmul_2 version):
14659	Avoid accesses out-of-bound in MPN_SQR_DIAGONAL applicate code.
14660
146612005-05-19  Torbjorn Granlund  <tege@swox.com>
14662
14663	* mpn/alpha/diveby3.asm: Make it actually work.
14664
14665	* gmp-impl.h (MULLOW_BASECASE_THRESHOLD_LIMIT): New #define.
14666	* mpn/generic/mullow_n.c: Use fixed stack allocation for the smallest
14667	operands; use TMP_S* allocation for medium operands.
14668
14669	* gmp-impl.h: Remove nested TUNE_PROGRAM_BUILD test.
14670
146712005-05-18  Torbjorn Granlund  <tege@swox.com>
14672
14673	* mpn/generic/mul_n.c: Make squaring and multiplication code more
14674	similar.  Use TMP_S* functions.
14675
14676	* gmp-impl.h (TMP_DECL, TMP_MARK, TMP_FREE): Get rid of argument.
14677	(TMP_SALLOC): New macro for "small" allocations.
14678	(TMP_BALLOC): New macro for "big" allocations.
14679	(TMP_SDECL, TMP_SMARK, TMP_SFREE): New macros for functions that use
14680	just TMP_SALLOC.
14681	(WANT_TMP_ALLOCA): Make default functions choose alloca or reentrant
14682	functions, depending on size.
14683
14684	* *.c: Remove TMP_XXXX marker arguments.
14685
14686	* acinclude.m4 (WANT_TMP): Want tal-reent.lo also for alloca case.
14687
146882005-05-16  Torbjorn Granlund  <tege@swox.com>
14689
14690	* mpn/ia64/gmp-mparam.h: Further extend FFT tables.
14691
146922005-05-15  Torbjorn Granlund  <tege@swox.com>
14693
14694	* gmp-impl.h (udiv_qrnnd_preinv2): Pull an add into add_ssaaaa.
14695	(udiv_qrnnd_preinv2gen): Likewise.
14696
146972005-05-14  Torbjorn Granlund  <tege@swox.com>
14698
14699	* longlong.h (add_ssaaaa) [x86_64]: Restrict allowed immediate
14700	operands.
14701	* (sub_ddmmss) [x86_64]: Likewise.
14702
147032005-05-02  Torbjorn Granlund  <tege@swox.com>
14704
14705	* acinclude.m4 (GMP_HPC_HPPA_2_0): Make gmp_tmp_v1 sed pattern handle
14706	version numbers like B.11.X.32509-32512.GP.
14707
14708	* mpn/m68k/aors_n.asm: Correct MULFUNC_PROLOGUE.
14709
14710	* mpn/powerpc64/mode64/aors_n.asm: Add a MULFUNC_PROLOGUE.
14711
14712	* mpf/inp_str.c: Use plain int for mpf_set_str return value (works
14713	around gcc 4 bug).
14714
14715	* acinclude.m4 (GMP_ASM_POWERPC_PIC_ALWAYS): Handle darwin's assembly
14716	syntax.
14717	(long long reliability test 1): New GMP_PROG_CC_WORKS_PART test.
14718	(long long reliability test 2): New GMP_PROG_CC_WORKS_PART test.
14719
14720	* configure.in: Add mode64 support for darwin.  Use darwin.m4.
14721	Add cflags_opt flags for mode32 darwin.
14722
14723	* mpn/powerpc64: Use L() for all asm files.
14724
14725	* mpn/asm-defs.m4 (PIC_ALWAYS): Define PIC just iff PIC_ALWAYS = "yes".
14726
14727	* mpn/powerpc64/darwin.m4: New file.
14728
14729	* mpn/powerpc64/linux64.m4: Remove TOCREF, add LDSYM.
14730	Rework DEF_OBJECT to need just one argument.
14731	* mpn/powerpc64/aix.m4: Likewise.
14732
14733	* mpn/powerpc64/mode64/invert_limb.asm: Load approx_tab address with
14734	LDSYM.  Optimize somewhat.  Remove 2nd DEF_OBJECT operand.
14735
147362005-05-01  Torbjorn Granlund  <tege@swox.com>
14737
14738	* mpn/generic/popham.c: Compute final summation differently for 64-bit.
14739
14740	* tests/mpz/t-popcount.c (check_random): New function.
14741	(main): Call it.
14742
147432005-04-28  Torbjorn Granlund  <tege@swox.com>
14744
14745	* mpn/amd64/add_n.asm: Use r9 instead of rbx to save push/pop.
14746	* mpn/amd64/sub_n.asm: Likewise.
14747
147482005-04-09  Torbjorn Granlund  <tege@swox.com>
14749
14750	* mpn/powerpc64/copyi.asm: If HAVE_ABI_mode32, ignore upper 32 bits of
14751	mp_size_t argument.
14752	* mpn/powerpc64/copyd.asm: Likewise.
14753	* mpn/powerpc64/sqr_diagonal.asm: Likewise.
14754	* mpn/powerpc64/lshift.asm: Likewise.
14755	* mpn/powerpc64/rshift.asm: Likewise.
14756	* mpn/powerpc64/logops_n.asm: Likewise.
14757	* mpn/powerpc64/com_n.asm: Likewise.
14758
147592005-04-08  Torbjorn Granlund  <tege@swox.com>
14760
14761	* mpn/generic/rootrem.c: Allocate PP_ALLOC limbs also for qp.
14762
147632005-04-07  Torbjorn Granlund  <tege@swox.com>
14764
14765	* mpn/powerpc32/add_n.asm: Add nc entry point.
14766	* mpn/powerpc32/sub_n.asm: Likewise.
14767
14768	* mpn/amd64/*.asm: Add Prescott/Nocona cycle/limb numbers.
14769
14770	* mpn/alpha/add_n.asm: Add correct cycle/limb numbers.
14771	* mpn/alpha/sub_n.asm: Likewise.
14772	* mpn/alpha/ev5/add_n.asm: Likewise.
14773	* mpn/alpha/ev5/sub_n.asm: Likewise.
14774
147752005-03-31  Torbjorn Granlund  <tege@swox.com>
14776
14777	* mpn/x86/k7/gmp-mparam.h: Fix typo in last change.
14778
147792005-03-19  Torbjorn Granlund  <tege@swox.com>
14780
14781	* mpn/amd64/gmp-mparam.h: Update.
14782
14783	* mpn/alpha/gmp-mparam.h: Update.
14784	* mpn/alpha/ev5/gmp-mparam.h: Update.
14785	* mpn/alpha/ev6/gmp-mparam.h: Update.
14786
14787	* mpn/ia64/gmp-mparam.h: Update.
14788
14789	* mpn/x86/p6/mmx/gmp-mparam.h: Update.
14790	* mpn/x86/pentium4/sse2/gmp-mparam.h: Update.
14791	* mpn/x86/k7/gmp-mparam.h: Update.
14792
14793	* tests/mpz/t-gcd.c (main): Honor command line reps argument.
14794
14795	* tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL): Simplify and correct code
14796	for generating test operands.
14797
147982005-03-17  Niels Möller  <nisse@lysator.liu.se>
14799
14800	* mpn/generic/hgcd.c (qstack_adjust): New argument d, saying how much
14801	to adjust the top quotient.
14802	(hgcd_adjust): The quotient can be off by either 1 or 2.
14803
148042005-03-16  Torbjorn Granlund  <tege@swox.com>
14805
14806	* tests/mpz/t-gcd.c (MAX_SCHOENHAGE_THRESHOLD): Set to largest of
14807	gcd,gcdext thresholds.
14808
148092005-03-15  Niels Möller  <nisse@lysator.liu.se>
14810
14811	* mpn/generic/gcdext.c (gcdext_schoenhage): When calling gcdext_lehmer,
14812	reuse all temporary limb storage, including the storage used for the
14813	qstack.
14814
148152005-03-09  Torbjorn Granlund  <tege@swox.com>
14816
14817	* mpn/amd64/logops_n.asm: Add MULFUNC_PROLOGUE.
14818
148192005-03-05  Torbjorn Granlund  <tege@swox.com>
14820
14821	* mpn/amd64/gmp-mparam.h: Extend MUL_FFT_TABLE and SQR_FFT_TABLE.
14822	* mpn/ia64/gmp-mparam.h: Likewise.
14823
148242005-02-17  Torbjorn Granlund  <tege@swox.com>
14825
14826	* mpn/ia64/divrem_1.asm: Add preinv entry point.
14827
148282005-01-13  Torbjorn Granlund  <tege@swox.com>
14829
14830	* gmp-impl.h (MPN_SIZEINBASE): Count bits in type size_t.
14831	(MPN_SIZEINBASE_16): Likewise.
14832
148332004-12-17  Torbjorn Granlund  <tege@swox.com>
14834
14835	* tune/speed.c (run_gnuplot): Use lines, not linespoints.
14836	Output a reset gnuplot command initially.
14837
148382004-12-04  Torbjorn Granlund  <tege@swox.com>
14839
14840	* mpn/generic/random2.c (gmp_rrandomb): Rework again.
14841	* mpz/rrandomb.c (gmp_rrandomb): Likewise.
14842
14843	* mpn/amd64/redc_1.asm: Call via PLT when PIC.
14844
148452004-11-29  Torbjorn Granlund  <tege@swox.com>
14846
14847	* mpn/amd64/divrem_1.asm: Add preinv entry point.
14848	* mpn/amd64/gmp-mparam.h: Set USE_PREINV_DIVREM_1 to 1.
14849
148502004-11-24  Torbjorn Granlund  <tege@swox.com>
14851
14852	* mpn/alpha/diveby3.asm: Use correct prefetch instruction.
14853
148542004-11-19  Torbjorn Granlund  <tege@swox.com>
14855
14856	* mpn/alpha/diveby3.asm: Add ",gp" glue in PROLOGUE.
14857	Add r31 dummy operand to `br' instruction.
14858
148592004-11-17  Torbjorn Granlund  <tege@swox.com>
14860
14861	* mpn/powerpc64/mode64/addmul_1.asm: Rewrite.
14862	* mpn/powerpc64/mode64/mul_1.asm: Rewrite.
14863
14864	* configure.in: Invoke AC_C_RESTRICT.
14865
148662004-11-16  Torbjorn Granlund  <tege@swox.com>
14867
14868	* mpn/alpha/diveby3.asm: New file.
14869
148702004-11-13  Torbjorn Granlund  <tege@swox.com>
14871
14872	* mpn/amd64/popham.asm: New file.
14873
148742004-11-12  Torbjorn Granlund  <tege@swox.com>
14875
14876	* mpn/amd64/add_n.asm: Correct cycle count.
14877	* mpn/amd64/sub_n.asm: Likewise.
14878
14879	* mpn/amd64/dive_1.asm: Speed divisors with many factors of 2.
14880
148812004-11-11  Torbjorn Granlund  <tege@swox.com>
14882
14883	* mpn/amd64/dive_1.asm: New file.
14884
148852004-11-10  Torbjorn Granlund  <tege@swox.com>
14886
14887	* mpn/generic/popham.c: Add comment.
14888
148892004-11-09  Torbjorn Granlund  <tege@swox.com>
14890
14891	* mpn/amd64/com_n.asm: New file.
14892
14893	* mpn/amd64/logops_n.asm: New file.
14894
148952004-11-08  Torbjorn Granlund  <tege@swox.com>
14896
14897	* mpn/powerpc64/com_n.asm: New file.
14898
148992004-11-05  Torbjorn Granlund  <tege@swox.com>
14900
14901	* mpn/amd64/diveby3.asm: New file.
14902
14903	* config.guess: Strip any PPC string in /proc/cpuinfo.
14904	Recognize 970 in that code.
14905
149062004-11-01  Torbjorn Granlund  <tege@swox.com>
14907
14908	* mpn/amd64/mul_basecase.asm: New file.
14909
14910	* mpn/amd64/redc_1.asm: New file.
14911
149122004-10-25  Torbjorn Granlund  <tege@swox.com>
14913
14914	* mpn/powerpc64/mode64/addlsh1_n.asm: Correct cycle counts.
14915
14916	* mpn/powerpc64/README: Update POWER5/PPC970 pipeline information.
14917
14918	* mpn/generic/mul_basecase.c (MAX_LEFT): Add comment.
14919
14920	* doc/gmp.texi: Consistently use "x86" denotation.
14921	(Assembler SIMD Instructions): Mention SSE2 usage.
14922
14923	* demos/pexpr.c (main): Handle "negative" base in mpz_sizeinbase call.
14924
149252004-10-18  Torbjorn Granlund  <tege@swox.com>
14926
14927	* mpn/powerpc64/mode64/submul_1.asm: Shave 2 cycles/limb with new carry
14928	inversion trick.
14929
149302004-10-16  Torbjorn Granlund  <tege@swox.com>
14931
14932	* configure.in: Support icc under x86.
14933	(ia64-*-linux*): Pass -no-gcc to icc.
14934
149352004-10-15  Torbjorn Granlund  <tege@swox.com>
14936
14937	* longlong.h (ia64 umul_ppmm): Add version for icc.
14938
14939	* configure.in: Support icc under ia64-*-linux*.
14940
14941	* acinclude.m4: New "compiler works" test for icc 8.1 bug.
14942	(GMP_PROG_CC_IS_GNU): Don't let Intel's icc fool us it is GCC.
14943
149442004-10-14  Torbjorn Granlund  <tege@swox.com>
14945
14946	* mpn/generic/gcdext.c: Add a few missing TMP_MARK.
14947
149482004-10-14  Torbjorn Granlund  <tege@swox.com>
14949
14950	* acinclude.m4 (GMP_ASM_W32): Try also "data4".
14951
14952	* mpn/ia64/logops_n.asm: Don't use naked "br", rejected by Intel
14953	assembler.
14954	* mpn/ia64/aors_n.asm: Likewise.
14955
14956	* mpn/ia64/divrem_2.asm: Add ".prologue".
14957
14958	* mpn/ia64/hamdist.asm: Put alloc first in bundle, enforced by the
14959	Intel assembler.
14960
14961	* longlong.h: Exclude masquerading __INTEL_COMPILER from ia64 asm.
14962	* gmp-impl.h: Likewise.
14963
149642004-10-12  Torbjorn Granlund  <tege@swox.com>
14965
14966	* mpn/ia64/mul_2.asm: Rewrite function entry code, write new code for
14967	n=2.
14968	* mpn/ia64/addmul_2.asm: Likewise.
14969
14970	* tests/devel/try.c: Handle mpn_mul_2 like mpn_addmul_2.
14971
14972	* tune/speed.c (routine): Make R parameter optional for mpn_mul_2.
14973
149742004-10-11  Torbjorn Granlund  <tege@swox.com>
14975
14976	* mpn/sparc64/addmul_1.asm: Update a comment.
14977
14978	* tests/devel/aors_n.c: #include tests.h.
14979	* tests/devel/anymul_1.c: Likewise.
14980	* tests/devel/shift.c: Likewise.
14981	* tests/devel/copy.c: Likewise.
14982
14983	* tests/devel/aors_n.c: Handle also mpn_addlsh1_n, mpn_sublsh1_n,
14984	mpn_rsh1add_n, and mpn_rsh1sub_n.
14985
14986	* mpn/ia64/submul_1.asm: Add TODO item.
14987
14988	* mpn/ia64/aors_n.asm: Rewrite function entry code (again).
14989	* mpn/ia64/aorslsh1_n.asm: Likewise.
14990	* mpn/ia64/logops_n.asm: Likewise.
14991
14992	* mpn/ia64/rsh1aors_n.asm: Tune function entry and feed-in code.
14993	* mpn/ia64/lorrshift.asm: Likewise.  Remove several spurious loads.
14994
14995	* tests/devel/Makefile.am (EXTRA_PROGRAMS): Updates for yesterday's
14996	file removals and additions.
14997
149982004-10-10  Torbjorn Granlund  <tege@swox.com>
14999
15000	* mpn/ia64/copyi.asm: Tune function entry code.
15001	* mpn/ia64/copyd.asm: Likewise.
15002
15003	* mpn/ia64/logops_n.asm: Tune function entry and feed-in code for speed
15004	and size.
15005	* mpn/ia64/aors_n.asm: Likewise.
15006
15007	* mpn/powerpc64/logops_n.asm: Correct cycles counts.
15008	* mpn/powerpc64/mode64/aors_n.asm: Likewise.
15009
15010	* tests/devel/copy.c: Handle both MPN_COPY_INCR and MPN_COPY_DECR.
15011
15012	* tests/devel/logops_n.c: New file, handle all logical operations.
15013
15014	* tests/devel/anymul_1.c: New file, handle mpn_mul_1, mpn_addmul_1, and
15015	mpn_submul_1
15016	* tests/devel/mul_1.c: Remove.
15017	* tests/devel/addmul_1.c: Remove.
15018	* tests/devel/submul_1.c: Remove.
15019
15020	* tests/devel/shift.c: New file, handle mpn_lshift and mpn_rshift.
15021	* tests/devel/lshift.c: Remove.
15022	* tests/devel/rshift.c: Remove.
15023
15024	* tests/devel/aors_n.c: New file, handle mpn_add_n and mpn_sub_n.
15025	* tests/devel/add_n.c: Remove.
15026	* tests/devel/sub_n.c: Remove.
15027
150282004-10-09  Torbjorn Granlund  <tege@swox.com>
15029
15030	* mpn/powerpc64/linux64.m4: Define DEF_OBJECT, END_OBJECT, and TOCREF.
15031	* mpn/powerpc64/aix.m4: Likewise.
15032	* mpn/powerpc64/mode64/invert_limb.asm: Use DEF_OBJECT, END_OBJECT, and
15033	TOCREF for approx_tab.
15034
15035	* mpn/amd64/mul_1.asm: Add mpn_mul_1c entry point.
15036
150372004-10-08  Torbjorn Granlund  <tege@swox.com>
15038
15039	* mpn/powerpc64/copyi.asm: New file.
15040	* mpn/powerpc64/copyd.asm: New file.
15041	* gmp-h.in: Remove PPC MPN_COPY variants.
15042	* gmp-impl.h: Likewise.
15043
15044	* mpn/powerpc64/logops_n.asm: New file.
15045
15046	* mpn/powerpc64/mode64/invert_limb.asm: New file.
15047
150482004-10-07  Torbjorn Granlund  <tege@swox.com>
15049
15050	* mpn/powerpc64/mode64/aors_n.asm: New file, optimized for POWER4 and
15051	its derivatives.
15052	* mpn/powerpc64/mode64/add_n.asm: Delete.
15053	* mpn/powerpc64/mode64/sub_n.asm: Delete.
15054
15055	* configfsf.guess: Patch HP-UX code to accommodate HP compiler's new
15056	inability to read from stdin.
15057
15058	* mpn/powerpc64/mode64/addsub_n.asm: Remove accidentally added file.
15059
150602004-10-02  Torbjorn Granlund  <tege@swox.com>
15061
15062	* mpn/amd64/README: Update for new developments, fix typos.
15063
15064	* mpn/amd64/mul_1.asm: Tweak addressing (3.25 => 3.0 cycles/limb).
15065
15066	* mpn/amd64/addmul_1.asm: Remove unreachable code block.
15067
150682004-09-30  Torbjorn Granlund  <tege@swox.com>
15069
15070	* mpn/amd64/addmul_1.asm: Rewrite, now 3.25 cycles/limb.
15071
15072	* mpn/ia64/addmul_1.asm: Slightly enhance cross-jumping for code
15073	density.
15074	* mpn/ia64/mul_1.asm: Analogous changes.
15075
150762004-09-29  Torbjorn Granlund  <tege@swox.com>
15077
15078	* gmp-impl.h (x86 ULONG_PARITY): Work around GCC change of "q" register
15079	flag.
15080
150812004-09-28  Torbjorn Granlund  <tege@swox.com>
15082
15083	* mpn/ia64/divrem_1.asm: Add cycle counts to loop.
15084
15085	* mpn/ia64/divrem_2.asm: New file.
15086
150872004-09-28  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
15088
15089	* mpn/generic/mul_fft.c (mpn_mul_fft): Fix a bug in the choice of the
15090	recursive fft parameters.
15091
150922004-09-20  Torbjorn Granlund  <tege@swox.com>
15093
15094	* tests/misc.c (tests_rand_start): Default to strtoul for re-seeding.
15095
15096	* tests/mpz/t-mul.c (ref_mpn_mul): Fudge tmp allocation for toom3.
15097
150982004-09-19  Torbjorn Granlund  <tege@swox.com>
15099
15100	* tests/misc.c (tests_rand_start): Shift tv_usec for better seeding.
15101
151022004-09-18  Torbjorn Granlund  <tege@swox.com>
15103
15104	* tests/misc.c (tests_rand_start): Invoke fflush after printing seed.
15105
15106	* tests/mpz/t-mul.c (main): Check environment for GMP_CHECK_FFT, run
15107	extra FFT tests if set.
15108	(ref_mpn_mul): Use library code for kara and toom, but skewded so that
15109	we never use the same algorithm that we're testing.
15110	(mul_kara): Delete.
15111	(debug_mp): Print just one line of large numbers.
15112	(ref_mpn_mul): Rework usage of tp temporary space.
15113
151142004-09-15  Torbjorn Granlund  <tege@swox.com>
15115
15116	* mpn/ia64/mul_2.asm: For HAVE_ABI_32, convert vp.
15117	* mpn/ia64/addmul_2.asm: Likewise.
15118
151192004-09-13  Torbjorn Granlund  <tege@swox.com>
15120
15121	* mpn/ia64/invert_limb.asm: Rewrite.
15122
15123	* mpn/ia64/logops_n.asm: Insert some more stops.
15124
151252004-09-12  Torbjorn Granlund  <tege@swox.com>
15126
15127	* mpn/ia64/gmp-mparam.h: Update.
15128	* mpn/amd64/gmp-mparam.h: Update.
15129
15130	* mpn/ia64/sqr_diagonal.asm: Shave off a few cycles.
15131
151322004-09-11  Torbjorn Granlund  <tege@swox.com>
15133
15134	* mpn/ia64/mul_2.asm: New file.
15135	* mpn/ia64/addmul_2.asm: New file.
15136
15137	* mpn/ia64/addmul_1.asm: Tune a cycle from prologue.
15138
15139	* mpn/ia64/lorrshift.asm: Insert stops after several branches.
15140	* mpn/ia64/aorslsh1_n.asm: Likewise.
15141	* mpn/ia64/rsh1aors_n.asm: Likewise.
15142
15143	* mpn/generic/sqr_basecase.c: In variant for HAVE_NATIVE_mpn_addmul_2,
15144	accumulate carry also for when HAVE_NATIVE_mpn_addlsh1_n.
15145
151462004-09-07  Torbjorn Granlund  <tege@swox.com>
15147
15148	* mpn/ia64/submul_1.asm: Rewrite.
15149
15150	* mpn/ia64/addmul_1.asm: Format to placate HP-UX assembler.
15151	* mpn/ia64/mul_1.asm: Likewise.
15152
151532004-09-02  Torbjorn Granlund  <tege@swox.com>
15154
15155	* mpn/ia64/mul_1.asm: Optimize feed-in code.
15156	* mpn/ia64/addmul_1.asm: Rewrite feed-in code.
15157
151582004-08-29  Torbjorn Granlund  <tege@swox.com>
15159
15160	* tests/mpz/t-sizeinbase.c: Disable mpz_fake_bits and check_sample.
15161
151622004-07-16  Torbjorn Granlund  <tege@swox.com>
15163
15164	* mpn/ia64/addmul_1.asm: Format to placate HP-UX assembler.
15165
151662004-06-17  Kevin Ryde  <kevin@swox.se>
15167
15168	* doc/gmp.texi: Use @. when sentence ends with a capital, for good
15169	spacing in tex.
15170	(Language Bindings): Add gmp-d, reported by Ben Hinkle.  Update SWI
15171	Prolog URL, reported by Jan Wielemaker.
15172
151732004-06-09  Torbjorn Granlund  <tege@swox.com>
15174
15175	* configure.in: Handle --enable-fat.  Use that to enable x86 fat
15176	builds, remove magic meaning of i386-*-*.
15177
151782004-06-03  Kevin Ryde  <kevin@swox.se>
15179
15180	* gmp-impl.h (memset): Use a local char* pointer, in case parameter is
15181	something else (eg. tune/common.c).  Reported by Emmanuel Thomé.
15182
151832004-06-01  Kevin Ryde  <kevin@swox.se>
15184
15185	* config.guess (i?86-*-*): Avoid "Illegal instruction" message which
15186	goes to stdout on 80386 freebsd4.9.
15187
151882004-05-23  Niels Möller  <nisse@lysator.liu.se>
15189
15190	* mpn/generic/gcdext.c (gcdext_1_u): New function.
15191	(mpn_gcdext): Use it.
15192
151932004-05-23  Torbjorn Granlund  <tege@swox.com>
15194
15195	* mpn/generic/gcdext.c (gcdext_1_odd): Use masking to avoid jumps.
15196
151972004-05-22  Torbjorn Granlund  <tege@swox.com>
15198
15199	* mpn/x86/pentium4/sse2/addmul_1.asm: Add Prescott cycle numbers.
15200
15201	* mpn/amd64/divrem_1.asm: Shave a cycle from fraction development code.
15202
15203	* mpn/powerpc32/lshift.asm: Add more cycle numbers.
15204	* mpn/powerpc32/rshift.asm: Likewise.
15205
15206	* mpn/ia64/addmul_1.asm: Reformat.
15207
152082004-05-21  Torbjorn Granlund  <tege@swox.com>
15209
15210	* gmp-impl.h (mpn_mullow_n, mpn_mullow_basecase): Declare.
15211
15212	* tune/Makefile.am: Compile gcdext.c.
15213
15214	* gmp-impl.h (GET_STR_THRESHOLD_LIMIT): Lower outrageous value to 150.
15215	(GCDEXT_SCHOENHAGE_THRESHOLD): Set reasonable default.  Override when
15216	TUNE_PROGRAM_BUILD.
15217	(GCDEXT_THRESHOLD): Remove.
15218
15219	* tune/tuneup.c (gcdext_schoenhage_threshold): New variable.
15220	(gcdext_threshold): Remove variable.
15221	(tune_gcd_schoenhage): Lower step_factor to 0.1.
15222	(tune_gcdext_schoenhage): New function, based on tune_gcd_schoenhage.
15223	(tune_gcdext): Remove function.
15224	(all): Corresponding changes.
15225
152262004-05-21  Niels Möller  <nisse@lysator.liu.se>
15227
15228	* mpn/generic/gcdext.c: Complete rewrite.  Uses fast Lehmer code for
15229	small operands, and Schoenhage code for large operands.
15230
15231	* tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL): Ensure first operand is
15232	not smaller than 2nd operand.
15233
152342004-05-17  Kevin Ryde  <kevin@swox.se>
15235
15236	* gmp-h.in (mpz_get_ui): Use #if instead of plain if, and for nails
15237	use ?: same as normal case, to avoid warnings from Borland C++ 6.0.
15238	Reported by delta trinity.
15239
152402004-05-15  Kevin Ryde  <kevin@swox.se>
15241
15242	* tune/time.c (getrusage_backwards_p): New function
15243	(speed_time_init): Use it to exclude broken netbsd1.4.1 getrusage.
15244	* configure.in (m68*-*-netbsd1.4*): Remove code pretending getrusage
15245	doesn't exist.
15246	* tune/README (NetBSD 1.4.1 m68k): Update notes.
15247
15248	* configure.in (mips*-*-* ABI=n32): Remove gcc_n32_ldflags and
15249	cc_n32_ldflags, libtool knows to put the linker in n32 mode.
15250
152512004-05-15  Torbjorn Granlund  <tege@swox.com>
15252
15253	* config.guess (powerpc*-*-*): Add more processor types to mfpvr code.
15254	* configure.in: Generalize powerpc subtype matching code.
15255
15256	* mpz/fac_ui.c: Misc cleanups, spelling corrections.
15257
152582004-05-14  Kevin Ryde  <kevin@swox.se>
15259
15260	* mpf/sub.c: When one operand cancels high limbs of the other, strip
15261	high zeros on the balance before truncating to destination precision.
15262	Truncating first loses accuracy and can lead to a result 0 despite
15263	operands being not equal.  Reported by John Abbott.
15264	Also, ensure exponent is zero when result is zero, for instance if
15265	operands are exactly equal.
15266	* tests/mpf/t-sub.c (check_data): New function, exercising these.
15267
152682004-05-12  Kevin Ryde  <kevin@swox.se>
15269
15270	* configure.in (AC_PROG_RANLIB): New macro, supposedly required by
15271	automake, though it doesn't complain.
15272
15273	* demos/expr/Makefile.am (ARFLAGS): Add a default setting, to
15274	workaround an automake bug.
15275
152762004-05-10  Kevin Ryde  <kevin@swox.se>
15277
15278	* */Makefile.in, install-sh, aclocal.m4: Update to automake 1.8.4.
15279
15280	* doc/gmp.texi (Demonstration Programs): Add a remark about expression
15281	evaluation in the main gmp library.
15282
15283	* demos/expr/exprfa.c (mpf_expr_a): Correction to mpX_init, use
15284	mpf_init2 to follow requested precision.
15285	* demos/expr/exprza.c, demos/expr/exprqa.c: Use wrappers for mpX_init,
15286	to make parameters match.
15287
15288	* demos/expr/run-expr.c: Don't use getopt, to avoid needing configury
15289	for optarg declaration.  Remove TRY macro, rename foo and bar to var_a
15290	and var_b, for clarity.
15291	* demos/expr/expr-impl.h: Don't use expr-config.h.
15292	* configure.in (demos/expr/expr-config.h): Remove.
15293	* demos/expr/expr-config.in: Remove file.
15294
152952004-05-08  Kevin Ryde  <kevin@swox.se>
15296
15297	* doc/configuration (Configure): Update for current automake not
15298	copying acinclude.m4 into aclocal.m4.
15299
15300	* configure.in, Makefile.am, doc/gmp.texi, doc/configuration,
15301	tests/cxx/Makefile.am, demos/expr/Makefile.am, demos/expr/README,
15302	demos/expr/expr.c, demos/expr/expr.h, demos/expr/expr-config-h.in,
15303	demos/expr/expr-impl.h, demos/expr/run-expr.c, demos/expr/t-expr.c:
15304	MPFR now published separately, remove various bits.
15305	* mpfr/*, tests/cxx/t-headfr.cc, demos/expr/exprfr.c,
15306	demos/expr/exprfra.c: Remove.
15307
153082004-05-07  Kevin Ryde  <kevin@swox.se>
15309
15310	* tests/cxx/Makefile.am (TESTS_ENVIRONMENT): Amend c++ shared library
15311	path hack, on k62-unknown-dragonfly1.0 /usr/bin/make runs its commands
15312	"set -e", so we need an "|| true" in case there's nothing to copy (for
15313	instance in a static build).
15314
153152004-05-06  Kevin Ryde  <kevin@swox.se>
15316
15317	* mpn/alpha/mode1o.c: Remove, in favour of ...
15318	* mpn/alpha/mode1o.asm: New file.
15319	* mpn/alpha/alpha-defs.m4 (bwx_available_p): New macro.
15320
15321	* tune/amd64.asm: Save rbx in r10 rather than on the stack.
15322
15323	* configure.in (x86_64-*-*): Try also "-march=k8 -mno-sse2", in case
15324	we're in ABI=32 on an old OS not supporting xmm regs.
15325	(GMP_GCC_PENTIUM4_SSE2, GMP_OS_X86_XMM): Run these tests under
15326	-march=k8 too, and not under ABI=64.
15327
15328	* doc/gmp.texi (Converting Integers): For mpz_get_d, note truncation
15329	and overflows.  For mpz_get_d_2exp note truncation, note result if
15330	OP==0, and cross reference libc frexp.
15331	(Rational Conversions): For mpq_get_d, note truncation and overflows.
15332	(Converting Floats): For mpf_get_d, note truncation and overflows.
15333	For mpf_get_d_2exp, note truncation, note result if OP==0.
15334	(Assembler Code Organisation): Note nails subdirectories.
15335	Clarification of get_d_2exp OP==0 reported by Sylvain Pion.
15336
153372004-05-05  Torbjorn Granlund  <tege@swox.com>
15338
15339	* mpn/generic/mullow_n.c, mpn/generic/mullow_basecase.c: New files
15340	(mainly by Niels Möller).
15341	* configure.in, mpn/Makefile.am: Add them.
15342
15343	* gmp-impl.h (MULLOW_BASECASE_THRESHOLD, MULLOW_DC_THRESHOLD,
15344	MULLOW_MUL_N_THRESHOLD): Override for TUNE_PROGRAM_BUILD.
15345
15346	* tune/Makefile.am: Compile mullow_n.c.
15347	* tune/common.c (speed_mpn_mullow_n, speed_mpn_mullow_basecase):
15348	New functions.
15349	* tune/speed.c (routine): Add entries for mpn_mullow_n and
15350	mpn_mullow_basecase.
15351	* tune/speed.h (SPEED_ROUTINE_MPN_MULLOW_N_CALL,
15352	SPEED_ROUTINE_MPN_MULLOW_BASECASE): New #defines.
15353	* tune/tuneup.c (tune_mullow): New function.
15354
15355	* gmp-impl.h (invert_limb): Compute branch-freely.
15356
153572004-05-02  Kevin Ryde  <kevin@swox.se>
15358
15359	* mpn/amd64/mode1o.asm: Use movabsq to support large model non-PIC.
15360	Use 32-bit insns to save code bytes, and to save a couple of cycles on
15361	the initial setup multiplies.
15362
153632004-05-01  Kevin Ryde  <kevin@swox.se>
15364
15365	* doc/gmp.texi (References): Update gcc online docs url to
15366	gcc.gnu.org.
15367
15368	* configure.in (mips*-*-irix[6789]*): Correction to m4 quoting of this
15369	pattern.  (Believe the mips64*-*-* part also used picks up all current
15370	irix6 tuples anyway.)  Reported by Rainer Orth.
15371
153722004-04-30  Kevin Ryde  <kevin@swox.se>
15373
15374	* acinclude.m4 (GMP_PROG_CC_X86_GOT_EAX_EMITTED,
15375	GMP_ASM_X86_GOT_EAX_OK): New macros.
15376	(GMP_PROG_CC_WORKS): Use them to detect an old gas bug tickled by
15377	recent gcc.  Reported by David Newman.
15378
15379	* doc/gmp.texi (Reentrancy): Note also gmp_randinit_default as an
15380	alternative to gmp_randinit.
15381
153822004-04-29  Torbjorn Granlund  <tege@swox.com>
15383
15384	* configfsf.guess: Update to 2004-03-12.
15385	* configfsf.sub: Likewise.
15386
153872004-04-27  Torbjorn Granlund  <tege@swox.com>
15388
15389	* mpz/rrandomb.c (gmp_rrandomb): Rework to avoid extra limb allocation
15390	and to generate even numbers.
15391	* mpn/generic/random2.c (gmp_rrandomb): Likewise.
15392
153932004-04-25  Kevin Ryde  <kevin@swox.se>
15394
15395	* gmp-impl.h (FORCE_DOUBLE): Don't use an asm with a match constraint
15396	on a memory output, apparently not supported and provokes a warning
15397	from gcc 3.4.
15398
153992004-04-24  Kevin Ryde  <kevin@swox.se>
15400
15401	* longlong.h (count_leading_zeros_gcc_clz,
15402	count_trailing_zeros_gcc_ctz): New macros.
15403	(count_leading_zeros, count_trailing_zeros) [x86]: Use them on gcc
15404	3.4.
15405
15406	* configure.in (x86-*-* gcc_cflags_cpu): Give a -mtune at the start of
15407	each option list, for use by gcc 3.4 to avoid deprecation warnings
15408	about -mcpu.
15409
15410	* mpz/aorsmul.c, mpz/aorsmul_i.c, mpz/cfdiv_q_2exp.c,
15411	mpz/cfdiv_r_2exp.c, mpq/aors.c, mpf/ceilfloor.c: Give REGPARM_ATTR()
15412	on function definition too, as demanded by gcc 3.4.
15413
154142004-04-22  Kevin Ryde  <kevin@swox.se>
15415
15416	* tests/rand/t-lc2exp.c (check_bigc1): New test.
15417
15418	* doc/fdl.texi: Tweak @appendixsubsec -> @appendixsec to match our
15419	preference for this in an @appendix, and because texi2pdf doesn't
15420	support @appendixsubsec directly within an @appendix.
15421
154222004-04-20  Kevin Ryde  <kevin@swox.se>
15423
15424	* doc/texinfo.tex: Update to 2004-04-07.08 from texinfo 4.7.
15425	* doc/gmp.texi, mpfr/mpfr.texi (@copying): Don't put a line break in
15426	@ref within @copying, recent texinfo.tex doesn't like that.
15427
15428	* demos/perl/GMP.xs (static_functable): Treat cygwin the same as mingw
15429	DLLs.
15430
15431	* */Makefile.in, install-sh: Update to automake 1.8.3.
15432	* ltmain.sh, aclocal.m4, configure: Update to libtool 1.5.6.
15433
15434	* gmp-impl.h (LIMB_HIGHBIT_TO_MASK): Use a compile-time constant
15435	expression, rather than a configure test.
15436	* acinclude.m4, configure.in (GMP_C_RIGHT_SHIFT): Remove, no longer
15437	needed.
15438	* tests/t-hightomask.c: New file.
15439	* tests/Makefile.am (check_PROGRAMS): Add it.
15440
15441	* macos/configure (parse_top_configure): Look for PACKAGE_NAME and
15442	PACKAGE_VERSION now used by autoconf.
15443	(what_objects): Only demand 9 object files, as for instance occurs in
15444	the scanf directory.
15445	(asm files): Transform labels L(foo) -> Lfoo.  Take func name from
15446	PROLOGUE to support empty "EPILOGUE()".  Recognise and substitute
15447	register name "define()"s.
15448	* macos/Makefile.in (CmnObjs): Add tal-notreent.o.
15449
154502004-04-19  Torbjorn Granlund  <tege@swox.com>
15451
15452	* tune/speed.h (SPEED_ROUTINE_MPN_ROOTREM): New #define.
15453	(speed_mpn_rootrem): Declare.
15454	* tune/common.c (speed_mpn_rootrem): New function.
15455	* tune/speed.c (routine): Add entry for mpn_rootrem.
15456
154572004-04-16  Kevin Ryde  <kevin@swox.se>
15458
15459	* doc/fdl.texi: Update from FSF, just fixing a couple of typos.
15460
15461	* macos/configure, macos/Makefile.in: Add printf and scanf directories.
15462
15463	* tests/mpz/t-gcd.c (check_data): New function, exercising K6
15464	gcd_finda bug.
15465
154662004-04-14  Kevin Ryde  <kevin@swox.se>
15467
15468	* doc/gmp.texi (Reentrancy, Random State Initialization): Note
15469	gmp_randinit use of gmp_errno is not thread safe.  Reported by Vincent
15470	Lefèvre.
15471
15472	* doc/gmp.texi (Random State Initialization): Add index entries for
15473	gmp_errno and constants.
15474
15475	* mpn/m68k/README: Update _SHORT_LIMB -> __GMP_SHORT_LIMB.
15476
15477	* configure.in (--enable-mpbsd): Typo Berkley -> Berkeley in help msg.
15478
154792004-04-12  Kevin Ryde  <kevin@swox.se>
15480
15481	* demos/perl/GMP.xs (static_functable): New macro, use it for all
15482	function tables, to support mingw DLL builds.
15483	* demos/perl/INSTALL (NOTES FOR PARTICULAR SYSTEMS): Remove note on
15484	DLLs, should be ok now.
15485
15486	* demos/perl/sample.pl: Print the module and library versions in use.
15487
15488	* demos/perl/GMP.pm, Makefile.PL (VERSION): Set to '2.00'.
15489	* demos/perl/GMP.pm (COPYRIGHT): New in the doc section.
15490
15491	* Makefile.am: Note 4.1.3 libtool versioning info, and REVISION policy.
15492
15493	* tal-debug.c: Add <stdlib.h> for abort.
15494
154952004-04-07  Torbjorn Granlund  <tege@swox.com>
15496
15497	* tests/refmpf.c (refmpf_add_ulp): Adjust exponent when needed.
15498
15499	* mpn/generic/random2.c: Rewrite (clone mpz/rrandomb.c).
15500
155012004-04-07  Kevin Ryde  <kevin@swox.se>
15502
15503	* mpn/x86/k6/gcd_finda.asm: Correction jbe -> jb in initial setups.
15504	Zero flag is wrong here, it relects only the high limb of the compare,
15505	leading to n1>=n2 not satisfied and wrong results.  cp[1]==0x7FFFFFFF
15506	with cp[0]>=0x80000001 provokes this.
15507
15508	* doc/gmp.texi (BSD Compatible Functions): Note "pow" name clash under
15509	the pow function description too.
15510	(Language Bindings): Add XEmacs (betas at this stage).  Reported by
15511	Jerry James.
15512
15513	* tests/refmpn.c (refmpn_mod2): Correction to ASSERTs, r==a is allowed.
15514
15515	* gen-psqr.c (generate_mod): Cast mpz_invert_ui_2exp args, for K&R.
15516	* gen-bases.c, gen-fib.c, gen-psqr.c: For mpz_out_str, use stdout
15517	instead of 0, in case a K&R treats int and FILE* params differently.
15518
155192004-04-04  Kevin Ryde  <kevin@swox.se>
15520
15521	* gmp-impl.h (BSWAP_LIMB) [amd64]: New macro.
15522	(FORCE_DOUBLE): Use this for amd64 too.
15523
15524	* tests/amd64check.c, tests/amd64call.asm: New files, derived in part
15525	from x86check.c and x86call.asm.
15526	* tests/Makefile.am (EXTRA_libtests_la_SOURCES): Add them.
15527	* configure.in (x86_64-*-* ABI=64): Use them.
15528
155292004-04-03  Kevin Ryde  <kevin@swox.se>
15530
15531	* mpn/amd64/mode1o.asm: New file.
15532	* mpn/amd64/amd64-defs.m4 (ASSERT): New macro.
15533
15534	* mpn/x86/k7/mmx/divrem_1.asm, mpn/x86/pentium4/sse2/divrem_1.asm: Add
15535	note on how "dr" part of algorithm is handled.
15536
15537	* mpn/x86/k7/dive_1.asm, mpn/x86/k7/mod_34lsub1.asm,
15538	mpn/x86/k7/mode1o.asm: Note Hammer (32-bit mode) speeds.
15539
155402004-03-31  Kevin Ryde  <kevin@swox.se>
15541
15542	* doc/gmp.texi (Language Bindings): Add GOO, MLGMP and Numerix.
15543
15544	* mpf/mul_2exp.c, mpf/div_2exp.c: Rate u==0 as UNLIKELY.
15545
155462004-03-28  Torbjorn Granlund  <tege@swox.com>
15547
15548	* mpn/amd64/divrem_1.asm: Trim a few cycles.
15549
155502004-03-27  Torbjorn Granlund  <tege@swox.com>
15551
15552	* mpn/amd64/sublsh1_n.asm: Fix typo.
15553
15554	* mpn/generic/divrem_1.c: Fix typo.
15555
15556	* mpn/generic/sqr_basecase.c: Fix typo.
15557
15558	* mpn/amd64/divrem_1.asm: New file.
15559
155602004-03-20  Kevin Ryde  <kevin@swox.se>
15561
15562	* longlong.h (power, powerpc): Add comments on how we select this code.
15563
15564	* gmp-h.in (mpz_get_ui): Use ?: instead of mask style, gcc treats the
15565	two identically but ?: is a bit clearer.
15566
15567	* insert-dbl.c: Remove file, no longer used, scaling is now integrated
15568	in mpn_get_d.
15569	* Makefile.am (libgmp_la_SOURCES): Remove insert-dbl.c.
15570	* gmp-impl.h (__gmp_scale2): Remove prototype.
15571
155722004-03-17  Kevin Ryde  <kevin@swox.se>
15573
15574	* mpn/x86/fat/fat.c (__gmpn_cpuvec_init, fake_cpuid_table): Add x86_64.
15575
15576	* mpq/get_d.c: Use mpn_tdiv_qr, demand den>0 per canonical form.
15577
155782004-03-16  Torbjorn Granlund  <tege@swox.com>
15579
15580	* mpn/generic/sqr_basecase.c: Add versions using mpn_addmul_2 and
15581	mpn_addmul_2s.
15582
155832004-03-14  Kevin Ryde  <kevin@swox.se>
15584
15585	* mpf/mul_ui.c: Incorporate carry from low limbs, for exactness.
15586	* tests/mpf/t-mul_ui.c: New file.
15587	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
15588
15589	* mpf/div.c: Use mpn_tdiv_qr.  Use just one TMP_ALLOC.  Use full
15590	divisor, since truncating can lose accuracy.
15591	* tests/mpf/t-div.c: New file.
15592	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
15593
15594	* tests/mpf/t-set_q.c, tests/mpf/t-ui_div.c (check_various): Amend
15595	bogus 99/4 test.
15596	* tests/mpf/t-ui_div.c (check_rand): Exercise r==v overlap.
15597
15598	* tests/refmpf.c, tests/tests.h (refmpf_set_overlap): New function.
15599
15600	* mpf/cmp_si.c [nails]: Correction, cast vval in exp comparisons, for
15601	when vval=-0x800..00 and limb==longlong.
15602
15603	* mpf/cmp_si.c [nails]: Correction, return usign instead of 1 when
15604	uexp==2 but value bigger than an mp_limb_t.
15605	* tests/mpf/t-cmp_si.c (check_data): Add test cases.
15606
15607	* tests/trace.c (mpf_trace): Use ABS(mp_trace_base) to allow for
15608	negative bases used for upper case hex in integer traces.
15609
156102004-03-12  Torbjorn Granlund  <tege@swox.com>
15611
15612	* mpn/generic/sb_divrem_mn.c: Correct header comment.
15613
156142004-03-11  Kevin Ryde  <kevin@swox.se>
15615
15616	* aclocal.m4, configure, ltmain.sh: Downgrade to libtool 1.5, version
15617	1.5.2 doesn't remove .libs/*.a files when rebuilding, which is bad for
15618	development when changing contents or with duplicate named files like
15619	we have.
15620
15621	Revert this, ie restore AR_FLAGS=cq:
15622	* acinclude.m4 (GMP_PROG_AR): Remove AR_FLAGS=cq, libtool 1.5.2 now
15623	does this itself on detecting duplicate object filenames in piecewise
15624	linking mode.
15625
15626	* randbui.c, randmui.c [longlong+nails]: Correction to conditionals
15627	for second limb.
15628
15629	* mpz/aors_ui.h, mpz/cdiv_q_ui.c, mpz/cdiv_qr_ui.c, mpz/cdiv_r_ui.c,
15630	mpz/cdiv_ui.c, mpz/fdiv_q_ui.c, mpz/fdiv_qr_ui.c, mpz/fdiv_r_ui.c,
15631	mpz/fdiv_ui.c, mpz/gcd_ui.c, mpz/iset_ui.c, mpz/lcm_ui.c,
15632	mpz/set_ui.c, mpz/tdiv_q_ui.c, mpz/tdiv_qr_ui.c, mpz/tdiv_r_ui.c,
15633	mpz/tdiv_ui.c, mpz/ui_sub.c, mpf/div_ui.c, mpf/mul_ui.c
15634	[longlong+nails]: Amend #if to avoid warnings about shift amount.
15635
156362004-03-07  Kevin Ryde  <kevin@swox.se>
15637
15638	* mpf/reldiff.c: Use rprec+ysize limbs for d, to ensure accurate
15639	result.  Inline mpf_abs(d,d) and mpf_cmp_ui(x,0), and rate the latter
15640	UNLIKELY.
15641
15642	* mpf/ui_div.c: Use mpn_tdiv_qr.  Use just one TMP_ALLOC.  Use full
15643	divisor, since truncating can lose accuracy.
15644	* tests/mpf/t-ui_div.c: New file.
15645	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
15646
15647	* mpf/set_q.c: Expand TMP_ALLOC_LIMBS_2, to make conditional clearer
15648	and avoid 1 limb alloc when not wanted.
15649
15650	* gmp-impl.h (WANT_TMP_DEBUG): Define to 0 if not defined.
15651	(TMP_ALLOC_LIMBS_2): Use "if" within macro rather than "#if", for less
15652	preprocessor conditionals.
15653
15654	* mpf/mul_2exp.c, mpf/div_2exp.c: Add some comments.
15655
15656	* tests/refmpn.c (refmpn_sb_divrem_mn, refmpn_tdiv_qr): Nailify.
15657
156582004-03-04  Kevin Ryde  <kevin@swox.se>
15659
15660	* gen-psqr.c (print): Add CNST_LIMB in PERFSQR_MOD_TEST, for benefit
15661	of K&R.
15662	* tests/mpn/t-perfsqr.c (PERFSQR_MOD_1): Use CNST_LIMB for K&R.
15663
15664	* doc/configuration (Configure): Remove mkinstalldirs, no longer used.
15665
15666	* acinclude.m4 (GMP_PROG_AR): Remove AR_FLAGS=cq, libtool 1.5.2 now
15667	does this itself on detecting duplicate object filenames in piecewise
15668	linking mode.
15669
15670	* configure.in (hppa2.0*-*-*): Test sizeof(long) == 4 or 8 to verify
15671	ABI=2.0n versus ABI=2.0w.  In particular this lets CC=cc_bundled
15672	correctly fall back to ABI=2.0n (we don't automatically add CC=+DD64
15673	to that compiler, currently).
15674
15675	* doc/gmp.texi (Reentrancy): Note C++ mpf_class constructors using
15676	global default precision.
15677	(Random State Miscellaneous): Describe gmp_urandomb_ui as giving N
15678	bits.
15679	(C++ Interface Floats): Describe operator= copying the value, not the
15680	precision, and what this can mean about copy constructor versus
15681	default constructor plus assignment.
15682
15683	* mpf/set_q.c: Use mpn_tdiv_qr rather than mpn_divrem, so no shifting.
15684	Don't truncate the divisor, it can make the result inaccurate.
15685	* tests/mpf/t-set_q.c: New file.
15686	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
15687
15688	* mpf/set.c: Use MPN_COPY_INCR, in case r==u and ABSIZ(u) > PREC(r)+1.
15689	No actual bug here, because MPN_COPY has thusfar been an alias for
15690	MPN_COPY_INCR, only an ASSERT failure.
15691	* tests/mpf/t-set.c: New file.
15692	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
15693
15694	* mpf/set.c, mpf/iset.c: Do MPN_COPY last, for possible tail call.
15695
15696	* mpf/set_d.c: Rate d==0 as UNLIKELY.  Store size before extract call,
15697	to shorten lifespan of "negative".
15698
15699	* mpf/init.c, mpf/init2.c, mpf/iset_d.c, mpf/iset_si.c,
15700	mpf/iset_str.c, mpf/iset_ui.c: Store prec before alloc call, for one
15701	less live quantity across that call.
15702	* mpf/init.c, mpf/init2.c, mpf/iset_str.c: Store size and exp before
15703	alloc call, to overlap with other operations.
15704
15705	* tests/refmpf.c, tests/tests.h (refmpf_fill, refmpf_normalize,
15706	refmpf_validate, refmpf_validate_division): New functions.
15707
15708	* tests/refmpn.c, tests/tests.h (refmpn_copy_extend,
15709	refmpn_lshift_or_copy_any, refmpn_rshift_or_copy_any): New functions.
15710
15711	* tal-debug.c: Add <string.h> for strcmp.
15712
15713	* tests/cxx/t-istream.cc (check_mpz, check_mpq, check_mpf): Use size_t
15714	for loop index, to quieten g++ warning.
15715
157162004-03-02  Kevin Ryde  <kevin@swox.se>
15717
15718	* tests/mpn/t-hgcd.c: Use __GMP_PROTO on prototypes.
15719
157202004-03-01  Torbjorn Granlund  <tege@swox.com>
15721
15722	With Karl Hasselström:
15723	* mpn/generic/dc_divrem_n.c (mpn_dc_div_2_by_1): New function, with
15724	meat from old mpn_dc_divrem_n.  Accept scratch parameter.  Rewrite to
15725	avoid a recursive call.
15726	(mpn_dc_div_3_by_2): New function, with meat from old
15727	mpn_dc_div_3_halves_by_2.  Accept scratch parameter.
15728	(mpn_dc_divrem_n): Now just allocate scratch space and call new
15729	mpn_dc_div_2_by_1.
15730
157312004-02-29  Kevin Ryde  <kevin@swox.se>
15732
15733	* longlong.h (count_leading_zeros) [alpha gcc]: New version, inlining
15734	mpn/alpha/cntlz.asm cmpbge technique.
15735
15736	* aclocal.m4, configure, install-sh, missing, ltmain.sh,
15737	*/Makefile.in: Update to automake 1.8.2 and libtool 1.5.2.
15738
15739	* doc/gmp.texi (C++ Interface Integers): Note / and % rounding follows
15740	C99 / and %.
15741	(Exact Remainder): Index entries for divisibility testing algorithm.
15742
15743	* tune/time.c (speed_endtime): Return 0.0 for negative time measured.
15744	Revise usage comments for clarity.
15745	* tune/common.c (speed_measure): Recognise speed_endtime 0.0 for
15746	failed measurement.
15747
15748	* tests/mpn/t-get_d.c (check_rand): Correction to nhigh_mask setup.
15749
157502004-02-27  Torbjorn Granlund  <tege@swox.com>
15751
15752	* tune/tuneup.c (tune_dc, tune_set_str): Up param.step_factor.
15753
15754	* tests/mpz/t-gcd.c: Decrease # of tests to 50.
15755
157562004-02-27  Kevin Ryde  <kevin@swox.se>
15757
15758	* tests/devel/try.c: Add a comment that this is not for Cray systems.
15759
15760	* mpf/set_q.c: Don't support den(q)<0, demand canonical form in the
15761	usual way.
15762
157632004-02-24  Torbjorn Granlund  <tege@swox.com>
15764
15765	From Kevin:
15766	* mpn/generic/mul_fft.c (mpn_fft_add_modF): Loop until normalization
15767	criterion met.
15768
157692004-02-22  Kevin Ryde  <kevin@swox.se>
15770
15771	* acinclude.m4 (GMP_PROG_CC_WORKS, GMP_OS_X86_XMM, GMP_PROG_CXX_WORKS):
15772	Remove files that might look like compiler output, so our "||"
15773	alternatives are not fooled.
15774
15775	* acinclude.m4 (GMP_PROG_CC_WORKS): Add test for lshift_com code
15776	mis-compiled by certain IA-64 HP cc at +O3.
15777
15778	* gmp-impl.h (USE_LEADING_REGPARM): Disable under prof or gprof, for
15779	the benefit of freebsd where .mcount clobbers registers.  Spotted by
15780	Torbjorn.
15781	* configure.in (WANT_PROFILING_PROF, WANT_PROFILING_GPROF): New
15782	AC_DEFINEs.
15783
157842004-02-21  Kevin Ryde  <kevin@swox.se>
15785
15786	* configure.in (sparc64-*-*bsd*): Amend -m32 setup for ABI=32, so it's
15787	not used in ABI=64 on the BSD systems.
15788
157892004-02-18  Niels Möller  <nisse@lysator.liu.se>
15790
15791	* tests/mpz/t-gcd.c (gcdext_valid_p): New function.
15792	(ref_mpz_gcd): Deleted function.
15793	(one_test): Rearranged to call mpz_gcdext first, so that the
15794	returned value can be validated.
15795	(main): Don't use ref_mpz_gcd.
15796
157972004-02-18  Torbjorn Granlund  <tege@swox.com>
15798
15799	* gmp-impl.h (MPN_TOOM3_MAX_N): Move to !WANT_FFT section.
15800
15801	* tests/mpz/t-mul.c: Exclude special huge operands unless WANT_FFT.
15802
15803	* mpz/rrandomb.c (gmp_rrandomb): Rewrite.
15804
15805	* mpn/generic/mul_n.c (mpn_toom3_sqr_n): Remove write-only variable c5.
15806
158072004-02-18  Kevin Ryde  <kevin@swox.se>
15808
15809	* mpf/iset_si.c, mpf/iset_ui.c, mpf/set_si.c, mpf/set_ui.c [nails]:
15810	Always store second limb, to avoid a conditional.
15811
15812	* tests/mpf/t-get_ui.c: New file.
15813	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
15814	* tests/mpf/t-get_si.c (check_limbdata): Further tests.
15815	* gmp-impl.h (MP_EXP_T_MAX, MP_EXP_T_MIN): New defines.
15816
15817	* mpf/get_ui.c, mpf/get_si.c: Remove size==0 test, it's covered by
15818	other conditions.  Attempt greater clarity by expressing conditions as
15819	based on available data range.
15820	* mpf/get_si.c [nails]: Correction, don't bail on exp > abs_size,
15821	since may still have second limb above radix point available.
15822	* mpf/get_ui.c: Nailify.
15823
158242004-02-16  Kevin Ryde  <kevin@swox.se>
15825
15826	* mpz/scan0.c, mpz/scan1.c: Use count_trailing_zeros, instead of
15827	count_leading_zeros on limb&-limb.
15828
15829	* mpf/sqrt.c: Use "/ 2" for exp, avoiding C undefined behaviour on
15830	">>" of negatives.  Correction to comment, exp is rounded upwards.
15831	SIZ(r) always prec now, no need for tsize expression.  Store EXP(r)
15832	and SIZ(r) where calculated to reduce variable lifespans.  Make tsize
15833	mp_size_t not mp_exp_t, though of course those are currently the same.
15834
15835	* gmp-h.in (GMP_ERROR_ALLOCATE, GMP_ERROR_BAD_STRING,
15836	GMP_ERROR_UNUSED_ERROR): Remove, never used or documented, and we
15837	don't want to use globals for communicating error information.
15838
15839	* mpz/gcd_ui.c [nails]: Correction, actually return a value.
15840
15841	* mpn/generic/addmul_1.c, mpn/generic/submul_1.c [nails==1]: Add code.
15842
158432004-02-15  Kevin Ryde  <kevin@swox.se>
15844
15845	* tests/mpz/t-jac.c (check_data): Remove unnecessary variable
15846	"answer".
15847
158482004-02-14  Torbjorn Granlund  <tege@swox.com>
15849
15850	* mpn/ia64/aors_n.asm: Break a group with a RAW conflict.
15851
158522004-02-14  Kevin Ryde  <kevin@swox.se>
15853
15854	* acinclude.m4 (GMP_C_RIGHT_SHIFT): Note that it's "long"s which we're
15855	concerned about.
15856
15857	* mpn/generic/mul_n.c: Add some remarks about toom3 high zero
15858	stripping.
15859
15860	* mpn/generic/scan0.c, mpn/generic/scan1.c: Remove design issue
15861	remarks.  What to do about going outside `up' space is a problem, but
15862	anything to address it would be an incompatible change.
15863
158642004-02-12  Torbjorn Granlund  <tege@swox.com>
15865
15866	* tests/mpn/t-hgcd.c: Remove unused variables.
15867
15868	* mpn/ia64/hamdist.asm: Remove bundling incompatible with HP-UX
15869	assembler.  Misc HP-UX changes.
15870	* mpn/ia64/gcd_1.asm: Add some syntax to placid the HP-UX assembler.
15871
158722004-02-11  Kevin Ryde  <kevin@swox.se>
15873
15874	* longlong.h (power, powerpc): Use HAVE_HOST_CPU_FAMILY_power and
15875	HAVE_HOST_CPU_FAMILY_powerpc rather than various cpp defines.
15876
15877	* gmp-impl.h: Add remarks about limits.h and Cray etc.
15878
15879	* mpn/ia64/mul_1.asm: Don't put .pred directives on labelled lines,
15880	hpux 11.23 assembler doesn't like that.
15881	* mpn/ia64/README: Add a note on this.
15882
15883	* dumbmp.c (mpz_mul): Set ALLOC(r) for new data block used.  Reported
15884	by Jason Moxham.
15885
15886	* mpn/pa32/README, mpn/pa64/README (REFERENCES): New sections.
15887
158882004-02-10  Torbjorn Granlund  <tege@swox.com>
15889
15890	* tests/mpz/t-gcd.c: Decrease # of tests run.
15891
15892	* mpn/*/gmp-mparam.h: Add HGCD values, update TOOM values.
15893
158942004-02-01  Torbjorn Granlund  <tege@swox.com>
15895
15896	From Kevin:
15897	* config.guess: Recognize AMD's hammer processors, return x86_64.
15898
158992004-01-31  Niels Möller  <nisse@lysator.liu.se>
15900
15901	* mpn/generic/hgcd.c (mpn_cmp_sum3): Declare static.
15902
159032004-01-25  Niels Möller  <nisse@lysator.liu.se>
15904
15905	* tests/mpn/Makefile.am (check_PROGRAMS): Add t-hgcd.
15906
15907	* mpn/generic/hgcd.c (hgcd_jebelean): Simplify, use mpn_cmp_sum3.
15908	(mpn_cmp_sum3): New function.
15909	(mpn_diff_smaller_p): Remove.
15910	(hgcd_final, hgcd_jebelean, hgcd_small_1, hgcd_small_2, euclid_step):
15911	Remove tp,talloc arguments.  Callers changed.
15912
159132004-01-25  Torbjorn Granlund  <tege@swox.com>
15914
15915	* tune/tuneup.c (all): Reenable calls of tune_gcd_schoenhage and
15916	tune_hgcd.
15917
15918	* mpn/generic/gcd.c: Reenable Schoenhage code.
15919
15920	With Niels Möller:
15921	* mpn/generic/hgcd.c: Add const and inline to several functions.
15922	(qstack_push_start qstack_push_end qstack_push_quotient): Remove.
15923	(euclid_step): Insert removed functions here.
15924	(hgcd_adjust): Simplify, don't handle d != 1.
15925	(qstack_adjust): Corresponding changes.
15926	(mpn_hgcd2_lehmer_step): Remove redundant tests for bh against zero.
15927	(hgcd_start_row_p): Tweak.
15928	(hgcd_final): Shorten life of ralloc.
15929
159302004-01-24  Kevin Ryde  <kevin@swox.se>
15931
15932	* tests/mpf/t-sqrt.c (check_rand1): Further diagnostic printouts.
15933
15934	* mpn/generic/sqrtrem.c (mpn_sqrtrem): Add ASSERT_MPN.
15935	(mpn_dc_sqrtrem): Add casts for K&R.
15936
15937	* mpf/sqrt_ui.c: Nailify.
15938
15939	* mpf/set_z.c: Do MPN_COPY last, for possible tail call.
15940
15941	* doc/gmp.texi (Miscellaneous Float Functions): For mpf_random2, note
15942	exponent is in limbs.
15943
15944	* mpn/ia64/README: Add remark about concentrating on itanium-2.
15945
159462004-01-22  Kevin Ryde  <kevin@swox.se>
15947
15948	* mpf/sqrt.c: Change tsize calculation to get prec limbs result
15949	always, previously got prec+1 when exp was odd.
15950	* tests/mpf/t-sqrt.c (check_rand1): New function, code from main.
15951	(check_rand2): New function.
15952
15953	* mpf/sqrt_ui.c: Change rsize calculation to get prec limbs result,
15954	previously got prec+1.
15955	* tests/mpf/t-sqrt_ui.c: New file.
15956	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
15957
15958	* tests/refmpf.c, tests/tests.h (refmpf_add_ulp,
15959	refmpf_set_prec_limbs): New functions.
15960
15961	* mpz/get_d_2exp.c, mpf/get_d_2exp.c: Remove x86+m68k force to double,
15962	mpn_get_d now does this.  Remove res==1.0 check for round upwards,
15963	mpn_get_d now rounds towards zero.  Move exp store to make mpn_get_d a
15964	tail call.
15965
15966	* configure.in (x86-*-*): Use ABI=32 rather than ABI=standard.
15967	Use gcc -m32 when available, to force mode on bi-arch amd64 gcc.
15968	* configure.in, acinclude.m4 (x86_64-*-*): Merge into plain x86 setups
15969	as ABI=64.  Support ABI=32, using athlon code.  Use gcc -mcpu=k8,
15970	-march=k8.
15971	(amd64-*-*): Remove pattern, config.sub only gives x86_64.
15972	* doc/gmp.texi (ABI and ISA): Add x86_64 dual ABIs.
15973
15974	* mpn/amd64/README: Add reference to ABI spec.
15975
159762004-01-17  Niels Möller  <nisse@lysator.liu.se>
15977
15978	* mpn/generic/hgcd.c (hgcd_adjust): Backed out mpn_addlsh1_n
15979	change for now.
15980
15981	* mpn/generic/hgcd.c (hgcd_adjust): Fixed calls of mpn_addlsh1_n.
15982
159832004-01-17  Kevin Ryde  <kevin@swox.se>
15984
15985	* tune/README: Remove open/mpn versions of toom3, no longer exist.
15986	* tune/powerpc64.asm: Remove unused L(again).
15987	* tune/time.c (mftb): Note single mftb possible for powerpc64.
15988
15989	* mpn/generic/mode1o.c: Use "c<s" to do underflow detection in last
15990	step, for better parallelism.
15991
15992	* mpn/generic/get_d.c: Preserve comments about hppa fcnv,udw,dbl from
15993	previous mpz_get_d code.
15994
15995	* tune/freq.c: Add some comments about systems not covered.
15996
15997	* gmp-h.in (_GMP_H_HAVE_FILE): Add _MSL_STDIO_H for Metrowerks.
15998	Reported by Tomas Zahradnicky.
15999
160002004-01-16  Niels Möller  <nisse@lysator.liu.se>
16001
16002	* mpn/generic/hgcd.c (mpn_diff_smaller_p): Use MPN_DECR_U.
16003	(hgcd_adjust): Use mpn_addlsh1_n when available.
16004
160052004-01-16  Kevin Ryde  <kevin@swox.se>
16006
16007	* configure.in (powerpc64-*-linux*): Try gcc64.  Try -m64 with
16008	"cflags_maybe" to get it used in all probing.  Add sizeof-long-8 test
16009	to check the mode is right if -m64 is not applicable.
16010
160112004-01-15  Kevin Ryde  <kevin@swox.se>
16012
16013	* configure.in (--with-readline=detect): Check for readline/readline.h
16014	and readline/history.h.  Report result of detection.
16015
160162004-01-14  Niels Möller  <nisse@lysator.liu.se>
16017
16018	* tune/speed.c (routine): Disabled speed_mpn_hgcd_lehmer.
16019	* tune/common.c (speed_mpn_hgcd_lehmer): Disabled function.
16020
16021	* mpn/generic/hgcd.c (mpn_hgcd_lehmer_itch, mpn_hgcd_lehmer)
16022	(mpn_hgcd_equal): Deleted functions.
16023
16024	* mpn/generic/gcd.c (hgcd_start_row_p): Deleted function.
16025	(gcd_schoenhage): Deleted assertion code using mpn_hgcd_lehmer.
16026
16027	* mpn/generic/hgcd.c (hgcd_final): Fixed ASSERT typos.
16028	(mpn_hgcd): To use Lehmer's algorithm, call hgcd_final directly,
16029	not mpn_hgcd_lehmer.
16030
16031	* mpn/generic/gcd.c (gcd_schoenhage): Updated for changes to
16032	mpn_hgcd and mpn_hgcd_fix. (Schoenhage code is still disabled).
16033
16034	* gmp-impl.h (mpn_hgcd_fix): Updated prototype.
16035
16036	* mpn/generic/hgcd.c (mpn_hgcd_fix): Replaced a bunch of arguments
16037	by a pointer const struct hgcd_row *s. Updated callers.
16038
16039	* mpn/generic/hgcd.c (hgcd_start_row_p): Use const for the input.
16040	Moved function definition before hgcd_jebelean.
16041	(hgcd_jebelean): Interface change, analogous to hgcd2.
16042	(mpn_hgcd_fix): Normalize v. Require that v > 0.
16043	(hgcd_adjust): Fix bug in carry update.
16044	(mpn_hgcd): Reorganized again, to adapt to mpn_hgcd/hgcd_jebelean
16045	now sometimes returning 1. Reintroduced hgcd_adjust.
16046
16047	* mpn/generic/hgcd.c (hgcd_final): Streamlined logic for the first
16048	hgcd2 call.
16049
16050	* mpn/generic/hgcd2.c (mpn_hgcd2): Interface change. Return 1
16051	instead of 2, in the no progress case r0=A, r1=B.
16052
16053	* mpn/generic/hgcd.c (hgcd_adjust): Changed arguments and return
16054	value. Now takes a struct hgcd_row * and the uv size, and returns
16055	updated uvsize.
16056	(hgcd_final): Special handling of the case hgcd2 returning 1. Now
16057	uses hgcd_adjust, instead of a full Euclid division.
16058
160592004-01-13  Niels Möller  <nisse@lysator.liu.se>
16060
16061	* mpn/generic/hgcd.c (euclid_step, hgcd_case0): Merged into a
16062	single function euclid_step.
16063	(mpn_hgcd): Reorganized the logic for the second recursive call.
16064	Avoid unnecessary Euclid steps.
16065
16066	* tests/mpn/t-hgcd.c (hgcd_values): One more test value.
16067
16068	* tests/mpn/t-hgcd.c (hgcd_values): Added values that trigged the
16069	hgcd_jebelean bug.
16070
16071	* mpn/generic/hgcd.c (hgcd_jebelean): Fixed off by one error.
16072	(mpn_hgcd): Simplified the logic for the first recursive call. Now
16073	it uses only the correct values from the recursive call, and
16074	doesn't do tricks with hgcd_adjust (hgcd_adjust will probably be
16075	reintroduced later, though).
16076
16077	* tests/mpn/t-hgcd.c (mpz_mpn_equal, hgcd_ref_equal)
16078	(hgcd_ref_init, hgcd_ref_clear): New functions.
16079	(hgcd_ref): Reference implementation of hgcd, using mpz.
16080	(one_test): Use hgcd_ref. Don't use mpn_hgcd_lehmer.
16081	(main): Skip one_step if both input values are zero.
16082
160832004-01-12  Niels Möller  <nisse@lysator.liu.se>
16084
16085	* mpn/generic/hgcd.c (hgcd_final): Rewritten, now uses Lehmer
16086	steps instead of a division loop.
16087	(mpn_hgcd_lehmer): Deleted old Lehmer code, instead just
16088	initialize and then call hgcd_final.
16089
16090	* tests/tests.h: Added refmpn_free_limbs prototype.
16091	* tests/refmpn.c (refmpn_free_limbs): New function.
16092
16093	* tests/mpn/t-hgcd.c: Try the same kind of random inputs as for
16094	mpz/t-gcd.
16095
160962004-01-11  Niels Möller  <nisse@lysator.liu.se>
16097
16098	* mpn/generic/hgcd.c (mpn_hgcd_lehmer): Rewritten, after some more
16099	analysis of the size reduction for one Lehmer step.
16100
16101	* tests/mpn/t-hgcd.c: New file.
16102
161032004-01-11  Torbjorn Granlund  <tege@swox.com>
16104
16105	With Niels Möller:
16106	* mpn/generic/hgcd.c (hgcd_normalize): Fix ASSERTs.
16107	(hgcd_mul): Normalize R[1].uvp[1].  Add some more ASSERTs.
16108	(hgcd_update_uv): Streamline.  ASSERT that input and output is
16109	normalized.
16110
161112004-01-11  Kevin Ryde  <kevin@swox.se>
16112
16113	* mpn/alpha/ev6/slot.pl: New file, derived in part from
16114	mpn/x86/k6/cross.pl.
16115
16116	* mpn/alpha/alpha-defs.m4 (ASSERT): New macro.
16117
16118	* mpn/asm-defs.m4 (m4_ifdef): New macro, avoiding OSF 4.0 m4 bug.
16119	(m4_assert_defined): Use it.
16120
16121	* mpn/alpha/default.m4, mpn/alpha/unicos.m4 (LDGP): New macro.
16122	* mpn/alpha/ev67/gcd_1.asm: Use it to re-establish gp after jsr.
16123
16124	* configure.in, demos/calc/Makefile.am: Use -lcurses or -lncurses with
16125	readline, when available.
16126
16127	* longlong.h (sub_ddmmss) [generic]: Use al<bl for the borrow rather
16128	than __x>al, since the former can be done without waiting for __x,
16129	helping superscalar chips, in particular alpha ev5 and ev6.
16130
16131	* longlong.h (sub_ddmmss) [ia64]: New macro.
16132
16133	* tests/t-sub.c: New file.
16134	* tests/Makefile.am (check_PROGRAMS): Add it.
16135	* tests/refmpn.c, tests/tests.h (refmpn_sub_ddmmss): New function.
16136
161372004-01-09  Kevin Ryde  <kevin@swox.se>
16138
16139	* mpn/x86/p6/mod_34lsub1.asm: New file, derived in part from
16140	mpn/x86/mod_34lsub1.asm.
16141
16142	* configure.in (IA64_PATTERN): Use -mtune on gcc 3.4.
16143
161442004-01-07  Kevin Ryde  <kevin@swox.se>
16145
16146	* gmp-h.in, mp-h.in (__GMP_SHORT_LIMB): Renamed from _SHORT_LIMB, to
16147	keep in our namespace.  (Not actually used anywhere currently.)
16148	Reported by Patrick Pelissier.
16149
16150	* mp-h.in: Use "! defined (__GMP_WITHIN_CONFIGURE)" in the same style
16151	as gmp-h.in (though mp-h.in is not actually used during configure).
16152
16153	* mp-h.in (__GMP_DECLSPEC_EXPORT, __GMP_DECLSPEC_IMPORT) [__GNUC__]:
16154	Use __dllexport__ and __dllimport__ to keep out of application
16155	namespace.  Same previously done in gmp-h.in.
16156
161572004-01-06  Kevin Ryde  <kevin@swox.se>
16158
16159	* configfsf.sub, configfsf.guess: Update to 2004-01-05.
16160	* configure.in (amd64-*-* | x86_64-*-*): Update comments on what
16161	configfsf.sub does.
16162
161632004-01-04  Kevin Ryde  <kevin@swox.se>
16164
16165	* mpn/alpha/README (REFERENCES): Add tru64 assembly manuals.
16166	(ASSEMBLY RULES): Note what gcc says about !literal! etc.
16167
161682004-01-03  Kevin Ryde  <kevin@swox.se>
16169
16170	* mpn/alpha/ev67/gcd_1.asm: New file.
16171
16172	* mpn/x86/pentium4/sse2/rsh1add_n.asm: New file, derived in part from
16173	mpn/x86/pentium4/sse2/addlsh1_n.asm.
16174
16175	* mpn/x86/p6/p3mmx/popham.asm: Note measured speeds.
16176
16177	* mpn/ia64/hamdist.asm: Correction to inputs vs locals in alloc (makes
16178	no difference to the generated code).  Corrections to a couple of
16179	comments.
16180
16181	* mpn/x86/pentium4/sse2/addlsh1_n.asm (PARAM_CARRY): Remove macro, not
16182	used, no such parameter.
16183
16184	* mpn/generic/gcd.c: Use <stdio.h> for NULL.
16185
16186	* doc/gmp.texi (Single Limb Division): Correction to tex expression
16187	for (1/2)x1.  And minor wording tweaks elsewhere.
16188
16189	* gmp-impl.h (mpn_rsh1add_n, mpn_rsh1sub_n): Correction to comments
16190	about how carries returned.
16191
16192	* longlong.h (umul_ppmm) [generic]: Add comments about squaring
16193	(dropped from tasks list)
16194
161952003-12-31  Kevin Ryde  <kevin@swox.se>
16196
16197	* demos/perl/GMP.xs (scan0, scan1): Return ~0 for not-found.
16198	* demos/perl/GMP.pm: Describe this, remove the note about ULONG_MAX
16199	being the same as ~0 (which is not true in old perl).
16200	* demos/perl/test.pl: Update tests.
16201	* demos/perl/typemap (gmp_UV): New type.
16202
16203	* demos/perl/test.pl (fits_slong_p): Comment out uv_max test, it won't
16204	necessarily exceed a long.
16205
16206	* demos/perl/GMP.pm: Add a remark about get_str to the bugs section.
16207
16208	* mpn/generic/sqrtrem.c, mpz/fac_ui.c, tests/mpf/reuse.c: Add casts
16209	for K&R.
16210	* tests/mpf/t-muldiv.c: Make ulimb, vlimb into ulongs, which is how
16211	they're used, for the benefit of K&R calling.
16212
16213	* doc/gmp.texi (Square Root Algorithm): Add a summary of the algorithm.
16214	And add further index entries in various places.
16215
16216	* mpz/lucnum_ui.c, mpz/lucnum2_ui.c: Use mpn_addlsh1_n when available.
16217
16218	* gmp-impl.h, mpn/generic/mul_n.c (mpn_addlsh1_n, mpn_sublsh1_n,
16219	mpn_rsh1add_n, mpn_rsh1sub_n): Move descriptions to gmp-impl.h with
16220	the prototypes, for ease of locating.
16221
162222003-12-30  Torbjorn Granlund  <tege@swox.com>
16223
16224	* tune/tuneup.c (all): Disable calls of tune_gcd_schoenhage and
16225	tune_hgcd for now.
16226
162272003-12-29  Torbjorn Granlund  <tege@swox.com>
16228
16229	* tests/mpz/t-gcd.c: Rewrite, based on suggestions by Kevin.
16230
16231	* mpn/ia64/mul_1.asm: Amend TODO list.
16232
16233	* mpn/sparc64/README: Remove mpn_Xmul_2, done.
16234	Add blurb about L1 cache conflicts.
16235
16236	* mpn/generic/gcd.c: Disable Schoenhage code for now.
16237
162382003-12-29  Kevin Ryde  <kevin@swox.se>
16239
16240	* mpn/generic/mul_fft.c, mpz/root.c, mpq/cmp_ui.c: Add casts for K&R.
16241
162422003-12-27  Kevin Ryde  <kevin@swox.se>
16243
16244	* tests/mpz/t-mul.c (mul_kara, mul_basecase): Use __GMP_PROTO.
16245
16246	* mpn/generic/gcd.c (NHGCD_SWAP4_2, NHGCD_SWAP3_LEFT),
16247	mpn/generic/hgcd.c (HGCD_SWAP4_LEFT, HGCD_SWAP4_RIGHT, HGCD_SWAP4_2,
16248	HGCD_SWAP3_LEFT): Aggregate initializers for automatics is an
16249	ANSI-ism, avoid.
16250
16251	* Makefile.am (AUTOMAKE_OPTIONS): Restore this, giving no directory on
16252	ansi2knr to avoid a circular build rule.
16253	* configure.in (AM_INIT_AUTOMAKE): Note options also in Makefile.am.
16254
16255	* configure.in (cflags_maybe): Don't loop adding cflags_maybe if the
16256	user has set CFLAGS.
16257
162582003-12-24  Torbjorn Granlund  <tege@swox.com>
16259
16260	* mpn/generic/gcd.c (gcd_schoenhage_itch): Avoid unary "+".
16261	(mpn_gcd): Allocate scratch space on heap for gcd_schoenhage.
16262	(mpn_gcd): Don't invoke MPN_NORMALIZE on input operands.
16263
162642003-12-23  Kevin Ryde  <kevin@swox.se>
16265
16266	* configure.in (*sparc*-*-*): Test sizeof(long)==4 or 8 for ABIs, to
16267	get the right mode when the user sets the CFLAGS.
16268	(testlist): Introduce "any_<abi>_testlist" to apply to all compilers.
16269
16270	* demos/perl/typemap (MPZ_ASSUME, MPQ_ASSUME, MPF_ASSUME): Remove
16271	output rules, these are only meant for inputs.
16272	(MPZ_MUTATE): Remove, not used since changes for magic.
16273
16274	* demos/perl/GMP.xs (mpz_class_hv, mpq_class_hv, mpf_class_hv): New
16275	variables, initialized in BOOT.
16276	* demos/perl/GMP.xs, demos/perl/typemap: Use them and explicit
16277	sv_bless, to save a gv_stashpv for every new object.
16278
162792003-12-22  Kevin Ryde  <kevin@swox.se>
16280
16281	* mpn/alpha/mode1o.c, mpn/alpha/dive_1.c: Moved from ev5/mode1o.c and
16282	ev5/dive_1.c, these are good for ev4, and would like them in a generic
16283	alpha build.
16284
162852003-12-21  Kevin Ryde  <kevin@swox.se>
16286
16287	* doc/gmp.texi (Integer Logic and Bit Fiddling): Say "bitwise" in
16288	mpz_and, mpz_ior and mpz_xor, to avoid any confusion with what C means
16289	by "logical".  Reported by Rüdiger Schütz.
16290
16291	* gmp-h.in (_GMP_H_HAVE_FILE): Note why defined(EOF) is not good.
16292
162932003-12-20  Torbjorn Granlund  <tege@swox.com>
16294
16295	* mpn/generic/hgcd.c (mpn_diff_smaller_p): Use mpn_cmp instead of
16296	mpn_sub_n where possible.  Use mp_size_t for relevant variables.
16297
162982003-12-20  Kevin Ryde  <kevin@swox.se>
16299
16300	* tune/speed.h (SPEED_TMP_ALLOC_LIMBS): Correction to last change,
16301	don't want "- 1" on the TMP_ALLOC_LIMBS.
16302
16303	* demos/expr/expr.h: Test #ifdef MPFR_VERSION_MAJOR for when mpfr.h is
16304	included, not GMP_RNDZ which is now an enum.
16305
16306	* demos/expr/exprfra.c (e_mpfr_ulong_p): Use mpfr_integer_p and
16307	mpfr_fits_ulong_p.
16308	(e_mpfr_get_ui_fits): Use mpfr_get_ui.
16309
16310	* mpfr/*: Update to mpfr cvs head 2003-12-20.
16311
16312	* configure, config.in: Update to autoconf 2.59.
16313	* */Makefile.in, configure, aclocal.m4, ansi2knr.c, install-sh,
16314	doc/mdate-sh: Update to automake 1.8.
16315
16316	* mkinstalldirs: Remove, not required by automake 1.8.
16317	* doc/gmp.texi (Build Options): HTML is a usual target in automake 1.8.
16318
16319	* configure.in (AC_PREREQ): Require autoconf 2.59.
16320	(AM_INIT_AUTOMAKE): Require automake 1.8.
16321	(AC_C_INLINE): Use rather than GMP_C_INLINE, now has #ifndef
16322	__cplusplus we want.
16323	(gettimeofday): Use AC_CHECK_FUNCS rather than our workaround code,
16324	autoconf now ok.
16325
16326	* acinclude.m4 (GMP_C_INLINE): Remove.
16327	(GMP_H_EXTERN_INLINE): Use AC_C_INLINE.
16328	(GMP_PROG_AR): Comment on automake $ARFLAGS.
16329
163302003-12-19  Niels Möller  <nisse@lysator.liu.se>
16331
16332	* mpn/generic/hgcd.c (mpn_diff_smaller_p): Rewrote function. Tried
16333	to explain how it works.
16334	(slow_diff_smaller_p, wrap_mpn_diff_smaller_p) [WANT_ASSERT]: Use
16335	CPP to wrap assertion checks around all calls to
16336	mpn_diff_smaller_p.
16337
16338	* mpn/generic/hgcd.c (mpn_addmul2_n_1) [nails]: Fixed carry handling.
16339
16340	* mpn/generic/hgcd.c (mpn_diff_smaller_p) [nails]: Use
16341	GMP_NUMB_MAX, not MP_LIMB_T_MAX.
16342	(mpn_hgcd_itch): Improved size calculation.
16343	(mpn_hgcd_max_recursion): Moved function from qstack.c. Should to
16344	be recompiled when HGCD_SCHOENHAGE_THRESHOLD is tuned.
16345
16346	* mpn/generic/qstack.c (mpn_hgcd_max_recursion): ... moved from
16347	here.
16348
163492003-12-19  Torbjorn Granlund  <tege@swox.com>
16350
16351	* tests/mpf/t-get_d.c: Print message before aborting.
16352
16353	* mpn/generic/hgcd2.c (mpn_hgcd2): Substitute always-zero variable
16354	with 0.  Remove bogus comment.
16355
16356	* mpn/generic/get_d.c: Make ONE_LIMB case actually work for nails.
16357
163582003-12-18  Niels Möller  <niels@lysator.liu.se>
16359
16360	* mpn/generic/hgcd.c (hgcd_update_r): Assert that the output r2 is
16361	smaller than the input r1.
16362
163632003-12-18  Torbjorn Granlund  <tege@swox.com>
16364
16365	* mpz/get_d.c: Don't include longlong.h.
16366
16367	* tests/mpz/t-mul.c (ref_mpn_mul): Handle un == vn specially, to avoid
16368	a dummy r/w outside of allocated area.
16369
163702003-12-18  Kevin Ryde  <kevin@swox.se>
16371
16372	* mpn/alpha/unicos.m4 (ALIGN): Add comments on what GCC does.
16373
16374	* configure.in (fat setups), acinclude.m4 (GMP_INIT): Obscure
16375	include() from automake 1.8 aclocal.
16376	* acinclude.m4: Quote names in AC_DEFUN, for automake 1.8 aclocal.
16377
163782003-12-17  Niels Möller  <nisse@lysator.liu.se>
16379
16380	* tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer) [nails]:
16381	Enabled code also for GMP_NAIL_BITS > 0.
16382	* tune/speed.c [nails]: Enable speed_mpn_hgcd and
16383	speed_mpn_hgcd_lehmer.
16384	* tune/tuneup.c (tune_hgcd) [nails]: Likewise.
16385
16386	* mpn/generic/gcd.c [nails]: Use Schönhage's algorithm also for
16387	GMP_NAIL_BITS > 0.
16388
16389	* mpn/generic/hgcd.c [nails]: Enable the code for GMP_NAIL_BITS > 0.
16390	(MPN_EXTRACT_LIMB) [nails]: Handle nails.
16391	(__gmpn_hgcd_sanity): Allocate temporaries on the heap, not on the
16392	stack. Also check that r[i] >= r[i+1].
16393	(mpn_hgcd2_lehmer_step) [nails]: Handle nails.
16394	(mpn_hgcd_lehmer): When we temporarily have r3 > r2, avoid
16395	trigging that assert in __gmpn_hgcd_sanity.
16396	(mpn_hgcd): Likewise.
16397
16398	* mpn/generic/hgcd2.c (div2) [nails]: Alternative nail-aware
16399	version.
16400	(SUB_2): New macro of Kevin's, which reduces do sub_ddmmss in the
16401	non-nail case.
16402	(HGCD2_STEP): Use SUB_2, not sub_ddmmss. Added alternative version
16403	for K&R compilers.
16404	(mpn_hgcd2) [nails]: Use SUB_2, not sub_ddmmss. New nail-aware
16405	code for checking Jebelean's condition.
16406
164072003-12-13  Kevin Ryde  <kevin@swox.se>
16408
16409	* mpq/get_d.c: Amend comments per mpn_get_d change.
16410	(limb2dbl): Remove, no longer used.
16411
16412	* gmp-impl.h (DIVREM_1_NORM_THRESHOLD etc) [nails]: Correction to
16413	comments, MP_SIZE_T_MAX means preinv never.
16414
16415	* gmp-impl.h (DIVEXACT_1_THRESHOLD, MODEXACT_1_ODD_THRESHOLD) [nails]:
16416	Remove overrides, divexact_1 and modexact_1 have been nailified.
16417
16418	* mpz/inp_str.c (mpz_inp_str_nowhite): Use ASSERT_ALWAYS for EOF value
16419	requirement.
16420
16421	* tests/refmpn.c (refmpn_rsh1add_n, refmpn_rsh1sub_n): Parens around
16422	GMP_NUMB_BITS - 1 with ">>", to quieten gcc -Wall.
16423	* tests/t-constants.c (main), tests/t-count_zeros.c (check_clz),
16424	tests/t-modlinv.c (one), tests/mpz/t-jac.c (try_si_zi),
16425	tests/mpq/t-get_d.c (check_onebit): : Correction to printfs.
16426	* tests/mpn/t-fat.c: Add <string.h> for memcpy.
16427	* tests/mpz/t-scan.c (check_ref): Remove unused variable "isigned".
16428	* tests/mpq/t-get_d.c (check_onebit): Remove unused variable "limit".
16429	* tests/mpf/t-set_si.c, tests/mpf/t-set_ui.c (check_data): Braces for
16430	initializers.
16431	* tests/devel/try.c (mpn_divexact_by3_fun, mpn_modexact_1_odd_fun):
16432	Correction to return values.
16433
16434	* doc/gmp.texi (Miscellaneous Integer Functions): Note mpz_sizeinbase
16435	can be used to locate the most significant bit.  Reword a bit for
16436	clarity.
16437
164382003-12-12  Niels Möller  <niels@lysator.liu.se>
16439
16440	* mpn/generic/hgcd.c (__gmpn_hgcd_sanity): Fixed stack buffer
16441	overrun.
16442	* mpn/generic/hgcd.c: Improved comments.
16443
164442003-12-11  Torbjorn Granlund  <tege@swox.com>
16445
16446	* gmp-impl.h: Change asm => __asm__, tabify.
16447	* mpz/get_d_2exp.c: Likewise.
16448	* mpf/get_d_2exp.c: Likewise.
16449
16450	* tests/cxx/t-ops.cc: #if .. #endif out tests that cause ambiguities.
16451
164522003-12-10  Torbjorn Granlund  <tege@swox.com>
16453
16454	* tests/mpz/t-gcd.c: Generate operands with sizes as a geometric
16455	progression, to allow for larger operands and less varying timing.
16456
16457	* tune/tuneup.c (tune_gcd_schoenhage): Set param.step_factor.
16458	(tune_hgcd): Likewise.
16459
164602003-12-10  Kevin Ryde  <kevin@swox.se>
16461
16462	* demos/perl/test.pl: Should be $] for perl version in old perl.
16463
16464	* configure.in (sparc64-*-*): Single block of gcc configs for all
16465	systems, on unknown systems try both ABI 32 and 64.
16466
16467	* configure.in (LIBGMP_LDFLAGS, LIBGMPXX_LDFLAGS): New AC_SUBSTs with
16468	options to generate .def files with windows DLLs.
16469	* Makefile.am (libgmp_la_LDFLAGS, libgmpxx_la_LDFLAGS): Use them.
16470
16471	* mpn/generic/gcd.c: Use ABOVE_THRESHOLD / BELOW_THRESHOLD, to follow
16472	convention and cooperate with tune/tuneup.c.
16473
16474	* tune/tuneup.c (tune_gcd_schoenhage): Increase max_size to 3000, side
16475	default 1000 is approx the crossover point on athlon.
16476
16477	* tune/common.c, tune/speed.c, tune/speed.h, tune/speed-ext.c,
16478	tune/tuneup.c (SPEED_TMP_ALLOC_LIMBS): Take variable as parameter
16479	rather than returning a value, avoids alloca in a function call.
16480	* tune/common.c, tune/speed.h (speed_tmp_alloc_adjust): Remove, now
16481	inline in SPEED_TMP_ALLOC_LIMBS, and using ptr-NULL for alignment
16482	extraction.
16483
16484	* gmpxx.h (__gmp_binary_equal, __gmp_binary_not_equal,
16485	__gmp_binary_less, __gmp_binary_less_equal, __gmp_binary_greater,
16486	__gmp_binary_greater_equal, __gmp_cmp_function): Use mpfr_cmp_si and
16487	mpfr_cmp_d.
16488	* tests/cxx/t-ops.cc: Exercise this.
16489
16490	* demos/perl/Makefile.PL: Don't install sample.pl and test2.pl.
16491
16492	* demos/perl/GMP.xs (use_sv): Prefer PV over IV or NV to avoid any
16493	rounding.
16494	* demos/perl/test.pl: Exercise this.
16495
16496	* demos/perl/GMP/Mpf.pm (overload_string): Corrections to $# usage.
16497	* demos/perl/test.pl: Exercise this.
16498
164992003-12-08  Kevin Ryde  <kevin@swox.se>
16500
16501	* demos/perl/GMP.pm: Correction to canonicalize example.
16502
16503	* demos/perl/GMP.xs: New type check scheme, support magic scalars,
16504	support UV when available.  Remove some unused local variables.
16505	(coerce_long): Check range of double.
16506	(get_d_2exp): Remove stray printf.
16507
16508	* demos/perl/test.pl: Exercise magic, rearrange to make it clearer
16509	what's being tested.
16510
165112003-12-07  Kevin Ryde  <kevin@swox.se>
16512
16513	* mpn/generic/hgcd.c (mpn_hgcd): Use BELOW_THRESHOLD, to follow the
16514	convention of N<THRESH for the lower algorithm, not <=.  Fixes
16515	algorithm selection in tuneup.c.
16516
16517	* tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): Use intended
16518	align_xp, align_yp.
16519
16520	* tune/tuneup.c (mul_toom3_threshold): Use MUL_TOOM3_THRESHOLD_LIMIT,
16521	for the benefit of ASSERT in mpn_mul_n.
16522
16523	* tune/tuneup.c (tune_mul): Correction to toom3 param.min_size, should
16524	use MPN_TOOM3_MUL_N_MINSIZE.
16525
16526	* tune/speed.c (check_align_option): Correction to printf format.
16527	* tune/freq.c (freq_sysctl_hw_model): Remove unused "i" variable.
16528
16529	* scanf/doscan.c: Correction to a couple of trace printfs.
16530	Add <stdlib.h> for strtol.
16531
16532	* tests/misc/t-scanf.c (test_sscanf_eof_ok): New function.
16533	(check_misc): Use it to suppress tests broken by libc.
16534	And should be EOF rather than -1 in various places.
16535
165362003-12-06  Torbjorn Granlund  <tege@swox.com>
16537
16538	* tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer):
16539	Move SPEED_TMP_ALLOC_LIMBS invocations out from calls.
16540
16541	* mpn/generic/get_str.c (mpn_get_str, POW2_P case):
16542	Don't append extra '\0' byte.
16543
165442003-12-05  Niels Möller  <niels@lysator.liu.se>
16545
16546	* tune/common.c (speed_mpn_hgcd_lehmer, speed_mpn_hgcd):
16547	Updated for the renaming hgcd_sanity -> ASSERT_HGCD.
16548
16549	* mpn/generic/gcd.c (gcd_schoenhage): TMP_DECL must be the final
16550	declaration in the declaration section of a block.
16551
16552	* tune/speed.h (mpn_gcd_accel): Added prototype.
16553
165542003-12-05  Torbjorn Granlund  <tege@swox.com>
16555
16556	* randmt.c (__gmp_mt_recalc_buffer): Put parens around "&" expressions
16557	inside "!=".
16558
16559	* mpf/get_str.c: Remove unused variable "fracn".
16560
165612003-12-03  Kevin Ryde  <kevin@swox.se>
16562
16563	* configure.in, Makefile.am (LIBGMP_LDFLAGS, LIBGMPXX_LDFLAGS): New
16564	AC_SUBSTs, use them to create .def files with Windows DLLs.
16565	* doc/gmp.texi (Notes for Particular Systems): Update notes on mingw
16566	DLL with MS C.
16567
16568	* mpz/export.c: Allow NULL for countp.
16569	* doc/gmp.texi (Integer Import and Export): Describe this.
16570	Suggested by Jack Lloyd.
16571
16572	* mpn/x86/p6/aors_n.asm: New file, grabbing the K7 code.
16573	Superiority of this reported by Patrick Pelissier.
16574
165752003-11-30  Kevin Ryde  <kevin@swox.se>
16576
16577	* mpn/alpha/ev67/popcount.asm, mpn/alpha/ev67/hamdist.asm: New files.
16578
16579	* mpn/alpha/ev67: New directory.
16580	* configure.in (alphaev67, alphaev68, alphaev7*): Use it.
16581
16582	* doc/gmp.texi (GMPrefu, GMPpxrefu): Change back to plain ref and
16583	pxref, remove macros.
16584	(GMPreftopu, GMPpxreftopu): Remove URL parameter, rename to GMPreftop
16585	and GMPpxreftop.
16586	(Debugging): Remove debauch, seems to have disappeared.
16587	(Language Bindings): Corrections to URLs for CLN, Omni F77, Pike.
16588
165892003-11-29  Kevin Ryde  <kevin@swox.se>
16590
16591	* demos/perl/GMP/Mpf.pm (overload_string): Use $OFMT to avoid warnings
16592	about $#.
16593
16594	* demos/perl/GMP.xs (fits_slong_p): Use LONG_MAX+1 to avoid possible
16595	rounding of 0x7F..FF in a double on 64-bit systems.
16596
16597	* configure.in (ppc601-*-*): Remove this case, it never matched
16598	anything, the name adopted is powerpc601.
16599	(powerpc601-*-*): Use gcc -mcpu=601, xlc -qarch=601.
16600
16601	* configure.in: Introduce ${cc}_cflags_maybe, used if they work.
16602	(*sparc*-*-*) [ABI=32]: Add gcc_cflags_maybe=-m32 to force that mode.
16603
16604	* doc/gmp.texi (Introduction to GMP): Add AMD64 to optimizations list.
16605	(Build Options): Add cpu types alphaev7 and amd64.  Update texinfo
16606	html cross reference.
16607
166082003-11-28  Niels Möller  <nisse@lysator.liu.se>
16609
16610	* tune/tuneup.c (tune_hgcd): Disable if GMP_NAIL_BITS > 0.
16611	* tune/speed.c (routine): Likewise.
16612	* tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): Likewise.
16613
16614	* mpn/generic/gcd.c, mpn/generic/hgcd.c, mpn/generic/hgcd2.c
16615	[GMP_NAIL_BITS]: Disabled new code if we have nails.
16616
16617	* mpn/generic/gcd.c (MPN_LEQ_P): Copied macro definition (needed
16618	for compilation with --enable-assert).
16619
16620	* tune/tuneup.c (hgcd_schoenhage_threshold,
16621	gcd_schoenhage_threshold): New variables.
16622	(tune_hgcd, tune_gcd_schoenhage): New functions.
16623	(all): Call tune_hgcd and tune_gcd_schoenhage.
16624
16625	* tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer)
16626	(speed_mpn_gcd_accel): New functions.
16627	* tune/speed.c (routine): Added mpn_hgcd, mpn_hgcd_lehmer and
16628	mpn_gcd _accel.
16629	* tune/speed.h: Added corresponding prototypes.
16630
16631	* tune/gcd_accel.c: New file.
16632
16633	* tune/gcd_bin.c (GCD_SCHOENHAGE_THRESHOLD): Set to MP_SIZE_T_MAX.
16634
16635	* tune/Makefile.am (libspeed_la_SOURCES): Added gcd_accel.c.
16636	(TUNE_MPN_SRCS_BASIC): Added hgcd.c.
16637
16638	* mpn/x86/k7/gmp-mparam.h (HGCD_SCHOENHAGE_THRESHOLD)
16639	(GCD_SCHOENHAGE_THRESHOLD): Tuned values.
16640
16641	* mpn/generic/gcd.c (mpn_gcd, gcd_binary_odd): Renamed the
16642	old mpn_gcd function (which implements accelerated binary gcd) to
16643	gcd_binary_odd.
16644	(gcd_binary): New function, with the additional book keeping
16645	needed when using gcd_binary_odd to compute the gcd of non-odd
16646	numbers.
16647	(hgcd_tdiv): New function.
16648	(gcd_lehmer): New function, currently #if:ed out.
16649	(hgcd_start_row_p): New function, duplicated from hgcd.c.
16650	(gcd_schoenhage_itch): New function.
16651	(gcd_schoenhage): New function.
16652	(mpn_gcd): New advertised gcd function, which calls
16653	mpn_gcd_binary_odd or mpn_gcd_schoenhage, depending on the size of
16654	the input.
16655
16656	* mpn/generic/hgcd.c (mpn_hgcd2_lehmer_step): Renamed function
16657	(was lehmer_step), and made non-static. Updated callers.
16658
16659	* gmp-impl.h (GCD_LEHMER_THRESHOLD): #if:ed out this macro.
16660	(mpn_hgcd2_lehmer_step): Added prototype.
16661
166622003-11-27  Niels Möller  <nisse@lysator.liu.se>
16663
16664	* tests/mpz/t-gcd.c (gcd_values): Moved definition, so that we
16665	don't need to forward declare the array.
16666
166672003-11-26  Niels Möller  <nisse@lysator.liu.se>
16668
16669	* mpn/generic/hgcd.c (mpn_hgcd2_fix): Deleted duplicate definition
16670	(the function belongs to hgcd2.c).
16671
166722003-11-26  Torbjorn Granlund  <tege@swox.com>
16673
16674	* tests/mpz/t-gcd.c: Generate random operands up to 32767 bits;
16675	decrease # of test to 1000.
16676	(gcd_values): Remove oversize test case.
16677
166782003-11-26  Niels Möller  <niels@lysator.liu.se>
16679
16680	* gmp-impl.h: Added name mangling for hgcd-related functions. Also
16681	use __GMP_PROTO.
16682	(MPN_LEQ_P, MPN_EXTRACT_LIMB): Moved macros to hgcd.c.
16683	* mpn/generic/hgcd.c, mpn/generic/hgcd2.c, mpn/generic/qstack.c:
16684	Adapted to name changes.
16685
16686	* tests/mpz/t-gcd.c (main): Added some tests with non-random
16687	input.
16688
166892003-11-25  Niels Möller  <nisse@lysator.liu.se>
16690
16691	* gmp-impl.h (MPN_LEQ_P, MPN_EXTRACT_LIMB): New macros.
16692	(struct qstack, struct hgcd2_row, struct hgcd2, struct hgcd_row)
16693	(struct hgcd): New structs. Also added prototypes for new hgcd,
16694	hgcd2, qstack and gcd functions.
16695
16696	* configure.in (gmp_mpn_functions): Added hgcd2, hgcd and qstack.
16697
16698	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Added hgcd2.c,
16699	hgcd.c and qstack.c.
16700
16701	* mpn/generic/hgcd.c, mpn/generic/hgcd2.c, mpn/generic/qstack.c:
16702	New files, needed for the sub-quadratic gcd.
16703
167042003-11-25  Kevin Ryde  <kevin@swox.se>
16705
16706	* doc/gmp.texi (Language Bindings): Add Axiom.
16707
167082003-11-22  Kevin Ryde  <kevin@swox.se>
16709
16710	* mpn/alpha/README: More notes on assembler syntax variations.
16711
16712	* mpn/alpha/alpha-defs.m4, mpn/alpha/unicos.m4 (unop): Should be ldq_u
16713	not bis, and move to alpha-defs.m4 since it can be happily used
16714	everywhere.
16715
16716	* mpn/alpha/alpha-defs.m4, mpn/alpha/default.m4, mpn/alpha/unicos.m4
16717	(bigend): Move to alpha-defs.m4 and base it on HAVE_LIMB_BIG_ENDIAN or
16718	HAVE_LIMB_LITTLE_ENDIAN, so as not to hard code system endianness.
16719
16720	* mpn/alpha/alpha-defs.m4: New file.
16721	* configure.in (alpha*-*-*): Use it.
16722
167232003-11-21  Kevin Ryde  <kevin@swox.se>
16724
16725	* mpfr/*: Update to mpfr-2-0-2-branch 2003-11-21.
16726
16727	* mpn/alpha/ev5/com_n.asm: Change "not" to "ornot r31", since "not"
16728	isn't recognised by on Cray Unicos.  Add missing "gp" to PROLOGUE.
16729	* mpn/alpha/README: Add a note on "not".
16730
167312003-11-19  Torbjorn Granlund  <tege@swox.com>
16732
16733	* mpn/alpha/aorslsh1_n.asm: Slightly rework feed-in code, avoiding
16734	spurious reads beyond operand limits.
16735
16736	* mpn/alpha/ev5/com_n.asm: Add ASM_START/ASM_END.
16737
16738	* mpn/generic/mul_fft.c (mpn_fft_zero_p): Remove unused function.
16739	(mpn_lshift_com): Make static, nailify properly.
16740
167412003-11-19  Kevin Ryde  <kevin@swox.se>
16742
16743	* mpn/generic/diveby3.c: Use a "q" variable to make it clearer what
16744	the code is doing.
16745
16746	* mpn/powerpc32/750/lshift.asm, mpn/powerpc32/750/rshift.asm: New
16747	files.
16748
16749	* mpn/alpha/ev5/com_n.asm: New file.
16750
16751	* doc/gmp.texi (Assembler Functional Units, Assembler Writing Guide):
16752	New sections by Torbjorn, tweaked by me.
16753
167542003-11-17  Torbjorn Granlund  <tege@swox.com>
16755
16756	* mpn/powerpc32: Add power4/powerpc970 cycle counts.
16757	Use cmpwi instead of cmpi to placate darwin.
16758
167592003-11-15  Kevin Ryde  <kevin@swox.se>
16760
16761	* config.guess: Add comments on MacOS "machine" command.
16762
16763	* tests/devel/try.c (main): Use gmp_randinit_default explicitly on
16764	__gmp_rands, since RANDS doesn't allow seeding.
16765
16766	* doc/gmp.texi (Assigning Integers): Remove notes on possible change
16767	to disallow whitespace, this would be an incompatible change and
16768	really can't be made.
16769	(Toom 3-Way Multiplication): Updates for Paul's new code.
16770
16771	* mpn/generic/mul_n.c (toom3_interpolate, mpn_toom3_mul_n): Put
16772	if/else braces around whole of #if code, for readability.
16773
16774	* tests/refmpn.c (refmpn_addlsh1_n, refmpn_sublsh1_n,
16775	refmpn_rsh1add_n, refmpn_rsh1sub_n): Add ASSERTs for operand overlaps
16776	etc.
16777
16778	* mpfr/*: Update to mpfr-2-0-2-branch 2003-11-15.
16779
167802003-11-14  Torbjorn Granlund  <tege@swox.com>
16781
16782	* mpn/alpha/aorslsh1_n.asm: Use Cray-friendly syntax for "br".
16783
167842003-11-13  Torbjorn Granlund  <tege@swox.com>
16785
16786	* mpn/alpha/aorslsh1_n.asm: New file.
16787
167882003-11-12  Kevin Ryde  <kevin@swox.se>
16789
16790	* acinclude.m4 (GMP_PROG_CC_WORKS): Add case provoking AIX power2
16791	assembler, test code by Torbjorn.
16792	* configure.in (power*-*-*): Add a comment about -mcpu=rios2 fallback.
16793
16794	* tune/speed.c (main): Use gmp_randinit_default explicitly on
16795	__gmp_rands, since RANDS doesn't allow seeding.
16796
16797	* mpfr/*: Update to mpfr-2-0-2-branch 2003-11-12.
16798
16799	* gmp-impl.h, randmt.h (__gmp_randinit_mt_noseed): Move prototype to
16800	gmp-impl.h, for use by RANDS.
16801
16802	* mpn/Makeasm.am (.s, .S, .asm): Quote $< in test -f, per automake.
16803	(.obj): Use test -f and $(CYGPATH_W) as per automake.
16804
168052003-11-11  Kevin Ryde  <kevin@swox.se>
16806
16807	* configure.in: Make umul and udiv standard-optional objects, rather
16808	than under various extra_functions.
16809
16810	* mpn/pa32/hppa1_1/pa7100/add_n.asm,
16811	mpn/pa32/hppa1_1/pa7100/addmul_1.asm,
16812	mpn/pa32/hppa1_1/pa7100/lshift.asm,
16813	mpn/pa32/hppa1_1/pa7100/rshift.asm,
16814	mpn/pa32/hppa1_1/pa7100/sub_n.asm,
16815	mpn/pa32/hppa1_1/pa7100/submul_1.asm: Use LDEF for labels.
16816
16817	* mpf/set_str.c: Don't use memcmp for decimal point testing, just a
16818	loop is enough and avoids any chance of memcmp reading past the end of
16819	the given string.
16820
16821	* randmts.c, randmt.h: New files.
16822	* Makefile.am (libgmp_la_SOURCES): Add them.
16823	* randmt.c: Move seeding to randmts.c, common defines in randmt.h.
16824	* gmp-impl.h (RANDS): Use __gmp_randinit_mt_noseed.
16825	* tests/misc.c (tests_rand_start): Use gmp_randinit_default
16826	explicitly, not RANDS.
16827
16828	* mpn/ia64/ia64-defs.m4 (PROLOGUE_cpu): Use 32-byte alignment, for the
16829	benefit of itanium 2.
16830	* mpn/ia64/gcd_1.asm: Remove own .align 32.
16831
16832	* mpn/ia64/ia64-defs.m4 (ALIGN): New define, using IA64_ALIGN_OK.
16833	* mpn/ia64/hamdist.asm: Use ALIGN instead of .align.
16834
16835	* acinclude.m4 (GMP_ASM_IA64_ALIGN_OK): New macro.
16836	* configure.in (IA64_PATTERN): Use it.
16837	* mpn/ia64/README: Add notes on gas big endian align problem.
16838
168392003-11-10  Torbjorn Granlund  <tege@swox.com>
16840
16841	* mpn/ia64/mul_1.asm: Rewrite.
16842
168432003-11-08  Torbjorn Granlund  <tege@swox.com>
16844
16845	* mpn/x86/aors_n.asm: Align loop to a multiple of 16.  Also align
16846	M4_function_n to a multiple of 16, to minimize alignment padding.
16847	Update P6 cycle counts reflecting improvements with new alignment.
16848
168492003-11-07  Kevin Ryde  <kevin@swox.se>
16850
16851	* gmp-impl.h (HAVE_HOST_CPU_alpha_CIX): New define.
16852	(ULONG_PARITY, popc_limb): Use it, to pick up ev7 as well as 67 and 68.
16853	* longlong.h (count_leading_zeros, count_trailing_zeros): Ditto.
16854
16855	* doc/gmp.texi (Notes for Package Builds): Add notes on multi-ABI
16856	system packaging.
16857	(ABI and ISA): Add GNU/Linux ABI=64.
16858	(Binary GCD): Add notes on 1x1 GCD algorithms.
16859
16860	* mpn/alpha/README: Add some literature references.
16861
16862	* mpn/ia64/mode1o.asm: Various corrections to initial checkin.
16863	* mpn/ia64/ia64-defs.m4 (ASSERT): Correction to arg quoting.
16864
168652003-11-05  Torbjorn Granlund  <tege@swox.com>
16866
16867	* mpn/powerpc64/linux64.m4: New file.
16868	* configure.in (POWERPC64_PATTERN): Handle *-*-linux*.
16869	Use linux64.m4.
16870
16871	* mpn/ia64/logops_n.asm: New file.
16872
168732003-11-05  Kevin Ryde  <kevin@swox.se>
16874
16875	* tune/freq.c (freq_sysctl_hw_model): Relax to just look for "%u MHz",
16876	for the benefit of sparc cypress under netbsd 1.6.1.
16877
16878	* mpfr/*: Update to mpfr-2-0-2-branch 2003-11-05.
16879
16880	* mpn/alpha/ev5/dive_1.c: New file.
16881
16882	* configure.in (x86_64-*-*): Accept together with amd64-*-*.
16883
16884	* tune/speed.c: Check range of -x,-y,-w,-W alignment specifiers.
16885	* tune/speed.h (CACHE_LINE_SIZE): Amend comments.
16886
168872003-11-04  Torbjorn Granlund  <tege@swox.com>
16888
16889	* tune/speed.c: Fix typo in testing HAVE_NATIVE_mpn_modexact_1_odd.
16890
168912003-11-03  Kevin Ryde  <kevin@swox.se>
16892
16893	* mpn/ia64/hamdist.asm: New file.
16894	* mpn/ia64/mode1o.asm: New file.
16895	* mpn/ia64/ia64-defs.m4 (ASSERT): New macro.
16896
16897	* tests/mpz/t-set_d.c (check_2n_plus_1): New test.
16898
168992003-11-01  Kevin Ryde  <kevin@swox.se>
16900
16901	* mpz/fac_ui.c (BSWAP_ULONG) [limb==2*long]: Remove this case, it
16902	provokes code gen problems on HP cc.
16903	(BSWAP_ULONG) [generic]: Rename __dst variable to avoid conflicts with
16904	BITREV_ULONG.
16905	Fix by Jason Moxham.
16906
16907	* mpn/powerpc32/mode1o.asm: Use 16-bit i*i for early out, no need to
16908	truncate divisor.  Amend stated 750/7400 speeds, and note operands
16909	that give the extremes.
16910
16911	* mpz/set_d.c: Don't use a special case for d < MP_BASE_AS_DOUBLE, gcc
16912	3.3 -mpowerpc64 on darwin gets ulonglong->double casts wrong.
16913
16914	* mpn/generic/diveby3.c: Show a better style carry handling in the
16915	alternative pipelined sample code.
16916
16917	Revert this, the longlong.h macros need -mpowerpc64:
16918	* acinclude.m4 (GMP_GCC_POWERPC64): New macro.
16919	* configure.in (powerpc64-*-darwin*): Use it to exclude -mpowerpc64
16920	when bad.
16921
169222003-10-31  Torbjorn Granlund  <tege@swox.com>
16923
16924	* mpn/powerpc64/mode64/submul_1.asm: Move an instruction to save a
16925	cycle on POWER4.
16926
16927	* mpn/powerpc64/mode64/divrem_1.asm: Fix several syntax problems
16928	revealed on Mac OS X.
16929
16930	* mpn/powerpc64/mode64/*.asm: Add cycle counts for POWER4.
16931
16932	* mpn/powerpc64/sqr_diagonal.asm: Rewrite to save a cycle on POWER4.
16933
169342003-10-31  Kevin Ryde  <kevin@swox.se>
16935
16936	* mpfr/*: Update to mpfr-2-0-2-branch 2003-10-31.
16937
16938	* mpn/powerpc64/README: Add subdirectory organisation notes.
16939
16940	* tests/mpn/t-get_d.c: Don't use limits.h, LONG_MIN is wrong on gcc
16941	2.95 with -mcpu=ultrasparc.
16942
16943	* acinclude.m4 (GMP_GCC_POWERPC64): New macro.
16944	* configure.in (powerpc64-*-darwin*): Use it to exclude -mpowerpc64
16945	when bad.
16946
16947	* configure.in (powerpc64-*-darwin*) [ABI=mode32]: Use gcc -mcpu flags.
16948
16949	* mpn/ia64/divrem_1.asm, mpn/ia64/gcd_1.asm: Use "C" for comments.
16950	* mpn/ia64/README, mpn/ia64/ia64-defs.m4: Note this.
16951
16952	* mpn/ia64/ia64-defs.m4: Renamed from default.m4, per other defs files.
16953	* configure.in (IA64_PATTERN): Update GMP_INCLUDE_MPN.
16954
16955	* doc/gmp.texi (Notes for Particular Systems): Remove m68k ABI notes
16956	for -mshort and PalmOS, now works.
16957	(References): Correction, GMP Square Root proof already there, just
16958	wanting URL from RRRR 4475.
16959
169602003-10-29  Kevin Ryde  <kevin@swox.se>
16961
16962	* configure.in (sparc*-*-*): Use gcc -m32 when that option works, to
16963	force 32-bit mode on dual 32/64 configurations like GNU/Linux.
16964	(sparc64-*-linux*): Add support for ABI=64.
16965
16966	* mpn/generic/pre_divrem_1.c: In fraction part, use CNST_LIMB(0) with
16967	udiv_qrnnd_preinv to avoid warning about shift > type.
16968
16969	* mpfr/*: Update to mpfr-2-0-2-branch 2003-10-29.
16970
16971	* tests/cxx/t-istream.cc: Avoid tellg() checks if putback() doesn't
16972	update that, avoids certain g++ 2.96 problems.
16973
16974	* tests/mpn/t-fat.c: New file.
16975	* tests/mpn/Makefile.am (check_PROGRAMS): Add it.
16976
16977	* configure.in (CPUVEC_INSTALL, ITERATE_FAT_THRESHOLDS): New macros
16978	for fat.h.
16979	* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Use CPUVEC_INSTALL instead
16980	of memcpy.  Correction to location of "initialized" set.  Improve
16981	various comments.
16982
169832003-10-27  Torbjorn Granlund  <tege@swox.com>
16984
16985	* mpn/sparc64/mul_1.asm: Change addcc => add in a few places.
16986	* mpn/sparc64/addmul_1.asm: Likewise.
16987
16988	* mpn/sparc32/v9/mul_1.asm: Apply cross-jumping.
16989	* mpn/sparc32/v9/addmul_1.asm: Likewise.
16990	* mpn/sparc32/v9/submul_1.asm: Likewise.
16991	* mpn/sparc32/v9/sqr_diagonal.asm: Likewise.
16992
169932003-10-27  Kevin Ryde  <kevin@swox.se>
16994
16995	* tests/cxx/t-misc.cc: Don't use <climits>, on g++ 2.95.4 (debian 3.0)
16996	-mcpu=ultrasparc LONG_MIN is wrong and kills the compile.
16997
16998	* tests/cxx/t-istream.cc: Correction to tellg tests, don't assume
16999	streampos is zero based.
17000
17001	* configure.in (HAVE_HOST_CPU_FAMILY_alpha): New define for config.h.
17002	* mpn/generic/get_d.c: Use it instead of __alpha for alpha workaround,
17003	since Cray cc doesn't define __alpha.
17004
17005	* mpn/x86/README: Revise PIC coding notes a bit, add gcc visibility
17006	attribute.
17007
170082003-10-25  Kevin Ryde  <kevin@swox.se>
17009
17010	* mpn/ia64/gcd_1.asm: New file.
17011
17012	* tune/many.pl: Allow for PROLOGUE(fun,...), as used on alpha.
17013
17014	* doc/gmp.texi (C++ Formatted Input): Describe base indicator handling.
17015
17016	* tests/cxx/t-istream.cc: New file.
17017	* tests/cxx/Makefile.am: Add it.
17018
17019	* cxx/ismpznw.cc: New file, integer input without whitespace ...
17020	* cxx/ismpz.cc: ... from here.
17021	* gmp-impl.h (__gmpz_operator_in_nowhite): Add prototype.
17022	* cxx/ismpq.cc: Rewrite using mpz input routines.  Change to accept a
17023	separate base indicator on numerator and denominator.  Fix base
17024	indicator case where "123/0456" would stop at "123/0".
17025	* Makefile.am, cxx/Makefile.am: Add cxx/ismpznw.cc.
17026
17027	* tests/mpz/t-set_d.c: New file, derived from tests/mpz/t-set_si.c
17028	* tests/mpz/Makefile.am (check_PROGRAMS): Add it.
17029
17030	* mpn/m68k/lshift.asm, mpn/m68k/rshift.asm: Support 16-bit int and
17031	stack alignment.
17032	* mpn/m68k/README: Add notes on this.
17033	* configure.in (SIZEOF_UNSIGNED): New define in config.m4.
17034	* mpn/m68k/m68k-defs.m4 (m68k_definsn): Add cmpw, movew.
17035	Reported by Patrick Pelissier.
17036
17037	* mpn/m68k/t-m68k-defs.pl: Don't use -> with hashes, to avoid
17038	deprecation warnings from perl 5.8.
17039
17040	* configure.in (viac3-*-*): Use just x86/pentium in $path not x86/p6.
17041	If gcc is to be believed the old C3s don't have cmov.
17042
17043	* Makefile.am: Amend comments about not building from libtool
17044	convenience libraries.
17045
17046	* mpn/asm-defs.m4 (PROLOGUE): Use m4_file_seen, for correct filename
17047	in missing EPILOGUE error messages.
17048	(m4_file_seen): Amend comments about where used.
17049
17050	* Makefile.am (CXX_OBJECTS): Remove $U, C++ files are not subject to
17051	ansi2knr rules.
17052
17053	* gmp-h.in (mpn_divmod_1): Use __GMP_CAST, to avoid warnings in
17054	applications using g++ -Wold-style-cast.
17055
17056	* mpn/z8000/README: New file.
17057
170582003-10-22  Kevin Ryde  <kevin@swox.se>
17059
17060	* mpn/generic/get_d.c (CONST_1024, CONST_NEG_1023,
17061	CONST_NEG_1022_SUB_53): Replace ALPHA_WORKAROUND with a non-gcc-ism,
17062	and use on Cray Unicos alpha too, which has the same problem.
17063
17064	* configure.in (powerpc64-*-darwin*): Make ABI=32 available as the
17065	final fallback, remove mode64 until we know how it will work.
17066
17067	* doc/gmp.texi (Build Options): Add powerpc970 to available CPUs.
17068	(ABI and ISA): Add mode32 for Darwin.
17069
17070	* configure.in (gettimeofday): Use an explicit AC_TRY_LINK, to avoid
17071	known autoconf 2.57 problems with gettimeofday in AC_CHECK_FUNCS on
17072	HP-UX.
17073
17074	* configure.in (powerpc*-*-*): Use ABI=32 instead of ABI=standard for
17075	the default 32-bit ABI.  Fixes powerpc64-*-aix* which is documented as
17076	choices "aix64 32" but had "aix64 standard".
17077
17078	* mpfr/*: Update to mpfr-2-0-2-branch 2003-10-22.
17079
17080	* doc/gmp.texi (Notes for Particular Systems): Note m68k gcc -mshort
17081	and PalmOS calling conventions not supported.  Reported by Patrick
17082	Pelissier.
17083	(References): Add Paul Zimmermann's Inria 4475 paper.
17084
170852003-10-21  Torbjorn Granlund  <tege@swox.com>
17086
17087	* mpn/ia64/submul_1.asm: Slightly reschedule loop to accommodate
17088	Itanium 2 getf.sig latency.
17089
170902003-10-21  Kevin Ryde  <kevin@swox.se>
17091
17092	* tests/mpn/t-instrument.c: Add mpn_addlsh1_n, mpn_rsh1add_n,
17093	mpn_rsh1sub_n, mpn_sub_nc, mpn_sublsh1_n.  Typo in mpn_preinv_divrem_1
17094	conditional.
17095
170962003-10-20  Torbjorn Granlund  <tege@swox.com>
17097
17098	* mpn/powerpc64/mode32/add_n.asm: New file.
17099	* mpn/powerpc64/mode32/sub_n.asm: New file.
17100	* mpn/powerpc64/mode32/mul_1.asm: New file.
17101	* mpn/powerpc64/mode32/addmul_1.asm: New file.
17102	* mpn/powerpc64/mode32/submul_1.asm: New file.
17103
171042003-10-19  Torbjorn Granlund  <tege@swox.com>
17105
17106	* longlong.h (AMD64): __x86_64__ => __amd64__.
17107	(64-bit powerpc): Only define carry-dependent macros if
17108	!_LONG_LONG_LIMB.
17109
17110	* acinclude.m4 (POWERPC64_PATTERN): Add powerpc970-*-*.
17111
17112	* configure.in (POWERPC64_PATTERN): Handle *-*-darwin*.
17113	(POWERPC64_PATTERN, *-*-aix*): Prepend powerpc64/mode64 to path_aix64.
17114
17115	* mpn/powerpc64/mode64/mul_1.asm: Change cal => addi.
17116	* mpn/powerpc64/mode64/addmul_1.asm: Likewise.
17117	* mpn/powerpc64/mode64/submul_1.asm: Likewise.
17118	* mpn/powerpc64/sqr_diagonal.asm: Likewise.
17119
17120	* mpn/powerpc64/mode64/mul_1.asm: Move from "..".
17121	* mpn/powerpc64/mode64/addmul_1.asm: Likewise.
17122	* mpn/powerpc64/mode64/submul_1.asm: Likewise.
17123	* mpn/powerpc64/mode64/divrem_1.asm: Likewise.
17124	* mpn/powerpc64/mode64/rsh1sub_n.asm: Likewise.
17125	* mpn/powerpc64/mode64/add_n.asm: Likewise.
17126	* mpn/powerpc64/mode64/addsub_n.asm: Likewise.
17127	* mpn/powerpc64/mode64/sub_n.asm: Likewise.
17128	* mpn/powerpc64/mode64/addlsh1_n.asm: Likewise.
17129	* mpn/powerpc64/mode64/diveby3.asm: Likewise.
17130	* mpn/powerpc64/mode64/rsh1add_n.asm: Likewise.
17131	* mpn/powerpc64/mode64/sublsh1_n.asm: Likewise.
17132
17133	* mpn/powerpc64/lshift.asm: Handle mode32 ABI.
17134	* mpn/powerpc64/rshift.asm: Likewise.
17135	* mpn/powerpc64/umul.asm: Likewise.
17136
17137	* tune/powerpc64.asm: Make it actually work.
17138
171392003-10-19  Kevin Ryde  <kevin@swox.se>
17140
17141	* mpn/generic/get_d.c: Add a workaround for alpha gcc signed constant
17142	comparison bug.
17143
17144	* gmpxx.h (gmp_randclass gmp_randinit_lc_2exp_size constructor): Throw
17145	std::length_error if size is too big.
17146	* tests/cxx/t-rand.cc (check_randinit): Exercise this.
17147
17148	* mpn/x86/pentium4/sse2/addlsh1_n.asm: New file, derived in part from
17149	mpn/x86/pentium4/sse2/add_n.asm.
17150
17151	* doc/gmp.texi (C++ Interface Integers, C++ Interface Rationals, C++
17152	Interface Floats): Note std::invalid_argument exception for invalid
17153	strings to constructors and operator=.
17154	(C++ Interface Random Numbers): Note std::length_error exception for
17155	size too big in gmp_randinit_lc_2exp_size.
17156
171572003-10-18  Kevin Ryde  <kevin@swox.se>
17158
17159	* mpfr/*: Update to mpfr-2-0-2-branch 2003-10-18.
17160
17161	* gmpxx.h (mpz_class, mpq_class, mpf_class, mpfr_class constructors
17162	and operator= taking string or char*): Throw std::invalid_argument if
17163	string cannot be converted.
17164	* tests/cxx/t-constr.cc, tests/cxx/t-assign.cc: Exercise this.
17165
17166	* cxx/ismpz.cc, cxx/ismpq.cc, cxx/ismpf.cc: Use istream std::locale
17167	ctype facet for isspace when available.  Only accept space at the
17168	start of the input, same as g++ libstdc++.  Use ASSERT_NOCARRY to
17169	check result of mpz_set_str etc.
17170	* cxx/ismpf.cc: Don't accept "@" for exponent indicator.
17171
17172	* tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Remove
17173	_open and _mpn variants of mpn_toom3_mul_n, only one style now.
17174	* tune/mul_n_open.c, tune/mul_n_mpn.c: Remove files.
17175
17176	* gmp-impl.h (LIMB_HIGHBIT_TO_MASK): New macro.
17177	(udiv_qrnnd_preinv2, udiv_qrnnd_preinv2gen): Use it.
17178
17179	* tests/mpz/t-import.c, tests/mpz/t-export.c: Use octal for character
17180	constants, hex is an ANSI-ism.
17181
17182	* mpn/alpha/ev5/mode1o.c: Corrections to ASSERTs, as per
17183	mpn/generic/mode1o.c.
17184
17185	* mpn/generic/diveby3.c: Add commented out alternative code and notes
17186	for taking the multiply off the dependent chain.  Amend/clarify some
17187	of the other comments.
17188
17189	* configure.in (powerpc970-*-*): Use gcc -mcpu=970 when available.
17190	(powerpc7400-*-*): Fallback on gcc -mcpu=750 if -mcpu=7400 not
17191	available.
17192
17193	* doc/gmp.texi (C++ Formatted Input): Note locale digit grouping not
17194	supported.
17195	(C++ Formatted Input, C++ Formatted Output): Cross reference class
17196	interface on overloading.
17197
17198	* mpn/m68k/README: Add various ideas from doc/tasks.html.
17199
17200	* mpn/m88k/README: New file.
17201
172022003-10-16  Torbjorn Granlund  <tege@swox.com>
17203
17204	* config.sub: Recognize powerpc970.
17205
172062003-10-15  Torbjorn Granlund  <tege@swox.com>
17207
17208	* config.guess: Recognize powerpc970 under MacOS.
17209
172102003-10-15  Kevin Ryde  <kevin@swox.se>
17211
17212	* configure.in, acinclude.m4 (GMP_C_RIGHT_SHIFT): New test.
17213	* gmp-impl.h (LIMB_HIGHBIT_TO_MASK): New macro.
17214	(udiv_qrnnd_preinv2, udiv_qrnnd_preinv2gen): Use it.
17215
17216	* mpn/amd64/amd64-defs.m4: New file, with a non-aligning PROLOGUE.
17217	* configure.in (amd64-*-*): Use it.
17218	* mpn/amd64/addlsh1_n.asm: Add ALIGN(16).
17219
17220	* mpfr/*: Update to mpfr cvs 2003-10-15.
17221
17222	* mpn/generic/get_d.c: Rewrite, simplifying and truncating towards
17223	zero unconditionally.
17224	* tests/mpn/t-get_d.c: Add various further tests.
17225	* gmp-impl.h (FORCE_DOUBLE): New macro.
17226
17227	* gmp-h.in (__mpz_struct): Add comment on __mpz_struct getting into
17228	C++ mangled function names.
17229
17230	* doc/gmp.texi (Build Options): Update notes for new doc subdir.
17231	(Low-level Functions): Note mpn functions don't check for zero limbs
17232	etc, it's up to an application to strip.
17233
17234	* doc/configuration (Configure): mdate-sh now in doc subdir, add
17235	generated fat.h.
17236
172372003-10-14  Torbjorn Granlund  <tege@swox.com>
17238
17239	* mpn/ia64/lorrshift.asm: Rewrite.
17240
17241	* mpn/ia64/diveby3.asm: Remove explicit bundling; add branch hints.
17242
172432003-10-13  Torbjorn Granlund  <tege@swox.com>
17244
17245	* mpn/ia64/diveby3.asm: New file.
17246
172472003-10-13  Kevin Ryde  <kevin@swox.se>
17248
17249	* mpn/powerpc32/mod_34lsub1.asm: New file.
17250
17251	* mpn/powerpc32/diveby3.asm, mpn/powerpc64/diveby3.asm: src[] in
17252	second operand of mullw, to allow possible early-out, which the
17253	0xAA..AB inverse cannot give.  This improvement noticed by Torbjorn.
17254
17255	* acinclude.m4 (GMP_ASM_LSYM_PREFIX): Print to config.log whether
17256	local label is purely temporary or appears in object files, for
17257	development purposes.
17258
17259	* doc/gmp.texi, doc/fdl.texi, doc/texinfo.tex, doc/mdate-sh: Moved
17260	from top-level.
17261	* doc/Makefile.am: New file.
17262	* configure.in (AC_OUTPUT): Add doc/Makefile.
17263	* Makefile.am (SUBDIRS): Move doc subdirectory from EXTRA_DIST.
17264	(info_TEXINFOS, gmp_TEXINFOS): Moved to doc/Makefile.am.
17265	* mpfr/Makefile.am (mpfr_TEXINFOS): fdl.texi now in doc subdir.
17266	(TEXINFO_TEX): texinfo.tex now in doc subdir.
17267	(AM_MAKEINFOFLAGS): Set -I to doc subdir.
17268
17269	* mpz/and.c: For positive/positive, use mpn_and_n, rate a realloc as
17270	UNLIKELY.
17271
17272	* mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Don't test
17273	for high zero limbs.
17274
172752003-10-12  Torbjorn Granlund  <tege@swox.com>
17276
17277	* mpn/powerpc64/diveby3.asm: New file (trivial edits of
17278	powerpc32/diveby3.asm).
17279
17280	* mpn/powerpc32/diveby3.asm: Update cycle counts with more processors.
17281	* mpn/powerpc32/sqr_diagonal.asm: Likewise.
17282
17283	* mpn/pa64/add_n.asm: Correct PA8500 cycle counts.
17284	* mpn/pa64/sub_n.asm: Likewise.
17285
17286	* mpn/m68k/aors_n.asm (INPUT PARAMETERS): Fix typo.
17287	* mpn/m68k/lshift.asm: Likewise.
17288	* mpn/m68k/rshift.asm: Likewise.
17289
17290	* mpn/m68k/README: Correct an URL; add some STATUS comments.
17291
17292	* mpn/ia64/aorslsh1_n.asm: Avoid shrp when shl/shr works just as well.
17293
17294	* mpn/powerpc32/addlsh1_n.asm: New file.
17295	* mpn/powerpc32/sublsh1_n.asm: New file.
17296
172972003-10-12  Kevin Ryde  <kevin@swox.se>
17298
17299	* mpn/sparc64/divrem_1.c, mpn/sparc64/mod_1.c: New files.
17300	* mpn/sparc64/sparc64.h (HALF_ENDIAN_ADJ, count_leading_zeros_32,
17301	invert_half_limb, udiv_qrnnd_half_preinv): New macros.
17302
17303	* gmp-impl.h (udiv_qrnnd_preinv2): Use a ? : for getting the n1 bit,
17304	so as not to depend on signed right shifts being arithmetic.
17305
17306	* mpn/powerpc32/diveby3.asm: New file.
17307
17308	* mpn/generic/divrem_1.c: Use CNST_LIMB(0) to avoid warnings from
17309	udiv_qrnnd_preinv about shift count when int<long.  Do the same with
17310	udiv_qrnnd, for consistency.
17311
17312	* Makefile.am (install-data-hook): Print a warning recommending "make
17313	check" to watch out for compiler bugs.  Proposed by Torbjorn.
17314
17315	* mpn/ia64/README (mpn_lshift, mpn_rshift): Amend prospective itanium2
17316	speed, 0.75 c/l with shrp plus shl/shr.
17317
17318	* mpn/ia64/popcount.asm: Add comment on optimality.
17319
173202003-10-11  Torbjorn Granlund  <tege@swox.com>
17321
17322	* mpn/ia64/rsh1aors_n.asm: New file.
17323
17324	* mpn/asm-defs.m4: Handle rsh1aors_n.
17325
17326	* configure.in (tmp_mulfunc): Handle rsh1aors_n.
17327
173282003-10-11  Kevin Ryde  <kevin@swox.se>
17329
17330	* mpn/x86/pentium4/sse2/diveby3.asm: Remove non-PIC RODATA memory
17331	access for 0xAAAAAAAB constant.
17332
17333	* gmp-impl.h (popc_limb, ULONG_PARITY) [ev67, ev68]: Add gcc asm
17334	versions using ctpop.
17335
17336	* mpn/x86/k6/aorsmul_1.asm: Tweak some comments, remove M4_description
17337	and M4_desc_retval used only in comments.
17338
17339	* mpn/x86/k6/mul_basecase.asm: Add comment on using mpn_mul_1.
17340
173412003-10-09  Torbjorn Granlund  <tege@swox.com>
17342
17343	* mpn/powerpc64/addlsh1_n.asm: Tweak for 0.25 c/l better loop speed.
17344	* mpn/powerpc64/sublsh1_n.asm: Likewise.
17345
173462003-10-09  Kevin Ryde  <kevin@swox.se>
17347
17348	* mpfr/*: Update to mpfr cvs 2003-10-09.
17349
17350	* tests/devel/try.c (_SC_PAGESIZE): Define from _SC_PAGE_SIZE on
17351	systems which use that, eg. hpux 9.
17352
173532003-10-07  Kevin Ryde  <kevin@swox.se>
17354
17355	* tune/freq.c (freq_sysctl_hw_model): Correction to last sscanf change.
17356
17357	* configure.in: Check for psp_iticksperclktick in struct pst_processor.
17358	* tune/freq.c (freq_pstat_getprocessor): Use this.
17359
17360	* tests/devel/try.c (divisor_array): Add a couple of half-limb values.
17361
17362	* acinclude.m4 (GMP_PROG_CC_WORKS): Correction to last change, need to
17363	set result "yes" when cross compiling.
17364
173652003-10-06  Torbjorn Granlund  <tege@swox.com>
17366
17367	* mpn/generic/mul_n.c: Use __GMPN_ADD_1/_GMPN_SUB_1 instead of
17368	mpn_add_1 and mpn_sub_1.
17369
17370	* mpn/pa64/aorslsh1_n.asm: Schedule register save and restore code.
17371
173722003-10-05  Torbjorn Granlund  <tege@swox.com>
17373
17374	* mpn/pa64/mul_1.asm: Misc comment cleanups.
17375	* mpn/pa64/addmul_1.asm: Likewise.
17376	* mpn/pa64/submul_1.asm: Likewise.
17377
17378	* mpn/pa64/README: Correct cycle counts.
17379
17380	* mpn/pa64/aorslsh1_n.asm: New file.
17381
173822003-10-04  Kevin Ryde  <kevin@swox.se>
17383
17384	* tune/freq.c (freq_sysctl_hw_model, freq_sunos_sysinfo,
17385	freq_sco_etchw, freq_bsd_dmesg, freq_irix_hinv): Demand matching of
17386	MHz etc at end of sscanf format string.  In particular need this for
17387	freq_bsd_dmesg on i486-pc-freebsd4.7 to avoid the 486 cpu being used
17388	for the frequency.
17389
17390	* tests/misc.c, tests/tests.h (tests_setjmp_sigfpe,
17391	tests_sigfpe_handler, tests_sigfpe_done, tests_sigfpe_target,
17392	tests_dbl_mant_bits): New.
17393
17394	* configure.in (viac3*-*-*): Add gcc VIA c3 options.
17395
17396	* mpfr/*: Update to mpfr cvs 2003-10-04.
17397
17398	* tests/refmpn.c (refmpn_addlsh1_n, refmpn_sublsh1_n,
17399	refmpn_rsh1add_n, refmpn_rsh1sub_n): Add ASSERTs for operand overlaps.
17400	* tests/tests.h (refmpn_addlsh1_n, refmpn_sublsh1_n, refmpn_rsh1add_n,
17401	refmpn_rsh1sub_n): Add prototypes.
17402
17403	* tests/devel/try.c, tune/many.pl: Add mpn_addlsh1_n, mpn_sublsh1_n,
17404	mpn_rsh1add_n, mpn_rsh1sub_n.
17405
174062003-10-03  Torbjorn Granlund  <tege@swox.com>
17407
17408	* tests/refmpn.c (refmpn_addlsh1_n, refmpn_sublsh1_n, refmpn_rsh1add_n,
17409	refmpn_rsh1sub_n): New functions.
17410
174112003-10-03  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
17412
17413	* mpn/generic/mul_n.c (toom3_interpolate): Use mpn_add_1/mpn_sub_1
17414	instead of MPN_INCR_/MPN_DECR_U.
17415
174162003-10-02  Torbjorn Granlund  <tege@swox.com>
17417
17418	* configure.in (ia64*-*-hpux*): Fall back to +O1, not +O.
17419
174202003-10-02  Kevin Ryde  <kevin@swox.se>
17421
17422	* configure.in (ia64*-*-hpux*): For cc, let +O optimization level
17423	fallback if +O3 doesn't work.
17424
17425	* acinclude.m4 (GMP_PROG_CC_WORKS): Add a test of __builtin_alloca
17426	when available, to pick up Itanium HP-UX cc internal errors in +O2.
17427	Provoking code by Torbjorn.
17428
174292003-10-01  Torbjorn Granlund  <tege@swox.com>
17430
17431	* mpn/ia64/gmp-mparam.h: Retune.
17432
17433	* mpn/asm-defs.m4: Handle aorslsh1_n.
17434
17435	* configure.in (tmp_mulfunc): Handle aorslsh1_n.
17436
17437	* mpn/ia64/aorslsh1_n.asm: New file.
17438
17439	* mpn/ia64/aors_n.asm: New file, complete rewrite of mpn_add_n and
17440	mpn_sub_n.
17441	* mpn/ia64/add_n.asm: Replace by aors_n.asm.
17442	* mpn/ia64/sub_n.asm: Replace by aors_n.asm.
17443
174442003-10-01  Kevin Ryde  <kevin@swox.se>
17445
17446	* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Make bad ARM last byte into a
17447	separate case and consider it non-IEEE, since it looks like this is
17448	due to some sort of restricted or incorrect software floats.
17449
17450	* demos/calc/Makefile.am: Use automake yacc/lex support, seems fine in
17451	separate objdir now.
17452
17453	* cxx/dummy.cc: Moved from top-level dummy.cc.
17454	* Makefile.am (libgmpxx_la_SOURCES): Update to cxx/dummy.cc,
17455	correction to comment about this.
17456
174572003-09-30  Torbjorn Granlund  <tege@swox.com>
17458
17459	* demos/pexpr.c: Correct documentation of -split.
17460	(TIME): Remove cast of result to double.
17461	(main): Change timing variables to int.
17462	(main): #ifdef LIMIT_RESOURCE_USAGE, don't convert numbers of more than
17463	100000 digits.
17464
174652003-09-28  Torbjorn Granlund  <tege@swox.com>
17466
17467	* mpn/*/*.asm: Clean up spacing, tabify.
17468
17469	* mpn/alpha/rshift.asm: Table cycle counts.
17470	* mpn/alpha/lshift.asm: Likewise.
17471	* mpn/alpha/ev5/rshift.asm: Likewise.
17472	* mpn/alpha/ev5/lshift.asm: Likewise.
17473	* mpn/alpha/ev6/add_n.asm: Likewise.
17474	* mpn/alpha/ev6/sub_n.asm: Likewise.
17475
17476	* mpn/ia64/lorrshift.asm: Amend comments about performance.
17477
17478	* mpn/pa64/mul_1.asm: Fix comment typo.
17479	* mpn/pa64/addmul_1.asm: Likewise.
17480	* mpn/pa64/submul_1.asm: Likewise.
17481
17482	* mpn/amd64/addlsh1_n.asm: Save/restore carry using two insn to break
17483	recurrency.  Add remarks about possible further speedup.
17484	* mpn/amd64/sublsh1_n.asm: Likewise.
17485
17486	* mpn/amd64/rsh1add_n.asm: Add remarks about possible further speedup.
17487	* mpn/amd64/rsh1sub_n.asm: Likewise.
17488
174892003-09-27  Torbjorn Granlund  <tege@swox.com>
17490
17491	* mpn/powerpc64/README: Update with POWER4/PPC970 pipeline info.
17492
17493	* mpn/powerpc64/rsh1add_n.asm: New file.
17494	* mpn/powerpc64/rsh1sub_n.asm: New file.
17495	* mpn/powerpc64/rshift.asm: Rewrite.
17496	* mpn/powerpc64/lshift.asm: Rewrite.
17497
174982003-09-26  Torbjorn Granlund  <tege@swox.com>
17499
17500	* mpn/powerpc64/addlsh1_n.asm: New file.
17501	* mpn/powerpc64/sublsh1_n.asm: New file.
17502
175032003-09-25  Torbjorn Granlund  <tege@swox.com>
17504
17505	* tune/common.c (speed_mpn_addlsh1_n, speed_mpn_sublsh1_n,
17506	speed_mpn_rsh1add_n, speed_mpn_rsh1sub_n): Conditionalize on
17507	corresponding HAVE_NATIVE_*.
17508
175092003-09-25  Kevin Ryde  <kevin@swox.se>
17510
17511	* mpz/combit.c: Use GMP_NUMB_BITS not BITS_PER_MP_LIMB.
17512
17513	* demos/expr/exprfr.c: Allow for mpfr_inf_p, mpfr_nan_p and
17514	mpfr_number_p merely returning non-zero, rather than 1 or 0.
17515
17516	* demos/expr/exprfr.c, demos/expr/t-expr.c: Add erf, integer_p, zeta.
17517
17518	* demos/expr/Makefile.am (LDADD): Update comments on $(LIBM).
17519
175202003-09-24  Torbjorn Granlund  <tege@swox.com>
17521
17522	* tune/speed.c (routine): Add entries for mpn_addlsh1_n, mpn_sublsh1_n,
17523	mpn_rsh1add_n, and mpn_rsh1sub_n.
17524
17525	* tune/speed.h: Declare speed_mpn_addlsh1_n, speed_mpn_sublsh1_n,
17526	speed_mpn_rsh1add_n, and speed_mpn_rsh1sub_n.
17527
17528	* tune/common.c (speed_mpn_addlsh1_n, speed_mpn_sublsh1_n,
17529	speed_mpn_rsh1add_n, speed_mpn_rsh1sub_n): New functions.
17530
17531	* gmp-impl.h: Declare mpn_addlsh1_n, mpn_sublsh1_n, mpn_rsh1add_n, and
17532	mpn_rsh1sub_n.
17533
17534	* mpn/asm-defs.m4: Add define_mpn's for addlsh1_n, sublsh1_n,
17535	rsh1add_n, and rsh1sub_n.
17536
17537	* mpn/powerpc64/*.asm: Add cycle counts in consistent style.  Misc
17538	styling edits.
17539
17540	* mpn/amd64/gmp-mparam.h: Retune.
17541
17542	* configure.in: Add #undefs for HAVE_NATIVE_mpn_addlsh1_n,
17543	HAVE_NATIVE_mpn_sublsh1_n, HAVE_NATIVE_mpn_rsh1add_n,
17544	HAVE_NATIVE_mpn_rsh1sub_n.
17545	(gmp_mpn_functions_optional): List addlsh1_n, sublsh1_n, rsh1add_n,
17546	and rsh1sub_n.
17547
17548	* mpn/amd64/addlsh1_n.asm: New file.
17549	* mpn/amd64/sublsh1_n.asm: New file.
17550	* mpn/amd64/rsh1add_n.asm: New file.
17551	* mpn/amd64/rsh1sub_n.asm: New file.
17552
175532003-09-24  Kevin Ryde  <kevin@swox.se>
17554
17555	* mpfr/*: Update to mpfr cvs 2003-09-24.
17556
17557	* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Remove conftest* temporary files.
17558
175592003-09-23  Torbjorn Granlund  <tege@swox.com>
17560
17561	* gmp-impl.h (MUL_TOOM3_THRESHOLD, SQR_TOOM3_THRESHOLD): Now 128.
17562
175632003-09-23  Kevin Ryde  <kevin@swox.se>
17564
17565	* gmp-h.in (gmp_randinit_set): Use __gmp_const rather than const.
17566
175672003-09-22  Torbjorn Granlund  <tege@swox.com>
17568
17569	* tune/mul_n_mpn.c: (__gmpn_sqr_n): New #define.
17570	* tune/mul_n_open.c (__gmpn_sqr_n): New #define.
17571
17572	* mpn/generic/mul.c (mpn_sqr_n): Move from here...
17573	* mpn/generic/mul_n.c (mpn_sqr_n): ...to here.
17574	(mpn_sqr_n): Allocate workspace for toom3 using TMP_* mechanism except
17575	for very large operands when !WANT_FFT.
17576
17577	* mpn/generic/mul_n.c: Add a missing ";". Misc comment fixes.
17578
17579	* mpn/generic/mul.c: Remove spurious #include <stdio.h>.
17580
17581	* mpn/x86/k7/gmp-mparam.h: Retune.
17582
17583	* mpn/generic/mul_n.c (mpn_mul_n): Allocate workspace for toom3 using
17584	TMP_* mechanism except for very large operands when !WANT_FFT.
17585
17586	* gmp-impl.h (MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_SQR_N_TSIZE):
17587	Define conditionally on WANT_FFT and HAVE_NATIVE_mpn_sublsh1_n.
17588	(MPN_TOOM3_MAX_N): New #define.
17589
17590	* mpn/amd64/gmp-mparam.h: Retune.
17591
17592	* mpn/Makefile.am (TARG_DIST): Add amd64.
17593
17594	* mpn/generic/sqr_basecase.c: Use mpn_addlsh1_n when available.
17595
17596	* mpn/generic/mul_n.c: Use proper form for HAVE_NATIVE macros.
17597
175982003-09-22  Kevin Ryde  <kevin@swox.se>
17599
17600	* mpfr/*: Update to mpfr cvs 2003-09-22.
17601
176022003-09-21  Kevin Ryde  <kevin@swox.se>
17603
17604	* mpn/x86/pentium4/sse2/gmp-mparam.h (USE_PREINV_DIVREM_1,
17605	USE_PREINV_MOD_1): Set to 1 for new asm versions.
17606
17607	* mpfr/*: Update to mpfr cvs 2003-09-21.
17608
176092003-09-21  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
17610
17611	* mpn/generic/mul_n.c (mpn_toom3_mul_n): Conditionally use
17612	mpn_sublsh1_n, mpn_rsh1add_n and mpn_rsh1sub_n, in addition to
17613	mpn_addlsh1_n.  Avoid all copying, at the expense of some additional
17614	workspace.
17615
17616	* gmp-impl.h (MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_SQR_N_TSIZE): Accommodate
17617	latest toom3 code.
17618
176192003-09-19  Kevin Ryde  <kevin@swox.se>
17620
17621	* mpn/x86/pentium4/sse2/divrem_1.asm, mpn/x86/pentium4/sse2/mod_1.asm:
17622	New files.
17623
176242003-09-16  Kevin Ryde  <kevin@swox.se>
17625
17626	* tune/speed.c (run_one): Don't scale the -1.0 not-available return.
17627	Print "n/a" for times not-available.
17628
176292003-09-13  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
17630
17631	* mpn/generic/mul_n.c (toom3_interpolate): New function.
17632	(mpn_toom3_mul_n, mpn_toom3_sqr_n): Call toom3_interpolate.
17633
176342003-09-12  Torbjorn Granlund  <tege@swox.com>
17635
17636	* mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove unused
17637	variables.
17638	(mpn_toom3_mul_n, mpn_toom3_sqr_n): Use offset `+ 1', not `+ 2' in last
17639	MPN_DECR_U calls.
17640
176412003-09-12  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
17642
17643	* mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Rewrite.
17644
176452003-09-12  Torbjorn Granlund  <tege@swox.com>
17646
17647	* gmp-impl.h (MPN_KARA_MUL_N_TSIZE, MPN_KARA_SQR_N_TSIZE): Reformulate
17648	to use the same form as MPN_TOOM3_MUL_N_TSIZE.
17649	(MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_SQR_N_TSIZE): Update for new Toom3
17650	code requirements.
17651	* mpn/generic/mul_n.c (evaluate3, interpolate3, add2Times): Remove.
17652	(USE_MORE_MPN): Remove.
17653
176542003-08-31  Kevin Ryde  <kevin@swox.se>
17655
17656	* mpfr/*: Update to mpfr cvs 2003-08-31.
17657
176582003-08-30  Kevin Ryde  <kevin@swox.se>
17659
17660	* mpfr/*: Update to mpfr cvs 2003-08-30.
17661
176622003-08-29  Torbjorn Granlund  <tege@swox.com>
17663
17664	* mpn/amd64/copyi.asm: New file.
17665	* mpn/amd64/copyd.asm: New file.
17666	* mpn/amd64/README: New file.
17667
176682003-08-28  Torbjorn Granlund  <tege@swox.com>
17669
17670	* mpn/amd64/lshift.asm: New file.
17671	* mpn/amd64/rshift.asm: New file.
17672	* mpn/amd64/gmp-mparam.h: Retune.
17673
176742003-08-23  Kevin Ryde  <kevin@swox.se>
17675
17676	* tune/freq.c (freq_getsysinfo): Correction to speed_cycletime value
17677	established.
17678
17679	* mpz/rootrem.c, gmp-h.in, gmp.texi (mpz_rootrem): Don't return
17680	exactness indication, can get that from testing the remainder.
17681
17682	* mpn/x86/k7/aors_n.asm, mpn/x86/k7/mmx/copyi.asm: Amend to comments
17683	about loads and stores and what speed should be possible.
17684
176852003-08-22  Torbjorn Granlund  <tege@swox.com>
17686
17687	* mpn/amd64/add_n.asm: New file.
17688	* mpn/amd64/sub_n.asm: New file.
17689	* mpn/amd64/mul_1.asm: New file.
17690	* mpn/amd64/addmul_1.asm: New file.
17691	* mpn/amd64/submul_1.asm: New file.
17692
176932003-08-19  Kevin Ryde  <kevin@swox.se>
17694
17695	* longlong.h (add_ssaaaa, sub_ddmmss) [hppa 64]: Move down into main
17696	__GNUC__ block.  Exclude for _LONG_LONG_LIMB (ie. ABI=2.0n) since
17697	these forms are only for ABI=2.0w.
17698
17699	* longlong.h (count_leading_zeros) [__mcpu32__]: Check __mcpu32__ to
17700	avoid bfffo on GCC 3.4 in CPU32 mode.  Reported by Bernardo Innocenti.
17701
17702	* longlong.h (count_trailing_zeros) [x86_64]: Use "%q0" to force
17703	64-bit register destination.  Pointed out by Torbjorn.
17704
17705	* mpz/combit.c: Correction to carry handling when extending a
17706	negative, and use __GMPN_ADD_1.  Correction to complement limb for a
17707	negative when there's a non-zero low limb.
17708	* tests/mpz/bit.c (check_clr_extend, check_com_negs): Exercise these.
17709
17710	* demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/test.pl: Add
17711	get_d_2exp.
17712	* demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/GMP/Rand.pm,
17713	demos/perl/test.pl: Add gmp_urandomb_ui, gmp_urandomm_ui.
17714	(GMP::Rand::randstate): Accept a randstate object to copy.
17715	* demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/GMP/Mpz.pm,
17716	demos/perl/test.pl: Add combit, rootrem.
17717
177182003-08-19  Torbjorn Granlund  <tege@swox.com>
17719
17720	* tune/Makefile.am (EXTRA_DIST): Add amd64.asm.
17721
177222003-08-17  Kevin Ryde  <kevin@swox.se>
17723
17724	* gmpxx.h [__MPFR_H]: Include full <iostream> for inlines.
17725	* tests/cxx/t-headfr.cc: New file, exercising this.
17726	* tests/cxx/Makefile.am: Add it.
17727
17728	* tests/cxx/t-constr.cc: Include config.h for WANT_MPFR.
17729
17730	* gmpxx.h: Correction to temp variable type in mpf -> mpfr assignment.
17731	Reported by Derrick Bass.
17732	* tests/cxx/t-assign.cc (check_mpfr): Exercise this.
17733
17734	* configure.in (WANT_MPFR): AC_DEFINE this, for the benefit of
17735	tests/cxx/t-*.cc.  (Was always meant to have been defined.)
17736	* tests/cxx/Makefile.am (INCLUDES): Add -I$(top_srcdir)/mpfr.
17737
17738	* gmpxx.h: __gmp_default_rounding_mode -> __gmpfr_default_rounding_mode
17739	(struct __gmp_hypot_function): Correction to mpfr_hypot addition.
17740	* tests/cxx/t-misc.cc (check_mpfr_hypot): Corrections to mpfr/long
17741	tests.
17742
177432003-08-16  Torbjorn Granlund  <tege@swox.com>
17744
17745	* configure.in (amd64): New.
17746
17747	* mpn/amd64/gmp-mparam.h: New file.
17748
17749	* tune/amd64.asm: New file, derived in part from tune/pentium.asm.
17750
177512003-08-15  Kevin Ryde  <kevin@swox.se>
17752
17753	* tune/freq.c (freq_irix_hinv): Reinstate, for the benefit of IRIX 6.2.
17754	(freq_attr_get_invent): Conditionalize on INFO_LBL_DETAIL_INVENT too.
17755
177562003-08-14  Kevin Ryde  <kevin@swox.se>
17757
17758	* mpq/get_d.c: Use mpn_get_d.
17759	* tests/mpq/t-get_d.c (check_onebit): New test.
17760
17761	* gmp.texi (Notes for Particular Systems): Under x86 cpu types, note
17762	i386 is a fat binary, remove pentium4 recommendation since i386 is now
17763	quite reasonable for p4.
17764	(Notes for Particular Systems): Under Windows DLLs, remove caveat
17765	about --enable-cxx now ok, update .lib creation for new libtool,
17766	remove .exp not needed for MS C.
17767	(Notes for Package Builds): i386 is a fat binary.
17768	(Reentrancy): Remove SCO ctype.h note, don't want to list every system
17769	misfeature, and was quite possibly for non-threading mode anyway.
17770	(Autoconf): Remove notes on gmp 2 detection, too old to want to
17771	encourage anyone to use.
17772	(Karatsuba Multiplication): Correction to threshold increase/decrease
17773	for a and b terms.  Reported by Richard Brent and Paul Zimmermann.
17774	Also add various further index entries.
17775
17776	* tune/freq.c (freq_attr_get_invent): New function.
17777	(freq_irix_hinv): Remove, in favour or freq_attr_get_invent.
17778	* configure.in (AC_CHECK_FUNCS): Add attr_get.
17779	(AC_CHECK_HEADERS): Add invent.h, sys/attributes.h, sys/iograph.h.
17780
177812003-08-03  Kevin Ryde  <kevin@swox.se>
17782
17783	* tune/tuneup.c (tune_mul): Use MUL_KARATSUBA_THRESHOLD_LIMIT.
17784
177852003-08-02  Kevin Ryde  <kevin@swox.se>
17786
17787	* mpn/asm-defs.m4: Tweak some comments, add hpux11 to m4wrap 0xFF
17788	problem systems.
17789
17790	* configure.in (*-*-sco3.2v5*): Remove lt_cv_archive_cmds_need_lc=no,
17791	since libtool no longer uses it.  This was a workaround fixing ctype.h
17792	in SCO 5 shared libraries; not sure if libtool now gets it right on
17793	its own, let's hope so.
17794
17795	* configure.in, acinclude.m4 (GMP_PROG_HOST_CC): Remove, libtool no
17796	longer demands HOST_CC.
17797
17798	* configure.in: When C or C++ compiler not found, refer user to
17799	config.log.
17800
17801	* configure.in (i386-*-*): Turn i386 into a fat binary build.
17802	* mpn/x86/fat/fat.c, mpn/x86/fat/fat_entry.asm,
17803	mpn/x86/fat/gmp-mparam.h, mpn/x86/fat/gcd_1.c, mpn/x86/fat/mode1o.c:
17804	New files.
17805	* gmp-impl.h (struct cpuvec_t) [x86 fat]: New structure.
17806	* longlong.h (COUNT_LEADING_ZEROS_NEED_CLZ_TAB) [x86 fat]: Define.
17807	* mpn/asm-defs.m4 (foreach): New macro.
17808	* mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): New define.
17809	* mpn/x86/sqr_basecase.asm: New file, primarily as a fallback for fat
17810	binaries.
17811	* mpn/x86/p6/gmp-mparam.h, mpn/x86/p6/mmx/gmp-mparam.h: Add comments
17812	about fat binary SQR_KARATSUBA_THRESHOLD for p6 and p6/mmx.
17813
17814	* configure.in: Add various supports for fat binaries, via fat_path,
17815	fat_functions and fat_thresholds variables.
17816	* acinclude.m4 (GMP_STRIP_PATH): Mung $fat_path too.
17817	(GMP_FAT_SUFFIX, GMP_REMOVE_FROM_LIST): New macros.
17818	* gmp-impl.h: Add various supports for fat binaries.
17819	(DECL_add_n etc): New macros.
17820	(mpn_mul_basecase etc): Define only if not already defined.
17821	* mpn/asm-defs.m4 (m4_config_gmp_mparam): Mention fat binary.
17822	(MPN): Use m4_unquote, for the benefit of fat binary name expansion.
17823	* doc/configuration: Notes on fat binaries.
17824	* gmp-impl.h (MUL_TOOM3_THRESHOLD_LIMIT): Define always.
17825	(MUL_KARATSUBA_THRESHOLD_LIMIT): New define.
17826	* mpn/generic/mul.c, mpn/generic/mul_n.c: Use these.
17827	* tune/divrem1div.c, tune/divrem1inv.c, tune/mod_1_div.c,
17828	tune/mod_1_inv.c: Define OPERATION_divrem_1 and OPERATION_mod_1, to
17829	tell fat.h what's being done.
17830
17831	* config.guess (alpha-*-*): Update comments on what configfsf.guess
17832	does and doesn't do for us.
17833
178342003-07-31  Kevin Ryde  <kevin@swox.se>
17835
17836	* config.guess: Remove $dummy.o files everywhere, in case vendor
17837	compilers produce that even when not asked.
17838
17839	* demos/perl/GMP.xs (class_or_croak): Rename "class" parameter to
17840	avoid C++ keyword.
17841	(coerce_ulong, coerce_long): Move croaks to stop g++ 3.3 complaining
17842	about uninitialized variables.
17843
17844	* demos/perl/INSTALL: Add notes on building with a DLL.
17845
17846	* longlong.h (count_trailing_zeros) [x86_64]: Ensure bsfq destination
17847	is a 64-bit register.  Diagnosed by Francois G. Dorais.
17848
178492003-07-31  Torbjorn Granlund  <tege@swox.com>
17850
17851	* longlong.h [ppc]: Remove nested test for vxworks.
17852
178532003-07-24  Kevin Ryde  <kevin@swox.se>
17854
17855	* gmpxx.h (struct __gmp_binary_multiplies): Use mpz_mul_si for
17856	mpz*long and long*mpz.
17857	* tests/cxx/t-ops.cc (check_mpz): Exercise mpz*long and mpz*ulong.
17858
17859	* cxx/ismpf.cc: Use std::locale decimal point when available.  Expect
17860	localeconv available always.
17861	* tests/cxx/t-locale.cc: Enable check_input tests.
17862
17863	* gmpxx.h (struct __gmp_hypot_function): Use mpfr_hypot.
17864	* tests/cxx/t-misc.cc (check_mpfr_hypot): New tests.
17865
17866	* tests/cxx/t-assign.cc, tests/cxx/t-binary.cc, tests/cxx/t-ops.cc,
17867	tests/cxx/t-prec.cc, tests/cxx/t-ternary.cc, tests/cxx/t-unary.cc:
17868	Include config.h for WANT_MPFR.
17869
17870	* tests/mpz/bit.c (check_single): Correction to a diagnostic print.
17871
178722003-07-24  Niels Möller  <nisse@lysator.liu.se>
17873
17874	* mpz/combit.c: New file.
17875	* Makefile.am, mpz/Makefile.am: Add it.
17876	* gmp-h.in (mpz_combit): Add prototype.
17877	* tests/mpz/bit.c (check_single): Exercise mpz_combit.
17878
178792003-07-16  Kevin Ryde  <kevin@swox.se>
17880
17881	* mpn/generic/get_d.c: Correction to infinity handling for large exp.
17882
178832003-07-14  Kevin Ryde  <kevin@swox.se>
17884
17885	* mpz/get_d.c, mpz/get_d_2exp.c, mpf/get_d.c, mpf/get_d_2exp.c: Use
17886	mpn_get_d.
17887
17888	* mpn/generic/get_d.c: New file, based on mpz/get_d.c and insert-dbl.c.
17889	* configure.in, mpn/Makefile.am: Add it.
17890	* gmp-impl.h (mpn_get_d): Add prototype.
17891
17892	* tests/mpn/t-get_d.c: New file.
17893	* tests/mpn/Makefile.am: Add it.
17894
17895	* tests/mpz/t-get_d_2exp.c (check_onebit, check_round): Test negatives.
17896	(check_onebit): Add a few more bit sizes.
17897
17898	* tests/misc.c, tests/tests.h (tests_isinf): New function.
17899
179002003-07-12  Kevin Ryde  <kevin@swox.se>
17901
17902	* configure.in (GMP_PROG_CXX_WORKS): Include $CPPFLAGS, same as
17903	automake does in the actual build.
17904
17905	* acinclude.m4 (GMP_PROG_CXX_WORKS): In the namespace test, declare
17906	namespace before trying to use.  In std iostream test, provoke a
17907	failure from Compaq C++ in pre-standard mode.
17908
179092003-07-08  Kevin Ryde  <kevin@swox.se>
17910
17911	* acinclude.m4 (GMP_PROG_CC_WORKS): Use separate compiles for various
17912	known problems, and indicate to the user the reason for rejecting.
17913	(GMP_PROG_CXX_WORKS): Ditto, and insist on being able to execute each
17914	compiled program.
17915
179162003-07-05  Kevin Ryde  <kevin@swox.se>
17917
17918	* config.sub: Add comments to our alias transformations.
17919
17920	* configfsf.sub, configfsf.guess: Update to 2003-07-04.
17921
17922	* acinclude.m4 (GMP_PROG_CC_WORKS, GMP_PROG_CC_WORKS_LONGLONG): Show
17923	failing program in config.log, per other autoconf tests.
17924
17925	* configure.in (i786-*-*): Recognise as pentium4, per configfsf.sub.
17926
179272003-06-28  Kevin Ryde  <kevin@swox.se>
17928
17929	* mpz/get_d_2exp.c, mpf/get_d_2exp.c: Avoid res==1.0 when floats round
17930	upwards.
17931
17932	* tests/mpz/t-get_d_2exp.c: New file.
17933	* tests/mpz/Makefile.am (check_PROGRAMS): Add it.
17934	* tests/mpf/t-get_d_2exp.c: New file.
17935	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
17936	* tests/x86call.asm, test/tests.h (x86_fldcw, x86_fstcw): New
17937	functions.
17938	* tests/misc.c, tests/tests.h (tests_hardware_getround,
17939	tests_hardware_setround): New functions.
17940
179412003-06-25  Kevin Ryde  <kevin@swox.se>
17942
17943	* mpn/sparc64/dive_1.c: New file.
17944
17945	* mpn/sparc64/sparc64.h: New file.
17946	* mpn/sparc64/mode1o.c: Remove things now in sparc64.h.
17947
17948	* mpfr/*: Update to mpfr cvs 2003-06-25.
17949
17950	* acinclude.m4 (GMP_PROG_CC_WORKS): In last change provoking gnupro
17951	gcc, don't use ANSI style function definition.
17952
179532003-06-22  Kevin Ryde  <kevin@swox.se>
17954
17955	* mpn/pa32/hppa1_1/udiv.asm: Remove .proc, .entry, .exit and .procend,
17956	handled by PROLOGUE and EPILOGUE.  Comment out .callinfo, per other
17957	asm files.
17958
17959	* gmpxx.h (mpz_class __gmp_binary_divides, __gmp_binary_modulus): Fix
17960	long/mpz and long%mpz for dividend==LONG_MIN divisor==-LONG_MIN.
17961	(mpz_class __gmp_binary_modulus): Fix mpz%long for negative dividend.
17962	* tests/cxx/t-ops.cc (check_mpz): Add test cases for these, merging
17963	operator/ and operator% sections for clarity.
17964
179652003-06-21  Kevin Ryde  <kevin@swox.se>
17966
17967	* mpfr/*: Update to mpfr cvs 2003-06-21.
17968
17969	* acinclude.m4 (GMP_PROG_CC_WORKS): Add code by Torbjorn provoking an
17970	ICE from gcc 2.9-gnupro-99r1 under -O2 -mcpu=ev6.
17971	* configure.in (alpha*-*-* gcc_cflags_cpu): Fallback on -mcpu=ev56 for
17972	this compiler.
17973
17974	* gmpxx.h (get_d): Remove comments about long double, double is
17975	correct for get_d, a future long double form would be get_ld.
17976
179772003-06-19  Kevin Ryde  <kevin@swox.se>
17978
17979	* mpfr/*: Update to mpfr cvs 2003-06-19.
17980
17981	* mpn/generic/dive_1.c: Share src[0] fetch among all cases.  No need
17982	for separate final umul_ppmm in even case, make it part of the loop.
17983
17984	* mpz/get_d_2exp.c, mpq/set_si.c, mpq/set_ui.c: Nailify.
17985
17986	* mpf/iset_si.c: Rewrite using mpf/set_si.c code, in particular this
17987	nailifies it.
17988	* tests/mpf/t-set_si.c: Nailify tests.
17989
17990	* mpf/iset_ui.c: Nailify, as per mpf/set_ui.c
17991	* tests/mpf/t-set_ui.c: New file.
17992	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
17993
179942003-06-15  Kevin Ryde  <kevin@swox.se>
17995
17996	* mpfr/*: Update to mpfr cvs 2003-06-15.
17997
17998	* mpn/x86/k6/mode1o.asm: Remove a bogus ASSERT.
17999
180002003-06-12  Kevin Ryde  <kevin@swox.se>
18001
18002	* configure.in (--enable-assert): Emit WANT_ASSERT to config.m4.
18003	* mpn/powerpc32/powerpc-defs.m4, mpn/x86/x86-defs.m4 (ASSERT): Check
18004	WANT_ASSERT is defined.
18005
18006	* mpn/sparc32/v9/udiv.asm: Amend heading, this file is for sparc v9.
18007
18008	* tests/cxx/Makefile.am (TESTS_ENVIRONMENT): In libtool openbsd hack,
18009	discard error messages from cp, for the benefit of --disable-shared or
18010	systems not using names libgmp.so.*.
18011
18012	* tests/devel/try.c (try_one): When overlapping, copy source data
18013	after filling dst.  Previously probably used only DEADVAL in
18014	overlapping cases.
18015
180162003-06-11  Torbjorn Granlund  <tege@swox.com>
18017
18018	* mpf/random2.c: Rewrite.  Ignore sign of exp parameter.
18019
180202003-06-10  Kevin Ryde  <kevin@swox.se>
18021
18022	* mpn/sparc64/mode1o.c: New file.
18023
180242003-06-09  Torbjorn Granlund  <tege@swox.com>
18025
18026	* mpn/powerpc32/lshift.asm: Add more cycle counts.
18027	* mpn/powerpc32/rshift.asm: Add more cycle counts.
18028
18029	* mpn/ia64/addmul_1.asm: Reformat comments for 80 columns.
18030
18031	* gmp-impl.h (udiv_qrnnd_preinv1): New name for udiv_qrnnd_preinv.
18032	(udiv_qrnnd_preinv2): New name for udiv_qrnnd_preinv2norm.
18033	(udiv_qrnnd_preinv): New #define, making udiv_qrnnd_preinv2
18034	the default.
18035	* tune/speed.c: Corresponding changes.
18036	* tune/speed.h: Likewise.
18037	* tune/common.c: Likewise.
18038
18039	* mpf/get_str.c: Simplify `off' computation.
18040
18041	* longlong.h: Tabify.
18042
180432003-06-09  Kevin Ryde  <kevin@swox.se>
18044
18045	* gmp.texi (ABI and ISA): FreeBSD has sparc64 too, just say "BSD" to
18046	cover all flavours.
18047	* configure.in: Ditto in some comments.
18048
18049	* mpfr/*: Update to mpfr cvs 2003-06-09.
18050
18051	* tests/cxx/Makefile.am (LDADD): Add -L$(top_builddir)/$(LIBS), for
18052	the benefit of gcc 3.2 on itanium2-hp-hpux11.22.
18053
18054	* tune/many.pl (mul_2): Add speed routine settings.
18055	(MAKEFILE): Close when done, for the benefit of development hackery.
18056
180572003-06-08  Kevin Ryde  <kevin@swox.se>
18058
18059	* mpfr/*: Update to mpfr cvs 2003-06-08.
18060
18061	* mpn/x86/x86-defs.m4 (femms): Remove fallback to emms.
18062	(cmovCC, psadbw): Remove simulated versions.
18063	(cmov_available_p, psadbw_available_p): Remove.
18064	This trickery was only ever for development purposes on machines
18065	without those instructions.  Removing it simplifies gmp and in
18066	particular avoids complications for fat binary builds.  Development
18067	can be done with a wrapper around "as" if really needed.
18068
18069	* mpn/x86/divrem_1.asm: Don't use loop_or_decljnz, now K6 has its own
18070	mpn/x86/k6/divrem_1.asm.  Amend K6 comments now moved to there.
18071	* mpn/x86/x86-defs.m4 (loop_or_decljnz): Remove, no longer used.
18072
18073	* mpn/x86/k6/divrem_1.asm: New file, derived from mpn/x86/divrem_1.asm.
18074
18075	* mpn/x86/k6/pre_mod_1.asm: Remove comments now in mpn/x86/mod_1.asm.
18076
18077	* mpn/x86/mod_1.asm: Put mpn_mod_1c after mpn_mod_1 for better branch
18078	prediction.  Put done_zero at end for less wastage in alignment.  Use
18079	decl+jnz unconditionally since in fact it's ok on k6.  Amend comments.
18080
180812003-06-07  Kevin Ryde  <kevin@swox.se>
18082
18083	* mpn/generic/mode1o.c: Fix ASSERTs on return value.
18084
18085	* gmp.texi (Build Options): Add viac3 and viac32 cpu types.
18086	(ABI and ISA): Note on sparcv9 ABI=32 vs ABI=64 speed.  More indexing.
18087
18088	* configfsf.guess, configfsf.sub: Update to 2003-06-06.
18089	* config.guess: Remove $RANDOM hack supporting netbsd 1.4, not needed
18090	by new configfsf.guess.
18091
180922003-06-06  Torbjorn Granlund  <tege@swox.com>
18093
18094	* mpn/ia64/submul_1.asm: Add branch over .align block.
18095
180962003-06-05  Torbjorn Granlund  <tege@swox.com>
18097
18098	* longlong.h (add_ssaaaa) [pa64]: Output zero operand as register 0.
18099	Allow more immediate operands.
18100	(sub_ddmmss) [pa64]: Likewise.
18101	(add_ssaaaa) [pa32]: Likewise.
18102	(sub_ddmmss) [pa32]: Likewise.
18103
18104	* mpn/pa64: Change ".level 2.0W" to ".level 2.0w" to please
18105	picky GNU assembler.
18106
181072003-06-05  Kevin Ryde  <kevin@swox.se>
18108
18109	* gmp.texi (Integer Special Functions): In mpz_array_init, fix type
18110	shown for integer_array and give an example use.
18111
181122003-06-04  Torbjorn Granlund  <tege@swox.com>
18113
18114	* mpf/set_str.c (mpf_set_str): Work around gcc 2 bug triggered on
18115	alpha.
18116
181172003-06-03  Kevin Ryde  <kevin@swox.se>
18118
18119	* mpn/x86/pentium/README: Add 7 c/l mmx mul_1, tweak wordings.
18120
18121	* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Use octal char constants in test
18122	program, hex is not supported by K&R.
18123
181242003-06-02  Torbjorn Granlund  <tege@swox.com>
18125
18126	* mpn/mips64/divrem_1.asm: New file.
18127
181282003-06-01  Torbjorn Granlund  <tege@swox.com>
18129
18130	* mpn/powerpc32/lshift.asm: Reformat code.
18131	* mpn/powerpc32/rshift.asm: Reformat code.
18132
181332003-05-30  Kevin Ryde  <kevin@swox.se>
18134
18135	* tests/misc.c (tests_start): Set stdout and stderr to unbuffered, to
18136	avoid any chance of losing output on segv etc.
18137
181382003-05-28  Torbjorn Granlund  <tege@swox.com>
18139
18140	* mpf/get_str.c: Move label `done' to match TMP_MARK and TMP_FREE.
18141	Remove redundant variable prec.
18142
181432003-05-26  Torbjorn Granlund  <tege@swox.com>
18144
18145	* tests/mpz/convert.c: Test bases up to 62.
18146
18147	* tests/mpf/t-conv.c: Test bases up to 62.
18148
18149	* demos/pexpr.c: Don't iterate to get accurate timing.
18150
18151	* mpf/set_str.c (mpn_pow_1_highpart): Cleanup.
18152
18153	* mp_dv_tab.c: Fix typo.
18154
18155	* mpf/get_str.c: Rewrite (now sub-quadratic).
18156
181572003-05-22  Kevin Ryde  <kevin@swox.se>
18158
18159	* tests/mpn/t-divrem_1.c: New file.
18160	* tests/mpn/Makefile.am: Add it.
18161
181622003-05-22  Torbjorn Granlund  <tege@swox.com>
18163
18164	* config.sub: Recognize viac3* processors.
18165
181662003-05-20  Torbjorn Granlund  <tege@swox.com>
18167
18168	* mpn/sparc64/addmul_2.asm: New file.
18169
181702003-05-19  Torbjorn Granlund  <tege@swox.com>
18171
18172	* configure.in: Recognize alphaev7* as alphaev67.
18173
18174	* config.guess: Recognize viac3* processors.
18175	* configure.in: Set up path for viac3* processors.
18176	* acinclude.m4 (X86_PATTERN): Include viac3* processors.
18177
181782003-05-19  Kevin Ryde  <kevin@swox.se>
18179
18180	* tune/freq.c (freq_pstat_getprocessor): New function.
18181	(freq_all): Use it.
18182	* configure.in (AC_CHECK_HEADERS): Add sys/pstat.h.
18183	(AC_CHECK_FUNCS): Add pstat_getprocessor.
18184
181852003-05-15  Kevin Ryde  <kevin@swox.se>
18186
18187	* mpn/generic/mul_fft.c (mpn_mul_fft_decompose): Remove "inline",
18188	since the code is a bit too big.  gcc doesn't actually inline when
18189	alloca (TMP_ALLOC) is used anyway.
18190
181912003-05-13  Kevin Ryde  <kevin@swox.se>
18192
18193	* gmp.texi (Notes for Particular Systems): Libtool directory is .libs
18194	not _libs for mingw dll.  Reported by Andreas Fabri.
18195
181962003-05-07  Kevin Ryde  <kevin@swox.se>
18197
18198	* acinclude.m4 (GMP_PROG_CC_WORKS): Add code to generate sse2/xmm code
18199	from gcc -march=pentium4, to check the assembler supports that.
18200	(GMP_GCC_PENTIUM4_SSE2, GMP_OS_X86_XMM): New macros.
18201	* configure.in (pentium4-*-*): Use them to see if gcc -march=pentium4
18202	(with sse2) is ok.
18203
182042003-05-06  Kevin Ryde  <kevin@swox.se>
18205
18206	* mpz/com.c: Rate size==0 as UNLIKELY, fix comment to mpn_add_1.
18207
18208	* tune/freq.c (<sys/sysinfo.h>): Include only when needed for
18209	getsysinfo(), to avoid a problem with this file on AIX 5.1.
18210
182112003-05-03  Torbjorn Granlund  <tege@swox.com>
18212
18213	* mpf/set_str.c: Do not ignore supposedly superfluous digits (in part
18214	reverting last change).
18215
182162003-05-03  Kevin Ryde  <kevin@swox.se>
18217
18218	* gmp.texi: Use @code for files in @cindex entries, it looks nicer
18219	than @file.
18220
18221	* Makefile.am: Note gmp 4.1.1 and 4.1.2 version info.
18222
18223	* configure.in, acinclude.m4 (GMP_CRAY_OPTIONS): New macro for Cray
18224	system setups, letting AC_REQUIRE do its job instead of a hard coded
18225	AC_PROG_EGREP.
18226
18227	* config.guess: Amend fake RANDOM to avoid ". configfsf.guess" which
18228	segfaults on Debian "ash" 0.4.16.
18229
182302003-05-01  Kevin Ryde  <kevin@swox.se>
18231
18232	* configure.in (AC_CHECK_FUNCS): Add getsysinfo.
18233	(AC_CHECK_HEADERS): Add sys/sysinfo.h and machine/hal_sysinfo.h.
18234	* tune/freq.c (freq_getsysinfo): New function.
18235	(freq_all): Use it.
18236	(freq_sysctlbyname_i586_freq, freq_sysctlbyname_tsc_freq,
18237	freq_sysctl_hw_cpufrequency, freq_sysctl_hw_model): Set
18238	speed_cycletime before trying to print it, when verbose.
18239
182402003-04-28  Torbjorn Granlund  <tege@swox.com>
18241
18242	* mpf/set_str.c: Major overhaul.
18243	(mpn_pow_1_highpart): New helper function, meat extracted from
18244	mpf_set_str.
18245
182462003-04-24  Kevin Ryde  <kevin@swox.se>
18247
18248	* acinclude.m4 (GMP_GCC_ARM_UMODSI): Quote result string against m4.
18249
18250	* configure, ltmain.sh, aclocal.m4: Update to libtool 1.5.
18251
18252	* longlong.h (add_ssaaaa) [all]: Remove first "%" commutative in each,
18253	since gcc only supports one per asm.
18254
18255	* printf/doprnt.c: Add M for mp_limb_t.
18256	* tests/misc/t-printf.c: Exercise this.
18257
18258	* tests/mpz/t-cmp_d.c: Test infinities.
18259	* tests/mpf/t-cmp_d.c: New file.
18260	* tests/mpf/Makefile.am: Add it.
18261
18262	* mpz/cmp_d.c, mpz/cmpabs_d.c, mpf/cmp_d.c: NaN invalid, Inf bigger
18263	than any value.
18264	* mpz/set_d.c, mpq/set_d.c, mpf/set_d.c: Nan or Inf invalid.
18265
18266	* configure.in (AC_CHECK_FUNCS): Add raise.
18267	* invalid.c: New file.
18268	* Makefile.am: Add it.
18269	* gmp-impl.h (__gmp_invalid_operation): Add prototype.
18270	(DOUBLE_NAN_INF_ACTION): New macro.
18271
18272	* tests/trace.c, tests/tests.h (d_trace): New function.
18273	* tests/misc.c, tests/tests.h (tests_infinity_d): New function.
18274	* tests/misc.c (mpz_erandomb, mpz_errandomb): Use gmp_urandomm_ui.
18275
18276	* tune/tuneup.c, tune/common.c, tests/devel/try.c: Cast various
18277	mp_size_t values for printf %ld in case mp_size_t==int.  Use
18278	gmp_printf for mp_limb_t values.
18279
18280	* gmp.texi (Nomenclature and Types): Add mp_exp_t, mp_size_t,
18281	gmp_randstate_t.  Note ulong for bit counts and size_t for byte
18282	counts.  Don't bother with @noindent.
18283	(Debugging): New valgrind is getting MMX/SSE.
18284	(Integer Comparisons): mpz_cmp_d and mpz_cmpabs_d on NaNs and Infs.
18285	(Float Comparison): mpf_cmp_d behaviour on NaNs and Infs.
18286	(Low-level Functions): Note with mpn_hamdist what hamming distance is.
18287	(Formatted Output Strings): Add type M.
18288	(Internals): Remove remarks on ulong bits and size_t bytes.  Move int
18289	field remarks to ...
18290	(Integer Internals, Float Internals): ... here.
18291
182922003-04-19  Kevin Ryde  <kevin@swox.se>
18293
18294	* configure.in (*sparc*-*-* ABI=32): Add umul to extra_functions.
18295
18296	* mpn/x86/p6/mul_basecase.asm: New file.
18297
182982003-04-18  Kevin Ryde  <kevin@swox.se>
18299
18300	* configure.in (m68060-*-*): Fallback to gcc -m68000 when -m68060 not
18301	available, and don't use mpn/m68k/mc68020 asm routines.  (Avoids 32x32
18302	mul and 64/32 div which trap to the kernel on 68060.  Advice by
18303	Richard Zidlicky.)
18304	* mpn/m68k/README: Update notes on directory usage.
18305
18306	* tests/cxx/Makefile.am (TESTS_ENVIRONMENT): Add a hack to let the
18307	test programs run with a shared libgmpxx on openbsd 3.2.
18308
18309	* gmp.texi (Language Bindings): Add Guile.
18310
183112003-04-12  Kevin Ryde  <kevin@swox.se>
18312
18313	* configure.in (cygwin*, mingw*, pw32*, os2*): Add
18314	-Wl,--export-all-symbols to GMP_LDFLAGS, no longer the default in
18315	latest mingw and libtool.
18316
18317	* acinclude.m4 (GMP_ASM_COFF_TYPE): New macro.
18318	* configure.in (x86s): Use it.
18319	* mpn/x86/x86-defs.m4 (COFF_TYPE): New macro.
18320	(PROLOGUE_cpu): Use it, for the benefit of mingw DLLs.
18321
18322	* gmp-impl.h (mpn_copyi, mpn_copyd): Add __GMP_DECLSPEC.
18323
18324	* gmp.texi (Known Build Problems): Remove windows test program .exe
18325	repeated built, fixed by new libtool.  Remove MacOS C++ shared library
18326	creation, fixed by new libtool.
18327	(Notes for Package Builds, Known Build Problems): Remove DESTDIR notes
18328	on libgmpxx, fixed in new libtool.
18329
183302003-04-10  Torbjorn Granlund  <tege@swox.com>
18331
18332	* configure.in: Match turbosparc.
18333	* config.guess: Recognize turbosparc (just for *bsd for now).
18334
183352003-04-09  Kevin Ryde  <kevin@swox.se>
18336
18337	* mpf/mul_ui.c [nails]: Call mpf_mul to handle v > GMP_NUMB_MAX.
18338
18339	* tests/mpz/t-mul.c (main): Don't try FFT sizes when FFT disabled via
18340	MP_SIZE_T_MAX, eg. for nails.
18341
18342	* tests/cxx/t-ternary.cc: Split up tests to help compile speed and
18343	memory usage.
18344
18345	* tests/devel/try.c: Print seed under -R, add -E to reseed, use ulong
18346	for seed not uint.
18347
18348	* gmp.texi: Add @: after various abbreviations, more index entries.
18349	(leftarrow): New macro, for non-tex.
18350	(Random State Initialization): Remove commented gmp_randinit_lc, not
18351	going to be implemented.
18352	(Random Number Algorithms): New section.
18353	(References): Add Matsumoto and Nishimura on Mersenne Twister, add
18354	Bertot, Magaud and Zimmermann on GMP Square Root.
18355
183562003-04-06  Kevin Ryde  <kevin@swox.se>
18357
18358	* tests/mpz/t-gcd_ui.c: New file.
18359	* tests/mpz/Makefile.am: Add it.
18360
18361	* mpz/gcd_ui.c: Correction to return value on longlong limb systems,
18362	limb might not fit a ulong.
18363
183642003-04-04  Kevin Ryde  <kevin@swox.se>
18365
18366	* configure, aclocal.m4, ltmain.sh: Update to libtool cvs snapshot
18367	2003-04-02.
18368
183692003-04-02  Kevin Ryde  <kevin@swox.se>
18370
18371	* configure.in (*-*-cygwin*): No longer force lt_cv_sys_max_cmd_len,
18372	libtool has addressed this now.
18373	(AC_PROVIDE_AC_LIBTOOL_WIN32_DLL): Remove this, libtool _LT_AC_LOCK
18374	no longer needs it.
18375
18376	* acinclude.m4 (GMP_PROG_AR): Also set ac_cv_prog_AR and
18377	ac_cv_prog_ac_ct_AR when adding flags to AR, so they're not lost by
18378	libtool's call to AC_CHECK_TOOL.
18379
183802003-04-01  Kevin Ryde  <kevin@swox.se>
18381
18382	* configure, aclocal.m4, ltmain.sh: Update to libtool cvs snapshot
18383	2003-03-31.
18384
18385	* configure.in (AC_PROG_F77): Add a dummy AC_PROVIDE to stop libtool
18386	running F77 probes.
18387
18388	* randlc2x.c (gmp_rand_lc_struct): Add comments about what exactly is
18389	in each field.
18390	(randseed_lc): Rename seedp to seedz to avoid confusion with seedp in
18391	the lc function.  Suggested by Pedro Gimeno.
18392	(gmp_randinit_lc_2exp): Use __GMP_ALLOCATE_FUNC_TYPE.  No need for
18393	"+1" in mpz_init2 of _mp_seed.  Don't bother with mpz_init2 for _mp_a.
18394
183952003-03-29  Kevin Ryde  <kevin@swox.se>
18396
18397	* configure.in (m68k-*-*): Use -O2, no longer need to fallback to -O.
18398	* acinclude.m4 (GMP_GCC_M68K_OPTIMIZE): Remove macro.
18399
18400	* configure.in (AC_CHECK_TYPES): Add notes on why tested.
18401
18402	* gmp.texi (GMPrefu, GMPpxrefu, GMPreftopu, GMPpxreftopu): New macros,
18403	use them for all external references to get URLs into HTML output.
18404	(Random State Initialization): Add gmp_randinit_set.
18405	(Random State Miscellaneous): New section.
18406
184072003-03-29  Kevin Ryde  <kevin@swox.se>
18408
18409	* randbui.c, randmui.c: New files.
18410	* Makefile.am: Add them.
18411	* gmp-h.in (gmp_urandomb_ui, gmp_urandomm_ui): Add prototypes.
18412	* tests/rand/t-urbui.c, tests/rand/t-urmui.c: New files.
18413	* tests/rand/Makefile.am: Add them.
18414
18415	* gmp-impl.h (gmp_randstate_srcptr): New typedef.
18416	(gmp_randfnptr_t): Add randiset_fn.
18417	* randiset.c: New file.
18418	* Makefile.am: Add it.
18419	* gmp-h.in (gmp_randinit_set): Add prototype.
18420	* randlc2x.c, randmt.c: Add gmp_randinit_set support.
18421	* tests/rand/t-iset.c: New file.
18422	* tests/rand/Makefile.am: Add it.
18423
18424	* tests/misc.c, tests/tests.h (call_rand_algs): New function.
18425
184262003-03-27  Kevin Ryde  <kevin@swox.se>
18427
18428	* mpz/bin_uiui.c: Use plain "*" for kacc products rather than
18429	umul_ppmm since high not needed, except for an ASSERT now amended.
18430
184312003-03-26  Kevin Ryde  <kevin@swox.se>
18432
18433	* demos/expr/exprfr.c (cbrt, cmpabs, exp2, gamma, nextabove,
18434	nextbelow, nexttoward): New functions.
18435	* demos/expr/t-expr.c: Exercise these.
18436
18437	* mpfr/*: Update to mpfr cvs 2003-03-26.
18438
18439	* gmp-impl.h (MPZ_REALLOC): Use UNLIKELY, to expect no realloc.
18440
18441	* tune/time.c (cycles_works_p): Scope variables down to relevant part
18442	to avoid warnings about unused.
18443
18444	* configfsf.guess, configfsf.sub: Update to 2003-02-22.
18445	* config.guess: Fake a $RANDOM variable when running configfsf.guess,
18446	to workaround a problem on m68k NetBSD 1.4.1.
18447
18448	* mpz/fac_ui.c: Remove unused variable "z1".
18449
18450	* tune/freq.c (freq_irix_hinv): Allow "Processor 0" line from IRIX 6.5.
18451
184522003-03-24  Torbjorn Granlund  <tege@swox.com>
18453
18454	* randlc2x.c (randget_lc): Remove write-only variable rn.
18455	* mpf/eq.c: Remove write-only variable usign.
18456	* gen-psqr.c (main): Remove write-only variable numb_bits.
18457
184582003-03-17  Torbjorn Granlund  <tege@swox.com>
18459
18460	* Makefile.am (libgmp_la_SOURCES): Add mp_dv_tab.c.
18461	(libmp_la_SOURCES): Add mp_dv_tab.c.
18462
18463	* mpn/alpha/invert_limb.asm: Add a few comments.
18464
18465	* mp_dv_tab.c: New file, defining __gmp_digit_value_tab.
18466
18467	* mpz/set_str.c: Get rid of function digit_value_in_base and use table
18468	__gmp_digit_value_tab instead.
18469	* mpz/inp_str.c: Likewise.
18470	* mpf/set_str.c: Likewise.
18471	* mpbsd/min.c: Likewise.
18472	* mpbsd/xtom.c: Likewise.
18473
18474	* mpz/set_str.c: Allow bases <= 62.  Return error for invalid bases.
18475	* mpz/inp_str.c: Likewise.
18476	* mpf/set_str.c: Likewise.
18477	* mpz/out_str.c: Likewise.
18478	* mpz/get_str.c: Likewise.
18479	* mpf/get_str.c: Likewise.
18480
18481	* mpz/inp_str.c: Restructure to allocate more string space just
18482	before needed.
18483	* mpbsd/min.c: Likewise.
18484
18485	* longlong.h (__udiv_qrnnd_c): Remove redundant casts.
18486	(32-bit sparc): Test HAVE_HOST_CPU_supersparc in addition to various
18487	sparc_v8 spellings.
18488
184892003-03-17  Kevin Ryde  <kevin@swox.se>
18490
18491	* mpfr/*: Update to mpfr cvs 2003-03-17.
18492
184932003-03-15  Kevin Ryde  <kevin@swox.se>
18494
18495	* Makefile.am (EXTRA_libgmp_la_SOURCES): Use this for TMP_ALLOC
18496	sources, instead of a libdummy.la.
18497
184982003-03-16  Torbjorn Granlund  <tege@swox.com>
18499
18500	* config.guess: Recognize supersparc and microsparc for *BSD systems.
18501	Generalize some superscalar recognition patterns.
18502
185032003-03-14  Torbjorn Granlund  <tege@swox.com>
18504
18505	* mpn/sparc64/udiv.asm: New file.
18506
185072003-03-13  Torbjorn Granlund  <tege@swox.com>
18508
18509	* mpn/sparc64: Table cycle counts.  Update some comments.
18510
18511	* mpn/powerpc64/divrem_1.asm: New file.
18512
185132003-03-10  Torbjorn Granlund  <tege@swox.com>
18514
18515	* mpn/generic/mul.c (mpn_mul): Don't blindly expect
18516	MUL_KARATSUBA_THRESHOLD to be a constant.
18517
185182003-03-07  Torbjorn Granlund  <tege@swox.com>
18519
18520	* mpn/generic/mul.c (mpn_mul): New operand splitting code for
18521	avoiding cache misses when un >> MUL_KARATSUBA_THRESHOLD > vn.
18522	(MUL_BASECASE_MAX_UN): New #define, default to 500 for now.
18523
185242003-03-07  Kevin Ryde  <kevin@swox.se>
18525
18526	* Makefile.am: Put gmp.h and mp.h under $(exec_prefix)/include.
18527	* gmp.texi (Build Options): Add notes on this.
18528	Reported by Vincent Lefèvre.
18529
185302003-03-06  Kevin Ryde  <kevin@swox.se>
18531
18532	* configure.in (alpha*-*-* gcc): Add asm option before testing -mcpu,
18533	for the benefit of gcc 2.9-gnupro-99r1 on alphaev68-dec-osf5.1 which
18534	doesn't otherwise put the assembler in the right mode for -mcpu=ev6.
18535
185362003-03-05  Torbjorn Granlund  <tege@swox.com>
18537
18538	* mpn/powerpc32/powerpc-defs.m4: Set up renaming for v registers.
18539
18540	* mpz/powm.c (redc): Instead of repeated mpn_incr_u invocations,
18541	accumulate carries and add at the end.
18542	(mpz_powm): Trim tp allocation, now as redc doesn't need carry guard.
18543
185442003-02-25  Torbjorn Granlund  <tege@swox.com>
18545
18546	* mpn/x86/pentium4/copyd.asm: Correct header comment.
18547
18548	* mpn/arm/addmul_1.asm: Correct cycle counts.
18549	* mpn/arm/submul_1.asm: Likewise.
18550
185512003-02-20  Kevin Ryde  <kevin@swox.se>
18552
18553	* demos/factorize.c (factor_using_pollard_rho): Test k>0 to avoid
18554	infinite loop if k=0 and gcd!=1 reveals a factor.  Reported by John
18555	Pongsajapan.
18556
18557	* gmp.texi, fdl.texi: Update to FDL version 1.2.
18558
185592003-02-18  Torbjorn Granlund  <tege@swox.com>
18560
18561	* mpn/arm/mul_1.asm: Fix typo introduced in last change.
18562
185632003-02-17  Torbjorn Granlund  <tege@swox.com>
18564
18565	* mpn/ia64/gmp-mparam.h: Retune.
18566
18567	* mpn/sparc64/copyi.asm: Add some header comments.
18568	* mpn/sparc64/copyd.asm: Likewise.
18569
18570	* mpn/arm/mul_1.asm: Put vl operand last for umull/umlal.
18571	Add some header comments.
18572	* mpn/arm/addmul_1.asm: Rewrite.
18573	* mpn/arm/submul_1.asm: Rewrite.
18574	* mpn/arm/gmp-mparam.h: Retune.
18575
185762003-02-16  Torbjorn Granlund  <tege@swox.com>
18577
18578	* mpn/arm/copyi.asm: New file.
18579	* mpn/arm/copyd.asm: New file.
18580
185812003-02-16  Kevin Ryde  <kevin@swox.se>
18582
18583	* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Tolerate incorrect last data
18584	byte seen on an arm system.
18585
185862003-02-15  Torbjorn Granlund  <tege@swox.com>
18587
18588	* mpn/arm/gmp-mparam.h: Retune.
18589
185902003-02-13  Torbjorn Granlund  <tege@swox.com>
18591
18592	* mpn/powerpc32/750/com_n.asm: Add more cycle counts.
18593
185942003-02-13  Kevin Ryde  <kevin@swox.se>
18595
18596	* configure.in (AC_PREREQ): Bump to 2.57.
18597
18598	* configure.in, acinclude.m4 (GMP_GCC_WA_OLDAS): New macro, applying
18599	-Wa,-oldas only when necessary.
18600
18601	* configure.in (powerpc*-*-*): Don't use -Wa,-mppc with gcc, it
18602	overrides options recent gcc adds for -mcpu, making generated code
18603	fail to assemble.
18604
18605	* tune/tuneup.c (mpn_fft_table): Remove definition, it's in mul_fft.c.
18606
186072003-02-12  Torbjorn Granlund  <tege@swox.com>
18608
18609	* mpn/x86/pentium4/sse2/gmp-mparam.h: Retune.
18610	* mpn/x86/k7/gmp-mparam.h: Retune.
18611	* mpn/x86/k6/gmp-mparam.h: Retune.
18612	* mpn/x86/p6/gmp-mparam.h: Retune.
18613	* mpn/x86/p6/mmx/gmp-mparam.h: Retune.
18614
18615	* tests/mpz/t-mul.c (main): Rewrite FFT testing code.
18616
186172003-02-10  Torbjorn Granlund  <tege@swox.com>
18618
18619	* config.guess: Recognize "power2" systems.
18620
18621	* mpn/powerpc64/gmp-mparam.h: Fix indentation.
18622	* mpn/power/gmp-mparam.h: Retune.
18623	* mpn/alpha/ev6/nails/gmp-mparam.h: Retune.
18624	* mpn/sparc64/gmp-mparam.h: Retune.
18625	* mpn/pa64/gmp-mparam.h: Retune.
18626	* mpn/sparc32/v8/supersparc/gmp-mparam.h: Retune.
18627	* mpn/sparc32/v8/gmp-mparam.h: Retune.
18628	* mpn/mips64/gmp-mparam.h: Retune.
18629	* mpn/alpha/ev6/gmp-mparam.h: Retune.
18630	* mpn/powerpc32/gmp-mparam.h: Retune.
18631	* mpn/powerpc32/750/gmp-mparam.h: Retune.
18632	* mpn/alpha/ev5/gmp-mparam.h: Retune.
18633	* mpn/m68k/gmp-mparam.h: Retune.
18634	* mpn/cray/gmp-mparam.h: Set GET_STR_PRECOMPUTE_THRESHOLD.
18635
18636	* configure.in: Undo this, problem doesn't happen any more:
18637	(mips64*-*-*): Pass just -O1 to cc, to work around compiler bug.
18638
186392003-02-03  Kevin Ryde  <kevin@swox.se>
18640
18641	* gmp-impl.h (MPN_NORMALIZE, MPN_NORMALIZE_NOT_ZERO): Add parens
18642	around macro parameters.  Reported by Jason Moxham.
18643
186442003-02-01  Kevin Ryde  <kevin@swox.se>
18645
18646	* gmp.texi (Low-level Functions): No overlap permitted by mpn_mul_n.
18647	Reported by Jason Moxham.
18648	(Formatted Input Strings): Correction to strtoul cross reference
18649	formatting.
18650	(BSD Compatible Functions): Add index entry for MINT.
18651
186522003-01-29  Torbjorn Granlund  <tege@swox.com>
18653
18654	* gmp-impl.h (mpn_mul_fft): Now returns int.
18655
186562003-01-29  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
18657
18658	* mpn/generic/mul_fft.c: Major rewrite.
18659
186602003-01-25  Kevin Ryde  <kevin@swox.se>
18661
18662	* config.guess (powerpc*-*-*): Remove $dummy.core file when mfpvr
18663	fails on NetBSD.
18664	(trap): Remove $dummy.core on abnormal termination too.
18665
18666	* mpfr/*: Update to mpfr cvs 2003-01-25.
18667
186682003-01-24  Torbjorn Granlund  <tege@swox.com>
18669
18670	* mpn/ia64/README: Update cycle counts to match current code.
18671
186722003-01-18  Kevin Ryde  <kevin@swox.se>
18673
18674	* mpfr/*: Update to mpfr cvs 2003-01-18.
18675
186762003-01-17  Torbjorn Granlund  <tege@swox.com>
18677
18678	* gmp.texi: Canonicalize URLs.
18679
186802003-01-15  Kevin Ryde  <kevin@swox.se>
18681
18682	* gmp.texi (Notes for Particular Systems): Add hardware floating point
18683	precision mode.
18684
18685	* mpfr/*, configure, aclocal.m4, config.in: Update to mpfr cvs
18686	2003-01-15.
18687
186882003-01-11  Kevin Ryde  <kevin@swox.se>
18689
18690	* mpfr/*: Update to mpfr cvs 2003-01-11.
18691
186922003-01-09  Kevin Ryde  <kevin@swox.se>
18693
18694	* mpfr/get_str.c: Update to mpfr cvs 2003-01-09.
18695
18696	* doc/configuration: Various updates.
18697
186982003-01-06  Torbjorn Granlund  <tege@swox.com>
18699
18700	* mpn/alpha/copyi.asm: Avoid `nop' mnemonic, unsupported on Cray.
18701	* mpn/alpha/copyd.asm: Likewise.
18702
187032003-01-05  Kevin Ryde  <kevin@swox.se>
18704
18705	* demos/expr/t-expr.c (check_r): Tolerate mpfr_set_str new return
18706	value.
18707
18708	* configure, aclocal.m4 (*-*-osf4*, *-*-osf5*): Regenerate with
18709	libtool patch to avoid bash printf option problem when building shared
18710	libraries with cxx.
18711
18712	* configure.in (pentium4-*-*): Use "-march=pentium4 -mno-sse2" since
18713	sse2 causes buggy code from gcc 3.2.1 and is only supported on new
18714	enough kernels.
18715
18716	* acinclude.m4 (GMP_PROG_NM): Add some notes about failures, per
18717	report by Krzysztof Kozminski.
18718
18719	* gmp-h.in (mpz_mdivmod_ui, mpz_mmod_ui): Add parens around "r".
18720
18721	* gmp-h.in (__GMP_CAST): New macro, clean to g++ -Wold-style-cast.
18722	(GMP_NUMB_MASK, mpz_cmp_si, mpq_cmp_si, mpz_odd_p, mpn_divexact_by3,
18723	mpn_divmod): Use it.  Reported by Krzysztof Kozminski.
18724	(mpz_odd_p): No need for the outermost cast to "int".
18725	* tests/cxx/t-cast.cc: New file.
18726	* tests/cxx/Makefile.am: Add it.
18727
187282003-01-04  Kevin Ryde  <kevin@swox.se>
18729
18730	* mpfr/set_str.c: Update to mpfr cvs 2003-01-04.
18731
18732	* demos/expr/exprfra.c (e_mpfr_number): Tolerate recent mpfr_set_str
18733	returning count of characters accepted.
18734
187352003-01-03  Torbjorn Granlund  <tege@swox.com>
18736
18737	* mpn/alpha/copyi.asm: New file.
18738	* mpn/alpha/copyd.asm: New file.
18739
187402003-01-03  Kevin Ryde  <kevin@swox.se>
18741
18742	* demos/expr/t-expr.c: Use __gmpfr on some mpfr internals that have
18743	changed.
18744
18745	* mpfr/*, aclocal.m4, config.in, configure: Update to mpfr cvs
18746	2003-01-03.
18747
18748	* gmp.texi (Introduction to GMP): Mention release announcements
18749	mailing list, and put home page and ftp before mailing lists.
18750
187512002-12-28  Torbjorn Granlund  <tege@swox.com>
18752
18753	* mpn/generic/mul_fft.c (mpn_fft_next_size): Simplify.
18754
187552002-12-28  Kevin Ryde  <kevin@swox.se>
18756
18757	* acinclude.m4 (M68K_PATTERN): New macro.
18758	(GMP_GCC_M68K_OPTIMIZE): Use it to avoid m6811 and friends.
18759	* configure.in: Ditto.
18760
18761	* tests/mpz/t-import.c, tests/mpz/t-export.c: Use '\xHH' to avoid
18762	warnings about char overflows.
18763	* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Ditto.
18764
187652002-12-28  Pedro Gimeno  <pggimeno@wanadoo.es>
18766
18767	* randmt.c (randseed_mt, default_state): Fix off-by-one bug on padding.
18768	(randseed_mt): Add ASSERT checking result of mpz_export.
18769
187702002-12-24  Kevin Ryde  <kevin@swox.se>
18771
18772	* gmp.texi (Integer Import and Export): Clarify treatment of signs,
18773	reported by Kent Boortz.
18774
18775	* randmt.c: Use gmp_uint_least32_t.
18776	(randseed_mt): Add nails to mpz_export in case mt[i] more than 32 bits.
18777
18778	* gmp-impl.h (gmp_uint_least32_t): New typedef, replacing GMP_UINT32.
18779	* configure.in (AC_CHECK_TYPES): Add uint_least32_t.
18780	(AC_CHECK_SIZEOF): Add unsigned short.
18781
187822002-12-22  Kevin Ryde  <kevin@swox.se>
18783
18784	* gmp-impl.h (ULONG_PARITY) [generic C]: Mask result to a single bit.
18785	(ULONG_PARITY) [_CRAY, __ia64]: New macros.
18786	* tests/t-parity.c: New test.
18787	* tests/Makefile.am (check_PROGRAMS): Add it.
18788
18789	* longlong.h (count_trailing_zeros) [ia64]: New macro.
18790
18791	* tests/t-count_zeros.c (check_various): Remove unused variable "n".
18792
18793	* mpn/x86/README: Revise notes on PIC, PLT and GOT.
18794
18795	* demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/test.pl: Add "mt"
18796	to GMP::Rand::randstate.
18797
187982002-12-22  Pedro Gimeno  <pggimeno@wanadoo.es>
18799
18800	* randmt.c (randseed_mt): Fix bug that might cause the generator to
18801	return all zeros with certain seeds.  Fix WARM_UP==0 case.
18802	(gmp_randinit_mt): Initialize to a known state by default.
18803	(randget_mt): Remove check for uninitialized buffer: no longer needed.
18804	(recalc_buffer): Use ?: instead of two-element array.
18805
18806	* tests/rand/t-mt.c: New test.
18807	* tests/rand/Makefile.am (check_PROGRAMS): Add it.
18808
188092002-12-21  Kevin Ryde  <kevin@swox.se>
18810
18811	* cxx/osdoprnti.cc: Use <cstdarg> and <cstring> rather than <stdarg.h>
18812	and <string.h>.  No need for <stdio.h>.
18813
18814	* demos/expr/expr.c, demos/expr/exprfa.c, demos/expr/exprfra.c,
18815	demos/expr/exprza.c: Use mp_get_memory_functions, not
18816	__gmp_allocate_func etc.
18817	* demos/expr/t-expr.c: Don't use gmp-impl.h.
18818	(numberof): New macro.
18819
18820	* gmp-h.in, gmp-impl.h (__gmp_allocate_func, __gmp_reallocate_func,
18821	__gmp_free_func): Move declarations to gmp-impl.h
18822
18823	* mp_get_fns.c: New file.
18824	* Makefile.am (libgmp_la_SOURCES, libmp_la_SOURCES): Add it.
18825	* gmp-h.in (mp_get_memory_functions): Add prototype.
18826	* gmp.texi (Custom Allocation): Add mp_get_memory_functions, refer to
18827	"free" not "deallocate" function.
18828	* gmpxx.h (struct __gmp_alloc_cstring): Use mp_get_memory_functions,
18829	not __gmp_free_func.
18830
18831	* gmp-impl.h [__cplusplus]: Add <cstring> for strlen.
18832	(gmp_allocated_string): Hold length in a field.
18833	* cxx/osdoprnti.cc, cxx/osmpf.cc: Use this.
18834
188352002-12-20  Torbjorn Granlund  <tege@swox.com>
18836
18837	* tests/mpz/t-perfsqr.c (check_sqrt): Print more variables upon
18838	failure.
18839
18840	* mpn/generic/rootrem.c: In Newton loop, pad qp with leading zero.
18841
188422002-12-19  Torbjorn Granlund  <tege@swox.com>
18843
18844	* mpn/generic/rootrem.c: Allocate 1.585 (log2(3)) times more space
18845	for pp temporary to allow for worst case overestimate of root.
18846	Add some asserts.
18847
18848	* tests/mpz/t-root.c: Generalize and speed up.
18849
188502002-12-19  Kevin Ryde  <kevin@swox.se>
18851
18852	* tests/cxx/t-rand.cc (check_randinit): Add gmp_randinit_mt test.
18853
18854	* gmp-h.in: Don't bother trying to support Compaq C++ in pre-standard
18855	I/O mode.
18856	* gmp.texi (Notes for Particular Systems): Compaq C++ must be used in
18857	"standard" iostream mode.
18858
188592002-12-18  Torbjorn Granlund  <tege@swox.com>
18860
18861	* mpn/alpha/mod_34lsub1.asm: Add code for big-endian, using existing
18862	little-endian code only if HAVE_LIMB_LITTLE_ENDIAN is defined.
18863
188642002-12-18  Kevin Ryde  <kevin@swox.se>
18865
18866	* configure.in (HAVE_LIMB_BIG_ENDIAN, HAVE_LIMB_LITTLE_ENDIAN): New
18867	defines in config.m4.
18868
188692002-12-17  Torbjorn Granlund  <tege@swox.com>
18870
18871	* printf/printffuns.c (gmp_fprintf_reps): Make it actually work
18872	for padding > 256.
18873
188742002-12-17  Kevin Ryde  <kevin@swox.se>
18875
18876	* tune/freq.c: Add <string.h> for memcmp.
18877
18878	* mpz/pprime_p.c: Use MPN_MOD_OR_MODEXACT_1_ODD.
18879
18880	* gmp.texi (Formatted Output Strings): %a and %A are C99 not glibc.
18881	(Formatted Input Strings): Type "l" is for double too.  Hex floats are
18882	accepted for mpf_t.
18883	(Formatted Input Functions): Describe tightened parse rule, clarify
18884	return value a bit.
18885
18886	* scanf/doscan.c: Add hex floats, tighten matching to follow C99, for
18887	instance "0x" is no longer acceptable to "%Zi".
18888	Rename "invalid" label to avoid "invalid" variable, SunOS cc doesn't
18889	like them the same.
18890	* tests/misc/t-scanf.c: Update tests.
18891	* tests/misc/t-locale.c (check_input): Don't let "0x" appear from fake
18892	decimal point.
18893
18894	* config.guess (sparc*-*-*): Look at BSD sysctl hw.model to recognise
18895	ultrasparcs.
18896
18897	* mpfr/tests/dummy.c: New file.
18898	* mpfr/tests/Makefile.am (libfrtests_a_SOURCES): Add it.
18899
189002002-12-14  Kevin Ryde  <kevin@swox.se>
18901
18902	* mpbsd/Makefile.am (nodist_libmpbsd_la_SOURCES): Move these mpz
18903	sources to libmpbsd_la_SOURCES directly, automake 1.7.2 now gets the
18904	ansi2knr setups right for sources in other directories.
18905
18906	* mpfr/tests/Makefile.am: Add libfrtests.a in preparation for new mpfr.
18907
189082002-12-13  Kevin Ryde  <kevin@swox.se>
18909
18910	* mpfr/Makefile.am (mpfr_TEXINFOS, AM_MAKEINFOFLAGS): Allow for
18911	fdl.texi in recent mpfr.
18912
18913	* configure.in (AC_PROG_EGREP): Ensure this is run outside the Cray
18914	conditional AC_EGREP_CPP.
18915
18916	* configure.in (alpha*-*-*): Use gcc -Wa,-oldas if it works, to avoid
18917	problems with new compaq "as" on OSF 5.1.
18918
18919	* mpn/Makefile.am (EXTRA_DIST): Remove Makeasm.am, automake 1.7.2 does
18920	it automatically.
18921
18922	* acinclude.m4 (AC_LANG_FUNC_LINK_TRY(C)): Remove this hack, fixed by
18923	autoconf 2.57.
18924
18925	* configure.in (AC_CONFIG_LIBOBJ_DIR): Set to mpfr, for the benefit of
18926	new mpfr using LIBOBJ.
18927
18928	* configure.in: (AM_INIT_AUTOMAKE): Use "gnu no-dependencies
18929	$(top_builddir)/ansi2knr".
18930	* */Makefile.am (AUTOMAKE_OPTIONS): Remove, now in configure.in.
18931
18932	* configure, config.in, INSTALL.autoconf: Update to autoconf 2.57.
18933	* */Makefile.in, configure, aclocal.m4, install-sh, mkinstalldirs:
18934	Update to automake 1.7.2.
18935
18936	* gmp.texi (Build Options): Add hppa64 to cpu types.
18937	(ABI and ISA): Add gcc to hppa 2.0.
18938	(Debugging): Add maximum debuggability config options.
18939	(Language Bindings): Add Arithmos, reported by Johan Vervloet.
18940	(Formatted Output Strings): 128 bits is about 40 digits, ll is only
18941	for long long not long double.
18942	(Formatted Input Strings): ll is only for long long not long double.
18943
18944	* mpz/divis.c, mpz/divis_ui.c, mpz/cong.c, mpz/cong_ui.c: Allow d=0,
18945	under the rule n==c mod d iff exists q satisfying n=c+q*d.
18946	* gmp.texi (Integer Division): Describe this.
18947	Suggested by Jason Moxham.
18948
189492002-12-13  Pedro Gimeno  <pggimeno@wanadoo.es>
18950
18951	* randlc2x.c (lc): Remove check for seedn < an, which is now
18952	superfluous.  Add ASSERT to ensure it's correct.  Add ASSERT to check
18953	precondition of __GMPN_ADD.
18954	(gmp_randinit_lc_2exp): Avoid reallocation by allocating one extra bit
18955	for both seed and a.  Simplify seedn < p->_cn case.
18956
18957	* tests/rand/t-lc2exp.c (check_bigs): Test negative seeds.
18958
189592002-12-12  Torbjorn Granlund  <tege@swox.com>
18960
18961	* mpn/pa32/pa-defs.m4 (PROLOGUE_cpu): Zap spurious argument to `.proc'.
18962	Add empty `.callinfo'.
18963
189642002-12-11  Torbjorn Granlund  <tege@swox.com>
18965
18966	* mpn/x86/pentium4/sse2/addmul_1.asm: Don't reuse `ret' symbol for a
18967	label.
18968
189692002-12-11  Kevin Ryde  <kevin@swox.se>
18970
18971	* configure.in (hppa*-*-*): Don't use gcc -mpa-risc-2-0 in ABI=1.0.
18972
18973	* mpn/pa32/pa-defs.m4: New file, arranging for .proc/.procend.
18974	* configure.in (hppa*-*-*): Use it.
18975
18976	* printf/doprnt.c: Comments on "ll" versus "L".
18977
18978	* tests/mpz/t-div_2exp.c: Reduce tests, especially the random ones.
18979
189802002-12-11  Torbjorn Granlund  <tege@swox.com>
18981
18982	* mpz/get_d.c (limb2dbl): New macro for conversion to `double'.
18983	Define it to something non-trivial for 64-bit hppa.
18984	* mpq/get_d.c: Likewise.
18985	* mpf/get_d.c: Likewise.
18986
18987	* mpn/x86/pentium4/sse2/addmul_1.asm: Unroll to save one c/l.
18988
189892002-12-09  Kevin Ryde  <kevin@swox.se>
18990
18991	* tune/Makefile.am: Don't use -static under --disable-static, it tends
18992	not to work.
18993	* configure.in (ENABLE_STATIC): New AM_CONDITIONAL.
18994
18995	* gmp-h.in: Use <iostream> instead of <iosfwd> with Compaq C++ in
18996	pre-standard I/O mode.
18997
18998	* tests/mpz/t-jac.c, tests/mpz/t-scan.c: Reduce tests.
18999
190002002-12-08  Kevin Ryde  <kevin@swox.se>
19001
19002	* configure.in (*-*-ultrix*): Remove forcible --disable-shared,
19003	believe this was a generic problem with libtool, now gone.
19004
190052002-12-08  Torbjorn Granlund  <tege@swox.com>
19006
19007	* gmp-impl.h (USE_LEADING_REGPARM): Disable for PIC code generation.
19008
190092002-12-07  Torbjorn Granlund  <tege@swox.com>
19010
19011	* tests/cxx/t-misc.cc (check_mpq): Use 0/1 for canonical 0 in
19012	mpq_cmp_ui calls.
19013
19014	* configure.in (hppa2.0*-*-*): Pass +O2 instead of +O3 to work around
19015	compiler bug with mpfr/tests/tdiv.
19016
190172002-12-07  Kevin Ryde  <kevin@swox.se>
19018
19019	* configure.in (hppa2.0*-*-* ABI=2.0n): Make -mpa-risc-2-0 optional.
19020	New hppa-level-2.0 test using GMP_HPPA_LEVEL_20 to detect assembler
19021	support for 2.0n.
19022	* acinclude.m4 (GMP_PROG_CC_WORKS): Add code that provokes an error
19023	from gcc -mpa-risc-2-0 if the assembler doesn't know 2.0 instructions.
19024	(GMP_HPPA_LEVEL_20): New macro.
19025
190262002-12-07  Pedro Gimeno  <pggimeno@wanadoo.es>
19027
19028	* gmp-impl.h (gmp_randfnptr_t.randseed_fn) Return void.
19029	(LIMBS_PER_ULONG, MPN_SET_UI): New macros.
19030	(MPZ_FAKE_UI): Rename couple of parameters.
19031
19032	* randlc2x.c (gmp_rand_lc_struct): _mp_c and _mp_c_limbs replaced
19033	with mpn style _cp and _cn.  All callers changed.
19034	(randseed_lc): Fix limbs(seed) > bits_to_limbs(m2exp) case.
19035	Remove return value.
19036	(gmp_randinit_lc_2exp): Attempt to avoid redundant reallocation.
19037
19038	* randmt.c (mangle_seed): New function by Kevin.
19039	(randseed_mt): Use it instead of mpz_powm, for performance.  Remove
19040	return value.  Remove commented out code (an inferior alternative to
19041	mpz_export).
19042
19043	* randsdui.c (gmp_randseed_ui): Use MPZ_FAKE_UI.
19044
19045	* tests/rand/t-lc2exp.c (check_bigm, check_bigs): New tests.
19046	* tests/rand/t-urndmm.c: Add L to constants in calls, for K&R.
19047
190482002-12-06  Torbjorn Granlund  <tege@swox.com>
19049
19050	* configure.in: Remove -g.
19051	(hppa*-*-*): Pass -Wl,+vnocompatwarnings with +DA2.0.
19052
190532002-12-05  Torbjorn Granlund  <tege@swox.com>
19054
19055	* mpn/pa64/sqr_diagonal.asm: Remove .entry, .proc, .procend.
19056	* mpn/pa64/udiv.asm: Likewise.
19057
190582002-12-05  Kevin Ryde  <kevin@swox.se>
19059
19060	* mpn/pa64/sub_n.asm: Remove space in "sub, db" which gas objects to.
19061	* mpn/pa64/*.asm, tune/hppa2.asm: Use ".level 2.0" for 2.0n, since gas
19062	doesn't like ".level 2.0N".
19063
19064	* configure.in (hppa*-*-*): Group path and flags choices, for clarity.
19065	(hppa1.0*-*-*): Use gcc -mpa-risc-1-0 when available.
19066	(hppa2.0*-*-*): Ditto -mpa-risc-2-0.
19067	(*-*-hpux*): Exclude ABI=2.0w for hpux[1-9] and hpux10, rather than
19068	the converse of allowing it for hpux1[1-9]; ie. list the bad systems
19069	rather than try to guess the good systems.
19070	(hppa2.0*-*-*) [ABI=2.0n ABI=2.0w]: Add gcc to likely compilers.
19071	(hppa*-*-*) [gcc]: Test sizeof(long) to differentiate a 32-bit or
19072	64-bit build of the compiler.
19073	(hppa64-*-*): Add this as equivalent to hppa2.0-*-*.
19074	* acinclude.m4 (GMP_C_TEST_SIZEOF): New macro.
19075
19076	* tests/tests.h (ostringstream::str): Must null-terminate
19077	ostrstream::str() for the string constructor.
19078
190792002-12-04  Torbjorn Granlund  <tege@swox.com>
19080
19081	* mpn/pa32/hppa1_1/udiv.asm: Don't wrap symbol to INT64 in L() stuff.
19082
19083	* longlong.h (mpn_udiv_qrnnd_r based udiv_qrnnd): Fix typo.
19084
19085	* mpn/powerpc32/powerpc-defs.m4: Define float registers with `f'
19086	prefix.
19087
190882002-12-04  Kevin Ryde  <kevin@swox.se>
19089
19090	* gmp.texi (Floating-point Functions): Note the mantissa is binary and
19091	decimal fractions cannot be represented exactly.  Suggested by Serge
19092	Winitzki.
19093	(Known Build Problems): Note libtool stripping options when linking.
19094	Reported by Vincent Lefevre.
19095
19096	* acinclude.m4 (GMP_ASM_LABEL_SUFFIX): Don't make an empty result a
19097	failure, that's a valid result.
19098	(GMP_ASM_GLOBL): Establish this from the host cpu type.
19099	(IA64_PATTERN): New macro.
19100	(GMP_PROG_EXEEXT_FOR_BUILD, GMP_C_FOR_BUILD_ANSI,
19101	GMP_CHECK_LIBM_FOR_BUILD): Remove temporary files created.
19102	* configure.in: Use IA64_PATTERN.
19103
191042002-12-03  Torbjorn Granlund  <tege@swox.com>
19105
19106	* tune/hppa.asm: Use config.m4.
19107	* tune/hppa2.asm: Likewise.
19108	* tune/hppa2w.asm: Likewise.
19109
19110	* mpn/pa64: Use LDEF.
19111
191122002-12-03  Kevin Ryde  <kevin@swox.se>
19113
19114	* INSTALL: Use return rather than exit in the example programs.
19115	Suggested by Richard Dawe.
19116
19117	* gmp.texi (Build Options): Move non-unix notes to ...
19118	(Notes for Particular Systems): ... here.  Mention MS Interix,
19119	reported by Paul Leyland.
19120	(C++ Interface Random Numbers): Add gmp_randinit_mt to examples.
19121
19122	* acinclude.m4 (GMP_ASM_LABEL_SUFFIX): Must test empty suffix first,
19123	for the benefit of hppa hp-ux.
19124	(GMP_ASM_UNDERSCORE): Grep the output of "nm" instead of trying to
19125	construct an asm file, and in case of failure fallback on no
19126	underscore and a warning.
19127
19128	* longlong.h (count_leading_zeros, count_trailing_zeros) [ev67, ev68]:
19129	Restrict __asm__ ctlz and cttz to __GNUC__.
19130
19131	* gen-psqr.c (HAVE_CONST, const): New macros.
19132
19133	* tests/cxx/t-rand.cc (check_randinit): Add gmp_randinit_mt.
19134
191352002-12-02  Torbjorn Granlund  <tege@swox.com>
19136
19137	* gmp-impl.h: Split popc_limb again, combined version gives too many
19138	compiler warnings.
19139
191402002-12-01  Torbjorn Granlund  <tege@swox.com>
19141
19142	* mpn/generic/gcdext.c (div1): Disable unused function.
19143
19144	* mpz/root.c: Don't include stdlib.h or longlong.h.
19145	* mpz/rootrem.c: Likewise.
19146
19147	* extract-dbl.c: abort => ASSERT_ALWAYS.
19148	* mpz/set_d.c: Likewise.
19149	* mpn/generic/tdiv_qr.c: Likewise.
19150
19151	* gen-psqr.c (f_cmp_fraction, f_cmp_divisor): Change parameter to
19152	`const void *', to match qsort spec.
19153
191542002-12-01  Kevin Ryde  <kevin@swox.se>
19155
19156	* gmp.texi (Integer Division): Fix a couple of @math's for tex.
19157	Use @dots in more places.
19158
19159	* tests/cxx/t-locale.cc: Test non std::locale systems too.
19160	* tests/cxx/clocale.c: New file, reinstating what was localeconv.c,
19161	and subverting nl_langinfo too.
19162	* tests/cxx/Makefile.am (t_locale_SOURCES): Add it.
19163
19164	* tests/tests.h (ostringstream, istringstream): Provide fakes of these
19165	if <sstream> not available.
19166	* tests/cxx/t-locale.cc, tests/cxx/t-ostream.cc: Remove <sstream>.
19167	* configure.in (AC_CHECK_HEADERS) [C++]: Add <sstream>.
19168
191692002-11-30  Torbjorn Granlund  <tege@swox.com>
19170
19171	* printf/doprnt.c (__gmp_doprnt): Comment out a `break' to shut up
19172	compiler warnings.
19173
19174	* mpn/ia64/invert_limb.asm: Add `many' hints to return insns.
19175
19176	* mpn/ia64/divrem_1.asm: Allocate more local registers; put b0 in
19177	one of them.
19178
19179	* mpn/ia64/popcount.asm: Properly restore register ar.lc.
19180
19181	* longlong.h (umul_ppmm) [ia64]: Form both product parts in asm.
19182
19183	* mpz/bin_uiui.c: Cast umul_ppmm operands.
19184
19185	* scanf/doscan.c (gmpscan): Remove unused label store_get_digits.
19186
19187	* gmp-impl.h: #undef MIN and MAX before #defining.
19188
19189	* mpn/ia64/copyi.asm: Add `;' after bundle declarators.
19190	* mpn/ia64/copyd.asm: Likewise.
19191
19192	* mpn/ia64/divrem_1.asm: Add some syntax to placid the HP-UX assembler.
19193
191942002-11-30  Kevin Ryde  <kevin@swox.se>
19195
19196	* configure.in (AC_CHECK_HEADERS): Add nl_types.h.
19197	* tests/misc/t-locale.c: Use this, for nl_item on netbsd 1.4.1.
19198
191992002-11-29  Torbjorn Granlund  <tege@swox.com>
19200
19201	* tests/devel/addmul_1.c: Provide prototype for mpn_print.
19202	(OPS): Account for function overhead.
19203	* tests/devel/{submul_1.c,mul_1.c,add_n.c,sub_n.c}: Likewise.
19204
19205	* mpn/ia64/addmul_1.asm: Rewrite.
19206
192072002-11-28  Torbjorn Granlund  <tege@swox.com>
19208
19209	* mpn/ia64/sqr_diagonal.asm: Don't allocate any registers.
19210
19211	* mpn/ia64/submul_1.asm: Adapt to Itanium 2.
19212
19213	* mpn/ia64/mul_1.asm: Fix typo in HAVE_ABI_32 code.
19214
19215	* mpn/ia64/add_n.asm: Rewrite.
19216	* mpn/ia64/sub_n.asm: Rewrite.
19217
192182002-11-28  Kevin Ryde  <kevin@swox.se>
19219
19220	* mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Use this rather
19221	than libdummy.
19222	* tests/Makefile.am (EXTRA_libtests_la_SOURCES): Use this for
19223	x86call.asm and x86check.c rather than libdummy.
19224
192252002-11-27  Torbjorn Granlund  <tege@swox.com>
19226
19227	* tests/mpz/t-mul.c: Implement reference Karatsuba multiplication.
19228	Rewrite testing scheme to run fewer really huge tests.
19229
192302002-11-26  Torbjorn Granlund  <tege@swox.com>
19231
19232	* tests: Decrease repetition count for some of the slowest tests.
19233
19234	* mpn/ia64/divrem_1.asm: New file.
19235
192362002-11-25  Torbjorn Granlund  <tege@swox.com>
19237
19238	* mpfr/tests/tdiv.c: Decrease number of performed tests.
19239
192402002-11-23  Torbjorn Granlund  <tege@swox.com>
19241
19242	* mpn/ia64/mul_1.asm: Rewrite.
19243
192442002-11-23  Kevin Ryde  <kevin@swox.se>
19245
19246	* mpn/ia64/README: Add some references.
19247
19248	* gmp.texi (Build Options): Add itanium and itanium2, mention DocBook
19249	and XML from makeinfo, add texinfo top level cross reference.
19250	(Integer Division): Try to clarify 2exp functions a bit.
19251	(C++ Interface Floats): Giving bad string to constructor is undefined.
19252	(C++ Interface Integers, C++ Interface Rationals): Ditto, and show
19253	default base in prototype, not the description.
19254
19255	* config.sub, config.guess, configure.in (itanium, itanium2): New cpu
19256	types.
19257
19258	* tests/misc/t-printf.c, tests/misc/t-scanf.c (check_misc): Suppress
19259	%zd test on glibc prior to 2.1, it's not supported.
19260
192612002-11-22  Torbjorn Granlund  <tege@swox.com>
19262
19263	* mpn/ia64/copyi.asm: Optimize for Itanium 2.
19264	* mpn/ia64/copyd.asm: Likewise.
19265
192662002-11-20  Torbjorn Granlund  <tege@swox.com>
19267
19268	* mpn/ia64/sqr_diagonal.asm: New file.
19269
19270	* mpn/ia64/submul_1.asm: Handle vl == 0 specially.
19271
192722002-11-20  Kevin Ryde  <kevin@swox.se>
19273
19274	* tests/cxx/t-locale.cc: Test with locales imbued into stream, use
19275	<sstream>, eliminated some C-isms.  istream tests disabled, not yet
19276	locale-ized.
19277	* tests/cxx/Makefile.am (t_locale_SOURCES): Remove localeconv.c.
19278	* tests/cxx/localeconv.c: Remove file.
19279
19280	* configure.in (AC_CHECK_TYPES) [C++]: Add std::locale.
19281	* printf/doprntf.c: Add decimal point parameter, remove localeconv use.
19282	* gmp-impl.h (__gmp_doprnt_mpf): Update prototype, bump symbol to
19283	__gmp_doprnt_mpf2 to protect old libgmpxx.
19284	* cxx/osmpf.cc: Use this with ostream locale decimal_point facet.
19285	* printf/doprnt.c: Ditto, with GMP_DECIMAL_POINT.
19286
19287	* gmp-h.in: More comments on __declspec for windows DLLs.
19288
19289	* mpf/set_str.c, scanf/doscan.c: Cast through "unsigned char" for
19290	decimal point string, same as input chars.
19291
19292	* configure.in (AC_CHECK_HEADERS): Add langinfo.h.
19293	(AC_CHECK_FUNCS): Add nl_langinfo.
19294	* gmp-impl.h (GMP_DECIMAL_POINT): New macro.
19295	* mpf/out_str.c, mpf/set_str.c, scanf/doscan.c: Use it, and don't
19296	bother with special code for non-locale systems.
19297	* tests/misc/t-locale.c: Subvert nl_langinfo too.
19298
19299	* configure.in, acinclude.m4 (GMP_ASM_X86_GOT_UNDERSCORE): New macro.
19300	* mpn/x86/x86-defs.m4 (_GLOBAL_OFFSET_TABLE_): New macro, inserting
19301	extra underscore for OpenBSD.
19302	* mpn/x86/README (_GLOBAL_OFFSET_TABLE_): Update notes.
19303	Reported by Christian Weisgerber.
19304
19305	* tests/cxx/t-rand.cc (check_randinit): New function, collecting up
19306	constructor tests.
19307
19308	* tests/cxx/t-ostream.cc: Use <sstream> instead of <strstream>, use
19309	compare instead of strcmp.
19310
19311	* gmpxx.h (__gmp_randinit_lc_2exp_size_t): Return type is int.
19312
193132002-11-18  Kevin Ryde  <kevin@swox.se>
19314
19315	* tune/speed.c (r_string): Use CNST_LIMB with <N>bits, spotted by
19316	Torbjorn.
19317
193182002-11-19  Torbjorn Granlund  <tege@swox.com>
19319
19320	* mpn/ia64/mul_1.asm: Remove redundant cmp from prologue code.
19321	Streamline prologue.
19322	* mpn/ia64/addmul_1.asm: Likewise.
19323	* mpn/ia64/submul_1.asm: New file.
19324	* mpn/ia64/submul_1.c: Remove.
19325
193262002-11-17  Torbjorn Granlund  <tege@swox.com>
19327
19328	* mpn/generic/popham.c: New file, using new faster algorithm.
19329	* mpn/generic/popcount.c: Remove.
19330	* mpn/generic/hamdist.c: Remove.
19331
19332	* mpn/ia64/addmul_1.asm: Don't clobber callee-saves register f16.
19333	* mpn/ia64/mul_1.asm: Likewise.
19334
19335	* mpn/ia64/addmul_1.asm: Add pred.rel declarations.  Resolve RAW
19336	hazards for condition code registers, duplicating code as needed.  Add
19337	prediction to all branches.
19338	* mpn/ia64/mul_1.asm: Likewise.
19339	* mpn/ia64/add_n.asm: Likewise.
19340	* mpn/ia64/sub_n.asm: Likewise.
19341	* mpn/ia64/copyi.asm: Likewise.
19342	* mpn/ia64/copyd.asm: Likewise.
19343
19344	* mpn/generic/random2.c: Add a cast to silence some compilers.
19345
193462002-11-16  Torbjorn Granlund  <tege@swox.com>
19347
19348	* mpz/powm.c: Cap allocation by limiting k to 10 (512 precomputed
19349	values).
19350
193512002-11-16  Kevin Ryde  <kevin@swox.se>
19352
19353	* configure.in, gmp.texi: Remove powerpc64 ABI=32L, doesn't work and
19354	is unlikely to ever do so.
19355	* configure.in: Allow ABI=32 for powerpc64.
19356	Reported by David Edelsohn.
19357
193582002-11-14  Kevin Ryde  <kevin@swox.se>
19359
19360	* mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add addmul_2.c
19361	addmul_3.c addmul_4.c addmul_5.c addmul_6.c addmul_7.c addmul_8.c.
19362
19363	* gmp-h.in (__GMP_DECLSPEC_EXPORT, __GMP_DECLSPEC_IMPORT) [__GNUC__]:
19364	Use __dllexport__ and __dllimport__ to keep out of application
19365	namespace.
19366
193672002-11-14  Gerardo Ballabio <gerardo.ballabio@unimib.it>
19368
19369	* gmpxx.h (__gmp_randinit_default_t, __gmp_randinit_lc_2exp_t,
19370	__gmp_randinit_lc_2exp_size_t): Use extern "C" { typedef ... }, for
19371	the benefit of g++ prior to 3.2.
19372
193732002-11-12  Kevin Ryde  <kevin@swox.se>
19374
19375	* gmpxx.h (gmp_randclass constructors): Patch from Roberto Bagnara to
19376	use extern "C" on C function pointer arguments.
19377
193782002-11-09  Kevin Ryde  <kevin@swox.se>
19379
19380	* configure.in, Makefile.am, printf/Makefile.am,
19381	printf/repl-vsnprintf.c: Handle vsnprintf replacement with C
19382	conditionals.
19383
19384	* acinclude.m4 (AC_LANG_FUNC_LINK_TRY(C)): Workaround troubles recent
19385	HP cc +O3 causes for AC_CHECK_FUNCS.
19386
19387	* gmp.texi (Notes for Particular Systems): Add Sparc app regs.
19388	(Debugging): Note gcc -fstack options to detect overflow.
19389	(Formatted Output Strings, Formatted Input Strings): Format strings
19390	are not multibyte.
19391
193922002-11-06  Torbjorn Granlund  <tege@swox.com>
19393
19394	* mpn/generic/tdiv_qr.c: Remove a bogus assert.
19395
193962002-11-05  Torbjorn Granlund  <tege@swox.com>
19397
19398	* mpn/generic/tdiv_qr.c: Remove two dead mpn_divrem_2 calls.
19399
194002002-11-04  Kevin Ryde  <kevin@swox.se>
19401
19402	* acinclude.m4 (GMP_C_INLINE): Don't define "inline" for C++.
19403
19404	* demos/expr/expr-impl.h (stdarg.h): Test __DECC same as gmp.h.
19405
19406	* mpbsd/mtox.c, printf/obprintf.c, printf/obvprintf.c,
19407	scanf/vsscanf.c, demos/expr/expr.c, demos/expr/exprf.c,
19408	demos/expr/exprfa.c, demos/expr/exprfr.c, demos/expr/exprq.c,
19409	demos/expr/exprz.c, demos/expr/exprza.c: Add <string.h> for strlen and
19410	memcpy.
19411
194122002-11-02  Kevin Ryde  <kevin@swox.se>
19413
19414	* longlong.h: Test __x86_64__ not __x86_64.  Reported by Andreas
19415	Jaeger.
19416
19417	* mpz/import.c, mpz/export.c: Use char* subtract from NULL to get
19418	pointer alignment, for the benefit of Cray vector systems.
19419
19420	* cxx/ismpf.cc: Use <clocale>.
19421	* tests/cxx/t-locale.cc: No need to conditionalize <clocale>.
19422
19423	* scanf/doscan.c: Don't use isascii, rely on C99 ctype.h.
19424
19425	* gmp.texi (Build Options): Describe CC_FOR_BUILD, cross reference
19426	texinfo manual.
19427	(ABI and ISA): Add powerpc620 and powerpc630 to powerpc64, add NetBSD
19428	and OpenBSD sparc64.
19429	(Notes for Package Builds): Cross reference libtool manual.
19430	(Notes for Particular Systems): Add OpenBSD to non-MMX versions of gas.
19431	(Known Build Problems): Add MacOS X C++ shared libraries.
19432
194332002-10-31  Kevin Ryde  <kevin@swox.se>
19434
19435	* gmp-impl.h, tune/speed.c, tune/speed.h, tune/common.c, tune/many.pl,
19436	tests/devel/try.c, tests/tests.h, tests/refmpn.c (mpn_addmul_5,
19437	mpn_addmul_6, mpn_addmul_7, mpn_addmul_8): Add testing and measuring.
19438	* configure.in (config.in): Add #undefs of HAVE_NATIVE_mpn_addmul_5,
19439	HAVE_NATIVE_mpn_addmul_6, HAVE_NATIVE_mpn_addmul_7,
19440	HAVE_NATIVE_mpn_addmul_8.
19441	(gmp_mpn_functions_optional): Add addmul_5 addmul_6 addmul_7 addmul_8.
19442
19443	* tests/devel/try.c (ASSERT_CARRY): Remove, now in gmp-impl.h
19444	(try_one): Do dest setups after sources, for benefit of
19445	dst0_from_src1.
19446
194472002-11-01  Torbjorn Granlund  <tege@swox.com>
19448
19449	* mpn/generic/tdiv_qr.c: Avoid quadratic behaviour for
19450	sub-division when numerator is more than twice the size of the
19451	denominator.  Simplify loop logic for the same case.  Clean up a
19452	few comments.
19453
194542002-10-29  Torbjorn Granlund  <tege@swox.com>
19455
19456	* configure.in (*-cray-unicos*): Pass -hnofastmd again.
19457
194582002-10-25  Torbjorn Granlund  <tege@swox.com>
19459
19460	* tests/tadd.c: Disable test of denorms.
19461
194622002-10-23  Linus Nordberg  <linus@swox.se>
19463
19464	* gmp.texi (Introduction to GMP): Update section about mailing
19465	lists.
19466
194672002-10-23  Kevin Ryde  <kevin@swox.se>
19468
19469	* gmp-h.in (__GMP_ATTRIBUTE_PURE): Suppress this when
19470	__GMP_NO_ATTRIBUTE_CONST_PURE is defined.
19471	* gmp-impl.h (ATTRIBUTE_CONST): Ditto.
19472	* tune/common.c: Use __GMP_NO_ATTRIBUTE_CONST_PURE.
19473
19474	* tune/speed.h, tune/many.pl: Remove ATTRIBUTEs from prototypes.
19475	* tune/speed.h: Remove various "dummy" variables attempting to keep
19476	"pure" calls live, no longer necessary.  They weren't sufficient for
19477	recent MacOS cc anyway.
19478
194792002-10-21  Torbjorn Granlund  <tege@swox.com>
19480
19481	* mpn/cray/ieee/addmul_1.c: Handle overlap as in mul_1.c.
19482	* mpn/cray/ieee/submul_1.c: Likewise.
19483
194842002-10-19  Kevin Ryde  <kevin@swox.se>
19485
19486	* configure.in (sparcv9 etc -*-*bsd*): Add support for NetBSD and
19487	OpenBSD sparc64.  Reported by Christian Weisgerber.
19488	(AC_CHECK_HEADERS): Add sys/param.h for sys/sysctl.h on *BSD.
19489
19490	* demos/calc/calc.y: Change ={ to {, needed for bison 1.50.
19491
19492	* longlong.h (count_leading_zeros, count_trailing_zeros) [x86_64]:
19493	Should be UDItype.
19494
19495	* mpz/set_str.c, mpf/set_str.c, mpbsd/xtom.c, scanf/sscanffuns.c: Cast
19496	chars through "unsigned char" to zero extend, required by C99 ctype.h.
19497
194982002-10-18  Torbjorn Granlund  <tege@swox.com>
19499
19500	* tests/mpz/t-root.c: Test also mpz_rootrem.
19501
19502	* mpn/generic/rootrem.c: Avoid overflow problem when n is huge.
19503
19504	* mpz/root.c: Avoid overflow problems in allocation computation; also
19505	simplify it.  Misc cleanups.
19506
19507	* mpz/rootrem.c: New file.
19508	* Makefile.am, mpz/Makefile.am, gmp-h.in: Add them.
19509
195102002-10-17  Torbjorn Granlund  <tege@swox.com>
19511
19512	* gmp-impl.h (popc_limb): Combine variants.
19513
195142002-10-14  Kevin Ryde  <kevin@swox.se>
19515
19516	* configure.in (AC_CHECK_HEADERS): Add sys/time.h for sys/resource.h
19517	test, needed by SunOS, and next autoconf will insist headers actually
19518	compile.
19519
195202002-10-08  Kevin Ryde  <kevin@swox.se>
19521
19522	* tune/time.c (speed_time_init): Allow for Cray times() apparently
19523	being a cycle counter.
19524
19525	* dumbmp.c (mpz_get_str): Fix buf size allocation.
19526
19527	* tests/trace.c, tests/tests.h (mp_limb_trace): New function.
19528
19529	* tune/speed-ext.c (SPEED_EXTRA_PROTOS): Use __GMP_PROTO.
19530	* tests/devel/try.c (malloc_region): Add a cast for SunOS cc.
19531
19532	* configure.in (AC_CHECK_FUNCS): Add strerror.
19533	(AC_CHECK_DECLS): Add sys_errlist, sys_nerr.
19534	* tune/time.c, tests/devel/try.c: Use them.
19535
195362002-10-05  Kevin Ryde  <kevin@swox.se>
19537
19538	* configure.in (AC_CHECK_HEADERS): Test float.h, not in SunOS cc.
19539	* printf/repl-vsnprintf.c: Use this.
19540
19541	* configure.in (*sparc*-*-*): Collect up various options for clarity,
19542	use gcc -mcpu=supersparc and ultrasparc3, use cc -xchip, don't use
19543	-xtarget=native, use cc configs with acc, merge SunOS bundled cc and
19544	SunPRO cc configs.
19545
19546	* gmp-impl.h (gmp_randfnptr_t): Use __GMP_PROTO.
19547	(MPZ_REALLOC): Cast _mpz_realloc return value to mp_ptr, for the
19548	benefit of SunOS cc which requires pointers of the same type on the
19549	two legs of a ?:.
19550
19551	* dumbmp.c (mpz_realloc): Add a cast to avoid a warning from SunOS cc.
19552
19553	* acinclude.m4: Allow for i960 b.out default cc output.
19554
19555	* gmp.texi (Random State Initialization): Add gmp_randinit_mt.
19556	(Perfect Square Algorithm): Describe new mpn_mod_34lsub1 use.
19557	(Factorial Algorithm): Describe Jason's new code.
19558	(Binomial Coefficients Algorithm): Ideas about improvements
19559	moved to doc/projects.html.
19560	(Contributors): Add Jason Moxham and Pedro Gimeno.
19561
195622002-10-03  Kevin Ryde  <kevin@swox.se>
19563
19564	* gen-psqr.c: New file.
19565	* Makefile.am, mpn/Makefile.am: Use it to generate mpn/perfsqr.h.
19566	* mpn/generic/perfsqr.c: Use generated data, put mod 256 data into
19567	limbs to save space, use mpn_mod_34lsub1 when good.
19568	* tests/mpn/t-perfsqr.c: New file.
19569	* tests/mpn/Makefile.am (check_PROGRAMS): Add it.
19570	* tests/mpz/t-perfsqr.c (check_modulo): New test.
19571	(check_sqrt): New function holding current tests.
19572
19573	* configure.in (AC_INIT): Modernize to package name and version here
19574	rather than AM_INIT_AUTOMAKE, add bug report email.
19575	(AC_CONFIG_SRCDIR): New macro.
19576
19577	* gmp-impl.h (ROUND_UP_MULTIPLE): Fix for non-power-of-2 moduli (not
19578	normal in current uses), clarify the comments a bit.
19579
195802002-09-30  Kevin Ryde  <kevin@swox.se>
19581
19582	* mpn/Makeasm.am (.s.lo): Add --tag=CC for the benefit of CCAS!=CC,
19583	same as .S.lo and .asm.lo.
19584
19585	* Makefile.am (gen-fac_ui, gen-fib, gen-bases): Quote source files in
19586	test -f stuff to avoid Sun make rewriting them.
19587
195882002-09-28  Kevin Ryde  <kevin@swox.se>
19589
19590	* tests/devel/try.c, tune/speed.c: Avoid strings longer than C99
19591	guarantees.
19592
19593	* tests/refmpn.c, tests/tests.h (refmpn_zero_extend, refmpn_normalize,
19594	refmpn_sqrtrem): New functions.
19595	* tests/devel/try.c (TYPE_SQRTREM): Use refmpn_sqrtrem.
19596	(compare): Correction to tr->dst_size subscripting.
19597
19598	* dumbmp.c: Add several new functions, allow for initial n<d in
19599	mpz_tdiv_q (now in mpz_tdiv_qr actually).
19600
19601	* gen-bases.c (chars_per_limb): Get GMP_NUMB_BITS for base==2,
19602	similarly other powers of 2, which this was in the past.
19603	* tests/refmpn.c (refmpn_chars_per_limb): Ditto.
19604	* tests/mpn/t-mp_bases.c: Test chars_per_limb for power-of-2 bases too.
19605
19606	* Makefile.am, mpz/Makefile.am: Setups for gen-fac_ui.c generating
19607	mpz/fac_ui.h.
19608
196092002-09-28  Jason Moxham <J.L.Moxham@maths.soton.ac.uk>
19610
19611	* dumbmp.c (mpz_pow_ui, mpz_addmul_ui, mpz_root): New functions.
19612	* gen-fac_ui.c: New file.
19613	* mpz/fac_ui.c: Rewrite.
19614
196152002-09-26  Kevin Ryde  <kevin@swox.se>
19616
19617	* tests/cxx/localeconv.c: New file, split from t-locale.cc.
19618	* tests/cxx/t-locale.cc: Use it.
19619	* tests/cxx/Makefile.am (t_locale_SOURCES): Add it.
19620
19621	* tests/cxx/Makefile.am: Updates for Gerardo's new test programs.
19622
196232002-09-26  Gerardo Ballabio <gerardo.ballabio@unimib.it>
19624
19625	* gmpxx.h (__gmp_cmp_function): Bug fixes in double/mpq and
19626	double/mpfr comparisons.
19627
19628	* tests/cxx/t-assign.cc, tests/cxx/t-binary.cc, tests/cxx/t-constr.cc,
19629	tests/cxx/t-ternary.cc, tests/cxx/t-unary.cc: Revise and add various
19630	tests, including some for mpfr, some split from t-expr.cc.
19631	* tests/cxx/t-locale.cc: Modernize include files.
19632	* tests/cxx/t-ostream.cc: Modernize include files, use cout rather
19633	than printf for diagnostics.
19634	* tests/cxx/t-misc.cc, tests/cxx/t-rand.cc: New file, split from
19635	t-allfuns.cc.
19636	* tests/cxx/t-ops.cc: New file, some split from t-allfuns.cc.
19637	* tests/cxx/t-prec.cc: New file.
19638	* tests/cxx/t-allfuns.cc, tests/cxx/t-expr.cc: Remove files.
19639
196402002-09-25  Torbjorn Granlund  <tege@swox.com>
19641
19642	* configure.in (*-cray-unicos*): Remove -hscalar0, it causes too much
19643	performance loss.  Let's trust Cray to fix their compilers.
19644
196452002-09-24  Torbjorn Granlund  <tege@swox.com>
19646
19647	* mpn/powerpc32/add_n.asm: Rewrite.
19648	* mpn/powerpc32/sub_n.asm: Rewrite.
19649
196502002-09-24  Pedro Gimeno  <pggimeno@wanadoo.es>
19651
19652	* randlc2x.c: Prepare for nails by changing type of _mp_c to mpz_t,
19653	make _mp_seed fixed-size, disallow SIZ(a)==0 to optimize comparisons
19654	for mpn_mul.
19655	* gmp-impl.h (MPZ_FAKE_UI): New macro.
19656
19657	* randmt.c: Some constants made long for K&R compliance; remove UL at
19658	the end of other constants; use mp_size_t where appropriate; use
19659	mpz_export to split the seed.
19660
19661	* gmp-impl.h: Remove type cast in RNG_FNPTR and RNG_STATE, to allow
19662	them to be used as lvalues.
19663	* randclr.c, randlc2x.c, randmt.c, randsd.c: All callers changed.
19664
19665	* mpz/urandomm.c: Replace mpn_cmp with MPN_CMP.
19666
19667	* tests/rand/gen.c: Get rid of gmp_errno.
19668
196692002-09-24  Kevin Ryde  <kevin@swox.se>
19670
19671	* gmp.texi (Custom Allocation): Keep allocate_function etc out of the
19672	function index by using @deftypevr.
19673	More index entries.
19674
196752002-09-24  Gerardo Ballabio <gerardo.ballabio@unimib.it>
19676
19677	* gmpxx.h (mpfr_class constructors from strings): Precision was set
19678	incorrectly, fixed.
19679
196802002-09-23  Torbjorn Granlund  <tege@swox.com>
19681
19682	* mpf/urandomb.c: Don't crash for overlarge nbits argument.
19683	Let nbits==0 mean to fill number with random bits.
19684
196852002-09-21  Torbjorn Granlund  <tege@swox.com>
19686
19687	* mpn/alpha/mod_34lsub1.asm: Add r31 dummy operand to `br' instruction.
19688
196892002-09-20  Gerardo Ballabio <gerardo.ballabio@unimib.it>
19690
19691	* gmpxx.h (__gmp_binary_equal, __gmp_binary_not_equal): Fix broken
19692	mpq/double functions.
19693
196942002-09-18  Torbjorn Granlund  <tege@swox.com>
19695
19696	* randmt.c (randget_mt): Fix typo.
19697
196982002-09-18  Kevin Ryde  <kevin@swox.se>
19699
19700	* gmp-impl.h (_gmp_rand): Avoid evaluating "state" more than once, for
19701	the benefit places calling it with RANDS.
19702
19703	* randmt.c (randseed_mt): Use mpz_init for mod and seed1, for safety.
19704
19705	* tune/tuneup.c (sqr_karatsuba_threshold): Initialize to
19706	TUNE_SQR_KARATSUBA_MAX so mpn_sqr_n works for randmt initialization.
19707
19708	* gmp.texi (Integer Comparisons): Remove mention of non-existent
19709	mpz_cmpabs_si, reported by Conrad Curry.
19710
19711	* tune/speed.c, tune/speed.h, tune/common.c: Add gmp_randseed,
19712	gmp_randseed_ui and mpz_urandomb.
19713
197142002-09-18  Pedro Gimeno  <pggimeno@wanadoo.es>
19715
19716	* tests/rand/gen.c: Add mt, remove lc and bbs.
19717
19718	* Makefile.am (libgmp_la_SOURCES): Add randmt.c, remove randlc.c and
19719	randraw.c.
19720
19721	* randmt.c: New file.
19722	* gmp-h.in (gmp_randinit_mt): Add prototype.
19723	* randdef.c: Use gmp_randinit_mt.
19724
19725	* gmp-impl.h (RNG_FNPTR, RNG_STATE): New macros.
19726	(gmp_randfnptr_t): New structure.
19727	(_gmp_rand): Now a macro not a function.
19728	* gmp-h.in (__gmp_randata_lc): Remove, now internal to randlc2x.c.
19729	(__gmp_randstate_struct): Revise comments on field usage.
19730	* randsd.c, randclr.c: Use function pointer scheme.
19731	* randsdui.c: Use gmp_randseed.
19732	* randraw.c: Remove file.
19733	* randlc2x.c: Collect up lc_2exp related code from randsd.c, randclr.c
19734	and randraw.c, use function pointer scheme, integrate seed==0/a==0
19735	into main case and fix case where bits(a) < m2exp.
19736
19737	* randlc.c: Remove file, never documented and never worked.
19738	* gmp-h.in (gmp_randinit_lc): Remove prototype.
19739
197402002-09-16  Torbjorn Granlund  <tege@swox.com>
19741
19742	* mpn/alpha/mod_34lsub1.asm: New file.
19743
197442002-09-16  Kevin Ryde  <kevin@swox.se>
19745
19746	* configure.in, acinclude.m4 (GMP_C_RESTRICT): Remove this, not
19747	currently used, and #define restrict upsets Microsoft C headers on
19748	win64.  Reported by David Librik.
19749
19750	* configure.in (x86): Add gcc 3.2 -march and -mcpu flags, remove some
19751	unnecessary -march=i486 fallbacks.
19752
19753	* gmp.texi (Notes for Particular Systems): Note cl /MD is required for
19754	Microsoft C and MINGW to cooperate on I/O.  Explained by David Librik.
19755	(Language Bindings): Add linbox.
19756	* gmp.texi (Language Bindings):
19757
197582002-09-12  Kevin Ryde  <kevin@swox.se>
19759
19760	* mpz/aorsmul_i.c: Allow for w==x overlap with nails.  Test
19761	BITS_PER_ULONG > GMP_NUMB_BITS rather than GMP_NAIL_BITS != 0.
19762	* tests/mpz/t-aorsmul.c: Test this.
19763
19764	* tune/common.c: mpn_mod_34lsub1 only exists for GMP_NUMB_BITS%4==0
19765	* tune/speed.c: Add mpn_mod_34lsub1.
19766
197672002-09-10  Pedro Gimeno  <pggimeno@wanadoo.es>
19768
19769	* rand.c: Remove old disabled BBS code.
19770	* mpf/urandomb.c: Use BITS_TO_LIMBS.
19771
197722002-09-10  Kevin Ryde  <kevin@swox.se>
19773
19774	* gmp.texi (Multiplication Algorithms): FFT is now enabled by default.
19775
197762002-09-10  Pedro Gimeno  <pggimeno@wanadoo.es>
19777
19778	* mpz/urandomm.c: Use mpn level functions, avoid an infinite loop if
19779	_gmp_rand forever returns all "1" bits.
19780	* tests/rand/t-urndmm.c: New file
19781	* tests/rand/Makefile.am (check_PROGRAMS): Add it.
19782
19783	* gmp-impl.h (BITS_TO_LIMBS): New macro.
19784	* mpz/urandomb.c: Use it, and use MPZ_REALLOC.
19785
197862002-09-08  Kevin Ryde  <kevin@swox.se>
19787
19788	* acinclude.m4 (GMP_GCC_WA_MCPU): New macro.
19789	* configure.in (alpha*-*-*): Use it to avoid -Wa,-mev67 if gas isn't
19790	new enough to know ev67.  Reported by David Bremner.
19791
197922002-07-30  Gerardo Ballabio <gerardo.ballabio@unimib.it>
19793
19794	* gmpxx.h (__gmpz_value etc): Remove, use mpz_t etc instead.
19795	(__gmp_expr): Reorganise specializations, use __gmp_expr<T,T> not
19796	mpz_class etc.
19797	(mpfr evals): Remove mode parameter, was always
19798	__gmp_default_rounding_mode anyway.
19799
198002002-09-07  Kevin Ryde  <kevin@swox.se>
19801
19802	* gmp-h.in, mp-h.in: Use #ifdef for tests, for the benefit of
19803	applications using gcc -Wundef.
19804
19805	* longlong.h: Define COUNT_LEADING_ZEROS_NEED_CLZ_TAB for all alphas,
19806	since mpn/alpha/cntlz.asm always goes into libgmp.so, even for ev67
19807	and ev68 which don't need it.  Reported by David Bremner.
19808
19809	* gmp.texi (Demonstration Programs): New section, expanding on what
19810	was under "Build Options".
19811	(Converting Floats): Don't need \ for _ in @var within @math.
19812	Add and amend various index entries.
19813
19814	* demos/qcn.c: Add -p prime limit option.
19815
198162002-08-30  Kevin Ryde  <kevin@swox.se>
19817
19818	* mpz/pprime_p.c: Handle small negatives with isprime, in particular
19819	must do so for n==-2.
19820	* tests/mpz/t-pprime_p.c: New file.
19821	* tests/mpz/Makefile.am: Add it.
19822
198232002-08-26  Torbjorn Granlund  <tege@swox.com>
19824
19825	* gmp.texi (Converting Floats): Fix typo in mpf_get_d_2exp docs,
19826	reported by Paul Zimmermann.
19827
198282002-08-26  Kevin Ryde  <kevin@swox.se>
19829
19830	* configure.in: Echo the ABI being tried for the compilers.
19831	(powerpc*-*-*): Use powerpc64/aix.m4 for ABI=aix64 too.
19832	(AC_CHECK_FUNCS): Add strtol, for tests/rand/gen.c.
19833
198342002-08-24  Kevin Ryde  <kevin@swox.se>
19835
19836	* configure.in (HAVE_HOST_CPU_, HAVE_HOST_CPU_FAMILY_, HAVE_NATIVE_):
19837	Setup templates for these using AH_VERBATIM rather than acconfig.h,
19838	preferred by latest autoconf.  Prune lists to just things used.
19839	* acconfig.h: Remove file.
19840
19841	* mpn/powerpc32/mode1o.asm: Forgot ASM_START.
19842
19843	* tune/time.c (have_cgt_id): Renamed from HAVE_CGT_ID so avoid
19844	confusion with autoconf outputs, and turn it into a "const" variable.
19845
198462002-08-23  Torbjorn Granlund  <tege@swox.com>
19847
19848	* configure.in: Choose powerpc32/aix.m4 or powerpc64/aix.m4 based on
19849	ABI, not configuration triple.
19850
19851	* mpz/pprime_p.c: Partially undo last change--handle small and
19852	negative numbers in the same test.
19853
198542002-08-22  Kevin Ryde  <kevin@swox.se>
19855
19856	* gmp-impl.h (MUL_FFT_THRESHOLD, SQR_FFT_THRESHOLD): Note
19857	mpn/generic/mul_fft.c is not nails-capable, and don't bother setting
19858	other FFT data for nails.
19859
19860	* configfsf.guess: Update to 2002-08-19.
19861	* configfsf.sub: Update to 2002-08-20.
19862
19863	* config.guess (powerpc*-*-*): Use a { } construct to suppress SIGILL
19864	message on AIX.
19865
198662002-08-20  Kevin Ryde  <kevin@swox.se>
19867
19868	* gmp.texi (Build Options): Add ia64 under cpu types.
19869	(ABI and ISA): Describe IRIX 6 ABI=o32.
19870	(Notes for Particular Systems): Remove -march=pentiumpro, now ok.
19871	(Known Build Problems): Binutils 2.12 is ok for libgmp.a.
19872	(Emacs): New section.
19873	(Language Bindings): Update MLton URL, reported by Stephen Weeks.
19874	(Prime Testing Algorithm): New section.
19875	Don't put a blank line after @item in @table since it can make a page
19876	break between the heading and the entry.
19877	Misc tweaks elsewhere, in particular more index entries.
19878
19879	* mpz/millerrabin.c: Need x to be size+1 for change to urandomm.
19880
19881	* gmp-impl.h: Comments on the use of __GMP_DECLSPEC.
19882
19883	* tune/time.c (freq_measure_mftb_one): Use struct_timeval, for the
19884	benefit of mingw.
19885
19886	* tests/refmpn.c, tests/tests.h (ref_addc_limb, ref_subc_limb):
19887	Renamed from add and sub, following gmp-impl.h ADDC_LIMB and SUBC_LIMB.
19888
198892002-08-17  Kevin Ryde  <kevin@swox.se>
19890
19891	* mpn/powerpc32/mode1o.asm: New file.
19892	* configure.in, acinclude.m4 (GMP_ASM_POWERPC_PIC_ALWAYS): New macro.
19893	* mpn/asm-defs.m4: Use it to help setting up PIC.
19894
19895	* configure.in (AC_PREREQ): Bump to 2.53.
19896
19897	* mpn/powerpc32/powerpc-defs.m4 (ASSERT): New macro.
19898	(PROLOGUE_cpu): New macro, giving ALIGN(4) not 8.
19899
199002002-08-16  Torbjorn Granlund  <tege@swox.com>
19901
19902	* mpn/m68k/lshift.asm: Fix typo in !scale_available_p code.
19903	* mpn/m68k/rshift.asm: Likewise.
19904
199052002-08-16  Kevin Ryde  <kevin@swox.se>
19906
19907	* configure.in (--enable-profiling=instrument): New option.
19908	* gmp.texi (Profiling): Describe it.
19909	* mpn/x86/x86-defs.m4 (PROLOGUE_cpu, call_instrument, ret_internal):
19910	Add support.
19911	(call_mcount): Share PIC setups with call_instrument.
19912	* mpn/x86/*.asm: Use ret_internal.
19913	* mpn/asm-defs.m4 (m4_unquote): New macro.
19914	* tests/mpn/t-instrument.c: New file.
19915	* tests/mpn/Makefile.am: Add it.
19916
19917	* mpn/alpha/umul.asm: Add ASM_END.
19918
199192002-08-12  Kevin Ryde  <kevin@swox.se>
19920
19921	* mpz/pprime_p.c: Fake up a local mpz_t to take abs(n), rather than
19922	using mpz_init etc.
19923
19924	* mpz/millerrabin.c: Use mpz_urandomm for uniform selection of x,
19925	reported by Jason Moxham.  Exclude x==n-1, ie. -1 mod n.  Use
19926	gmp_randinit_default.
19927
19928	* mpn/alpha/umul.asm: Use "r" registers, for the benefit of Unicos.
19929
19930	* tests/devel/try.c: Add mpn_copyi and mpn_copyd.
19931
199322002-08-09  Kevin Ryde  <kevin@swox.se>
19933
19934	* Makefile.am: Remove configure.lineno from DISTCLEANFILES and gmp.tmp
19935	from MOSTLYCLEANFILES, automake does these itself now.
19936
19937	* */Makefile.in, aclocal.m4, configure, install-sh, missing,
19938	mkinstalldirs: Update to automake 1.6.3.
19939
19940	* mpn/ia64/README: Some notes on assembler syntax.
19941
19942	* mpn/ia64/add_n.asm, mpn/ia64/sub_n.asm: Add .body.
19943	* mpn/ia64/add_n.asm, mpn/ia64/addmul_1.asm, mpn/ia64/mul_1.asm,
19944	mpn/ia64/sub_n.asm: Position .save ar.lc just before relevant
19945	instruction.
19946	* mpn/ia64/addmul_1.asm, mpn/ia64/mul_1.asm: Add .save ar.pfs and pr.
19947	* mpn/ia64/copyd.asm, mpn/ia64/copyi.asm: Correction to .body position.
19948	* mpn/ia64/lorrshift.asm: Add .prologue stuff.
19949
19950	* configure.in (*-*-unicos*): Remove forcible --disable-shared,
19951	libtool gets this right itself now.
19952
199532002-08-07  Kevin Ryde  <kevin@swox.se>
19954
19955	* mpn/x86/pentium/mmx/hamdist.asm: New file, adapted from
19956	mpn/x86/pentium/mmx/popham.asm.
19957	* mpn/x86/pentium/mmx/popham.asm: Remove file, not faster than plain
19958	mpn/x86/pentium/popcount.asm for the popcount.
19959
19960	* mpn/alpha/umul.asm: Use PROLOGUE/EPILOGUE, rename it mpn_umul_ppmm.
19961	* configure.in (alpha*-*-*): Add umul to extra_functions.
19962
19963	* mpz/remove.c: Make src==0 return 0, not do DIVIDE_BY_ZERO.
19964
199652002-08-05  Torbjorn Granlund  <tege@swox.com>
19966
19967	* acconfig.h: Remove spurious undefs for mpn_divrem_newton and
19968	mpn_divrem_classic.
19969
199702002-08-05  Kevin Ryde  <kevin@swox.se>
19971
19972	* tests/refmpn.c, tests/tests.h, tests/misc/t-printf.c,
19973	tests/mpf/t-trunc.c, tests/mpn/t-mp_bases.c, tests/mpn/t-scan.c,
19974	tests/mpq/t-cmp_ui.c, tests/mpz/bit.c, tests/mpz/t-aorsmul.c,
19975	tests/mpz/t-powm_ui.c tests/mpz/t-root.c, tests/mpz/t-scan.c: More
19976	care with long and mp_size_t parameters, for the benefit of K&R.
19977
19978	* demos/perl/GMP.pm, demos/perl/GMP.xs, demos/perl/GMP/Mpz.pm,
19979	demos/perl/test.pl: Add mpz_import and mpz_export.
19980	* demos/perl/GMP.pm: Remove "preliminary" warning.
19981
19982	* mpn/lisp/gmpasm-mode.el: Set add-log-current-defun-header-regexp to
19983	pick up m4 defines etc.
19984
19985	* Makefile.am (libgmpxx_la_DEPENDENCIES): libgmp.la should be here,
19986	not libgmpxx_la_LIBADD, for the benefit of "make -j2".
19987
19988	* mpn/ia64/*.asm [hpux ABI=32]: Extend 32-bit operands to 64-bits, not
19989	optimal and might not be sufficient, but seems to work.
19990
199912002-08-03  Kevin Ryde  <kevin@swox.se>
19992
19993	* gmp.texi (Profiling): Use a table and expand for clarity.
19994	(Integer Special Functions): New section for mpz_array_init,
19995	_mpz_realloc, mpz_getlimbn and mpz_size, to discourage their use.
19996
19997	* configure.in (*-*-msdosdjgpp*): Remove forcible --disable-shared,
19998	libtool gets this right itself now.
19999
200002002-07-30  Kevin Ryde  <kevin@swox.se>
20001
20002	* mpn/powerpc32/lshift.asm, mpn/powerpc32/rshift.asm: Lose final mr,
20003	and make final stwu into an stw.
20004
20005	* gmp.texi (Known Build Problems): An easier workaround for DESTDIR,
20006	using LD_LIBRARY_PATH.
20007	(C++ Interface MPFR): Remove mpfrxx.h.
20008
20009	* mpfrxx.h: Remove file.
20010	* Makefile.am: Remove mpfrxx.h.
20011	* tests/cxx/Makefile.am: Add Gerardo's new test programs.
20012
200132002-07-30  Gerardo Ballabio <gerardo.ballabio@unimib.it>
20014
20015	* gmpxx.h: Use mpz_addmul etc for ternary a+b*c etc.  Reorganise some
20016	macros for maintainability.  Merge mpfrxx.h.
20017	* tests/cxx/t-constr.cc, tests/cxx/t-expr.cc: Various updates.
20018	* tests/cxx/t-assign.cc, tests/cxx/t-binary.cc,
20019	tests/cxx/t-ternary.cc, tests/cxx/t-unary.cc: New files.
20020
200212002-07-27  Kevin Ryde  <kevin@swox.se>
20022
20023	* longlong.h (count_trailing_zeros) [ia64 __GNUC__]: Don't use
20024	__builtin_ffs for now, doesn't seem to work.
20025
20026	* configure.in: Establish CONFIG_SHELL to avoid a problem with
20027	AC_LIBTOOL_SYS_MAX_CMD_LEN on ia64-*-hpux*.
20028
20029	* tune/speed.h (SPEED_ROUTINE_MPN_GCD_FINDA): Don't let calls to
20030	mpn_gcd_finda go dead.
20031
20032	* mpn/generic/tdiv_qr.c: Inline mpn_rshift and MPN_COPY of 2 limbs.
20033
200342002-07-24  Kevin Ryde  <kevin@swox.se>
20035
20036	* demos/primes.c: Use __GMP_PROTO and don't use signed, for the
20037	benefit of K&R.
20038
20039	* demos/calc/calclex.l: Add <string.h> for strcmp.
20040
20041	* mpn/ia64/invert_limb.asm: Use .rodata which works on ia64-*-hpux*
20042	and should be standard, rather than worrying about RODATA.
20043
20044	* gmp.texi (Function Classes): Add cross references.
20045	(Integer Import and Export): Fix return value grouping.
20046
20047	* mpn/lisp/gmpasm-mode.el (gmpasm-comment-start-regexp): Add // for
20048	ia64.  Add notes on what the various styles are for.
20049
20050	* mpn/ia64/default.m4 (ASM_START): Define to empty, not dnl, so as not
20051	to kill text on the same line.
20052	(EPILOGUE_cpu): Force a newline after "#", so as not to suppress macro
20053	expansion in the rest of the EPILOGUE line.
20054
200552002-07-21  Kevin Ryde  <kevin@swox.se>
20056
20057	* tune/speed.h: Fix some missing _PROTOs.
20058
20059	* Makefile.am (DISTCLEANFILES): Add configure.lineno.
20060
20061	* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Define
20062	HAVE_DOUBLE_IEEE_BIG_ENDIAN and HAVE_DOUBLE_IEEE_LITTLE_ENDIAN in
20063	config.m4 too.
20064	* mpn/ia64/invert_limb.asm: Add big-endian data.
20065
20066	* tests/mpz/t-jac.c (try_si_zi): Correction to "a" parameter type.
20067
200682002-07-20  Kevin Ryde  <kevin@swox.se>
20069
20070	* mpz/bin_ui.c, mpz/jacobi.c, mpz/pprime_p.c, mpn/generic/divis.c:
20071	More care with long and mp_size_t parameters, for the benefit of K&R.
20072
20073	* gmp-impl.h (invert_limb): Use parens around macro arguments.
20074	(mpn_invert_limb): Give prototype and define unconditionally.
20075
20076	* gmp-impl.h (CACHED_ABOVE_THRESHOLD, CACHED_BELOW_THRESHOLD): New
20077	macros.
20078	* mpn/generic/sb_divrem_mn.c: Use them to help gcc let preinv code go
20079	dead when not wanted.
20080
200812002-07-17  Kevin Ryde  <kevin@swox.se>
20082
20083	* tests/refmpz.c (refmpz_hamdist): Ensure mp_size_t parameters are
20084	that type, for the benefit of hpux ia64 bundled cc ABI=64.
20085
20086	* configure.in (ia64*-*-hpux*): Need +DD64 in cc_64_cppflags to get
20087	the right headers for ansi2knr.
20088
20089	* acinclude.m4 (GMP_TRY_ASSEMBLE, GMP_ASM_UNDERSCORE): Use $CPPFLAGS
20090	with $CCAS and when linking, as done by the makefiles.
20091	(GMP_ASM_X86_MMX, GMP_ASM_X86_SSE2): Show $CPPFLAGS in diagnostics.
20092
20093	* gmp-impl.h (ieee_double_extract): Setup using HAVE_DOUBLE_IEEE_*.
20094	(GMP_UINT32): New define, 32 bit type for ieee_double_extract.
20095	* configure.in: Add AC_CHECK_SIZEOF unsigned.
20096	* configure.in, acinclude.m4 (GMP_IMPL_H_IEEE_FLOATS): Remove.
20097	(GMP_C_DOUBLE_FORMAT): Instead warn about unknown float here.
20098
20099	* configure.in, acinclude.m4 (GMP_C_SIZES): Remove.
20100	* acinclude.m4 (GMP_INCLUDE_GMP_H_BITS_PER_MP_LIMB): Remove this
20101	scheme, not required.
20102	* configure.in (unsigned long, mp_limb_t): Run AC_CHECK_SIZEOF for
20103	these unconditionally, check mp_limb_t against gmp-mparam.h values.
20104	* gmp-impl.h (BYTES_PER_MP_LIMB, BITS_PER_MP_LIMB): Define based on
20105	SIZEOF_MP_LIMB_T if not provided by gmp-mparam.h.
20106	(BITS_PER_ULONG): Define here now.
20107
20108	* gmp.texi (ABI and ISA): Add HP-UX IA-64 choices.
20109	(Random State Initialization): Typo in m2exp described for
20110	gmp_randinit_lc_2exp_size.
20111	(Formatted Output Functions): Clarify gmp_obstack_printf a bit.
20112	(Formatted Input Strings): Typo in %n summary.
20113
20114	* mpz/inp_raw.c (NTOH_LIMB_FETCH): Use simple generic default, since
20115	endianness detection is now cross-compile friendly.
20116	* mpz/out_raw.c (HTON_LIMB_STORE): Ditto.
20117
20118	* mpz/fib_ui.c: Nailify.
20119	* mpz/random.c: Nailify.
20120
20121	* mpfr/acinclude.m4 (MPFR_CONFIGS): Patch by Vincent for an apparent
20122	float rounding gremlin on powerpc.
20123
201242002-07-15  Kevin Ryde  <kevin@swox.se>
20125
20126	* Makefile.am (PRINTF_OBJECTS): Avoid ending in a backslash, hpux ia64
20127	make doesn't like that.
20128
20129	* mpn/ia64/*.asm: Add .sptk to unconditional branches, add ";" after
20130	.mib etc, for the benefit of hpux.
20131
20132	* configure.in (ia64*-*-*): Use ABI=64 on non-HPUX systems, for
20133	consistency.
20134
20135	* gmp-impl.h (ieee_double_extract): Test __sparc__, used by gcc 3.1.
20136	Reported by nix@esperi.demon.co.uk.
20137	* mpfr/mpfr-math.h (_MPFR_NAN_BYTES etc): Ditto.
20138
201392002-07-13  Kevin Ryde  <kevin@swox.se>
20140
20141	* mpn/powerpc32/rshift.asm: Rewrite, transformed from lshift.asm.
20142
20143	* tune/tuneup.c (DIVEXACT_1_THRESHOLD, MODEXACT_1_ODD_THRESHOLD):
20144	Always zero for native mpn_divexact_1, mpn_modexact_1_odd.
20145
20146	* gmp-h.in (__GMP_EXTERN_INLINE): Don't use this during configure,
20147	ie. __GMP_WITHIN_CONFIGURE, to avoid needing dependent routines.
20148	* acinclude.m4 (GMP_H_EXTERN_INLINE): Consequent changes.
20149
20150	* gmp-impl.h, mpn/asm-defs.m4 (mpn_addmul_2, mpn_addmul_3,
20151	mpn_addmul_4): Add prototypes and defines.
20152
20153	* gmp.texi (Number Theoretic Functions): Clarify return value.
20154	Reported by Peter Keller.
20155
201562002-07-10  Kevin Ryde  <kevin@swox.se>
20157
20158	* configure.in, acinclude.m4 (GMP_PROG_LEX): Remove this in favour of
20159	AM_PROG_LEX, now ok when lex is missing.
20160
20161	* longlong.h (count_leading_zeros) [pentiummmx]: Don't use __clz_tab
20162	variant under LONGLONG_STANDALONE.
20163	(count_trailing_zeros) [ia64 __GNUC__]: Use __builtin_ffs.
20164
20165	* gmp-impl.h (popc_limb): Add an ia64 asm version.
20166	(DItype): Use HAVE_LONG_LONG to choose long long, avoiding _LONGLONG
20167	which is in gcc but means something unrelated in MS Visual C 7.0.
20168	Reported by David Librik.
20169
20170	* mpz/divexact.c: Add an ASSERT that den divides num.
20171
20172	* mpn/asm-defs.m4 (LDEF): New macro.
20173	(INT32, INT64): Use it.
20174	* mpn/pa32/*.asm: Use it.
20175	* mpn/pa32/README: Update notes on labels.
20176
20177	* tests/refmpn.c, tests/tests.h, tests/t-bswap.c (ref_bswap_limb):
20178	Renamed from refmpn_bswap_limb.
20179	* tests/t-bswap.c: Add tests_start/tests_end for randomization.
20180
20181	* tests/refmpn.c, tests/tests.h (ref_popc_limb): New function.
20182	* tests/t-popc.c: New file.
20183	* tests/Makefile.am: Add it.
20184
20185	* mpn/ia64/invert_limb.asm: Use RODATA since ".section .rodata" is not
20186	accepted by ia64-*-hpux*.
20187
20188	* acinclude.m4 (GMP_ASM_BYTE): New macro.
20189	(GMP_ASM_ALIGN_LOG, GMP_ASM_W32): Use it.
20190	(GMP_ASM_LABEL_SUFFIX): Use test compiles, not $host.
20191	(GMP_ASM_GLOBL): Ditto, and add .global for ia64-*-hpux*.
20192	(GMP_ASM_GLOBL_ATTR): Use GMP_ASM_GLOBL result, not $host.
20193	(GMP_ASM_LSYM_PREFIX): Allow any "a-z" nm symbol code, add ".text" to
20194	test program, required by ia64-*-hpux*.
20195	(GMP_ASM_LABEL_SUFFIX): Make LABEL_SUFFIX just the value, not a "$1:",
20196	the former being how it's currently being used in fact.
20197
20198	* configure.in, acinclude.m4 (GMP_PROG_CC_WORKS_LONGLONG): New macro.
20199	* configure.in (ia64-*-hpux*): Add 32 and 64 bit ABI modes.
20200
202012002-07-06  Kevin Ryde  <kevin@swox.se>
20202
20203	* tests/cxx/t-allfuns.cc: New file.
20204	* tests/cxx/Makefile.am: Add it.
20205
20206	* mpz/clrbit.c, mpz/setbit.c: Only MPN_NORMALIZE if high limb changes
20207	to zero.  Use _mpz_realloc return value.
20208
20209	* gmp.texi (Build Options, C++ Formatted Output, C++ Formatted Input):
20210	Cross reference to Headers and Libraries for libgmpxx stuff.
20211	(Low-level Functions): mpn_divexact_by3 result based on GMP_NUMB_BITS.
20212	mpn_set_str takes "unsigned char *", reported by Mark Sofroniou.
20213	(C++ Interface General): Describe linking with libgmpxx and libgmp.
20214
202152002-07-01  Kevin Ryde  <kevin@swox.se>
20216
20217	* tune/tuneup.c, gmp-impl.h: Eliminate the array of thresholds in
20218	one(), tune just one at a time and let the callers hand dependencies.
20219	Eliminate the second_start_min hack, handle SQR_KARATSUBA_THRESHOLD
20220	oddities in tune_sqr() instead.
20221
20222	* mpn/pa64/umul.asm, mpn/pa64/udiv.asm, mpn/asm-defs.m4, acconfig.h,
20223	longlong.h, tune/speed.c, tune/speed.h, tune/common.c, tune/many.pl,
20224	tests/devel/try.c: Introduce mpn_umul_ppmm_r and mpn_udiv_qrnnd_r
20225	rather than having variant parameter order for mpn_umul_ppmm and
20226	mpn_udiv_qrnnd on pa64.
20227
20228	* gmp-h.in (mpz_export): Remove a spurious parameter name.
20229	* gmp-impl.h (mpn_rootrem): Use __MPN.
20230
202312002-06-29  Kevin Ryde  <kevin@swox.se>
20232
20233	* longlong.h (udiv_qrnnd) [hppa32]: Remove mpn_udiv_qrnnd version, the
20234	general mechanism for that suffices.
20235
20236	* mpf/inp_str.c: Fix returned count of chars read, reported by Paul
20237	Zimmermann.  Also fix a memory leak for invalid input.
20238	* tests/mpf/t-inp_str.c: New file.
20239	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
20240
20241	* tests/devel/try.c (mpn_mod_34lsub1): Only exists for
20242	GMP_NUMB_BITS%4==0.
20243	(SIZE2_FIRST): Respect option_firstsize2 for "fraction" case.
20244
20245	* mpn/generic/diveby3.c: Further nailifications.
20246	* gmp-impl.h (MODLIMB_INVERSE_3): Allow for GMP_NUMB_BITS odd.
20247	(GMP_NUMB_CEIL_MAX_DIV3, GMP_NUMB_CEIL_2MAX_DIV3): New constants.
20248	* tests/t-constants.c: Check them.
20249
20250	* gmp-h.in (__GMP_CRAY_Pragma): New macro.
20251	(__GMPN_COPY_REST): Use it.
20252	* gmp-impl.h (CRAY_Pragma): Use it.
20253
202542002-06-25  Kevin Ryde  <kevin@swox.se>
20255
20256	* mpz/import.c, mpz/export.c: Cast data pointer through "char *" in
20257	alignment tests, for the benefit of Cray vector systems.
20258
20259	* configure.in (x86-*-*): Remove -march=pentiumpro check, seems ok
20260	with current code.
20261	* acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO, GMP_GCC_VERSION_GE): Remove
20262	macros, no longer needed
20263
20264	* acinclude.m4 (GMP_ASM_RODATA): Remove temporary files.
20265
20266	* configure.in (GMP_ASM_GLOBL_ATTR): Reposition to avoid duplication
20267	through AC_REQUIRE.
20268
202692002-06-23  Kevin Ryde  <kevin@swox.se>
20270
20271	* tests/mpz/t-fib_ui.c (check_fib_table): Check table values, not just
20272	that they're non-zero.
20273
20274	* acinclude.m4 (GMP_GCC_ARM_UMODSI): Match bad "gcc --version" output
20275	exactly, rather than parsing it with GMP_GCC_VERSION_GE.
20276	(GMP_ASM_UNDERSCORE): Use GLOBL_ATTR.
20277
20278	* mpn/pa32/udiv.asm, mpn/pa32/hppa1_1/udiv.asm, mpn/pa64/udiv.asm:
20279	Renamed from udiv_qrnnd.asm, for consistency with other udiv's.
20280	* mpn/pa64/umul.asm: Renamed from umul_ppmm.asm likewise.
20281	* configure.in (hppa*-*-*): Update extra_functions.
20282	(NAILS_SUPPORT): Remove umul_ppmm, udiv_qrnnd, udiv_fp, udiv_nfp from
20283	nails-neutral list, no longer needed.
20284
20285	* gmp-h.in (__DECC): Add notes on testing this for ANSI-ness.
20286	(__GMP_EXTERN_INLINE): Add static __inline for DEC C.
20287	(mpz_mod_ui): Move up to main section, it's still documented.
20288
202892002-06-22  Kevin Ryde  <kevin@swox.se>
20290
20291	* mpz/jacobi.c, mpz/kronsz.c, mpz/kronuz.c, mpz/kronzs.c,
20292	mpz/kronzu.c: Allow for odd GMP_NUMB_BITS, tweak a few variable setups.
20293	* gmp-impl.h (JACOBI_STRIP_LOW_ZEROS): New macro.
20294
20295	* mpn/generic/mod_34lsub1.c: Nailify.
20296	* tests/devel/try.c (CNST_34LSUB1): Nailify.
20297	* gmp-impl.h (ADDC_LIMB): New macro.
20298
20299	* gmpxx.h (mpf_class::get_str): Make exponent mp_exp_t&, default
20300	base=10 and ndigits=0.
20301	(mpz_class::set_str, mpq_class::set_str, mpf_class::set_str): Add
20302	versions accepting "const char *".
20303	* mpfrxx.h (mpfr_class::get_str, mpfr_class::set_str): Ditto, and
20304	uncommenting set_str and operator=.
20305	* gmp.texi (C++ Interface Integers, C++ Interface Rationals)
20306	(C++ Interface Floats): Update.
20307
20308	* gmp-impl.h (modlimb_invert): Merge the <=64bits and general versions.
20309	(const, signed): Move to near top of file, fixes --enable-alloca=debug
20310	on K&R.
20311
20312	* gen-fib.c: New file, derived from mainline in mpn/generic/fib2_ui.c.
20313	* dumbmp.c (mpz_init_set_ui): New function.
20314	* Makefile.am, mpn/Makefile.am: Generate fib_table.h, mpn/fib_table.c.
20315	* gmp-impl.h: Use fib_table.h, add __GMP_DECLSPEC to __gmp_fib_table
20316	(for the benefit of tests/mpz/t-fib_ui.c).
20317	* mpn/generic/fib2_ui.c: Remove __gmp_fib_table and generating code.
20318
20319	* Makefile.am: Add mp.h to BUILT_SOURCES, distclean all BUILT_SOURCES,
20320	use += more.
20321
20322	* acinclude.m4 (GMP_ASM_M68K_INSTRUCTION, GMP_ASM_M68K_BRANCHES):
20323	Don't let "unknown" get into the cache variables.
20324	(GMP_ASM_TEXT): See what assembles, don't hard-code hpux and aix.
20325	(GMP_PROG_EXEEXT_FOR_BUILD): Add ,ff8 for RISC OS, per autoconf cvs.
20326	(GMP_PROG_CPP_FOR_BUILD): Restructure per AC_PROG_CPP, print correct
20327	result if CPP_FOR_BUILD overrides the cache variable.
20328	(GMP_PROG_CC_FOR_BUILD_WORKS): New macro split from
20329	GMP_PROG_CC_FOR_BUILD.  Allow for "conftest" default compiler output.
20330	* configure.in, acinclude.m4 (GMP_PROG_HOST_CC): Reinstate this,
20331	separating HOST_CC establishment from GMP_PROG_CC_FOR_BUILD.
20332
20333	* configure.in (mpn_objs_in_libgmp): Move mpn/mp_bases.lo ...
20334	* Makefile.am (MPN_OBJECTS): ... to here, add $U, and arrange
20335	MPN_OBJECTS to be common between libgmp and libmp.
20336
203372002-06-20  Torbjorn Granlund  <tege@swox.com>
20338
20339	* mpn/generic/mul_n.c (TOOM3_MUL_REC, TOOM3_SQR_REC): Don't check if
20340	basecase is to be invoked when *_TOOM3_THRESHOLD is more than 3 times
20341	the corresponding *_THRESHOLD.
20342
203432002-06-20  Kevin Ryde  <kevin@swox.se>
20344
20345	* mpn/ia64/submul_1.c: Add missing TMP_DECL, TMP_MARK, TMP_FREE.
20346	Reported by Paul Zimmermann.
20347
20348	* configure.in, acinclude.m4 (AC_DEFINE): Make templates read "Define
20349	to 1", for clarity as per autoconf.
20350	* acinclude.m4 (GMP_OPTION_ALLOCA): Group WANT_TMP templates.
20351
203522002-06-20  Gerardo Ballabio <gerardo.ballabio@unimib.it>
20353
20354	* gmpxx.h, mpfrxx.h: Remove mpz_classref, let mpq_class::get_num and
20355	mpq_class::get_den return mpz_class& as per the documentation.
20356	Reported by Roberto Bagnara.
20357
203582002-06-18  Kevin Ryde  <kevin@swox.se>
20359
20360	* tests/rand/t-lc2exp.c: New file.
20361	* tests/rand/Makefile.am: Add it, and use tests/libtests.la.
20362
20363	* randraw.c (lc): Pad seed==0 case with zero limbs, return same
20364	(m2exp+1)/2 bits as normal, right shift "c" result as normal.
20365
20366	* configure.in: Don't bother with line numbers in some diagnostics.
20367	(*-*-mingw*): Use -mno-cygwin if it works, suggested by delta trinity.
20368
20369	* tests/mpz/Makefile.am, tests/mpq/Makefile.am,
20370	tests/misc/Makefile.am, (CLEANFILES): Set to *.tmp for test program
20371	temporaries, to get t-scanf.tmp and reduce future maintenance.
20372
203732002-06-16  Torbjorn Granlund  <tege@swox.com>
20374
20375	* mpn/generic/get_str.c (mpn_dc_get_str): Pass scratch memory area in
20376	new `tmp' parameter.  Trim allocation needs by reusing input parameter.
20377
203782002-06-15  Torbjorn Granlund  <tege@swox.com>
20379
20380	* mpn/sparc32/v9/udiv.asm: New file.
20381
203822002-06-15  Kevin Ryde  <kevin@swox.se>
20383
20384	* acinclude.m4 (GMP_GCC_VERSION_GE): Correction to recognising mingw
20385	gcc 3.1 version number.  Reported by Jim Fougeron.
20386
20387	* configure.in (AC_PROVIDE_AC_LIBTOOL_WIN32_DLL): New define, to make
20388	AC_LIBTOOL_WIN32_DLL work with autoconf 2.53.
20389
20390	* acinclude.m4 (GMP_C_SIZES): Establish BITS_PER_MP_LIMB as a value,
20391	not an expression, for the benefit of the gen-bases invocation.
20392
20393	* config.guess (CC_FOR_BUILD): Try c99, same as configfsf.guess.
20394
203952002-06-15  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
20396
20397	* mpfr/set_q.c: Allow for 1 bit numerator or denominator.
20398
203992002-06-14  Kevin Ryde  <kevin@swox.se>
20400
20401	* configure.in (AC_C_BIGENDIAN): Use new style action parameters.
20402
20403	* randlc2x.c: Allow for a<0, allow for c>=2^m2exp.
20404	* randraw.c (lc): Allow for a==0.
20405
20406	* mpn/sparc32/udiv.asm: Renamed from udiv_fp.asm.  Don't know if float
20407	is the best way for v7, but it's what configure has chosen since gmp 3.
20408	* configure.in (*sparc*-*-* ABI=32): extra_functions="udiv" for all,
20409	in particular sparc32/v8/udiv.asm is faster (on ultrasparc2) than
20410	udiv_fp previously used for v9 chips.
20411
20412	* gen-bases.c: New file, derived from mpn/mp_bases.c.
20413	* dumbmp.c: New file, mostly by Torbjorn, some by me.
20414	* configure.in, acinclude.m4 (GMP_PROG_CC_FOR_BUILD,
20415	GMP_PROG_CPP_FOR_BUILD, GMP_PROG_EXEEXT_FOR_BUILD,
20416	GMP_C_FOR_BUILD_ANSI, GMP_CHECK_LIBM_FOR_BUILD): New macros.
20417	(GMP_PROG_HOST_CC): Remove, superceded by GMP_PROG_CC_FOR_BUILD.
20418	* Makefile.am: Run gen-bases to create mp_bases.h and mpn/mp_bases.c.
20419	* gmp-impl.h: Use mp_bases.h.
20420	* mpn/mp_bases.c: Remove file.
20421	* mpn/Makefile.am: mp_bases.c now in nodist_libmpn_la_SOURCES.
20422
20423	* tests/mpz/t-cmp_d.c (check_one_2exp): Use volatile to force to
20424	double, fixes gcc 3.1 with -O4.  Reported by Michael Lee.
20425	* configure.in (AC_C_VOLATILE): New macro.
20426
20427	* tests/misc/t-scanf.c: (fromstring_gmp_fscanf): Add missing va_end.
20428	Don't mix varargs and fixed args functions, not good on x86_64.
20429	Reported by Marcus Meissner.
20430
20431	* Makefile.am (EXTRA_DIST): Remove mpfr/README, now in mpfr/Makefile.in
20432
20433	* configure, config.in, INSTALL.autoconf: Update to autoconf 2.53.
20434	* */Makefile.in, install-sh, mdate-sh, missing, aclocal.m4, configure:
20435	Update to automake 1.6.1.
20436	* configfsf.guess, configfsf.sub: Update to 2002-05-29.
20437
204382002-06-12  Kevin Ryde  <kevin@swox.se>
20439
20440	* acinclude.m4 (GMP_GCC_VERSION_GE): Recognise mingw gcc 3.1 version.
20441	(GMP_PROG_CC_WORKS): Allow for a_out.exe, as per autoconf.
20442	(GMP_GCC_NO_CPP_PRECOMP, GMP_ASM_UNDERSCORE): Ditto, plus a.exe.
20443
204442002-06-09  Torbjorn Granlund  <tege@swox.com>
20445
20446	* randraw.c (lc): Remove broken ASSERT_ALWAYS.
20447
20448	* mpn/x86: Update gmp-mparam.h files with current measures *_THRESHOLD
20449	values.
20450	* mpn/x86/p6/mmx/gmp-mparam.h: New file.
20451
204522002-06-09  Kevin Ryde  <kevin@swox.se>
20453
20454	* mpn/x86/*/gmp-mparam.h (USE_PREINV_DIVREM_1): Add tuned settings.
20455
20456	* acconfig.h (HAVE_NATIVE_mpn_preinv_divrem_1): New template.
20457
20458	* tests/refmpn.c, tests/tests.h (refmpn_chars_per_limb,
20459	refmpn_big_base): New functions.
20460	* tests/mpn/t-mp_bases.c: Use them, and don't test big_base_inverted
20461	unless it's being used.
20462
20463	* gmp.texi (Notes for Particular Systems): Using Microsoft C with DLLs.
20464	(Known Build Problems): Notes on MacOS and GCC.
20465	(Integer Logic and Bit Fiddling): Use ULONG_MAX for maximum ulong.
20466	(Low-level Functions): mpn_get_str accepts base==256.
20467	(Formatted Output Functions): Note output is not atomic.
20468	(Internals): Note mp_size_t for limb counts.
20469
20470	* mp-h.in, gmp-h.in (mp_ptr, mp_srcptr, mp_size_t, mp_exp_t): Remove
20471	these types from mp.h, not needed.
20472
20473	* mpfr/tests/tadd.c, mpfr/tests/tmul.c (check): Apply a hack to the
20474	parameter order to make sparc gcc 2.95.2 happy.
20475
20476	* doc/configuration: Notes on bootstrapping.
20477
204782002-06-08  Kevin Ryde  <kevin@swox.se>
20479
20480	* mpfr/tests/tsqrt.c, mpfr/tests/tsqrt_ui.c: Suppress tests if sqrt is
20481	not affected by mpfr_set_machine_rnd_mode.
20482
20483	* mpfr/mul_2si.c: Workaround a mips gcc 2.95.3 bug under -O2 -mabi=n32.
20484
20485	* configure.in (alphev56): Fix to use ev5 path.
20486
204872002-06-06  Kevin Ryde  <kevin@swox.se>
20488
20489	* gmp-h.in: Use __gmp_const not const, in a number of places.
20490
20491	* configure.in (sparc): Use ABI=32 instead of ABI=standard on v7 and
20492	v8, for consistency with v9 choices.
20493	(sparc64): Restrict GMP_ASM_SPARC_REGISTER to ABI=64.
20494	(x86): Move MMX $path munging to before printout.
20495	(CCAS): Move upward to support this.
20496
20497	* gmp-impl.h (modlimb_invert): Merge macros for specific limb sizes,
20498	add a version for arbitrary limb size, use GMP_NUMB_BITS.
20499	(modlimb_invert, MODLIMB_INVERSE_3): Fix comments to say GMP_NUMB_BITS.
20500
20501	* gmp-h.in (__GMP_LIKELY, __GMP_UNLIKELY): New macros.
20502	(mpz_getlimbn, mpz_perfect_square_p, mpz_popcount): Use them, make the
20503	fetch or mpn call likely, unconditionally calculate the alternative so
20504	as to avoid an "else" clause.
20505	* gmp-impl.h (LIKELY, UNLIKELY): Aliases.
20506
20507	* configure.in, mpfr/tests/Makefile.am: Add $LIBM to $LIBS for
20508	MPFR_CONFIGS so it detects fesetround, and let it go through to
20509	$MPFR_LIBS.
20510	* mpfr/rnd_mode.c: Use gmp-impl.h to get MPFR_HAVE_FESETROUND.
20511
20512	* tests/mpz/t-sizeinbase.c: Disable fake bits test, such pointer
20513	setups are bogus and have been seen failing on hppa.
20514
20515	* tests/misc.c, tests/refmpz.c, tests.tests.h, tests/mpz/t-cong.c:
20516	Rename mpz_flipbit to refmpz_combit and move from misc.c to refmpz.c.
20517
205182002-06-05  Torbjorn Granlund  <tege@swox.com>
20519
20520	* tests/mpz/t-powm_ui.c Print proper routine name in error message.
20521
205222002-06-03  Kevin Ryde  <kevin@swox.se>
20523
20524	* tune/time.c, tune/freq.c, tune/speed.h: Add powerpc mftb support.
20525	(FREQ_MEASURE_ONE): Move to speed.h, fix tv_sec factor.
20526	(freq_measure): Use for mftb measuring too.
20527	* tune/powerpc.asm, tune/powerpc64.asm: New files.
20528	* configure.in, tune/Makefile.am: Add them.
20529
20530	* gmp-impl.h (popc_limb): Add versions for Cray and fallback for
20531	arbitrary limb size.
20532
20533	* mpn/sparc32/sparc-defs.m4: New file.
20534	* configure.in (sparc*-*-*): Use it.
20535	* acinclude.m4 (GMP_ASM_SPARC_REGISTER): New macro.
20536	* configure.in (sparc64): Use it.  Also, use -Wc,-m64 for linking.
20537	* mpn/sparc64/add_n.asm, mpn/sparc64/addmul_1.asm,
20538	mpn/sparc64/copyd.asm, mpn/sparc64/copyi.asm, mpn/sparc64/lshift.asm,
20539	mpn/sparc64/mul_1.asm, mpn/sparc64/rshift.asm,
20540	mpn/sparc64/sqr_diagonal.asm, mpn/sparc64/sub_n.asm,
20541	mpn/sparc64/submul_1.asm: Use REGISTER for .register.
20542
205432002-06-01  Kevin Ryde  <kevin@swox.se>
20544
20545	* mpz/powm_ui.c: Fix for result range in certain circumstances.
20546
20547	* mpn/x86/k6/diveby3.asm: Speedup to 10 c/l, same as divexact_1.
20548	Anomaly pointed out by Alexander Kruppa.
20549
205502002-05-31  Torbjorn Granlund  <tege@swox.com>
20551
20552	* mpz/export.c: Cast pointer via `unsigned long' when checking
20553	alignment to avoid compiler warnings.
20554
205552002-05-29  Kevin Ryde  <kevin@swox.se>
20556
20557	* gmp-impl.h (BSWAP_LIMB): Versions for m68k, powerpc, and arbitrary
20558	limb size.
20559	* configure.in, acconfig.h (HAVE_HOST_CPU_FAMILY_m68k): New define.
20560
205612002-05-27  Torbjorn Granlund  <tege@swox.com>
20562
20563	* mpn/generic/mul_basecase.c: Improve MAX_LEFT handling, returning
20564	when possible.  Add code for mpn_addmul_5 and mpn_addmul_6.
20565
205662002-05-25  Kevin Ryde  <kevin@swox.se>
20567
20568	* tune/tuneup.c: Misc nailifications, and disable preinv thresholds
20569	with nails.
20570	* tune/speed.h: Use GMP_NUMB_HIGHBIT with mpn_sb_divrem_mn and
20571	mpn_divrem_2.
20572	* mpz/powm.c (redc): Nailify q.
20573
20574	* tests/mpn/t-scan.c: Reduce the amount of testing, to go faster.
20575
205762002-05-23  Torbjorn Granlund  <tege@swox.com>
20577
20578	* Version 4.1 released.
20579
20580	* mpn/alpha/ev6/nails/gmp-mparam.h: New file.
20581
20582	* tests/devel/add_n.c (refmpn_add_n): Nailify.
20583	* tests/devel/sub_n.c (refmpn_sub_n): Nailify.
20584	* tests/devel/addmul_1.c (refmpn_addmul_1): Nailify.
20585	* tests/devel/submul_1.c (refmpn_submul_1): Nailify.
20586
20587	* mpn/alpha/ev6/nails/add_n.asm: New file.
20588	* mpn/alpha/ev6/nails/sub_n.asm: New file.
20589	* mpn/alpha/ev6/nails/mul_1.asm: New file.
20590	* mpn/alpha/ev6/nails/submul_1.asm: New file.
20591
205922002-05-22  Torbjorn Granlund  <tege@swox.com>
20593
20594	* mpn/alpha/ev6/nails/addmul_1.asm: New file.
20595
20596	* mpz/inp_str.c (mpz_inp_str_nowhite): Nailify.
20597
20598	* mpn/generic/mul_basecase.c: Update pointers before conditional
20599	MAX_LEFT break statements.
20600
206012002-05-21  Torbjorn Granlund  <tege@swox.com>
20602
20603	* tests/mpz/t-gcd.c: Test mpz_gcd_ui.
20604
20605	* mpz/lcm_ui.c: Nailify.
20606
20607	* mpz/gcd_ui.c: Nailify.  Make it work as documented, allowing
20608	NULL to be passed for result parameter.  Fix gcd(0,0) case.
20609
20610	* mpz/set_str.c: Nailify.
20611
20612	* randlc2x.c (gmp_randinit_lc_2exp): Nailify.
20613
20614	From Jakub Jelinek:
20615	* longlong.h (add_ssaaaa,sub_ddmmss) [64-bit sparc]:
20616	Make it actually work.
20617
206182002-05-18  Torbjorn Granlund  <tege@swox.com>
20619
20620	* mpf/ui_div.c: Shut up compiler warning.
20621
20622	* mpn/generic/mul_basecase.c: Use mpn_addmul_2, mpn_addmul_3, and
20623	mpn_addmul_4, as available.
20624
20625	* mpn/alpha/ev6/nails/addmul_2.asm: Adjust NAILS_SUPPORT decls.
20626	* mpn/alpha/ev6/nails/addmul_3.asm: Likewise
20627	* mpn/alpha/ev6/nails/addmul_4.asm: Likewise.
20628
20629	* configure.in (*-cray-unicos*): Back again to -hscalar0.
20630	(gmp_mpn_functions_optional): Add mul_3, mul_4, addmul_2, addmul_3,
20631	and addmul_4.
20632	* acconfig.h: Add #undefs for new optional mpn functions.
20633
206342002-05-18  Kevin Ryde  <kevin@swox.se>
20635
20636	* gmp.texi (Integer Import and Export): Mention Cray unfilled words.
20637
20638	* mpz/set_d.c, mpq/set_d.c: Use LIMBS_PER_DOUBLE for the output of
20639	__gmp_extract_double.  Reported by Henrik Johansson.
20640
206412002-05-17  Torbjorn Granlund  <tege@swox.com>
20642
20643	* mpn/alpha/ev6/nails/addmul_2.asm: New file.
20644	* mpn/alpha/ev6/nails/addmul_3.asm: New file.
20645	* mpn/alpha/ev6/nails/addmul_4.asm: New file.
20646
20647	* mpn/generic/dump.c: Rewrite and nailify.
20648
206492002-05-16  Kevin Ryde  <kevin@swox.se>
20650
20651	* mpfr/Makefile.am (EXTRA_DIST): Add BUGS file.
20652
206532002-05-15  Torbjorn Granlund  <tege@swox.com>
20654
20655	* configure.in (*-cray-unicos*): Remove -hscalar0, add -hnofastmd
20656	as workaround for compiler bug.
20657	(mips64*-*-*): Pass just -O1 to cc, to work around compiler bug.
20658
206592002-05-14  Torbjorn Granlund  <tege@swox.com>
20660
20661	* configure.in (*-cray-unicos*): Pass -hscalar0 to work around
20662	compiler bug for mpz/import.c.
20663
206642002-05-11  Torbjorn Granlund  <tege@swox.com>
20665
20666	* mpz/import.c: Cast pointer via `unsigned long' when checking
20667	alignment to avoid compiler warnings.
20668
20669	* mpn/generic/rootrem.c: Adjust allocation of qp temporary area.
20670
206712002-05-09  Kevin Ryde  <kevin@swox.se>
20672
20673	* mpz/import.c: Corrections to size store, special case tests, and
20674	general case ACCUMULATE.
20675	* tests/mpz/t-import.c, tests/mpz/t-export.c: More test data.
20676
206772002-05-09  Torbjorn Granlund  <tege@swox.com>
20678
20679	* mpn/generic/rootrem.c: Use temp space for root, copy value in place
20680	before returning.
20681	* mpz/root.c: Don't allocate extra limb for root value.
20682	* mpz/perfpow.c: Undo last change.
20683
206842002-05-08  Torbjorn Granlund  <tege@swox.com>
20685
20686	* gmp-impl.h (powerpc BSWAP_LIMB_FETCH): Rename local variable to make
20687	it not clash with caller.
20688
20689	* mpn/generic/rootrem.c: New file.
20690	* configure.in (gmp_mpn_functions): Add rootrem and pow_1.
20691	* mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add rootrem.c and
20692	pow_1.c
20693	* gmp-impl.h (mpn_rootrem): Add declaration.
20694	* mpz/perfpow.c: Amend allocations for mpn_rootrem requirements.
20695	* mpz/root.c: Rewrite to use mpn_rootrem.
20696
206972002-05-08  Kevin Ryde  <kevin@swox.se>
20698
20699	* gmp-impl.h (MUL_KARATSUBA_THRESHOLD etc): Remove forced nail values.
20700
20701	* mpf/fits_u.h, mpf/fits_s.h, tests/mpf/t-fits.c: Ignore fraction
20702	part, making the code match the documentation.
20703
20704	* gmpxx.h (struct __gmp_binary_minus): Use mpz_ui_sub.
20705
207062002-05-07  Kevin Ryde  <kevin@swox.se>
20707
20708	* mpn/powerpc32/README: New file.
20709
20710	* mpz/root.c: Use unsigned long with mpz_sub_ui not mp_limb_t.
20711
20712	* tune/README: Misc updates including sparc32/v9 smoothness, low res
20713	timebase, and mpn_add_n operand overlaps.
20714	* tune/many.pl: Add udiv.asm support.
20715
20716	* gmp.texi (Build Options): A couple of --build better as --host.
20717	(Known Build Problems, Notes for Package Builds): Add DESTDIR problem.
20718	(Compatibility with older versions): Compatible with 4.x versions.
20719	(Converting Integers): Remove mpz_get_ui + mpz_tdiv_q_2exp decompose.
20720	(Integer Import and Export): New section.
20721	(Miscellaneous Integer Functions): Clarify mpz_sizeinbase returns 1
20722	for operand of 0.
20723	(Language Bindings): Add GNU Pascal.
20724	(Low-level Functions): Add GMP_NUMB_MAX.
20725
20726	* tests/mpz/t-import.c, tests/mpz/t-export.c, tests/mpz/t-get_d.c:
20727	New tests.
20728	* tests/mpz/Makefile.am: Add them.
20729
20730	* mpz/import.c, mpz/export.c: New files.
20731	* Makefile.am, mpz/Makefile.am, gmp-h.in: Add them.
20732
20733	* gmp-h.in, gmp-impl.h (GMP_NUMB_MAX): Move to gmp.h.
20734	* gmp-impl.h (CNST_LIMB): Add cast to mp_limb_t to ensure unsigned.
20735	(CRAY_Pragma, MPN_REVERSE, MPN_BSWAP, MPN_BSWAP_REVERSE,
20736	ASSERT_ALWAYS_LIMB, ASSERT_ALWAYS_MPN): New macros.
20737	(MPZ_CHECK_FORMAT): Use ASSERT_ALWAYS_MPN.
20738
207392002-05-07  Torbjorn Granlund  <tege@swox.com>
20740
20741	* mpz/aors_ui.h: Nailify.
20742
20743	* tests/mpz/t-addsub.c: New file.
20744	* tests/mpz/Makefile.am (check_PROGRAMS): Add t-addsub.
20745
20746	* mpz/ui_sub.c: New file.
20747	* mpz/Makefile.am (libmpz_la_SOURCES): Add ui_sub.c.
20748	* Makefile.am (MPZ_OBJECTS): Ditto.
20749	* gmp-h.in (mpz_ui_sub): Add declaration.
20750
20751	* gmp-impl.h (MPZ_REALLOC): Rewrite to allow the use of _mpz_realloc
20752	return value.
20753
20754	* gmp-h.in (mpn_pow_1): Add declaration.
20755
20756	* mpn/generic/pow_1.c: Handle exp <= 1.  Reverse rp/tp parity scheme
20757	for bn == 1 arm.
20758
20759	* Rename MP_LIMB_T_HIGHBIT => GMP_LIMB_HIGHBIT.
20760
207612002-05-06  Torbjorn Granlund  <tege@swox.com>
20762
20763	* demos/pexpr.c (main): Don't call mpz_sizeinbase with negative base.
20764
20765	* randraw.c (lc): Remove an unused variable.
20766
20767	* mpn/generic/get_str.c: Clarify an algorithm description.
20768
20769	* tests/mpf/t-trunc.c: Nailify.
20770	* tests/mpf/t-set_si.c: Disable for nails.
20771
20772	* mpf/cmp_si.c: Nailify.
20773	* mpf/cmp_ui.c: Nailify.
20774	* mpf/div.c: Nailify.
20775	* mpf/div_2exp.c: Nailify.
20776	* mpf/div_ui.c: Nailify.
20777	* mpf/eq.c: Nailify.
20778	* mpf/get_d.c: Nailify.
20779	* mpf/get_d_2exp.c: Nailify.
20780	* mpf/get_si.c: Nailify.
20781	* mpf/get_str.c: Nailify.
20782	* mpf/get_ui.c: Nailify.
20783	* mpf/mul_2exp.c: Nailify.
20784	* mpf/random2.c: Nailify.
20785	* mpf/set_q.c: Nailify.
20786	* mpf/set_si.c: Nailify.
20787	* mpf/set_str.c: Nailify.
20788	* mpf/set_ui.c: Nailify.
20789	* mpf/sub.c: Nailify.
20790	* mpf/ui_div.c: Nailify.
20791	* mpf/ui_sub.c: Nailify.
20792	* mpf/urandomb.c: Nailify.
20793
20794	* gmp-impl.h (__GMPF_BITS_TO_PREC, __GMPF_PREC_TO_BITS): Nailify.
20795
20796	* mpz/get_si.c: Misc variable name changes.
20797
20798	* mpf/fits_u.h: Rewrite - nailify.
20799	* mpf/fits_s.h: Likewise.
20800
20801	* mpz/mod.c: Disambiguate if-statement with extra {}.
20802
20803	* mpf/int_p.c: Fix type of size variables.
20804	* mpf/get_ui: Likewise.
20805	* mpf/get_si: Likewise.
20806	* mpq/equal.c: Likewise.
20807	* mpq/get_d.c: Likewise.
20808	* mpz/cmp_d.c: Likewise.
20809	* mpz/cmpabs_d.c: Likewise.
20810	* mpz/divis_2exp.c: Likewise.
20811	* mpz/kronuz.c: Likewise.
20812	* mpz/kronzu.c: Likewise.
20813	* mpz/kronzs.c: Likewise.
20814	* mpz/kronsz.c: Likewise.
20815	* mpz/scan0.c: Likewise.
20816	* mpz/scan1.c: Likewise.
20817	* mpz/tstbit.c: Likewise.
20818	* mpz/cong_2exp.c: Likewise.
20819	* mpz/divis.c: Likewise.
20820
208212002-05-04  Torbjorn Granlund  <tege@swox.com>
20822
20823	* mpn/generic/gcd.c: Additional nailify changes.
20824
208252002-05-04  Kevin Ryde  <kevin@swox.se>
20826
20827	* gmp-h.in (__GNU_MP_VERSION): Set to 4.1.
20828	* Makefile.am (-version-info): Bump for new release.
20829
208302002-04-30  Torbjorn Granlund  <tege@swox.com>
20831
20832	* mpn/generic/divrem_1.c: Additional nailify changes.
20833	* mpn/generic/mod_1.c: Likewise.
20834
20835	* tests/mpq/t-get_d.c: Print floats with all 16 digits.
20836
20837	* mpq/get_d.c: Nailify.
20838
20839	* tests/mpq/t-set_f.c: Disable for nails.
20840
20841	* mpz/get_d.c: Nailify.
20842
20843	* gmp-impl.h (LIMBS_PER_DOUBLE, MP_BASE_AS_DOUBLE): Nailify.
20844
20845	* gmp-h.in (__GMPZ_FITS_UTYPE_P): Cast maxval to before shifting it.
20846
20847	* extract-dbl.c: Nailify.
20848
208492002-04-29  Torbjorn Granlund  <tege@swox.com>
20850
20851	* mpq/md_2exp.c (mord_2exp): Nailify.
20852
20853	* mpq/cmp_ui.c: Nailify.
20854
20855	* mpq/cmp.c (mpq_cmp): Nailify.
20856
20857	* mpn/generic/gcd.c: Nailify.  GNUify code layout.
20858
20859	* mpn/generic/gcdext.c: Nailify.  Misc changes.
20860
20861	* tests/mpz/t-sqrtrem.c: Let argv[1] mean # of repetitions.
20862	* tests/mpz/t-gcd.c: Likewise.
20863
20864	* mpz/gcd.c: Nailify.
20865
20866	* mpn/generic/random.c: Nailify.
20867
20868	* gmp-impl.h (modlimb_invert): Nailify.
20869
208702002-04-27  Torbjorn Granlund  <tege@swox.com>
20871
20872	* mpn/generic/gcdext.c (div2): Remove qh parameter.
20873	(mpn_gcdext): Streamline double-limb code.
20874	Move GCDEXT_THRESHOLD check to after initial division.
20875
208762002-04-27  Kevin Ryde  <kevin@swox.se>
20877
20878	* gmp-impl.h (JACOBI_MOD_OR_MODEXACT_1_ODD): Allow for odd
20879	GMP_NUMB_BITS.
20880
20881	* tune/time.c (sgi_works_p): Allow for 64-bit counter, and fix
20882	SGI_CYCLECNTR_SIZE handling.
20883
20884	* demos/expr/exprfr.c: Add nan and inf constants.
20885	* demos/expr/t-expr.c: Exercise them.
20886
208872002-04-26  Torbjorn Granlund  <tege@swox.com>
20888
20889	* mpz/cmp_ui.c: Fix overflow conditions for nails.
20890
20891	* gmp-h.in (mpz_get_ui): Fix typo from last change.
20892
20893	* mpz/n_pow_ui.c: Adjust allocation for nails.
20894	(GMP_NUMB_HALFMAX): Renamed from MP_LIMB_T_HALFMAX.
20895	Fix umul_ppmm invocation for for nails.
20896
208972002-04-24  Torbjorn Granlund  <tege@swox.com>
20898
20899	* mpn/generic/gcdext.c: Simplify by using mpn_tdiv_qr instead of
20900	mpn_divmod.
20901
209022002-04-24  Kevin Ryde  <kevin@swox.se>
20903
20904	* configure.in (*-*-cygwin*): Give a sensible default command line
20905	limit, to avoid blowups reported by Jim Fougeron on windows 9x.
20906	(--enable-nails): Make the default 2, since mp_bases has data for that.
20907
20908	* mpfr/mpfr-math.h (__mpfr_nan): Use a "double" for the bytes, to
20909	avoid a mis-conversion on alpha gcc 3.0.2.
20910	(_MPFR_INFP_BYTES, _MPFR_INFM_BYTES): Should be a zero mantissa.
20911
209122002-04-23  Torbjorn Granlund  <tege@swox.com>
20913
20914	* mpz/dive_ui.c: Fix typo.
20915
20916	* mpz/fits_s.h: Rewrite.
20917
20918	* mpz/jacobi.c: Nailify.
20919	* mpz/kronuz.c: Additional nailify changes.
20920	* mpz/kronsz.c: Likewise.
20921
209222002-04-23  Kevin Ryde  <kevin@swox.se>
20923
20924	* demos/expr/Makefile.am (LDADD): Add $(LIBM) for the benefit of mpfr.
20925
20926	* mpz/divis_ui.c, mpz/cong_ui.c: Nailify.
20927	* mpn/generic/bdivmod.c, mpz/divexact.c, mpz/dive_ui.c: Nailify.
20928	* mpn/generic/sb_divrem_mn.c, mpn/generic/divrem.c,
20929	mpn/generic/divrem_2.c: Nailify ASSERTs.
20930	* mpn/x86/k6/mmx/logops_n.asm, mpn/x86/k6/mmx/com_n.asm: Nailify.
20931	* mpz/inp_raw.c, mpz/out_raw.c: Nailify.
20932	* mpz/kronzu.c, mpz/kronuz.c, mpz/kronzs.c, mpz/kronsz.c: Nailify.
20933	* mpn/generic/divis.c, mpz/cong.c, mpz/cong_2exp.c: Nailify.
20934	* gmp-impl.h (NEG_MOD): Nailify.
20935
20936	* gmp-impl.h, mpn/mp_bases.c: Add back GMP_NUMB_BITS==30 bases data.
20937
20938	* mpfr/get_d.c: Patch from Paul to avoid problem with constant folding
20939	in gcc on OSF.
20940
20941	* mpn/lisp/gmpasm-mode.el: Remove mention of defunct LF macro.
20942
209432002-04-22  Torbjorn Granlund  <tege@swox.com>
20944
20945	* demos/pexpr.c: Handle "binomial" operator.
20946
20947	* mpz/cmp_ui.c: Move assignments of `up' out of conditionals.
20948
20949	* mpn/generic/gcdext.c: Fix fencepost error in STAT code.
20950
20951	* gmp-impl.h (mpn_com_n): Nailify.
20952
20953	* tests/mpz/t-cdiv_ui.c: New file.
20954	* tests/mpz/Makefile.am (check_PROGRAMS): Add t-cdiv_ui.
20955	* mpz/cdiv_qr_ui.c: Nailify.
20956	* mpz/cdiv_q_ui.c: Nailify.
20957	* mpz/cdiv_r_ui.c: Nailify.
20958	* mpz/cdiv_ui.c: Nailify.
20959
20960	* tests/misc/t-printf.c (CHECK_N): Add cast to allow `char' to be an
20961	unsigned type.
20962	* tests/misc/t-scanf.c: Likewise.
20963
20964	* mpz/mul_i.h: Rework nails code to handle parameter overlap.
20965
20966	* tests/mpz/t-set_f.c: Disable for nails.
20967
209682002-04-21  Torbjorn Granlund  <tege@swox.com>
20969
20970	* mpz/set_si.c: Add cast to support LONG_LONG_LIMB.
20971	* mpz/iset_si.c: Likewise.
20972
20973	* mpz/bin_ui.c: Nailify.
20974	* mpz/bin_uiui.c: Nailify.
20975
20976	* mpz/cmpabs_ui.c: Nailify.
20977
20978	* tests/mpz/t-aorsmul.c: Nailify.
20979	* mpz/aorsmul_i.c (mpz_addmul_ui, mpz_submul_ui): Nailify better.
20980
209812002-04-20  Torbjorn Granlund  <tege@swox.com>
20982
20983	* tests/mpz/t-fdiv_ui.c: Check mpz_fdiv_ui.
20984	* tests/mpz/t-tdiv_ui.c: Check mpz_tdiv_ui.
20985
20986	* mpz/tdiv_ui.c: Rewrite nails code.
20987	* mpz/fdiv_ui.c: Nailify.
20988
20989	* tests/mpz/t-tdiv_ui.c: Check returned remainders.
20990	* tests/mpz/t-fdiv_ui.c: Merge in recent t-tdiv_ui changes.
20991
20992	* mpz/tdiv_q_ui.c: Remove spurious TMP_* calls.
20993
20994	* mpz/fdiv_qr_ui.c: Nailify.
20995	* mpz/fdiv_q_ui.c: Nailify.
20996	* mpz/fdiv_r_ui.c: Nailify.
20997
20998	* mpz/get_si.c: Misc nailify changes to shut up compiler warnings.
20999
21000	* mpz/ui_pow_ui.c: Fix typo in last change.
21001
210022002-04-20  Kevin Ryde  <kevin@swox.se>
21003
21004	* tests/misc/t-printf.c, tests/misc/t-scanf.c: Check all %n types.
21005
21006	* mpn/x86/k7/mmx/divrem_1.asm, mpn/x86/p6/mmx/divrem_1.asm
21007	(mpn_preinv_divrem_1): New entrypoint.
21008	(mpn_divrem_1): Avoid a branch when testing high<divisor.
21009	* mpn/asm-defs.m4: Add define_mpn(preinv_divrem_1).
21010	* configure.in: Allow divrem_1.asm to provide mpn_preinv_divrem_1.
21011
21012	* gmp-impl.h [nails]: Add #undefs of MUL_KARATSUBA_THRESHOLD etc, to
21013	override CPU gmp-mparam.h.  Remove JACOBI_BASE_METHOD override since
21014	it's nails-neutral.
21015
21016	* tests/mpn/t-mp_bases.c: New file.
21017	* tests/mpn/Makefile.am (check_PROGRAMS): Add it.
21018	* tests/t-constants.c: Move MP_BASES constants checks to it.
21019
21020	* mpn/mp_bases.c: Fix big_base_inverted values for nails.
21021	* gmp-impl.h (MP_BASES_BIG_BASE_INVERTED_10,
21022	MP_BASES_NORMALIZATION_STEPS_10): Fix nails values.
21023	(MP_BASES_*): Remove GMP_NUMB_BITS == 30 data.
21024
21025	* mpn/x86/pentium/com_n.asm, mpn/x86/pentium/logops_n.asm: Add
21026	NAILS_SUPPORT indicators.
21027
21028	* configure.in: Grep for NAILS_SUPPORT in cpu-specific code, and look
21029	in "nails" subdirectories, print path used.
21030	* mpn/asm-defs.m4 (NAILS_SUPPORT): New macro.
21031
21032	* mpfr/mpfr-test.h: Include config.h, for the benefit of test programs
21033	not using gmp-impl.h.
21034
210352002-04-19  Torbjorn Granlund  <tege@swox.com>
21036
21037	* tests/mpz/t-scan.c: Nailify.
21038
21039	* mpz/tdiv_qr_ui.c: Nailify.
21040	* mpz/tdiv_q_ui.c: Nailify.
21041	* mpz/tdiv_r_ui.c: Nailify.
21042	* mpz/tdiv_ui.c: Nailify.
21043
21044	* mpz/cmp_ui.c: Nailify.
21045
21046	* mpz/ui_pow_ui.c: Misc nailify changes to shut up compiler warnings.
21047
21048	* mpz/scan0.c: Nailify.
21049	* mpz/scan1.c: Nailify.
21050
21051	* tests/mpz/t-sizeinbase.c (mpz_fake_bits): Nailify.
21052
210532002-04-18  Torbjorn Granlund  <tege@swox.com>
21054
21055	* mpz/aorsmul_i.c: Nailify.
21056
21057	* mpz/cmp_si.c: Nailify (botched).
21058
21059	* mpz/ui_pow_ui.c: Nailify.
21060
21061	* gmp-h.in (__GMPZ_FITS_UTYPE_P): Nailify.
21062
21063	* mpz/fits_s.h: Nailify.
21064
21065	* tests/mpz/bit.c (check_tstbit): Nailify.
21066
21067	From Paul Zimmermann:
21068	* mpn/generic/sqrtrem.c: Nailify.
21069
21070	* mpz/n_pow_ui.c: Nailify.
21071
21072	* mpz/cfdiv_r_2exp.c: Nailify.
21073
21074	* randraw.c (lc): Undo: Let mpn_rshift put result in place to avoid
21075	extra MPN_COPY.
21076
210772002-04-17  Torbjorn Granlund  <tege@swox.com>
21078
21079	* mpz/clrbit.c: Add two GMP_NUMB_MASK masks after addition.
21080
21081	* mpn/generic/random2.c (LOGBITS_PER_BLOCK): Decrease to 4.
21082
21083	* gmp-impl.h (nail DIV_DC_THRESHOLD): Decrease to 50 to allow fast
21084	division.
21085
21086	* mpn/generic/random2.c: Nailify.
21087
21088	* mpz/fac_ui.c: Nailify.
21089
21090	* mpz/mul_i.h: #if ... #endif code block to shut up gcc warnings.
21091
21092	* mpn/generic/sqrtrem.c: Adopt to GNU coding standards.
21093	(mpn_dc_sqrtrem): New name for mpn_dq_sqrtrem.
21094	Partial nailification.
21095
21096	* configure.in: As a temporary hack, clear extra_functions for nails
21097	builds.
21098
21099	* gmp-h.in (mpz_get_ui): #if ... #endif else code block to shut up gcc
21100	warnings.
21101
211022002-04-17  Kevin Ryde  <kevin@swox.se>
21103
21104	* texinfo.tex: Update to 2002-03-26.08 per texinfo 4.2.
21105	* gmp.texi: Must have @top in @ifnottex (or @contents doesn't come out
21106	in one run).
21107
21108	* mpn/generic/scan0.c, mpn/generic/scan1.c: Nailify.
21109
21110	* tests/mpn/t-scan.c: New file.
21111	* tests/mpn/Makefile.am (check_PROGRAMS): Add it.
21112
21113	* tests/refmpn.c, tests/tests.h (refmpn_tstbit): Use unsigned long for
21114	bit index.
21115	(refmpn_setbit, refmpn_clrbit, refmpn_scan0, refmpn_scan1): New
21116	functions.
21117
21118	* mpfr/cmp_ui.c (mpfr_cmp_si_2exp): Fix b==0 i!=0 case.
21119
211202002-04-17  Gerardo Ballabio <gerardo.ballabio@unimib.it>
21121
21122	* gmpxx.h, mpfrxx.h: Remove mpfr_class bool combinations, remove
21123	mpfr_class::get_str2, use mp_rnd_t for rounding modes, use
21124	8*sizeof(double) for mpfr_t's holding doubles.
21125
211262002-04-17  Torbjorn Granlund  <tege@swox.com>
21127
21128	* mpz/powm.c: Nailify.
21129	* mpz/powm_ui.c: Nailify.
21130
211312002-04-16  Torbjorn Granlund  <tege@swox.com>
21132
21133	* mpz/hamdist.c: Nailify.
21134	* tests/misc.c (urandom): Nailify.
21135
21136	* mpz/get_si.c: Nailify.
21137	* gmp-h.in (mpz_get_ui): Nailify.  Streamline (and probably upset
21138	memory checkers).
21139
21140	* gmp-impl.h (mp_bases[10] values): Add versions for GMP_NUMB_BITS
21141	being 28, 60, and 63.
21142	* mpn/mp_bases.c: Add tables for GMP_NUMB_BITS being 28, 60, and 63.
21143
21144	* mpz/iset_si.c: Nailify.
21145	* mpz/iset_ui.c: Nailify
21146
21147	* tests/mpz/convert.c (main): Print test number in error message.
21148
21149	* mpn/generic/get_str.c (mpn_sb_get_str): Shift up `frac' into nails
21150	field after bignum division.
21151
211522002-04-16  Kevin Ryde  <kevin@swox.se>
21153
21154	* gmp-h.in, gmp-impl.h (GMP_NAIL_MASK): Move to gmp.h.
21155
21156	* gmp.texi: Use @documentdescription and @copying, per texinfo 4.2.
21157	(Low-level Functions): Clarify mpn_gcd overlap requirements, rewrite
21158	mpn_set_str description, add nails section.
21159	(C++ Interface General): Remove bool from types that mix with classes.
21160	(Language Bindings): Add STklos, GNU Smalltalk, Regina.
21161	(Binary to Radix, Radix to Binary): Describe new code.
21162	(Assembler Cache Handling): More notes, mostly by Torbjorn.
21163
21164	* macos/configure (%vars): Remove __GMP from substitutions, per change
21165	to main configure.
21166
21167	* mpn/generic/dive_1.c: Nailify.
21168	* mpn/generic/mode1o.c: Nailify, remove bogus ASSERT in commented-out
21169	alternate implementation.
21170	* gmp-impl.h (SUBC_LIMB): New macro.
21171
21172	* tests/devel/try.c (validate_divexact_1): Correction to compare.
21173	(udiv_qrnnd): New testing.
21174	(SHIFT_LIMIT): Nailify.
21175	(-b): New option, remove spurious "H" from getopt string.
21176
21177	* mpz/clrbit.c: Nailify.
21178	* tests/mpz/t-hamdist.c: Nailify.
21179	* gmp-impl.h (MPN_FIB2_SIZE): Nailify.
21180	(PP): Nailify conditionals.
21181	* tests/mpz/t-fib_ui.c (MPZ_FIB_SIZE_FLOAT): Nailify.
21182
21183	* configure.in, acinclude.m4: Establish GMP_NAIL_BITS and
21184	GMP_LIMB_BITS for gmp-h.in configure tests.
21185
21186	* mpfr/*, configure.in: Update to final mpfr 2.0.1.
21187	* mpfr/acinclude.m4 (MPFR_CONFIGS): Use $host, not uname stuff.
21188	* mpfr/tests/tout_str.c: Patch from Paul for denorm fprintf tests.
21189
211902002-04-15  Torbjorn Granlund  <tege@swox.com>
21191
21192	* mpn/generic/divrem_1.c (EXTRACT): Remove.
21193
21194	* tests/mpz/t-tdiv_ui.c (dump_abort): Accept argument for error string.
21195
21196	* mpz/rrandomb.c: Nailify.  Needs further work.
21197
21198	* mpn/generic/mod_1.c: Nailify.
21199
21200	* gmp-impl.h: Set various *_THRESHOLD values to be used for nails to
21201	avoid not yet qualified algorithms.
21202	(MPZ_CHECK_FORMAT): Check that nail part is zero.
21203
21204	* tests/mpz/t-mul.c (main): Test squaring even for huge operands.
21205	(base_mul): Nailify.
21206	(dump_abort): Accept argument for error string.  Print product
21207	difference.
21208
21209	* mpn/generic/set_str.c: Nailify.
21210
21211	* gmp-h.in (__GMPN_ADD, __GMPN_SUB): Nailify.
21212
212132002-04-14  Torbjorn Granlund  <tege@swox.com>
21214
21215	* randraw.c (lc): Return non-nonsense return value for seed=0 case.
21216	Check for m2exp being non-zero early; remove all other tests of m2exp.
21217	Remove redundant MPN_ZERO call.
21218	Let mpn_rshift put result in place to avoid extra MPN_COPY.
21219	Remove confusing comment before function `lc' describing BBS algorithm.
21220	Misc simplification and cleanups.
21221	Nailify.  Needs further work.
21222
21223	* mpz/set_si.c: Nailify.
21224	* mpz/set_ui.c: Nailify.
21225	* mpz/mul_i.h: Nailify.
21226
21227	* tests/mpz/t-mul_i.c: Actually test _ui routines.  Add some more test
21228	values.
21229
21230	* mpn/generic/mul_n.c: Finish nailifying toom3 code.
21231
212322002-04-13  Kevin Ryde  <kevin@swox.se>
21233
21234	* mpfr/*: Update to another new mpfr 2.0.1.
21235	* configure.in, Makefile.am, mpfr/Makefile.am, mpfr/tests/Makefile.am:
21236	Use MPFR_CONFIGS macro, establish separate MPFR_CFLAGS for mpfr build.
21237
21238	* mpfr/tests/Makefile.am: Correction to convenience rule for libmpfr.a.
21239
212402002-04-11  Kevin Ryde  <kevin@swox.se>
21241
21242	* mpfr/set_q.c: gmp-impl.h before mpfr.h to avoid _PROTO redefine.
21243
21244	* mpfr/*, configure.in: Update to new mpfr 2.0.1.
21245
21246	* tests/refmpn.c (refmpn_udiv_qrnnd, refmpn_divmod_1c_workaround):
21247	Fixes for nails.
21248
21249	* tests/t-constants.c (MODLIMB_INVERSE_3): Nailify tests.
21250	(MP_BASES_BIG_BASE_INVERTED_10, MP_BASES_NORMALIZATION_STEPS_10): Only
21251	check these under USE_PREINV_DIVREM_1.
21252	* tests/t-modlinv.c: Nailify tests.
21253
212542002-04-11  Gerardo Ballabio <gerardo.ballabio@unimib.it>
21255
21256	* gmpxx.h: Remove bool combinations, remove mpf_class::get_str2, only
21257	need <iosfwd> now.
21258
212592002-04-11  Torbjorn Granlund  <tege@swox.com>
21260
21261	* mpn/generic/diveby3.c: Nailify.
21262	* gmp-impl.h (MODLIMB_INVERSE_3): Nailify.
21263
21264	* mpn/generic/mul_n.c: Nailify Toom3 code.
21265
212662002-04-10  Kevin Ryde  <kevin@swox.se>
21267
21268	* gmp-impl.h (MPN_KARA_MUL_N_MINSIZE, MPN_KARA_SQR_N_MINSIZE): Set to
21269	3, as needed by nails case.
21270
21271	* mpn/generic/addmul_1.c, mpn/generic/submul_1.c [nails]: Fix vl
21272	assert, add rp,n and up,n asserts.
21273
21274	* mpfr/Makefile.am: Add new mpfr-math.h, install mpf2mpfr.h.
21275
212762002-04-10  Torbjorn Granlund  <tege@swox.com>
21277
21278	* mpn/generic/divrem_1.c: Nailify.  Update mp_size_t variables to use
21279	`n' suffix instead of `size' suffix.
21280	* mpn/generic/divrem_2.c: Likewise.
21281	* mpn/generic/sb_divrem_mn.c: Nailify.
21282	* mpn/generic/tdiv_qr.c: Nailify.
21283	(SHL): Remove silly macro.
21284
21285	* mpn/generic/mul_n.c (mpn_kara_mul_n): Replace open-coded increment by
21286	mpn_incr_u call.  Handle nails in ws[n] increment.
21287	* mpn/generic/mul_n.c (mpn_kara_sqr_n): Likewise.
21288
21289	* gmp-h.in (GMP_NUMB_MASK): New #define.
21290	(__GMPN_AORS_1): Add version for nails.
21291
21292	* gmp-impl.h (GMP_NUMB_MASK): Comment out, now in gmp.h.
21293	(mpn_incr_u): Don't assume `incr' is non-zero.
21294	(mpn_decr_u): Similarly.
21295
212962002-04-09  Kevin Ryde  <kevin@swox.se>
21297
21298	* mpfr/*, configure.in: Update to mpfr 2.0.1.
21299
21300	* tests/refmpn.c (refmpn_mul_1c, lshift_make): Corrections for nails.
21301	* tssts/refmpn.c, tests/tests.h (refmpn_cmp_allowzero): New function.
21302
21303	* mpn/generic/mul_1.c [nails]: Fix vl assert, add {up,n} assert.
21304
21305	* mpn/pa32/hppa1_1/pa7100/addmul_1.asm,
21306	mpn/pa32/hppa1_1/pa7100/submul_1.asm: Rename "size" define, to avoid
21307	ELF .size directive.  Reported by LaMont Jones.
21308
21309	* tests/mpz/t-set_si.c: Add nails support.
21310
213112002-04-05  Torbjorn Granlund  <tege@swox.com>
21312
21313	* gmp-impl.h: Replace nail mpn_incr_u, mpn_decr_u with faster versions.
21314	(mp_bases[10] values): Check GMP_NUMB_BITS instead of BITS_PER_MP_LIMB.
21315	Add GMP_NUMB_BITS == 30 version.
21316	(__gmp_doprnt, etc): Remove parameter names.
21317
21318	* mpn/generic/mul_n.c: Nailify Karatsuba code.
21319	* mpn/generic/get_str.c: Nailify.
21320	* mpn/generic/sqr_basecase.c: Nailify.
21321	* mpn/generic/lshift.c: Nailify.
21322	* mpn/generic/rshift.c: Likewise.
21323	* mpn/generic/add_n.c: Nailify.  Revamp non-nail code.
21324	* mpn/generic/sub_n.c: Likewise.
21325	* mpn/generic/mul_1.c: Likewise.
21326	* mpn/generic/addmul_1.c: Likewise.
21327	* mpn/generic/submul_1.c: Likewise.
21328
213292002-04-02  Kevin Ryde  <kevin@swox.se>
21330
21331	* gmp-impl.h (BSWAP_LIMB_FETCH, BSWAP_LIMB_STORE) [powerpc]:
21332	Corrections to constraints, and restrict to bigendian.
21333
213342002-03-31  Kevin Ryde  <kevin@swox.se>
21335
21336	* tests/mpz/dive.c: Better diagnostics.
21337
21338	* tests/devel/try.c (mpn_get_str, mpn_umul_ppmm_r): New tests.
21339
21340	* tests/misc.c, tests/tests.h (byte_diff_lowest, byte_diff_highest):
21341	New functions.
21342
21343	* tests/t-bswap.c: New file.
21344	* tests/Makefile.am (check_PROGRAMS): Add it.
21345
21346	* tests/mpn/t-aors_1.c, tests/mpn/t-iord_u.c: Add nails support.
21347
21348	* gmp-impl.h (MPN_IORD_U) [x86]: Eliminate unnecessary jiord and iord,
21349	rename "n" to incr per generic versions, restrict to nails==0.
21350	(mpn_incr_u, mpn_decr_u): Add nails support.
21351	(GMP_NAIL_LOWBIT, GMP_NUMB_MAX): New macros.
21352
21353	* tests/trace.c, tests/tests.h (byte_trace, byte_tracen): New
21354	functions.
21355	* tests/trace.c: Handle NULL operands.
21356
21357	* tests/refmpn.c, tests/devel/try.c, tune/speed.c: Add preliminary
21358	nail support.
21359
21360	* tests/refmpn.c, test/tests.h (byte_overlap_p, refmpn_equal_anynail,
21361	refmpn_umul_ppmm_r, refmpn_udiv_qrnnd_r, refmpn_get_str,
21362	refmpn_bswap_limb, refmpn_random, refmpn_random2, refmpn_bswap_limb):
21363	New functions.
21364
21365	* gmp-impl.h, tests/refmpn.c (ASSERT_LIMB): Renamed from
21366	ASSERT_MP_LIMB_T.
21367
21368	* mpn/x86/*/*.asm, mpn/powerpc32/*/*.asm, mpn/powerpc64/*/*.asm: Put
21369	speeds after the copyright notice, so as to keep that clear.
21370
213712002-03-29  Kevin Ryde  <kevin@swox.se>
21372
21373	* configure.in (powerpc*-*-aix*): Correction to xlc -qarch selection,
21374	for 32-bit mode.
21375
213762002-03-28  Torbjorn Granlund  <tege@swox.com>
21377
21378	* mpn: Fix spacing in many files.
21379
21380	* mpn/generic/aorsmul_1.c: Split into addmul_1.c and submul_1.c.
21381	* mpn/generic/aors_n.c: Split into add_n.c and sub_n.c.
21382
21383	* mpn/pa64/add_n.asm: Trim another 0.125 cycle/limb.  Fix a comment.
21384	* mpn/pa64/sub_n.asm: Likewise.
21385
21386	* mpn/pa64/mul_1.asm: Change comclr, comb to proper forms cmpclr, cmpb.
21387	* mpn/pa64/addmul_1.asm: Likewise.
21388	* mpn/pa64/submul_1.asm: Likewise.
21389
213902002-03-28  Kevin Ryde  <kevin@swox.se>
21391
21392	* gmp.texi (Converting Integers): Fix type of exp in mpz_get_d_2exp,
21393	reported by epl@unimelb.edu.au.
21394	(References): Update Burnikel and Ziegler URL, reported by Keith
21395	Briggs.
21396
21397	* gmp-h.in, mp-h.in, configure.in, acinclude.m4: Remove __GMP from
21398	AC_SUBSTs, since autoconf says leading "_" in makefile variables is
21399	not portable.
21400
21401	* demos/expr/run-expr.c: Declare optarg, optind, opterr if necessary.
21402	* configure.in, demos/expr/expr-config-h.in: Configs for this.
21403
214042002-03-27  Torbjorn Granlund  <tege@swox.com>
21405
21406	* mpn/Makefile.am (TARG_DIST): Remove pa64w and hppa, add pa32.
21407
21408	* configure.in (path_20w): Remove pa64w.
21409
21410	* mpn/pa64/udiv_qrnnd.asm: Tweak for PA8000 performance comparative to
21411	that on PA8500.
21412
214132002-03-26  Torbjorn Granlund  <tege@swox.com>
21414
21415	* mpn/pa32: New name for mpn/hppa.
21416	* configure.in: Corresponding changes.
21417
21418	* mpn/pa64/umul_ppmm.asm: New file, generalized for both 2.0N and 2.0W.
21419	* mpn/pa64/umul_ppmm.S: Remove.
21420
21421	* mpn/pa64/udiv_qrnnd.asm: Generalize for both 2.0N and 2.0W.
21422	* mpn/pa64w/udiv_qrnnd.asm: Remove.
21423
214242002-03-26  Kevin Ryde  <kevin@swox.se>
21425
21426	* mpfr/tests/tdiv.c, mpfr/tests/tui_div.c: Don't depend on nan and inf
21427	handling in "double", for the benefit of alpha.
21428
21429	* configure (hppa2.0w): Set path to "pa64w pa64".
21430
21431	* acinclude.m4, configure.in (GMP_C_INLINE): New macro.
21432	* acinclude.m4 (GMP_H_EXTERN_INLINE): Use it, and fix "yes" handling.
21433
214342002-03-25  Torbjorn Granlund  <tege@swox.com>
21435
21436	* mpn/pa64w/add_n.s: Remove.
21437	* mpn/pa64w/sub_n.s: Remove.
21438	* mpn/pa64w/lshift.s: Remove.
21439	* mpn/pa64w/rshift.s: Remove.
21440	* mpn/pa64w/mul_1.S: Remove.
21441	* mpn/pa64w/addmul_1.S: Remove.
21442	* mpn/pa64w/submul_1.S: Remove.
21443	* mpn/pa64w/sqr_diagonal.asm: Remove.
21444
21445	* mpn/pa64/mul_1.asm: New file with twice faster code; generalized
21446	for both 2.0N and 2.0W.
21447	* mpn/pa64/submul_1.asm: Likewise.
21448	* mpn/pa64/mul_1.S: Remove.
21449	* mpn/pa64/submul_1.S: Remove.
21450
21451	* mpn/pa64/sqr_diagonal.asm: Generalize for both 2.0N and 2.0W.
21452
21453	* mpn/pa64/add_n.asm: New file, generalized for both 2.0N and 2.0W.
21454	* mpn/pa64/sub_n.asm: Likewise.
21455	* mpn/pa64/lshift.asm: Likewise.
21456	* mpn/pa64/rshift.asm: Likewise.
21457	* mpn/pa64/add_n.s: Remove.
21458	* mpn/pa64/sub_n.s: Remove.
21459	* mpn/pa64/lshift.s: Remove.
21460	* mpn/pa64/rshift.s: Remove.
21461
214622002-03-24  Kevin Ryde  <kevin@swox.se>
21463
21464	* gmp-impl.h (BSWAP_LIMB_FETCH, BSWAP_LIMB_STORE): New macros.
21465	* mpz/inp_raw.c, mpz/out_raw.c: Use them.
21466	* acconfig.h (HAVE_HOST_CPU): Add some powerpc types.
21467
21468	* mpn/powerpc32/750/com_n.asm: New file.
21469
21470	* mpfr/tests/tout_str.c: Disable random tests, since they fail on
21471	alphaev56-unknown-freebsd4.1 and do nothing by default.
21472
21473	* mpfr/tests/tsqrt.c: Don't depend on nan, inf or -0 in "double", for
21474	the benefit of alpha.
21475	* mpfr/sqrt.c: Clear nan flag on -0.
21476
21477	* demos/factorize.c: Use mpn_random() instead of random(), to avoid
21478	portability problems.
21479
21480	* demos/isprime.c (print_usage_and_exit): Declare as "void" to avoid
21481	warnings.
21482
21483	* demos/pexpr.c (setup_error_handler): Corrections to sigstack code.
21484
21485	* demos/calc/calc.y: Add some `;'s to make bison 1.34 happy.
21486
214872002-03-23  Torbjorn Granlund  <tege@swox.com>
21488
21489	* mpn/pa64/addmul_1.asm: New file with twice faster code; generalized
21490	for both 2.0N and 2.0W.
21491
214922002-03-22  Kevin Ryde  <kevin@swox.se>
21493
21494	* tune/time.c: Add SGI hardware counter measuring method, change some
21495	abort()s into ASSERT_FAIL()s.
21496
21497	* configure.in (AC_CHECK_HEADERS): Add fcntl.h and sys/syssgi.h.
21498	(AC_CHECK_FUNCS): Add syssgi.
21499
21500	* configure.in, mpfr/Makefile.am, mpfr/tests/Makefile.am: Use
21501	-mieee-with-inexact or -ieee_with_inexact for mpfr on alpha, so
21502	denorms work.
21503
21504	* mpfr/isinteger.c: Fix a memory leak.
21505
215062002-03-21  Torbjorn Granlund  <tege@swox.com>
21507
21508	* tune/speed.c (struct choice_t): Make `r' an mp_limb_t.
21509
215102002-03-21  Kevin Ryde  <kevin@swox.se>
21511
21512	* configure.in (HAVE_LIMB_BIG_ENDIAN, HAVE_LIMB_LITTLE_ENDIAN): Use an
21513	AH_VERBATIM and better explanation.
21514	* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Similarly for the HAVE_DOUBLE
21515	constants.
21516
21517	* gmp.texi (Number Theoretic Functions): Clarify sign of GCD returned
21518	by mpz_gcdext.
21519
21520	* demos/pexpr.c, demos/pexpr-config-h.in, configure.in: Use an
21521	autoconf test for stack_t.
21522
21523	* configure.in, gmp-h.in, mp-h.in, macos/configure, tests/mpz/reuse.c,
21524	tests/mpf/reuse.c: Use __GMP_LIBGMP_DLL to enable windows declspec,
21525	don't require _WIN32 (etc), remove __GMP_LIBGMP_SHARED and
21526	__GMP_LIBGMP_STATIC.
21527
21528	* gmp-impl.h (mp_bases): Add __GMP_DECLSPEC, for the benefit of
21529	tests/t-constants.c.
21530
21531	* tune/many.pl, tune/speed.h: Remove suffix hack for back.asm.
21532
215332002-03-21  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
21534
21535	* mpfr/sin_cos.c (mpfr_sin_cos): New file.
21536	* mpfr/mpfr.h, mpfr/mpfr.texi, mpfr/Makefile.am: Add it.
21537	* mpfr/tan.c: Fix sign in 2nd and 4th quadrants.
21538
21539	* mpfr/log10.c: Fix hangs on certain inputs.
21540
215412002-03-20  Torbjorn Granlund  <tege@swox.com>
21542
21543	* demos/pexpr.c (setup_error_handler): Declare `s', the first
21544	sigaltstack parameter, using `stack_t' just on AIX.
21545
215462002-03-19  Torbjorn Granlund  <tege@swox.com>
21547
21548	* mpn/powerpc32/mul_1.asm: Use free caller-saves registers instead
21549	of the callee-saves r30 and r31.
21550
215512002-03-19  Kevin Ryde  <kevin@swox.se>
21552
21553	* tune/freq.c (freq_proc_cpuinfo): Recognise powerpc "clock", where
21554	previously got the wrong result from "bogomips".
21555
21556	* mpn/powerpc32/add_n.asm, mpn/powerpc32/sub_n.asm: Rewrite, faster on
21557	750, and smaller too.
21558	* mpn/powerpc32/*.asm: Use L(), add some measured speeds.
21559
21560	* longlong.h (count_trailing_zeros) [vax]: Add a version using ffs,
21561	but commented out.
21562
215632002-03-17  Kevin Ryde  <kevin@swox.se>
21564
21565	* tune/speed.c, tune/speed.h, tune/common.c, many.pl: Use optional
21566	".r" to specify operand overlaps for mpn_add_n, mpn_sub_n and logops.
21567	Remove mpn_add_n_inplace and mpn_add_n_self.
21568	* tune/many.pl: Fix MULFUNC_PROLOGUE parsing.
21569
21570	* gmp.texi (Known Build Problems): Note `make' problem with long
21571	libgmp.la dependencies list.
21572
21573	* printf/doprnt.c, scanf/doscan.c (%zn): Remove test of non-existent
21574	HAVE_SIZE_T, just use size_t unconditionally.
21575	* printf/doprnt.c (%zd etc): Fix 'z' type parsing.
21576	* tests/misc/t-printf.c, tests/misc/t-scanf.c: More tests.
21577
21578	* configure.in: Use AC_COPYRIGHT.
21579	Add m4_pattern_allow(GMP_MPARAM_H_SUGGEST).
21580
21581	* tune/Makefile.am (libdummy.la): Remove this, sqr_basecase.c already
21582	gets an ansi2knr rule from nodist_tuneup_SOURCES.
21583
21584	* longlong.h (count_leading_zeros) [pentiumpro gcc<3]: Test
21585	HAVE_HOST_CPU_i686 too.
21586
21587	* mpz/out_raw.c (HTON_LIMB_STORE): Fix a typo in big endian #if.
21588
215892002-03-14  Kevin Ryde  <kevin@swox.se>
21590
21591	* mpn/x86/pentium/com_n.asm, mpn/x86/pentium/logops_n.asm,
21592	mpn/x86/k6/mmx/com_n.asm: Add nails support.
21593
21594	* texinfo.tex: Update to 2002-03-01.06 (per texinfo 4.1).
21595	* gmp.texi (@ma): Remove, @math does this now.
21596
21597	* mpfr/tests/reuse.c: Clear op1 and op2 flags only in their respective
21598	outer loops.
21599
21600	* configure.in (--enable-cxx): Correction to the default stated in the
21601	help string.
21602	(power*-*-aix*, not powerpc): Use aix.m4, don't run
21603	GMP_ASM_POWERPC_R_REGISTERS or use powerpc-defs.m4.
21604
216052002-03-13  Torbjorn Granlund  <tege@swox.com>
21606
21607	* mpn/sparc32/gmp-mparam.h: New file.
21608
216092002-03-13  Kevin Ryde  <kevin@swox.se>
21610
21611	* demos/expr/exprfr.c: More mpfr functions, corrections to agm, cos,
21612	sin, rename log2 constant to loge2 to make room for log2 function.
21613	* demos/expr/t-expr.c: More tests.
21614
21615	* mpz/inp_raw.c (NTOH_LIMB_FETCH) [generic 16bit]: Remove spurious "+".
21616
21617	* mpfr/acos.c: Avoid a memory leak for certain operands.
21618
21619	* acinclude.m4, configure.in (GMP_C_DOUBLE_FORMAT): New macro.
21620
21621	* acinclude.m4 (GMP_HPC_HPPA_2_0, GMP_ASM_UNDERSCORE,
21622	GMP_ASM_ALIGN_LOG, GMP_ASM_LSYM_PREFIX, GMP_ASM_W32, GMP_ASM_X86_MMX):
21623	Change ac_objext to OBJEXT, which is the documented variable.
21624
21625	* config.guess (powerpc*-*-*): Use #ifdef on constants POWER_630 etc
21626	in the AIX test, since old versions don't have them all.
21627
216282002-03-11  Kevin Ryde  <kevin@swox.se>
21629
21630	* configure.in (LIBC211): New AC_DEFINE, for mpfr.
21631
21632	* configure.in (mips*-*-*): Support ABI=o32 on irix 6, allow gcc 2.7.2
21633	to fall back on it, but detect it doesn't work with gcc 2.95.  Use
21634	single mips-defs.m4 for both mips32 and mips64.
21635	* acinclude.m4 (GMP_GCC_MIPS_O32): New macro.
21636	* mpn/mips32/mips-defs.m4: Renamed from mips.m4.
21637	* mpn/mips64/mips.m4: Remove (was a copy of mips32/mips.m4).
21638
21639	* mpn/powerpc32/750: New directory.
21640	* configure.in (powerpc740, powerpc750, powerpc7400): Use it.
21641	* mpn/powerpc32/750/gmp-mparam.h: New file.
21642
21643	* config.sub, gmp.texi (ultrasparc1): Remove this, just use plain
21644	"ultrasparc".
21645
216462002-03-10  Kevin Ryde  <kevin@swox.se>
21647
21648	* mpfr: Update to 20020301, except internal_ceil_exp2.c,
21649	internal_ceil_log2.c, internal_floor_log2.c renamed to i_ceil_exp2.c,
21650	i_ceil_log2.c, i_floor_log2.c to be unique in DOS 8.3.  And sqrtrem.c
21651	removed since no longer required.
21652	* mpfr/mpfr.texi: Fix some formatting.
21653	* mpfr/tests/reuse.c: Patch by Paul to fix test4 variable handling.
21654	* mpfr/sinh.c: Patch by Paul to fix err calculation when t==0.
21655	* mpfr/tests/tget_d.c: Disable until portability of rnd_mode.c can be
21656	sorted out.
21657
21658	* configure.in (powerpc*-*-*): Separate gcc and xlc cpu flags setups
21659	for clarity.
21660
21661	* longlong.h (count_leading_zeros, count_trailing_zeros) [x86_64]: New
21662	macros.
21663
216642002-03-07  Kevin Ryde  <kevin@swox.se>
21665
21666	* gmp.texi (Build Options): Note all the ultrasparcs accepted.
21667	(Language Bindings): Add Math::BigInt::GMP.
21668
21669	* config.sub (ultrasparc2i): New cpu type.
21670	* config.guess (sparc-*-*, sparc64-*-*): Add some exact CPU detection.
21671
216722002-03-05  Kevin Ryde  <kevin@swox.se>
21673
21674	* longlong.h (count_leading_zeros, count_trailing_zeros) [alphaev67,
21675	alphaev68]: Use ctlz and cttz insns (as per gcc longlong.h).
21676	(count_leading_zeros) [sparclite]: Fix parameter order (as per gcc
21677	longlong.h).
21678	* acconfig.h (HAVE_HOST_CPU_alphaev68): New define.
21679
21680	* config.guess [i?86-*-*]: Suppress error messages if compiler not
21681	found or test program won't run.
21682	[rs6000-*-*, powerpc-*-*]: Force code alignment for mfpvr test.
21683
216842002-03-04  Torbjorn Granlund  <tege@swox.com>
21685
21686	* mpn/generic/pow_1.c: New file.
21687
216882002-03-03  Kevin Ryde  <kevin@swox.se>
21689
21690	* gmp.texi (Build Options): Note compiler must be able to fully link,
21691	add alphapca57 and alphaev68, give a clearer example of MPN_PATH
21692	(Debugging): Add notes on valgrind.
21693	(C++ Formatted Output): Clarify mpf showbase handling, in particular
21694	note "00.4" in octal.
21695
21696	* printf/doprntf.c: Do a showbase on octal float fractions, for
21697	instance "00.4" where previously it gave "0.4".
21698	* tests/cxx/t-ostream.cc: Update.
21699
21700	* gmp-h.in, mp-h.in (__GMP_DECLSPEC, __GMP_DECLSPEC_XX): Test
21701	__WIN32__ for Borland C, reported by "delta trinity".
21702
21703	* gmp-h.in, mp-h.in: Use <cstddef> for size_t under C++, suggested by
21704	Hans Aberg some time ago.
21705	* gmp-h.in (<iosfwd>): Move to top of file for clarity.
21706
21707	* Makefile.am (libgmpxx_la_SOURCES): Use dummy.cc to force C++.
21708	(CXX_OBJECTS): Add osfuns$U.lo.
21709	* dummy.cc: New file.
21710	* cxx/Makefile.am (INCLUDES): Use __GMP_WITHIN_GMPXX.
21711	(libcxx_la_SOURCES): Add osfuns.cc.
21712	* gmp-h.in (__GMP_DECLSPEC_XX): New define, use it on libgmpxx funs.
21713	* gmp-impl.h: Add __GMP_DECLSPEC to libgmp functions used by libgmpxx.
21714
21715	* longlong.h (COUNT_TRAILING_ZEROS_TIME): Remove, no longer used.
21716
21717	* gmp-impl.h (MPN_SIZEINBASE, MPN_SIZEINBASE_16): Correction to
21718	__totbits for nails.
21719
21720	* gmp-impl.h (JACOBI_LS0): Test size before limb, to pacify valgrind.
21721	(JACOBI_0LS): Ditto, and fix parens around arguments.
21722
21723	* mpn/x86/x86-defs.m4 (call_mcount): Add a counter to make data labels
21724	unique, since simplified L() scheme no longer gives that effect.
21725	(notl_or_xorl_GMP_NUMB_MASK): New macro.
21726	Add m4_assert_numargs in a few places.
21727
21728	* configure.in (*sparc*): Fix cycle counter setups for ABI=64.
21729
217302002-02-28  Torbjorn Granlund  <tege@swox.com>
21731
21732	* mpn/vax/gmp-mparam.h: New file.
21733
217342002-02-28  Kevin Ryde  <kevin@swox.se>
21735
21736	* gmp-h.in (gmp_errno, gmp_version): Move into extern "C" block,
21737	reported by librik@panix.com.
21738
21739	* gmp-h.in, mp-h.in (__GMP_DECLSPEC_EXPORT, __GMP_DECLSPEC_IMPORT):
21740	Use __declspec(dllexport) and __declspec(dllimport) on Borland.
21741	* gmp-h.in (_GMP_H_HAVE_FILE): Test __STDIO_H for Borland.
21742	Reported by "delta trinity".
21743
21744	* gmp-impl.h (va_copy): Fall back on memcpy, not "=".
21745
21746	* mpn/generic/pre_mod_1.c: Add a comment about obsolescence.
21747
21748	* tune/time.c (MICROSECONDS_P): Don't trust time differences of 1
21749	microsecond.
21750
21751	* tests/cxx/t-ostream.cc: Use "const char *" not just "char *" for
21752	test data strings, avoids warnings on Sun CC.
21753
217542002-02-27  Torbjorn Granlund  <tege@swox.com>
21755
21756	* configure.in: For sparc under solaris2.[7-9], pass -fsimple=1 to
21757	disable some crazy -fast optimizations.
21758
217592002-02-25  Torbjorn Granlund  <tege@swox.com>
21760
21761	* configure.in: For sparc under solaris2.[7-9], pass -fns=no to enable
21762	denorm handling under -fast.
21763
217642002-02-25  Kevin Ryde  <kevin@swox.se>
21765
21766	* configure.in (alpha*-*-*): Rearrange -mcpu selection for gcc,
21767	provide an ev67 -> ev6 fallback.  Fix -arch,-tune selection for DEC C.
21768	Allow ~ for space in optional options lists.
21769
21770	* tune/tuneup.c (tune_preinv_divrem_1): Compare against an assembler
21771	mpn_divrem_1 if it exists, not the generic C mpn_divrem_1_div.
21772	(tune_preinv_mod_1): Ditto with mpn_mod_1.
21773
21774	* tune/time.c (DIFF_SECS_ROUTINE): Eliminate the unused "type"
21775	parameter, try to make the code a bit clearer.
21776
21777	* tune/freq.c: Reduce the period measured for cycles versus
21778	gettimeofday, add cycles versus microsecond getrusage.
21779
21780	* mpz/array_init.c: "i" should be mp_size_t, noticed by E. Khong.
21781
217822002-02-24  Torbjorn Granlund  <tege@swox.com>
21783
21784	* configure.in: For sparc under solaris2.[7-9], pass -fast instead of
21785	other optimization options.
21786
217872002-02-23  Kevin Ryde  <kevin@swox.se>
21788
21789	* mpn/asm-defs.m4 (GMP_NUMB_MASK): New macro.
21790	(PROLOGUE, EPILOGUE): Relax quoting for the benefit of tune/many.pl
21791	when GSYM_PREFIX non-empty.
21792
21793	* tune/time.c, tune/speed.h (speed_time_init): Include clock tick
21794	period in speed_time_string.
21795	* tune/time.c, configure.in (clock_gettime): New measuring method.
21796
21797	* tune/many.pl: Add -DHAVE_NATIVE_mpn_foo to C objects, to avoid
21798	conflicts with a macro version in gmp-impl.h, eg. mpn_com_n.
21799
218002002-02-22  Torbjorn Granlund  <tege@swox.com>
21801
21802	* demos/pexpr.c: Increase RLIMIT_STACK to 4Mibyte.
21803
218042002-02-22  Kevin Ryde  <kevin@swox.se>
21805
21806	* tune/tuneup.c: Don't confuse gcc with mipspro cc in diagnostic.
21807
218082002-02-20  Torbjorn Granlund  <tege@swox.com>
21809
21810	* configure.in (mips*-*-irix[6789]*]): Set `extra_functions_n32', not
21811	`extra_functions'.
21812
21813	* printf/doprnt.c: Conditionally include inttypes.h.
21814	* printf/repl-vsnprintf.c: Likewise.
21815	* scanf/doscan.c: Likewise.
21816
218172002-02-20  Kevin Ryde  <kevin@swox.se>
21818
21819	* mpn/x86/k7/mmx/com_n.asm: New file.
21820
21821	* mpz/n_pow_ui.c (SWAP_RP_TP): Use ASSERT_CODE on ralloc and talloc,
21822	to ensure they needn't live past the initial allocs in a normal build.
21823
21824	* mpn/generic/mod_34lsub1.c: Note this is for internal use.
21825
218262002-02-19  Torbjorn Granlund  <tege@swox.com>
21827
21828	* Clean up *_THRESHOLD names.  Many files affected.
21829
21830	* mpn/mips32: Asm-ify 32-bit mips code.
21831	Move files from `mips2' to `mips32' directory.
21832	* mpn/mips64: Move files from `mips3' to `mips64' directory.
21833	* configure.in: Change `mips2' => `mips32' and `mips3' => `mips64'.
21834
218352002-02-19  Kevin Ryde  <kevin@swox.se>
21836
21837	* acinclude.m4, configure.in (GMP_PROG_LEX): New macro.
21838
21839	* tune/tuneup.c (one): Start next threshold at a max of previous ones,
21840	in order to get a good starting point for TOOM3_SQR_THRESHOLD if
21841	KARATSUBA_SQR_THRESHOLD is 0 (ie. using mpn_mul_basecase only).
21842
21843	* configure.in, tune/tuneup.c (GMP_MPARAM_H_SUGGEST): New AC_DEFINE
21844	replacing GMP_MPARAM_H_FILENAME.  Suggest a new file in a cpu specific
21845	subdirectory rather than mpn/generic.
21846
21847	* acinclude.m4 (POWERPC64_PATTERN): New macro.
21848	* configure.in (powerpc*-*-*): Use it.
21849	(powerpc*-*-*): Use umul in 32L and aix64.
21850	(mips*-*-*): Use umul, 32 and 64 bit versions.
21851
218522002-02-18  Torbjorn Granlund  <tege@swox.com>
21853
21854	* longlong.h: Add basic x86-64 support.
21855
218562002-02-17  Torbjorn Granlund  <tege@swox.com>
21857
21858	* demos/pexpr.c: Support `-X' for upper case hex, make `-x' output
21859	lower case hex.
21860
21861	* mpn/mips2/umul.s: Make it actually work.
21862	* mpn/mips3/umul.asm: New file.
21863
21864	* mpn/mips2/gmp-mparam.h: New file.
21865
218662002-02-16  Torbjorn Granlund  <tege@swox.com>
21867
21868	* mpn/generic/get_str.c (mpn_sb_get_str): Round frac upwards after
21869	umul_ppmm calls.
21870
218712002-02-16  Kevin Ryde  <kevin@swox.se>
21872
21873	* config.guess (alpha-*-*): Do alpha exact cpu probes on any system,
21874	and only if configfsf.guess gives a plain "alpha".
21875
21876	* acinclude.m4 (GMP_PROG_CC_WORKS): Detect a gcc 3.0.3 powerpc64
21877	linker invocation problem.
21878
218792002-02-15  Torbjorn Granlund  <tege@swox.com>
21880
21881	* mpn/generic/get_str.c (mpn_sb_get_str): For base 10, develop initial
21882	digits using umul_ppmm, then switch to plain multiplication.
21883
21884	* config.guess: Rewrite Alpha subtype detection code for *bsd systems.
21885
218862002-02-15  Kevin Ryde  <kevin@swox.se>
21887
21888	* gmp.texi (Build Options): Note powerpc exact cpu types.
21889	(Debugging): Advertise DEBUG in memory.c.
21890
21891	* config.sub, config.guess: Add some powerpc exact cpus.
21892	* configure.in: Add configs for them.
21893
21894	* memory.c [__NeXT__]: Remove unused #define of "static".
21895	(__gmp_default_allocate, __gmp_default_reallocate): Print size if
21896	allocation fails, don't use perror.
21897
21898	* gmp-h.in: g++ 3 demands __GMP_NOTHROW is before other attributes.
21899
219002002-02-14  Torbjorn Granlund  <tege@swox.com>
21901
21902	* mpn/alpha/mul_1.asm: Fix typo preventing build on T3E systems.
21903
219042002-02-14  Kevin Ryde  <kevin@swox.se>
21905
21906	* tune/tuneup.c (tune_set_str): Increase max_size, for the benefit of
21907	alpha.
21908
21909	* macos/README: Bug reports to bug-gmp@gnu.org, clarify MacOS X a bit.
21910
21911	* mpn/generic/gcdext.c [WANT_GCDEXT_ONE_STEP]: Add missing TMP_FREE.
21912
21913	* tune/speed.c, tune/tuneup.c: Allow for speed_cycletime of 0.0 in
21914	some diagnostic printouts.
21915	* tune/time.c (speed_cycletime): Note can be 0.0.
21916
219172002-02-12  Torbjorn Granlund  <tege@swox.com>
21918
21919	* mpn/alpha/mul_1.asm: Add mpn_mul_1c entry.
21920
21921	* mpn/pa64w/sqr_diagonal.asm: Use L() for labels.
21922
219232002-02-11  Torbjorn Granlund  <tege@swox.com>
21924
21925	* mpn/generic/get_str.c (mpn_sb_get_str): Change declaration of rp to
21926	accommodate tuneup compiles.
21927
219282002-02-11  Kevin Ryde  <kevin@swox.se>
21929
21930	* mpn/alpha/default.m4, mpn/alpha/unicos.m4 (PROLOGUE_cpu): Add
21931	noalign option.
21932	* mpn/alpha/default.m4 (PROLOGUE_cpu): use ALIGN instead of ".align".
21933
21934	* gmp.texi (Debugging): Notes on Checker.
21935	(Other Multiplication): Move note on float FFTs to here.
21936	(Assembler Floating Point): New text and revisions by Torbjorn,
21937	picture formatting by me.
21938	Simplify tex pictures elsewhere a bit, share heights, eliminate some
21939	gaps at line joins.
21940
219412002-02-11  Torbjorn Granlund  <tege@swox.com>
21942
21943	* mpn/generic/get_str.c (mpn_sb_get_str): Rewrite to generate fraction
21944	limbs and use multiplication for digit development.  Trim allocation of
21945	buf.  Get rid of code for !USE_MULTILIMB.
21946
219472002-02-10  Torbjorn Granlund  <tege@swox.com>
21948
21949	* mpn/generic/set_str.c (mpn_set_str): Undo this:
21950	Change invocations of mpn_add_1 to instead use mpn_incr_u.
21951
21952	* tests/mpz/convert.c: Free str only after it is used in error message.
21953
21954	* mpn/generic/get_str.c (mpn_sb_get_str): Combine tail code for base 10
21955	and generic bases.
21956
21957	* mpn/mp_bases.c: Add entries for base 256.  Remove __ prefix from
21958	table name.
21959	* gmp-impl.h (__mp_bases): Remove superfluous mp_ part of name, making
21960	it __gmpn_bases instead of __gmpn_mp_bases.
21961	(mp_bases): New #define.
21962	* tune/speed.h (SPEED_ROUTINE_MPN_SET_STR): Allow bases up to 256.
21963	(SPEED_ROUTINE_MPN_GET_STR): Likewise.
21964
219652002-02-09  Torbjorn Granlund  <tege@swox.com>
21966
21967	* mpn/generic/set_str.c (mpn_set_str): Use mpn_mul_1c if available.
21968	Change invocations of mpn_add_1 to instead use mpn_incr_u.
21969
219702002-02-09  Kevin Ryde  <kevin@swox.se>
21971
21972	* mpz/array_init.c, mpz/cfdiv_q_2exp.c, mpz/cfdiv_r_2exp.c,
21973	mpz/cong_2exp.c, mpz/divis_2exp.c, mpz/hamdist.c, mpz/init2.c,
21974	mpz/mul_2exp.c, mpz/realloc2.c, mpz/scan0.c, mpz/scan1.c,
21975	mpz/setbit.c, mpz/tdiv_q_2exp.c, mpz/tdiv_r_2exp.c, mpz/tstbit.c,
21976	mpz/urandomb.c: Use GMP_NUMB_BITS.
21977
21978	* mpz/iset_str.c [__CHECKER__]: Store a dummy value to the low limb to
21979	stop it appearing uninitialized.
21980
21981	* gmp-h.in (__GMP_NOTHROW): New macro.
21982	(mp_set_memory_functions, mpz_cmp, mpz_cmp_si, mpz_cmp_ui, mpz_cmpabs,
21983	mpz_cmpabs_ui, mpz_congruent_2exp_p, mpz_divisible_2exp_p,
21984	mpz_fits_sint_p, mpz_fits_slong_p, mpz_fits_sshort_p, mpz_fits_uint_p,
21985	mpz_fits_ulong_p, mpz_fits_ushort_p, mpz_get_si, mpz_get_ui,
21986	mpz_getlimbn, mpz_hamdist, mpz_popcount, mpz_scan0, mpz_scan1,
21987	mpz_size, mpz_sizeinbase, mpz_swap, mpz_tstbit, mpq_equal, mpq_swap,
21988	mpf_cmp, mpf_cmp_si, mpf_cmp_ui, mpf_fits_sint_p, mpf_fits_slong_p,
21989	mpf_fits_sshort_p, mpf_fits_uint_p, mpf_fits_ulong_p,
21990	mpf_fits_ushort_p, mpf_get_default_prec, mpf_get_prec, mpf_get_si,
21991	mpf_get_ui, mpf_integer_p, mpf_set_default_prec, mpf_set_prec_raw,
21992	mpf_size, mpf_swap, mpn_add_1, mpn_cmp, mpn_hamdist, mpn_popcount,
21993	mpn_sub_1): Use it.
21994
21995	* gmp-impl.h (MPN_SIZEINBASE, MPN_SIZEINBASE_16): New macros from
21996	mpn_sizeinbase, and use GMP_NUMB_BITS.
21997	* mpz/get_str.c, mpz/sizeinbase.c, mpbsd/mout.c, tune/speed.h: Use
21998	MPN_SIZEINBASE.
21999	* mpbsd/mtox.c: Use MPN_SIZEINBASE_16.
22000
22001	* configure.in, mpn/Makefile.am, gmp-impl.h (mpn_sizeinbase): Remove.
22002	* mpn/generic/sizeinbase.c: Remove file.
22003
22004	* gmp-impl.h (MPN_GET_STR_SIZE): Remove.
22005	* tests/mpn/t-g_str_size.c: Remove file.
22006	* tests/mpn/Makefile.am: Update.
22007
22008	* Makefile.am (dist-hook): Don't distribute cvs merge ".#" files.
22009
220102002-02-08  Torbjorn Granlund  <tege@swox.com>
22011
22012	* configure.in: Override extra_functions for all sparcv8 systems, not
22013	just supersparc.
22014
220152002-02-06  Kevin Ryde  <kevin@swox.se>
22016
22017	* tune/tuneup.c (tune_mul, tune_sqr): Disable FFTs until tuned.
22018	* tune/speed.h (SPEED_ROUTINE_MPN_SET_STR): Fix memory clobber in
22019	destination cache priming.
22020
22021	* printf/doprnt.c: Fix parsing of %s and %p conversions.
22022	* tests/misc/t-printf.c (check_misc): Add some tests.
22023
220242002-02-03  Torbjorn Granlund  <tege@swox.com>
22025
22026	* mpn/sparc32/v8/udiv.asm: New file, from v8/supersparc.
22027
22028	* mpn/generic/set_str.c: Rename indigits_per_limb => chars_per_limb.
22029	Remove redundant chars_per_limb.  Reverse 4 loops in basecase code for
22030	speed.  Use MP_BASES_CHARS_PER_LIMB_10.
22031
220322002-02-03  Kevin Ryde  <kevin@swox.se>
22033
22034	* acinclude.m4 (GMP_PROG_NM): Ensure -B or -p get used when doing a
22035	cross compile with the native nm, helps OSF for instance.
22036	(GMP_ASM_LSYM_PREFIX): Remove ".byte 0" for the benefit of irix 6,
22037	allow "N" from nm for OSF, allow for "t" for other systems, but prefer
22038	no mention of the symbol at all.
22039
22040	* tune/tuneup.c (print_define_remark): New function.
22041	Turn some "#if"s into plain "if"s.
22042
22043	* tune/tuneup.c, gmp-impl.h, tune/Makefile.am
22044	(GET_STR_BASECASE_THRESHOLD, GET_STR_PRECOMPUTE_THRESHOLD): Tune these.
22045	* mpn/generic/get_str.c [TUNE_PROGRAM_BUILD]: Cope with non-constant
22046	GET_STR_PRECOMPUTE_THRESHOLD.
22047
220482002-02-02  Torbjorn Granlund  <tege@swox.com>
22049
22050	* mpn/generic/get_str.c (mpn_get_str): Fix typo in a declaration.
22051
220522002-02-02  Kevin Ryde  <kevin@swox.se>
22053
22054	* mpn/generic/set_str.c: Use MP_PTR_SWAP and POW2_P, add __GMP_PROTO
22055	to convert_blocks prototype, disable SET_STR_BLOCK_SIZE sanity check.
22056
22057	* tune/set_strb.c, tune/set_strs.c: New files.
22058	* tune/speed.h, tune/speed.c, tune/common.c,tune/Makefile.am: Add them.
22059	* tune/tuneup.c: Tune SET_STR_THRESHOLD.
22060	(DEFAULT_MAX_SIZE): Renamed from MAX_SIZE, allow any param.max_size[].
22061
220622002-02-01  Torbjorn Granlund  <tege@swox.com>
22063
22064	* tests/mpz/convert.c: Increase operand size.  Add (yet disabled) code
22065	for testing with random strings.
22066
22067	* mpn/generic/get_str.c (mpn_get_str): Rewrite to become sub-quadratic.
22068	(mpn_dc_get_str, mpn_sb_get_str): New functions.
22069
220702002-01-31  Kevin Ryde  <kevin@swox.se>
22071
22072	* gmpxx.h (cmp): Renamed from "compare".
22073
22074	* configure.in (AC_C_BIGENDIAN): Don't abort when cross compiling.
22075	(PROLOGUE): Allow new style optional second parameter when grepping.
22076
22077	* acinclude.m4 (GMP_HPC_HPPA_2_0, GMP_ASM_UNDERSCORE,
22078	GMP_ASM_ALIGN_LOG, GMP_ASM_LSYM_PREFIX, GMP_ASM_W32, GMP_ASM_X86_MMX):
22079	Use $ac_objext for object filenames.
22080	(GMP_ASM_UNDERSCORE): Use CCAS to assemble.
22081
22082	* demos/pexpr-config-h.in: New file.
22083	* configure.in: Generate demos/pexpr-config.h.
22084	(AC_CHECK_FUNCS): Add clock, cputime, setrlimit, sigaction,
22085	sigaltstack, sigstack.
22086	* acinclude.m4 (GMP_SUBST_CHECK_FUNCS, GMP_SUBST_CHECK_HEADERS): New
22087	macros.
22088	* demos/pexpr.c: Use pexpr-config.h, not various #ifdefs.
22089	(setup_error_handler): Use signal if sigaction not available, allow
22090	for SIGBUS missing on mingw.
22091	(main): Use time() for random seed if gettimeofday not available.
22092	(cleanup_and_exit): Move SIGFPE out of LIMIT_RESOURCE_USAGE.
22093
220942002-01-30  Torbjorn Granlund  <tege@swox.com>
22095
22096	* mpn/generic/set_str.c: Rewrite to become sub-quadratic.
22097	(convert_blocks): New function.
22098
220992002-01-30  Kevin Ryde  <kevin@swox.se>
22100
22101	* gmp-impl.h (GMP_NUMB_MASK, GMP_NAIL_MASK, GMP_NUMB_HIGHBIT,
22102	ASSERT_MPN, ASSERT_MP_LIMB_T): New macros.
22103
22104	* mpn/generic/fib2_ui.c: Use GMP_NUMB_BITS, simplify the data
22105	generator program, share __gmp_fib_table initializers between bit
22106	sizes, cope with bit sizes other than those specifically setup.
22107	* gmp-impl.h (FIB_TABLE_LIMIT, FIB_TABLE_LUCNUM_LIMIT): Corresponding
22108	rearrangement of conditionals.
22109	* tests/mpz/t-fib_ui.c (check_fib_table): New test.
22110
221112002-01-28  Kevin Ryde  <kevin@swox.se>
22112
22113	* mpz/set_si.c, mpz/iset_si.c: Store to _mp_d[0] unconditionally, use
22114	an expression for _mp_size.
22115
22116	* mpz/init.c, mpz/init2.c, mpz/iset.c, mpq/init.c [__CHECKER__]: Store
22117	dummy values to low limbs to stop them appearing uninitialized.
22118
221192002-01-26  Kevin Ryde  <kevin@swox.se>
22120
22121	* mpfr/mpfr-test.h (MAX, MIN, ABS): Use instead a patch from Paul and
22122	Vincent.
22123
221242002-01-24  Kevin Ryde  <kevin@swox.se>
22125
22126	* configure.in: Extra quoting to get argument help messages right.
22127
22128	* gmp.texi (Efficiency): Suggest hex or octal for input and output.
22129	(Formatted Output Strings): Mention "*" for width and precision.
22130
22131	* mpn/generic/sizeinbase.c: New file, adapted from mpz/sizeinbase.c.
22132	Use POW2_P, use __mp_bases[base].big_base for log2(base).
22133	* configure.in, mpn/Makefile.am: Add it.
22134	* gmp-impl.h: Add prototype.
22135	* mpz/sizeinbase.c, tune/speed.h, mpn/generic/get_str.c,
22136	mpz/get_str.c, mpbsd/mout.c, mpbsd/mtox.c: Use it.
22137	* mpz/get_str.c: Write directly to user buffer, skip at most one
22138	leading zero, eliminate special case for x==0.
22139	* mpbsd/mtox.c: Allocate exact result space at the start, eliminate
22140	special case for x==0.
22141	* mpbsd/mout.c: Only need to skip one high zero with mpn_sizeinbase.
22142
22143	* configure.in (--enable-nails): New option.
22144	(GMP_NAIL_BITS, GMP_LIMB_BITS, GMP_NUMB_BITS): New defines for gmp.h
22145	and config.m4.
22146	* gmp-h.in: Add templates.
22147
22148	* mpfr/mpfr-test.h (MAX, MIN, ABS): Use #ifndef to avoid a redefine
22149	error on AIX xlc.
22150
221512002-01-23  Torbjorn Granlund  <tege@swox.com>
22152
22153	* mpn/generic/get_str.c: Correct type of `out_len'.
22154
221552002-01-22  Kevin Ryde  <kevin@swox.se>
22156
22157	* mpn/generic/pre_divrem_1.c: Corrections to some ASSERTs.
22158
22159	* mpfr/mul_ui.c: Don't call mpn_lshift with 0 shift.
22160
22161	* mpfr/mpz_set_fr.c: Produce correct mpz_t for f==0.
22162
221632002-01-21  Torbjorn Granlund  <tege@swox.com>
22164
22165	* longlong.h (32-bit powerpc add_ssaaaa): Remove spurious commutative
22166	declaration.
22167	(64-bit powerpc add_ssaaaa): Likewise.
22168
221692002-01-20  Kevin Ryde  <kevin@swox.se>
22170
22171	* acinclude.m4 (GMP_FUNC_VSNPRINTF): Use %n to better detect sparc
22172	solaris 2.7 problems.
22173
221742002-01-19  Torbjorn Granlund  <tege@swox.com>
22175
22176	* demos/pexpr.c (mpz_eval_expr): Optimize s^rhs for -1 <= s <= 1.
22177	(cleanup_and_exit): Improve error message wording.
22178
221792002-01-19  Kevin Ryde  <kevin@swox.se>
22180
22181	* mpfr/mpfr.h (_PROTO): Use __GMP_PROTO, for compatibility with
22182	gmp-impl.h.
22183
221842002-01-17  Torbjorn Granlund  <tege@swox.com>
22185
22186	* mpfr/mpfr-test.h: Test "__hpux", not "hpux".  Mask off mrand48
22187	return value to 31 bits to work around sloppy mpfr #include practices.
22188
22189	* mpfr/tests/*.c: Use #include "", not <>, for gmp.h and mpfr.h.
22190	Make sure to #include mpfr-test.h from all files that use random().
22191
221922002-01-17  Kevin Ryde  <kevin@swox.se>
22193
22194	* gmp-impl.h (__GMP_REALLOCATE_FUNC_MAYBE_TYPE): New macro.
22195	* gmp-impl.h, mpz/get_str.c, mpz/out_raw.c, mpq/get_str.c,
22196	mpq/set_str.c, mpf/get_str.c, printf/asprntffuns.c, printf/doprnt.c,
22197	printf/repl-vsnprintf.c, printf/snprntffuns.c, scanf/doscan.c,
22198	mpbsd/mtox.c: Some fixes to compile as C++.
22199
22200	* mpn/generic/jacbase.c (JACOBI_BASE_METHOD): New tuned parameter,
22201	replacing COUNT_TRAILING_ZEROS_TIME test.  Add a third method too.
22202	* tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Add
22203	measuring of mpn_jacobi_base methods.
22204	* tune/jacbase1.c, tune/jacbase2.c, tune/jacbase3.c: New files.
22205	* tune/tuneup.c (JACOBI_BASE_METHOD): Tune this.
22206	* mpn/x86/*/gmp-mparam.h (COUNT_TRAILING_ZEROS_TIME): Remove macro.
22207
22208	* gmp-h.in: Use __gmp prefix on variables in inlines.
22209
22210	* gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR): Remove __i, unused.
22211
22212	* mpn/generic/mul_fft.c: Use HAVE_NATIVE_mpn_addsub_n, not ADDSUB.
22213	Use CNST_LIMB for some constants.
22214
222152002-01-15  Kevin Ryde  <kevin@swox.se>
22216
22217	* tests/mpbsd/Makefile.am: Add a convenience rule for ../libtests.la.
22218
22219	* printf/Makefile.am: libdummy.la should be in EXTRA_LTLIBRARIES.
22220
22221	* mpf/out_str.c: Use MPF_SIGNIFICANT_DIGITS, so mpf_out_str and
22222	mpf_get_str give the same for ndigits==0.
22223
22224	* mpfr/exceptions.c (mpfr_set_emin, mpfr_set_emax): Work around a
22225	powerpc64 gcc 3.0 -O2 bug.
22226
22227	* tests/memory.c, tests/tests.h (tests_memory_validate): New function.
22228
222292002-01-14  Kevin Ryde  <kevin@swox.se>
22230
22231	* mpn/generic/sb_divrem_mn.c, mpn/generic/divrem_1.c,
22232	mpn/generic/divrem_2.c, mpn/generic/mod_1.c: Don't use UMUL_TIME and
22233	UDIV_TIME, just default to preinv.
22234	* gmp-impl.h (USE_PREINV_DIVREM_1, USE_PREINV_MOD_1): Ditto.
22235	(DIVEXACT_1_THRESHOLD, MODEXACT_1_ODD_THRESHOLD): Don't use UMUL_TIME
22236	and UDIV_TIME, make default thresholds 0.
22237	(UDIV_NORM_PREINV_TIME, UDIV_UNNORM_PREINV_TIME): Remove macros.
22238	* mpn/x86/*/gmp-mparam.h (UMUL_TIME, UDIV_TIME,
22239	UDIV_NORM_PREINV_TIME): Remove macros.
22240
22241	* gmp.texi (Headers and Libraries): New section, being the header
22242	notes from "GMP Basics" and some new stuff.
22243	(Parameter Conventions): Notes on "const" parameters.
22244	(Formatted Output Strings): Add type N, tweak some wording.
22245
22246	* tests/refmpn.c (refmpn_divmod_1c): Avoid a bug in i386 gcc 3.0.
22247
222482002-01-12  Kevin Ryde  <kevin@swox.se>
22249
22250	* mpz/root.c: Add <stdlib.h>, for abort().
22251
22252	* mpfr/tests/Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr.
22253	* mpfr/mpfr.h, mpfr/mpfr-tests.h, reuse.c, tadd.c, tadd_ui.c, tagm.c,
22254	tatan.c, tcmp2.c, tcos.c, tdiv.c, tdiv_ui.c, teq.c, texp.c,
22255	tget_str.c, thyperbolic.c, tlog.c, tmul.c, tout_str.c, tpow.c,
22256	trandom.c, tset_z.c, tsin.c, tsqrt.c, tsqrt_ui.c, tsub_ui.c, ttan.c,
22257	tui_div.c: Fixes for K&R.
22258
22259	* tests/misc/t-scanf.c (check_misc, check_misc):
22260
22261	* tests/mpz/t-inp_str.c, tests/mpq/t-inp_str.c, tests/misc/t-scanf.c:
22262	Avoid strings in ASSERT, not enjoyed by K&R.
22263	* gmp-impl.h (ASSERT): Note this.
22264
22265	* tests/tests.h (refmpn_mod_34lsub1): Add __GMP_PROTO.
22266
22267	* mpbsd/Makefile.am: Avoid an automake problem with ansi2knr and
22268	sources in a different directory.
22269
22270	* printf/repl-vsnprintf.c: Test HAVE_LONG_DOUBLE for long double.
22271
22272	* mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add mod_34lsub1.c,
22273	mul_2.c, pre_divrem_1.c.
22274
22275	* gmp-h.in, gmp-impl.h (mpn_add_nc, mpn_addmul_1c, mpn_addsub_n,
22276	mpn_addsub_nc, mpn_divrem_1c, mpn_dump, mpn_mod_1c, mpn_mul_1c,
22277	mpn_mul_basecase, mpn_sqr_n, mpn_sqr_basecase, mpn_sub_nc,
22278	mpn_submul_1c): Move to gmp-impl.h, since they're undocumented.
22279
22280	* gmp-impl.h (mpn_reciprocal): Remove, unused.
22281
22282	* tune/many.pl (cntlz, cnttz): Use new SPEED_ROUTINE_COUNT_ZEROS.
22283
222842002-01-11  Kevin Ryde  <kevin@swox.se>
22285
22286	* mpn/hppa/*.asm, mpn/pa64/*.asm, mpn/pa64w/*.asm: Use L().
22287
222882002-01-08  Kevin Ryde  <kevin@swox.se>
22289
22290	* mpn/asm-defs.m4 (PROLOGUE, EPILOGUE): New scheme, optional function
22291	name to EPILOGUE, check for missing or wrong function name EPILOGUE.
22292	* mpn/alpha/unicos.m4, mpn/alpha/default.m4, mpn/m68k/m68k-defs.m4,
22293	mpn/mips3/mips.m4, mpn/ia64/default.m4, mpn/powerpc32/aix.m4,
22294	mpn/powerpc64/aix.m4, mpn/x86/x86-defs.m4: Consequent updates, add a
22295	few more asserts.
22296	* mpn/alpha/unicos.m4, mpn/alpha/default.m4, mpn/alpha/cntlz.asm,
22297	mpn/alpha/invert_limb.asm (PROLOGUE_GP): Change to an optional "gp"
22298	parameter on plain PROLOGUE.
22299
22300	* gmp.texi (Low-level Functions): mpn_get_str doesn't clobber an extra
22301	limb, and doesn't clobber at all for power of 2 bases.
22302	(Language Bindings): Add python gmpy.
22303
22304	* mpz/get_str.c: Determine realloc size arithmetically.
22305
22306	* mpbsd/mtox.c: Size memory block returned to actual space needed.
22307	* gmp.texi (BSD Compatible Functions): Describe this.
22308
22309	* mpz/get_str.c: Don't copy mpn_get_str input for power of 2 bases.
22310	* mpbsd/mtox.c: Ditto, and as a side effect avoid a memory leak from a
22311	missing TMP_FREE.
22312
22313	* mpz/get_str.c, mpbsd/mout.c: No longer need for +1 limb for
22314	mpn_get_str clobber.
22315
22316	* gmp-impl.h (MPN_GET_STR_SIZE): New macro.
22317	* mpn/generic/get_str.c, mpz/get_str.c, mpbsd/mout.c, mpbsd/mtox.c,
22318	tune/speed.h: Use it.
22319	* tests/mpn/t-g_str_size.c: New test.
22320	* tests/mpn/Makefile.am: Add it.
22321
22322	* gmp-impl.h (POW2_P): New macro.
22323	* mpn/generic/get_str.c, tests/misc.c: Use it.
22324
22325	* printf/doprnt.c: Add "N" for mpn, share some code between N, Q and Z.
22326	* tests/misc/t-printf.c: Add tests.
22327	* gmp-impl.h (ASSERT_CODE): New macro.
22328
22329	* tests/mpbsd/t-mtox.c: New test.
22330	* tests/mpbsd/Makefile.am: Add it.
22331	(allfuns_LDADD): Don't link against libgmp when testing everything in
22332	libmp can link.
22333
223342002-01-07  Torbjorn Granlund  <tege@swox.com>
22335
22336	* gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR): Rewrite generic versions.
22337
223382002-01-06  Kevin Ryde  <kevin@swox.se>
22339
22340	* mpn/generic/pre_divrem_1.c: Don't support size==0.
22341	* tests/devel/try.c: Update.
22342
22343	* mpn/generic/get_str.c: Add special case for base==10.
22344	* gmp-impl.h (MP_BASES_CHARS_PER_LIMB_10, MP_BASES_BIG_BASE_10,
22345	MP_BASES_BIG_BASE_INVERTED_10, MP_BASES_NORMALIZATION_STEPS_10): New
22346	constants.
22347	* tests/t-constants.c: Add checks.
22348	* mpn/mp_bases.c [GENERATE_TABLE]: Print defines for gmp-impl.h, print
22349	all standard bits-per-limb by default.
22350
22351	* demos/pexpr.c, demos/expr/expr.h, demos/expr/expr-impl.h: Use
22352	__GMP_PROTO.
22353
22354	* gmp-h.in (mpn_divexact_by3c): Remove variables from prototype, to
22355	keep out of application namespace.
22356
223572002-01-04  Torbjorn Granlund  <tege@swox.com>
22358
22359	* gmp-impl.h: Move _PROTO declaration to before its first usages.
22360
223612002-01-04  Kevin Ryde  <kevin@swox.se>
22362
22363	* gmp-h.in, mp-h.in, tests/tests.h: Rename _PROTO to __GMP_PROTO, and
22364	don't use #ifndef just define it ourselves.
22365	* gmp-impl.h: Provide _PROTO as an alias for __GMP_PROTO, to avoid big
22366	edits internally, for the moment.
22367
223682002-01-03  Torbjorn Granlund  <tege@swox.com>
22369
22370	* tune/speed.c (usage): Insert "\n\" into a string.
22371
223722001-12-30  Torbjorn Granlund  <tege@swox.com>
22373
22374	* mpn/pa64/udiv_qrnnd.c: Remove file.
22375	* mpn/pa64w/udiv_qrnnd.c: Remove file.
22376
22377	* gmp-impl.h (MPN_IORD_U): Change formatting (labels in pos 0, insns
22378	indented by tab).
22379	(MPN_INCR_U): Use "addl $1,foo; jc", not "incl foo; jz".
22380
22381	* gmp-impl.h (udiv_qrnnd_preinv): Use plain subtract, not sub_ddmmss,
22382	in one more case.
22383
223842001-12-30  Kevin Ryde  <kevin@swox.se>
22385
22386	* mpn/generic/get_str.c (udiv_qrnd_unnorm): New macro.
22387	Use "do while" for dig_per_u loop since it's non-zero.
22388	* acconfig.h (HAVE_HOST_CPU_m68k etc): Add templates.
22389
22390	* mpn/generic/mul_basecase.c, mpz/mul.c, mpz/n_pow_ui.c,
22391	mpn/x86/pentium/mul_2.asm, tests/devel/try.c, tests/tests.h,
22392	tests/refmpn.c, tune/speed.c, tune/speed.h, tune/common.c,
22393	tune/many.pl (mpn_mul_2): New parameter style.
22394	* gmp-impl.h (mpn_mul_2): Add prototype.
22395	* configure.in (gmp_mpn_functions_optional): Add mul_2.
22396
22397	* longlong.h (__vxworks__): Remove from powerpc tests, not correct,
22398	not on its own at least.
22399
22400	* tune/speed.c: Add "aas" to specify 0xAA..AA data.
22401
22402	* tune/tuneup.c (print_define_end): Indicate "never" and "always".
22403
224042001-12-29  Torbjorn Granlund  <tege@swox.com>
22405
22406	* mpq/set_d.c: ANSI-fy.
22407	* mpz/invert.c: Use PTR and SIZ (cosmetic change).
22408
22409	* mpz/cong.c: Rename `xor' to `sign' to avoid C++ reserved word.
22410
224112001-12-28  Torbjorn Granlund  <tege@swox.com>
22412
22413	* mpn/sparc64/sqr_diagonal.asm: New file.
22414
224152001-12-28  Kevin Ryde  <kevin@swox.se>
22416
22417	* mpn/generic/get_str.c: Avoid one mpn_divrem_1 by running main loop
22418	only until msize==1.
22419
22420	* tune/tuneup.c: Break up all() for clarity.
22421	(USE_PREINV_DIVREM_1, USE_PREINV_MOD_1): Compare against plain
22422	division udiv_qrnnd, not the tuned and possibly preinv version.
22423
22424	* tune/freq.c: Split sysctl and sysctlbyname probes into separate
22425	functions, shorten some identifiers, put descriptions inside
22426	functions, define functions unconditionally and do nothing if
22427	requisites not available.
22428
22429	* mpz/inp_raw.c: Avoid a gcc 3.0 powerpc64 bug on AIX.
22430
22431	* acinclude.m4, configure.in (GMP_C_RESTRICT): New macro.
22432
22433	* mpfr/sin.c: Patch from Paul to fix sign of sin(3pi/2).
22434
22435	* demos/calc/calc.y: Improve some error messages.
22436
224372001-12-28  Torbjorn Granlund  <tege@swox.com>
22438
22439	* mpn/sparc64/mul_1.asm: Rename r72 -> r80.
22440	* mpn/sparc64/addmul_1.asm: Likewise.
22441
224422001-12-27  Torbjorn Granlund  <tege@swox.com>
22443
22444	* mpn/generic/tdiv_qr.c: Misc formatting cleanups.
22445	For switch case 2, replace `dn' with its value (2).
22446
224472001-12-25  Torbjorn Granlund  <tege@swox.com>
22448
22449	* tests/devel/mul_1.c: Add FIXED_XLIMB.
22450	* tests/devel/addmul_1.c: Likewise.
22451	* tests/devel/submul_1.c: Likewise.
22452
22453	* tests/devel/add_n.c: Improve error message.
22454	Accept command line argument for # of tests.
22455	* tests/devel/sub_n.c: Likewise.
22456
22457	* tests/devel/: Remove CLOCK settings.
22458
22459	* mpn/sparc32/v9/mul_1.asm: Rewrite.
22460	* mpn/sparc32/v9/addmul_1.asm: Rewrite.
22461	* mpn/sparc32/v9/submul_1.asm: Rewrite.
22462
224632001-12-24  Torbjorn Granlund  <tege@swox.com>
22464
22465	* mpn/sparc64/mul_1.asm: Get rid of global constant 0.0 (L(noll)).
22466	* mpn/sparc64/addmul_1.asm: Likewise.
22467
224682001-12-23  Torbjorn Granlund  <tege@swox.com>
22469
22470	* mpn/generic/get_str.c: Move final ASSERT to just before zero fill
22471	loop.
22472
224732001-12-22  Torbjorn Granlund  <tege@swox.com>
22474
22475	* mpn/generic/get_str.c: Move ASSERTs out of loops.  Split digit
22476	generation code into two loops, saving a test of msize in the loop.
22477
224782001-12-22  Kevin Ryde  <kevin@swox.se>
22479
22480	* mpn/x86/x86-defs.m4, mpn/x86/*/*.asm: Remove L / LF scheme putting
22481	function name in local labels.
22482
22483	* mpn/generic/get_str.c: Use mpn_preinv_divrem_1, add a couple of
22484	ASSERTs.
22485
22486	* mpn/generic/pre_divrem_1.c: New file.
22487	* configure.in (gmp_mpn_functions): Add it.
22488	* gmp-impl.h (mpn_preinv_divrem_1): Add prototype.
22489	(USE_PREINV_DIVREM_1, MPN_DIVREM_OR_PREINV_DIVREM_1): New macros.
22490	* tests/devel/try.c, tune/speed.c, tune/speed.h, tune/common.c,
22491	tune/many.pl, tune/Makefile.am (mpn_preinv_divrem_1): Add testing and
22492	measuring.
22493	* tune/tuneup.c: Determine USE_PREINV_DIVREM_1.
22494	* tune/pre_divrem_1.c: New file.
22495	* tests/refmpn.c, tests/tests.h (refmpn_preinv_divrem_1): New function.
22496
22497	* tests/mpz/t-io_raw.c: New file.
22498	* tests/mpz/Makefile.am (check_PROGRAMS): Add it.
22499
22500	* mpz/inp_raw.c, mpz/out_raw.c: Rewrite.
22501	* acinclude.m4, configure.in (AC_C_BIGENDIAN): New test.
22502	* gmp-impl.h (BSWAP_LIMB): New macro.
22503
22504	* acinclude.m4 (GMP_PROG_CC_WORKS): For a native compile, demand
22505	executables will run, per AC_PROG_CC.  This detects ABI=64 is unusable
22506	in a native sparc solaris 7 build with the kernel in 32-bit mode.
22507	* gmp.texi (ABI and ISA): Add notes on this, add an example configure
22508	setting an ABI.
22509
22510	* tune/tuneup.c, configure.in: Print the gmp-mparam.h filename.
22511	* tune/tuneup.c: Print the CPU frequency.
22512
22513	* tune/time.c, tune/speed.h: Add s390 "stck" method, flatten
22514	conditionals in speed_time_init a bit, use have_* variables to let
22515	some code go dead in speed_starttime and speed_endtime.
22516
22517	* tune/freq.c (speed_cpu_frequency_irix_hinv): New function.
22518
22519	* Makefile.am, configure.in: Restore mpfr.
22520
22521	* configure.in: Add --with-readline, AC_PROG_YACC and AM_PROG_LEX.
22522	* demos/calc/calc.y, demos/calc/calclex.l: Add readline support, add
22523	lucnum function.
22524	* demos/calc/Makefile.am: Add calcread.c, calc-common.h, use $(YACC),
22525	$(LEX) and $(LEXLIB).
22526	* demos/calc/calcread.c, demos/calc/calc-common.h,
22527	demos/calc/calc-config-h.in, demos/calc/README: New files.
22528
22529	* configure.in: Put demos/expr configs in expr-config.h.
22530	* demos/expr/expr-config-h.in: New file.
22531	* demos/expr/expr-impl.h: Renamed from expr-impl-h.in, get configs
22532	from expr-config.h.
22533	* demos/expr/Makefile.am: Update.
22534
22535	* demos/expr/exprfr.c: Use mpfr_sin and mpfr_cos, remove some spurious
22536	returns.
22537
225382001-12-20  Torbjorn Granlund  <tege@swox.com>
22539
22540	* mpn/sparc64/mul_1.asm: Trim an instruction.
22541	* mpn/sparc64/addmul_1.asm: Likewise.
22542
22543	* mpn/ia64/add_n.asm: Rewrite.
22544	* mpn/ia64/sub_n.asm: Rewrite.
22545
225462001-12-19  Torbjorn Granlund  <tege@swox.com>
22547
22548	* mpn/ia64/mul_1.asm: Rewrite.
22549	* mpn/ia64/addmul_1.asm: Rewrite.
22550	* mpn/ia64/submul_1.c: Use TMP_ALLOC_LIMBS.
22551
22552	* tests/devel/mul_1.c: Improve error message.
22553	Accept command line argument for # of tests.
22554	* tests/devel/addmul_1.c: Likewise.
22555	* tests/devel/submul_1.c: Likewise.
22556
225572001-12-18  Torbjorn Granlund  <tege@swox.com>
22558
22559	* mpn/mips3/mul_1.asm: Add NOPs to save a cycle on R1x000.
22560
225612001-12-18  Kevin Ryde  <kevin@swox.se>
22562
22563	* gmpxx.h (gmp_randclass): Don't allow copy constructors or "=",
22564	implementation by Gerardo.
22565
22566	* gmp-h.in (operator<<, operator>>): Remove parameter names from
22567	prototypes, to keep out of user namespace.
22568
22569	* acinclude.m4 (GMP_FUNC_VSNPRINTF): Let the test program work as C++.
22570
225712001-12-16  Torbjorn Granlund  <tege@swox.com>
22572
22573	* mpn/sparc64/mul_1.asm: Rewrite.
22574	* mpn/sparc64/addmul_1.asm: Rewrite.
22575	* mpn/sparc64/submul_1.asm: Rewrite.
22576
22577	* mpn/sparc64/addmul1h.asm: Remove.
22578	* mpn/sparc64/submul1h.asm: Remove.
22579	* mpn/sparc64/mul1h.asm: Remove.
22580
225812001-12-15  Kevin Ryde  <kevin@swox.se>
22582
22583	* gmp-h.in (mpn_add, mpn_add_1, mpn_cmp, mpn_sub, mpn_sub_1): Follow
22584	__GMP_INLINE_PROTOTYPES for whether to give prototype with inline.
22585
22586	* configure.in (i686*-*-*, pentiumpro-*-*, pentium[23]-*-*,
22587	athlon-*-*, pentium4-*-*): Fall back on -march=pentium if
22588	-march=pentiumpro or higher is not good (eg. solaris cmov).
22589
225902001-12-12  Torbjorn Granlund  <tege@swox.com>
22591
22592	* gmp-impl.h (MPN_ZERO): Rewrite generic version to be similar to
22593	powerpc version.
22594
225952001-12-12  Kevin Ryde  <kevin@swox.se>
22596
22597	* acinclude.m4 (GMP_PROG_CC_WORKS): Detect cmov problems with gcc
22598	-march=pentiumpro on solaris 2.8.
22599
22600	* tune/common.c, tune/speed.h: Allow for commas in count_leading_zeros
22601	and count_trailing_zeros macros.
22602
22603	* demos/expr/Makefile.am: Distribute exprfr.c and exprfra.c.
22604
22605	* tune/Makefile.am (speed_ext_SOURCES): Should be speed-ext.c.
22606
226072001-12-10  Torbjorn Granlund  <tege@swox.com>
22608
22609	* mpn/s390/addmul_1.asm: New file.
22610	* mpn/s390/submul_1.asm: New file.
22611	* mpn/s390/mul_1.asm: New file.
22612	* mpn/s390/gmp-mparam.h: Update.
22613
226142001-12-07  Kevin Ryde  <kevin@swox.se>
22615
22616	* gmp-h.in, mp-h.in, gmp-impl.h: __GMP_DECLSPEC at start of
22617	prototypes, for the benefit of Microsoft C.
22618
22619	* gmp.texi (Introduction to GMP): Mention ABI and ISA section.
22620	(Known Build Problems): Recommend GNU sed on solaris 2.6.
22621	(Assigning Integers): Direct feedback to bug-gmp.
22622	(References): Typo Knuth vol 2 is from 1998.
22623
22624	* gmpxx.h (gmp_randclass): Add initializers for gmp_randinit_default
22625	and gmp_randinit_lc_2exp_size.
22626	gmp.texi (C++ Interface Random Numbers): Describe them.
22627
22628	* tests/misc/t-locale.c, tests/cxx/t-locale.cc: Ensure mpf_clear is
22629	done when the localconv override doesn't work.  Reported by Mike
22630	Jetzer.
22631
22632	* printf/doprnti.c: Don't showbase on a zero mpq denominator.
22633	* tests/misc/t-printf.c, tests/cxx/t-ostream.c: Add test cases.
22634
226352001-12-04  Kevin Ryde  <kevin@swox.se>
22636
22637	* gmp.texi (Known Build Problems): Update to gmp_randinit_lc_2exp_size
22638	for the sparc solaris 2.7 problem.
22639	(Reentrancy): SCO ctype.h affects all text-based input functions.
22640	(Formatted Output Strings): Correction to the mpf example.
22641	(Single Limb Division): Correction, should be q-1 not q+1.
22642	(Extended GCD): Clarify why single-limb is inferior.
22643	(Raw Output Internals): Clarify size is twos complement, note limb
22644	order means _mp_d doesn't get directly read or written.
22645	(Contributors): Clarify mpz_jacobi.
22646	And a couple of formatting tweaks elsewhere.
22647
22648	* tests/cxx/t-headers.cc: New file.
22649	* tests/cxx/Makefile.am: Add it.
22650
22651	* gmpxx.h: Add <strstream>, needed by mpf_class::get_str2.
22652
22653	* gmp-h.in (mpq_inp_str, mpn_hamdist): Add __GMP_DECLSPEC.
22654
226552001-12-01  Torbjorn Granlund  <tege@swox.com>
22656
22657	* Version 4.0 released.
22658
22659	* mpfr/README: Replace contents with explanation of why mpfr is gone.
22660
226612001-12-01  Kevin Ryde  <kevin@swox.se>
22662
22663	* Makefile.am, configure.in: Temporarily remove mpfr, just leave a
22664	README.
22665
22666	* mpn/Makefile.am (EXTRA_DIST): Add Makeasm.am.
22667
226682001-11-30  Gerardo Ballabio  <ballabio@sissa.it>
22669
22670	* tests/cxx/t-constr.cc, tests/cxx/t-expr.cc: New files.
22671	* tests/cxx/Makefile.am (check_PROGRAMS): Add them.
22672
226732001-11-30  Kevin Ryde  <kevin@swox.se>
22674
22675	* mpfr: Update to 2001-11-16.  Patch TMP handling of agm.c and sqrt.c,
22676	use plain mpn_sqrtrem in sqrt.c, separate .c files for floor and ceil,
22677	disable an expression style assert in add1.c.
22678
22679	* mpn/s370: Rename to s390.
22680	* configure.in (s3[6-9]0*-*-*): Update.
22681	* mpn/Makefile.am (TARG_DIST): Add s390.
22682
22683	* mpz/fits_s.c, mpf/fits_s.c, mpf/fits_u.c: Remove files, unused since
22684	change to .h style.
22685
226862001-11-29  Torbjorn Granlund  <tege@swox.com>
22687
22688	* gmp-h.in: Declare mpz_get_d_2exp and mpf_get_d_2exp.
22689	* Makefile.am: Add mpz/get_d_2exp$U.lo and mpf/get_d_2exp$U.lo.
22690	* mpf/Makefile.am: Add get_d_2exp.c.
22691	* mpz/Makefile.am: Add get_d_2exp.c.
22692
226932001-11-29  Kevin Ryde  <kevin@swox.se>
22694
22695	* mpn/*/gmp-mparam.h: Update measured thresholds.
22696	* mpn/s370/gmp-mparam.h: New file.
22697
22698	* mpz/millerrabin.c: Mark for internal use only, for now.
22699	* gmp.texi (Number Theoretic Functions): Remove documentation.
22700
227012001-11-28  Torbjorn Granlund  <tege@swox.com>
22702
22703	* mpf/get_d_2exp.c: New file.
22704	* mpz/get_d_2exp.c: New file.
22705
22706	* mpz/realloc2.c: Fix typo.  Make more similar to mpz_realloc.
22707	* mpz/realloc.c: Use __GMP_REALLOCATE_FUNC_LIMBS.
22708
227092001-11-27  Gerardo Ballabio  <ballabio@sissa.it>
22710
22711	* gmpxx.h, mpfrxx.h: Various updates and improvements.
22712
227132001-11-27  Kevin Ryde  <kevin@swox.se>
22714
22715	* gmp.texi (Useful Macros and Constants): Add gmp_version, add @findex
22716	for mp_bits_per_limb.
22717
22718	* demos/perl/GMP.pm, demos/perl/GMP.xs: Use new style gmp_randinit's.
22719	* demos/perl/test.pl: Update for this, and for mpz_perfect_power_p
22720	handling of 0 and 1.
22721
227222001-11-26  Torbjorn Granlund  <tege@swox.com>
22723
22724	* mpz/realloc.c: Clear variable when decreasing allocation to less than
22725	needed.  Misc updates.
22726
227272001-11-25  Kevin Ryde  <kevin@swox.se>
22728
22729	* tests/misc/t-locale.c: Avoid printf in the normal case, since the
22730	replacement localeconv breaks it on SunOS 4.
22731
22732	* gmp.texi (Build Options, Notes for Package Builds): Note libgmpxx
22733	depends on libgmp from same GMP version.
22734
22735	* acinclude.m4, configure.in (GMP_FUNC_SSCANF_WRITABLE_INPUT): New
22736	test.
22737	* scanf/sscanf.c, scanf/vsscanf.c: Use it to ensure sscanf input is
22738	writable, if necessary.
22739
22740	* tests/misc/t-scanf.c: Ensure sscanf arguments are writable, always.
22741	* configure.in (AC_CHECK_DECLS): Remove sscanf, no longer required.
22742
22743	* configure.in (none-*-*): Fix default CFLAGS setups.
22744
22745	* doc/configuration: Misc updates.
22746
227472001-11-23  Kevin Ryde  <kevin@swox.se>
22748
22749	* mpz/init2.c, mpz/realloc2.c: New files.
22750	* Makefile.am, mpz/Makefile.am: Add them.
22751	* gmp-h.in: Add prototypes.
22752	* gmp.texi (Efficiency): Mention these instead of _mpz_realloc.
22753	(Initializing Integers): Add documentation, reword other parts.
22754
227552001-11-22  Torbjorn Granlund  <tege@swox.com>
22756
22757	* mpn/cray/ieee/addmul_1.c: Fix logic for more_carries scalar loop.
22758	* mpn/cray/ieee/submul_1.c: Likewise.
22759
227602001-11-20  Kevin Ryde  <kevin@swox.se>
22761
22762	* gmp.texi (Known Build Problems): Note an out of memory on DJGPP.
22763	(Function Classes): Update function counts.
22764	Misc tweaks elsewhere.
22765
22766	* configure.in (AC_CHECK_DECLS): Add sscanf.
22767	* tests/misc/t-scanf.c: Use it, for the benefit of SunOS 4.
22768
22769	* tal-debug.c, gmp-impl.h: More checks of TMP_DECL/TMP_MARK/TMP_FREE
22770	consistency.
22771
22772	* mpfr/Makefile.am (AR): Explicit AR=@AR@ to override automake
22773	default, necessary for powerpc64 ABI=aix64.
22774
227752001-11-18  Torbjorn Granlund  <tege@swox.com>
22776
22777	* mpz/powm.c: Move TMP_MARK to before any TMP_ALLOCs.
22778
227792001-11-18  Kevin Ryde  <kevin@swox.se>
22780
22781	* configure.in (--enable-fft): Make this the default.
22782	* gmp.texi (Build Options): Update.
22783
22784	* Makefile.am (libmp_la_DEPENDENCIES): Revise mpz objects needed by
22785	new mpz/powm.c.
22786
22787	* gmp.texi (Random State Initialization): Add gmp_randinit_default and
22788	gmp_randinit_lc_2exp_size, mark gmp_randinit as obsolete.
22789	(Random State Seeding): New section, taken from "Random State
22790	Initialization" and "Random Number Functions".
22791
22792	* configure.in (AC_CHECK_DECLS): Add fgetc, fscanf, ungetc.
22793	* scanf/fscanffuns.c: Use these, for the benefit of SunOS 4.
22794
22795	* gmp-impl.h, gmp-h.in (__gmp_default_fp_limb_precision): Move back to
22796	gmp-impl.h now not required for inlined mpf.
22797
22798	* randlc2s.c (gmp_randinit_lc_2exp_size): New file, the size-based LC
22799	selection from rand.c.
22800	* rand.c (gmp_randinit): Use it.
22801	* randdef.c (gmp_randinit_default): New file.
22802	* gmp-impl.h (RANDS): Use it.
22803	(ASSERT_CARRY): New macro.
22804	* gmp-h.in (gmp_randinit_default, gmp_randinit_lc_2exp_size: Add
22805	prototypes.
22806	* Makefile.am (libgmp_la_SOURCES): Add randdef.c and randlc2s.c.
22807
22808	* printf/asprntffuns.c: Include config.h before using its defines.
22809
22810	* gmp-impl.h: Move C++ <string> to top of file to avoid the memset
22811	redefine upsetting configure tests.  Remove <iostream> since <iosfwd>
22812	in gmp.h suffices.
22813
228142001-11-16  Kevin Ryde  <kevin@swox.se>
22815
22816	* gmp.texi (Integer Exponentiation): mpz_powm supports negative
22817	exponents.
22818	(Assigning Floats, I/O of Floats, C++ Formatted Output, C++ Formatted
22819	Input): Decimal point follows locale.
22820	(Formatted Output Strings): %n accepts any type.
22821	(Formatted Input Strings): New section.
22822	(Formatted Input Functions): New section.
22823	(C++ Class Interface): Corrections and clarifications suggested by
22824	Gerardo.
22825
22826	* scanf/doscan.c, scanf/fscanf.c, scanf/fscanffuns.c, scanf/scanf.c,
22827	scanf/sscanf.c, scanf/sscanffuns.c, scanf/vfscanf.c, scanf/vscanf.c,
22828	scanf/vsscanf.c, scanf/Makefile.am, tests/misc/t-scanf.c: New files.
22829	* gmp-h.in, gmp-impl.h, Makefile.am, configure.in: Consequent
22830	additions.
22831
22832	* tests/misc: New directory.
22833	* tests/misc/Makefile.am: New file.
22834	* tests/misc/t-locale.c: New file.
22835	* tests/misc/t-printf.c: Moved from tests/printf.
22836	* tests/printf: Remove directory.
22837	* configure.in, tests/Makefile.am: Update.
22838
22839	* tests/cxx/t-locale.cc: New file.
22840	* tests/cxx/Makefile.am: Add it.
22841
22842	* mpf/set_str.c, cxx/ismpf.cc: Use localeconv for the decimal point.
22843
22844	* acinclude.m4 (GMP_ASM_X86_MCOUNT): Update to $lt_prog_compiler_pic
22845	for current libtool, recognise non-PIC style mcount in windows DLLs.
22846
22847	* gmp-impl.h (__gmp_replacement_vsnprintf): Add prototype.
22848
22849	* gmp-impl.h (__gmp_rands, __gmp_rands_initialized,
22850	modlimb_invert_table): Add __GMP_DECLSPEC for the benefit of test
22851	programs using them from a windows DLL.
22852	* longlong.h (__clz_tab): Ditto.
22853
22854	* mpn/x86/t-zdisp2.pl: New file.
22855
22856	* mpn/x86/pentium4/README: New file.
22857
228582001-11-15  Torbjorn Granlund  <tege@swox.com>
22859
22860	* mpz/powm.c (HANDLE_NEGATIVE_EXPONENT): #define to 1.
22861	* tests/mpz/reuse.c (main): Use mpz_invert to avoid undefined mpz_powm
22862	cases.
22863
228642001-11-14  Torbjorn Granlund  <tege@swox.com>
22865
22866	* mpz/powm_ui.c: Rewrite along the lines of mpz/powm.c (except still no
22867	redc).
22868	* mpz/powm.c: Adjust for negative b, after exponentiation done.  Add
22869	(still disabled) code for handling negative exponents.  Misc cleanups.
22870
228712001-11-14  Kevin Ryde  <kevin@swox.se>
22872
22873	* mpf/out_str.c: Use localeconv for the decimal point.
22874
22875	* tests/misc.c (tests_rand_end): Use time() if gettimeofday() not
22876	available (eg. on mingw).
22877
228782001-11-11  Kevin Ryde  <kevin@swox.se>
22879
22880	* gmp-h.in: Remove parameter names from prototypes, to keep out of
22881	application namespace.
22882
228832001-11-08  Kevin Ryde  <kevin@swox.se>
22884
22885	* acinclude.m4 (GMP_GCC_VERSION_GE): Fix sed regexps to work on
22886	Solaris 8.
22887
22888	* printf/doprnt.c: Support %n of all types, per glibc.
22889
22890	* gmp-h.in, gmp-impl.h, mpf/abs.c, mpf/neg.c, mpf/get_prc.c,
22891	mpf/get_dfl_prec.c, mpf/set_dfl_prec.c, mpf/set_prc_raw.c,
22892	mpf/set_si.c, mpf/set_ui.c, mpf/size.c: Revert mpf inlining, in order
22893	to leave open the possibility of keeping binary compatibility if mpf
22894	becomes mpfr.
22895
22896	* mpn/x86/k7/mmx/lshift.asm, mpn/x86/k7/mmx/rshift.asm: Use Zdisp to
22897	force code size for computed jumps.
22898	* mpn/x86/k6/mod_34lsub1.asm, mpn/x86/k6/k62mmx/copyd.asm: Use Zdisp
22899	to force good code alignment.
22900	* mpn/x86/x86-defs.m4 (Zdisp): More instructions.
22901
22902	* mpn/x86/pentium/sqr_basecase.asm, mpn/x86/k7/mmx/mod_1.asm,
22903	mpn/x86/k7/mmx/popham.asm: Remove some unnecessary "0" address offsets.
22904
22905	* mpq/set_si.c, mpq/set_ui.c: Set _mp_den._mp_size correctly if den==0.
22906
229072001-11-07  Torbjorn Granlund  <tege@swox.com>
22908
22909	* mpn/hppa/hppa1_1/udiv_qrnnd.asm: Work around gas bug.
22910
22911	* mpn/asm-defs.m4 (PROLOGUE): Change alignment to 8 (probably a good
22912	idea in general; required for hppa/hppa1_1/udiv_qrnnd.asm).
22913
229142001-11-06  Torbjorn Granlund  <tege@swox.com>
22915
22916	* gmp-impl.h (MPN_COPY_INCR): Prepend local variable by `__'.
22917	(MPN_COPY_DECR): Likewise.
22918
229192001-11-05  Torbjorn Granlund  <tege@swox.com>
22920
22921	* mpz/powm.c: Call mpn functions, not mpz functions, for computation
22922	mod m.  Streamline allocations to use a mixture of stack allocation and
22923	heap allocation.  Add currently disabled phi(m) exponent reduction
22924	code.  Misc optimizations and cleanups.
22925
229262001-11-05  Kevin Ryde  <kevin@swox.se>
22927
22928	* mpq/inp_str.c: Remove unused variable "ret".
22929
22930	* mpn/x86/k7/sqr_basecase.asm: Fix a 0(%edi) to use Zdisp, so the
22931	computed jumps hit the right spot on old gas.
22932
22933	* mpq/canonicalize.c: DIVIDE_BY_ZERO if denominator is zero.
22934
22935	* mpn/lisp/gmpasm-mode.el (comment-start-skip): Correction to the way
22936	the first \( \) pair is setup.
22937	(gmpasm-font-lock-keywords): Don't fontify the space before a "#" etc.
22938	Misc tweaks to some comments.
22939
229402001-11-03  Torbjorn Granlund  <tege@swox.com>
22941
22942	* tests/refmpn.c (refmpn_overlap_p): Reverse return values.
22943
229442001-11-02  Kevin Ryde  <kevin@swox.se>
22945
22946	* tune/many.pl: Setup CFLAGS_PIC and ASMFLAGS_PIC, since that's no
22947	longer done by configure.
22948
22949	* mpn/x86/pentium4/mmx/popham.asm: New file.
22950
22951	* mpn/x86/x86-defs.m4 (psadbw): New macro.
22952	* mpn/x86/k7/mmx/popham.asm: Use it.
22953
22954	* tests/refmpn.c (refmpn_overlap_p): New function, independent of
22955	MPN_OVERLAP_P.
22956
229572001-10-31  Torbjorn Granlund  <tege@swox.com>
22958
22959	* tests/mpz/t-powm.c: Print proper error message when finding
22960	discrepancy.
22961
229622001-10-31  Kevin Ryde  <kevin@swox.se>
22963
22964	* mpn/x86/pentium/mod_34lsub1.asm: New file.
22965	* mpn/x86/k7/mod_34lsub1.asm: New file.
22966	* mpn/x86/mod_34lsub1.asm: New file.
22967
229682001-10-30  Kevin Ryde  <kevin@swox.se>
22969
22970	* tests/printf/t-printf.c (check_misc): Add checks from the glibc docs.
22971	(check_vasprintf, check_vsnprintf): Run these unconditionally.
22972
22973	* gmp-impl.h (ASSERT_MPQ_CANONICAL): New macro.
22974	* mpq/cmp.c, mpq/cmp_si.c, mpq/cmp_ui.c, mpq/equal.c: Add ASSERTs for
22975	canonical inputs, where correctness depends on it.
22976
22977	* mpn/lisp/gmpasm-mode.el (comment-start-skip): Add "dnl".
22978
229792001-10-27  Torbjorn Granlund  <tege@swox.com>
22980
22981	* demos/pexpr.c: Remove some unused variables.
22982	(main): Allocate more buffer space to accommodate minus sign.
22983
229842001-10-27  Kevin Ryde  <kevin@swox.se>
22985
22986	* gmp-impl.h, mpn/asm-defs.m4, configure.in, tune/speed.h,
22987	tune/speed.c, tune/common.c, tune/many.pl, tests/devel/try.c: Add
22988	mpn_mod_34lsub1.
22989	* tests/refmpn.c, tests/tests.h (refmpn_mod_34lsub1): New function.
22990
22991	* mpn/generic/mod_34lsub1.c: New file.
22992	* mpn/x86/k6/mod_34lsub1.asm: New file.
22993	* mpn/x86/pentium4/sse2/mod_34lsub1.asm: New file.
22994	* mpn/x86/x86-defs.m4 (Zdisp): Add another instruction.
22995
22996	* gmp-h.in, gmpxx.h: Use <iosfwd> not whole <iostream>.
22997
22998	* gmp.texi (Known Build Problems): Add note on test programs with
22999	Windows DLLs.
23000
230012001-10-26  Kevin Ryde  <kevin@swox.se>
23002
23003	* tests/mpq/t-get_d.c: Limit the size of "eps" for vax.
23004
23005	* gmp.texi (maybepagebreak): New macro, use it in a few places.
23006	(Notes for Particular Systems): C++ Windows DLLs are not supported.
23007	(Known Build Problems): Note sparc solaris 2.7 gcc 2.95.2 shared
23008	library problems.
23009	(Autoconf): Tweak version numbers shown.
23010	(Integer Roots): mpz_perfect_square_p and mpz_perfect_power_p consider
23011	0 and 1 perfect powers, mpz_perfect_power_p accepts negatives.
23012	(Number Theoretic Functions): Add mpz_millerrabin, combined with a
23013	reworded mpz_probab_prime_p.
23014	(Formatted Output Strings): Misc clarifications.
23015	(Formatted Output Functions): gmp_asprintf, gmp_vasprintf,
23016	gmp_snprintf, gmp_vsnprintf always available.
23017	(C++ Formatted Output): Misc rewordings.
23018	(Formatted Input): New chapter.
23019	(C++ Class Interface): New chapter, by Gerardo and me.
23020	(Language Bindings): Update GMP++ now in GMP.
23021	(C++ Interface Internals): New section, by Gerardo and me.
23022
23023	* printf/repl-vsnprintf.c: New file.
23024	* configure.in, acinclude.m4, Makefile.am, printf/Makefile.am: Use it
23025	if libc vsnprintf missing or bad.
23026	* configure.in (AC_CHECK_FUNCS): Add strnlen.
23027
23028	* printf/snprntffuns.c, printf/vasprintf.c: Use
23029	__gmp_replacement_vsnprintf if libc vsnprintf not available.
23030	* printf/asprintf.c, printf/snprintf.c, printf/vasprintf.c,
23031	printf/vsnprintf.c: Provide these functions unconditionally.
23032	* acinclude.m4 (GMP_FUNC_VSNPRINTF): Remove warning about omissions
23033	when vsnprintf not available.
23034
230352001-10-24  Kevin Ryde  <kevin@swox.se>
23036
23037	* configure, aclocal.m4: Regenerate with a libtool patch for a stray
23038	quote in AC_LIBTOOL_PROG_LD_SHLIBS under mingw and cygwin.
23039
23040	* gmp-impl.h (modlimb_invert): More comments.
23041
23042	* printf/doprnt.c, printf/doprnti.c: Use the precision field to print
23043	leading zeros.
23044	* tests/printf/t-printf.c: Test this.
23045	* cxx/osdoprnti.cc, gmp-impl.h: Ignore precision in operator<<.
23046
23047	* tune/speed.c, tune/speed.h, tune/common.c: Add mpn_mul_1_inplace.
23048
230492001-10-23  Torbjorn Granlund  <tege@swox.com>
23050
23051	* mpz/pprime_p.c (mpz_millerrabin): Remove function and its descendant.
23052
23053	* mpz/millerrabin.c: New file with code from pprime.c.
23054	* mpz/Makefile.am: Compile millerrabin.c.
23055	* Makefile.am (MPZ_OBJECTS): Ditto.
23056	* gmp-h.in: Declare mpz_millerrabin.
23057
230582001-10-22  Torbjorn Granlund  <tege@swox.com>
23059
23060	* tests/mpz/t-perfsqr.c: New file.
23061	* tests/mpz/Makefile.am (check_PROGRAMS): Add it.
23062
23063	* demos/factorize.c (factor): Check for number to factor == 0.
23064	(main): When invoked without arguments, read from stdin.
23065
23066	* mpz/perfpow.c: Add code to handle negative perfect powers ((-b)^odd).
23067	Treat 0 and 1 as perfect powers.
23068
23069	* mpn/sparc32/v9/sqr_diagonal.asm: Jump past .align.
23070
230712001-10-21  Torbjorn Granlund  <tege@swox.com>
23072
23073	* mpn/generic/perfsqr.c (sq_res_0x100): Remove bogus final `,'.
23074	(mpn_perfect_square_p): Suppress superfluous `&1' in sq_res_0x100 test.
23075	(mpn_perfect_square_p, O(n) test): Improve comments.  Combine remainder
23076	tests for some small primes.  Don't share code for different limb
23077	sizes.  Use single `if' with many `||' for better code density.
23078
230792001-10-22  Kevin Ryde  <kevin@swox.se>
23080
23081	* demos/perl/GMP.xs (mutate_mpz, tmp_mpf_grow): Make these "static".
23082
23083	* mpn/x86/pentium/popcount.asm, mpn/x86/pentium/hamdist.asm
23084	(mpn_popcount_table): Use GSYM_PREFIX.
23085
230862001-10-19  Kevin Ryde  <kevin@swox.se>
23087
23088	* mpn/x86/*.asm: Add some measured speeds on various x86s.
23089
23090	* tests/mpz/reuse.c, tests/mpf/reuse.c: Disable tests when using a
23091	windows DLL, because certain global variable usages won't compile.
23092
23093	* configure.in (AC_CHECK_FUNCS): Add alarm.
23094	* tests/spinner.c: Conditionalize alarm and SIGALRM availability, for
23095	the benefit of mingw32.
23096
23097	* acinclude.m4 (GMP_ASM_TYPE, GMP_ASM_SIZE): Suppress .type and .size
23098	on COFF.
23099
23100	* acinclude.m4 (GMP_PROG_HOST_CC): New macro.
23101	* configure.in: Use it for windows DLL cross-compiles.
23102	* aclocal.m4, configure: Regenerate with libtool patch to hold HOST_CC
23103	in the generated libtool script.
23104
23105	* aclocal.m4, configure: Regenerate with libtool patch to suppress
23106	warnings when probing command line limit on FreeBSD.
23107
23108	* demos/qcn.c (M_PI): Define if not already provided, helps mingw32.
23109
231102001-10-17  Kevin Ryde  <kevin@swox.se>
23111
23112	* printf/doprnt.c: Use <stdint.h> for intmax_t.
23113
23114	* longlong.h: Recognise __sparcv8 for gcc on Solaris.  Reported by
23115	Mark Mentovai <mark@mentovai.com>.
23116
23117	* gmp-impl.h (gmp_allocated_string): No need for inline on member funs.
23118
231192001-10-16  Kevin Ryde  <kevin@swox.se>
23120
23121	* gmp.texi (Debugging): Add mpatrol.
23122	(Integer Comparisons, Comparing Rationals, Float Comparison): Index
23123	entries for sign tests.
23124	(I/O of Floats): Clarify mpf_out_str exponent is in decimal.
23125	(C++ Formatted Output): mpf_t operator<< exponent now in decimal.
23126	(FFT Multiplication): Use an ascii art sigma.
23127	(Contributors): Add Gerardo Ballabio.
23128
23129	* cxx/osfuns.cc (__gmp_doprnt_params_from_ios): Always give mpf_t
23130	exponent in decimal, irrespective of ios::hex or ios::oct.
23131	* tests/cxx/t-ostream.cc (check_mpf): Update.
23132
23133	* printf/doprnt.c: Support %lln and %hhn.
23134
23135	* mpn/x86/pentium4/sse2/submul_1.asm: Use a psubq to negate the
23136	initial carry (helps the submul_1c case), and improve the comments.
23137
231382001-10-11  Kevin Ryde  <kevin@swox.se>
23139
23140	* acinclude.m4, configure.in (GMP_IMPL_H_IEEE_FLOATS): New macro.
23141
23142	* ltmain.sh: Send some rm errors to /dev/null, helps during compiles
23143	on Solaris 2.7 and HP-UX 10.
23144
23145	* tal-notreent.c: Renamed from stack-alloc.c.
23146	* Makefile.am, acinclude.m4, gmp-impl.h: Update.
23147
23148	* gmp-h.in: Don't give both prototypes and inlines, except on gcc.
23149
23150	* gmp-h.in, gmp-impl.h: Use #includes to get necessary standard
23151	classes, add std:: to prototypes.
23152	* cxx/*.cc, tests/cxx/t-ostream.cc: Add "use namespace std".
23153	* acinclude.m4 (GMP_PROG_CXX_WORKS): Ditto.
23154
23155	* tests/*/Makefile.in, mpfr/tests/Makefile.in: Regenerate with
23156	automake patch to avoid Ultrix problem with empty $(TESTS).
23157
23158	* */Makefile.in: Regenerate with automake patch to only rm *_.c in
23159	"make clean" when ansi2knr actually in use, helps DOS 8.3.
23160
23161	* Makefile.in: Regenerate with automake patch to fix stamp-h
23162	numbering, avoiding an unnecessary config.status run.
23163
231642001-10-09  Torbjorn Granlund  <tege@swox.com>
23165
23166	* mpn/hppa/hppa1_1/udiv_qrnnd.asm: Use L macros for labels.
23167	Quote L reloc operator.
23168
23169	* gmp-impl.h: Declare class string.
23170
23171	* mpn/asm-defs.m4 (INT32, INT64): Quote $1 to prevent further
23172	expansion.
23173
23174	* mpn/alpha/ev6/mul_1.asm: New file.
23175
231762001-10-09  Kevin Ryde  <kevin@swox.se>
23177
23178	* gmp.texi (Introduction to GMP): Add pentium 4 to optimized CPUs.
23179	(Build Options): Note macos directory.
23180	(Notes for Package Builds): GMP 4 series binary compatible with 3.
23181	(Known Build Problems): Remove $* and ansi2knr note, now fixed, except
23182	possibly under --host=none.
23183	(Formatted Output Strings): Remove -1 prec for all digits.
23184
23185	* mpz/add.c, mpz/sub.c: Don't use mpz path on #include (helps macos).
23186	* mpbsd/Makefile.am (INCLUDES): Add -I$(top_srcdir)/mpz.
23187
23188	* printf/doprnt.c, tests/printf/t-printf.c: Remove support for %.*Fe
23189	prec -1 meaning all digits.
23190
23191	* acinclude.m4 (GMP_PROG_AR): Override libtool, use AR_FLAGS="cq".
23192	(GMP_HPC_HPPA_2_0): Print version string to config.log.
23193
23194	* Makefile.am (AUTOMAKE_OPTIONS): Remove check-news (permission notice
23195	in NEWS file is too big).
23196	(dist-hook): Don't distribute numbered or unnumbered emacs backups.
23197
23198	* Makefile.am, cxx/Makefile.am: Updates for Gerardo's stuff.
23199
232002001-10-09  Gerardo Ballabio  <ballabio@sissa.it>
23201
23202	* cxx/isfuns.cc: New file.
23203	* gmp-impl.h: Add prototypes.
23204	* cxx/ismpf.cc, cxx/ismpq.cc, cxx/ismpz.cc: New files.
23205	* gmp-h.in: Add prototypes.
23206	* gmpxx.h, mpfrxx.h: New files.
23207
232082001-10-08  Kevin Ryde  <kevin@swox.se>
23209
23210	* configure.in (with_tags): Establish a default based on --enable-cxx.
23211
23212	* aclocal.m4: Regenerate with libtool patches for sed char range to
23213	help Cray, LTCC quotes and +Z warnings grep to help HP-UX.
23214
23215	* gmp-impl.h (doprnt_format_t, doprnt_memory_t, doprnt_reps_t,
23216	doprnt_final_t): Use _PROTO.
23217
232182001-10-05  Torbjorn Granlund  <tege@swox.com>
23219
23220	* mpn/asm-defs.m4 (INT32, INT64): Use LABEL_SUFFIX.
23221
23222	* mpn/hppa: Convert files to `.asm'.
23223
232242001-10-05  Kevin Ryde  <kevin@swox.se>
23225
23226	* mpn/Makeasm.am (.S files): Revert to separate CPP and CCAS, use
23227	cpp-ccas, and only pass CPPFLAGS to CPP, not whole CFLAGS.
23228	* mpn/cpp-ccas: New file.
23229	* mpn/Makefile.am (EXTRA_DIST): Add it.
23230
23231	* tune/common.c, tune/speed.h: Change SPEED_ROUTINE_MPN_COPY_CALL uses
23232	to SPEED_ROUTINE_MPN_COPY or new SPEED_ROUTINE_MPN_COPY_BYTES.  Avoids
23233	macro expansion problems on Cray.
23234
23235	* configure.in (AC_PROG_CXXCPP): Add this, to make libtool happier.
23236
232372001-10-04  Torbjorn Granlund  <tege@swox.com>
23238
23239	* mpz/rrandomb.c (gmp_rrandomb): Change bit_pos to be 0-based (was
23240	1-based); shift 2 (was 1) when making bit mask.  These two changes
23241	avoid undefined shift counts.
23242	(gmp_rrandomb): Avoid most calls to _gmp_rand by caching random values.
23243
23244	* mpn/generic/random2.c: Changes for mirroring mpz/rrandomb.c.
23245
232462001-10-04  Kevin Ryde  <kevin@swox.se>
23247
23248	* gmp.texi (Build Options): Add --enable-cxx.
23249	(Notes for Particular Systems): Mention pentium4 performance and SSE2.
23250	(Known Build Problems): Remove vax jsobgtr note, no longer needed.
23251	(Converting Floats): Tweak mpf_get_str description.
23252	(Low-level Functions): Correction to mpn_gcdext destination space
23253	requirements.
23254	(C++ Formatted Output): New section.
23255	(Language Bindings): Add ALP
23256	(Contributors): Add Paul Zimmermann's square root, update my things.
23257
23258	* acinclude.m4 (GMP_PROG_CC_IS_GNU, GMP_PROG_CXX_WORKS): Send compiler
23259	errors to config.log.
23260
23261	* mpq/Makefile.am (INCLUDES): Remove -DOPERATION_$*, not needed.
23262
23263	* mpn/x86/*.asm: Change references to old README.family to just README.
23264
23265	* mpz/README: Remove file, now adequately covered in the manual.
23266
232672001-10-03  Torbjorn Granlund  <tege@swox.com>
23268
23269	* mpn/x86/pentium4/copyi.asm: New file.
23270	* mpn/x86/pentium4/copyd.asm: New file.
23271
23272	* gmp-impl.h: Implement separate MPN_COPY_INCR and MPN_COPY_DECR
23273	macros for CRAY systems.
23274	(CRAY _MPN_COPY): Delete.
23275
232762001-10-02  Kevin Ryde  <kevin@swox.se>
23277
23278	* tests/mpz/t-popcount.c (check_data): Use "~ (unsigned long) 0" to
23279	avoid compiler warnings on sco.
23280
23281	* mpbsd/Makefile.am: Compile mpz files directly, no copying.
23282	Use mpz/add.c and mpz/sub.c rather than mpz/aors.c.
23283	(INCLUDES): Remove -DOPERATION_$*, no longer needed (by mpz).
23284
23285	* mpz/aors.h: Renamed from mpz/aors.c.
23286	* mpz/add.c, mpz/sub.c: New files, using mpz/aors.h.
23287	* mpz/aors_ui.h: Renamed from mpz/aors_ui.c.
23288	* mpz/add_ui.c, mpz/sub_ui.c: New files, using mpz/aors_ui.h.
23289	* mpz/fits_s.h: Renamed and adapted from mpz/fits_s.c.
23290	* mpz/fits_sshort.c, mpz/fits_sint.c, mpz/fits_slong.c: New files.
23291	* mpz/mul_i.h: Renamed from mpz/mul_siui.c.
23292	* mpz/mul_ui.c, mpz/mul_ui.c: New files, using mpz/mul_i.h.
23293	* mpz/Makefile.am: Consequent updates.
23294	(INCLUDES): Remove -DOPERATION_$*.
23295
23296	* mpf/fits_s.h: Renamed and adapted from mpf/fits_s.c.
23297	* mpf/fits_sshort.c, mpf/fits_sint.c, mpf/fits_slong.c: New files.
23298	* mpf/fits_u.h: Renamed and adapted from mpf/fits_u.c.
23299	* mpf/fits_ushort.c, mpf/fits_uint.c, mpf/fits_ulong.c: New files.
23300	* mpf/Makefile.am: Consequent updates.
23301	(INCLUDES): Remove -DOPERATION_$*.
23302
23303	* cxx/osfuns.cc (__gmp_doprnt_params_from_ios): Don't use ios::hex etc
23304	as cases in a switch, they're not constant in g++ 3.0.
23305
23306	* mpn/Makeasm.am (.s.o, .s.obj, .S.o, .S.obj, .asm.o, .asm.obj):
23307	Locate source file with test -f the same as automake.
23308	(.S): Let CCAS do the preprocessing, and run libtool for .S.lo.
23309	(.asm.lo): Run libtool via m4-ccas to get new style foo.lo right.
23310	(COMPILE_FLAGS): Add $(DEFAULT_INCLUDES), per new automake.
23311	* mpn/m4-ccas: New file.
23312	* mpn/Makefile.am (EXTRA_DIST): Add it.
23313	* mpn/asm-defs.m4: Add m4_not_for_expansion(`DLL_EXPORT').
23314	* mpn/x86/x86-defs.m4: Undefine PIC if DLL_EXPORT is set.
23315	* configure.in (CFLAGS_PIC, ASMFLAGS_PIC): Remove, no longer needed.
23316
23317	* acinclude.m4 (GMP_FUNC_VSNPRINTF): Warn what's omitted when
23318	vsnprintf not available.
23319
23320	* mpn/underscore.h: Remove file, not used since m68k converted to asm.
23321	* mpn/Makefile.am (EXTRA_DIST): Remove it.
23322
23323	* tests/refmpz.c: Add <stdlib.h>, for free().
23324
233252001-10-01  Torbjorn Granlund  <tege@swox.com>
23326
23327	* mpn/x86/pentium4/sse2/submul_1.asm: Apply some algebraic
23328	simplifications.
23329	* mpn/x86/pentium4/sse2/addmul_1.asm: Comment.
23330
233312001-10-01  Kevin Ryde  <kevin@swox.se>
23332
23333	* configure.in (--enable-cxx): New option for C++ support.
23334	Add cxx and tests/cxx subdirectories.
23335	* ltmain.sh, aclocal.m4: Update to libtool 2001-09-30.
23336
23337	* cxx/Makefile.am, cxx/Makefile.in, cxx/osdoprnti.cc, cxx/osfuns.cc,
23338	cxx/osmpf.cc, cxx/osmpq.cc, cxx/osmpz.cc: New files.
23339	* Makefile.am: Add them, in new libgmpxx.
23340	* gmp-h.in, gmp-impl.h: Prototypes and support.
23341	* tests/cxx/Makefile.am, tests/cxx/Makefile.in,
23342	tests/cxx/t-ostream.cc: New files.
23343
23344	* tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL,
23345	SPEED_ROUTINE_MPN_GCDEXT_ONE): mpn_gcdext needs size+1 for
23346	destinations.  Found by Torbjorn.
23347
23348	* gmp-h.in (__GNU_MP__, __GNU_MP_VERSION): Bump to 4.0.
23349	* mp-h.in (__GNU_MP__): Ditto.
23350	* gmp.texi, Makefile.am, compat.c: Amend version 3.2 to 4.0.
23351
23352	* acinclude.m4 (GMP_PROG_CXX_WORKS): New macro.
23353	(GMP_PROG_CC_WORKS): Write "conftest" test program, not a.out.
23354
23355	* gmp-impl.h (struct gmp_asprintf_t): Moved from printf/vasprintf.c.
23356	(GMP_ASPRINTF_T_INIT): New macro.
23357	(GMP_ASPRINTF_T_NEED): New macro, adapted from vasprintf.c NEED().
23358	* printf/vasprintf.c: Use these.
23359
23360	* printf/asprntffuns.c: New file.
23361	* printf/Makefile.am, Makefile.am: Add it.
23362	* printf/asprntffuns.c, printf/vasprintf.c, gmp-impl.h
23363	(__gmp_asprintf_memory, __gmp_asprintf_reps, __gmp_asprintf_final):
23364	Move to asprntffuns.c, rename to __gmp and make global, remove
23365	spurious formal parameters from __gmp_asprintf_final.
23366
23367	* configure.in (j90-*-*, sv1-*-*): Don't duplicate $path in $add_path.
23368	(*-*-mingw*): Don't assemble with -DPIC (as per cygwin).
23369
23370	* printf/snprntffuns.c (gmp_snprintf_final): Remove spurious formal
23371	parameters.
23372
23373	* tune/tuneup.c (POWM_THRESHOLD): Reduce stop_factor to 1.1 to help
23374	Cray vector systems.
23375
23376	* tests/misc.c (tests_rand_start): Print GMP_CHECK_RANDOMIZE=NN to
23377	facilitate cut and paste when re-running.
23378	* tests/mpz/t-inp_str.c (check_data): Add more diagnostic prints.
23379
233802001-09-30  Kent Boortz  <kent@swox.com>
23381
23382	* macos/configure, macos/Makefile.in, macos/README: Updates for gmp 4.
23383	* gmp-h.in (_GMP_H_HAVE_FILE): Recognise Apple MPW.
23384
233852001-09-30  Torbjorn Granlund  <tege@swox.com>
23386
23387	* mpn/cray/ieee/submul_1.c: Rewrite.  Streamline multiplications;
23388	use `majority' logic.
23389
233902001-09-27  Torbjorn Granlund  <tege@swox.com>
23391
23392	* gmp-h.in (__GMPN_AORS_1): Rewrite to work around Cray compiler bug.
23393
233942001-09-26  Torbjorn Granlund  <tege@swox.com>
23395
23396	* mpn/x86/pentium4/sse2/gmp-mparam.h: New file.
23397
233982001-09-26  Kevin Ryde  <kevin@swox.se>
23399
23400	* mpn/x86/pentium4/sse2/dive_1.asm: New file.
23401	* mpn/x86/pentium4/sse2/submul_1.asm: New file.
23402	* mpn/x86/pentium4/sse2/sqr_basecase.asm: New file.
23403
23404	* mpn/x86/pentium/copyi.asm: New file, based on past work by Torbjorn.
23405	* mpn/x86/pentium/copyi.asm: New file, ditto.
23406	* mpn/x86/pentium/com_n.asm: Rewrite, ditto.
23407
23408	* printf/snprntffuns.c (gmp_snprintf_format): Copy va_list in case
23409	vsnprintf trashes it.
23410	* printf/vasprintf.c (gmp_asprintf_format): Ditto.
23411	* gmp-impl.h, doprnt.c (va_copy): Move to gmp-impl.h.
23412
23413	* tests/mpz/t-cmp_d.c (check_low_z_one): Patch by Torbjorn for vax
23414	limited float range.
23415
234162001-09-23  Torbjorn Granlund  <tege@swox.com>
23417
23418	* mpn/vax/lshift.s: Change `jsob*' to `sob*'.
23419	* mpn/vax/rshift.s: Likewise.
23420
234212001-09-23  Kevin Ryde  <kevin@swox.se>
23422
23423	* mpn/x86/pentium4/sse2/mul_basecase.asm: Some simple but real code.
23424
23425	* printf/doprnt.c: Use va_copy for va_list variables, copy function
23426	parameter in case it's call-by-reference.
23427
23428	* tune/freq.c (speed_cpu_frequency_bsd_dmesg): New function.
23429	(speed_cpu_frequency_table): Use it.
23430
23431	* tune/many.pl (popcount, hamdist): Fix declared return value.
23432	(sb_divrem_mn): Remove a spurious duplicate entry.
23433	(CLEAN): Add tmp-$objbase.c when using that for .h files.
23434	(macro_speed): Give a default for .h files.
23435	Add ATTRIBUTE_CONST or __GMP_ATTRIBUTE_PURE as appropriate.
23436
23437	* tune/speed.h (SPEED_ROUTINE_MPN_MOD_CALL,
23438	SPEED_ROUTINE_MPN_PREINV_MOD_1, SPEED_ROUTINE_MPN_POPCOUNT,
23439	SPEED_ROUTINE_MPN_HAMDIST, SPEED_ROUTINE_MPN_GCD_1N,
23440	SPEED_ROUTINE_MPN_GCD_1_CALL, SPEED_ROUTINE_MPZ_JACOBI): Use return
23441	values so gcc 3 won't discard calls to pure or const functions.
23442	(mpn_mod_1_div, mpn_mod_1_inv): Add __GMP_ATTRIBUTE_PURE.
23443
234442001-09-22  Torbjorn Granlund  <tege@swox.com>
23445
23446	* mpn/x86/pentium4/sse2/mul_basecase.asm: New file, placeholder
23447	for real code, hiding the default x86 mul_basecase.asm.
23448
234492001-09-22  Kevin Ryde  <kevin@swox.se>
23450
23451	* configure.in (AC_PREREQ): Bump to 2.52.
23452	(m4_pattern_forbid, m4_pattern_allow): New calls, forbid GMP_.
23453	(AC_CHECK_HEADERS): Remove sys/types.h, already done by autoconf.
23454	* acinclude.m4, configure.in (GMP_GCC_NO_CPP_PRECOMP): New macro.
23455
23456	* tests/devel/try.c (TYPE_PREINV_MOD_1): Don't run size==0.
23457	(malloc_region): Need fd=-1 for mmap MAP_ANON on BSD.
23458
234592001-09-20  Torbjorn Granlund  <tege@swox.com>
23460
23461	* mpz/cong.c (mpz_congruent_p): Fix one-limb c<d test.
23462
23463	* longlong.h: Rewrite __i370__ smul_ppmm; enable also for __s390__.
23464
23465	* configure.in: Add support for IBM 360, 370, 390 families.
23466
234672001-09-20  Kevin Ryde  <kevin@swox.se>
23468
23469	* mpn/x86/pentium4/sse2/diveby3.asm: New file.
23470	* mpn/x86/pentium4/sse2/mode1o.asm: New file.
23471
234722001-09-16  Kevin Ryde  <kevin@swox.se>
23473
23474	* printf/doprnt.c: '#' means showpoint and showtrailing for %e, %f, %g.
23475	* tests/printf/t-printf.c (check_f): More test cases.
23476
234772001-09-15  Torbjorn Granlund  <tege@swox.com>
23478
23479	* gmp-h.in (__GMPN_AORS_1): Remove param TEST, add OP and CB.
23480	Postpone zeroing of (cout).
23481	(__GMPN_ADD_1, __GMPN_SUB_1): Corresponding changes.
23482
234832001-09-14  Kevin Ryde  <kevin@swox.se>
23484
23485	* ChangeLog: Merge in tests/rand/ChangeLog.
23486	* tests/rand/ChangeLog: Remove file.
23487
23488	* printf/doprnt.c: Fix handling of a plain format after a GMP one; no
23489	need to protect against negative precision internally.
23490	* tests/printf/t-printf.c (check_misc): More checks.
23491
234922001-09-12  Torbjorn Granlund  <tege@swox.com>
23493
23494	* mpn/cray/ieee/invert_limb.c: Add a PROLOGUE in a comment to have
23495	HAVE_NATIVE_... defined.
23496
234972001-09-11  Kevin Ryde  <kevin@swox.se>
23498
23499	* configure.in, gmp-h.in (__GMP_HAVE_HOST_CPU_FAMILY_power,
23500	__GMP_HAVE_HOST_CPU_FAMILY_powerpc): New AC_SUBSTs.
23501	* gmp-h.in (__GMPN_COPY_INCR): Use them to select the power/powerpc
23502	code, rather than preprocessor defines.
23503
23504	* acinclude.m4, configure.in (GMP_H_ANSI): New macro.
23505
23506	* gmp-h.in (__GMP_EXTERN_INLINE): Add a definition for SCO 8 cc.
23507
23508	* gmp-h.in, version.c (gmp_version): Make the pointer "const" as well
23509	as the string.
23510
23511	* acinclude.m4, configure.in (GMP_PROG_CC_IS_XLC): Recognise xlc when
23512	invoked under another name (cc, xlc128, etc).
23513	* acinclude.m4 (GMP_PROG_CC_IS_GCC): Print a message when recognised.
23514
235152001-09-11  Torbjorn Granlund  <tege@swox.com>
23516
23517	* gmp-h.in: Let __DECC mean __GMP_HAVE_CONST, etc.
23518	* mp-h.in: Likewise.
23519
235202001-09-10  Torbjorn Granlund  <tege@swox.com>
23521
23522	* mpn/x86/pentium4/mmx/lshift.asm: New file.
23523	* mpn/x86/pentium4/mmx/rshift.asm: New file.
23524
23525	* tests/mpn/t-iord_u.c (check_incr_data): Work around HP compiler bug.
23526	(check_decr_data): Likewise.
23527
235282001-09-08  Kevin Ryde  <kevin@swox.se>
23529
23530	* gmp.texi (Integer Logic and Bit Fiddling): Update mpz_hamdist
23531	behaviour, clarify mpz_popcount a touch.
23532	(Language Bindings): Add mlton, fix alphabetical order.
23533	(Single Limb Division): Describe 2 or 1/2 limbs at a time style.
23534
23535	* configure.in (AC_CHECK_FUNCS): Add mmap.
23536	* tests/devel/try.c (malloc_region): Use mmap if available.
23537
23538	* tests/refmpz.c, tests/tests.h (refmpz_hamdist): New function.
23539	* tests/mpz/t-hamdist.c: New file.
23540	* tests/mpz/Makefile.am: Add it.
23541
23542	* mpz/hamdist.c: Support neg/neg operands.
23543
23544	* macos/Makefile.in: Remove dual compile of mpq/aors.c and
23545	mpn/generic/popham.c.
23546
23547	* gmp-impl.h (popc_limb): New macro, adapted from mpn/generic/popham.c.
23548	For 64-bits reuse 0x33...33 constant.
23549	* mpn/generic/popcount.c, mpn/generic/hamdist.c: Split from popham.c,
23550	use popc_limb macro, remove unused "i", don't bother with "register"
23551	qualifiers.
23552	* mpn/generic/popham.c: Remove file.
23553
23554	* ltmain.sh, configure, aclocal.m4: Update to libtool 1.4.1, with one
23555	ltdll.c generation patch.
23556	* doc/configuration: Misc updates, note libtool patch used.
23557
23558	* mpn/x86/pentium4/sse2/mul_1.asm: Use pointer increments not indexed
23559	addressing, to get 4.0 c/l flat.
23560
23561	* tests/mpq/t-cmp_si.c (check_data): Use ULONG_MAX for denominators.
23562
23563	* tests/misc.c (mpz_negrandom): Use given rstate, not RANDS.
23564
235652001-09-07  Torbjorn Granlund  <tege@swox.com>
23566
23567	* mpn/x86/pentium4/sse2/addmul_1.asm: New file.
23568
235692001-09-04  Kevin Ryde  <kevin@swox.se>
23570
23571	* tune/freq.c: Define a HAVE for each speed_cpu_frequency routine to
23572	avoid duplicating conditionals.
23573	(speed_cpu_frequency_sco_etchw): New function.
23574	(speed_cpu_frequency_table): Use it.
23575	* tune/README: Mention SCO openunix 8 /etc/hw.
23576
23577	* mpz/fib_ui.c: Use ?: to avoid a gcc 3 bug on powerpc64.
23578	Store back a carry for limb<long.
23579
23580	* mpn/x86/k7/mmx/divrem_1.asm, mpn/x86/k7/mmx/mod_1.asm,
23581	mpn/x86/p6/mmx/divrem_1.asm: Fix a couple of comments.
23582
23583	* config.guess: Give m68020 for 68020 or better, not m68k.
23584	* configfsf.guess: Update to 2001-09-04.
23585
235862001-09-02  Kevin Ryde  <kevin@swox.se>
23587
23588	* configure.in (m68k-*-*): Let m68k mean 68000, not 68020.
23589	* gmp.texi (Notes for Particular Systems): Update.
23590
23591	* gmp-impl.h (union ieee_double_extract) [m68k]: Use longs, since int
23592	might be only 16 bits.
23593
23594	* tests/mpq/t-aors.c: New file.
23595	* tests/mpq/Makefile.am: Add it.
23596
23597	* tests/refmpq.c: New file.
23598	* tests/Makefile.am: Add it.
23599	* tests/tests.h: Add prototypes.
23600
23601	* mpq/aors.c: Share object code for mpq_add and mpq_sub.
23602	* Makefile.am, mpq/Makefile.am: Single mpq/aors.lo now.
23603
23604	* tests/devel/try.c (TYPE_SUBMUL_1): Use correct reference routine.
23605
236062001-08-30  Kevin Ryde  <kevin@swox.se>
23607
23608	* mpn/x86/x86-defs.m4 (cmov_available_p): Add pentium4.
23609
23610	* gmp-h.in: Put #define renamings with prototypes.
23611	Remove commented out #defines of gmp-impl.h things.
23612	(mpn_invert_limb): Remove #define, already in gmp-impl.h.
23613	(mpn_lshiftc, mpn_rshiftc): Remove #defines, unused.
23614	(mpn_addsub_nc): Add prototype to #define.
23615
236162001-08-28  Kevin Ryde  <kevin@swox.se>
23617
23618	* gmp.texi: Switch to GFDL.
23619	(Top): Arrange copyright and conditions to appear here too.  For
23620	clarity have all this before the miscellaneous macro definitions.
23621	(Copying): Refer to COPYING.LIB file, mention plain GPL2 in demo
23622	programs.
23623	(Contributors, References): Use @appendix rather than @unnumbered.
23624	(GNU Free Documentation License): New appendix.
23625	(@contents): Move to start of document, use only for tex (not html).
23626	(Debugging): Add leakbug.
23627	(Build Options): Add pentium4.
23628	(I/O of Rationals): Add mpq_inp_str.
23629
23630	* fdl.texi: New file, with two @appendix directive tweaks.
23631	* Makefile.am (gmp_TEXINFOS): Add it.
23632
23633	* tests/mpz/io.c: Check mpz_inp_str return against ftell, send error
23634	messages just to stdout.
23635
23636	* mpz/inp_str.c, gmp-impl.h (__gmpz_inp_str_nowhite): New function,
23637	and share a __gmp_free_func call.
23638	* mpq/inp_str.c: New file.
23639	* Makefile.am, mpq/Makefile.am: Add it.
23640	* tests/mpq/t-inp_str.c: New file.
23641	* tests/mpq/Makefile.am (check_PROGRAMS): Add it.
23642
23643	* configure.in, acconfig.h (HAVE_HOST_CPU_FAMILY_power,
23644	HAVE_HOST_CPU_FAMILY_powerpc, HAVE_HOST_CPU_FAMILY_x86): AC_DEFINEs
23645	for processor families.
23646	* gmp-impl.h: Use them, rather than cpp defines.
23647
23648	* demos/Makefile.am (primes_LDADD): Use $(LIBM), for log().
23649
23650	* tune/many.pl, tune/Makefile.am: Fix some from clean and distclean.
23651
236522001-08-26  Kevin Ryde  <kevin@swox.se>
23653
23654	* tests/devel/try.c (ARRAY_ITERATION): Make types match on "?:" legs.
23655	(TYPE_MPZ_JACOBI, TYPE_MPZ_KRONECKER): Remove some superseded code.
23656
23657	* tests/printf/t-printf.c (check_plain): Don't compare "all digits"
23658	precision against plain printf.
23659
23660	* tune/Makefile.am: Eliminate empty TUNE_MPZ_SRCS.
23661
23662	* configure, config.in, INSTALL.autoconf: Update to autoconf 2.52.
23663	* */Makefile.in, mdate-sh, missing, aclocal.m4, configure: Update to
23664	automake 1.5.
23665	* configfsf.guess, configfsf.sub: Update to 2001-08-23.
23666
236672001-08-24  Torbjorn Granlund  <tege@swox.com>
23668
23669	* demos/primes.c: Complete rewrite.
23670
236712001-08-24  Kevin Ryde  <kevin@swox.se>
23672
23673	* longlong.h: Test __ppc__ for apple darwin cc, reported by Jon
23674	Becker.  Also test __POWERPC__, PPC and __vxworks__.
23675
23676	* tune/speed.h (speed_cyclecounter) [x86]: Don't clobber ebx in PIC.
23677
236782001-08-22  Kevin Ryde  <kevin@swox.se>
23679
23680	* configure.in (x86 mmx): Correction to mmx path stripping.
23681
236822001-08-17  Kevin Ryde  <kevin@swox.se>
23683
23684	* configure.in, acinclude.m4, Makefile.am, printf/Makefile.am,
23685	tests/printf/Makefile.am, gmp-h.in, gmp-impl.h, gmp.texi: Remove C++
23686	support, for the time being.
23687	* printf/doprntfx.cc, doprntix.cc, osfuns.cc, osmpf.cc, osmpq.cc,
23688	osmpz.cc, tests/printf/t-ostream.cc: Remove files.
23689
23690	* printf/doprnt.c, printf/doprntf.c, gmp-impl.h: Use a single
23691	__gmp_doprnt_mpf, rather than a separate ndigits calculation.
23692	* printf/doprnt.c, printf/doprntf.c, gmp-impl.h, gmp.texi,
23693	tests/printf/t-printf.c: Let empty or -1 prec mean all digits for mpf.
23694	* printf/doprnt.c, tests/printf/t-printf.c: Accept h or l in %n; let
23695	negative "*" style width mean left justify.
23696
23697	* gmp-impl.h, mpf/get_str.c (MPF_SIGNIFICANT_DIGITS): New macro,
23698	extracted from mpf/get_str.c.
23699
23700	* libmp.sym: New file.
23701	* Makefile.am (libmp_la_LDFLAGS): Use it.
23702	(DISTCLEANFILES): Remove asm-syntax.h, no longer generated.
23703	Remove some comments about "make check".
23704
23705	* demos/perl/GMP.pm, GMP.xs, GMP/Mpf.pm: Add printf and sprintf,
23706	change get_str to string/exponent for floats, remove separate
23707	mpf_get_str.
23708	* demos/perl/GMP/Mpf.pm (overload_string): Use $# (default "%.g").
23709	* demos/perl/typemap: Fix some duplicate string entries.
23710	* demos/perl/test.pl: Update tests, split overloaded constants into ...
23711	* demos/perl/test2.pl: ... this new file.
23712	* demos/perl/Makefile.PL (clean): Add test.tmp.
23713
237142001-08-16  Kevin Ryde  <kevin@swox.se>
23715
23716	* printf/snprntffuns.c (gmp_snprintf_format): Correction to bufsize-1
23717	return value handling.
23718
23719	* demos/calc/calc.y: Reposition "%{" so copyright notice gets into
23720	generated files.
23721
23722	* INSTALL: Use gmp_printf.
23723
237242001-08-14  Kevin Ryde  <kevin@swox.se>
23725
23726	* mpz/inp_str.c: Fix return value (was 1 too big).
23727	* tests/mpz/t-inp_str.c: New file.
23728	* tests/mpz/Makefile.am: Add it.
23729
23730	* mpn/x86/pentium4/sse2/add_n.asm: New file.
23731	* mpn/x86/pentium4/sse2/sub_n.asm: New file.
23732	* mpn/x86/pentium4/sse2/mul_1.asm: New file.
23733
237342001-08-12  Kevin Ryde  <kevin@swox.se>
23735
23736	* printf/sprintffuns.c, printf/doprntf.c: Don't use sprintf return
23737	value (it's a pointer on SunOS 4).
23738
23739	* acinclude.m4 (GMP_ASM_X86_SSE2, GMP_STRIP_PATH): New macros.
23740	* configure.in: Add pentium4 support.
23741	* mpn/x86/pentium4, mpn/x86/pentium4/mmx, mpn/x86/pentium4/sse2: New
23742	directories.
23743	* mpn/x86/README: Update.
23744
237452001-08-10  Torbjorn Granlund  <tege@swox.com>
23746
23747	* demos/pexpr.c (setup_error_handler): Catch also SIGABRT.
23748
237492001-07-31  Kevin Ryde  <kevin@swox.se>
23750
23751	* tests/refmpn.c (refmpn_mul_1c): Allow low to high overlaps.
23752
23753	* gmp-h.in, gmp-impl.h (_gmp_rand): Move prototype to gmp-impl.h.
23754
23755	* tune/Makefile.am (EXTRA_DIST): Add many.pl.
23756
237572001-07-28  Kevin Ryde  <kevin@swox.se>
23758
23759	* gmp.texi (Random Number Functions): Old rand functions no longer use
23760	the C library.
23761
23762	* configure.in, acinclude.m4 (GMP_FUNC_VSNPRINTF): New macro.
23763
23764	* mpn/generic/get_str.c: Add an ASSERT for high limb non-zero.
23765
237662001-07-24  Kevin Ryde  <kevin@swox.se>
23767
23768	* gmp.texi (Build Options): Add --enable-cxx.
23769	(Converting Floats): Note mpf_get_str only generates accurately
23770	representable digits.
23771	(Low-level Functions): Note mpn_get_str requires non-zero high limb.
23772	(Formatted Output): New chapter.
23773	(Multiplication Algorithms): Use @quotation with @multitable.
23774	(Toom-Cook 3-Way Multiplication): Ditto.
23775
23776	* tests/memory.c (tests_free_nosize): New function.
23777	* tests/tests.h (tests_allocate etc): Add prototypes.
23778
23779	* tests/printf: New directory.
23780	* tests/printf/Makefile.am, t-printf.c, t-ostream.cc: New files.
23781	* configure.in, tests/Makefile.am: Add them.
23782
23783	* configure.in, acinclude.m4 (GMP_PROG_CXX): New macro.
23784	* configure.in (--enable-cxx): New option.
23785	(AC_CHECK_HEADERS): Add locale.h and sys/types.h, remove unistd.h.
23786	(AC_CHECK_TYPES): Add intmax_t, long double, long long, ptrdiff_t,
23787	quad_t.
23788	(AC_CHECK_FUNCS): Add localeconv, memset, obstack_vprintf, snprintf,
23789	strchr, vsnprintf.
23790	(AC_CHECK_DECLS): Add vfprintf.
23791
23792	* gmp-h.in, gmp-impl.h: Additions for gmp_printf etc.
23793
23794	* printf: New directory.
23795	* printf/Makefile.am, asprintf.c, doprnt.c, doprntf.c, doprntfx.cc,
23796	doprnti.c, doprntix.cc, fprintf.c, obprintf.c, obprntffuns.c,
23797	obvprintf.c, osfuns.cc, osmpf.cc, osmpq.cc, osmpz.cc, printf.c,
23798	printffuns.c, snprintf.c, snprntffuns.c, sprintf.c, sprintffuns.c,
23799	vasprintf.c, vfprintf.c, vprintf.c, vsnprintf.c, vsprintf.c: New
23800	files.
23801	* configure.in, Makefile.am: Add them.
23802
23803	* configure.in (HAVE_INLINE): Remove AC_DEFINE, unused.
23804	(AC_CHECK_TYPES): Don't test for void, assume it always exists.
23805
23806	* gmp-impl.h (__GMP_REALLOCATE_FUNC_MAYBE): New macro.
23807	* mpz/get_str.c, mpq/get_str.c, mpf/get_str.c: Use it.
23808
23809	* gmp-impl.h (mpn_fib2_ui): Use __MPN.
23810	(MPN_COPY_DECR): Fix an ASSERT.
23811	(CAST_TO_VOID): Remove macro.
23812
23813	* gmp-h.in (mpq_out_str): Give #define even without prototype.
23814	(mpz_cmp_d, mpz_cmpabs_d): Corrections to #defines.
23815
23816	* tests/devel/try.c: Add mpn_add and mpn_sub, don't use CAST_TO_VOID.
23817
238182001-07-23  Torbjorn Granlund  <tege@swox.com>
23819
23820	* config.guess: Recognize pentium4.
23821	* config.sub: Recognize pentium4.
23822
238232001-07-17  Kevin Ryde  <kevin@swox.se>
23824
23825	* gmp-h.in (__GMPN_AORS_1): Remove x86 and gcc versions, leave just
23826	one version.
23827	(__GMPN_ADD, __GMPN_SUB): New macros, rewrite of mpn_add and mpn_sub.
23828	(mpn_add, mpn_sub): Use them.
23829	(__GMPN_COPY_REST): New macro.
23830
23831	* gmp-h.in, gmp-impl.h, acinclude.m4: Remove __GMP_ASM_L and
23832	__GMP_LSYM_PREFIX, revert to ASM_L in gmp-impl.h and AC_DEFINE of
23833	LSYM_PREFIX.
23834
238352001-07-11  Kevin Ryde  <kevin@swox.se>
23836
23837	* gmp-h.in (__GMPN_ADD_1 etc) [x86]: Don't use this on egcs 2.91.
23838
23839	* mpz/fits_uint.c, fits_ulong.c, mpz/fits_ushort.c: Split up fits_u.c.
23840	* mpz/fits_u.c: Remove file.
23841	* mpz/Makefile.am, macos/Makefile.in: Update.
23842
23843	* tests/refmpn.c,tests.h (refmpn_copy): New function.
23844	* tests/devel/try.c (TYPE_ZERO): No return value from call.
23845	(TYPE_MODEXACT_1_ODD, TYPE_MODEXACT_1C_ODD): Share call with
23846	TYPE_MOD_1 and TYPE_MOD_1C.
23847	(MPN_COPY, __GMPN_COPY, __GMPN_COPY_INCR): Add testing.
23848
238492001-07-10  Kevin Ryde  <kevin@swox.se>
23850
23851	* gmp-h.in (__GMPN_COPY): Add form to help gcc on power and powerpc.
23852	* gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR, MPN_ZERO): Ditto.
23853	* mpn/powerpc64/copyi.asm, mpn/powerpc64/copyd.asm: Remove files.
23854
23855	* mpz/tdiv_ui.c: Eliminate some local variables (seems to save code on
23856	i386 gcc 2.95.x), remove a bogus comment about quotient.
23857
23858	* errno.c, gmp-impl.h (__gmp_exception, __gmp_divide_by_zero,
23859	__gmp_sqrt_of_negative): New functions.
23860	* gmp-impl.h (GMP_ERROR, DIVIDE_BY_ZERO, SQRT_OF_NEGATIVE): Use them.
23861
23862	* randclr.c, randraw.c: Use ASSERT(0) for unrecognised algorithms.
23863
238642001-07-07  Kevin Ryde  <kevin@swox.se>
23865
23866	* configure.in (powerpc*-*-*): Use -no-cpp-precomp for Darwin.
23867
23868	* tests/mpbsd/t-itom.c: Renamed from t-misc.c.
23869	* tests/mpbsd/t-misc.c: Remove file.
23870	* tests/mpbsd/Makefile.am: Update.
23871
23872	* tests/mpf/t-set_si.c,t-cmp_si.c,t-gsprec.c: Split from t-misc.c.
23873	* tests/mpf/t-misc.c: Remove file.
23874	* tests/mpf/Makefile.am: Update.
23875
23876	* tests/mpz/t-oddeven.c,t-set_si.c,t-cmp_si.c: Split from t-misc.c.
23877	* tests/mpz/t-misc.c: Remove file.
23878	* tests/mpz/Makefile.am: Update.
23879
23880	* stack-alloc.c: Add some alignment ASSERTs.
23881
23882	* gmp-impl.h (MPN_NORMALIZE): Add notes on x86 repe/scasl slow.
23883
23884	* tests/devel/try.c (MPN_ZERO): Add testing.
23885	* tune/speed.c,speed.h,common.c,many.pl (MPN_ZERO): Add measuring.
23886
23887	* mpn/x86/divrem_1.asm: Update a remark about gcc and "loop".
23888
23889	* tests/mpq/t-cmp_si.c: New file.
23890	* tests/mpq/Makefile.am: Add it.
23891
23892	* tests/misc.c,tests.h (mpq_set_str_or_abort): New function.
23893
23894	* mpq/cmp_si.c: New file.
23895	* Makefile.am, mpq/Makefile.am: Add it.
23896	* gmp-h.in (mpq_cmp_si): Add prototype.
23897	* gmp.texi (Comparing Rationals): Add doco.
23898
23899	* gmp-h.in (_GMP_H_HAVE_FILE): Add _FILE_DEFINED for microsoft, add
23900	notes on what symbols are for what systems.
23901
239022001-07-06  Torbjorn Granlund  <tege@swox.com>
23903
23904	* longlong.h (ibm032 umul_ppmm): Fix typo.
23905	* longlong.h (sparclite sdiv_qrnnd): Fix typo.
23906
239072001-07-03  Kevin Ryde  <kevin@swox.se>
23908
23909	* mpz/bin_ui.c (DIVIDE): Use MPN_DIVREM_OR_DIVEXACT_1.
23910	* mpz/bin_uiui.c (MULDIV): Ditto, and use local variables for size and
23911	pointer.
23912
23913	* acinclude.m4 (GMP_INCLUDE_GMP_H): New macro, use it everywhere gmp.h
23914	is wanted at configure time.
23915	* acinclude.m4, configure.in (GMP_H_EXTERN_INLINE, GMP_H_HAVE_FILE):
23916	New macros.
23917
23918	* gmp-h.in (__GMP_EXTERN_INLINE): Set to "inline" for C++.
23919	(mpn_add, mpn_sub): Use new style __GMP_EXTERN_INLINE.
23920	* gmp-h.in, mp-h.in, gmp-impl.h (_EXTERN_INLINE): Remove, unused.
23921	* mpn/generic/add.c, mpn/generic/sub.c: New files.
23922	* mpn/generic/inlines.c: Remove file.
23923	* configure.in, mpn/Makefile.am: Update.
23924
23925	* gmp.texi (GMP Basics): Note the need for stdio.h to get FILE
23926	prototypes.
23927
239282001-07-01  Kevin Ryde  <kevin@swox.se>
23929
23930	* gmp.texi (Build Options, Reentrancy): Updates for new
23931	--enable-alloca behaviour.
23932	(Debugging): Describe --enable-alloca=debug.
23933	(Miscellaneous Integer Functions): Note mpz_sizeinbase ignores signs.
23934	(Low-level Functions): Give a formula for mpn_gcdext cofactor.
23935	(Factorial Algorithm): New section.
23936	(Binomial Coefficients Algorithm): New section.
23937	Misc tweaks elsewhere.
23938
23939	* mpf/set_prc.c: Merge the two truncation conditionals, misc cleanups,
23940	no functional changes.
23941
23942	* mpn/*/gmp-mparam.h (DIVEXACT_1_THRESHOLD): Add tuned values.
23943	* gmp-impl.h (DIVEXACT_1_THRESHOLD): Make the default 0 when
23944	2*UMUL_TIME < UDIV_TIME.
23945
23946	* mpn/x86/p6/dive_1.asm: New file.
23947
23948	* mpn/x86/dive_1.asm: New file.
23949	* mpn/x86/gmp-mparam.h (DIVEXACT_1_THRESHOLD): Use it always.
23950
23951	* tests/refmpn.c, tests.h (refmpn_zero): New function.
23952	* tests/devel/try.c: Use it.
23953
23954	* tests/refmpn.c (refmpn_sb_divrem_mn): Use refmpn_cmp, not mpn_cmp.
23955
23956	* tests/mpf/t-get_d.c (main): Use || not |.
23957
23958	* tests/misc.c, tests/t-modlinv.c, tests/mpq/t-get_str.c,
23959	tests/mpf/reuse.c: Add string.h.
23960
239612001-06-29  Kevin Ryde  <kevin@swox.se>
23962
23963	* tune/speed.h (SPEED_ROUTINE_MPN_FIB2_UI,
23964	SPEED_ROUTINE_COUNT_ZEROS_C): Corrections to TMP block handling.
23965
23966	* gmp-impl.h (MPN_TOOM3_MUL_N_MINSIZE, MPN_TOOM3_SQR_N_MINSIZE):
23967	Corrections to these to account for adding tD into E.
23968	(MPN_INCR_U, MPN_DECR_U) [WANT_ASSERT]: Add size
23969	assertions, since mpn_add_1 and mpn_sub_1 from gmp.h don't get them.
23970	(MPN_DIVREM_OR_DIVEXACT_1): Add an assert of no remainder.
23971
23972	* assert.c: Add stdlib.h for abort prototype.
23973	* tests/spinner.c, trace.c, t-constants.c, t-count_zeros.c,
23974	t-gmpmax.c, t-modlinv.c: Ditto.
23975	* tests/mpz/t-bin.c, t-cmp.c, t-get_si.c, t-misc.c, t-popcount.c,
23976	t-set_str.c, t-sizeinbase.c: Ditto.
23977	* tests/mpq/t-equal.c, t-get_str.c, t-set_f.c, t-set_str.c: Ditto.
23978	* tests/mpf/t-fits.c, t-get_d.c, t-get_si.c, t-int_p.c, t-misc.c,
23979	t-trunc.c: Ditto.
23980	* tests/mpbsd/allfuns.c, t-misc.c: Ditto.
23981
23982	* mpn/generic/mul_n.c, mpz/cfdiv_r_2exp.c: Use MPN_INCR_U rather than
23983	mpn_incr_u.
23984
23985	* tests/devel/try.c (TYPE_SB_DIVREM_MN): More fixes for calling method.
23986
23987	* mpn/x86/k6/cross.pl: More insn exceptions.
23988
239892001-06-23  Kevin Ryde  <kevin@swox.se>
23990
23991	* gmp-h.in (__GMPN_ADD_1, __GMPN_SUB_1) [i386]: Fix some asm output
23992	constraints.
23993
23994	* gmp-impl.h (modlimb_invert): Mask after shifting, so mask constant
23995	fits a signed byte.
23996
23997	* tests/devel/try.c (TYPE_SB_DIVREM_MN): Fix initial fill of quotient
23998	with garbage.
23999
240002001-06-20  Kevin Ryde  <kevin@swox.se>
24001
24002	* config.guess (rs6000-*-aix4* | powerpc-*-aix4*): Suppress error
24003	messages if $CC_FOR_BUILD or program don't work.
24004
24005	* mpz/sqrt.c,sqrtrem.c: Special case for op==0, to avoid TMP_ALLOC(0).
24006	* tests/refmpf.c (refmpf_add, refmpf_sub): Avoid TMP_ALLOC(0).
24007
24008	* tests/mpn/t-aors_1.c: New file.
24009	* tests/mpn/Makefile.am: Add it.
24010
24011	* gmp-h.in (__GMPN_ADD_1, __GMPN_SUB_1): New macros, rewrite of
24012	mpn_add_1 and mpn_sub_1, better code for src==dst and/or n==1,
24013	separate versions for gcc x86, gcc generic, and non-gcc.
24014	(mpn_add_1, mpn_sub_1): Use them.
24015	(mpn_add, mpn_sub): Ditto, to get inlines on all compilers.
24016	(extern "C") [__cplusplus]: Let this encompass the extern inlines too.
24017	* mpn/generic/add_1.c,sub_1.c: New files, force code from gmp.h.
24018	* configure.in, mpn/Makefile.am: Add them.
24019
24020	* acinclude.m4 (GMP_ASM_LSYM_PREFIX): AC_SUBST __GMP_LSYM_PREFIX
24021	rather than AC_DEFINE LSYM_PREFIX.
24022	* gmp-h.in (__GMP_LSYM_PREFIX): New substitution.
24023	(__GMP_ASM_L): New macro.
24024	* gmp-impl.h (ASM_L): Use it.
24025
24026	* acinclude.m4, configure.in (GMP_C_ATTRIBUTE_MALLOC): New macro.
24027	* gmp-impl.h: Use it for all the malloc based TMP_ALLOCs.
24028
24029	* stack-alloc.h: Remove file.
24030	* tal-reent.c: New file.
24031	* Makefile.am: Update.
24032
24033	* acinclude.m4, configure.in (GMP_OPTION_ALLOCA): New macro, add
24034	malloc-reentrant method, use stack-alloc.c as malloc-notreentrant,
24035	make "reentrant" the default.
24036	* gmp-impl.h (__TMP_ALIGN): Moved from stack-alloc.c, use a union to
24037	determine the value, and demand only 4 bytes align on 32-bit systems.
24038	* gmp-impl.h (WANT_TMP_NOTREENTRANT): Move global parts of
24039	stack-alloc.h to here, allow non power-of-2 __TMP_ALIGN in TMP_ALLOC.
24040	* gmp-impl.h: Extend extern "C" to TMP_ALLOC declarations.
24041	* stack-alloc.c (tmp_stack): Move private parts of stack-alloc.h to
24042	here, use gmp-impl.h.
24043
24044	* gmp-impl.h (TMP_ALLOC_LIMBS_2): New macro.
24045	* mpz/fib_ui.c, mpz/jacobi.c, mpq/cmp.c, mpn/generic/fib2_ui.c: Use it.
24046
24047	* mpfr/exp2.c: Patch by Paul to match TMP_MARK and TMP_FREE in loop.
24048	* mpfr/sqrt.c: Scope nested TMP_DECL into nested { } block, patch by
24049	Paul, tweaked by me.
24050	* mpfr/agm.c: Ditto, and add a final TMP_FREE(marker2).
24051
24052	* gmp-h.in (mpn_cmp): Add __GMP_ATTRIBUTE_PURE.
24053
24054	* INSTALL: Clarify "make install", tweak formatting a bit.
24055
240562001-06-17  Kevin Ryde  <kevin@swox.se>
24057
24058	* configure.in, Makefile.am, gmp-impl.h: Add a debugging TMP_ALLOC,
24059	selected with --enable-alloca=debug.
24060	* tal-debug.c: New file.
24061	* configure.in, Makefile.am: Compile stack-alloc.c only for
24062	--disable-alloca.
24063	* assert.c (__gmp_assert_header): New function, split from
24064	__gmp_assert_fail.
24065
24066	* mpz/lcm.c: Don't TMP_MARK and then just return. Remove unnecessary
24067	_mpz_realloc prototype.
24068
24069	* mpn/generic/mul.c (mpn_sqr_n): Use __gmp_allocate_func for toom3
24070	temporary workspace.
24071
240722001-06-15  Kevin Ryde  <kevin@swox.se>
24073
24074	* tests/mpz/t-set_f.c: New file.
24075	* tests/mpz/Makefile.am (check_PROGRAMS): Add it.
24076
24077	* mpz/set_f.c: Share MPN_COPY between pad and trunc cases, do exp<=0
24078	test earlier, store SIZ(w) earlier.
24079
24080	* tests/t-count_zeros.c: New file.
24081	* tests/t-gmpmax.c: New file.
24082	* tests/Makefile.am (check_PROGRAMS): Add them.
24083
24084	* mp_clz_tab.c: Compile the table only if longlong.h says it's needed;
24085	add an internal-use-only comment.
24086	* tune/common.c: Force a __clz_tab for convenience when testing.
24087
24088	* mpn/x86/pentium/gmp-mparam.h, mpn/x86/pentium/mmx/gmp-mparam.h: Add
24089	COUNT_LEADING_ZEROS_NEED_CLZ_TAB, for mod_1.asm.
24090
24091	* longlong.h (count_leading_zeros) [pentium]: Decide to go with float
24092	method for p54.
24093	(count_leading_zeros) [alpha]: Add COUNT_LEADING_ZEROS_NEED_CLZ_TAB.
24094	(__clz_tab): Provide a prototype only if it's needed.
24095
24096	* tests/trace.c (mpz_trace): Don't use = on structures.
24097	(mpn_trace): Set _mp_alloc when creating mpz.
24098
240992001-06-12  Kevin Ryde  <kevin@swox.se>
24100
24101	* mpn/x86/divrem_1.asm: Amend some comments about P5 speed.
24102
24103	* tune/README: Clarify reconfigure on gmp-mparam.h update.
24104
24105	* mpn/x86/p6/copyd.asm: New file.
24106	* mpn/x86/p6/README: Update copyd and mod_1.
24107	* mpn/x86/copyd.asm: Amend some comments.
24108
24109	* gmp-impl.h (__builtin_constant_p): Add dummy for non-gcc.
24110	(mpn_incr_u, mpn_decr_u): Recognise incr==1 at compile time in the
24111	generic code on gcc.
24112
24113	* gmp-impl.h (ASSERT_ZERO_P, ASSERT_MPN_NONZERO_P): New macros.
24114	* mpn/generic/gcd_1.c, mpn/generic/mul_fft.c: Use them.
24115	* mpz/get_d.c: Add a private mpn_zero_p.
24116	* mpfr/trunc.c: Use own mpn_zero_p.
24117	* tune/speed.h (SPEED_ROUTINE_MPN_GCD_1N): Use refmpn_zero_p.
24118	* gmp-impl.h (mpn_zero_p): Remove, no longer needed.
24119
24120	* gmp-h.in, gmp-impl.h: Move MPN_CMP to gmp.h as __GMPN_CMP, leave an
24121	MPN_CMP alias in gmp-impl.h.
24122	* gmp-h.in (mpn_cmp): Add an inline version.
24123	* mpn/generic/cmp.c: Use __GMP_FORCE_mpn_cmp to get code from gmp.h.
24124
24125	* acinclude.m4 (GMP_C_ATTRIBUTE_MODE): New macro.
24126	* configure.in: Call it.
24127	* gmp-impl.h (SItype etc): Use it.
24128
24129	* randraw.c (lc): Change mpn_mul_basecase->mpn_mul,
24130	mpn_incr_u->MPN_INCR_U, abort->ASSERT_ALWAYS(0).
24131
24132	* longlong.h (count_leading_zeros) [pentiumpro]: Work around a partial
24133	register stall on gcc < 3.
24134
24135	* gmp.texi (Introduction to GMP): Add IA-64.
24136	(Notes for Particular Systems): i386 means generic x86.
24137
24138	* tests/t-modlinv.c: Use tests_start and tests_end.
24139
241402001-06-10  Kevin Ryde  <kevin@swox.se>
24141
24142	* gmp.texi (Number Theoretic Functions): mpz_jacobi only defined for b
24143	odd.  Separate the jacobi/legendre/kronecker descriptions.
24144	(Low-level Functions): Document mpn_mul_1 "incr" overlaps.
24145	(Language Bindings): New chapter.
24146
24147	* mpz/jacobi.c: Don't retaining old behaviour of mpz_jacobi on even b
24148	(it wasn't documented in 3.1.1).
24149	* mpz/jacobi.c, gmp-h.in (mpz_kronecker, mpz_legendre): Remove
24150	separate entrypoints, just #define to mpz_jacobi.
24151	* compat.c (__gmpz_legendre): Add compatibility entrypoint.
24152
24153	* mpn/generic/mul_1.c: Allow "incr" style overlaps.
24154	* tests/devel/try.c (param_init): Test this.
24155
24156	* mpf/mul_ui.c: Do size==0 test earlier.
24157
241582001-06-08  Kevin Ryde  <kevin@swox.se>
24159
24160	* gmp-impl.h (ULONG_HIGHBIT, UINT_HIGHBIT, USHRT_HIGHBIT): Cast
24161	ULONG_MAX etc to unsigned long etc before attempting to right shift.
24162
24163	* acinclude.m4 (GMP_ASM_LSYM_PREFIX): Add an AC_DEFINE of LSYM_PREFIX.
24164	* gmp-impl.h (ASM_L): New macro.
24165	(mpn_incr_u, mpn_decr_u, MPN_INCR_U, MPN_DECR_U): Add i386 optimized
24166	versions.
24167
24168	* mpn/hppa/*.s,S,asm: Use .label so the code works with gas on hppa
24169	GNU/Linux too, reported by LaMont Jones <lamont@smallone.fc.hp.com>.
24170	* mpn/hppa/README: Add some notes on this.
24171	* acinclude.m4 (GMP_ASM_LABEL_SUFFIX): Ditto.
24172
24173	* mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add dive_1.c,
24174	fib2_ui.c.
24175
24176	* tests/mpn/t-iord_u.c: New file.
24177	* tests/mpn/Makefile.am (check_PROGRAMS): Add it.
24178
24179	* configure.in (mips*-*-irix[6789]*): Make ABI=n32 the default, same
24180	as in gmp 3.1.
24181	* gmp.texi (ABI and ISA): Update.
24182
24183	* gmp.texi (Build Options): Misc tweaks.
24184	(Notes for Particular Systems): Describe windows DLL handling.
24185	(Known Build Problems): DJGPP needs bash 2.04.
24186	(Number Theoretic Functions): mpz_invert returns 0<=r<modulus; add
24187	mpz_fib2_ui, mpz_lucnum_ui, mpz_lucnum2_ui.
24188	(Fibonacci Numbers Algorithm): Update for new formulas used.
24189	(Lucas Numbers Algorithm): New section.
24190
24191	* tune/speed.c,speed.h,common.c,many.pl: Add mpn_fib2_ui, mpz_fib2_ui,
24192	mpz_lucnum_ui, mpz_lucnum2_ui.
24193	* demos/expr/exprz.c,README: Add lucnum.
24194	* demos/perl/GMP.pm,GMP.xs,GMP/Mpz.pm,test.pl: Add fib2, lucnum,
24195	lucnum2.
24196
24197	* tests/mpz/t-lucnum_ui.c: New file.
24198	* tests/mpz/Makefile.am (check_PROGRAMS): Add it.
24199	* tests/mpz/t-fib_ui.c: Check mpz_fib2_ui too, updates for new style
24200	MPN_FIB2_SIZE.
24201
24202	* tune/tuneup.c, tune/Makefile.am, gmp-impl.h, mpn/*/gmp-mparam.h:
24203	Remove FIB_THRESHOLD, no longer required.
24204
24205	* mpz/fib2_ui.c, mpz/lucnum_ui.c mpz/lucnum2_ui.c: New files.
24206	* Makefile.am, mpz/Makefile.am: Add them.
24207	* gmp-h.in (mpz_fib2_ui, mpz_lucnum_ui, mpz_lucnum2_ui): Add
24208	prototypes.
24209
24210	* mpn/generic/fib2_ui.c: New file.
24211	* configure.in (gmp_mpn_functions): Add it.
24212	* gmp-impl.h (mpn_fib2_ui, FIB_TABLE, etc): Add these.
24213	* mpz/fib_ui.c: Rewrite.
24214
24215	* acinclude.m4 (GMP_C_SIZES): Fix _LONG_LONG_LIMB define for mp_limb_t
24216	size test.
24217	(GMP_FUNC_ALLOCA): Add dummy __GMP_BITS_PER_MP_LIMB for gmp-h.in work.
24218
24219	* configure.in (CPPFLAGS): Remove -D__GMP_WITHIN_GMP, don't want it
24220	everywhere.
24221	* Makefile.am, mpn/Makefile.am, mpz/Makefile.am, mpq/Makefile.am,
24222	mpf/Makefile.am, mpbsd/Makefile.am (INCLUDES): Set -D__GMP_WITHIN_GMP.
24223
24224	* configure.in (*-*-msdosdjgpp*): Forcibly disable shared libraries,
24225	to make libtests.la work.
24226
24227	* acconfig.h (_LONG_LONG_LIMB, HAVE_MPFR): Remove dummy defines, no
24228	longer needed.
24229
24230	* mpz/set_ui.c: Store to _mp_d[0] unconditionally.
24231
242322001-05-27  Kevin Ryde  <kevin@swox.se>
24233
24234	* configure.in, gmp-h.in, mp-h.in: Add support for windows DLLs.
24235
242362001-05-26  Kevin Ryde  <kevin@swox.se>
24237
24238	* gmp.texi (ABI and ISA, Reentrancy): Minor tweaks
24239	(Notes for Package Builds): Note gmp.h is a generated file.
24240	(Notes for Particular Systems): -march=pentiumpro is used for gcc
24241	2.95.4 and up.
24242	(Assembler Loop Unrolling): Mention non power-of-2 unrolling.
24243	(Internals): New chapter.
24244	* mpf/README: Remove file.
24245
24246	* demos/expr/README: Miscellaneous rewordings.
24247
24248	* demos/perl: New directory.
24249	* demos/Makefile.am: Add it.
24250	* demos/perl/INSTALL, Makefile.PL, GMP.pm, GMP.xs, typemap,
24251	GMP/Mpz.pm, GMP/Mpq.pm, GMP/mpf.pm, GMP/Rand.pm, sample.pl, test.pl:
24252	New files.
24253
24254	* configure, aclocal.m4: Update to autoconf 2.50.
24255
24256	* configure, aclocal.m4, ltmain.sh: Update to libtool 1.4.
24257
24258	* configure, aclocal.m4, missing, ansi2knr.c, */Makefile.in: Update to
24259	automake 1.4f.
24260	* Makefile.am: Conditionalize mpfr in $(SUBDIRS) to handle mpfr.info.
24261	* mpfr/Makefile.am (INFO_DEPS): Remove previous mpfr.info handling.
24262	* mpn/Makefile.am (GENERIC_SOURCES): Remove this, just put mp_bases.c
24263	in libmpn_la_SOURCES.
24264	* tests/Makefile.am (tests.h): Move from EXTRA_HEADERS to
24265	libtests_la_SOURCES.
24266	* ltconfig: Remove file, no longer needed.
24267
24268	* Makefile.am (gmp-impl.h, longlong.h, stack-alloc.h): Move from
24269	EXTRA_DIST to libgmp_la_SOURCES, so they get included in TAGS.
24270	* tests/rand/Makefile.am (gmpstat.h): Move to libstat_la_SOURCES
24271	similarly.
24272
24273	* config.guess (68k-*-*): Use $SHELL not "sh", tweak some comments.
24274
24275	* mpfr/mpfr.texi (Introduction to MPFR): Tweak table formatting, note
24276	non-free programs must be able to be re-linked.
24277
242782001-05-20  Kevin Ryde  <kevin@swox.se>
24279
24280	* mpn/powerpc64/addmul_1.asm, mpn/powerpc64/mul_1.asm,
24281	mpn/powerpc64/submul_1.asm: Add carry-in entrypoints.
24282
242832001-05-17  Kevin Ryde  <kevin@swox.se>
24284
24285	* gmp.texi (ge): Fix definition for info.
24286	(Notes for Particular Systems): Mention 68k dragonball and cpu32.
24287	(Efficiency): Add static linking, more about in-place operations,
24288	describe mpq+/-integer using addmul.
24289	(Reporting Bugs): A couple of words about self-contained reports.
24290	(Floating-point Functions): Note exponent limitations of mpf_get_str
24291	and mpf_set_str.
24292	(Initializing Floats): Clarify mpf_get_prec, mpf_set_prec and
24293	mpf_set_prec_raw a bit.
24294	(Float Comparison): Note current mpf_eq deficiencies.
24295
24296	* gmp-h.in (__GMP_HAVE_CONST, __GMP_HAVE_PROTOTYPES,
24297	__GMP_HAVE_TOKEN_PASTE): Merge GNU ansidecl.h tests for ANSI compilers.
24298	* demos/expr/expr-impl-h.in: Ditto.
24299
24300	* gmp-impl.h (BITS_PER_MP_LIMB): Define from __GMP_BITS_PER_MP_LIMB if
24301	not already in gmp-mparam.h.
24302	* tests/t-constants.c (BITS_PER_MP_LIMB, __GMP_BITS_PER_MP_LIMB):
24303	Check these are the same.
24304
24305	* gmp-h.in (mpf_get_default_prec, mpf_get_prec, mpf_set_default_prec,
24306	mpf_set_prec_raw): Provide "extern inline" versions, use __GMPF on the
24307	macros.
24308	* mpf/get_dfl_prc.c, mpf/get_prc.c, mpf/set_dfl_prc.c,
24309	mpf/set_prc_raw.c: Get code from gmp.h using __GMP_FORCE.
24310
24311	* gmp-h.in, gmp-impl.h (__gmp_default_fp_limb_precision): Move from
24312	gmp-impl.h to gmp-h.in.
24313	(__GMPF_BITS_TO_PREC, __GMPF_PREC_TO_BITS): Ditto, and use __GMPF
24314	prefix and add a couple of casts.
24315	* gmp-h.in (__GMP_MAX): New macro.
24316	* mpf/init2.c mpf/set_prc.c: Update for __GMPF prefix.
24317
24318	* gmp-h.in (__GMP_BITS_PER_MP_LIMB): New templated define.
24319	* acinclude.m4 (GMP_C_SIZES): Add AC_SUBST __GMP_BITS_PER_MP_LIMB,
24320	remove AC_DEFINE BITS_PER_MP_LIMB.
24321
243222001-05-13  Kevin Ryde  <kevin@swox.se>
24323
24324	* gmp-h.in, gmp.texi, Makefile.am, mpz/Makefile.am, tests/mpz/t-pow.c:
24325	Remove mpz_si_pow_ui, pending full si support.
24326	* mpz/si_pow_ui.c: Remove file.
24327
243282001-05-11  Kevin Ryde  <kevin@swox.se>
24329
24330	* mpn/x86/pentium/dive_1.asm: New file.
24331
24332	* mpn/powerpc32/umul.asm: Use r on registers.
24333	* mpn/powerpc64/umul.asm: New file.
24334	* configure.in (powerpc*-*-*): Enable umul in extra_functions.
24335
24336	* tests/refmpn.c, tests/tests.h (refmpn_umul_ppmm): Use same arguments
24337	as normal mpn_umul_ppmm.
24338	(refmpn_mul_1c): Update.
24339	* tests/devel/try.c, tune/many.pl: Add some umul_ppmm testing support.
24340
24341	* mpn/x86/k6/mmx/popham.asm, mpn/x86/k7/mmx/popham.asm: Don't support
24342	size==0.
24343	* mpn/x86/pentium/popcount.asm, mpn/x86/pentium/hamdist.asm: Ditto,
24344	and shave a couple of cycles from the PIC entry code.
24345
24346	* mpz/mul.c: Use mpn_mul_1 for size==1 and mpn_mul_2 (if available)
24347	for size==2, to avoid copying; do vsize==0 test earlier.
24348
24349	* mpf/sub.c: Test r!=u before calling mpf_set.
24350	* mpf/add.c: Ditto, and share mpf_set between usize==0 and vsize==0.
24351
24352	* mpn/generic/tdiv_qr.c, mpq/get_d.c, mpf/div.c, mpf/set_q.c,
24353	mpf/set_str.c, mpf/ui_div.c: Test for high bit set, not for
24354	count_leading_zeros zero.
24355
24356	* acinclude.m4 (GMP_PROG_AR, GMP_PROG_NM): Print a message if extra
24357	flags are added.
24358
24359	* tests/mpz/t-mul_i.c: New file.
24360	* tests/mpz/Makefile.am: Add it.
24361
24362	* mpz/mul_siui.c (mpz_mul_si): Fix for -0x80..00 on long long limb.
24363
24364	* gmp-h.in (mpf_set_si, mpf_set_ui): Revert last change, set exp to 0
24365	when n==0.
24366	* mpf/ceilfloor.c, mpf/trunc.c: Fix exp to 0 when setting r to 0.
24367	* gmp-impl.h (MPF_CHECK_FORMAT): Check exp==0 when size==0.
24368
243692001-05-07  Kevin Ryde  <kevin@swox.se>
24370
24371	* gmp-h.in (mpf_set_si, mpf_set_ui): Don't bother setting _mp_exp to 0
24372	when n==0 (use 1 unconditionally).
24373	* tests/mpf/t-misc.c (check_mpf_set_si): Don't demand anything of
24374	_mp_exp when _mp_size is zero.
24375
24376	* mpn/x86/README: Note gas _GLOBAL_OFFSET_TABLE_ with leal problem.
24377
24378	* gmp-h.in (mpz_fits_uint_p, mpz_fits_ulong_p, mpz_fits_ushort_p):
24379	Provide these as "extern inline"s.
24380	(__GMP_UINT_MAX, __GMP_ULONG_MAX, __GMP_USHRT_MAX): New macros.
24381	(mpz_popcount): Use __GMP_ULONG_MAX.
24382	* gmp-impl.h (UINT_MAX, ULONG_MAX, USHRT_MAX): Use __GMP_U*_MAX, if
24383	not already defined.
24384	* mpz/fits_u.c: Use the code from gmp.h.
24385
243862001-05-06  Kevin Ryde  <kevin@swox.se>
24387
24388	* mpn/x86/k7/dive_1.asm: New file.
24389	* mpn/x86/k7/gcd_1.asm: New file.
24390	* mpn/asm-defs.m4 (m4_count_trailing_zeros): New macro.
24391
24392	* gmp-h.in (mpz_get_ui, mpz_getlimbn, mpz_set_q, mpz_perfect_square_p,
24393	mpz_popcount, mpz_size, mpf_set_ui, mpf_set_si, mpf_size): Provide
24394	these as "extern inlines".
24395	Use just one big extern "C" block.
24396	* mpz/getlimbn.c, mpz/get_ui.c, mpz/perfsqr.c, mpz/popcount.c
24397	mpz/set_q.c, mpz/size.c, mpf/set_si.c, mpf/set_ui.c, mpf/size.c: Use
24398	__GMP_FORCE to get code from gmp.h.
24399
244002001-05-03  Kevin Ryde  <kevin@swox.se>
24401
24402	* extract-dbl.c: Add ASSERT d>=0.
24403
24404	* gmp.texi (Efficiency): Add mpz_addmul etc for mpz+=integer, add
24405	mpz_neg etc in-place.
24406	(Integer Arithmetic): Add mpz_addmul, mpz_submul, mpz_submul_ui.
24407	(Initializing Rationals): Add mpq_set_str.
24408	(Low-level Functions): mpn_set_str requires strsize >= 1.
24409
24410	* gmp-h.in (__GMP_EXTERN_INLINE, __GMP_ABS): New macros.
24411	(mpz_abs, mpq_abs, mpf_abs, mpz_neg, mpq_neg, mpf_neg): Provide inline
24412	versions.
24413	* mpz/abs.c, mpq/abs.c, mpf/abs.c, mpz/neg.c, mpq/neg.c, mpf/neg.c:
24414	Add suitable __GMP_FORCE to turn off inline versions.
24415
24416	* tests/mpz/t-aorsmul.c,t-cmp_d.c,t-popcount,t-set_str.c: New files.
24417	* tests/mpz/Makefile.am: Add them.
24418
24419	* mpz/aorsmul_i.c: New file, rewrite of addmul_ui.c.  Add
24420	mpz_submul_ui entrypoint, share more code between some of the
24421	conditionals, use mpn_mul_1c if available.
24422	* mpz/addmul_ui.c: Remove file.
24423	* mpz/aorsmul.c: New file.
24424	* Makefile.am, mpz/Makefile.am: Update.
24425	* gmp-h.in (mpz_addmul, mpz_submul, mpz_submul_ui): Add prototypes.
24426	* gmp-impl.h (mpz_aorsmul_1): Add prototype.
24427
24428	* tests/mpq/t-set_str.c: New file.
24429	* tests/mpq/Makefile.am: Add it.
24430
24431	* mpq/set_str.c: New file.
24432	* Makefile.am, mpq/Makefile.am: Add it.
24433	* gmp-h.in (mpq_set_str): Add prototype.
24434
24435	* mpz/set_str.c: Fix for trailing white space on zero, eg. "0 ".
24436	* mpn/generic/set_str.c: Add ASSERT str_len >= 1.
24437
24438	* gmp-h.in, gmp-impl.h (mpn_incr_u, mpn_decr_u): Move to gmp-impl.h.
24439	* gmp-impl.h (MPN_INCR_U, MPN_DECR_U): New macros.
24440
244412001-04-30  Kevin Ryde  <kevin@swox.se>
24442
24443	* tests/mpz/t-lcm.c: New file.
24444	* tests/mpz/Makefile.am (check_PROGRAMS): Add it.
24445
24446	* mpz/lcm.c: Add one limb special case.
24447
24448	* mpz/lcm_ui.c: New file.
24449	* Makefile.am, mpz/Makefile.am: Add it.
24450	* gmp-h.in (mpz_lcm_ui): Add prototype.
24451	* gmp.texi (Number Theoretic Functions): Add mpz_lcm_ui, document lcm
24452	now always positive.
24453
24454	* mp-h.in (mp_size_t, mp_exp_t): Fix typedefs to match gmp-h.in.
24455
24456	* gmp-h.in (mpn_add_1, mpn_add, mpn_sub_1, mpn_sub): Remove K&R
24457	function defines (ansi2knr will handle mpn/inline.c, and just ansi is
24458	enough for gcc extern inline).
24459
24460	* gmp-h.in (__GMP_HAVE_TOKEN_PASTE): New macro.
24461	(__MPN): Use it.
24462	* gmp-impl.h (CNST_LIMB): Ditto.
24463
24464	* gmp-h.in, mp-h.in (__gmp_const, __gmp_signed, _PROTO, __MPN): Use
24465	ANSI forms on Microsoft C.
24466	(__GMP_HAVE_CONST): New define.
24467	* gmp-impl.h (const, signed): Use it.
24468
24469	* demos/expr/expr-impl-h.in (<stdarg.h>): Use this with Microsoft C.
24470	(HAVE_STDARG): New define.
24471	* demos/expr/expr.c,exprz.c,exprq.c,exprf.c,exprfr.c: Use it.
24472
24473	* acinclude.m4 (GMP_C_STDARG): New macro.
24474	* configure.in: Call it.
24475	* rand.c: Use it.
24476
24477	* configure.in (AC_PROG_CC_STDC): New test.
24478
244792001-04-25  Kevin Ryde  <kevin@swox.se>
24480
24481	* mpn/x86/k6/mmx/dive_1.asm: New file.
24482	* mpn/x86/x86-defs.m4 (Zdisp): Two more insns.
24483
24484	* mpn/x86/pentium/mul_2.asm: New file.
24485	* mpn/asm-defs.m4: Add define_mpn(mul_2).
24486	* acconfig.h (HAVE_NATIVE_mpn_divexact_1, mul_2): Add templates.
24487
24488	* configure.in (ABI): Use AC_ARG_VAR.
24489
24490	* tests/devel/try.c: Run reference function when validate fails.
24491
24492	* mpq/get_str.c: Fixes for negative bases.
24493	* tests/mpq/t-get_str.c: Check negative bases.
24494	* tests/misc.c,tests.h (__gmp_allocate_strdup, strtoupper): New
24495	functions.
24496
244972001-04-24  Torbjorn Granlund  <tege@swox.com>
24498
24499	* mpz/lcm.c (mpz_lcm): Make result always positive.
24500
24501	* gmp-h.in (mpz_inp_binary, mpz_out_binary): Remove declarations.
24502
245032001-04-22  Kevin Ryde  <kevin@swox.se>
24504
24505	* mpn/powerpc64/addsub_n.asm: Use config.m4 not asm-syntax.m4.
24506
24507	* mpz/cmp_d.c, mpz/cmpabs_d.c: New files.
24508	* Makefile.am, mpz/Makefile.am: Add them.
24509	* mpf/cmp_d.c, mpf/get_dfl_prec.c: New files.
24510	* Makefile.am, mpf/Makefile.am: Add them.
24511	* gmp-h.in (mpz_cmp_d, mpz_cmpabs_d, mpf_cmp_d, mpf_get_default_prec):
24512	Add prototypes.
24513	* gmp.texi: Add documentation.
24514
24515	* mpf/set_prc.c: Avoid a realloc call if already the right precision.
24516
24517	* gmp-impl.h (MPF_BITS_TO_PREC, MPF_PREC_TO_BITS): New macros.
24518	* mpf/get_prc.c, init2.c, set_dfl_prec.c, set_prc.c, set_prc_raw.c:
24519	Use them.
24520
245212001-04-20  Kevin Ryde  <kevin@swox.se>
24522
24523	* tests/devel/try.c: Don't test size==0 on mpn_popcount and
24524	mpn_hamdist; add testing for mpn_divexact_1; print some limb values
24525	with mpn_trace not printf.
24526
24527	* mpz/popcount.c, mpz/hamdist.c: Don't pass size==0 to mpn_popcount
24528	and mpn_hamdist.
24529	* mpn/generic/popham.c: Don't support size==0.
24530
24531	* config.guess (m68k-*-*): Detect m68010, return m68360 for cpu32,
24532	cleanup the nesting a bit.
24533
24534	* gmp.texi (Integer Division): Fix mpz_congruent_2exp_p "c" type.
24535	(Integer Division): Add mpz_divexact_ui.
24536	(Number Theoretic Functions): Fix mpz_nextprime return type.
24537	(Exact Remainder): Divisibility tests now implemented.
24538	And more index entries in a few places.
24539
24540	* tests/mpz/dive_ui.c: New file.
24541	* tests/mpz/Makefile.am (check_PROGRAMS): Add it.
24542
24543	* mpz/dive_ui.c: New file.
24544	* Makefile.am, mpz/Makefile.am: Add it.
24545	* gmp-h.in (mpz_divexact_ui): Add prototype.
24546
24547	* tune/many.pl, tune/speed.h: Add special mpn_back_to_back for
24548	development.
24549
24550	* gmp-impl.h (MPN_DIVREM_OR_DIVEXACT_1): New macro.
24551	* mpz/divexact.c: Use it.
24552
24553	* gmp-impl.h (DIVEXACT_1_THRESHOLD): New threshold.
24554	* tune/tuneup.c: Tune it.
24555
24556	* tune/speed.c,speed.h,common.c,many.pl: Add measuring of
24557	mpn_divexact_1, mpn_copyi, mpn_copyd.
24558
24559	* mpn/generic/dive_1.c: New file.
24560	* configure.in (gmp_mpn_functions): Add it.
24561	* gmp-impl.h (mpn_divexact_1): Add prototype.
24562	* mpn/asm-defs.m4: Add define_mpn(divexact_1).
24563
24564	* tests/mpn: New directory.
24565	* tests/Makefile.am: Add it.
24566	* tests/mpn/Makefile.am: New file.
24567	* configure.in (AC_OUTPUT): Add it.
24568	* tests/mpn/t-asmtype.c: New file.
24569
24570	* configure, config.in: Update to autoconf 2.49d.
24571
24572	* configure.in, gmp-h.in, mp-h.in, demos/expr/expr-impl-h.in: Revert
24573	to generating gmp.h, mp.h and expr-impl.h with AC_OUTPUT and AC_SUBST.
24574
24575	* configure.in (m68*-*-*): Oops, m683?2 is 68000, m68360 is cpu32.
24576	* mpn/m68k/m68k-defs.m4 (scale_available_p): Ditto.
24577
24578	* configure.in (underscore, asm_align): Remove these variables, unused.
24579	(GMP_ASM_*): Sort by AC_REQUIREs, to avoid duplication.
24580	* acinclude.m4 (GMP_ASM_UNDERSCORE, GMP_ASM_ALIGN_LOG): Remove support
24581	for actions, no longer needed.
24582
245832001-04-17  Kevin Ryde  <kevin@swox.se>
24584
24585	* config.guess (m68k-*-*): Look for cpu in linux kernel /proc/cpuinfo.
24586
24587	* acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO): The -mpentiumpro problem is
24588	fixed in 2.95.4, so test for that.
24589	(GMP_ASM_TYPE): Amend some comments.
24590
24591	* tune/freq.c (speed_cpu_frequency_sysctl): Avoid having unused
24592	variables on GNU/Linux.
24593
24594	* mpn/asm-defs.m4 (m4_instruction_wrapper): Fix a quoting problem if
24595	the name of the file is a macro.
24596
245972001-04-15  Kevin Ryde  <kevin@swox.se>
24598
24599	* mpn/powerpc64/*.asm: Add speeds on ppc630.
24600
24601	* acconfig.h: Add dummy templates for _LONG_LONG_LIMB and HAVE_MPFR.
24602	* configure.in: Ensure config.in is the last AM_CONFIG_HEADER,
24603	which autoheader requires.
24604
24605	* mpn/x86/pentium/popcount.asm: New file.
24606	* mpn/x86/pentium/hamdist.asm: New file.
24607
24608	* mpn/asm-defs.m4: (m4_popcount): New macro.
24609	Amend a few comments elsewhere.
24610
24611	* acinclude.m4 (GMP_ASM_RODATA): If possible, grep compiler output for
24612	the right directive.
24613
24614	* tune/speed.c: Print clock speed in MHz, not cycle time.
24615
24616	* configure.in (AC_CHECK_HEADERS): Check for sys/processor.h.
24617	* tune/freq.c (speed_cpu_frequency_processor_info): Require
24618	<sys/processor.h> to exist, to differentiate the different
24619	processor_info on Darwin.
24620	(speed_cpu_frequency_sysctlbyname): Remove hw.model test which is in
24621	speed_cpu_frequency_sysctl.
24622	(speed_cpu_frequency_sysctl): Add hw.cpufrequency for Darwin.
24623
24624	* gmp-impl.h (MPN_LOGOPS_N_INLINE, mpn_and_n ... mpn_xnor_n): Use a
24625	single expression argument for the different operations, necessary for
24626	the Darwin "smart" preprocessor.
24627
24628	* mpn/m68k/t-m68k-defs.pl: Allow white space in m4_definsn and
24629	m4_defbranch.
24630
24631	* tune/many.pl: Change RM_TMP_S to RM_TMP to match mpn/Makeasm.am,
24632	avoid a possibly undefined array in a diagnostic, add more renaming to
24633	hamdist.
24634
246352001-04-13  Kevin Ryde  <kevin@swox.se>
24636
24637	* ltmain.sh, aclocal.m4, configure, config.in: Update to libtool 1.3d.
24638	* configure.in: Change ac_ to lt_ in lt_cv_archive_cmds_need_lc and
24639	lt_cv_proc_cc_pic.
24640
24641	* config.guess (m68*-*-*): Detect exact cpu with BSD sysctl hw.model,
24642	detect 68000/68010 with trapf, detect 68302 with bfffo.
24643
246442001-04-11  Kevin Ryde  <kevin@swox.se>
24645
24646	* acinclude.m4 (GMP_ASM_M68K_INSTRUCTION, GMP_ASM_M68K_ADDRESSING,
24647	GMP_ASM_M68K_BRANCHES): New macros.
24648	* configure.in: Use them, remove old 68k configs, use mc68020 udiv and
24649	umul.
24650
24651	* mpn/m68k/m68k-defs.m4: New file.
24652	* mpn/m68k/t-m68k-defs.pl: New file.
24653	* mpn/m68k/*.asm: New files, converted from .S.  Merge add_n and sub_n
24654	to aors_n, ditto mc68020 addmul_1 and submul_1 to aorsmul_1.  No
24655	object code changes (except .type and .size now used on NetBSD 1.4).
24656	* mpn/m68k/README: New file.
24657	* mpn/m68k/*.S, */*.S, syntax.h: Remove files.
24658
24659	* configure.in (m68*-*-netbsd1.4*): Pretend getrusage doesn't exist.
24660	* tune/README: Update.
24661
24662	* configure.in (powerpc*-*-*): For the benefit of Darwin 1.3, add cc
24663	to cclist, make gcc_cflags -Wa,-mppc optional.
24664
246652001-04-06  Kevin Ryde  <kevin@swox.se>
24666
24667	* mpn/lisp/gmpasm-mode.el (gmpasm-comment-start-regexp): Add | for 68k.
24668	(gmpasm-mode-syntax-table): Add to comments.
24669
24670	* tests/mpz/reuse.c (dsi_div_func_names): Add names for cdiv_[qr]_2exp.
24671
246722001-04-04  Kevin Ryde  <kevin@swox.se>
24673
24674	* acinclude.m4 (GMP_M4_M4WRAP_SPURIOUS): Fix test so as to actually
24675	detect the problem, add notes on m68k netbsd 1.4.1.
24676
24677	* gmp.texi (Compatibility with older versions): Note libmp
24678	compatibility.
24679
246802001-04-03  Kevin Ryde  <kevin@swox.se>
24681
24682	* tests/mpz/reuse.c: Add mpz_cdiv_q_2exp and mpz_cdiv_r_2exp.
24683
24684	* tests/mpz/t-pow.c: Drag in refmpn.o when testing mpz_pow_ui etc with
24685	refmpn_mul_2.
24686
24687	* tune/speed.c,speed.h,common.c,many.pl: Add measuring of mpn_com_n
24688	and mpn_mul_2.
24689	* tests/devel/try.c: Add testing of mpn_mul_2, and a
24690	DATA_MULTIPLE_DIVISOR attribute.
24691
24692	* gmp.texi (Build Options): List more m68k's.
24693	(Build Options): Add cross reference to tex2html.
24694	(Notes for Particular Systems): Add m68k means 68020 or up.
24695	(Rational Conversions): New section, with mpq_get_d, mpq_set_d and
24696	mpq_set_f from Miscellaneous, and new mpq_set_str.
24697	(Applying Integer Functions): Move mpq_get_num, mpq_get_den,
24698	mpq_set_num and mpq_set_den from Misc.
24699	(Miscellaneous Rational Functions): Remove section.
24700	(Custom Allocation): Partial rewrite for various clarifications.
24701	(References): Improve line breaks near URLs.
24702
24703	* acinclude.m4 (GMP_GCC_M68K_OPTIMIZE): New macro.
24704	* configure.in (m68*-*-*): Use it to run gcc 2.95.x at -O not -O2.
24705	(m680?0-*-*, m683?2-*-*, m68360-*-*): Add optional gcc -m options.
24706
24707	* tests/mpz/t-cmp.c: New file.
24708	* tests/mpz/t-sizeinbase.c: New file.
24709	* tests/mpz/Makefile.am: Add them.
24710
24711	* gmp-impl.h (MPN_CMP): New macro.
24712	* mpz/cmp.c,cmpabs.c: Use it, and minor cleanups too.
24713
24714	* tests/mpq/t-equal.c: New file.
24715	* tests/mpq/t-get_str.c: New file.
24716	* tests/mpq/Makefile.am: Add them.
24717
24718	* mpq/get_str.c: New file.
24719	* Makefile.am, mpq/Makefile.am: Add it.
24720	* gmp-h.in (mpq_get_str): Add prototype.
24721
24722	* mpq/equal.c: Rewrite using inline compare loops.
24723
24724	* tests/refmpn.c,tests.h (refmpn_mul_2): Fix parameter order.
24725	* mpz/n_pow_ui.c: Fix mpn_mul_2 calls parameter order.
24726
247272001-03-29  Kevin Ryde  <kevin@swox.se>
24728
24729	* tests/mpf/t-trunc.c: New file.
24730	* tests/mpf/Makefile.am (check_PROGRAMS): Add it.
24731	* gmp-impl.h (MPF_CHECK_FORMAT): New macro.
24732
24733	* mpf/trunc.c: New file, rewrite of integer.c, preserve prec+1 in
24734	copy, don't copy if unnecessary.
24735	* mpf/ceilfloor.c: New file likewise, and use common subroutine for
24736	ceil and floor.
24737	* mpf/integer.c: Remove file.
24738	* Makefile.am, mpf/Makefile.am, macos/Makefile.in: Update.
24739
24740	* acinclude.m4 (GMP_GCC_VERSION_GE): New macro.
24741	(GMP_GCC_MARCH_PENTIUMPRO): Use it, remove CCBASE parameter (don't
24742	bother checking it's gcc).
24743	(GMP_GCC_ARM_UMODSI): New macro.
24744	* configure.in (GMP_GCC_MARCH_PENTIUMPRO): Update parameters.
24745	(arm*-*-*): Use GMP_GCC_ARM_UMODSI.
24746	* gmp.texi (Notes for Particular Systems): Add arm gcc requirements.
24747
247482001-03-28  Kevin Ryde  <kevin@swox.se>
24749
24750	* gmp.texi (Converting Integers): Document mpz_getlimbn using absolute
24751	value and giving zero for N out of range, move to end of section.
24752
24753	* tests/refmpn.c (refmpn_tdiv_qr): Use refmpn_divmod_1 rather than
24754	refmpn_divrem_1.
24755	* tests/tests.h: Add some prototypes that were missing.
24756
24757	* mpz/tdiv_q_ui.c: Remove a comment that belonged to mpz_tdiv_r_ui.
24758
247592001-03-26  Torbjorn Granlund  <tege@swox.com>
24760
24761	* mpn/generic/gcdext.c: Handle carry overflow after m*n multiply code
24762	in both arms.  Partially combine multiply arms.
24763
247642001-03-24  Kevin Ryde  <kevin@swox.se>
24765
24766	* longlong.h: Add comments to P5 count_leading_zeros.
24767
24768	* demos/expr/exprz.c,t-expr.c,README: Add congruent_p and divisible_p.
24769
247702001-03-23  Kevin Ryde  <kevin@swox.se>
24771
24772	* gmp.texi (GMPceil, GMPfloor, ge, le): New macros.
24773	(Integer Division, mpn_cmp, mpn_sqrtrem, Algorithms): Use them.
24774	(mpn_bdivmod): Refer to mp_bits_per_limb, not BITS_PER_MP_LIMB, and
24775	improve formatting a bit.
24776	(mpn_lshift, mpn_rshift): Clarify the return values, and use {rp,n}
24777	for the destination.
24778	Miscellaneous minor rewordings in a few places.
24779
24780	* mpn/arm/arm-defs.m4: New file.
24781	* configure.in (arm*-*-*): Use it.
24782	* mpn/arm/*.asm: Use changecom and registers from arm-defs.m4, use L()
24783	for local labels.
24784
24785	* mpn/x86/k6/mmx/com_n.asm: Relax code alignment (same speed).
24786
24787	* gmp-h.in (__GMP_ATTRIBUTE_PURE): Use __pure__ to avoid application
24788	namespace.
24789
24790	* gmp-impl.h (ABS): Add parens around argument.
24791
247922001-03-20  Kevin Ryde  <kevin@swox.se>
24793
24794	* acinclude.m4 (GMP_PROG_M4): Use AC_ARG_VAR on $M4.
24795
24796	* acinclude.m4 (GMP_M4_M4WRAP_SPURIOUS): New macro.
24797	* configure.in: Use it.
24798	* mpn/asm-defs.m4: Ditto.
24799
248002001-03-18  Kevin Ryde  <kevin@swox.se>
24801
24802	* mpn/x86/pentium/logops_n.asm: New file.
24803
24804	* mpn/x86/k6/k62mmx/copyd.asm: Rewrite, smaller and simpler, faster on
24805	small sizes, slower on big sizes (about half the time).
24806	* mpn/x86/k6/k62mmx/copyi.asm: Remove file, in favour of generic x86.
24807	* mpn/x86/copyi.asm: Add some comments.
24808	* mpn/x86/k6/README: Update.
24809
24810	* mpn/x86/k6/gcd_1.asm: New file.
24811
24812	* gmp-impl.h (NEG_MOD): Fix type of __dnorm.
24813
24814	* acinclude.m4 (GMP_C_SIZES): Fix use of __GMP_WITHIN_CONFIGURE.
24815
248162001-03-15  Kevin Ryde  <kevin@swox.se>
24817
24818	* gmp.texi (GMPabs): New macro.
24819	(Float Comparison - mpf_reldiff): Use it.
24820	(Integer Comparisons - mpz_cmpabs): Ditto, puts "abs" in info.
24821	(Reentrancy): Update notes on old random functions.
24822	(Karatsuba Multiplication): Better characterize the effect of basecase
24823	speedups on the thresholds, pointed out by Torbjorn.
24824
24825	* tune/README: Notes on the 1x1 div threshold for mpn_gcd_1.
24826
24827	* tests/misc.c (mpz_pow2abs_p, mpz_flipbit, mpz_errandomb,
24828	mpz_errandomb_nonzero, mpz_negrandom): New functions.
24829	(mpz_erandomb, mpz_erandomb_nonzero): Use urandom().
24830	* tests/spinner.c (spinner_wanted, spinner_tick): Make global.
24831	* tests/tests.h: Update prototypes.
24832
24833	* tests/mpz/t-cong.c, tests/mpz/t-cong_2exp.c: New files.
24834	* tests/mpz/Makefile.am (check_PROGRAMS): Add them.
24835
24836	* mpz/cong.c, mpz/cong_2exp.c, mpz/cong_ui.c: New files.
24837	* Makefile.am, mpz/Makefile.am: Add them.
24838	* gmp-impl.h (NEG_MOD): New macro.
24839	* gmp-h.in (mpz_congruent_p, mpz_congruent_2exp_p,
24840	mpz_congruent_ui_p): Add prototypes.
24841	* gmp.texi (Integer Division, Efficiency): Add documentation.
24842
24843	* mpq/aors.c: No need for ABS on denominator sizes.
24844
24845	* gmp-impl.h (mpn_divisible_p): Use __MPN.
24846
24847	* gmp-impl.h (LOW_ZEROS_MASK): New macro.
24848	* mpz/divis_ui.c, mpn/generic/divis.c: Use it.
24849
24850	* mpz/setbit.c: Fix normalization for case of a negative ending up
24851	with a zero high limb.
24852	* tests/mpz/bit.c (check_single): New test for this problem.
24853
24854	* configure.in (none-*-*): Fix cclist for default ABI=long.
24855
248562001-03-10  Kevin Ryde  <kevin@swox.se>
24857
24858	* mpz/cfdiv_q_2exp.c: Don't scan for non-zero limbs if they don't
24859	matter to the rounding.
24860
24861	* mpz/get_ui.c: Fetch _mp_d[0] unconditionally, so the code can come
24862	out branch-free.
24863
248642001-03-08  Kevin Ryde  <kevin@swox.se>
24865
24866	* tests/devel/try.c (param_init): Fix reference functions for and_n
24867	and nand_n.
24868
24869	* tune/speed.c, tests/devel/try.c: Seed RANDS, not srandom etc.
24870	* configure.in (AC_CHECK_FUNCS): Remove srand48 and srandom.
24871	* macos/configure (coptions): Remove random/srandom, now unnecessary.
24872
24873	* configure.in (gmp.h, mp.h, demos/expr/expr-impl.h): Generate using
24874	AM_CONFIG_HEADER.
24875	(_LONG_LONG_LIMB, HAVE_MPFR): Change to AC_DEFINEs.
24876	* gmp-h.in, mp-h.in, demos/expr/expr-impl-h.in: Change to #undef's.
24877	* acinclude.m4 (GMP_FUNC_ALLOCA, GMP_C_SIZES): Use gmp-h.in, not gmp.h.
24878	* Makefile.am (EXTRA_DIST): Remove gmp-h.in and mp-h.in, now done
24879	automatically.
24880	* acinclude.m4 (GMP_FUNC_ALLOCA), gmp-impl.h: Set and use
24881	__GMP_WITHIN_CONFIGURE rather than GMP_FUNC_ALLOCA_TEST.
24882
24883	* mpf/random2.c: Use _gmp_rand and RANDS instead of random() for the
24884	exponent, ensures full range of values too.
24885
24886	* tests/mpz/t-div_2exp.c (check_various): Start with d based on i, but
24887	don't let it go negative.
24888
24889	* tune/tuneup.c (KARATSUBA_MUL_THRESHOLD): Limit probing to
24890	TOOM3_MUL_THRESHOLD_LIMIT, the size of the workspace in mul_n.c.
24891	Use a -1 with this too, so size<LIMIT not <=.
24892
248932001-03-07  Torbjorn Granlund  <tege@swox.com>
24894
24895	* mpn/cray/cfp/mul_1.c: Don't call mpn_add_n with size 0.
24896	* mpn/cray/cfp/addmul_1.c: Likewise.
24897	* mpn/cray/cfp/submul_1.c: Don't call mpn_sub_n with size 0.
24898
24899	* tests/mpz/t-div_2exp.c (check_various): Start 2nd d loop from 0
24900	(avoid problems with Cray compilers).
24901
249022001-03-06  Torbjorn Granlund  <tege@swox.com>
24903
24904	* mpn/cray/ieee/submul_1.c: Don't call mpn_sub_n with size 0.
24905
24906	* mpn/cray/ieee/mul_basecase.c: New file.
24907	* mpn/cray/ieee/sqr_basecase.c: New file, derived from mul_basecase.c.
24908
249092001-03-06  Kevin Ryde  <kevin@swox.se>
24910
24911	* tests/devel/try.c (pointer_setup): Allow dst_size == SIZE_SIZE2 for
24912	the benefit of mpn_tdiv_qr.
24913
24914	* tune/tuneup.c (all): Start karatsuba probing at size==4, for the
24915	benefit of cray t90 ieee which has speed oddities at size==2.
24916
24917	* gmp-impl.h (USE_LEADING_REGPARM): Use __GMP_GNUC_PREREQ.
24918	Use __GMP_ATTRIBUTE_PURE and ATTRIBUTE_CONST in a few places.
24919
24920	* gmp-h.in (__GMP_GNUC_PREREQ) New macro.
24921	(__GMP_ATTRIBUTE_PURE): New macro, use it in many places.
24922
24923	* gmp-impl.h, gmp-h.in (mpn_jacobi_base): Move prototype to
24924	gmp-impl.h, use ATTRIBUTE_CONST.
24925
24926	* tune/speed.h (speed_cyclecounter): Inline asm version for i386.
24927
24928	* mpz/cfdiv_r_2exp.c (cfdiv_r_2exp): Only reread "up" after second
24929	realloc, first is under w!=u.
24930
249312001-03-05  Torbjorn Granlund  <tege@swox.com>
24932
24933	* mpn/cray/sub_n.c: Rewrite using `majority' logic.
24934
24935	* mpz/cfdiv_r_2exp.c (cfdiv_r_2exp): Reread `up' after realloc of w.
24936
24937	* mpn/cray/ieee/mul_1.c: Rewrite.  Streamline multiplications;
24938	use `majority' logic.
24939	* mpn/cray/ieee/addmul_1.c: Likewise.
24940
24941	* mpn/cray/add_n.c: Rewrite using `majority' logic.
24942
249432001-03-04  Torbjorn Granlund  <tege@swox.com>
24944
24945	* longlong.h (CRAY udiv_qrnnd): No longer conditional on CRAYMPP.
24946	(64-bit hppa add_ssaaaa): New.
24947	(64-bit hppa sub_ddmmss): New.
24948
24949	* mpn/cray/ieee/invert_limb.c: New file.
24950
24951	* gmp-impl.h (RANDS): Add a `,0' to make it compile on more compilers.
24952
249532001-03-03  Kevin Ryde  <kevin@swox.se>
24954
24955	* mpz/n_pow_ui.c (ULONG_PARITY): Move to gmp-impl.h.
24956	* gmp-impl.h (ULONG_PARITY): i386 part from n_pow_ui.c, new generic
24957	form by Torbjorn.
24958
24959	* tests/mpz/t-div_2exp.c: New file, rewrite of t-2exp.c.
24960	* tests/mpz/t-2exp.c: Remove file.
24961	* tests/mpz/Makefile.am (check_PROGRAMS): Update.
24962
24963	* gmp-h.in (mpz_cdiv_q_2exp, mpz_cdiv_q_2exp): Add prototypes.
24964	* gmp.texi (Integer Division): Add mpz_cdiv_q_2exp and mpz_cdiv_q_2exp.
24965
24966	* mpz/cfdiv_q_2exp.c: New file, partial rewrite of fdiv_q_2exp.c, add
24967	mpz_cdiv_q_2exp entrypoint.
24968	* mpz/cfdiv_r_2exp.c: New file, rewrite of fdiv_r_2exp.c, use all mpn,
24969	add mpz_cdiv_r_2exp entrypoint.
24970	* mpz/fdiv_q_2exp.c, mpz/fdiv_r_2exp.c: Remove files.
24971	* mpz/Makefile.am (libmpz_la_SOURCES): Update.
24972	* Makefile.am (MPZ_OBJECTS): Ditto.
24973
24974	* gmp-impl.h (USE_LEADING_REGPARM): Use __i386__ same as longlong.h
24975	(REGPARM_2_1, REGPARM_3_1, REGPARM_ATTR): New macros.
24976	* mpz/jacobi.c (jac_or_kron): Use them.
24977
24978	* configure.in (HAVE_ABI_$ABI): Re-enable this for config.m4, with
24979	dots changed to underscores (necessary for hppa).
24980
24981	* tests/mpz/t-divis.c, tests/mpz/t-divis_2exp.c: New files.
24982	* tests/mpz/Makefile.am (check_PROGRAMS): Add them.
24983
24984	* gmp-h.in (mpz_divisible_p, mpz_divisible_ui_p,
24985	mpz_divisible_2exp_p): Add prototypes.
24986	* gmp.texi (Integer Division): Add mpz_divisible_p.
24987	(Efficiency): Add remarks about divisibility testing.
24988
24989	* mpz/divis.c, mpz/divis_ui.c, mpz/divis_2exp.c: New files.
24990	* mpz/Makefile.am (libmpz_la_SOURCES): Add them.
24991	* Makefile.am (MPZ_OBJECTS): Ditto.
24992
24993	* mpn/generic/divis.c: New file.
24994	* configure.in (gmp_mpn_functions): Add it.
24995	* mpn/Makefile.am (nodist_libdummy_la_SOURCES): Ditto.
24996	* gmp-impl.h (mpn_divisible_p): Add prototype.
24997
24998	* urandom.h: Remove file.
24999	* Makefile.am (EXTRA_DIST): Remove it.
25000
25001	* tests/mpz/convert.c, dive.c, io.c, logic.c, reuse.c, t-2exp.c,
25002	t-fdiv.c, t-fdiv_ui.c, t-gcd.c, t-jac.c, t-mul.c, t-pow.c,
25003	t-powm.c, t-powm_ui.c, t-root.c, t-sqrtrem.c, t-tdiv.c,
25004	t-tdiv_ui.c: Use RANDS, initialized by tests_rand_start.
25005
25006	* tests/mpz/t-pow.c: New file, being t-pow_ui renamed and with some
25007	further tests added.
25008	* tests/mpz/t-pow_ui.c: Remove file.
25009	* tests/mpz/Makefile.am (check_PROGRAMS): Update.
25010
25011	* tests/t-modlinv.c: Don't use urandom.h.
25012	* tests/mpz/bit.c, tests/mpz/t-scan.c: Ditto.
25013	* tests/mpq/t-cmp.c, tests/mpq/t-cmp_ui.c, tests/mpq/t-get_d.c: Ditto.
25014	* tests/mpf/reuse.c, t-add.c, t-conv.c, t-dm2exp.c, t-muldiv.c,
25015	t-sqrt.c, t-sub.c: Ditto.
25016
25017	* tests/misc.c (tests_rand_start, tests_rand_end): New functions.
25018	(tests_start, tests_end): Use them.
25019	(urandom): New function.
25020	* tests/tests.h: Add prototypes.
25021
25022	* mpz/random.c: Rewrite using mpz_urandomb and RANDS.
25023	* mpn/generic/random.c: Rewrite using _gmp_rand and RANDS.
25024	* mpn/generic/random2.c: Use RANDS not random() etc.
25025
25026	* gmp-impl.h (__gmp_rands, __gmp_rands_initialized): Add externs.
25027	(gmp_randstate_ptr): New typedef.
25028	(RANDS, RANDS_CLEAR): New macros.
25029
25030	* rands.c: New file.
25031	* Makefile.am (libgmp_la_SOURCES): Add it.
25032
25033	* configure.in (mpn_objs_in_libmp): New AC_SUBST.
25034	* Makefile.am (libmp_la_DEPENDENCIES): Use it.
25035
250362001-03-02  Torbjorn Granlund  <tege@swox.com>
25037
25038	* mpn/pa64/udiv_qrnnd.asm: New file.
25039
250402001-03-01  Kevin Ryde  <kevin@swox.se>
25041
25042	* mpbsd/rpow.c: New file.
25043	* mpbsd/Makefile.am (libmpbsd_la_SOURCES): Add it
25044	(nodist_libmpbsd_la_SOURCES): Remove pow_ui.c.
25045	* Makefile.am (MPBSD_OBJECTS): Add rpow.lo, remove pow_ui.lo.
25046	(libmp_la_DEPENDENCIES): Add mpz/n_pow_ui.lo.
25047
25048	* mpz/ui_pow_ui.c: Rewrite using mpz_n_pow_ui.
25049	* mpz/pow_ui.c: Ditto, and no longer provide rpow for mpbsd.
25050
25051	* mpz/n_pow_ui.c: New file, rewrite of pow_ui.c and ui_pow_ui.c.  Use
25052	less temporary memory, strip factors of 2 from the base, use mpn_mul_2
25053	if available.
25054	* mpz/si_pow_ui.c: New file.
25055	* mpz/Makefile.am (libmpz_la_SOURCES): Add them.
25056	* Makefile.am (MPZ_OBJECTS): Ditto.
25057	* gmp-impl.h (mpz_n_pow_ui): Add prototype.
25058	* gmp-h.in (mpz_si_pow_ui): Add prototype.
25059	* gmp.texi (Integer Exponentiation): Add mpz_si_pow_ui.
25060
25061	* acinclude.m4 (GMP_C_SIZES): Add BITS_PER_ULONG.
25062	Correction to mp_limb_t working check.
25063	* configure.in (limb_chosen): New variable.
25064	* tests/t-constants.c (BITS_PER_ULONG): Check this value.
25065	Add some reminders about tests that fail on Cray.
25066
25067	* tests/refmpn.c (refmpn_mul_2): New function.
25068	* tests/refmpz.c (refmpz_pow_ui): Copied from tests/mpz/t-pow_ui.c
25069	* tests/tests.h: Add prototypes.
25070
25071	* configure.in (none-*-*): Add ABI=longlong.
25072	* doc/configuration (Long long limb testing): Describe it.
25073
25074	* gmp.texi (Low-level Functions): Move some commented out remarks ...
25075	* mpn/generic/mul_basecase.c: ... to here.
25076
25077	* mpn/x86/README: Note "%=" as an alternative to "1:" in __asm__.
25078
25079	* tests/trace.c (mp_trace_start): Print "bin" for binary.
25080
25081	* mpn/generic/dump.c: Add a couple of casts to keep gcc quiet.
25082
25083	* gmp-h.in (mpn_incr_u, mpn_decr_u): Add parens around arguments.
25084
25085	* mpbsd/mout.c, mpbsd/mtox.c (num_to_text): Remove unused variable.
25086
25087	* mpfr/set_d.c (mpfr_get_d2): Declare "q" for 64-bit limbs.
25088
250892001-02-28  Torbjorn Granlund  <tege@swox.com>
25090
25091	* mpn/pa64w/udiv_qrnnd.asm: Tune.
25092
250932001-02-27  Torbjorn Granlund  <tege@swox.com>
25094
25095	* mpn/pa64w/udiv_qrnnd.asm: New file.
25096
250972001-02-26  Torbjorn Granlund  <tege@swox.com>
25098
25099	* longlong.h (arm): Optimize sub_ddmmss by testing for constant
25100	operands.
25101	* mpn/arm/invert_limb.asm: New file.
25102
251032001-02-24  Torbjorn Granlund  <tege@swox.com>
25104
25105	* mpn/generic/lshift.c: Rewrite.
25106	* mpn/generic/rshift.c: Rewrite.
25107
25108	* longlong.h: Use UWtype for external interfaces that expect mp_limb_t.
25109
25110	* longlong.h (arm): #define invert_limb.
25111
25112	* mpn/arm: Make labels have local scope.
25113
25114	* configure.in (arm*-*-*): Set extra_functions.
25115	* longlong.h (arm): #define udiv_qrnnd.
25116	* mpn/arm/udiv.asm: New file.
25117
251182001-02-24  Kevin Ryde  <kevin@swox.se>
25119
25120	* tune/many.pl: Add mpn_count_leading_zeros, mpn_count_trailing_zeros
25121	and mpn_invert_limb.  Add count_leading_zeros, count_trailing_zeros
25122	from a .h file.  Correction to modexact_1_odd prototype.  Support
25123	ansi2knr.
25124	* tune/speed.h, tune/common.c: Consequent changes.
25125
25126	* demos/expr/*: Make a few more functions available in expressions,
25127	create only libexpr.a, misc minor updates.
25128
25129	* mpn/Makeasm.am: Add some comments about suffix ordering.
25130
25131	* tests/refmpn.c (rshift_make, lshift_make): No need to compare
25132	unsigned to zero.
25133
25134	* mpq/mul.c: Detect and optimize squaring.
25135
251362001-02-23  Torbjorn Granlund  <tege@swox.com>
25137
25138	* mpn/mips3: Convert files to `.asm'.
25139
25140	* mpn/arm: Convert files to `.asm'.  Misc cleanups.
25141	* mpn/arm/submul_1.asm: New file.
25142
251432001-02-21  Kevin Ryde  <kevin@swox.se>
25144
25145	* tune/tuneup.c (all): Only one compiler print should match, no need
25146	for #undef PRINTED_COMPILER.
25147
25148	* mpfr/mpfr.h (mpfr_sgn): Use mpfr_cmp_ui (patch from Paul).
25149
25150	* mpz/fib_ui.c: Update some remarks about alternative algorithms.
25151	* gmp.texi (Fibonacci Numbers Algorithm): Ditto.
25152	(Assigning Floats): Clarify mpf_swap swaps the precisions too.
25153	(Low-level Functions): Try to be clearer about negative cofactors.
25154
251552001-02-21  Torbjorn Granlund  <tege@swox.com>
25156
25157	* mpn/sparc64/copyi.asm: Streamline for small operands.
25158	* mpn/sparc64/add_n.asm: Likewise.
25159	* mpn/sparc64/sub_n.asm: Likewise.
25160
25161	* mpn/sparc64/copyd.asm: New file.
25162
251632001-02-20  Torbjorn Granlund  <tege@swox.com>
25164
25165	* mpn/sparc64/lshift.asm: Rewrite.
25166	* mpn/sparc64/rshift.asm: Rewrite.
25167
251682001-02-19  Torbjorn Granlund  <tege@swox.com>
25169
25170	* mpn/sparc64/add_n.asm: Rewrite using `majority' logic.
25171	* mpn/sparc64/sub_n.asm: Likewise.
25172
25173	* tune/tuneup.c (all): Recognise DECC and MIPSpro compilers.
25174
25175	* mpn/pa64/sqr_diagonal.asm: Use PROLOGUE/EPILOGUE.
25176	* mpn/pa642/sqr_diagonal.asm: Likewise.
25177
25178	* configure.in (HAVE_ABI_$abi): Disable for now.
25179
25180	* mpn/asm-defs.m4 (PROLOGUE): Use LABEL_SUFFIX.
25181
25182	* acinclude.m4 (GMP_ASM_ATTR): New check, for hppa oddities.
25183
251842001-02-18  Torbjorn Granlund  <tege@swox.com>
25185
25186	* mpn/hppa/hppa1_1/gmp-mparam.h: New file.
25187	* mpn/hppa/hppa2_0/gmp-mparam.h: New file.
25188
25189	* mpn/pa64/sqr_diagonal.asm: New file.
25190	* mpn/pa64w/sqr_diagonal.asm: New file.
25191	* mpn/hppa/hppa1_1/sqr_diagonal.asm: New file.
25192	* mpn/hppa/hppa2_0/sqr_diagonal.asm: New file.
25193
25194	* mpn/sparc32/v9/add_n.asm: Use `fitod' instead of `fxtod' for dummy
25195	FA-pipeline insns.
25196	* mpn/sparc32/v9/sub_n.asm: Likewise.
25197
251982001-02-18  Kevin Ryde  <kevin@swox.se>
25199
25200	* gmp.texi (Known Build Problems): Notes on make, $* and K&R, misc
25201	tweaks elsewhere.
25202	(Low-level Functions): Use {} notation in mpn_sqrtrem.
25203	(Basecase Multiplication): Mention BASECASE_SQR_THRESHOLD.
25204
25205	* mpfr/isnan.c (mpfr_number_p): Infinity is not a number.
25206	* mpfr/out_str.c: Pass strlen+1 for the block size to free.
25207	* mpfr/get_str.c: Correction for realloc to strlen+1.
25208
25209	* acinclude.m4 (GMP_C_SIZES): Generate an error if mp_limb_t doesn't
25210	seem to work for some reason.
25211
252122001-02-16  Torbjorn Granlund  <tege@swox.com>
25213
25214	* mpn/sparc32/v9/gmp-mparam.h: Retune.
25215
25216	* mpn/sparc32/v9/add_n.asm: New file.
25217	* mpn/sparc32/v9/sub_n.asm: New file.
25218
25219	* mpn/sparc32/v9/mul_1.asm: Tune function entry.
25220	* mpn/sparc32/v9/addmul_1.asm: Likewise.
25221	* mpn/sparc32/v9/submul_1.asm: Likewise.
25222
25223	* mpn/sparc32/v9/sqr_diagonal.asm: New file.
25224
252252001-02-16  Kevin Ryde  <kevin@swox.se>
25226
25227	* configure.in: Fix flags selection when $CC is a compiler known to us.
25228
25229	* demos/expr/exprfr.c (e_mpfr_cos, e_mpfr_sin): mpfr_sin_cos now
25230	allows NULL for one parameter.
25231
25232	* mpfr/*: Update to 20010215.
25233	* mpfr/trunc.c: Use -DOPERATION scheme, and gmp mpn_zero_p.
25234	* mpfr/sqrt.c: Use plain mpn_sqrtrem, not mpn_sqrtrem_new.
25235	* mpfr/sqrtrem.c: Remove file.
25236	* mpfr/Makefile.am (libmpfr_a_SOURCES): Add isnan.c and set_ui.c,
25237	remove sqrtrem.c and srandom.h.
25238
25239	* configfsf.guess: Update to 2001-02-13.
25240	* configfsf.sub: Update to 2001-02-16.
25241	* config.sub (j90, t90): Remove special handing, configfsf.sub now ok.
25242
25243	* Makefile.am (MPF_OBJECTS): Add a couple of missing $U's.
25244
25245	* tune/tuneup.c: Identify compiler used (GCC and Sun C so far).
25246
252472001-02-15  Torbjorn Granlund  <tege@swox.com>
25248
25249	* mpn/sparc32/v9/mul_1.asm: Change `ld' to `lduw' and `st' to `stw'.
25250	* mpn/sparc32/v9/addmul_1.asm: Likewise.
25251	* mpn/sparc32/v9/submul_1.asm: Likewise.
25252
252532001-02-14  Torbjorn Granlund  <tege@swox.com>
25254
25255	* mpn/mips3/mips.m4: New file.
25256	* configure.in (mips*-*-irix[6789]*): Use mips3/mips.m4.
25257
25258	* mpn/powerpc64/sqr_diagonal.asm: New file.
25259
25260	* mpn/mips3/sqr_diagonal.asm: New file.
25261
252622001-02-12  Torbjorn Granlund  <tege@swox.com>
25263
25264	* mpn/powerpc32/sqr_diagonal.asm: New file.
25265
25266	* mpn/generic/sqr_basecase.c: Remove declaration of mpn_sqr_diagonal.
25267	Fix typo in header comment.
25268
252692001-02-12  Kevin Ryde  <kevin@swox.se>
25270
25271	* mpn/generic/mul.c, mpn/generic/mul_n.c, gmp-impl.h: Use
25272	mpn_mul_basecase for squaring below new BASECASE_SQR_THRESHOLD.
25273	* tune/tuneup.c gmp-impl.h: Tune BASECASE_SQR_THRESHOLD.
25274
25275	* Makefile.am (libgmp.la, libmp.la): Revert change to build from
25276	mpn/libmpn.la etc, go back to explicitly listed objects.
25277
25278	* configure.in: Recognise sparc64-*-*, not just sparc64-*-linux*.
25279
252802001-02-11  Torbjorn Granlund  <tege@swox.com>
25281
25282	* mpn/asm-defs.m4 (sqr_diagonal): New define_mpn.
25283
25284	* mpn/alpha/sqr_diagonal.asm: New file.
25285
252862001-02-11  Kevin Ryde  <kevin@swox.se>
25287
25288	* gmp.texi (Low-level Functions): Note mpn_get_str clobbers its input
25289	plus 1 extra limb.
25290
25291	* mpfr/add.c,agm.c,exp2.c,exp3.c,generic.c,log2.c,pi.c,print_raw.c,
25292	set_d.c,sin_cos.c,sqrtrem.c,sub.c: Apply some tweaks for K&R.
25293	* tests/mpz/reuse.c, tests/mpq/t-md_2exp.c, demos/pexpr.c,
25294	demos/expr/t-expr.c: Ditto.
25295
25296	* configure.in (HAVE_ABI_$abi): New define in config.m4.
25297
25298	* gmp-impl.h (mpn_sqr_diagonal): Add prototype and define.
25299	* tune/speed.c,speed.h,common.c,many.pl: Add measuring of
25300	mpn_sqr_diagonal.
25301
25302	* gmp.texi, acinclude.m4: Mention x86 solaris 2.7 has the reg->reg
25303	movq bug the same as 2.6.
25304
25305	* mpfr/Makefile.am (EXTRA_DIST): Add mpfr-test.h and mpf2mpfr.h.
25306
25307	* mpn/x86/README: Merge contents of README.family.
25308	* mpn/x86/README.family: Remove file.
25309
25310	* mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add mode1o, gcd_finda,
25311	invert_limb, sqr_diagonal; remove mod_1_rs; sort alphabetically.
25312
253132001-02-10  Torbjorn Granlund  <tege@swox.com>
25314
25315	* configure.in (gmp_mpn_functions_optional): List sqr_diagonal.
25316
25317	* mpn/powerpc32/aix.m4: Use unnamed csects.
25318	* mpn/powerpc64/aix.m4: Likewise.
25319
25320	* acconfig.h: Add #undef of mpn_sqr_diagonal.
25321	Remove lots of spacing.
25322
25323	* configure.in (syntax testing section): Match power* instead of
25324	powerpc*.
25325	* mpn/power: Convert files to `.asm'.
25326	Prefix umul_ppmm and sdiv_qrnnd.
25327	Update some comments.
25328
253292001-02-09  Kevin Ryde  <kevin@swox.se>
25330
25331	* acconfig.h: Add HAVE_NATIVE_mpn_modexact_1_odd and
25332	HAVE_NATIVE_mpn_modexact_1c_odd.
25333
25334	* configure.in (CCAS): Don't override a user selection.
25335
25336	* mpq/cmp_ui.c: DIVIDE_BY_ZERO if den2==0.
25337
253382001-02-08  Torbjorn Granlund  <tege@swox.com>
25339
25340	* mpn/generic/sqr_basecase.c: Use mpn_sqr_diagonal when appropriate.
25341
253422001-02-07  Kevin Ryde  <kevin@swox.se>
25343
25344	* gmp.texi (Low-level Functions): mpn_preinv_mod_1 now undocumented.
25345
25346	* mpn/generic/random2.c (myrandom): Use rand() on mingw.
25347
25348	* mpn/alpha/gmp-mparam.h: Update tuned parameters.
25349
253502001-02-05  Torbjorn Granlund  <tege@swox.com>
25351
25352	* mpn/alpha/ev6/gmp-mparam.h: Retune.
25353
253542001-02-05  Kevin Ryde  <kevin@swox.se>
25355
25356	* Makefile.am (libgmp, libmp): Construct from mpn/libmpn.la etc rather
25357	than explicitly listed objects.
25358
25359	* urandom.h: Use rand() on mingw.
25360
25361	* mpn/powerpc64/lshift.asm,addsub_n.asm: Use r1 not 1.
25362
253632001-02-04  Torbjorn Granlund  <tege@swox.com>
25364
25365	* mpn/ia64/copyi.asm: New file.
25366	* mpn/ia64/copyd.asm: New file.
25367
253682001-02-04  Kevin Ryde  <kevin@swox.se>
25369
25370	* mpn/alpha/ev5/gmp-mparam.h, mpn/mips3/gmp-mparam.h,
25371	mpn/powerpc32/gmp-mparam.h, mpn/powerpc64/gmp-mparam.h,
25372	mpn/sparc64/gmp-mparam.h, mpn/x86/*/gmp-mparam.h:
25373	Update tuned parameters.
25374
25375	* mpn/x86/i486: New directory.
25376	* configure.in (i486-*-*): Use it.
25377	* mpn/x86/i486/gmp-mparam.h: New file.
25378
25379	* mpn/x86/pentium/mode1o.asm: New file.
25380	* mpn/x86/p6/mode1o.asm: New file.
25381
25382	* tune/many.pl: Use $(ASMFLAGS_PIC) and $(CFLAGS_PIC).
25383
25384	* gmp.texi (Integer Division): Another rewording of 2exp divisions.
25385
253862001-02-03  Torbjorn Granlund  <tege@swox.com>
25387
25388	* mpn/arm/gmp-mparam.h: Tune.
25389
25390	* mpn/ia64/popcount.asm: Put a `;;' break at end of main loop.
25391
25392	* configure.in (arm*-*-*): Set gcc_cflags in order to pass
25393	$fomit_frame_pointer.
25394
25395	* tests/mpz/t-mul.c (base_mul): Remove an unused variable.
25396
253972001-02-02  Torbjorn Granlund  <tege@swox.com>
25398
25399	* demos/pexpr.c (TIME): New macro.
25400	(main): Use TIME--print timing more accurately.
25401	(setup_error_handler): Increase RLIMIT_DATA to 16 Mibyte.
25402
25403	* longlong.h (arm): Add __CLOBBER_CC to add_ssaaaa and sub_ddmmss.
25404
254052001-02-02  Kevin Ryde  <kevin@swox.se>
25406
25407	* configure.in: Don't remove gmp-mparam.h and mpn source links under
25408	--no-create since in that case they're not re-created.
25409
25410	* demos/expr: New directory.
25411	* Makefile.am (SUBDIRS, allprogs): Add it.
25412	* demos/expr/README, Makefile.am, expr.c, exprv.c, exprz.c, exprza.c,
25413	exprq.c, exprqa.c, exprfa.c, exprf.c, exprfr.c, exprfra.c, expr.h,
25414	expr-impl-h.in, run-expr.c, t-expr.c: New files.
25415	* configure.in: Generate demos/expr/Makefile & demos/expr/expr-impl.h.
25416
25417	* Makefile.am: Remove mpfr from main libgmp.
25418	* mpfr/Makefile.am: Build and install separate libmpfr.a.
25419	* mpfr/*: Update to mpfr 2001.
25420
25421	* gmp-h.in (__GNU_MP_VERSION_MINOR): Bump to 2.
25422	* Makefile.am (libtool -version-info): Bump appropriately.
25423	* NEWS: Updates.
25424
25425	* tune/divrem1div.c, tune/divrem1inv.c, tune/divrem2div.c,
25426	tune/divrem2inv.c: Renamed from divrem_1_div.c, divrem_1_inv.c,
25427	divrem_2_div.c, divrem_2_inv.c, to be unique in DOS 8.3 filenames.
25428	* tune/Makefile.am (libspeed_la_SOURCES): Update.
25429
25430	* mpn/x86/*/README, mpn/x86/README.family: Misc updates.
25431	* tune/README: Misc updates.
25432	* doc/configuration: Misc updates.
25433
25434	* mpn/x86/pentium/mmx/gmp-mparam.h: Change UDIV_PREINV_TIME to
25435	UDIV_NORM_PREINV_TIME.
25436
25437	* mpz/pprime_p.c: Use ASSERT_ALWAYS instead of abort.
25438
25439	* rand.c (__gmp_rand_lc_scheme): Add "const".
25440	(struct __gmp_rand_lc_scheme_struct): Make astr "const char *".
25441
25442	* demos/calc/calc.y, demos/calc/calclex.l: Add kron function.
25443
25444	* tests/devel/try.c: Partial rewrite, new scheme of function types,
25445	allow result validation functions, add sqrtrem and jacobi testing.
25446	* tune/many.pl: Corresponding updates.
25447	* tests/devel/Makefile.am: Add a convenience rule for libtests.la.
25448
25449	* tests/refmpz.c: New file.
25450	* tests/Makefile.am: Add it.
25451	* tests/misc.c (mpz_erandomb, mpz_erandomb_nonzero): New functions.
25452	* tests/tests.h: Add prototypes.
25453
25454	* mpn/x86/k6/cross.pl: Add a couple more exceptions.
25455
25456	* gmp.texi: Don't use @nicode{'\0'}, it doesn't come out right in tex.
25457	(Introduction to GMP): Mention Cray vector systems.
25458	(Build Options): Describe --enable-mpfr, refer to its manual.  Add
25459	Crays under supported CPUs.
25460	(Debugging): Add notes on source file paths.
25461	(Autoconf): New section.
25462	(Assigning Integers): Note truncation by mpz_set_d, mpz_set_q and
25463	mpz_set_f.
25464	(Converting Integers): Note the size mpz_get_str allocates.
25465	(Floating-point Functions): Rewrite introduction, clarifying some
25466	points about precision handling.
25467	(Converting Floats): Note the size mpf_get_str allocates, and that it
25468	gives an empty string for zero.  Add mpf_get_si and mpf_get_ui.
25469	(Float Comparison): Give the formula mpf_reldiff calculates.
25470	(Miscellaneous Float Functions): Add mpf_integer_p and mpf_fits_*_p.
25471	(Random Number Functions): Misc rewordings for clarity.
25472	(Random State Initialization): Ditto.
25473	(Custom Allocation): Remove note on deallocate_function called with 0,
25474	misc rewording and clarifications.
25475	(Exact Remainder): New section.
25476	(Binary GCD): A few words on initial reduction using division.
25477	(Accelerated GCD): Refer to exact remainder section.
25478	(Extended GCD): Extra remarks on single versus double selection.
25479	(Jacobi Symbol): Update for mpz/jacobi.c rewrite and modexact_1_odd.
25480	(Modular Powering Algorithm): Refer to exact remainder section.
25481	(Assembler SIMD Instructions): Update remarks on MMX.
25482	(Contributors): Amend to "Divide and Conquer" division.
25483	(References): Tweak some formatting.  Add "Proof of GMP Fast Division
25484	and Square Root Implementations" by Paul Zimmermann.
25485
254862001-01-31  Torbjorn Granlund  <tege@swox.com>
25487
25488	* configure.in: Don't ever pass -mips3; let ABI flags imply ISA.
25489
254902001-01-31  Kevin Ryde  <kevin@swox.se>
25491
25492	* tune/time.c: Remove unnecessary longlong.h.
25493	(speed_endtime): Add some extra diagnostics.
25494
25495	* tests/mpz/t-fdiv_ui.c, tests/mpz/t-tdiv_ui.c: Use unsigned long for
25496	the divisor, not mp_limb_t.
25497	* tests/mpz/t-jac.c (try_base): Use %llu for long long limb.
25498	* tests/trace.c: Add <string.h> for strlen.
25499
25500	* tune/freq.c (speed_cpu_frequency_proc_cpuinfo): Ignore "cycle
25501	frequency" of 0, allow "BogoMIPS" as well as "bogomips".
25502
25503	* macos/Makefile.in: Add mpf/fits_s.c and mpf/fits_u.c objects.
25504
255052001-01-30  Torbjorn Granlund  <tege@swox.com>
25506
25507	* longlong.h: Add add_ssaaaa and sub_ddmmss for 64-bit sparc.
25508
255092001-01-29  Torbjorn Granlund  <tege@swox.com>
25510
25511	* mpn/powerpc64/addmul_1.asm: Prefix registers with an `r'.
25512	* mpn/powerpc64/submul_1.asm: Likewise.
25513	* mpn/powerpc64/mul_1.asm: Likewise.
25514
25515	* configure.in (alpha*-*-*): Amend last change to handle pca*.
25516
255172001-01-29  Kevin Ryde  <kevin@swox.se>
25518
25519	* tune/speed.h (SPEED_ROUTINE_INVERT_LIMB_CALL): Don't let the
25520	compiler optimize everything away.
25521
25522	* tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Measure
25523	operator_div, operator_mod, mpn_divrem_2_div, mpn_divrem_2_inv,
25524	mpn_sb_divrem_m3, mpn_sb_divrem_m3_div, mpn_sb_divrem_m3_inv,
25525	mpn_dc_divrem_sb_div, mpn_dc_divrem_sb_inv.
25526	* tune/divrem_2_div.c, tune/divrem_2_inv.c, tune/sb_div.c,
25527	tune/sb_inv.c: New files.
25528
25529	* tune/tuneup.c, gmp-impl.h, tune/speed.h, tune/common.c,
25530	tune/Makefile.am: Tune SB_PREINV_THRESHOLD and DIVREM_2_THRESHOLD.
25531
25532	* mpn/generic/divrem_2.c: Use new DIVREM_2_THRESHOLD.
25533	* mpn/generic/sb_divrem_mn.c: Use new SB_PREINV_THRESHOLD.
25534
25535	* mpn/x86/p6/mmx/lshift.asm, mpn/x86/p6/mmx/rshift.asm: New files,
25536	just m4 include()ing the P55 code.
25537	* configure.in (pentium[23]-*-*): Remove x86/pentium/mmx from path.
25538
255392001-01-27  Kevin Ryde  <kevin@swox.se>
25540
25541	* configure.in (AC_CHECK_FUNCS): Add srand48.
25542	* tune/speed.c: Use this test.
25543
25544	* acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO): Allow "egcs-" prefix on gcc
25545	--version, warn if the format is unrecognised.
25546	(GMP_COMPARE_GE): Guard against empty $1 not only on last arg.
25547	(GMP_INIT, GMP_FINISH, GMP_PROG_M4): Obscure or eliminate literal
25548	"dnl"s since autoconf thinks they indicate faulty macros.
25549
25550	* mpz/get_str.c, mpf/get_str.c: Make allocated string block exactly
25551	strlen(str)+1 bytes.
25552	* mpz/dump.c, mpf/dump.c, tests/mpz/convert.c: Use this size when
25553	freeing.
25554	* tests/mpf/t-conv.c: Ditto, and ensure x==0 is exercised.
25555
25556	* tests/mpz/t-fits.c: New file.
25557	* tests/mpz/Makefile.am: Add it.
25558
25559	* tests/mpf/t-fits.c: New file.
25560	* tests/mpf/t-get_si.c: New file.
25561	* tests/mpf/t-int.c: New file.
25562	* tests/mpf/Makefile.am: Add them.
25563
25564	* mpf/fits_s.c: New file.
25565	* mpf/fits_u.c: New file.
25566	* mpf/get_si.c: New file.
25567	* mpf/get_ui.c: New file.
25568	* mpf/int_p.c: New file.
25569	* Makefile.am, mpf/Makefile.am: Add them.
25570	* gmp-h.in (mpf_fits_*_p, mpf_get_si, mpf_get_ui, mpf_integer_p): Add
25571	prototypes.
25572
25573	* tests/memory.c (tests_allocate, tests_reallocate): Guard against
25574	size==0.
25575
25576	* tests/mpz/*.c, tests/mpq/*.c, tests/mpf/*.c: Uses tests_start and
25577	tests_end.
25578
25579	* gmp-impl.h (USE_LEADING_REGPARM): Fix conditionals.
25580
255812001-01-23  Kevin Ryde  <kevin@swox.se>
25582
25583	* configure.in, mpn/Makeasm.am (ASMFLAGS_PIC): New substitution,
25584	allowing -DPIC to be suppressed on cygwin.
25585	(CFLAGS_PIC): New substitution, use it and $(CCAS) directly, rather
25586	than $(LIBTOOL), avoiding a problem with FreeBSD 2.2.8.
25587
25588	* mpn/x86/k6/mode1o.asm, mpn/x86/k7/mode1o.asm: Remove an unnecessary
25589	+[.-L(here)] from _GLOBAL_OFFSET_TABLE_, avoids a segv from gas 1.92.3.
25590	* mpn/x86/README.family: Add notes on the problem.
25591
255922001-01-20  Torbjorn Granlund  <tege@swox.com>
25593
25594	* configure.in (alpha*-*-*): Default `flavour' to ev4.
25595
255962001-01-19  Kevin Ryde  <kevin@swox.se>
25597
25598	* assert.c, gmp-impl.h (__gmp_assert_fail): Change return type to
25599	void, since it's no longer used in expressions.
25600
25601	* mpn/x86/addsub_n.S: Remove file, since it doesn't work and it upsets
25602	tune/many.pl.
25603
25604	* mpz/jacobi.c: Rewrite, but still binary algorithm; accept zero and
25605	negative denominators; merge mpz_jacobi and mpz_legendre, add
25606	mpz_kronecker; use mpn directly, add special cases for size==1.
25607	* gmp.texi (Number Theoretic Functions): Update.
25608	* gmp-h.in (mpz_kronecker): Add prototype.
25609	* gmp-impl.h (USE_LEADING_REGPARM): New macro.
25610	* tests/mpz/t-jac.c: Test mpz_kronecker.
25611	* mpz/legendre.c: Remove file.
25612	* Makefile.am, mpz/Makefile.am: Update.
25613
25614	* longlong.h (alpha count_leading_zeros): Use __attribute__ ((const))
25615	when possible, add parameter to prototype.
25616	(ia64 udiv_qrnnd): Use for all compilers, not just gcc.
25617	(pentium count_trailing_zeros): Use count_leading_zeros.
25618
25619	* acinclude.m4 (GMP_C_ATTRIBUTE_CONST, GMP_C_ATTRIBUTE_NORETURN): New
25620	macros.
25621	* configure.in: Use them.
25622	* gmp-impl.h (ATTRIBUTE_CONST, ATTRIBUTE_NORETURN): New macros.
25623	(mpn_invert_limb): Add ATTRIBUTE_CONST.
25624	(__gmp_assert_fail): Add ATTRIBUTE_NORETURN.
25625
256262001-01-18  Kevin Ryde  <kevin@swox.se>
25627
25628	* gmp-h.in, gmp-impl.h (__gmp_allocate_func, __gmp_reallocate_func,
25629	__gmp_free_func): Move prototypes from gmp-impl.h to gmp-h.in, for the
25630	benefit of gmp++.h.
25631
25632	* gmp-impl.h, tests/misc.c, tests/tests.h: Move MPZ_SET_STR_OR_ABORT
25633	and MPF_SET_STR_OR_ABORT to mpz_set_str_or_abort and
25634	mpf_set_str_or_abort in libtests.
25635	* tests/mpz/convert.c, tests/mpz/t-bin.c, tests/mpz/t-get_si.c,
25636	tests/mpz/t-jac.c, tests/mpz/t-misc.c, tests/mpq/t-md_2exp.c,
25637	tests/mpq/t-set_f.c, tests/mpf/t-conv.c, tests/mpf/t-misc.c: Update.
25638
25639	* mpn/generic/sqrtrem.c: Use MPN_COPY_INCR (for when rp==NULL).
25640
25641	* tests/mpz/reuse.c: Only run mpz_divexact_gcd on positive divisors.
25642
256432001-01-18  Torbjorn Granlund  <tege@swox.com>
25644
25645	* demos/pexpr.c (main): Accept -vml option.
25646	(fns): List `hamdist', `pow', `nextprime'.
25647	(mpz_eval_expr): Return -1 for `popc' of negative.
25648	(mpz_eval_expr): Handle `hamdist', `pow', `nextprime'.
25649
256502001-01-15  Kevin Ryde  <kevin@swox.se>
25651
25652	* mpn/alpha/ev5/mode1o.c: New file.
25653
25654	* tune/freq.c (speed_cpu_frequency_measure): Check cycles_works_p
25655	before running speed_cyclecounter.
25656	* tune/speed.h (cycles_works_p): Add prototype.
25657
256582001-01-13  Torbjorn Granlund  <tege@swox.com>
25659
25660	* tests/rand/t-rand.c (farr): Fix typo.
25661	(zarr): Fix typo.
25662
256632001-01-12  Kevin Ryde  <kevin@swox.se>
25664
25665	* mpz/kronsz.c: Don't depend on right shifting a negative.
25666
25667	* mpn/x86/gmp-mparam.h: New file.
25668
25669	* mpn/x86/pentium/mmx/mul_1.asm: New file.
25670
256712001-01-11  Torbjorn Granlund  <tege@swox.com>
25672
25673	* mpz/kronsz.c: Temporary workaround for Cray right shift oddities.
25674	Explicitly compare against zero in tests.
25675
256762001-01-10  Kevin Ryde  <kevin@swox.se>
25677
25678	* mpz/kronzs.c: Don't depend on right shifting a negative.
25679
256802001-01-09  Torbjorn Granlund  <tege@swox.com>
25681
25682	* tests/t-constants.c: Disable some undefined tests.
25683	(CHECK_MAX_S): Remove workaround for gcc 2.95.2 bug recently added.
25684
256852001-01-09  Kevin Ryde  <kevin@swox.se>
25686
25687	* tests/t-constants.c: Add more diagnostics.
25688	(CHECK_MAX_S): Fix for gcc 2.95.2 -mpowerpc64 -maix64.
25689
25690	* mpn/x86/k6/mode1o.asm: New file.
25691	* mpn/x86/k7/mode1o.asm: New file.
25692
25693	* mpn/asm-defs.m4 (modexact_1_odd, modexact_1c_odd): New define_mpn's.
25694	(__clz_tab, modlimb_invert_table, PROLOGUE, EPILOGUE): Add asserts for
25695	GSYM_PREFIX.
25696	* mpn/x86/x86-defs.m4 (Zdisp): Add a movzbl.
25697
25698	* tests/mpz/t-jac.c (check_a_zero): New test.
25699	(check_squares_zi): Fix to use (a^2/b), not (a*b/b); revert last
25700	change avoiding a,b=0, both are fine.
25701	(try_2den): Don't use mpz_kronecker_ui for the expected answer.
25702	(try_*): Call abort rather than exit.
25703
25704	* mpz/kronzu.c, mpz/kronzs.c: Fix for a=0.
25705
25706	* tune/tuneup.c (USE_PREINV_MOD_1): Fix to use new DATA_HIGH_LT_R.
25707
257082001-01-08  Torbjorn Granlund  <tege@swox.com>
25709
25710	* urandom.h: Amend 2000-11-21 change to also handle cygwin.
25711
257122001-01-08  Kevin Ryde  <kevin@swox.se>
25713
25714	* tune/many.pl: Updates for move to tests/devel, add modexact_1_odd,
25715	don't assume C files can't have carry-in entrypoints, remove
25716	$(TRY_TESTS_OBJS) now in libtests.
25717
25718	* tests/devel/try.c, tests/refmpn.c, tests/tests.h: Remove
25719	mpn_mod_1_rshift testing.
25720
25721	* tune/tuneup.c (fft_step_size): Test for overflow using the actual
25722	mp_size_t, don't use BITS_PER_INT.
25723
25724	* tune/speed.c (r_string): "r" is a limb, use BITS_PER_MP_LIMB and
25725	change LONG_ONES to LIMB_ONES.
25726	* tune/time.c (M_2POWU): Use INT_MAX rather than BITS_PER_INT.
25727
25728	* extract-dbl.c (BITS_PER_PART): Use BITS_PER_MP_LIMB not
25729	BITS_PER_LONGINT.
25730
25731	* mpz/inp_raw.c, mpz/out_raw.c: Add private defines of BITS_PER_CHAR.
25732	* mpz/fac_ui.c, tests/mpz/t-fac_ui.c: Don't use BITS_PER_LONGINT.
25733	* tests/mpz/t-get_si.c: Don't use BITS_PER_LONGINT, do the LONG_MAX
25734	tests with some explicit code.
25735
25736	* mpn/*/gmp-mparam.h, acinclude.m4, tests/t-constants.c
25737	(BITS_PER_LONGINT, BITS_PER_INT, BITS_PER_SHORTINT, BITS_PER_CHAR):
25738	Remove defines, remove probings, remove tests.
25739
25740	* tune/tuneup.c (MODEXACT_1_ODD_THRESHOLD): Add tuning.
25741
25742	* tune/speed.c,speed.h,common.c: Add measuring of mpn_modexact_1_odd,
25743	mpn_gcd_finda, and an "N" form for mpn_gcd_1.
25744
25745	* tests/mpz/t-jac.c (check_squares_zi): Ensure random a,b != 0.
25746
257472001-01-07  Kevin Ryde  <kevin@swox.se>
25748
25749	* configure.in (gmp_mpn_functions): Add mode1o, remove mod_1_rs.
25750
25751	* mpn/generic/mod_1_rs.c: Remove file, no longer needed.
25752	* gmp-h.in (mpn_mod_1_rshift): Remove prototype and define.
25753
25754	* mpq/set_f.c: Use MPN_STRIP_LOW_ZEROS_NOT_ZERO.
25755
25756	* mpz/kronzu.c, mpz/kronzs.c, mpz/kronuz.c, mpz/kronsz.c: Use
25757	mpn_modexact_1_odd, new style MPN_STRIP_LOW_ZEROS_NOT_ZERO, and new
25758	JACOBI macros.  Various rearrangements supporting all this.
25759
25760	* mpn/generic/gcd_1.c: Use mpn_modexact_1_odd, reduce u%v if u much
25761	bigger than v when size==1, some rearrangements supporting this.
25762
25763	* gmp-impl.h (JACOBI_*): More macros, add some casts to "int".
25764	(MPN_STRIP_LOW_ZEROS_NOT_ZERO): Add a "low" parameter.
25765	(mpn_modexact_1_odd, mpn_modexact_1c_odd): Add prototype and defines.
25766	(MODEXACT_1_ODD_THRESHOLD): New threshold.
25767	(MPN_MOD_OR_MODEXACT_1_ODD, JACOBI_MOD_OR_MODEXACT_1_ODD): New macros.
25768
25769	* mpn/generic/mode1o.c: New file.
25770
25771	* tests/mpz/reuse.c: Add testing of mpz_divexact_gcd.
25772	* tests/mpz/t-fac_ui.c: Use libtests for memory leak checking.
25773	* tests/mpz/t-fib_ui.c: Add a usage comment.
25774
25775	* tests/mpz/bit.c: Use libtests.
25776	* tests/mpz/t-scan.c: Remove unused subroutines.
25777	* tests/devel/try.c: Use libtests, define PROT_NONE if the system
25778	doesn't.
25779
25780	* tests/spinner.c, tests/x86check.c: Use tests.h.
25781	* tests/trace.c: Use tests.h, add mpf_trace.
25782	* tests/refmpn.c: Use tests.h, add refmpn_malloc_limbs_aligned,
25783	refmpn_tstbit, refmpn_neg.
25784
25785	* tune/common.c, tune/speed.h: Update for functions moved to
25786	tests/misc.c.
25787
25788	* tune/Makefile.am, tests/mpz/Makefile.am, tests/mpq/Makefile.am,
25789	tests/mpf/Makefile.am: Use tests/libtests.la.
25790
25791	* configure.in (AC_OUTPUT): Update for new directories.
25792	(x86 CALLING_CONVENTIONS_OBJS): Use .lo for libtests.la, allow
25793	ansi2knr on x86check.c.
25794
25795	* tests/Makefile.am: Establish new libtests.la convenience library,
25796	add mpz, mpq, mpf, mpbsd subdirectories.
25797	* tests/tests.h: New file.
25798	* mpn/tests/ref.h,try.h: Remove files, now in tests.h.
25799
25800	* tests/mpf/ref.c: Move to tests/refmpf.c, rename functions to refmpf.
25801	* tests/mpf/t-add.c, tests/mpf/t-sub.c: Use libtests.
25802	* tests/mpf/Makefile.am: Update.
25803
25804	* tests/memory.c: New file.
25805	* tests/misc.c: New file, a few subroutines from the test programs.
25806
25807	* mpz/tests, mpq/tests, mpf/tests, mpbsd/tests: Move directories to
25808	tests/mpz etc.
25809	* mpz/Makefile.am, mpq/Makefile.am, mpf/Makefile.am, mpbsd/Makefile.am
25810	(SUBDIRS): Remove.
25811
25812	* tests/devel: New directory.
25813	* mpn/tests/*.c: Move programs to tests/devel.
25814	* mpn/tests/Makefile.am, mpn/tests/README: Move to tests/devel, update.
25815
25816	* mpn/tests/ref.c: Move to tests/refmpn.c.
25817	* mpn/tests/spinner.c,trace.c,x86call.asm,x86check.c: Move to tests
25818	directory.
25819
25820	* tests/t-constants.c: Add checks of HIGHBIT, MAX and MIN constants,
25821	simplify ANSI vs K&R stringizing, use correct printf format types, do
25822	all tests before aborting.
25823
258242001-01-05  Torbjorn Granlund  <tege@swox.com>
25825
25826	* mpn/cray/ieee/gmp-mparam.h: Retune.
25827
258282001-01-05  Kevin Ryde  <kevin@swox.se>
25829
25830	* configure.in (mp.h): Only create this under --enable-mpbsd.
25831
25832	* demos/calc: New subdirectory, move demos/calc* to it.
25833	* demos/calc/Makefile.am: New file, split from demos/Makefile.am.
25834	* demos/Makefile.am: Update.
25835	* configure.in (AC_OUTPUT): Add demos/calc/Makefile.
25836
25837	* tests/t-constants.c (CALC_BITS_PER_TYPE etc): Use a run-time test
25838	for how many bits work in a give type, don't assume bits==8*sizeof.
25839
258402001-01-04  Kevin Ryde  <kevin@swox.se>
25841
25842	* mpz/fits_s.c, mpz/fits_u.c: New files, split from fits.c, use plain
25843	UINT_MAX etc, not MPZ_FITS_UTYPE_SDT etc.
25844	* mpz/fits.c: Remove file.
25845	* mpz/Makefile.am, macos/Makefile.in: Update.
25846
25847	* gmp-impl.h (UNSIGNED_TYPE_MAX etc): Remove these generic forms.
25848	(MPZ_FITS_[SU]TYPE_SDT): Remove these.
25849	(UINT_MAX etc): Provide a full set of defaults.
25850	* gmp-h.in (__GMP_MP_SIZE_T_INT): New define.
25851
25852	* mpz/tests/t-scan.c: New file.
25853	* mpz/tests/Makefile.am (check_PROGRAMS): Add it.
25854
25855	* mpz/scan0.c, mpz/scan1.c: Rewrite, don't read beyond allocated
25856	memory, support negatives, return ULONG_MAX for no bit found.
25857	* gmp.texi (Integer Logic and Bit Fiddling): Update.
25858
258592001-01-03  Torbjorn Granlund  <tege@swox.com>
25860
25861	* mpz/tests/dive.c: Generate test operands using new random functions.
25862	* mpz/tests/io.c: Likewise.
25863	* mpz/tests/logic.c: Likewise.
25864	* mpz/tests/t-2exp.c: Likewise.
25865
25866	* stack-alloc.c (__gmp_tmp_alloc): Round `now' to required alignment.
25867
25868	* stack-alloc.h (__TMP_ALIGN): Append `L'.
25869
25870	* gmp-impl.h: For Cray, #include limits.h.
25871	(LONG_MIN): New #define.
25872	(ULONG_HIGHBIT): #define in terms of ULONG_MAX.
25873	(LONG_HIGHBIT): #define as LONG_MIN.
25874	(USHRT_MAX): New name for USHORT_MAX.
25875	(SHRT_MAX): New name for SHORT_MAX.
25876	(SHRT_MIN): New #define.
25877	(USHORT_HIGHBIT,SHORT_HIGHBIT): Removed.
25878
25879	* mpbsd/tests/t-misc.c (check_itom [data]): *SHORT* => *SHRT*;
25880	remove code disabling a test for Cray.
25881
25882	* tests/t-constants.c (CHECK_CONSTANT): Cast parameters to long.
25883
25884	* mpn/generic/mul_n.c (mpn_kara_sqr_n): Remove unused variable `t'.
25885	(mpn_kara_mul_n): Likewise.
25886
25887	* mpz/fac_ui.c (MPZ_SET_1_NZ): Actually use `__z'.
25888
25889	* mpz/tests/t-jac.c
25890	(main, check_squares_zi): Generate test operands using new random
25891	functions.
25892
25893	All changes below on this date for enabling `make; make check'
25894	with C++ compilers:
25895
25896	* mpz/tests/t-pow_ui.c (debug_mp, ref_mpz_pow_ui): Provide prototypes.
25897
25898	* mpz/tests/t-mul.c (debug_mp, base_mul, ref_mpz_mul):
25899	Provide prototypes.
25900	(dump_abort): Provide prototype and declare properly for C++.
25901
25902	* mpz/tests/t-jac.c: #include stdlib.h and sys/time.h.
25903
25904	* mpz/tests/t-fdiv.c
25905	(dump_abort): Provide prototype and declare properly for C++.
25906	(debug_mp): Provide prototype.
25907	* mpz/tests/t-fdiv_ui.c: Likewise.
25908	* mpz/tests/t-gcd.c: Likewise.
25909	* mpz/tests/t-powm.c: Likewise.
25910	* mpz/tests/t-powm_ui.c: Likewise.
25911	* mpz/tests/t-sqrtrem.c: Likewise.
25912	* mpz/tests/t-tdiv_ui.c: Likewise.
25913	* mpz/tests/t-tdiv.c: Likewise.
25914
25915	* mpz/tests/t-2exp.c: #include stdlib.h and sys/time.h.
25916	Remove #include of longlong.h.
25917
25918	* mpz/tests/io.c: #include config.h, stdlib.h, sys/time.h, and
25919	conditionally unistd.h.
25920
25921	* mpz/tests/dive.c: #include stdlib.h and sys/time.h.
25922	(dump_abort): Provide prototype and declare properly for C++.
25923	(debug_mp): Provide prototype.
25924	* mpz/tests/logic.c: Likewise.
25925
25926	* mpz/tests/convert.c (debug_mp): Provide prototype.
25927	* mpz/tests/t-root.c (debug_mp): Likewise.
25928
25929	* mpz/tests/bit.c: #include stdlib.h and sys/time.h.
25930
25931	* mpq/tests/t-get_d.c: #include stdlib.h and sys/time.h.
25932	(dump): Provide prototype and declare properly for C++.
25933
25934	* mpq/tests/t-cmp_ui.c: #include stdio.h, stdlib.h and sys/time.h.
25935	(ref_mpq_cmp_ui): Declare properly for C++.
25936
25937	* mpq/tests/t-cmp.c: #include stdlib.h and sys/time.h.
25938	(ref_mpq_cmp): Declare properly for C++.
25939	(dump): Delete unused function.
25940
25941	* mpf/random2.c (myrandom): New function.
25942	(mpf_random2): Use it.
25943
25944	* mpn/generic/random2.c: #include stdlib.h (for random/mrand48).
25945	(myrandom): New function.
25946	(mpn_random2): Use it.
25947
25948	* mpf/tests/t-add.c: #include stdlib.h and sys/time.h.
25949	(oo): Remove unused function.
25950	* mpf/tests/t-conv.c: Likewise.
25951	* mpf/tests/t-sub.c: Likewise.
25952	* mpf/tests/t-dm2exp.c: Likewise.
25953	* mpf/tests/t-muldiv.c: Likewise.
25954	* mpf/tests/t-sqrt.c: Likewise.
25955
25956	* mpf/tests/reuse.c: #include stdlib.h and sys/time.h.
25957	Use PROTO on some typedefs.
25958	(oo): Remove function.
25959	(dump_abort): Call mpf_dump instead of oo.
25960
25961	* mpf/set_str.c: #include stdlib.h (for strtol).
25962
25963	* mpf/random2.c: #include stdlib.h (for random/mrand48).
25964	* mpn/alpha/udiv_arnnd: File deleted.
25965
25966	* Remove K&R function headers.
25967
259682001-01-02  Torbjorn Granlund  <tege@swox.com>
25969
25970	* mpn/generic/mul.c: Clean up spacing and indentation.
25971
25972	* mpn/generic/mul_fft.c (mpn_fft_add_modF): Use mpn_decr_u.
25973	Clean up spacing and indentation.
25974
25975	* extract-dbl.c: Generalize to handle smaller limb sizes.
25976
259772001-01-01  Torbjorn Granlund  <tege@swox.com>
25978
25979	* mpbsd/mout.c: Output newline after "0".
25980
259812000-12-31  Torbjorn Granlund  <tege@swox.com>
25982
25983	* ltmain.sh: Remove space between `#!' and `$SHELL' when generating
25984	`libtool'.
25985
25986	* mpbsd/tests/t-misc.c (check_itom): Exclude test for all Cray
25987	vector systems.  Correct comment.
25988
259892000-12-31  Kevin Ryde  <kevin@swox.se>
25990
25991	* gmp.texi (ABI and ISA): New enough gcc needed for mips n32 etc, gcc
25992	2.95 needed for sparc 64-bit ABI, gcc 2.8 needed for -mv8plus.
25993
25994	* configure.in ([cjt]90,sv1-cray-unicos*): Preserve user specified
25995	MPN_PATH, amend test program indenting.
25996	(none-*-*): Add -DNO_ASM to gcc to disable longlong.h asm macros in
25997	generic C.
25998
25999	* config.sub (j90, t90): Preserve these, don't let configfsf.sub turn
26000	them into c90.
26001
26002	* config.guess (m68k-*-nextstep*,m68k-*-openstep*): Don't transform
26003	m68k to m68020, since m68k is already interpreted as 68020.
26004
260052000-12-30  Kevin Ryde  <kevin@swox.se>
26006
26007	* mpq/neg.c: Rewrite, use mpn, avoid denominator copy if unnecessary.
26008
26009	* mpz/tstbit.c: Rewrite, slightly simplified.
26010	* mpz/tests/bit.c (check_tstbit): New test, and add a couple more
26011	diagnostics elsewhere.
26012
26013	* configure.in (x86 gcc_cflags_cpu): Add -m486 for gcc 2.7.2.
26014	(ccbase): Only use a known compiler in eval statements (avoids
26015	problems with non-symbol characters).
26016	(ccbase): Use GMP_PROG_CC_IS_GNU to identify gcc installed under a
26017	different name.
26018	(cclist): Use same style $abi as other variables.
26019
26020	* acinclude.m4 (GMP_PROG_CC_IS_GNU): New macro.
26021	(GMP_GCC_MARCH_PENTIUMPRO): Use $ccbase to identify gcc.
26022	(GMP_ASM_TYPE): Define TYPE to empty, not "dnl", when no .type needed.
26023	(GMP_ASM_SIZE): Ditto for SIZE, which ensures EPILOGUE on the last
26024	line of a file doesn't leave a tab and no newline.
26025	(GMP_ASM_UNDERSCORE): Add a prototype for C++.
26026
26027	* configure.in (sys/mman.h, mprotect): New tests.
26028	* mpn/tests/try.c: Use them, and HAVE_UNISTD_H too.
26029
26030	* configure.in (getopt.h): Remove test.
26031	* tune/speed.c, mpn/tests/try.c (getopt.h): Remove include, since
26032	plain getopt() is in <unistd.h>.
26033
26034	* configure.in, gmp-h.in (mips*-*-irix6*): Set limb_n32=longlong
26035	rather than using _ABIN32.
26036
260372000-12-29  Torbjorn Granlund  <tege@swox.com>
26038
26039	* mpz/tests/reuse.c: Rename dump_abort => dump.
26040	* mpz/tests/reuse.c: Generate operands using gmp_rand*.
26041	* mpz/tests/convert.c: Likewise.
26042
26043	* configure.in: Detect T90-ieee systems; move Cray path
26044	selection to after AC_PROG_CC.  Invoke AC_PROG_CPP.
26045	* mpn/cray/cfp: New directory.  Move cfp specific files here.
26046	* mpn/cray/cfp/mulwwc90.s: New file.
26047	* mpn/cray/cfp/mulwwj90.s: New file.
26048	* mpn/cray/mulww.s: Delete.
26049
260502000-12-27  Torbjorn Granlund  <tege@swox.com>
26051
26052	* mpn/cray/ieee/mul_1.c: New file.
26053	* mpn/cray/ieee/addmul_1.c: New file.
26054	* mpn/cray/ieee/submul_1.c: New file.
26055	* mpn/cray/ieee/gmp-mparam.h: New file.
26056
26057	* mpn/cray/gmp-mparam.h: Disable UMUL_TIME and UDIV_TIME.
26058
26059	* mpn/cray/hamdist.c: New file.
26060	* mpn/cray/popcount.c: New file.
26061	* mpn/cray/rshift.c: New file.
26062	* mpn/cray/lshift.c: New file.
26063
26064	* longlong.h: Add count_leading_zeros for _CRAY.
26065	Reorganize _CRAY stuff.
26066
260672000-12-24  Kevin Ryde  <kevin@swox.se>
26068
26069	* configure.in (alpha*-cray-unicos*): Disable SPEED_CYCLECOUNTER_OBJ,
26070	as tune/alpha.asm doesn't suit.
26071
26072	* mpn/generic/sqrtrem.c, mpz/pow_ui.c, mpz/powm_ui.c, mpf/get_str.c,
26073	mpf/set_str.c: Use mpn_sqr_n when applicable, not mpn_mul_n.
26074
260752000-12-23  Torbjorn Granlund  <tege@swox.com>
26076
26077	* mpn/generic/mul_fft.c: Reformat.
26078	(mpn_fft_neg_modF): Remove.
26079	(mpn_fft_mul_2exp_modF): Inline mpn_fft_neg_modF.
26080
26081	* mpn/cray/gmp-mparam.h: Retune.
26082
26083	* configure.in (*-cray-unicos*): Pass `-O3 -htask0'.
26084	(vax*-*-*): Fix typo.
26085
26086	* mpn/cray/mul_1.c: Use dynamic arrays, get rid of TMP_*.
26087	* mpn/cray/addmul_1.c: Likewise.
26088	* mpn/cray/submul_1.c: Likewise.
26089	* mpn/cray/add_n.c: Likewise.
26090	* mpn/cray/sub_n.c: Likewise.
26091
26092	* configure.in (default cc_cflags,cc_64_cflags): Remove -g/add -O.
26093	(mips*-*-irix[6789]*]): Remove -g from cc_*_cflags.
26094
260952000-12-22  Torbjorn Granlund  <tege@swox.com>
26096
26097	* mpn/generic/mul_n.c: Delete K&R function headers.
26098
26099	* mpn/generic/mul_n.c (mpn_kara_mul_n): Clean up type confusion
26100	between mp_limb_t and mp_size_t.
26101	(mpn_kara_sqr_n): Likewise.
26102
26103	* mpn/generic/mul_n.c (mpn_kara_mul_n): Use mpn_incr_u.
26104	(mpn_kara_sqr_n): Likewise.
26105
26106	* mpn/generic/mul_n.c (mpn_kara_mul_n): Change handling of `sign'
26107	to work around GCC 2.8.1 MIPS bug.
26108
26109	* configure.in (implied alpha*-cray-unicos*): Remove -g from cc_cflags.
26110
261112000-12-21  Torbjorn Granlund  <tege@swox.com>
26112
26113	* mpn/alpha/invert_limb.asm: Simplify a bit.
26114	Add handling of bigend systems.
26115	* mpn/alpha/unicos.m4: Define `bigend'.
26116	* mpn/alpha/default.m4: Define `bigend' (to expand to nothing).
26117
26118	* tests/t-constants.c (CHECK_CONSTANT): Print using %lx.
26119
26120	* mpn/alpha/gmp-mparam.h: Remove sizes for plain C types.
26121	* mpn/alpha/ev5/gmp-mparam.h: Likewise.
26122	* mpn/alpha/ev6/gmp-mparam.h: Likewise.
26123
26124	* mpn/alpha/unicos.m4: Define LEA.
26125	* mpn/alpha/default.m4: Likewise.
26126	* mpn/alpha/invert_limb.asm: Use LEA for loading symbolic addresses.
26127	* mpn/alpha/cntlz.asm: Likewise.
26128
26129	* mpn/alpha/cntlz.asm: Don't use `ldbu', use slightly slower
26130	`ldq_u' + `extbl' instead.
26131
26132	* mpn/alpha/unicos.m4: Define EXTERN.
26133	* mpn/alpha/default.m4: Define EXTERN (to expand to nothing).
26134	* mpn/alpha/cntlz.asm: Declare __clz_tab usign `EXTERN' (for the
26135	benefit of Unicos).
26136
261372000-12-21  Kevin Ryde  <kevin@swox.se>
26138
26139	* mpn/alpha/unicos.m4 (GSYM_PREFIX): Define for the benefit of
26140	__clz_tab.
26141
261422000-12-20  Torbjorn Granlund  <tege@swox.com>
26143
26144	* longlong.h: Add udiv_qrnnd and count_leading_zeros for _CRAYMPP
26145	systems.
26146
261472000-12-19  Torbjorn Granlund  <tege@swox.com>
26148
26149	* configure.in (*sparc*-*-*): Remove -g from cc_cflags and acc_cflags.
26150
26151	* mpn/generic/sqrtrem.c (mpn_sqrtrem): Separate `limb' values from
26152	`size' values.
26153
26154	* configure.in (*-cray-unicos*): Add `-Wa,-B' to cc_cflags.
26155
26156	* demos/pexpr.c (rstate): New variable.
26157	(main): Initialize rstate.
26158	(enum op_t): Add RANDOM.
26159	(fns): Add field for RANDOM.
26160	(mpz_eval_expr): Handle RANDOM.
26161
261622000-12-19  Kevin Ryde  <kevin@swox.se>
26163
26164	* mpn/generic/sqrtrem.c: Rewrite by Paul Zimmermann, based on his
26165	Karatsuba Square Root algorithm.
26166	* gmp.texi (Square Root Algorithm): Update.
26167
26168	* tune/many.pl: New file.
26169
26170	* mpn/tests/try.c,ref.[ch] (mpn_preinv_mod_1, mpn_sb_divrem_mn,
26171	mpn_tdiv_qr, mpn_gcd_finda, mpn_kara_mul_n, mpn_kara_sqr_n,
26172	mpn_toom3_mul_n, mpn_toom3_sqr_n): Add testing.
26173	* mpn/tests/ref.c: Cast some "0"s in function calls.
26174
26175	* mpn/x86/k7/mmx/mod_1.asm: Add preinv_mod_1 entrypoint, remove extra
26176	variable for loop termination.
26177
26178	* mpn/x86/p6/mmx/mod_1.asm: Remove file, in favour of the following.
26179	* mpn/x86/p6/mod_1.asm: New file.
26180
26181	* mpn/x86/pentium/mod_1.asm: New file.
26182
261832000-12-18  Torbjorn Granlund  <tege@swox.com>
26184
26185	* configure.in (mips*-*-irix[6789]*): Pass options to compiler using
26186	`-Wc'.
26187
261882000-12-18  Kevin Ryde  <kevin@swox.se>
26189
26190	* mpn/x86/k6/pre_mod_1.asm: New file.
26191
26192	* tune/tuneup.c (USE_PREINV_MOD_1): Tune this, rearrange mpn_divrem_1
26193	and mpn_mod_1 handling in support of it.
26194	* tune/Makefile.am: Consequent changes to divrem_1.c and mod_1.c.
26195
26196	* gmp-impl.h (USE_PREINV_MOD_1, MPN_MOD_OR_PREINV_MOD_1): New macros.
26197	* mpn/generic/perfsqr.c, mpz/pprime_p.c: Use MPN_MOD_OR_PREINV_MOD_1.
26198
26199	* configure.in: Let an asm mod_1 provide a preinv_mod_1 entrypoint.
26200
26201	* mpn/alpha/default.m4: Remove some newlines, add some asserts.
26202	(r0 etc, f0 etc): Use defreg and deflit.
26203	(PROLOGUE, PROLOGUE_GP, EPILOGUE): Use GSYM_PREFIX.
26204	* mpn/alpha/unicos.m4: Remove some newlines, add some asserts.
26205	* mpn/alpha/invert_limb.asm: Remove unused second DATASTART parameter.
26206	* mpn/alpha/cntlz.asm: Use mpn_count_leading_zeros and __clz_tab.
26207
26208	* mpn/asm-defs.m4 (changecom): Comments on portability.
26209	(__clz_tab, modlimb_invert_table): New macros, matching gmp-impl.h.
26210	(count_leading_zeros, count_trailing_zeros): New define_mpn's.
26211	(PROLOGUE etc): Comments on usage, add some asserts.
26212	(OPERATION_[lr]shift): Use m4_not_for_expansion, for the benefit of
26213	lorrshift multifunc.
26214
26215	* mpn/Makeasm.am (RM_TMP): New variable controlling tmp-*.s
26216	removal, for development purposes.
26217
26218	* mpz/fac_ui.c: Fix for long long limb by using mpn_mul_1 not
26219	mpz_mul_ui, and note some possible enhancements.
26220
26221	* mpz/tests/t-fac_ui.c: New test.
26222	* mpz/tests/Makefile.am (check_PROGRAMS): Add it.
26223	* macos/Makefile.in: Ditto, and add t-fib_ui too.
26224
26225	* mpn/generic/[lr]shift.c: Remove some DEBUG code adequately covered
26226	by new parameter ASSERTs.
26227
26228	* longlong.h (count_trailing_zeros): Assert x!=0.
26229
26230	* doc/configuration: Updates for new configure things, add some notes
26231	on test setups.
26232
262332000-12-16  Torbjorn Granlund  <tege@swox.com>
26234
26235	* configure.in (*-*-aix): Pass -qmaxmem=20000 to xlc also for 64-bit
26236	compiles.
26237	* configure.in: Disable shared libs for *-*-ultrix*.
26238
262392000-12-15  Torbjorn Granlund  <tege@swox.com>
26240
26241	* configure.in (powerpc*-*-*): Pass -Wa,-mppc when using gcc.
26242
26243	* gmp-impl.h (_EXTERN_INLINE): #define different for GCC and other
26244	compilers.
26245
26246	* gmp-h.in (__gmp_inline): Remove.
26247	* mp-h.in: Likewise.
26248	* mpn/generic/gcd.c: Use `inline' instead of `__gmp_inline'.
26249
26250	* configure.in (mips*-*-irix[6789]*): Define *_ldflags.
26251
262522000-12-14  Torbjorn Granlund  <tege@swox.com>
26253
26254	* mpn/generic/pre_mod_1.c: Use proper type for udiv_qrnnd
26255	parameter `dummy'.
26256
26257	* mpn/generic/divrem_1.c: Use explicit `!= 0' in if statement.
26258	* mpn/generic/mod_1.c: Likewise.
26259
262602000-12-14  Kevin Ryde  <kevin@swox.se>
26261
26262	* config.guess (mips-*-irix[6789]*): Transform to mips64.
26263	(m68k-*-nextstep* | m68k-*-openstep*): Transform to m68020.
26264
262652000-12-13  Torbjorn Granlund  <tege@swox.com>
26266
26267	* tests/t-constants.c (main): Conditionalize use of PP_INVERTED.
26268
26269	* mpn/mp_bases.c: Handle 4-bit limbs.
26270	(main): Add code for generating tables.
26271
26272	* mpn/generic/popham.c: Handle limb bitsizes of 4, 8, 16.
26273	Suffix all 32-bit constant with `L'.
26274	Use CNST_LIMB for 64-bit constants.
26275
262762000-12-13  Kevin Ryde  <kevin@swox.se>
26277
26278	* gmp-impl.h (FIB_THRESHOLD): Defaults for 4,8,16 bits per limb, and
26279	an arbitrary fallback default.
26280	(modlimb_invert): Add efficient code for 8,16 (or 4) bits per limb.
26281
26282	* configure.in (mips3, mips64): Don't bother with o32 (mips2 32-bit
26283	limb) on IRIX 6.
26284
26285	* Makefile.am (SUBDIRS): Put "tests" first so tests/t-constants.c is
26286	run first, to pick up any limb size mismatch.
26287
26288	* tune/tuneup.c (DIVREM_1, MOD_1): Fix result values, were off by 1.
26289
26290	* mpz/fib_ui.c (table1, table2): Add data for 4,8,16 bits per limb.
26291
262922000-12-12  Torbjorn Granlund  <tege@swox.com>
26293
26294	* gmp-impl.h (LIMBS_PER_DOUBLE): Define for any limb bitsize.
26295
262962000-12-11  Torbjorn Granlund  <tege@swox.com>
26297
26298	* mpn/mp_bases.c: Add tables for 8-bit and 16-bit limbs.
26299	Round existing `double' values properly.
26300
26301	* gmp-h.in (__gmp_randstate_struct): Prefix field names with _mp_
26302	to keep out of user name space.
26303	(__gmp_randata_lc): Likewise.
26304	* randclr.c, randlc.c, randlc2x.c, randraw.c, randsd.c, randsdui.c:
26305	Corresponding changes.
26306
26307	* gmp-impl.h (PP): #define for machines with BITS_PER_MP_LIMB
26308	of 2, 4, 8, and 16.
26309	(PP_FIRST_OMITTED): New, define for various BITS_PER_MP_LIMB.
26310	(PP_MASK): Remove.
26311	(PP_MAXPRIME): Remove.
26312
26313	* mpn/generic/perfsqr.c: Generalize PP handling for machines with
26314	limbs of < 32 bits.  Allow PP_INVERTED to be undefined.
26315	* mpz/pprime_p.c: Likewise.
26316
263172000-12-10  Torbjorn Granlund  <tege@swox.com>
26318
26319	* mpn/generic/mul_1.c: Declare parameters in C89 style.
26320
263212000-12-10  Kevin Ryde  <kevin@swox.se>
26322
26323	* tune/Makefile.am (speed_LDFLAGS, speed_ext_LDFLAGS, tune_LDFLAGS):
26324	Don't use -all-static, as gcc 2.95.2 on i386 solaris 8 doesn't like
26325	it.
26326
26327	* configure.in (mips3,mips64): Add ABI=64, name the others ABI=n32 and
26328	ABI=o32.
26329	* mpn/mips3/gmp-mparam.h (BITS_PER_LONGINT): Remove #define and let
26330	configure determine it, since it varies with ABI=64 or ABI=n32.
26331	* gmp.texi (ABI and ISA): Update.
26332	(mpz_mod_ui): Remark that it's identical to mpz_fdiv_r_ui.
26333	(mpn_divexact_by3): Qualify a statement needing mp_bits_per_limb even.
26334
26335	* mul_fft.c (mpn_fft_mul_modF_K etc): Patch by Paul Zimmermann to fix
26336	results in certain cases of recursing into a further FFT.
26337
263382000-12-09  Torbjorn Granlund  <tege@swox.com>
26339
26340	* mpz/cmpabs.c: Remove unused variable.
26341	* mpz/rrandomb.c: Likewise.
26342	* mpz/xor.c: Likewise.
26343
263442000-12-07  Torbjorn Granlund  <tege@swox.com>
26345
26346	* mpn/generic/gcdext.c: Handle double carry when computing s1.
26347	Merge two code blocks for computing s0 and s1.
26348
263492000-12-07  Kevin Ryde  <kevin@swox.se>
26350
26351	* configure.in (hppa*-*-*): Remove -Aa -D_HPUX_SOURCE from
26352	cc_cflags/cppflags, and instead let AM_C_PROTOTYPES add it, or -Ae,
26353	whichever works.
26354
26355	* configure.in (*-*-aix[34]*): Disable shared by default, but let
26356	the user override that, if desired.
26357	* gmp.texi (Notes for Particular Systems): Update.
26358
263592000-12-06  Torbjorn Granlund  <tege@swox.com>
26360
26361	* mpq/cmp_ui.c: Streamline.
26362
263632000-12-06  Kevin Ryde  <kevin@swox.se>
26364
26365	* tune/divrem_1_div.c,divrem_1_inv.c,mod_1_div.c,mod_1_inv.c,
26366	gcdext_double.c: New files for measuring.
26367	* tune/Makefile.am (libspeed_la_SOURCES): Add them.
26368	* tune/speed.c,speed.h,common.c: Add measuring of them.
26369	(mpn_preinv_mod_1, mpz_jacobi, mpz_powm_ui): Add measuring.
26370
26371	* speed.c (getopt_long): Don't use this, just plain getopt.
26372	* configure.in (getopt_long): Remove test.
26373
26374	* gmp-impl.h (MPN_KARA_MUL_N_TSIZE, MPN_KARA_MUL_N_MINSIZE,
26375	MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_MUL_N_MINSIZE): New macros, and
26376	assume toom3 square tsize was meant to be the same as the mul (both
26377	are overestimates).
26378	* tune/tuneup.c, mpn/generic/mul.c, mpn/generic/mul_n.c: Use them.
26379	* mpn/generic/mul_n.c (mpn_toom3_sqr_n): Fix an ASSERT to use
26380	TOOM3_SQR_THRESHOLD not TOOM3_MUL_THRESHOLD, add a few that might
26381	be more realistic size checks.
26382	* tune/speed.h (SPEED_ROUTINE_MPN_MUL_N_TSPACE etc): Use minsize.
26383
26384	* mpn/generic/divrem_1.c: Partial rewrite, merge fractional part
26385	calculation, skip a divide step in more cases, introduce
26386	DIVREM_1_NORM_THRESHOLD and DIVREM_1_UNNORM_THRESHOLD.
26387	* mpn/generic/mod_1.c: Partial rewrite, skip a divide step in more
26388	cases, introduce MOD_1_NORM_THRESHOLD, MOD_1_UNNORM_THRESHOLD.
26389	* longlong.h (UDIV_PREINV_ALWAYS): New define, set for alpha and ia64.
26390	* tune/tuneup.c (DIVREM_1_NORM_THRESHOLD, DIVREM_1_UNNORM_THRESHOLD,
26391	MOD_1_NORM_THRESHOLD, MOD_1_UNNORM_THRESHOLD): Tune these.
26392	* gmp-impl.h [TUNE_PROGRAM_BUILD]: Support for this.
26393	* tune/Makefile.am (TUNE_MPN_SRCS): Add divrem_1.c and mod_1.c.
26394
26395	* gmp-impl.h (UDIV_NORM_PREINV_TIME): Renamed from UDIV_PREINV_TIME.
26396	* mpn/generic/perfsqr.c, mpn/generic/sb_divrem_mn.c,
26397	mpn/x86/*/gmp-mparam.h: Ditto.
26398	* gmp-impl.h (UDIV_UNNORM_PREINV_TIME): New define.
26399
26400	* configure.in (AC_C_INLINE, HAVE_INLINE): New test and define.
26401	* gmp-impl.h (inline): Remove, use config.h.
26402	(_EXTERN_INLINE): Redefine based on HAVE_INLINE.
26403	(mpn_zero_p): Use HAVE_INLINE.
26404
26405	* acinclude.m4 (GMP_PROG_AR, GMP_PROG_NM): Don't add flags to a user
26406	selected $AR or $NM.
26407
26408	* tune/tuneup.c (all): Print how long the tuning took.
26409
26410	* configure.in (AM_C_PROTOTYPES): Use this, not GMP_ANSI2KNR.
26411	* acinclude.m4 (GMP_ANSI2KNR): Remove.
26412
26413	* Makefile.am (gmp.h, mp.h): In DISTCLEANFILES not CLEANFILES.
26414
26415	* gmp-h.in (mpn_divmod, mpn_divmod_1, mpn_divexact_by3): Cast some
26416	zeros, for the benefit of K&R if long!=int.
26417
26418	* mpn/lisp/gmpasm-mode.el (gmpasm-comment-start-regexp): Add "*" for
26419	the benefit of cray.
26420
26421	* compat.c (mpn_divexact_by3, mpn_divmod_1): Return types should be
26422	mp_limb_t, not int, and need an actual "return".
26423
264242000-12-05  Torbjorn Granlund  <tege@swox.com>
26425
26426	* mpn/sparc32/v8/supersparc/gmp-mparam.h: Retune.
26427	* mpn/alpha/gmp-mparam.h: Tune for 21064.
26428
26429	* longlong.h: Reformat to avoid newlines within strings.
26430
26431	* gmp-impl.h (inline): Disable if GCC has defined __STRICT_ANSI__.
26432
26433	* configure.in: Do a `mkdir tune' before creating tune/sqr_basecase.c.
26434
26435	* Makefile.am: Treat mp.h analogously to gmp.h.
26436
26437	configure.in (*-*-aix): Pass -qmaxmem=20000 to xlc.
26438
26439	* mp-h.in: Renamed from mp.h.
26440	Add #define for _LONG_LONG_LIMB.
26441	Move some other fixes from gmp-h.in.
26442	* mp.h: Removed.
26443	* configure.in: Generate mp.h from mp-h.in like we handle
26444	gmp-h.in/gmp.h.
26445
264462000-12-04  Torbjorn Granlund  <tege@swox.com>
26447
26448	* acinclude.m4: Fix typo testing for bad HP compiler.
26449
264502000-12-03  Torbjorn Granlund  <tege@swox.com>
26451
26452	* mpbsd/tests/t-misc.c (check_itom): Exclude some tests for Cray
26453	CFP systems.
26454
26455	* longlong.h (CRAYIEEE umul_ppmm): New.
26456
26457	* mpn/cray/gmp-mparam.h (BITS_PER_SHORTINT): 32 => 64.
26458	(*_THRESHOLD): Tune.
26459
26460	* configure.in: Disable shared libs for *-*-unicos*.
26461
264622000-12-03  Kevin Ryde  <kevin@swox.se>
26463
26464	* configure.in, tune/Makefile.am: Create tune/sqr_basecase.c during
26465	configure, and use it unconditionally in $(nodist_tuneup_SOURCES).
26466	Fixes a problem with sqr_basecase.lo under --disable-static.
26467
264682000-12-01  Torbjorn Granlund  <tege@swox.com>
26469
26470	* mpf/tests/t-get_d.c (LOW_BOUND,HIGH_BOUND): #define for non-IEEE
26471	Cray systems.
26472
26473	* gmp-impl.h (union ieee_double_extract): Test for _CRAYIEEE.
26474
264752000-11-30  Torbjorn Granlund  <tege@swox.com>
26476
26477	* mpz/tests/t-mul.c (base_mul): Fix re-evaluation problems in macro
26478	invocations.
26479	(ref_mpz_mul): New name from mpz_refmul.  Make static.
26480	(base_mul): New name for _mpn_mul_classic.
26481
264822000-11-30  Kevin Ryde  <kevin@swox.se>
26483
26484	* configure.in: Rewrite of CC/CFLAGS selection scheme, introduce a
26485	notion of ABI, merge compiler and mpn path selection, add flags
26486	selection for AR and NM, let CC without CFLAGS work.
26487	(AC_PROG_CC): Use this, not GMP_SELECT_CC.
26488	* acinclude.m4 (GMP_PROG_CC_WORKS): Don't use AC_TRY_COMPILE, combine
26489	cc/cflags parameter.
26490	(GMP_PROG_CC_FIND, GMP_CHECK_CC_64BIT, GMP_PROG_CC_SELECT): Remove.
26491	* gmp.texi (Installing GMP): Updates for new scheme.
26492
26493	* configure.in (AC_CANONICAL_HOST): Use this and $host, not $target.
26494	* acinclude.m4, acconfig.h, longlong.h, mpn/x86/x86-defs.m4,
26495	mpn/x86/k7/mmx/popham.asm: Ditto, renaming HAVE_TARGET_CPU to
26496	HAVE_HOST_CPU.
26497	* gmp.texi (Build Options, and elsewhere): Update.
26498
26499	* acinclude.m4 (GMP_COMPARE_GE): New macro.
26500	(GMP_GCC_MARCH_PENTIUMPRO): Use it, add CC parameter, check for GCC.
26501	(GMP_HPC_HPPA_2_0): New macro, adapted from GMP_CHECK_CC_64BIT.
26502
26503	* acinclude.m4 (GMP_PROG_AR): New macro, using AC_CHECK_TOOL, adding
26504	GMP flags.
26505	* configure.in: Use it
26506
26507	* gmp-h.in: Renamed from gmp.h.
26508	(@define_LONG_LONG_LIMB@): Placeholder for instantiation.
26509	(__GNU_MP__): Bump to 3.
26510	* acinclude.m4 (GMP_VERSION): Get version from gmp-h.in.
26511	* configure.in: Create gmp.h from gmp-h.in to set _LONG_LONG_LIMB.
26512	* gmp.texi.h (ABI and ISA): Mention this.
26513	* acconfig.h (_LONG_LONG_LIMB): Remove undef.
26514	* Makefile.am: Distribute gmp-h.in, not gmp.h.
26515
26516	* configure.in (AC_PROG_CPP, AC_PROG_INSTALL, AC_PROG_LN_S): Remove,
26517	dragged in by other macros.
26518	(gmp_asm_syntax_testing): Renamed from gmp_no_asm_syntax_testing.
26519	(AC_EXEEXT, AC_OBJEXT): Remove, done automatically by libtool.
26520	* configure.in, acinclude.m4: Remove "" from "`foo`", being
26521	unnecessary and not portable.
26522
26523	* configure.in (GMP_LDFLAGS): New AC_SUBST flags for libtool link.
26524	(powerpc64*-*-aix*): Use for -Wc,-maix to fix shared library creation,
26525	but can't build shared and static at the same time.
26526	* Makefile.am (libgmp_la_LDFLAGS, libmp_la_LDFLAGS): Use
26527	$(GMP_LDFLAGS).
26528	* gmp.texi (Notes for Particular Systems): Update AIX problem
26529
26530	* configure.in (AC_CONFIG_LINKS): Use where needed, not via gmp_links.
26531	(gmp_srclinks): Build up as needed, not via gmp_links.
26532
26533	* acinclude.m4 (GMP_INIT): Do CONFIG_TOP_SRCDIR and asm-defs.m4 here.
26534	* configure.in (asm-defs.m4): Consequent changes.
26535
26536	* acinclude.m4 (GMP_INCLUDE_MPN): Using include_mpn(), replacing
26537	GMP_INCLUDE and GMP_SINCLUDE.
26538	* configure.in (gmp_m4postinc): Remove this scheme, use
26539	GMP_INCLUDE_MPN instead.
26540
26541	* configure.in (*-*-sco3.2v5*): Force ac_cv_archive_cmds_need_lc=no,
26542	until libtool does this itself.
26543	* gmp.texi (Known Build Problems): Remove SCO -lc problem.
26544
26545	* configure, INSTALL.autoconf, etc: Update to autoconf 2000-11-29.
26546	* acinclude.m4 (GMP_C_SIZES): Use AC_CHECK_SIZEOF.
26547	* gmp.texi (Known Build Problems): Remove version.c sed/config.h
26548	problem, fixed.
26549
26550	* ltmain.sh, aclocal.m4: Update to libtool 2000-11-25.
26551	* ltconfig: No longer required, but leave an empty dummy for automake.
26552	* gmp.texi (Known Build Problems): Remove SunOS native ar ranlib
26553	problem, fixed.
26554
26555	* */Makefile.in, aclocal.m4: Update to automake 2000-11-25.
26556	* mpbsd/tests/Makefile.am, mpfr/tests/Makefile.am (check_PROGRAMS):
26557	Remove dummy, no longer required.
26558	* mpbsd/tests/dummy.c, mpfr/tests/dummy.c: Remove files.
26559	* depcomp: Remove file, no longer required (with no-dependencies).
26560
26561	* texinfo.tex: Update to 2000-11-09.
26562	* gmp.texi (Build Options): Mention PDF from gmp.texi.
26563	* Makefile.am (MOSTLYCLEANFILES): Add gmp.tmp, from new texinfo.tex.
26564
26565	* gmp.texi (Build Options): List alphaev56, alphapca56, alphaev67,
26566	hppa2.0n and power among supported CPUs.
26567
265682000-11-30  Torbjorn Granlund  <tege@swox.com>
26569
26570	* mpz/tests/t-mul.c: Increase max operand size from 2^17 bits
26571	to 2^19 bits.  Misc cleanups.
26572
265732000-11-26  Kevin Ryde  <kevin@swox.se>
26574
26575	* tune/tuneup.c (FIB_THRESHOLD): Cope better with different speeds of
26576	odd and even sizes.
26577
26578	* longlong.h (alpha): Use udiv_qrnnd and count_leading_zeros on all
26579	compilers, not just gcc.
26580
26581	* pre_mod_1.c: Use conditional subtract to always skip a division.
26582	(UMUL_TIME, UDIV_TIME): Remove defaults, now in longlong.h.
26583
265842000-11-22  Torbjorn Granlund  <tege@swox.com>
26585
26586	* mpn/pa64w/gmp-mparam.h: Retune.
26587	* mpn/pa64/gmp-mparam.h: Retune.
26588	* mpn/sparc64/gmp-mparam.h: Retune.
26589
265902000-11-22  Kevin Ryde  <kevin@swox.se>
26591
26592	* gmp-impl.h (ABOVE_THRESHOLD, BELOW_THRESHOLD): New macros.
26593	* mpn/generic/gcdext.c: Use them.
26594
26595	* mpn/generic/gcdext.c [WANT_GCDEXT_ONE_STEP]: Force only one step.
26596	* tune/gcdextos.c, tune/gcdextod.c: New files, one step gcdext, single
26597	and double.
26598	* tune/Makefile.am (libspeed_la_SOURCES): Add them.
26599	(TUNE_MPN_SRCS): Remove gcdext.c.
26600	* tune/speed.h, tune/common.c, tune/speed.c: Add measuring.
26601	* tune/tuneup.c: Use for GCDEXT_THRESHOLD, plus check if double limb
26602	is ever better.  Should be more accurate, and hopefully faster.
26603
26604	* tune/gcdext_single.c: New file, gcdext forced to single limbs.
26605	* tune/Makefile.am: Add it.
26606	* tune/speed.h, tune/common.c, tune/speed.c: Add measuring, and of
26607	invert_limb.
26608
26609	* tune/speed.h (speed_params r): Use mp_limb_t, not long.
26610	* tune/speed.h, tune/common.c: Don't "switch" on "r".
26611	* tune/speed.c (r_string): Accept limb sized constants.
26612	(choice scale): Add a scale factor (eg. "2.33*mpn_add_n").
26613	* tune/common.c (SPEED_ROUTINE_UDIV_QRNND_A): Default r to
26614	__mp_bases[10].big_base, being a full limb value.
26615
26616	* configure.in (alphapca56*-*-*): Use ev5 mpn path.
26617	(am29000*-*-*): Remove this, leave the canonical a29k.
26618	(z8k*-*-*, z8kx*-*-*): Changed from z8000, since z8k is canonical.
26619	(gmp_mpn_functions_optional): Add invert_limb, use for alpha and ia64.
26620
26621	* configure.in (alloca): Accept yes/no/detect, generate an error if
26622	"yes" but not available.
26623	* gmp.texi (Build Options): Update.
26624
26625	* acinclude.m4 (GMP_TRY_ASSEMBLE): Make conftest.out available.
26626	(GMP_ASM_ALIGN_FILL_0x90): Use it.
26627
26628	* acinclude.m4 (GMP_ASM_X86_MMX) [*-*-solaris*]: Check for solaris
26629	2.6 "as" movq bug.
26630	* gmp.texi (Notes for Particular Systems): Update x86 MMX note.
26631
266322000-11-21  Torbjorn Granlund  <tege@swox.com>
26633
26634	* tune/Makefile.am (EXTRA_DIST): List hppa2w.asm.
26635
26636	* tune/hppa2.asm: Change level directive to "2.0n".
26637	* tune/hppa2w.asm: New file.
26638	* configure.in [SPEED_CYCLECOUNTER_OBJS switch]: Separate out hppa2.0w.
26639
26640	* mpn/pa64/gmp-mparam.h (BITS_PER_LONGINT): 64 => 32.
26641
266422000-11-21  Kevin Ryde  <kevin@swox.se>
26643
26644	* urandom.h (random): No prototype if glibc stdlib.h has already
26645	provided it (avoids an int32_t/long conflict).
26646
26647	* tune/Makefile.am (LDFLAGS): Use -all-static.
26648	(speed-dynamic): Dynamic linked version of speed.c.
26649	* tune/README: Update.
26650
26651	* mpn/generic/gcd.c (find_a): Use native version if available.
26652	* acconfig.h (HAVE_NATIVE_mpn_gcd_finda): Add #undef.
26653	* gmp-impl.h (mpn_gcd_finda): Add prototype and define.
26654	* mpn/asm-defs.m4 (mpn_gcd_finda): New define_mpn.
26655	* tune/gcd_finda_gen.c: #undef any HAVE_NATIVE_mpn_gcd_finda.
26656	* configure.in (gmp_mpn_functions_optional): Add gcd_finda.
26657	* mpn/x86/k6/gcd_finda.asm: New file.
26658
26659	* tune/tuneup.c (POWM_THRESHOLD): Slightly bigger size steps.
26660
26661	* gmp-impl.h (__GMP_IMPL_H__): Protect against multiple inclusion.
26662	* tune/gcd_bin.c, tune/powm_mod.c, tune/powm_redc.c: Use #undef after
26663	gmp-impl.h to force thresholds.
26664	* tune/tuneup.c (print_define, fft): No need for #ifndefs on
26665	thresholds any more.
26666
266672000-11-20  Torbjorn Granlund  <tege@swox.com>
26668
26669	* mpz/tests/t-powm.c: Analogous changes as made 2000-11-12 to t-mul.c.
26670	* mpz/tests/t-powm_ui.c: Likewise.
26671	* mpz/tests/t-pow_ui.c: Likewise.
26672	* mpz/tests/t-root.c: Likewise.
26673
26674	* configure.in [compiler switch]: Pass "-Aa -D_HPUX_SOURCE" to cc for
26675	all hppa versions.
26676
26677	* mpn/hppa/hppa1_1/udiv_qrnnd.S: Reference data using PC relative
26678	addressing (was r19 relative addressing).
26679
266802000-11-18  Torbjorn Granlund  <tege@swox.com>
26681
26682	* rand.c: (__gmp_rand_lc_scheme): Convert strings to hexadecimal.
26683	(gmp_randinit): Expect strings in hexadecimal.
26684
266852000-11-18  Kevin Ryde  <kevin@swox.se>
26686
26687	* configfsf.guess, configfsf.sub: Update to 2000-11-16.
26688	* config.guess (alpha*-*-openbsd*): Do exact cpu detection.
26689
266902000-11-14  Torbjorn Granlund  <tege@swox.com>
26691
26692	* mpz/tests/t-fdiv.c: Analogous changes as made 2000-11-12 to t-mul.c.
26693	* mpz/tests/t-tdiv_ui.c: Likewise.
26694	* mpz/tests/t-fdiv_ui.c: Likewise.
26695	* mpz/tests/t-sqrtrem.c: Likewise.
26696	* mpz/tests/t-gcd.c: Likewise.
26697
266982000-11-13  Kevin Ryde  <kevin@swox.se>
26699
26700	* mpn/Makeasm.am: New file, splitting out assembler rules.
26701	* mpn/Makefile.am, tune/Makefile.am: Use it.
26702
26703	* mpn/Makefile.am (@CPP@): Remove this, automake already gives it.
26704
26705	* configure.in (AC_CHECK_LIBM): New test, and AC_SUBST it.
26706	* Makefile.am (MPFR_LIBADD_OPTION): Use it.
26707	* demos/Makefile.am (qcn_LDADD): Ditto.
26708	* tune/Makefile.am (libspeed_la_LIBADD): Ditto.
26709	* tests/rand/Makefile.am (libstat_la_LIBADD): Ditto.
26710
26711	* tune/time.c (timeval_diff_secs): Better calculation.
26712	(read_real_time): New measuring method for AIX power/powerpc.
26713	(speed_endtime): Protect against negative times.
26714	* tune/common.c (speed_measure): Protect against big reps.
26715	* tune/freq.c (speed_cpu_frequency_measure_one): Better timeval diff.
26716	* tune/speed.h (TIMEVAL_DIFF_SEC,USEC): Remove macros.
26717	* configure.in: (sys/systemcfg.h, read_real_time): New tests.
26718
267192000-11-13  Torbjorn Granlund  <tege@swox.com>
26720
26721	* mpz/tests/t-mul.c: Remove #include urandom.h.
26722	* mpz/tests/t-tdiv.c: Likewise.
26723
26724	* configure.in [SPEED_CYCLECOUNTER_OBJS switch]:
26725	Declare hppa.asm as just 32 bits (cyclecounter_size=1).
26726
267272000-11-12  Torbjorn Granlund  <tege@swox.com>
26728
26729	* mpz/tests/t-mul.c
26730	(main): Generate random numbers using gmp_rand* functions.
26731	(main): Distribute random numbers non-uniformly.
26732	(main): Seed by current time if GMP_CHECK_RANDOMIZE is set.
26733	(_mpn_mul_classic): Streamline.
26734	* mpz/tests/t-tdiv.c: Analogous changes.
26735
26736	* demos/pexpr.c (HAVE_sigaltstack): Fix typo in testing for _UNICOS.
26737	Also test for __hpux.
26738
267392000-11-11  Torbjorn Granlund  <tege@swox.com>
26740
26741	* mpn/alpha/ev5/gmp-mparam.h: Retune.
26742
26743	* mpn/alpha/ev6/gmp-mparam.h: Retune.
26744
26745	* mpn/alpha/ev6/add_n.asm: Misc cleanups.
26746
26747	* mpn/alpha/ev6/sub_n.asm: New file.
26748
267492000-11-10  Torbjorn Granlund  <tege@swox.com>
26750
26751	* configure.in [path switch] (alphaev6*-*-*): Add alpha/ev5 to path.
26752
26753	* mpn/alpha/ev6/add_n.asm: New file.
26754
267552000-11-10  Kevin Ryde  <kevin@swox.se>
26756
26757	* mpz/powm.c (redc): Make global under WANT_REDC_GLOBAL.
26758	* tune/powm_mod.c, tune/powm_redc.c: New files.
26759	* tune/Makefile.am (libspeed_la_SOURCES): Add them.
26760	* tune/*: Add measuring of redc, mpz_mod, mpz_powm_mod, mpz_powm_redc.
26761
26762	* tune/tuneup.c (POWM_THRESHOLD): Determine from redc and mpz_mod.
26763	* tune/Makefile.am (TUNE_MPZ_SRCS): Remove powm.
26764
267652000-11-10  Torbjorn Granlund  <tege@swox.com>
26766
26767	* mpn/mips3/gmp-mparam.h: Retune.
26768
26769	* configure.in (os_64bit): Rename to check_64bit_compiler.
26770
267712000-11-09  Torbjorn Granlund  <tege@swox.com>
26772
26773	* configure.in [SPEED_CYCLECOUNTER_OBJS switch]: Choose hppa/hppa2 code
26774	depending on $CC64.
26775
267762000-11-09  Kevin Ryde  <kevin@swox.se>
26777
26778	* mpn/x86/pentium/mul_1.asm: Unroll 2x, saving 1 c/l when in L1.
26779	Add 1c entrypoint.
26780	* mpn/x86/pentium/aorsmul_1.asm: Add 1c entrypoints, shave a couple
26781	of cycles at entry and exit.
26782
26783	* configure.in (power1,2,2sc): Support these as synonyms for plain
26784	power.
26785
26786	* acinclude.m4 (GMP_ASM_X86_SHLDL_CL): GMP_DEFINE WANT_SHLDL_CL here.
26787	(GMP_ASM_X86_MMX, GMP_ASM_X86_SHLDL_CL): Add X86 into the names.
26788	* configure.in: Consequent changes.
26789
26790	* gmp.texi (Notes for Particular Systems): Remarks about power/powerpc.
26791	(Reentrancy): Remarks about simultaneous writing.
26792	(Reporting Bugs): Ask for configfsf.guess.
26793
267942000-11-08  Kevin Ryde  <kevin@swox.se>
26795
26796	* acinclude.m4 (GMP_FUNC_ALLOCA): New macro.
26797	* configure.in: Use it.
26798	* gmp-impl.h (alloca): Conditionals and setups as per autoconf
26799	(should make alloca available on more non-gcc compilers).
26800
26801	* acinclude.m4: Misc reformatting, simplify some quoting.
26802	(GMP_ASM_UNDERSCORE, GMP_ASM_X86_MCOUNT): Use $CC $CFLAGS $CPPFLAGS.
26803	(GMP_ASM_UNDERSCORE, GMP_ASM_ALIGN_FILL_0x90, GMP_ASM_RODATA): Put
26804	AC_REQUIREs outside AC_CACHE_CHECK.
26805	(GMP_C_SIZES): Use $srcdir/gmp.h, not -I; use $CPPFLAGS.
26806	(GMP_ASM_UNDERSCORE): Use "gmp_compile" variable, and only rm
26807	conftes1* conftes2*.
26808	(GMP_PROG_NM): New macro, require it in appropriate GMP_ASM_*.
26809	(GMP_TRY_ASSEMBLE): New macro, use it in various GMP_ASM_*.
26810	* configure.in: Use GMP_PROG_NM.
26811
26812	* mpn/tests/spinner.c (spinner_signal): Use RETSIGTYPE.
26813	(spinner_init): Force output to unbuffered.
26814
26815	* mpn/x86/README.family: Notes about GOT table and imul, misc updates.
26816	* mpn/x86/k7/diveby3.asm: Change to 3 operands for immediate imul.
26817	* mpn/x86/k6/diveby3.asm: Ditto.
26818
268192000-11-06  Torbjorn Granlund  <tege@swox.com>
26820
26821	* urandom.h: Simplify and make it work properly for 64-bit
26822	machines also in environments without `random'.
26823
268242000-11-04  Torbjorn Granlund  <tege@swox.com>
26825
26826	* configure.in [path switch]: Don't match rs6000-*-*, in
26827	particular don't assume POWER.
26828
26829	* tune/tuneup.c (fft): Remove usleep calls.
26830
26831	* config.guess: Don't pass "$@" when it is known to be empty.
26832
26833	* Makefile.am (EXTRA_DIST): List configfsf.guess and configfsf.sub.
26834
268352000-11-04  Kevin Ryde  <kevin@swox.se>
26836
26837	* configfsf.guess, configfsf.sub: Moved from config.guess and
26838	config.sub.
26839	* config.guess, config.sub: New files, wrappers around around
26840	configfsf versions.
26841	* configfsf.guess: Update to FSF 2000-10-23.
26842	* configfsf.sub: Update to FSF 2000-10-25.
26843
26844	* acinclude.m4 (GMP_ASM_POWERPC_R_REGISTERS): New macro.
26845	* mpn/powerpc32/powerpc-defs.m4: New file, regmap.m4 r0 etc macros
26846	conditionalized by GMP_ASM_POWERPC_R_REGISTERS.
26847	* mpn/powerpc32/regmap.m4: Remove file.
26848	* configure.in (powerpc*-*-*): Use all this.
26849
26850	* mpz/divegcd.c: New file, providing mpz_divexact_gcd.
26851	* Makefile.am, mpz/Makefile.am: Add it.
26852	* gmp-impl.h (mpz_divexact_gcd): Add prototype.
26853	* mpq/aors.c,canonicalize.c,div.c,mul.c: Use it.
26854
26855	* longlong.h [pentium] (count_leading_zeros): New macro.
26856	(__clz_tab): Always provide prototype.
26857	* acconfig.h (HAVE_TARGET_CPU_): Add x86s.
26858
26859	* tune/speed.[ch],common.c (count_leading_zeros,
26860	count_trailing_zeros, __udiv_qrnnd_c): Add measuring.
26861
26862	* configure.in (X86_PATTERN): Move from here ...
26863	* acinclude.m4 (X86_PATTERN): ... to here.
26864	(GMP_ASM_RODATA): Use it.
26865
26866	* configure.in (srandom): New test.
26867	* mpn/tests/try.c: Use it.
26868	* tune/speed.c: Ditto, and conditionalize getrusage and headers.
26869
268702000-11-02  Kevin Ryde  <kevin@swox.se>
26871
26872	* mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add udiv_qrnnd.c
26873	and udiv_w_sdiv.c.
26874
26875	* mpn/generic/mul_n.c (mpn_kara_sqr_n): Remove a duplicate
26876	subtract at the evaluate stage.
26877
268782000-11-01  Torbjorn Granlund  <tege@swox.com>
26879
26880	* configure.in [compiler switch] (sparc64-*-linux*): Spell
26881	gmp_xoptcflags_gcc properly, and pass same options as for other
26882	sparcv9 configs.
26883
26884	* tune/speed.h (SPEED_ROUTINE_MPN_GET_STR): Fix type of wsize.
26885
268862000-10-31  Torbjorn Granlund  <tege@swox.com>
26887
26888	* configure.in [compiler switch] (sparc64-*-linux*): Remove -mvis
26889	from gmp_xoptflags_gcc, this might not be an ultrasparc.
26890	Remove -m32 from gmp_cflags_gcc; add -Wa,-xarch=v8plus.
26891
268922000-10-29  Torbjorn Granlund  <tege@swox.com>
26893
26894	* mpn/ia64/lorrshift.asm: New file.
26895
26896	* configure.in: New mulfunc `lorrshift' for lshift and rshift.
26897
268982000-10-29  Kevin Ryde  <kevin@swox.se>
26899
26900	* mpn/generic/mul_n.c (mpn_kara_sqr_n): Delete code performing
26901	superfluous mpn_sub_n calls.
26902
26903	* configure.in (found_asm, M4): Account for SPEED_CYCLECOUNTER_OBJ,
26904	for the benefit of targets whose only .asm is a cycle counter.
26905
26906	* tune/tuneup.c (fft): Remove bogus usleep calls.
26907
269082000-10-28  Torbjorn Granlund  <tege@swox.com>
26909
26910	* mpn/ia64/invert_limb.asm: Get return value for 0x800...00 right.
26911
26912	* tune/Makefile.am (EXTRA_DIST): Add ia64.asm.
26913
26914	* tune/ia64.asm: Fix typo.
26915
26916	* add_n.asm addmul_1.asm mul_1.asm popcount.asm sub_n.asm:
26917	Preserve ar.lc as required by ABI.
26918	* longlong.h (ia64 udiv_qrnnd): New.
26919
26920	* configure.in [path switch] (ia64*-*-*): Set extra_functions.
26921	* mpn/ia64/invert_limb.asm: New file.
26922
269232000-10-27  Torbjorn Granlund  <tege@swox.com>
26924
26925	* configure.in [compiler switch]:
26926	Get rid of c89 for all hppa flavours--it is an evil compiler!
26927
26928	* tune/speed.h (SPEED_ROUTINE_MPN_SET_STR): Fix type of xp.
26929	(SPEED_ROUTINE_MPN_GET_STR): Fix type of wp.
26930
269312000-10-27  Kevin Ryde  <kevin@swox.se>
26932
26933	* gmp.texi (Fibonacci Number Algorithm): New section.
26934
26935	* mpz/tests/t-fib_ui.c: New file.
26936	* mpz/tests/Makefile.am (check_PROGRAMS): Add it.
26937
26938	* mpz/fib_ui.c: Rewrite, same formulas but using mpn functions and
26939	some lookup tables, much faster at small to moderate sizes.
26940	* gmp-impl.h (MPZ_FIB_SIZE): New macro.
26941	(FIB_THRESHOLD): Establish default here.
26942	* tune/tuneup.c (FIB_THRESHOLD): Start search after the new table
26943	data.
26944
26945	* mpn/x86/x86-defs.m4 (mcount_movl_GOT_ebx): Rename from movl_GOT_ebx,
26946	and don't use GSYM_PREFIX with _GLOBAL_OFFSET_TABLE_.
26947
26948	* tune/freq.c (speed_cpu_frequency_measure): New test comparing
26949	gettimeofday and speed_cyclecounter, should cover many systems.
26950
269512000-10-27  Torbjorn Granlund  <tege@swox.com>
26952
26953	* mpn/ia64/gmp-mparam.h: Retune.
26954
269552000-10-26  Torbjorn Granlund  <tege@swox.com>
26956
26957	* longlong.h (ia64): Set UMUL_TIME and UDIV_TIME.
26958
26959	* mpn/ia64/submul_1.c: Fix typo.
26960
269612000-10-25  Kevin Ryde  <kevin@swox.se>
26962
26963	* tune/freq.c (speed_cpu_frequency_sysctl): New test, supporting
26964	hw.model for BSD flavours.
26965	* configure.in (sysctl, sys/param.h): New tests.
26966
269672000-10-24  Torbjorn Granlund  <tege@swox.com>
26968
26969	* tune/freq.c: Explicitly #include config.h before other include files.
26970
26971	* mpz/tests/reuse.c (FAIL2): New #define.
26972	(main): Use FAIL2.  Now this test properly returns non-zero exit
26973	status when it fails.
26974
26975	* mpn/powerpc32/gmp-mparam.h: Retune.
26976	* mpn/powerpc64/gmp-mparam.h: Retune.
26977
269782000-10-24  Kevin Ryde  <kevin@swox.se>
26979
26980	* mpn/x86/k6/cross.pl: Support 8 and 16 byte code alignment.
26981
26982	* mpq/aors.c, mpq/canonicalize.c: Skip two mpz_divexact calls if
26983	gcd gives 1, which should be 60% of the time.
26984	* gmp-impl.h (MPZ_EQUAL_1_P): New macro.
26985	* mpq/mul.c, mpq/div.c: Use it, and a new DIV_OR_SET.
26986
26987	* tune/tuneup.c (xp_block, yp_block): Initialize these with random
26988	data.  Fixes GCD_ACCEL and GCDEXT thresholds, and latest POWM.
26989
269902000-10-23  Torbjorn Granlund  <tege@swox.com>
26991
26992	* configure.in [SPEED_CYCLECOUNTER_OBJS switch]: Add ia64 case.
26993
26994	* mpn/ia64/gmp-mparam.h: Fill in some parameters.
26995
26996	* mpn/ia64/submul_1.c: New file.
26997
26998	* tune/ia64.asm: New file.
26999
27000	* gmp-impl.h (union ieee_double_extract): Handle ia64.
27001
27002	* mpn/mp_bases.c: Decrease chars_per_bit_exactly for entry 1 to
27003	work around buggy ia64-linux.
27004
27005	* longlong.h (ia64 umul_ppmm): Update register flags to match new GCC.
27006
270072000-10-22  Torbjorn Granlund  <tege@swox.com>
27008
27009	* mpn/alpha/ev6/gmp-mparam.h (DC_THRESHOLD): Update.
27010	* mpn/alpha/ev6/submul_1.asm: New file.
27011
270122000-10-22  Kevin Ryde  <kevin@swox.se>
27013
27014	* tune/gcd_bin.c: New file.
27015	* tune/gcd_finda_gen.c: New file.
27016	* tune/Makefile.am (libspeed_la_SOURCES): Add them.
27017	* tune/speed.[ch],common.c (mpn_gcd_binary, find_a): Add measuring.
27018
27019	* * (__gmp_allocate_func etc): Rename from _mp_allocate_func etc.
27020	(__gmp_default_allocate etc): Rename from _mp_default_allocate etc.
27021	* gmp-impl.h (__GMP_REALLOCATE_FUNC_TYPE,
27022	__GMP_REALLOCATE_FUNC_LIMBS): New macros.
27023
27024	* gmp-impl.h (DC_THRESHOLD): Establish default here, set to 3*KARA
27025	since that's the measured average.
27026	* mpn/generic/dc_divrem_n.c, mpn/generic/tdiv_qr.c (DC_THRESHOLD):
27027	Remove default.
27028
270292000-10-21  Torbjorn Granlund  <tege@swox.com>
27030
27031	* mpn/Makefile.am (TARG_DIST): Add ia64.
27032
270332000-10-21  Kevin Ryde  <kevin@swox.se>
27034
27035	* *: Change BZ -> DC.
27036	* mpn/generic/dc_divrem_n.c: Renamed from bz_divrem_n.c.
27037
27038	* doc/multiplication: Remove file, now in the manual.
27039	* doc/assembly_code: Ditto.
27040	* tune/README: Remove some parts now in the manual.
27041
27042	* gmp.texi (@m etc): Add and use some new macros.
27043	(Integer Division - mpz_[cft]div_*): Merge descriptions, for brevity
27044	and to emphasise similarities.
27045	(Low-Level Functions - mpn_[lr]shift): Specify count as 1 to
27046	mp_bits_per_limb-1.
27047	(Algorithms): New chapter.
27048	(References): Add some papers.
27049
27050	* mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove some
27051	unused variables.
27052	* mpn/generic/mul_fft.c (mpn_fft_best_k): Ditto.
27053
27054	* tune/freq.c: New file, split from time.c.
27055	* tune/time.c: Rewrite, now more automated.
27056	* configure.in, tune/*: Consequent changes.
27057
270582000-10-20  Torbjorn Granlund  <tege@swox.com>
27059
27060	* mpn/ia64/default.m4: New file.
27061	* configure.in [config.m4 switch] (ia64*-*-*): Use ia64/default.m4.
27062
27063	* mpn/ia64/mul_1.asm: New file.
27064	* mpn/ia64/addmul_1.asm: New file.
27065	* mpn/ia64/add_n.asm: New file.
27066	* mpn/ia64/sub_n.asm: New file.
27067	* mpn/ia64/popcount.asm: New file.
27068	* mpn/ia64/README: New file.
27069
27070	* mpn/alpha/cntlz.asm: Override `.set noat' from ASM_START.
27071
27072	* configure.in (HAVE_TARGET_CPU_*): Support hppa1.0, hppa1.1, hppa2.0
27073	by sed'ing the period into `_'.
27074
27075	* acconfig.h: Add #undefs for hppa targets.
27076
27077	* longlong.h (udiv_qrnnd): Fix typo in last change.
27078
27079	* mpz/tstbit.c: Rewrite (partly to work around GCC 2.95.2 HPPA bug).
27080
27081	* configure.in [path switch]:
27082	(hppa2.0*-*-*): For non-CC64 case, update path.
27083
27084	* configure.in [compiler switch]:
27085	(hppa2.0w-*-*): Match with same regexp in both places.
27086	(hppa*-*-*): New case.
27087	(all hppa alternatives): Don't inherit default gmp_cflags_cc,
27088	gmp_cflags_c89.
27089
270902000-10-18  Torbjorn Granlund  <tege@swox.com>
27091
27092	* configure.in (alpha*-*-*): Define gmp_xoptcflags_gcc like for
27093	alpha*-*-osf*.
27094
27095	* longlong.h (x86 udiv_qrnnd): Change `d' => `dx' to avoid K&R C
27096	stringification.
27097
270982000-10-15  Kevin Ryde  <kevin@swox.se>
27099
27100	* doc/configuration: Updates.
27101
27102	* demos/calc.y: Remove some comments.
27103
271042000-10-14  Kevin Ryde  <kevin@swox.se>
27105
27106	* gmp.texi (Parameter Conventions, Memory Management): New sections
27107	split from "Variable Conventions".
27108	(Efficiency, Debugging, Profiling): New sections in "GMP Basics".
27109	(Reentrancy): Some rewording, add note on standard I/O.
27110	(Build options): Add --enable-assert and --enable-profiling.
27111
27112	* configure.in (--enable-profiling): New option.
27113	* acinclude.m4 (GMP_ASM_X86_MCOUNT): New macro, finding how to profile.
27114	* mpn/x86/x86-defs.m4 (PROLOGUE_cpu, call_mcount): Profiling support.
27115
27116	* acinclude.m4, configure.in (GMP_ASM_*): Rename from GMP_CHECK_ASM_*,
27117	to follow autoconf conventions.
27118
27119	* configure.in: Run GMP_CHECK_ASM tests only if needed.
27120	* acinclude.m4 (GMP_CHECK_ASM_MMX): Don't use GMP_CHECK_ASM_TEXT.
27121
27122	* mpn/x86/x86-defs.m4 (ASSERT): Allow no condition, to just emit code.
27123
271242000-10-13  Kevin Ryde  <kevin@swox.se>
27125
27126	* mpq/md_2exp.c: New file.
27127	* mpq/Makefile.am (libmpq_la_SOURCES): Add it.
27128	* Makefile.am (MPQ_OBJECTS): Ditto.
27129	* gmp.h (mpq_mul_2exp, mpq_div_2exp): Add prototypes.
27130	* gmp.texi (Rational Arithmetic): Add documentation.
27131
27132	* mpq/tests/t-md_2exp.c: New file.
27133	* mpq/tests/Makefile.am (check_PROGRAMS): Add it.
27134
27135	* mpn/generic/perfsqr.c: Add/amend some comments.
27136
27137	* gmp.texi (Known Build Problems): Note VERSION problem with old
27138	sed, do some minor rewording.
27139	(Build Options): Add cygwin and djgpp URLs, mention INSTALL.autoconf,
27140	mention HTML.
27141	(Getting the Latest Version of GMP): Move this ...
27142	(Introduction to GMP): ... to here.
27143	(Compatibility with older versions): Just refer to 2.x and 3.x, not
27144	every minor version.
27145	(Initializing Integers): Note restrictions on mpz_array_init'ed
27146	variables.
27147	(Integer Logic and Bit Fiddling): Note bits are numbered from 0.
27148
27149	* INSTALL.autoconf: New file.
27150	* Makefile.am (EXTRA_DIST): Add it.
27151
27152	* tune/Makefile.am, tune/tuneup.c, configure.in, gmp-impl.h: New
27153	scheme for recompiled objects used by tune program.  Don't use
27154	libgmptune.a, make better use of libtool, work with ansi2knr.
27155
27156	* tune/speed.h,common.c (SPEED_ROUTINE_MPZ_POWM): Use s->yp and
27157	s->xp_block, make exponent a fixed size.
27158
271592000-10-07  Torbjorn Granlund  <tege@swox.com>
27160
27161	* mpn/mips3/gmp-mparam.h: Retune.
27162
27163	* mpn/generic/mul_n.c (USE_MORE_MPN): Revert last change.
27164
271652000-10-06  Torbjorn Granlund  <tege@swox.com>
27166
27167	* mpn/mips3/add_n.s: Decrease carry recurrence from 4 to 3 cycles.
27168	* mpn/mips3/sub_n.s: Likewise.
27169
271702000-10-04  Torbjorn Granlund  <tege@swox.com>
27171
27172	* configure.in (sparc64-*-linux*): Set path according to CC64.
27173
271742000-10-04  Kevin Ryde  <kevin@swox.se>
27175
27176	* acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): Use LABEL_SUFFIX, not a
27177	hard-coded ":".
27178
27179	* config.sub: Don't demand "86" in CPU name for SCO.
27180
27181	* configure.in (supersparc-*-*): Remove -DSUPERSPARC.
27182	* longlong.h: Use HAVE_TARGET_CPU_supersparc.
27183
27184	* configure.in (HAVE_TARGET_CPU_*): AC_DEFINE from $target_cpu.
27185	* acconfig.h: Add #undefs, but only for targets of interest.
27186
271872000-10-03  Torbjorn Granlund  <tege@swox.com>
27188
27189	* mpn/alpha/cntlz.asm: Rewrite.
27190
27191	* mp_clz_tab.c (__clz_tab): Half table size to 128 entires.
27192	* longlong.h (count_leading_zeros): Demand just 128 entries from
27193	__clz_tab.
27194
27195	* configure.in (mips-sgi-irix6.*): Pass -mips3 in addition to options
27196	for n32 ABI.
27197
27198	* longlong.h: Move NO_ASM test around all assembly code.
27199	From gcc:
27200	* longlong.h (count_leading_zeros): Sparclite scan instruction was
27201	being invoked incorrectly.
27202	Replace __mc68332__ with __mcpu32__.
27203	Add ARC support.
27204
272052000-10-02  Torbjorn Granlund  <tege@swox.com>
27206
27207	* mpn/mips3/gmp-mparam.h: Retune for both gcc and cc.
27208
27209	* mpn/generic/mul_n.c (USE_MORE_MPN): Remove exception for __mips.
27210	(interpolate3): Cast mp_limb_t variables to mp_limb_signed_t
27211	when testing sign bit.
27212
27213	* mpn/alpha/ev6/gmp-mparam.h: Retune.
27214	* mpn/powerpc32/gmp-mparam.h: Retune.
27215	* mpn/powerpc64/gmp-mparam.h: Retune.
27216	* mpn/x86/pentium/gmp-mparam.h: Retune.
27217	* mpn/x86/pentium/mmx/gmp-mparam.h: Retune.
27218	* mpn/sparc32/v9/gmp-mparam.h: Retune.
27219	* mpn/x86/k6/gmp-mparam.h: Retune.
27220	* mpn/x86/p6/gmp-mparam.h: Retune.
27221	* mpn/x86/k7/gmp-mparam.h: Retune.
27222	* mpn/sparc64/gmp-mparam.h: Retune.
27223
27224	* mpn/m68k/gmp-mparam.h: New file.
27225	* mpn/alpha/ev5/gmp-mparam.h: New file.
27226
27227	* gmp-impl.h (default MPN_COPY): Remove final `;'.
27228
27229	* tune/time.c (speed_endtime): Rewrite.
27230
27231	* tune/speed.h (SPEED_ROUTINE_MPZ_POWM): Set base to a large value,
27232	not 2.
27233
27234	* demos/pexpr.c (setup_error_handler): Fix typo.
27235
27236	* mpz/powm.c (redc): New function, based on old mpz_redc.  Don't
27237	multiply here.
27238	(mpz_redc): Remove.
27239	(mpz_powm): Major changes, partially reverting to mpn calls.
27240	Multiply before calling redc.
27241	(mpz_powm): Use TMP_ allocation.
27242	(mpz_powm): Refine calculation of k (width of exponent window).
27243	(mpz_powm): Cast constants to mp_limb_t before left shifting.
27244
27245	* longlong.h: Use ia64 count_leading_zeros just when __GNUC__.
27246
272472000-09-29  Kevin Ryde  <kevin@swox.se>
27248
27249	* acinclude.m4 (GMP_C_SIZES): New macro.
27250	* configure.in: Use it.
27251	* acconfig.in (BYTES_PER_MP_LIMB etc): Add #undefs.
27252	* mpn/generic/gmp-mparam.h (BYTES_PER_MP_LIMB etc): Remove #defines.
27253	* gmp.texi (Known Build Problems): Remove 64-bit generic C
27254	gmp-mparam.h problem, now fixed.
27255
27256	* configure.in: Only run GMP_PROG_M4 if it's actually needed.
27257
272582000-09-27  Torbjorn Granlund  <tege@swox.com>
27259
27260	* demos/pexpr.c: Clean up code for systems not supporting
27261	sigaltstack.  Handle old Linux without sigaltstack.  Properly
27262	disable all stuff related to sigaltstack under Unicos.
27263
27264	* mpn/alpha/ev6/addmul_1.asm: Use explicit offset for all load and
27265	store insns.  Helps old gas.
27266
27267	* longlong.h (count_leading_zeros): Define for ia64.
27268
272692000-09-27  Paul Zimmermann  <Paul.Zimmermann@loria.fr>
27270
27271	* mpn/generic/bz_divrem_n.c: Fix qhl handling, simplify.
27272
272732000-09-27  Kevin Ryde  <kevin@swox.se>
27274
27275	* mpn/Makefile.in (.SUFFIXES): Regenerate with patched automake to
27276	get .s before .c, which is needed to override ansi2knr .c rules.
27277
27278	* gmp.texi (mpn_sqrtrem): Fix r2p==NULL return value description
27279	to match the code (change by Torbjorn).
27280	(mpn_gcd, mpn_gcdext, mpn_sqrtrem, mpn_tdiv_qr): Note most
27281	significant limbs must be non-zero.
27282	(mpn_gcd, mpn_gcdext, mpn_sqrtrem): Clarify destination size
27283	requirements.
27284	(mpn_gcd_1): Clarify value must be non-zero, not just size.
27285
27286	* gmp-impl.h (mpn_zero_p): New inline function.
27287	* mpn/generic/inlines.c: Add gmp-impl.h.
27288	* mpf/integer.c, mpz/get_d.c, mpn/generic/mul_fft.c: Use it.
27289
27290	* mpn/generic/gcd.c: Use MPN_COPY_INCR not MPN_COPY.
27291	* mpf/add_ui.c: Ditto.
27292	* mpf/add.c: Ditto, and fix test to skip copy.
27293
272942000-09-26  Kevin Ryde  <kevin@swox.se>
27295
27296	* gmp-impl.h, longlong.h, mpn/generic/*.c: Add ASSERTs for various
27297	parameter restrictions.
27298
27299	* gmp-impl.h (UDIV_PREINV_TIME): New macro.
27300	* mpn/generic/sb_divrem_mn.c: Use it.
27301	* mpn/generic/perfsqr.c: Ditto.
27302	* mpn/x86/*/gmp-mparam.h (UDIV_PREINV_TIME): Add values.
27303
27304	* macos/Makefile.in: Add mpz/tests/t-get_si.c, mpf/tests/t-set_f.c,
27305	and new multi-function mpz and mpq files.
27306
273072000-09-25  Kevin Ryde  <kevin@swox.se>
27308
27309	* randlc.c, randlc2x.c, randsd.c, mpz/urandomb.c, mpz/urandomm.c:
27310	Use mpz_ptr and mpz_srcptr for parameters.
27311	* gmp.h (gmp_randinit_lc, gmp_randinit_lc_2exp, gmp_randseed,
27312	mpz_urandomb, mpz_urandomm): Corresponding change to prototypes.
27313	* randsdui.c: Remove wrong K&R parameters part.
27314
273152000-09-12  Kevin Ryde  <kevin@swox.se>
27316
27317	* gmp-impl.h (mpn_tdiv_qr): Move prototype from here ...
27318	* gmp.h (mpn_tdiv_qr): ... to here.
27319
27320	* gmp.texi (Miscellaneous Rational Functions): Comment-out and
27321	move version 1 compatibility note to "Compatibility" section.
27322	(Rational Number Functions): Ditto for canonicalization note.
27323
273242000-09-10  Kevin Ryde  <kevin@swox.se>
27325
27326	* mpn/x86/pentium/com_n.asm: New file.
27327
27328	* gmp.texi (Rational Arithmetic): Add mpq_abs.
27329	(Miscellaneous Rational Functions): Merge and simplify descriptions of
27330	mpq_get_num, mpq_get_den, mpq_set_num, mpq_set_den.
27331
27332	* mpq/abs.c: New file.
27333	* mpq/Makefile.am (libmpq_la_SOURCES): Add it.
27334	* Makefile.am (MPQ_OBJECTS): Add it.
27335	* gmp.h (mpq_abs): Add prototype.
27336
27337	* mpq/set_den.c: Don't discard sign when copying, this makes the
27338	code match the manual.
27339
273402000-09-07  Torbjorn Granlund  <tege@swox.com>
27341
27342	* tune/alpha.asm: Rewrite to actually work right.
27343
273442000-09-07  Kevin Ryde  <kevin@swox.se>
27345
27346	* tune/common.c,speed.[ch]: Add measuring of mpn_sqrtrem,
27347	mpn_get_str, mpn_set_str.
27348	* tune/README: Various updates.
27349
273502000-09-06  Torbjorn Granlund  <tege@swox.com>
27351
27352	* mpz/fits.c: Correct type of `data'.
27353
273542000-09-06  Kevin Ryde  <kevin@swox.se>
27355
27356	* gmp.texi (Build Options): Clarify where to find CFLAGS.
27357	(Known Build Problems): Note SCO -lc problem.
27358
27359	* tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL): Fix for sizes > 512 limbs.
27360
27361	* doc/multiplication: Corrections and additions suggested by Paul.
27362
27363	* tune/modlinv.c: New file with alternate modlimb_inverts.
27364	* tune/Makefile.am, tune/speed.[ch]: Add measuring of them.
27365	* tune/speed.c (FLAG_NODATA): New attribute, use for mpz_bin_uiui,
27366	mpz_fib_ui, mpz_fac_ui.
27367
27368	* mpn/x86/t-zdisp.sh: New file.
27369
27370	* tests/t-modlinv.c: New file.
27371	* tests/Makefile.am (check_PROGRAMS): Add it.
27372
27373	* mpq/tests/t-set_f.c: New file.
27374	* mpq/tests/Makefile.am (check_PROGRAMS): Add it.
27375
27376	* gmp-impl.h (MPQ_CHECK_FORMAT): New macro.
27377	* mpq/tests/t-get_d.c: Use it.
27378
27379	* mpq/set_f.c: New file.
27380	* mpq/Makefile.am (libmpq_la_SOURCES): Add it.
27381	* Makefile.am (MPQ_OBJECTS): Ditto.
27382	* gmp.h: Add prototype.
27383	* gmp.texi (Miscellaneous Rational Functions): Document mpq_set_f,
27384	correct return type of mpq_set_d.
27385
273862000-09-03  Kevin Ryde  <kevin@swox.se>
27387
27388	* mpz/aors_ui.c: New file merging add_ui.c and sub_ui.c, no object
27389	code changes.
27390	* mpz/add_ui.c, mpz/sub_ui.c: Remove files.
27391	* mpz/Makefile.am: Update.
27392
27393	* gmp-impl.h (MPZ_FITS_STYPE_SDT, MPZ_FITS_UTYPE_SDT): New macros.
27394	* mpz/fits.c: New file merging six separate fits*.c.
27395	* mpz/fits_sshort_p.c, fits_sint_p.c, fits_slong_p.c, fits_ushort_p.c,
27396	fits_uint_p.c, fits_ulong_p.c: Remove files
27397	* mpz/Makefile.am: Use new fits.c, change object names from
27398	fits_*_p.lo to fits_*.lo to avoid SunOS 4 native "ar" warnings.
27399	* Makefile.am (MPZ_OBJECTS): Change from fits_*_p.lo to fits_*.lo.
27400
27401	* acinclude.m4 (GMP_CHECK_ASM_RODATA): New macro, defining RODATA.
27402	* configure.in: Use it.
27403	* mpn/x86/k[67]/mmx/popham.asm: Use it.
27404
27405	* mpn/x86/*/*.asm: Use "TEXT" not ".text".
27406
274072000-09-02  Kevin Ryde  <kevin@swox.se>
27408
27409	* mpq/aors.c: New file merging add.c and sub.c, no object code changes.
27410	* mpq/add.c, mpq/sub.c: Remove files.
27411	* mpq/Makefile.am: Update.
27412
27413	* mpz/aors.c: New file merging add.c and sub.c, no object code changes.
27414	* mpz/add.c, mpz/sub.c: Remove files.
27415	* mpz/Makefile.am, mpbsd/Makefile.am: Update.
27416
27417	* configure.in: Re-apply "PROLOGUE.*" regexp change for the
27418	benefit of alpha PROLOGUE_GP, lost in path search reorganisation.
27419
27420	* mpn/x86/x86-defs.m4 (jadcl0, cmov_simulate, ASSERT,
27421	movl_text_address): Don't use "1:" style labels.
27422	(Zdisp): Rearrange a bit, switch to all hex.
27423	* mpn/x86/README.family: Note SCO "as" doesn't support "1:" style
27424	local labels, misc rewordings.
27425
274262000-08-29  Torbjorn Granlund  <tege@swox.com>
27427
27428	* demos/primes.c: Include string.h.
27429
27430	* config.guess (x86 variant recog code): Remove dummy*.o files
27431	generated by some compilers.
27432
274332000-08-28  Kevin Ryde  <kevin@swox.se>
27434
27435	* acinclude.m4 (GMP_CHECK_ASM_ALIGN_FILL_0x90): Fix Solaris 2.8
27436	warning message suppression, add notes about SCO.
27437
27438	* Makefile.am (MPZ_OBJECTS etc): Move some comments.
27439
274402000-08-25  Kevin Ryde  <kevin@swox.se>
27441
27442	* mpz/pprime_p.c (mpz_millerrabin): Fix a TMP_FREE.
27443
27444	* gmp.texi (Copying): Refer to Lesser not Library GPL.
27445	(GMP and Reentrancy): Note stack-alloc.c is not reentrant, and
27446	that SCO <ctype.h> is potentially not reentrant.
27447
27448	* acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): Test by attempting to
27449	link with or without an underscore.
27450	* gmp.texi (Known Build Problems): Remove SunOS 4 native grep
27451	GSYM_PREFIX problem, now fixed.
27452
27453	* gmp-impl.h (MODLIMB_INVERSE_3): New constant.
27454	* mpn/generic/diveby3.c: Use it instead of own INVERSE_3.
27455	* mpn/generic/mul_n.c: Ditto.
27456	* tests/t-constants.c: Check it, and PP_INVERTED too.
27457
27458	* acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO): New macro.
27459	* configure.in [p6 and athlon] (gmp_optcflags_gcc): Use it to
27460	possibly add -march=pentiumpro.
27461
27462	* gmp-impl.h (MPZ_SET_STR_OR_ABORT, MPF_SET_STR_OR_ABORT): New macros.
27463	* mpz/tests/t-bin.c, mpz/tests/t-get_si.c, mpz/tests/t-jac.c,
27464	mpz/tests/t-misc.c: Use them.
27465	* mpf/tests/t-conv.c, mpf/tests/t-misc.c: Ditto.
27466	* mpz/tests/convert.c: Ditto and amend diagnostics slightly.
27467	* mpz/tests/t-misc.c (check_mpz_set_si): Remove a superfluous init.
27468	* mpz/tests/io.c: Differentiate between I/O and data conversion errors.
27469
27470	* mpn/generic/aors_n.c: New file merging add_n and sub_n, no
27471	object code changes.
27472	* mpn/generic/add_n.c: Remove file.
27473	* mpn/generic/sub_n.c: Remove file.
27474
27475	* mpn/generic/aorsmul_1.c: New file merging addmul_1 and submul_1,
27476	no object code changes.
27477	* mpn/generic/addmul_1.c: Remove file.
27478	* mpn/generic/submul_1.c: Remove file.
27479
27480	* mpn/generic/popham.c: New file merging popcount and hamdist, no
27481	object code changes.
27482	* mpn/generic/popcount.c: Remove file.
27483	* mpn/generic/hamdist.c: Remove file.
27484
274852000-08-24  Torbjorn Granlund  <tege@swox.com>
27486
27487	* gmp-impl.h (mpn_com_n): Fix typo.
27488
274892000-08-23  Torbjorn Granlund  <tege@swox.com>
27490
27491	* demos/primes.c (main): Don't call mpz_probab_prime_p for numbers
27492	that are known to be prime after sieving.
27493	(main): Declare and initialize max_s_prime_squared.
27494	(MAX_S_PRIME): Increase.
27495	(ST_SIZE): Increase.
27496
274972000-08-23  Kevin Ryde  <kevin@swox.se>
27498
27499	* gmp-impl.h (ASSERT_ALWAYS): Change to statement style.
27500	(JACOBI_TWO_U_BIT1): Remove ASSERT.
27501	(MPZ_CHECK_FORMAT): Use ASSERT_ALWAYS as a statement.
27502
275032000-08-21  Torbjorn Granlund  <tege@swox.com>
27504
27505	* gmp-impl.h (ASSERT): Use do..while for dummy version.
27506
27507	* mpf/get_str.c: Don't set n_digits from digits_computed_so_far
27508	when the converted operand becomes zero.  Misc cleanups.
27509
275102000-08-21  Kevin Ryde  <kevin@swox.se>
27511
27512	* mpz/fdiv_r_2exp.c, mpz/lcm.c, mpz/urandomm.c: Add missing
27513	TMP_MARK/FREE, avoiding memory leak when using stack-alloc.c.
27514
275152000-08-20  Kevin Ryde  <kevin@swox.se>
27516
27517	* mpz/set.c [BERKELEY_MP] (move): Add conditionals to build as
27518	"move" for libmp.
27519	* mpbsd/Makefile.am: Use mpz/set.c, not move.c.
27520	* Makefile.am (MPBSD_OBJECTS): Corresponding change.
27521	* mpbsd/move.c: Remove file.
27522
27523	* mpn/Makefile.am, mpz/Makefile.am, mpq/Makefile.am, mpf/Makefile.am,
27524	mpbsd/Makefile.am (-DOPERATION_foo): Use "foo" even for ansi2knr
27525	"foo_" objects.  Do this with the makefiles to keep the sources
27526	cleaner.
27527	* mpz/mul_siui.c, mpf/integer.c: Revert to plain OPERATION_* forms.
27528
27529	* mpn/lisp/gmpasm-mode.el (gmpasm-remove-from-list): Renamed from
27530	gmpasm-delete-from-list, because it's non-destructive.
27531	(gmpasm-font-lock-keywords): Add some more keywords.
27532
275332000-08-16  Kevin Ryde  <kevin@swox.se>
27534
27535	* tune/mul_n_mpn.c, tune/mul_n_open.c: New files, being forced
27536	open-coded and mpn #includes of mpn/generic/mul_n.c.
27537	* tune/*: Add measuring of them.
27538	* tune/speed.c: Print command line into *.gnuplot file.
27539
27540	* mpn/generic/mul_n.c (USE_MORE_MPN): Change to #if not #ifdef for
27541	using the value, add #ifndef for providing the default.
27542	* mpn/sparc64/gmp-mparam.h (USE_MORE_MPN): Add #ifndef.
27543
27544	* tests/t-constants.c: New file.
27545	* tests/Makefile.am (check_PROGRAMS): Add it.
27546
27547	* mpz/get_si.c: Use LONG_MAX, not BITS_PER_MP_LIMB, so the result
27548	doesn't depend on limb size when outside the range of a long
27549	(though such results are not actually documented).
27550	* mpz/tests/t-get_si.c: New file.
27551	* mpz/tests/Makefile.am (check_PROGRAMS): Add it.
27552
27553	* mpn/tests/try.c (call): Cast popcount and hamdist calls,
27554	for the benefit of long long limb.
27555
275562000-08-15  Kevin Ryde  <kevin@swox.se>
27557
27558	* mp.h (mp_set_memory_functions): Add missing #define.
27559	* mpbsd/tests/allfuns.c (mp_set_memory_functions): Verify its
27560	existence.
27561
27562	* mpf/tests/t-misc.c (check_mpf_getset_prec): New test, verifying
27563	reverted behaviour of mpf_get_prec.
27564
27565	* mpn/tests/ref.c (refmpn_strip_twos): Use refmpn_copyi, not
27566	MPN_COPY_INCR.
27567
27568	* mpz/mul_siui.c, mpf/integer.c: Recognise OPERATION_*_ forms
27569	produced under ansi2knr.
27570
27571	* configure.in (mpn_objects, mpn_objs_in_libgmp): Add $U to .c
27572	objects when ansi2knr in use.
27573
27574	* mpn/Makefile.am (AUTOMAKE_OPTIONS): Enable ansi2knr.
27575	(libdummy.la): Add this, not built, to create ansi2knr style rules
27576	for all potential .c files.
27577	* mpz/Makefile.am, mpq/Makefile.am, mpf/Makefile.am, mpfr/Makefile.am,
27578	mpbsd/Makefile.am, mpq/tests/Makefile.am, tests/Makefile.am
27579	(AUTOMAKE_OPTIONS): Enable ansi2knr (now everywhere).
27580	* Makefile.am (MPZ_OBJECTS, MPQ_OBJECTS, MPF_OBJECTS, MPFR_OBJECTS,
27581	MPBSD_OBJECTS, libmp_la_DEPENDENCIES): Add $U to all .lo filenames.
27582
275832000-08-03  Torbjorn Granlund  <tege@swox.com>
27584
27585	* mpn/alpha/ev6/addmul_1.asm: Correct number of cycles to 3.5/28.
27586
275872000-08-02  Torbjorn Granlund  <tege@swox.com>
27588
27589	* Version 3.1 released.
27590
27591	* gmp.texi: Rephrase mpf_urandomb documentation.
27592
27593	* mpn/alpha/ev6: New directory with ev6/21264 optimized code.
27594	* mpn/alpha/ev6/addmul_1.asm: New file.
27595	* mpn/alpha/ev6/gmp-mparam.h: New file.
27596
275972000-08-02  Kevin Ryde  <kevin@swox.se>
27598
27599	* demos/factorize.c (random): Don't use "inline".
27600
27601	* mpfr/log.c, mpfr/mul_ui.c, mpfr/round.c, mpfr/set.c, mpfr/set_d.c:
27602	Corrections to K&R parts.
27603
27604	* Makefile.am (EXTRA_HEADERS): Omit $(MPFR_HEADERS_OPTION).
27605	* mpfr/Makefile.am (EXTRA_DIST): Add mpfr.h.
27606
27607	* gmp.texi (Known Build Problems): Note problem stripping libgmp.a.
27608
276092000-08-02  Kent Boortz  <kent@swox.com>
27610
27611	* mpfr: Integrated experimental version of mpfr-0.4.
27612	* configure.in: Changes for option --enable-mpfr.
27613	* Makefile.am: Changes for option --enable-mpfr.
27614
276152000-08-01  Torbjorn Granlund  <tege@swox.com>
27616
27617	* mpn/generic/popcount.c: Disable SPARC v9 popc_limb pattern.
27618	* mpn/generic/hamdist.c: Likewise.
27619
276202000-08-01  Kevin Ryde  <kevin@swox.se>
27621
27622	* mpn/tests/try.c (try_init): Account for ALIGNMENTS when sizing
27623	source and dest regions.
27624
276252000-07-31  Torbjorn Granlund  <tege@swox.com>
27626
27627	* mpf/get_str.c: Develop three extra digits, not just one.
27628
276292000-07-31  Kevin Ryde  <kevin@swox.se>
27630
27631	* gmp.texi (References): Add URL for invariant division.
27632
276332000-07-30  Kevin Ryde  <kevin@swox.se>
27634
27635	* tune/time.c (speed_cpu_frequency_proc_cpuinfo): Add support for
27636	alpha linux "cycle frequency".
27637
27638	* mpn/sparc64/gmp-mparam.h: Re-run tune program for FFT thresholds.
27639
276402000-07-29  Kevin Ryde  <kevin@swox.se>
27641
27642	* gmp.texi (ABI and ISA): Add sparc64-*-linux*.
27643	* configure.in [sparc64-*-linux*] (gmp_cflags64_gcc): Same flags
27644	as under solaris.
27645
27646	* configure.in (--enable-fft): New option, default "no".
27647	* gmp.texi (Build Options): Describe it.
27648	* mpn/generic/mul.c, mpn/generic/mul_n.c [WANT_FFT]: Use it.
27649	* tune/tuneup.c [WANT_FFT]: By default don't probe FFTs if not enabled.
27650	* NEWS: Multiplication optionally using FFT.
27651
27652	* tune/README: Notes on FFT and GCD thresholds, other minor updates.
27653
27654	* Makefile.am: Expunge the macos generated files update stuff.
27655
276562000-07-28  Kevin Ryde  <kevin@swox.se>
27657
27658	* mpn/x86/*/gmp-mparam.h: Add some FFT thresholds.
27659
276602000-07-28  Kent Boortz  <kent@swox.se>
27661
27662	* macos/Asm*, macos/CmnObj, macos/Mp*: Delete directories.
27663	* macos/Makefile: Delete file.
27664	* macos/Makefile.cw: Delete file.
27665	* macos/config.h: Delete file.
27666	* macos/Asm/*.s: Delete files.
27667	* macos/configure: Create target directories. Don't transform
27668	'(C)' to '(;)' in a 'dnl' line comment in .asm file.
27669	* Makefile.am: Delete macos targets.
27670	* macos/README: Reflect that we reverted back to a build
27671	process that require ""macos/configure" to run on MacOS.
27672	This imply that MacPerl is needed for a build in MacOS.
27673
276742000-07-27  Kevin Ryde  <kevin@swox.se>
27675
27676	* mpn/generic/mul_fft.c: New file, by Paul Zimmermann, minor mods
27677	applied.
27678	* configure.in (gmp_mpn_functions): Add it.
27679	* mpn/generic/mul.c, mpn/generic/mul_n.c: Use it.
27680	* doc/multiplication: Describe it (briefly).
27681
27682	* gmp-impl.h (FFT_MUL_THRESHOLD etc): New thresholds.
27683	(mpn_fft_best_k, mpn_fft_next_size, mpn_mul_fft, mpn_mul_fft_full):
27684	New functions.
27685	(numberof, TMP_ALLOC_TYPE etc, _MP_ALLOCATE_FUNC_TYPE etc,
27686	UNSIGNED_TYPE_MAX etc): New macros.
27687
27688	* tune/*: Add FFT threshold tuning and speed measuring.
27689	* tune/common.c: Avoid huge macro expansions for umul and udiv.
27690
27691	* mpz/tests/t-bin.c, mpz/tests/t-jac.c, mpz/tests/t-misc.c,
27692	mpbsd/tests/t-misc.c, mpf/tests/t-misc.c, mpn/tests/try.c,
27693	mpn/tests/spinner.c: Use new gmp-impl.h macros.
27694
27695	* demos/Makefile.am (BUILT_SOURCES): Don't need calc.c etc under this.
27696
276972000-07-27  Torbjorn Granlund  <tege@swox.com>
27698
27699	* mpn/ia64/gmp-mparam.h: New file.
27700
277012000-07-26  Torbjorn Granlund  <tege@swox.com>
27702
27703	* demos/isprime.c: Handle any number of arguments and print
27704	classification for each.  Add `-q' option for old behaviour.
27705
277062000-07-26  Kevin Ryde  <kevin@swox.se>
27707
27708	* gmp.texi (Build Options): Mention djgpp stack size.
27709	(Notes for Package Builds): New section.
27710	(Compatibility with older versions): Update for 3.1, add mpf_get_prec.
27711
27712	* demos/factorize.c [__GLIBC__]: Don't declare random() under glibc.
27713
27714	* gmp.h (gmp_version): Add prototype and define.
27715
27716	* Makefile.am: Keep macos directory generated files up-to-date
27717	during development and on a "make dist".
27718
277192000-07-25  Torbjorn Granlund  <tege@swox.com>
27720
27721	* mpn/hppa/gmp-mparam.h: Update threshold values from new `tune' run.
27722
27723	* mpn/pa64/gmp-mparam.h: Fill in values from `make tune' run.
27724	* mpn/pa64w/gmp-mparam.h: Likewise.
27725	* mpn/mips3/gmp-mparam.h: Likewise.
27726
27727	* tune/hppa2.asm: Fix typo in .level directive.
27728
27729	* configure.in: Add sparc64-*-linux* support (from Jakub Jelinek).
27730	* configure: Regenerate.
27731
27732	* mpn/sparc64/rshift.asm: Use %g5 instead of volatile stack frame area
27733	for return value (from Jakub Jelinek).
27734	* mpn/sparc64/lshift.asm: Likewise.
27735
27736	* mpf/get_prc.c: Revert Aug 8, 1996 change.
27737
27738	* version.c: No longer static.
27739
27740	* mpn/pa64/gmp-mparam.h: Only #define *_THRESHOLD if not already
27741	defined.
27742	* mpn/pa64w/gmp-mparam.h: Likewise.
27743	* mpn/arm/gmp-mparam.h: Likewise.
27744	* mpn/mips3/gmp-mparam.h: Likewise.
27745
277462000-07-25  Kevin Ryde  <kevin@swox.se>
27747
27748	* INSTALL: It's "info -f ./gmp.info" to be sure of hitting the
27749	gmp.info in the current directory.
27750
27751	* Makefile.am (libmp_la_DEPENDENCIES): Add mpz/cmp.lo, for last
27752	mpz/powm.c fix.
27753
27754	* mpn/sparc64/addmul1h.asm, mpn/sparc64/submul1h.asm: Renamed from
27755	addmul_1h.asm, submul_1h.asm to avoid name conflicts on an 8.3
27756	filesystem.
27757	* mpn/sparc64/addmul_1.asm, mpn/sparc64/submul_1.asm,
27758	mpn/sparc64/mul_1.asm: Update include_mpn()s.
27759
277602000-07-24  Torbjorn Granlund  <tege@swox.com>
27761
27762	* Update header of all files previously under the Library GPL
27763	to instead be under the Lesser GPL.
27764
27765	* COPYING.LIB: Now Lesser GPL.
27766	* demos/primes.c: Change license to GPL (was Library GPL).
27767	* demos/isprime.c: Change license to GPL (was Library GPL).
27768
27769	* gmp.h (error code enum): Add GMP_ERROR_BAD_STRING (currently unused).
27770
27771	* mpz/tests/t-mul.c: Default SIZE to a function of TOOM3_MUL_THRESHOLD.
27772	Improve error messages.  Decrease reps.
27773
277742000-07-22  Kevin Ryde  <kevin@swox.se>
27775
27776	* tune/speed.h: Decrease the amount of data used for gcd and powm
27777	measuring, to make the tune go a bit faster.
27778
277792000-07-21  Kent Boortz  <kent@swox.se>
27780
27781	* macos/Asm*, macos/CmnObj, macos/Mp*: Directories no longer created
27782	from configure script, now part of dist.
27783	* macos/Makefile
27784	* macos/Makefile.cw
27785	* macos/config.h
27786	* macos/Asm/*.s
27787	New files and directories that is the output from configure. This way
27788	no Perl installation is required to build on MacOS, just MPW.
27789	* macos/configure: Added prefix '__g' to exported assembler labels.
27790	Changed to handle new m4 syntax instead of the old cpp syntax in asm.
27791	* macos/Makefile.in: Corrected 'clean' target, added 'distclean'
27792	and 'maintainer_clean'. Added "mpn/mp_bases.c" to build.
27793	* macos/README: Reflect the new build process without configure.
27794	Corrected the file structure for Apple MPW installation.
27795
277962000-07-21  Torbjorn Granlund  <tege@swox.com>
27797
27798	* mpf/tests/t-muldiv.c: Relax error limit.  Make precision depend
27799	on SIZE.  Misc changes.
27800
27801	* configure: Regenerate.
27802
278032000-07-20  Kent Boortz  <kent@swox.com>
27804
27805	* macos/Makefile.in: Removed hard coded targets, added special
27806	targets found in Makefile.am files.
27807	* macos/configure: Generate targets from top configure script and
27808	Makefile.am files. Made script runnable from Unix for testing.
27809	* macos/README: Notes about search paths for includes, contributed
27810	by Marco Bambini.
27811	* configure.in: Added comment about lines that the "macos/configure"
27812	script depend on.
27813
278142000-07-20  Torbjorn Granlund  <tege@swox.com>
27815
27816	* mpz/powm.c (mpz_powm): After final mpz_redc call, subtract `mod'
27817	from result if it is greater than `mod'.
27818
278192000-07-19  Torbjorn Granlund  <tege@swox.com>
27820
27821	* mpn/hppa/gmp-mparam.h: Fill in values from `make tune' run.
27822	* mpn/alpha/gmp-mparam.h: Likewise.
27823	* mpn/powerpc32/gmp-mparam.h: Likewise.
27824
27825	* tune/hppa.asm: New file.
27826	* tune/hppa2.asm: New file.
27827	* configure.in (SPEED_CYCLECOUNTER_OBJS): Set for hppa2*-*-* and
27828	hppa*-*-*.
27829	* tune/Makefile.am (EXTRA_DIST): Add hppa.asm and hppa2.asm.
27830
27831	* tune/speed.h (SPEED_ROUTINE_MPN_BZ_DIVREM_CALL): Declare `marker';
27832	invoke TMP_FREE.
27833
27834	* mpn/hppa/hppa1_1/udiv_qrnnd.S: Use "%" instead of "'" for
27835	reloc/symbol delimiter.
27836
278372000-07-16  Torbjorn Granlund  <tege@swox.com>
27838
27839	* mpn/powerpc64/gmp-mparam.h: Update with output from tune utility.
27840	* mpn/powerpc64/copyi.asm: New file.
27841	* mpn/powerpc64/copyd.asm: New file.
27842
278432000-07-16  Kevin Ryde  <kevin@swox.se>
27844
27845	* tune/*: Add measuring for umul_ppmm and udiv_qrnnd.
27846
278472000-07-14  Kevin Ryde  <kevin@swox.se>
27848
27849	* mpn/x86/k6/k62mmx: New directory.
27850	* configure.in (k6[23]*-*-*): Use it.
27851	* mpn/x86/k6/k62mmx/copyi.asm, mpn/x86/k6/k62mmx/copyd.asm: Move from
27852	mmx directory, improve code alignment a bit.
27853	* mpn/x86/k6/k62mmx/lshift.asm, mpn/x86/k6/k62mmx/rshift.asm: Ditto,
27854	and improve addressing modes for pre-CXT cores.
27855	* mpn/x86/x86-defs.m4 (Zdisp): Add an instruction.
27856	* mpn/x86/k6/mmx/lshift.asm, mpn/x86/k6/mmx/rshift.asm: New files,
27857	suiting plain K6.
27858	* mpn/x86/README, mpn/x86/k6/README: Updates.
27859	* mpn/x86/k6/mmx/*.asm: Update some comments.
27860
27861	* mpn/tests/Makefile.am: Use $(MAKE) in .asm rules, not "m".
27862	* tune/Makefile.am: Use $(EXEEXT) and libtool --config objdir, for
27863	the benefit of djgpp.
27864
27865	* */Makefile.in: Regenerate with patched automake that adds
27866	$(EXEEXT) to EXTRA_PROGRAMS.
27867
27868	* mpn/tests/try.c: Add #ifdef to SIGBUS, for the benefit of djgpp.
27869	* config.guess: Recognise pc:*:*:* as an x86, for djgpp.
27870
27871	* configure: Regenerate with patched autoconf to fix temp file
27872	".hdr" which is invalid on a DOS 8.3 filesystem, and to fix two
27873	sed substitutes that clobbered a ":" in $srcdir (eg. a DOS drive
27874	spec).
27875
27876	* mpz/tests/io.c: Use one fp opened "w+", since separately opened
27877	input and output doesn't work on MS-DOS 6.21.
27878
27879	* tests/rand/Makefile.am (allprogs): Pseudo-target to build everything.
27880	(CLEANFILES): Add EXTRA_PROGRAMS and EXTRA_LTLIBRARIES.
27881	(manual-test, manual-bigtest): Add $(EXEEXT) to dependencies.
27882
27883	* tests/rand/*/Makefile.in: Regenerate with patched automake that adds
27884	$(EXEEXT) to EXTRA_PROGRAMS.
27885
278862000-07-13  Torbjorn Granlund  <tege@swox.com>
27887
27888	* mpz/tests/t-root.c: Also test mpz_perfect_power_p.
27889	Generate `nth' so that there will be fewer trivial values.
27890
27891	* mpz/root.c: Reverse return value in tests for detecting root of +1
27892	and -1.
27893
27894	* mpz/perfpow.c: Use TMP_ALLOC interface.
27895
278962000-07-12  Torbjorn Granlund  <tege@swox.com>
27897
27898	* mpz/perfpow.c (primes): Make it const.
27899
279002000-07-06  Kevin Ryde  <kevin@swox.se>
27901
27902	* mpn/x86/k6/cross.pl: New file.
27903
27904	* mpn/x86/*/gmp-mparam.h: Updates to thresholds, conditionalize
27905	all _TIME defines.
27906	* mpn/x86/pentium/mmx/gmp-mparam.h: New file.
27907	* mpn/sparc64/gmp-mparam.h: Update thresholds.
27908	* mpn/sparc32/v9/gmp-mparam.h: Ditto.
27909
279102000-07-04  Kevin Ryde  <kevin@swox.se>
27911
27912	* NEWS: Updates.
27913	* mpn/x86/*/README: Miscellaneous updates.
27914
27915	* tune/speed-ext.c: New file.
27916	* tune/Makefile.am: Add it.
27917	* tune/README: Updates.
27918	* tune/speed.h (SPEED_ROUTINE_MPN_DIVREM_2): Bug fixes.
27919
27920	* demos/calc.y,calclex.l: New files.
27921	* demos/calc.c,calc.h,calclex.c: New files, generated from .y and .l.
27922	* demos/Makefile.am: Add them.
27923
27924	* gmp.h (mpq_swap, mpf_swap): Add prototypes and defines.
27925
279262000-07-01  Kevin Ryde  <kevin@swox.se>
27927
27928	* gmp.texi (ABI and ISA): New section, bringing together ABI notes.
27929	(Build Options): Add MPN_PATH, various updates.
27930	(Build Options): Add note on setting CFLAGS when setting CC.
27931	(Notes for Particular Systems): Add -march=pentiumpro problem.
27932	(Known Build Problems): Note on gmp-mparam.h for 64-bit generic C.
27933	(GMP Variable Conventions): Add some info on user defined functions.
27934	(Reporting Bugs): Minor rewording.
27935
27936	* configure.in (MPN_PATH): Renamed from mpn_path.
27937
27938	* gmp-impl.h (ULONG_MAX,ULONG_HIGHBIT,...,SHORT_MAX): New defines.
27939	* mp[zf]/tests/t-misc.c: Use them.
27940
27941	* mpbsd/tests/t-misc.c: New file.
27942	* mpbsd/tests/Makefile.am: Add it.
27943
27944	* Makefile.am (LIBGMP_LT_*, LIBMP_LT_*): Bump version info.
27945	* gmp.h (__GNU_MP_VERSION_*): Bump to 3.1.
27946
27947	* mpf/tests/Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr.
27948
27949	* Makefile.am (libmp_la_SOURCES): Add mp_set_fns.c, accidentally
27950	omitted in gmp 3.0.x.
27951	* gmp.texi (Custom Allocation): Note this is available in mpbsd,
27952	and some minor rewording.
27953
279542000-06-30  Torbjorn Granlund  <tege@swox.com>
27955
27956	* demos/factorize.c (random): New function, defined conditionally.
27957	(factor_using_pollard_rho): Use it, not mrand48.
27958
27959	* mpn/cray/README: New file.
27960
279612000-06-30  Kevin Ryde  <kevin@swox.se>
27962
27963	* mpn/x86/pentium/aorsmul_1.asm: Add MULFUNC_PROLOGUE.
27964
27965	* mpz/tests/t-jac.c: Test limbs on mpn_jacobi_base, not just ulongs.
27966
27967	* gmp-impl.h, mpn/tests/try.c, mpn/tests/spinner.c, tune/speed.c:
27968	Use config.h unconditionally, not under HAVE_CONFIG_H.
27969
27970	* demos/pexpr.c [__DJGPP__]: Patch by Richard Dawe to not use
27971	setup_error_handler on djgpp.
27972
27973	* tune/*: Locate data to help direct-mapped caches, add measuring
27974	of mpz_init/clear, mpz_add and mpz_bin_uiui, various cleanups.
27975	* configure.in (AC_CHECK_FUNCS): Add popen.
27976
279772000-06-29  Torbjorn Granlund  <tege@swox.com>
27978
27979	* mpf/mul_2exp.c: Streamline criterion for whether to use mpn_lshift or
27980	mpn_rshift.  Increase precision when exp is a multiple of
27981	BITS_PER_MP_LIMB primarily to make exp==0 be a noop.
27982	* mpf/div_2exp.c: Analogous changes.
27983
27984	* mpf/tests/t-dm2exp.c: Set u randomly in loop.  Perform more
27985	mpf_mul_2exp testing.
27986
27987	* configure.in: Recognize cray vector processors with a broad `*';
27988	move after alpha* not to match that.
27989
279902000-06-28  Kevin Ryde  <kevin@swox.se>
27991
27992	* mpz/tests/io.c: Use a disk file, not a pipe, switch to ansi2knr
27993	style, switch from MP_INT to mpz_t, add a couple of error checks.
27994	* mpz/tests/Makefile.am (CLEANFILES): Add io.tmp, in case io.c fails.
27995
279962000-06-27  Torbjorn Granlund  <tege@swox.com>
27997
27998	* mpf/tests/t-get_d.c: Be more lax about relative error, to handle Cray
27999	floating point format.
28000
28001	* mpq/tests/t-get_d.c: Decrease default reps to 1000.
28002
28003	* mpf/tests/t-conv.c: Correct type of `bexp'.
28004
28005	* configure.in (cray vector machines): Don't inherit gmp_cflags_cc.
28006
28007	* tune/Makefile.am (EXTRA_DIST): Delete sparc64.asm.
28008
28009	* configure.in (cray vector machines): Set extra_functions.
28010
28011	* mpn/cray/mulww.f: New file with vectorizing cray code.
28012	* mpn/cray/mulww.s: Generated from mulww.f.
28013	* mpn/cray/mul_1.c: New file.
28014	* mpn/cray/addmul_1.c: New file.
28015	* mpn/cray/submul_1.c: New file.
28016	* mpn/cray/add_n.c: New file.
28017	* mpn/cray/sub_n.c: New file.
28018
280192000-06-26  Kevin Ryde  <kevin@swox.se>
28020
28021	* acinclude.m4 (GMP_CHECK_ASM_ALIGN_FILL_0x90): Fix so it actually
28022	detects solaris 2.6, and also suppress warning on solaris 2.8.
28023	* configure.in (SPEED_CYCLECOUNTER): Remove spurious "athlon" from
28024	sparc case.
28025
28026	* mpn/lisp/gmpasm-mode.el: Move keymap to the top of the docstring.
28027
280282000-06-21  Kevin Ryde  <kevin@swox.se>
28029
28030	* mpn/generic/mul_n.c (mpn_kara_mul_n, mpn_kara_sqr_n): Use
28031	mp_size_t for n2.
28032	(mpn_toom3_mul_n, mpn_toom3_sqr_n): Use mp_size_t for size
28033	parameters and "l" variables.
28034	* gmp-impl.h (mpn_toom3_mul_n, mpn_toom3_sqr_n): Update prototypes.
28035
28036	* mpbsd/itom.c, mpbsd/sdiv.c: Add casts for correct handling of
28037	-0x80...00 on systems with sizeof(short)==sizeof(int).
28038
28039	* mpz/tests/t-misc.c: Move "bin" test from here ...
28040	* mpz/tests/t-bin.c: ... to here, and add a new (2k,k) test too.
28041	* mpz/tests/Makefile.am (check_PROGRAMS): Add t-bin.
28042
28043	* mpz/bin_ui.c [_LONG_LONG_LIMB]: Use mpn_divrem_1, since kacc is
28044	a limb not a ulong.
28045	* mpz/bin_uiui.c [_LONG_LONG_LIMB]: Ditto, and use mpn_mul_1 too,
28046	since nacc is a limb.
28047
28048	* mpf/tests/t-misc.c (check_mpf_set_si, check_mpf_cmp_si):
28049	New file, testing mpf_set_si, mpf_init_set_si, and mpf_cmp_si.
28050	* mpf/tests/Makefile.am (check_PROGRAMS): Add it.
28051
28052	* mpz/tests/t-misc.c (check_mpz_set_si, check_mpz_cmp_si):
28053	New tests, for mpz_set_si, mpz_init_set_si, and mpz_cmp_si.
28054
28055	* mpz/set_si.c, mpz/iset_si.c, mpz/cmp_si.c [_LONG_LONG_LIMB]: Fix
28056	handling of -0x80..00.
28057	* mpf/set_si.c, mpf/iset_si.c, mpf/cmp_si.c [_LONG_LONG_LIMB]: Ditto.
28058
280592000-06-19  Torbjorn Granlund  <tege@swox.com>
28060
28061	* demos/primes.c: Properly handle arguments `m +n'.
28062
280632000-06-17  Torbjorn Granlund  <tege@swox.com>
28064
28065	* config.sub: Recognize k5 and k6 with common pattern.
28066
28067	* mpq/tests/t-get_d.c: Also test mpq_set_d.  Misc improvements.
28068
28069	* mpq/set_d.c: Special case 0.0.  Don't call mpn_rshift with 0 count.
28070	Allocate correct amount of memory for numerator.  Delete spurious
28071	ASSERT_ALWAYS(1).
28072
280732000-06-17  Kevin Ryde  <kevin@swox.se>
28074
28075	* mpz/perfsqr.c: Fix so that zero is considered a perfect square.
28076	(Was wrongly calling mpn_perfect_square_p with size==0.)
28077
280782000-06-16  Kevin Ryde  <kevin@swox.se>
28079
28080	* configure.in: Set k5*-*-* to use basic i386 code until there's
28081	something specific.  Add path=x86 as a default for x86s.
28082
28083	* acinclude.m4 (GMP_CHECK_ASM_ALIGN_LOG): Generate
28084	ALIGN_LOGARITHMIC setting, not a full ALIGN definition.
28085	(GMP_CHECK_ASM_ALIGN_FILL_0x90): New test.
28086	* configure.in [x86-*-*]: Use GMP_CHECK_ASM_ALIGN_FILL_0x90.
28087	* mpn/asm-defs.m4 (ALIGN): New macro.
28088	* mpn/x86/x86-defs.m4 (ALIGN): Remove supplementary definition.
28089
28090	* tune/*: Plain "unsigned" for speed_cyclecounter.
28091	* configure.in: Use tune/sparcv9.asm for 32 and 64 bit modes.
28092	* tune/sparc64.asm: Remove file.
28093
280942000-06-15  Torbjorn Granlund  <tege@swox.com>
28095
28096	* mpn/x86/k7/mmx/copyi.asm: Use `testb' instead of `test'.
28097	* mpn/x86/k7/mmx/copyd.asm: Likewise.
28098
28099	* mpn/x86/k7/mmx/lshift.asm: Avoid using `~' (Solaris as problems).
28100	* mpn/x86/k7/mmx/rshift.asm: Likewise.
28101	* mpn/x86/k6/aors_n.asm: Likewise.
28102	* mpn/x86/k7/aors_n.asm: Likewise.
28103	* mpn/x86/k7/mul_basecase.asm: Likewise.
28104
281052000-06-13  Torbjorn Granlund  <tege@swox.com>
28106
28107	* tune/sparcv9.asm: Tune, deleting two instructions.
28108
28109	* tune/alpha.asm: Update to unified speed_cyclecounter.
28110
281112000-06-11  Kevin Ryde  <kevin@swox.se>
28112
28113	* mpz/tests/reuse.c (FAIL): Add a K&R version.
28114	Use _PROTO on some typedefs.
28115	* mpz/tests/t-misc.c: Add gmp-impl.h for "const".
28116
28117	* configure.in: Rework mpn multi-function and optional files.
28118	Names standardized, no need for explicit declarations, all picked
28119	up in one $path traversal.
28120	* doc/configuration: Updates.
28121
28122	* tests/rand/t-rand.c (main): Change "usage" to work with K&R.
28123
281242000-06-10  Kevin Ryde  <kevin@swox.se>
28125
28126	* mpn/x86/pentium/mmx/popham.asm, mpn/x86/p6/mmx/popham.asm,
28127	mpn/x86/p6/p3mmx/popham.asm, mpn/x86/p6/diveby3.asm: Add
28128	MULFUNC_PROLOGUE for correct HAVE_NATIVE_* matching.
28129
28130	* mpn/x86/x86-defs.m4 (cmov_bytes_tttn): Use eval() on expressions.
28131	(cmov_available_p): Switch to list CPUs which do have cmov.
28132	* mpn/x86/p6/sqr_basecase.asm, mpn/x86/k6/sqr_basecase.asm,
28133	mpn/x86/k7/sqr_basecase.asm: Use eval() for multiplication.
28134	* mpn/x86/README.family: Various updates.
28135
281362000-06-09  Kevin Ryde  <kevin@swox.se>
28137
28138	* mpbsd/tests/allfuns.c (main): Call exit() instead of doing return.
28139
28140	* doc/tasks.html, doc/projects.html: Moved from projects directory.
28141	* doc/multiplication: New file.
28142	* Makefile.am (EXTRA_DIST): Remove projects, add doc.
28143
28144	* Makefile.am (libgmp_la_LIBADD, libmp_la_LIBADD): Remove
28145	unnecessary -lm.
28146	* INSTALL: Remove -lm from instructions.
28147	* demos/Makefile.am (qcn_LDADD): Add -lm.
28148
28149	* tune/*: Add measuring for mpn_divrem_2 and modlimb_invert,
28150	improve addsub_n.  Switch to unified speed_cyclecounter.
28151	* configure.in: Update configs for speed_cyclecounter.
28152
28153	* gmp-impl.h (MP_LIMB_T_MAX, MP_LIMB_T_HIGHBIT): New macros.
28154	* mpn/generic/diveby3.c, mpn/generic/mul_n.c, mpn/generic/gcd.c,
28155	tune/speed.c, mpn/tests/ref.c: Use them.
28156
28157	* mpn/tests/spinner.c: Remove setitimer, just alarm is enough.
28158	* configure.in (AC_CHECK_FUNCS): Remove setitimer.
28159	* mpn/tests/x86call.asm: Start with junk in %eax, %ecx, %edx.
28160	* mpn/tests/ref.[ch] (refmpn_addsub_nc): New function.
28161	* mpn/tests/try.c: Add some support for mpn_addsub_nc.
28162	* mpn/tests/Makefile.am (EXTRA_PROGRAMS): Remove addsub_n and
28163	addsub_n_2 which don't currently build.
28164	* mpn/tests/copy.c: Test MPN_COPY_INCR, not __gmpn_copy.
28165
28166	* tests/rand/Makefile.am (libstat_la_LIBADD): Add -lm, no longer on
28167	libgmp.la.
28168	(findlc_LDADD): Use libstat.la.
28169	(AUTOMAKE_OPTIONS): Use ansi2knr.
28170
281712000-06-08  Torbjorn Granlund  <tege@swox.com>
28172
28173	* configure.in (alpha*-*-osf*): Default `flavour' to ev6 for ev6 and
28174	higher.
28175	(alpha*-*-*): Likewise.
28176	(alpha*-*-osf*: gmp_optcflags_cc): Move -arch/-tune flags from
28177	gmp_xoptcflags_gcc.
28178
28179	* mpn/Makefile.am (TARG_DIST): Add pa64w.
28180
28181	* longlong.h: Wrap 64-bit hppa code in #ifndef LONGLONG_STANDALONE.
28182
281832000-06-07  Torbjorn Granlund  <tege@swox.com>
28184
28185	* mpz/remove.c: Fail for `src' being zero.
28186
28187	* mpz/tests/reuse.c: Test more functions.
28188	(FAIL): New define.
28189
28190	* mpz/tests/t-powm.c: Loop during operand generation while they
28191	are mathematically ill-defined (used to just skip such tests).
28192
28193	* mpz/powm.c (mpz_redc): Clean up argument declarations.
28194
28195	* configure.in (gmp_cflags64_gcc): Don't add bogus -mWHAT option.
28196	(sparcv9-*-solaris2.[7-9]], gmp_cflags64_gcc):
28197	Inherit from previous gmp_cflags64_gcc; pass `-m64 -mptr64'.
28198	(ia64*-*-*): New.
28199
28200	* mpn/generic/dump.c: Make it work when an mp_limb_t is not `long'.
28201
28202	* mpf/set_prc.c: MPN_COPY => MPN_COPY_INCR.
28203
282042000-06-06  Torbjorn Granlund  <tege@swox.com>
28205
28206	* mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n):
28207	Use mpn_incr_u for final carry propagation.
28208
28209	* mpz/tests/t-gcd.c: Add calls to mpz_gcdext with argument t == NULL.
28210
28211	* mpz/tests/reuse.c: Major rewrite; test many more functions.
28212
28213	* mpz/powm_ui.c: When exp is 0, change res assign order in order
28214	to handle argument overlap.
28215	* mpz/powm.c: When exp is 0, change res assign order in order
28216	to handle argument overlap.  Handle negative exp and mod arguments.
28217
28218	* mpz/gcdext.c: Rework code after mpn_gcdext call to handle
28219	argument overlap.
28220
28221	* mpz/fdiv_qr.c: Read dividend->_mp_size before calling mpz_tdiv_qr
28222	in order to handle argument overlap.
28223	* mpz/cdiv_qr.c: Likewise.
28224
28225	* mpf/tests/reuse.c: Fix typo that effectively disabled `dis_funcs'
28226	tests.  Clean up test for mpf_ui_div.
28227
282282000-06-06  Kevin Ryde  <kevin@swox.se>
28229
28230	* mpn/x86/p6/sqr_basecase.asm: New file.
28231	* mpn/x86/mod_1.asm: Avoid one conditional jump.
28232	* mpn/x86/p6/gmp-mparam.h: Update thresholds, #ifndef UMUL_TIME
28233	and UDIV_TIME, add COUNT_TRAILING_ZEROS_TIME.
28234
28235	* mp_minv_tab.c: New file.
28236	* Makefile.am (libgmp_la_SOURCES, libmp_la_SOURCES): Add it.
28237	* gmp-impl.h (modlimb_invert): New macro.
28238	* mpz/powm.c: Remove mpz_dmprepare, use modlimb_invert instead.
28239	* mpn/generic/bdivmod.c: Use modlimb_invert instead of a loop.
28240	* mpn/generic/gcd.c: Inline two small mpn_bdivmod calls, use
28241	MPN_COPY_INCR not MPN_COPY in one place.
28242
282432000-06-05  Torbjorn Granlund  <tege@swox.com>
28244
28245	* mpf/tests/reuse.c (dsi_funcs): Add mpf_mul_2exp and mpf_div_2exp.
28246	(main): Clean up test for mpf_div_ui.
28247
28248	* mpf/mul_2exp.c: Correct criterion for whether to use mpn_lshift or
28249	mpn_rshift.  MPN_COPY => MPN_COPY_INCR.  Coerce the two assignments to
28250	r->_mp_size.
28251
28252	* mpf/div_2exp.c: Use mpn_rshift instead of mpn_lshift when overlap
28253	so requires.  MPN_COPY => MPN_COPY_INCR.
28254
28255	* mpf/tests/t-dm2exp.c: Correct type of res_prec.
28256
282572000-06-04  Kevin Ryde  <kevin@swox.se>
28258
28259	* mpz/bin_uiui.c: Fix result for n==0 and n==k.
28260	* mpz/bin_ui.c: Fix result for k>n, add support for n<0.
28261	* gmp.texi (Number Theoretic Functions): Update mpz_bin_ui to
28262	note n<0 is supported.
28263
28264	* mpz/tests/t-misc.c: New file.
28265	* mpz/tests/Makefile.am (check_PROGRAMS): Add it.
28266
282672000-05-31  Kevin Ryde  <kevin@swox.se>
28268
28269	* tune/speed.* (FLAG_R_OPTIONAL): New option for routines, use on
28270	mpn_gcd_1 and mpn_mul_basecase.
28271	* tune/README: Update.
28272
28273	* tune/alpha.asm: New file, by Torbjorn.
28274	* tune/Makefile.am (EXTRA_DIST): Add it.
28275	* configure.in (alpha*-*-*): Use it.
28276
282772000-05-31  Linus Nordberg  <linus@swox.se>
28278
28279	* doc/configuration: New file.
28280
282812000-05-30  Torbjorn Granlund  <tege@swox.com>
28282
28283	* mpn/generic/mul_basecase.c: Call mpn_mul_2 and mpn_addmul_2
28284	if available.  Don't include longlong.h.
28285
28286	* doc/isa_abi_headache: New file.
28287
282882000-05-30  Linus Nordberg  <linus@swox.se>
28289
28290	* configure.in (NM): Use AC_PROG_NM rather than AC_CHECK_TOOL to
28291	find `nm'.  (AC_PROG_NM comes with Libtool and is needed to get
28292	the `-B' option (BSD compatible output) included in $NM.)
28293	(AR): Use AC_CHECK_PROG rather than AC_CHECK_TOOL to find `ar'.
28294	(Now that NM isn't a cross compilation tool, don't give the
28295	impression that we know how to cross compile.)
28296	(CCAS): Remove spurious comment.
28297
28298	* gmp.texi (Notes for Particular Systems): Remove comment about
28299	using GNU `nm' on AIX since system nm now works.
28300
283012000-05-29  Torbjorn Granlund  <tege@swox.com>
28302
28303	* mpn/power/mul_1.s: Remove [PR] from first word in function
28304	descriptor.
28305	* mpn/power/addmul_1.s: Likewise.
28306	* mpn/power/submul_1.s: Likewise.
28307
283082000-05-28  Kevin Ryde  <kevin@swox.se>
28309
28310	* configure.in, tune/*: Change pentium rdtsc cycle scheme to
28311	HAVE_SPEED_CYCLECOUNTER and SPEED_CYCLECOUNTER_OBJS.
28312	* tune/pentium.asm: Renamed and converted from rdtsc.asm.
28313	* tune/sparcv9.asm: New file, by Torbjorn.
28314	* tune/sparc64.asm: New file.
28315	* tune/tuneup.c: Put a limit on gcdext search.
28316
28317	* gmp.h (mp_set_memory_functions): Add extern "C".
28318	* mp.h (__GNU_MP__): Bump to "3".
28319	* mpz/add.c,mul.c,powm.c,sub.c,sqrtrem.c,tdiv_qr.c [BERKELEY_MP]:
28320	Include mp.h for mpbsd compile.
28321	* mpz/gcd.c: Ditto, and remove _mpz_realloc declaration.
28322
28323	* gmp.texi (Integer Functions): Flatten @subsections into @sections.
28324	(Floating-point Functions): Ditto.
28325	(Integer Random Numbers): Split from miscellaneous as a sep section.
28326	(Installing GMP): Make nodes for the sections.
28327	Add more "@cindex"s.
28328	(Known Build Problems): Remove SunOS get_d problem, believed fixed.
28329	(Notes for Particular Systems): Remove HPPA note since now PIC.
28330	(References): URL for Jebelean.
28331
283322000-05-27  Torbjorn Granlund  <tege@swox.com>
28333
28334	* mpn/pa64w: New directory, contents based on corresponding mpn/pa64
28335	files.
28336	* configure.in (hppa2.0w-*-*): New.
28337	* mpz/tests/io.c (_INCLUDE_POSIX_SOURCE): Define when __hpux before
28338	including stdio.h.
28339	* gmp-impl.h: Always define DItype and UDItype.
28340
283412000-05-27  Kevin Ryde  <kevin@swox.se>
28342
28343	* tune/common.c (speed_measure): Correction to array sorting,
28344	better diagnostic when measuring fails.
28345	* tune/time.c: Add microsecond accurate getrusage method.
28346
28347	* tune/time.c (speed_cpu_frequency_processor_info): New function.
28348	* configure.in (AC_CHECK_FUNCS): Add processor_info.
28349
283502000-05-26  Linus Nordberg  <linus@swox.se>
28351
28352	* gmp.texi (Installing GMP): Shared libraries work for AIX < 4.3
28353	if using GNU nm.
28354
283552000-05-26  Torbjorn Granlund  <tege@swox.com>
28356
28357	* tune/tuneup.c (SIGNED_TYPE_MAX): Shift `-1' instead of `1' to
28358	avoid signed overflow.
28359
28360	* demos/pexpr.c (setup_error_handler): Don't call sigaltstack on
28361	Unicos.
28362
283632000-05-25  Torbjorn Granlund  <tege@swox.com>
28364
28365	* insert-dbl.c: Work around GCC 2.8 bug.
28366	* extract-dbl.c: Likewise.
28367
28368	* config.sub: Allow i586, i686, i786 again.
28369
28370	* config.guess: Use X86CPU for lots more systems.
28371
283722000-05-25  Linus Nordberg  <linus@swox.se>
28373
28374	* mpbsd/tests/dummy.c (main): Call exit() instead of doing return
28375	(some old SysV machines don't get this correct, I've heard.)
28376
283772000-05-25  Kevin Ryde  <kevin@swox.se>
28378
28379	* mpf/iset_str.c: Initialize _mp_size and _mp_exp to 0, in case no
28380	digits in string, so it's the same as a separate init and set_str.
28381
283822000-05-24  Torbjorn Granlund  <tege@swox.com>
28383
28384	* mpz/tests/reuse.c: Use mpz_random2 instead of mpz_random.
28385
28386	* mpz/divexact.c: Read pointers after reallocation.
28387	Compare `quot' and `den' instead of `qp' and `dp' in overlap check.
28388	Use MPN_COPY_INCR for copying from `np'.
28389
28390	(*-*-aix4.[3-9]*): Disable shared libs just for problematic AIX
28391	versions.
28392	* configure.in (*-cray-unicos*): Disable asm syntax checking; set
28393	compiler explicitly.
28394	* configure.in (hppa*-*-*): Remove code disabling shared libs.
28395
283962000-05-24  Linus Nordberg  <linus@swox.se>
28397
28398	* acinclude.m4 (GMP_PROG_CC_WORKS): Don't report progress to user
28399	when doing the AIX specific test to avoid "nested output".
28400
284012000-05-22  Kevin Ryde  <kevin@swox.se>
28402
28403	* mp.h (_PROTO): Copy from gmp.h, use on prototypes.
28404	Add extern "C" too.
28405	* mpbsd/tests/Makefile.am (AUTOMAKE_OPTIONS): Enable ansi2knr.
28406	* mpbsd/tests/allfuns.c: Don't execute mout, just link to it.
28407	(main): ANSI style definition.
28408
28409	* gmp-impl.h (MP_BASE_AS_DOUBLE): Change the expression to
28410	something that works on SunOS native cc.  Seems to fix the
28411	mp*_get_d problems.
28412
28413	* mpn/tests/ref.c (refmpn_strip_twos): Use MPN_COPY_INCR.
28414	* mpn/tests/Makefile.am: Let .asm.o rules work with absolute $srcdir.
28415
284162000-05-21  Kevin Ryde  <kevin@swox.se>
28417
28418	* mpn/x86/k7/sqr_basecase.asm: Replace file with K7 specific code.
28419	* mpn/x86/k7/README: Update.
28420	* mpn/x86/k7/gmp-mparam.h: Tune thresholds.
28421	(COUNT_TRAILING_ZEROS_TIME): New define.
28422	* mpn/x86/k6/gmp-mparam.h: Ditto.
28423
28424	* mpn/x86/pentium/mmx/popham.asm: New file (include_mpn of K6 version).
28425	* mpn/x86/p6/diveby3.asm: New file (include_mpn of P5 version).
28426	* mpn/x86/p6/mmx/popham.asm: New file (include_mpn of K6 version).
28427	* mpn/x86/p6/p3mmx/popham.asm: New file (include_mpn of K7 version).
28428	* configure.in (pentium3-*-*): Add p3mmx to $path.
28429
28430	* gmp.texi (Integer Arithmetic): Clarify mpz_jacobi op2; add
28431	mpz_*_kronecker_*.
28432	(Miscellaneous Integer Functions): Add mpz_odd_p and mpz_even_p.
28433	(Low-level Functions): Put mpn_divmod_1 with mpn_divrem_1 and note
28434	it's now a macro.
28435	(References): Add Henri Cohen.
28436
28437	* gmp.h (mpn_addmul_1c, mpn_divrem_1c, mpn_mod_1c, mpn_mul_1c,
28438	mpn_submul_1c): Add prototypes.
28439	(mpz_odd_p, mpz_even_p): New macros.
28440
28441	* mpn/asm-defs.m4 (m4wrap_prepend): New macro.
28442	(m4_error): Use it.
28443	(m4_not_for_expansion): Corrections to OPERATION symbols.
28444	More comments about variations between m4 versions.
28445	* mpn/x86/x86-defs.m4 (PROLOGUE): Use m4wrap_prepend (fixes error
28446	exit under BSD m4, previously m4_error printed the message but the
28447	exit code was 0).
28448
28449	* gmp.h (mpn_divmod_1): Change to a macro calling mpn_divrem_1.
28450	* mpn/generic/divrem_1.c: Move divmod_1.c code to here, make it
28451	static and call it __gmpn_divmod_1_internal.
28452	* mpn/generic/divmod_1.c: Remove file.
28453	* configure.in (gmp_mpn_functions): Remove divmod_1.
28454	* mpn/asm-defs.m4 (define_mpn): Remove divmod_1 and divmod_1c.
28455	* compat.c (mpn_divmod_1): Add compatibility function.
28456	* tune/*: Remove mpn_divmod_1 measuring (leave just divrem_1).
28457
28458	* acconfig.h (HAVE_NATIVE_mpn_*): Add some missing carry-in
28459	variants, remove divmod_1.
28460
28461	* mpn/x86/diveby3.asm: Use imul, update comments.
28462
28463	* demos/qcn.c: New file.
28464	* demos/Makefile.am (EXTRA_PROGRAMS): Add it.
28465
28466	* mpz/tests/t-jac.c: New file.
28467	* mpz/tests/Makefile.am (check_PROGRAMS): Add it. Enable ansi2knr.
28468
28469	* mpz/kronsz.c: New file.
28470	* mpz/kronuz.c: New file.
28471	* mpz/kronzs.c: New file.
28472	* mpz/kronzu.c: New file.
28473	* mpz/Makefile.am (libmpz_la_SOURCES): Add them.
28474	* Makefile.am (MPZ_OBJECTS): Add them.
28475	* gmp-impl.h (JACOBI_*, MPN_STRIP_LOW_ZEROS_NOT_ZERO): New macros.
28476	* gmp.h (mpz_*_kronecker_*): New defines and prototypes.
28477
28478	* mpn/generic/jacbase.c: New file.
28479	* mpn/generic/mod_1_rs.c: New file.
28480	* configure.in (gmp_mpn_functions): Add them.
28481	* gmp.h (mpn_jacobi_base, mpn_mod_1_rshift): New defines and
28482	prototypes.
28483	* longlong.h (COUNT_TRAILING_ZEROS_TIME): New define.
28484	* mpn/tests/ref.c (refmpn_mod_1_rshift): New function.
28485	* mpn/tests/try.c: Add mpn_mod_1_rshift.
28486	* tune/*: Add measuring for mpn_jacobi_base.
28487
28488	* acinclude.m4 (GMP_FINISH): Add ifdefs to allow multiple
28489	inclusion of config.m4.
28490	(GMP_PROG_M4): Put "good" message through to config.log.
28491
28492	* mpz/powm.c: Use a POWM_THRESHOLD for where redc stops.
28493	* tune/*: Add mpz_powm measuring, and tune POWM_THRESHOLD.
28494	* gmp-impl.h [TUNE_PROGRAM_BUILD] (POWM_THRESHOLD): Conditional
28495	redefinition for use when tuning.
28496
28497	* mpz/powm_ui.c: Use DIVIDE_BY_ZERO.
28498
28499	* mpz/iset_str.c: Initialize _mp_size to 0, in case no digits in
28500	string; this makes it the same as a separate init and set_str.
28501
285022000-05-20  Kevin Ryde  <kevin@swox.se>
28503
28504	* mpn/asm-defs.m4: Note &,|,^ aren't bitwise in BSD m4 eval().
28505	* mpn/x86/k6/sqr_basecase.asm: Use "%" not "&" in m4 eval()s.
28506
28507	* mpn/x86/x86-defs.m4 (Zdisp): Yet more instruction forms.
28508
285092000-05-19  Linus Nordberg  <linus@swox.se>
28510
28511	* acinclude.m4 (GMP_CHECK_CC_64BIT): Don't use shell variable
28512	`ac_compile' for our own compile command string since other
28513	Autoconf macros may depend on it.
28514
285152000-05-19  Kevin Ryde  <kevin@swox.se>
28516
28517	* mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Fix
28518	carry propagation in final coefficient additions.
28519
285202000-05-18  Linus Nordberg  <linus@swox.se>
28521
28522	* configure.in: Set NM before looking for compiler since
28523	GMP_CHECK_CC_64BIT needs it.
28524
28525	* acinclude.m4 (GMP_CHECK_CC_64BIT): Don't execute on target.
28526	(GMP_PROG_CC_FIND): Before checking if the compiler knows how to
28527	produce 64-bit code, verify that it works at all.  The background
28528	is that /usr/ucb/cc on Solaris 7 successfully compiles in 64-bit
28529	mode but fails when doing final link.
28530	(GMP_PROG_CC_WORKS): Report to user what's happening.
28531
285322000-05-17  Linus Nordberg  <linus@swox.se>
28533
28534	* config.guess: Use X86CPU for x86 Cygwin.
28535
285362000-05-16  Kevin Ryde  <kevin@swox.se>
28537
28538	* mpn/x86/p6/mmx/divrem_1.asm: New file.
28539	* mpn/x86/p6/mmx/mod_1.asm: New file.
28540	* mpn/x86/p6/README: Update.
28541	* mpn/x86/divrem_1.asm: Update comments.
28542	* mpn/x86/mod_1.asm: Ditto.
28543
285442000-05-14  Kevin Ryde  <kevin@swox.se>
28545
28546	* tune/speed.h: Run gcd functions on a set of data.
28547
28548	* mpn/tests/try.c: New file.
28549	* mpn/tests/try.h: New file.
28550	* mpn/tests/spinner.c: New file.
28551	* mpn/tests/trace.c: New file.
28552	* mpn/tests/x86call.asm: New file.
28553	* mpn/tests/x86check.c: New file.
28554	* mpn/tests/ref.c (refmpn_hamdist): Allow size==0.
28555	(refmpn_gcd): New function, and other additions supporting it.
28556	* mpn/tests/ref.h: More prototypes.
28557	* mpn/tests/Makefile.am: Add try program, use ansi2knr.
28558
28559	* mpn/x86/k7/mmx/popham.asm: New file.
28560	* mpn/x86/k6/mmx/popham.asm: New file.
28561	* mpn/x86/k6/sqr_basecase.asm: Unroll the addmul, for approx 1.3x
28562	speedup above 15 limbs.
28563	* mpn/x86/k7/README: Update.
28564	* mpn/x86/k6/README: Update, and add notes on plain K6 and pre-CXT
28565	K6-2 problems.
28566	* configure.in (k6*-*-*, athlon-*-*): Add popham.
28567
28568	* mpn/x86/pentium/diveby3.asm: New file.
28569	* mpn/x86/pentium/README: Update.
28570
28571	* gmp.texi (Installing GMP): Add note on bad OpenBSD 2.6 m4.
28572	(Reporting Bugs): Ask for config.m4 if asm file related.
28573	(I/O of Rationals): New section, add mpq_out_str.
28574	(References): Add url for on-line gcc manuals.
28575	A few node and menu updates.
28576
28577	* INSTALL: Better command line argument checking for test progs.
28578	Change MP -> GMP.
28579
28580	* configure.in (WANT_ASSERT, USE_STACK_ALLOC, HAVE_PENTIUM_RDTSC):
28581	Put descriptions here, not in acconfig.h.
28582	(CALLING_CONVENTIONS_OBJS): New AC_SUBST (for mpn/tests/try).
28583	(HAVE_CALLING_CONVENTIONS): New AC_DEFINE.
28584	(AC_CHECK_HEADERS): Add sys/time.h.
28585	(AC_CHECK_FUNCS): Add getpagesize, setitimer.
28586	(KARATSUBA_SQR_THRESHOLD): Strip trailing comments from the
28587	#define when passing through to config.m4.
28588	* acconfig.h (PACKAGE, VERSION, WANT_ASSERT, USE_STACK_ALLOC,
28589	HAVE_PENTIUM_RDTSC): No need for #undefs, autoheader gets them
28590	from configure.in.
28591
28592	* acinclude.m4 (GMP_PROG_M4): Check for broken OpenBSD 2.6 m4
28593	eval(), put messages into config.log.
28594	* mpn/asm-defs.m4: Add notes and test for OpenBSD 2.6 m4.
28595
28596	* mpq/out_str.c: New file.
28597	* mpq/Makefile.am (libmpq_la_SOURCES): Add it.
28598	* Makefile.am (MPQ_OBJECTS): Ditto.
28599	* gmp.h (mpq_out_str): New define and prototype.
28600
286012000-05-12  Kevin Ryde  <kevin@swox.se>
28602
28603	* configure.in (CONFIG_TOP_SRCDIR): Fix to use $srcdir not
28604	$top_srcdir (which doesn't exist).
28605	* acinclude.m4 (GMP_C_ANSI2KNR): Fix setting U=_.
28606	* gmp-impl.h (mpn_com_n, MPN_LOGOPS_N_INLINE): Fix missing "do"
28607	(not currently used, probably no ill effect anyway).
28608
286092000-05-11  Torbjorn Granlund  <tege@swox.com>
28610
28611	* randraw.c (lc): Major overhaul (pending rewrite).
28612	(_gmp_rand): Rewrite.
28613
286142000-05-08  Torbjorn Granlund  <tege@swox.com>
28615
28616	* mpz/tests/convert.c: Call free via _mp_free_func.
28617	* mpf/tests/t-conv.c: Likewise.
28618
28619	* memory.c: Add code enabled for DEBUG that adds special patterns
28620	around allocated blocks.
28621
286222000-05-05  Linus Nordberg  <linus@swox.se>
28623
28624	* gmp.texi (Miscellaneous Float Functions): Correct parameter list
28625	for mpf_urandomb().
28626
28627	* configure.in: Invoke AC_REVISION.
28628
286292000-05-05  Kevin Ryde  <kevin@swox.se>
28630
28631	* gmp.texi: Use @dircategory and @direntry.
28632	(Installing GMP): Clarification for --target, updates on SunOS
28633	problems.
28634	(Integer Arithmetic): Add mpz_mul_si.
28635	(Initializing Rationals): Add mpq_swap.
28636	(Assigning Floats): Add mpf_swap.
28637	(Low-level Functions): Add mpn_divexact_by3c, and details of what
28638	the calculation actually gives.
28639	(Low-level Functions): Note extra space needed by mpn_gcdext,
28640	clarify the details a bit.
28641
28642	* compat.c: New file, entry points for upward binary compatibility.
28643	(mpn_divexact_by3): Compatibility function.
28644	* Makefile.am (libgmp_la_SOURCES): Add compat.c.
28645
28646	* mpn/tests/ref.c: Rearrange macros for ansi2knr.
28647	(div1): Renamed from div to avoid library function.
28648	(refmpn_divexact_by3c, refmpn_gcd_1, refmpn_popcount,
28649	refmpn_hamdist): New functions.
28650	* mpn/tests/ref.h: Add extern "C", add new prototypes.
28651
28652	* gmp.h (gmp_randinit, etc): Add extern "C".
28653	(_mpq_cmp_ui): Fix prototype name from mpq_cmp_ui.
28654	(mpn_divexact_by3): Now a macro calling mpn_divexact_by3c.
28655	(mpn_divexact_by3c): New prototype and define.
28656
28657	* mpn/x86/diveby3.asm: Change to mpn_divexact_by3c.
28658	* mpn/x86/k6/diveby3.asm: Ditto.
28659	* mpn/generic/diveby3.c: Ditto.
28660	* mpn/asm-defs.m4: Ditto on the define_mpn.
28661	* acconfig.h (HAVE_NATIVE_mpn_divexact_by3c): New define.
28662
28663	* mpq/swap.c: New file, derived from mpz/swap.c.
28664	* mpf/swap.c: Ditto.
28665	* mpq/Makefile.am: Add swap.c.
28666	* mpf/Makefile.am: Ditto.
28667	* Makefile.am: Add two new "swap.lo"s.
28668
28669	* mpn/x86/k6/mmx/com_n.asm: Fix an addressing bug (fortunately
28670	this code hasn't been used anywhere yet).
28671
28672	* mpn/x86/k7/mmx/divrem_1.asm: New file.
28673	* mpn/x86/k7/mmx/mod_1.asm: New file.
28674	* mpn/x86/k7/diveby3.asm: New file.
28675	* mpn/x86/k7/README: Update.
28676
28677	* mpn/x86/k7/aorsmul_1.asm: Use new cmovCC, no object code change.
28678	* mpn/x86/k7/mul_basecase.asm: Ditto.
28679	* mpn/x86/p6/aorsmul_1.asm: Ditto.
28680
28681	* mpn/x86/x86-defs.m4 (defframe_empty_if_zero): Eval the argument.
28682	(cmovCC): New macros, replacing individual cmovCC_reg_reg forms.
28683	(Zdisp): Recognise more instructions.
28684	(shldl,etc): Use m4_instruction_wrapper().
28685	(ASSERT, movl_text_address): New macros.
28686
28687	* mpn/asm-defs.m4: Add remarks on SunOS /usr/bin/m4 and new
28688	OpenBSD m4.
28689	(m4_assert_numargs_internal_check): Remove a spurious parameter.
28690	(m4_empty_if_zero): Eval the argument.
28691	(m4_assert, m4_assert_numargs_range, m4_config_gmp_mparam,
28692	m4_instruction_wrapper): New macros.
28693
286942000-05-04  Linus Nordberg  <linus@swox.se>
28695
28696	* gmp.texi (Reporting Bugs): Be explicit about output from running
28697	a command.
28698
286992000-05-02  Torbjorn Granlund  <tege@swox.com>
28700
28701	* mpn/generic/bz_divrem_n.c (mpn_bz_divrem_n): Handle non-zero return
28702	from first mpn_bz_div_3_halves_by_2 call.
28703	(mpn_bz_divrem_aux): Likewise.
28704
287052000-04-30  Kevin Ryde  <kevin@swox.se>
28706
28707	* tune/* (GCD_ACCEL_THRESHOLD, GCDEXT_THRESHOLD): Tune these.
28708
28709	* mpn/generic/gcdext.c (GCDEXT_THRESHOLD): Rename from THRESHOLD,
28710	use with >=, adjust default to 17 accordingly.
28711	Use new *_SWAP macros.
28712
28713	* mpn/generic/gcd.c (GCD_ACCEL_THRESHOLD): Rename from
28714	ACCEL_THRESHOLD, use with >=, adjust default to 5 accordingly.
28715	Use new *_SWAP macros.
28716
28717	* mpf/get_str.c, mpf/set_str.c, mpf/sub.c, mpz/add.c, mpz/ior.c,
28718	mpz/and.c, mpz/sub.c, mpz/xor.c, mpz/ui_pow_ui.c,
28719	mpn/generic/mul.c: Use new *_SWAP macros.
28720
28721	* stack-alloc.h: Add extern "C" around prototypes.
28722
28723	* gmp-impl.h: (MP_PTR_SWAP, etc): New macros.
28724	(_mp_allocate_func, etc): Use _PROTO.
28725	[TUNE_PROGRAM_BUILD]: More changes in tune program build part.
28726
287272000-04-28  Torbjorn Granlund  <tege@swox.com>
28728
28729	* mpn/pa64/add_n.s: Add `,entry' to export directive.
28730	* mpn/pa64/addmul_1.S, mpn/pa64/lshift.s, mpn/pa64/mul_1.S,
28731	mpn/pa64/rshift.s, mpn/pa64/sub_n.s, mpn/pa64/submul_1.S,
28732	mpn/pa64/umul_ppmm.S: Likewise.
28733	* mpn/hppa/hppa1_1/udiv_qrnnd.S: New name for udiv_qrnnd.s.
28734	Add PIC support.
28735
287362000-04-29  Kevin Ryde  <kevin@swox.se>
28737
28738	* gmp-impl.h [TUNE_PROGRAM_BUILD] (TOOM3_MUL_THRESHOLD_LIMIT): New
28739	define.
28740	* mpn/generic/mul_n.c [TUNE_PROGRAM_BUILD] (mpn_mul_n): Use
28741	TOOM3_MUL_THRESHOLD_LIMIT, not a hard coded 500.
28742
28743	* memory.c: Use <stdlib.h> for malloc etc, and use _PROTO.
28744	* stack-alloc.c: Don't use C++ reserved word "this".
28745	* urandom.h: Put extern "C" around prototypes.
28746	* mpz/powm.c: Switch a couple of parameters to "const", which they
28747	are, to satisfy g++.
28748
28749	* randraw.c, stack-alloc.c, mpbsd/mout.c, mpbsd/mtox.c: Add casts to
28750	help g++.
28751
28752	* stack-alloc.c: Provide dual ANSI/K&R function definitions.
28753	* mpz/addmul_ui.c,get_d.c,inp_str.c,perfpow.c,powm.c,pprime_p.c,
28754	rrandomb.c,set_str.c,ui_pow_ui.c: Ditto.
28755	* mpf/integer.c,set_str.c: Ditto.
28756	* mpbsd/min.c,xtom.c: Ditto.
28757	* mpn/generic/bz_divrem_n.c,dump.c,gcd_1.c,get_str.c,hamdist.c,
28758	popcount.c,random.c,random2.c,set_str.c: Ditto.
28759
28760	* rand.c: Use <stdio.h> for NULL.
28761	* mpz/gcd_ui.c,gcdext.c,mul.c,perfpow.c,powm_ui.c,root.c,sqrt.c,
28762	sqrtrem.c: Ditto
28763	* mpf/sqrt.c,sqrt_ui.c: Ditto.
28764	* mpn/generic/perfsqr.c,sqrtrem.c: Ditto.
28765
28766	* gmp-impl.h (NULL, malloc, realloc, free): Don't define/declare.
28767	(extern "C"): Add around function prototypes.
28768	(mpn_kara_mul_n, mpn_kara_sqr_n, mpn_toom3_mul_n, mpn_toom3_sqr_n):
28769	Add prototypes.
28770	[TUNE_PROGRAM_BUILD] (FIB_THRESHOLD): Add necessary redefinitions for
28771	use by tune program.
28772	* mpn/generic/mul_n.c: Remove mpn_toom3_mul_n prototype.
28773
28774	* acinclude.m4 (GMP_C_ANSI2KNR): New macro.
28775	(GMP_CHECK_ASM_MMX, GMP_CHECK_ASM_SHLDL_CL): Fix to use
28776	$gmp_cv_check_asm_text which is what GMP_CHECK_ASM_TEXT sets.
28777	* configure.in (GMP_C_ANSI2KNR): Use this instead of AM_C_PROTOTYPES,
28778	for reasons described with its definition.
28779
28780	* demos/Makefile.am (ansi2knr): Use $(top_builddir) nor $(top_srcdir).
28781
28782	* mpz/fib_ui.c (FIB_THRESHOLD): Rename from FIB_THRES, for consistency.
28783	(FIB_THRESHOLD): Conditionalize so gmp-mparam.h can define a value.
28784	(mpz_fib_bigcase): Use >= FIB_THRESHOLD, same as main mpz_fib_ui.
28785	* tune/tuneup.c,Makefile.am (FIB_THRESHOLD): Tune this.
28786
28787	* configure.in (*-*-aix* gmp_m4postinc): Fix setting (don't overwrite
28788	a value just stored).
28789
287902000-04-26  Kevin Ryde  <kevin@swox.se>
28791
28792	* mpn/sparc32/udiv_fp.asm: Use mpn_udiv_qrnnd macro.
28793	* mpn/sparc32/udiv_nfp.asm: Ditto.
28794	* mpn/sparc32/v8/supersparc/udiv.asm: Ditto.
28795	* mpn/sparc32/umul.asm: Name the function mpn_umul_ppmm.
28796	* mpn/sparc32/v8/umul.asm: Ditto.
28797	* mpn/powerpc32/umul.asm: Ditto.
28798
28799	* mpn/x86/syntax.h: Remove file, since now unused.
28800
28801	* configure.in (x86): Remove -DBROKEN_ALIGN and -DOLD_GAS
28802	previously used by .S files.
28803	(x86 extra_functions): Add udiv and umul.
28804	(GMP_PROG_M4): Use this instead of AC_CHECK_PROG(M4,m4,...)
28805	(HAVE_NATIVE_*): Loosen up the regexp to "PROLOGUE.*" so as to
28806	accept PROLOGUE_GP on alpha.
28807
28808	* acconfig.h (HAVE_NATIVE_mpn_umul_ppmm, udiv_qrnnd, invert_limb):
28809	New template defines.
28810	* mpn/asm-defs.m4 (mpn_umul_ppmm, mpn_udiv_qrnnd): New define_mpn()s.
28811	* longlong.h (umul_ppmm, udiv_qrnnd): Use a library version if
28812	it's available and an asm macro isn't.
28813	* gmp-impl.h (invert_limb): Ditto.
28814
28815	* gmp-impl.h (ASSERT_NOREALLOC): Not a good idea, remove it.
28816
28817	* acinclude.m4 (GMP_PROG_M4): New macro.
28818
288192000-04-25  Linus Nordberg  <linus@swox.se>
28820
28821	* gmp.texi (Random State Initialization): Correct arguments to
28822	`gmp_randinit'.
28823
28824	* acinclude.m4 (GMP_VERSION): Change `eval' --> `m4_eval'.  Fix
28825	from Kevin.
28826	* aclocal.m4: Regenerate.
28827
288282000-04-25  Kevin Ryde  <kevin@swox.se>
28829
28830	* mpn/x86/aors_n.asm: Remove parentheses around an immediate that
28831	Solaris "as" doesn't like, change by Torbjorn.
28832
288332000-04-24  Kevin Ryde  <kevin@swox.se>
28834
28835	* configure.in (AC_CHECK_FUNCS): Add strtoul.
28836
28837	* mpn/generic/mul_n.c [TUNE_PROGRAM_BUILD] (mpn_mul_n): Bigger
28838	array for karatsuba temporary space for tune program build.
28839	(mpn_toom3_sqr_n) Remove an unused variable.
28840
28841	* demos/Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr.
28842	Add "allprogs:" pseudo-target.
28843	* demos/factorize.c, demos/isprime.c: Switch to ANSI functions,
28844	rely on ansi2knr.
28845
28846	* gmp.texi (Getting the Latest Version of GMP): Add reference to
28847	ftp.gnu.org mirrors list.
28848	* INSTALL: Add arg count check to example programs.
28849
28850	* mpn/x86/*/*.asm: Convert to FORTRAN ... or rather to
28851	FORTRAN-style "C" commenting to support Solaris "as".
28852	* mpn/x86/x86-defs.m4: Ditto, and add another Zdisp insn.
28853	* mpn/asm-defs.m4 (C): Update comments.
28854	* mpn/x86/README.family: Add a note on commenting, remove
28855	description of .S files.
28856
28857	* mpn/sparc64/addmul_1.asm, mul_1.asm, submul_1.asm: Use
28858	include_mpn().
28859
288602000-04-23  Torbjorn Granlund  <tege@swox.com>
28861
28862	* config.sub: Merge with FSF version of April 23.
28863
28864	* mpn/powerpc32: Use dnl/C instead of `#' for comments.
28865
28866	* config.guess: Get "model" limit between pentium 2 and pentium3 right.
28867	Get rid of code determining `_' prefix; use double labels instead.
28868	* config.guess: Partially merge with FSF version of April 22.
28869	(Don't bring over NetBSD changes for now.)
28870
288712000-04-23  Kevin Ryde  <kevin@swox.se>
28872
28873	* tune/Makefile.am, tune/README, tune/common.c, tune/rdtsc.asm,
28874	tune/speed.c, tune/speed.h, tune/time.c, tune/tuneup.c: New files.
28875	* tune/Makefile.in: New file, generated from Makefile.am.
28876
28877	* gmp-impl.h (ASSERT_NOREALLOC,TMP_ALLOC_LIMBS): New macros.
28878	[TUNE_PROGRAM_BUILD] Further mods for tune program builds.
28879
28880	* mpz/Makefile.am: Add -DOPERATION_$* for new mul_siui.c.
28881	Add rules to build mul_si and mul_ui from a common mul_siui.c.
28882	* mpz/mul_siui.c: New file, derived from and replacing mul_ui.c.
28883	* gmp.h (mpz_mul_si): New prototype and define.
28884
28885	* mpn/tests/*.c [__i386__] (CLOCK): Don't use floating point in
28886	CLOCK because cpp can't handle floats in #if's (TIMES is derived
28887	from CLOCK by default).
28888
28889	* mpn/asm-defs.m4 (include_mpn): New macro.
28890	(m4_assert_numargs) Changes to implementation.
28891
28892	* mpf/Makefile.am: Add -DOPERATION_$* for new integer.c.
28893	Remove explicit rules for floor.o etc.
28894	* mpf/integer.c: Use OPERATION_$* for floor/ceil/trunc.
28895
28896	* mpn/Makefile.am: Put "tests" in SUBDIRS.
28897	* mpn/tests/Makefile.am: New file providing rules to build test
28898	programs, nothing done in a "make all" or "make check" though.
28899	* mpn/tests/README: New file.
28900
28901	* acconfig.h (HAVE_PENTIUM_RDTSC): New define.
28902
28903	* configure.in (x86): Rearrange target cases.
28904	Add mulfunc aors_n and aorsmul_1 for x86 and pentium (now all x86s).
28905	Remove asm-syntax.h generation not needed.
28906	Remove now unused family=x86.
28907	(sparc) Remove unused family=sparc.
28908	(HAVE_PENTIUM_RDTSC) New AC_DEFINE and AM_CONDITIONAL.
28909	(AM_C_PROTOTYPES) New test, supporting ansi2knr.
28910	(AC_CHECK_HEADERS) Add getopt.h, unistd.h and sys/sysctl.h for
28911	tune progs.
28912	(AC_CHECK_FUNCS) Add getopt_long, sysconf and sysctlbyname for
28913	tune progs.
28914	(config.m4 CONFIG_TOP_SRCDIR) Renamed from CONFIG_SRCDIR.
28915	(config.m4 asm-defs.m4) Use CONFIG_TOP_SRCDIR and include().
28916	(gmp_m4postinc) Use include_mpn().
28917	(gmp_links) Omit asm-defs.m4/asm.m4 and gmp_m4postinc's.
28918	(MULFUNC_PROLOGUE) Fix regexps so all functions get AC_DEFINE'd.
28919	(PROLOGUE) Ditto (native copyi and copyd were unused in gmp 3).
28920	(KARATSUBA_SQR_THRESHOLD) Copy from gmp-mparam.h into config.m4.
28921	(AC_OUTPUT) Add tune/Makefile, mpn/tests/Makefile.
28922
28923	* Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr.
28924	(SUBDIRS): Add tune, reorder directories.
28925	(MPZ_OBJECTS): Add mpz/mul_si.lo.
28926	(libmp_la_SOURCES): Use this for top-level objects, not .lo's.
28927	* ansi2knr.c, ansi2knr.1: New files, provided by automake.
28928
28929	* mpn/x86/aors_n.asm: Convert add_n.S and sub_n.S to a
28930	multi-function aors_n.asm, no object code change.
28931	* mpn/x86/pentium/aors_n.asm: Ditto.
28932	* mpn/x86/aorsmul_1.asm: Ditto for addmul/submul.
28933	* mpn/x86/pentium/aorsmul_1.asm: Ditto.
28934
28935	* mpn/x86/lshift.asm, mpn/x86/mul_1.asm, mpn/x86/mul_basecase.asm,
28936	mpn/x86/rshift.asm: Convert from .S, no object code change.
28937	* mpn/x86/pentium/lshift.asm, mpn/x86/pentium/mul_1.asm,
28938	mpn/x86/pentium/mul_basecase.asm, mpn/x86/pentium/rshift.asm: Ditto.
28939
28940	* gmp.texi (Reporting Bugs): Itemize the list of things to include.
28941	(Miscellaneous Float Functions): Correct typo in mpf_ceil etc
28942	argument types.
28943	Change @ifinfo -> @ifnottex for benefit of makeinfo --html.
28944	Remove unnecessary @iftex's around @tex.
28945
289462000-04-22  Torbjorn Granlund  <tege@swox.com>
28947
28948	* config.guess: Generalize x86 cpu determination code.
28949	Now works on Solaris.
28950
28951	* mpz/nextprime.c: Rewrite still disabled code.
28952
28953	* configure.in: Specifically match freebsd[3-9].
28954
289552000-04-21  Torbjorn Granlund  <tege@swox.com>
28956
28957	* rand.c: Call mpz_clear for otherwise leaking mpz_t.
28958
28959	* mpz/pprime_p.c (mpz_probab_prime_p): Merge handling of negative
28960	n into code for handling small positive n.  Merge variables m and n.
28961	After dividing, simply call mpz_millerrabin.
28962	(isprime): Local variables now use attribute `long'.
28963	(mpz_millerrabin): New static function, based on code from
28964	mpz_probab_prime_p.
28965	(millerrabin): Now simple workhorse for mpz_millerrabin.
28966
289672000-04-19  Torbjorn Granlund  <tege@swox.com>
28968
28969	* gmp-impl.h: Fix parenthesis error in test for __APPLE_CC__.
28970
289712000-04-18  Linus Nordberg  <linus@swox.se>
28972
28973	* NEWS: Add info about shared libraries.  Remove reference to
28974	gmp_randinit_lc.
28975
289762000-04-17  Torbjorn Granlund  <tege@swox.com>
28977
28978	* Version 3.0 released.
28979
28980	* mpn/arm/add_n.S: New version from Robert Harley.
28981	* mpn/arm/addmul_1.S: Likewise.
28982	* mpn/arm/mul_1.S: Likewise.
28983	* mpn/arm/sub_n.S: Likewise.
28984
28985	* gmp.h (__GNU_MP_VERSION_PATCHLEVEL): Now 0.
28986
289872000-04-17  Linus Nordberg  <linus@swox.se>
28988
28989	* configure.in (hppa2.0*-*-*): Pass `+O3' to cc/c89 in 64-bit mode
28990	to avoid compiler bug.
28991	(ns32k*-*-*): Fix typo in path.  Change by Kevin.
28992	(alpha*-*-osf*): New case.  Pass assembly flags for architecture
28993	to gcc.
28994	(alpha*-*-*): Don't bother searching for cc.
28995	* configure: Regenerate.
28996
28997	* Makefile.am (EXTRA_DIST): Add `macos', `.gdbinit'.
28998	* Makefile.in: Regenerate.
28999	* mpn/Makefile.am (EXTRA_DIST): Add `m88k', `lisp'.
29000	* mpn/Makefile.in: Regenerate.
29001
290022000-04-16  Kevin Ryde  <kevin@swox.se>
29003
29004	* README: Updates, and don't duplicate the example in INSTALL.
29005	* INSTALL: Minor updates.
29006	* gmp.texi (Installing MP): Minor edits, restore CC/CFLAGS description.
29007
290082000-04-16  Linus Nordberg  <linus@swox.se>
29009
29010	* configure.in (*-*-cygwin*): Select BSD_SYNTAX to avoid
29011	.type/.size in PROLOGUE for ELF_SYNTAX.  Override ALIGN definition
29012	from x86/syntax.h.
29013	(gmp_xoptcflags_${CC}): New set of variables, indicating
29014	``exclusive optional cflags''.
29015	(most sparcs): Use gmp_xoptcflags instead of gmp_optcflags to
29016	ensure that we pass CPU type to older gcc.
29017	(CFLAGS): CFLAGS on the command line was spoiled.
29018	* configure: Regenerate.
29019
290202000-04-16  Linus Nordberg  <linus@swox.se>
29021
29022	* configure.in: Invoke AC_PROG_LIBTOOL directly.
29023
29024	* acinclude.m4 (GMP_PROG_CC_FIND): Quote source variable when
29025	setting CC64 and CFLAGS64.
29026	(GMP_PROG_CC_SELECT): Cache result.
29027	(GMP_PROG_LIBTOOL): Remove.
29028
29029	* aclocal.m4: Regenerate.
29030	* configure: Regenerate.
29031
290322000-04-16  Linus Nordberg  <linus@swox.se>
29033
29034	* tests/rand/t-rand.c (main): Add non-ANSI function declaration.
29035	Don't use `const'.
29036
290372000-04-16  Torbjorn Granlund  <tege@swox.com>
29038
29039	* mpn/generic/dump.c: Suppress output of leading zeros.
29040
29041	* mpz/inp_str.c: Fix memory leakage.
29042
29043	* mpz/tests/reuse.c (dss_func_division): Add a final 1.
29044
29045	* longlong.h (alpha count_leading_zeros): Wrap in __MPN.
29046	* mpn/alpha/cntlz.asm: Use __gmpn prefix (by means of __MPN).
29047
29048	* longlong.h (__umul_ppmm, __udiv_qrnnd): Wrap in __MPN.
29049	* mpn/alpha/udiv_qrnnd.S: Use __gmpn prefix.
29050	* mpn/hppa/udiv_qrnnd.s: Likewise.
29051	* mpn/hppa/hppa1_1/udiv_qrnnd.s: Likewise.
29052	* mpn/pa64/udiv_qrnnd.c: Likewise (by means of __MPN).
29053	* mpn/pa64/umul_ppmm.S: Likewise.
29054	* mpn/sparc32/udiv_fp.asm: Likewise (by means of MPN).
29055	* mpn/sparc32/udiv_nfp.asm: Likewise (by means of MPN).
29056	* mpn/sparc32/v8/supersparc/udiv.asm: Likewise (by means of MPN).
29057
29058	* mpn/generic/tdiv_qr.c: Work around gcc 2.7.2.3 i386 register handling
29059	bug.
29060
29061	* mpn/generic/tdiv_qr.c: Use udiv_qrnnd instead of mpn_divrem_1
29062	when computing appropriate quotient; mpn_divrem_1 writes too
29063	many quotient limbs.
29064
29065	* mpn/asm-defs.m4: invert_normalized_limb => invert_limb.
29066	* mpn/alpha/invert_limb.asm: mpn_invert_normalized_limb =>
29067	mpn_invert_limb.
29068	* gmp.h: Likewise.
29069	* gmp-impl.h (alpha specific): invert_normalized_limb => invert_limb;
29070	wrap with __MPN.
29071	* longlong.h (alpha udiv_qrnnd): Likewise.
29072
290732000-04-16  Kevin Ryde  <kevin@swox.se>
29074
29075	* gmp.h (mp_set_memory_functions,mp_bits_per_limb,gmp_errno): Add
29076	#defines so the library symbols are __gmp_*.
29077	* errno.c: Include gmp.h.
29078	* gmp-impl.h (_mp_allocate_func,etc): Add #defines to __gmp_*.
29079	(__clz_tab): New #define to __MPN(clz_tab).
29080	* stack-alloc.c (__gmp_allocate_func,etc): Change from _mp_*.
29081
29082	* Makefile.am (libmp_la_DEPENDENCIES): Add some mpz files needed
29083	for new mpz_powm (pow in libmp).
29084	(EXTRA_DIST): Add projects directory.
29085
29086	* mpn/*: Change __mpn to __gmpn.
29087	* gmp.h (__MPN): Ditto.
29088	* stack_alloc.c,stack-alloc.h: Change __tmp to __gmp_tmp.
29089
29090	* mpn/generic/sb_divrem_mn.c (mpn_sb_divrem_mn): Avoid gcc 2.7.2.3
29091	i386 register handling bug (same as previously in mpn_divrem_classic).
29092
29093	* mpn/generic/divrem.c: Now contains mpn_divrem, which is not an
29094	internal function, so remove warning comment.
29095
29096	* gmp.texi (Compatibility with Version 2.0.x): Source level only.
29097
290982000-04-16  Linus Nordberg  <linus@swox.se>
29099
29100	* configure.in (hppa1.0*): Prefer c89 to cc.
29101	* configure: Regenerate.
29102
291032000-04-15  Linus Nordberg  <linus@swox.se>
29104
29105	* configure.in: If `mpn_path' is set by user on configure command
29106	line, use that as path.
29107	* configure: Regenerate.
29108
291092000-04-15  Linus Nordberg  <linus@swox.se>
29110
29111	* configure.in (hppa2.0*): Use path "hppa/hppa1_1 hppa" if no
29112	64-bit compiler was found.
29113	* configure: Regenerate.
29114
291152000-04-15  Linus Nordberg  <linus@swox.se>
29116
29117	* configure.in: Honor `CC' and `CFLAGS' set by user on configure
29118	command line.
29119	* acinclude.m4: (GMP_PROG_CC_SELECT): Set CFLAGS if not set already.
29120	* aclocal.m4: Regenerate.
29121	* configure: Regenerate.
29122
291232000-04-15  Linus Nordberg  <linus@swox.se>
29124
29125	* acinclude.m4 (GMP_PROG_CC_FIND): Remove debug output.  Remove
29126	commented out code.
29127	* aclocal.m4: Regenerate.
29128	* configure: Regenerate.
29129
29130	* configure.in: Make all `-mcpu' options to gcc optional.
29131	* configure: Regenerate.
29132
29133	* tests/rand/Makefile.am: Don't do anything for target 'all'.
29134	* tests/rand/Makefile.in: Regenerate.
29135
291362000-04-15  Kevin Ryde  <kevin@swox.se>
29137
29138	* README: Small updates.
29139	* NEWS: Add some things about 3.0.
29140
29141	* mpz/Makefile.am (EXTRA_DIST): Remove dmincl.c.
29142
29143	* Makefile.am: Use -version-info on libraries, not -release.
29144
29145	* mpz/tdiv_qr.c: Add mdiv function header #ifdef BERKELEY_MP.
29146	* mpbsd/Makefile.am: Use mpz/tdiv_qr.c, not mdiv.c.
29147	* Makefile.am (MPBSD_OBJECTS): Change mdiv.lo to tdiv_qr.lo.
29148	(libmp_la_DEPENDENCIES): Add mp_clz_tab.lo.
29149	* mpbsd/mdiv.c: Remove file.
29150
29151	* config/mt-linux,mt-m68k,mt-m88110,mt-ppc,mt-ppc64-aix,mt-pwr,
29152	mt-sprc8-gcc,mt-sprc9-gcc,mt-supspc-gcc,mt-vax,mt-x86,
29153	mpn/config/mt-pa2hpux,mt-sprc9,t-oldgas,t-ppc-aix,t-pwr-aix:
29154	Remove configure fragments not used since change to autoconf.
29155
29156	* mpn/generic/bz_divrem_n.c,sb_divrem_mn.c: Add comment that
29157	internal functions are changeable and shouldn't be used directly.
29158
291592000-04-15  Linus Nordberg  <linus@swox.se>
29160
29161	* configure.in: Remove debug output.
29162	* configure: Regenerate.
29163
291642000-04-15  Torbjorn Granlund  <tege@swox.com>
29165
29166	* mpn/generic/tdiv_qr.c: Don't use alloca directly.
29167
29168	* mpz/tdiv_qr.c: Fix typo.
29169	* mpz/tdiv_r.c: Fix typo.
29170	* mpz/tdiv_q.c: Fix typo.
29171
29172	* configure.in: Disable -march=pentiumpro due to apparent compiler
29173	problems.
29174
29175	* mpz/powm.c: Replace with new code from Paul Zimmermann.
29176
29177	* mpz/tdiv_q.c: Remove debug code.
29178
29179	* mpn/generic/divrem.c: Remove C++ style `//' commented-out code.
29180	* mpn/generic/sb_divrem_mn.c: Likewise.
29181
291822000-04-14  Torbjorn Granlund  <tege@swox.com>
29183
29184	* mpz/cdiv_q.c: Change temp allocation for new requirements of
29185	mpz_tdiv_qr.
29186	* mpz/fdiv_q.c: Likewise.
29187
29188	* mpn/sparc64/gmp-mparam.h: Set up parameters for TOOM3.
29189
29190	* mpz/dmincl.c: Delete file.
29191	* mpz/tdiv_qr.c: Rewrite using mpn_tdiv_qr.
29192	* mpz/tdiv_r.c: Likewise.
29193	* mpz/tdiv_q.c: Likewise.
29194
29195	* mpn/generic/tdiv_qr.c: New file.
29196	* mpn/generic/bz_divrem_n.c: New file.
29197	* mpn/generic/sb_divrem_mn.c: New file.
29198
29199	* gmp-impl.h (MPZ_REALLOC): New macro.
29200	(mpn_sb_divrem_mn): Declare.
29201	(mpn_bz_divrem_n): Declare.
29202	(mpn_tdiv_qr): Declare.
29203
29204	* configure.in (gmp_mpn_functions): Delete divrem_newt and divrem_1n;
29205	add tdiv_qr, bz_divrem_n, and sb_divrem_mn.
29206	* mpn/generic/divrem_newt.c: Delete file.
29207	* mpn/generic/divrem_1n.c: Delete file.
29208
29209	* gmp.h (mpn_divrem_newton): Remove declaration.
29210	(mpn_divrem_classic): Remove declaration.
29211
29212	* gmp.h (mpn_divrem): Remove function definition.
29213	* mpn/generic/divrem.c: Replace mpn_divrem_classic with a
29214	mpn_divrem wrapper.
29215
292162000-04-14  Kevin Ryde  <kevin@swox.se>
29217
29218	* mpf/dump.c, mpz/dump.c, mpn/generic/dump.c,
29219	mpn/generic/divrem.c, mpn/generic/divrem_1n.c,
29220	mpn/generic/divrem_2.c, mpn/generic/divrem_newt.c,
29221	mpn/generic/mul.c, mpn/generic/mul_basecase.c,
29222	mpn/generic/mul_n.c, mpn/generic/sqr_basecase.c,
29223	mpn/generic/udiv_w_sdiv.c: Add comment that internal functions are
29224	changeable and shouldn't be used directly.
29225
29226	* mpq/div.c: Use DIVIDE_BY_ZERO (previously didn't get an
29227	exception on zero divisor).
29228
29229	* mpf/tests/t-get_d.c, mpz/tests/reuse.c: Add K&R function
29230	definitions.
29231	* mpz/tests/t-2exp.c: Don't use ANSI-ism 2ul.
29232
29233	* gmp.texi (Installing MP): Build problem notes for GSYM_PREFIX
29234	and ranlib on native SunOS.
29235	Particular systems notes about AIX and HPPA shared libraries
29236	disabled.
29237	(MP Basics): Add that undocumented things shouldn't be used.
29238	(Introduction to MP): Add to CPUs listed.
29239
29240	* acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): Don't depend on C
29241	having "void".
29242
292432000-04-13  Linus Nordberg  <linus@swox.se>
29244
29245	* mpn/pa64/udiv_qrnnd.c (__udiv_qrnnd64): Add K&R function
29246	definition.
29247
29248	* configure.in: Disable shared libraries for hppa*.
29249	(mips-sgi-irix6.*): Fix flags for 64-bit gcc.
29250	(hppa2.0*-*-*): Prefer c89 to cc.
29251	* configure: Regenerate.
29252
29253	* gmp.h (gmp_randalg_t): Remove comma after last element.
29254
29255	* tests/rand/t-rand.c: Add copyright notice.
29256
292572000-04-13  Kevin Ryde  <kevin@swox.se>
29258
29259	* mpn/generic/mul_n.c, mpn/generic/gcdext.c, mpz/nextprime.c,
29260	mpz/remove.c, mpz/root.c: Add K&R function definitions.
29261	* mpz/rrandomb.c: Fix typo in K&R part.
29262	* stack-alloc.c: Add K&R style function pointer declarations.
29263
29264	* mpz/root.c: Use SQRT_OF_NEGATIVE on even roots of negatives.
29265	Use DIVIDE_BY_ZERO on a "zero'th" root.
29266
29267	* configure: Regenerate with autoconf backpatched to fix --srcdir
29268	absolute path wildcards that bash doesn't like, change by Linus.
29269
29270	* gmp.texi (Integer Arithmetic): Document mpz_nextprime.
29271	(Miscellaneous Integer Functions): Fix mpz_fits_* formatting.
29272	(Installing MP): Comment-out CC and CFLAGS description.
29273
292742000-04-13  Linus Nordberg  <linus@swox.se>
29275
29276	* rand.c (gmp_randinit): Don't combine va_alist with ordinary
29277	arguments for non STDC.
29278
292792000-04-13  Torbjorn Granlund  <tege@swox.com>
29280
29281	* mpz/nextprime.c: Use proper names of new random types and functions.
29282
29283	* mpz/rrandomb.c: New file.
29284	* mpz/Makefile.am: List it.
29285	* mpz/Makefile.in: Regenerate.
29286	* Makefile.am: Here too.
29287	* Makefile.in: Regenerate.
29288	* gmp.h: Declare mpz_rrandomb.
29289
292902000-04-12  Linus Nordberg  <linus@swox.se>
29291
29292	* Makefile.am, demos/Makefile.am, mpbsd/Makefile.am,
29293	mpbsd/tests/Makefile.am, mpf/Makefile.am, mpf/tests/Makefile.am,
29294	mpn/Makefile.am, mpq/Makefile.am, mpq/tests/Makefile.am,
29295	mpz/Makefile.am, mpz/tests/Makefile.am, tests/Makefile.am,
29296	tests/rand/Makefile.am (AUTOMAKE_OPTIONS): Add 'no-dependencies'.
29297
29298	* Makefile.in, demos/Makefile.in, mpbsd/Makefile.in,
29299	mpbsd/tests/Makefile.in, mpf/Makefile.in, mpf/tests/Makefile.in,
29300	mpn/Makefile.in, mpq/Makefile.in, mpq/tests/Makefile.in,
29301	mpz/Makefile.in, mpz/tests/Makefile.in, tests/Makefile.in,
29302	tests/rand/Makefile.in: Regenerate.
29303
293042000-04-12  Linus Nordberg  <linus@swox.se>
29305
29306	* randlc.c (gmp_randinit_lc): Disable function.
29307	* gmp.texi (Random State Initialization): Remove gmp_randinit_lc.
29308
29309	* acinclude.m4 (GMP_CHECK_CC_64BIT): Compiling an empty main
29310	successfully with `-n32' will have to suffice on irix6.
29311	* aclocal.m4: Regenerate.
29312
29313	* configure.in (sparc): Don't pass -D_LONG_LONG_LIMB to compiler.
29314	(mips-sgi-irix6.*): Use compiler option `-n32' rather than `-64'
29315	for 64-bit `cc'.  Add options for gcc.
29316	* configure: Regenerate.
29317
29318	* mpf/urandomb.c (mpf_urandomb): Add third parameter 'nbits'.  If
29319	'nbits' doesn't make even limbs, shift up result before
29320	normalizing.
29321
29322	* gmp.h (mpf_urandomb): Add parameter to prototype.
29323
29324	* mpf/urandom.c: Rename file to ...
29325	* mpf/urandomb.c: ... this.
29326	* Makefile.am (MPF_OBJECTS): Change urandom.lo --> urandomb.lo.
29327	* Makefile.in: Regenerate.
29328	* mpf/Makefile.am (libmpf_la_SOURCES): Change urandom.c --> urandomb.c.
29329	* mpf/Makefile.in: Regenerate.
29330
29331	* config.in: Regenerate for HAVE_DECL_OPTARG.
29332
29333	* randraw.c (_gmp_rand): Fix bug with _LONG_LONG_LIMB.
29334	(lc): Change return type.
29335	Use one temporary storage instead of two.
29336	Handle seed of size 0.
29337	Avoid modulus operation in some cases.
29338	Abort if M is not a power of 2.
29339	Fix bug with 64-bit limbs.
29340	Fix bug with small seed, small A and large M.
29341
29342	* tests/rand/gen.c (main): Include gmp.h.  Remove macros MIN, MAX.  Add
29343	option '-q'.  Don't demand argument N.  Change parameters in call
29344	to mpf_urandomb.
29345
29346	* tests/rand/t-rand.c: New file for testing random number generation.
29347
29348	* tests/rand/Makefile.am: Run t-rand for 'make check'.
29349	(test, bigtest): Rename to manual-test, manual-bigtest.
29350	* tests/rand/Makefile.in: Regenerate.
29351
293522000-04-12  Kevin Ryde  <kevin@swox.se>
29353
29354	* gmp-impl.h: Include config.h before TMP_ALLOC, so
29355	--disable-alloca works.
29356
29357	* mpbsd/Makefile.am: Don't recompile top-level sources here.
29358	* Makefile.am (libmp_la_DEPENDENCIES): Put objects here instead,
29359	add errno.lo and stack-alloc.lo.
29360
29361	* mpn/asm-defs.m4: Add a test and message for the unsuitable SunOS m4.
29362	* gmp.texi (Installing MP): Update note on SunOS m4 failure.
29363
29364	* acconfig.h: Add copyright notice using @TOP@.
29365
29366	* stack-alloc.c: Use _mp_allocate_func, not malloc.
29367	* gmp.texi (Installing MP): Note this under --disable-alloca.
29368
29369	* gmp.texi (Comparison Functions): mpz_cmp_abs => mpz_cmpabs.
29370	(Integer Arithmetic): mpz_prime_p not yet implemented, comment out.
29371	(Float Arithmetic): mpf_pow_ui now implemented, uncomment-out.
29372	(Miscellaneous Float Functions): Add mpf_ceil, mpf_floor, mpf_trunc.
29373	(Low-level Functions): Add mpn_random2, with mpn_random.
29374
29375	* mpn/m68k/mc68020/udiv.S: Rename from udiv.s.
29376	* mpn/m68k/mc68020/umul.S: Ditto.
29377
29378	* mpn/alpha/umul.asm: Rename from umul.s, remove .file and
29379	compiler identifiers.
29380
29381	* mpn/powerpc32/syntax.h: Removed, no longer used.
29382
29383	* mpn/a29k/udiv.s: Remove .file and compiler identifiers.
29384	* mpn/a29k/umul.s: Ditto.
29385
29386	* mpn/tests/ref.c: Use WANT_ASSERT.
29387	* mpn/tests/ref.h: Use _PROTO.
29388
29389	* mpbsd/configure.in: Removed, no longer required.
29390
29391	* mpf/div.c: Use DIVIDE_BY_ZERO.
29392	* mpf/div_ui.c: Ditto.
29393	* mpf/ui_div.c: Ditto.
29394	* mpq/inv.c: Ditto.
29395	* mpf/sqrt.c: Use SQRT_OF_NEGATIVE.
29396	* mpz/sqrt.c: Ditto.
29397	* mpz/sqrtrem.c: Ditto.
29398
29399	* gmp-impl.h (GMP_ERROR,SQRT_OF_NEGATIVE): New macros.
29400	(DIVIDE_BY_ZERO): Use GMP_ERROR.
29401	(__mp_bases): #define to __MPN(mp_bases).
29402
294032000-04-11  Linus Nordberg  <linus@swox.se>
29404
29405	* tests/rand/stat.c (main): Initialize `l1runs' at declaration.
29406
294072000-04-11  Kevin Ryde  <kevin@swox.se>
29408
29409	* mpz/fib_ui.c: Add K&R function definitions.
29410
29411	* mpbsd/tests/Makefile.am (TESTS): Add a dummy test to avoid a
29412	shell problem with an empty "for tst in $(TESTS) ; ...".
29413	* mpbsd/tests/dummy.c: New file.
29414
294152000-04-10  Torbjorn Granlund  <tege@swox.com>
29416
29417	* mpz/bin_uiui.c: Delete several unused variables.
29418	Add copyright notice.
29419	* mpz/bin_ui.c: Add copyright notice.
29420
29421	* longlong.h: Declare __count_leading_zeros for alpha.
29422
294232000-04-10  Linus Nordberg  <linus@swox.se>
29424
29425	* rand.c (gmp_randinit): Change parameter list to (rstate, alg, ...).
29426	* gmp.h: Change prototype accordingly.
29427	* mpz/pprime_p.c (millerrabin): Change call accordingly.
29428
29429	* configure.in: Check for `optarg'.
29430	* configure: Regenerate.
29431
29432	* mpn/Makefile.am: Remove incorrect comment.
29433	* mpn/Makefile.in: Regenerate.
29434
29435	* gmp.h: Rename most of the random number functions, structs and some
29436	of the struct members.
29437	* rand.c (gmp_randinit): Likewise.
29438	* randclr.c (gmp_randclear): Likewise.
29439	* randlc.c (gmp_randinit_lc): Likewise.
29440	* randlc2x.c (gmp_randinit_lc_2exp): Likewise.
29441	* randraw.c (lc): Likewise.
29442	(_gmp_rand_getraw): Likewise.
29443	* randsd.c (gmp_randseed): Likewise.
29444	* randsdui.c (gmp_randseed_ui): Likewise.
29445	* gmp.texi: Likewise.
29446
29447	* gmp.texi: Use three hyphens for a dash.
29448	(Low-level Functions): Remove documentation for gmp_rand_getraw.
29449	(Random Number Functions): Add info on where to find documentation
29450	on the random number functions.
29451
29452	* tests/rand/Makefile.am (test, bigtest): Quote argument to grep.
29453	* tests/rand/Makefile.in: Regenerate.
29454
29455	* tests/rand/gen.c: Declare optarg, optind, opterr if not already
29456	declared.
29457	(main): Use new names for the random stuff.
29458	(main): Don't use strtoul() if we don't have it.  Use strtol()
29459	instead, if we have it.  Otherwise, use atoi().
29460	(main): Use srandom/srandomdev for __FreeBSD__ only.
29461	(main): Use new parameter order to gmp_randinit().
29462
29463	* tests/rand/stat.c: Declare optarg, optind, opterr if not already
29464	declared.
29465
294662000-04-10  Torbjorn Granlund  <tege@swox.com>
29467
29468	* mpz/pprime_p.c: Pass 0L for mpz_scan1.  mpz_mmod => mpz_mod.
29469	(millerrabin): Use new random interface.
29470	(millerrabin): ... and don't forget to call gmp_randclear.
29471
29472	* mpz/nextprime.c: New file.
29473	* gmp.h: Declare mpz_nextprime.
29474	* mpz/Makefile.am: List nextprime.c.
29475	* mpz/Makefile.in: Regenerate.
29476	* Makefile.am: List mpz/nextprime.lo.
29477	* Makefile.in: Regenerate.
29478
294792000-04-10  Kevin Ryde  <kevin@swox.se>
29480
29481	* move-if-change, mpz/tests/move-if-change, mpq/tests/move-if-change,
29482	mpf/tests/move-if-change: Remove, no longer used.
29483
29484	* Makefile.am (SUBDIRS): Add tests, demos, mpbsd.
29485	(libmp.la): New target, conditional on WANT_MPBSD.
29486	(libgmp_la_LIBADD): Add -lm.
29487	(AUTOMAKE_OPTIONS): Add check-news.
29488	(include_HEADERS): Setup to install gmp.h and possibly mp.h.
29489	(DISTCLEANFILES): Add generated files.
29490	(check): Remove explicit target (now uses check-recursive).
29491
29492	* configure.in: Use AM_CONFIG_HEADER.
29493	Add --enable-mpbsd setting automake conditional WANT_MPBSD.
29494	Output demos/Makefile, mpbsd/Makefile and mpbsd/tests/Makefile.
29495
29496	* mpz/Makefile.am: Add SUBDIRS=tests, shorten INCLUDES since now
29497	using AM_CONFIG_HEADER.
29498	* mpq/Makefile.am: Ditto.
29499	* mpf/Makefile.am: Ditto, and add DISTCLEANFILES.
29500	* mpn/Makefile.am: Shorten INCLUDES, amend some comments.
29501	* mpz/tests/Makefile.am: Use TESTS and $(top_builddir).
29502	* mpf/tests/Makefile.am: Ditto.
29503	* mpq/tests/Makefile.am: Ditto.
29504	* demos/Makefile.am: New file.
29505
29506	* mpbsd/Makefile.am: New file, derived from old mpbsd/Makefile.in.
29507	* mpbsd/Makefile.in: Now generated from Makefile.am.
29508	* mpbsd/realloc.c: Removed, use mpz/realloc.c instead.
29509	* mpbsd/tests/Makefile.am: New file.
29510	* mpbsd/tests/Makefile.in: New file, generated from Makefile.am.
29511	* mpbsd/tests/allfuns.c: New file.
29512
29513	* gmp.texi (Top): Use @ifnottex, to help makeinfo --html.
29514	(Installing MP): Describe --enable-mpbsd and demo programs.
29515
29516	* tests/rand/statlib.c: mpz_cmp_abs => mpz_cmpabs.
29517
29518	* tests/rand/Makefile.am (LDADD): Don't need -lm (now in libgmp.la).
29519	(EXTRA_PROGRAMS): Not noinst_PROGRAMS.
29520	(INCLUDES): Shorten to -I$(top_srcdir) now using AM_CONFIG_HEADER.
29521
295222000-04-09  Torbjorn Granlund  <tege@swox.com>
29523
29524	* mpz/urandomm.c: Get type of count right.
29525	Simplify computation of nbits.
29526
295272000-04-08  Torbjorn Granlund  <tege@swox.com>
29528
29529	* mpz/urandomb.c: Fix reallocation condition.
29530	Simplify size computation.
29531
295322000-04-08  Linus Nordberg  <linus@swox.se>
29533
29534	* acinclude.m4 (GMP_CHECK_CC_64BIT): Add special handling for
29535	HPUX.
29536	(GMP_CHECK_ASM_W32): Ditto.
29537	* aclocal.m4: Regenerate.
29538
29539	* mpn/Makefile.am: Use $(CCAS) for assembling.
29540	(.asm.obj): Add rule.
29541	* mpn/Makefile.in: Regenerate.
29542
29543	* gmp.texi (Miscellaneous Integer Functions): Fix typos.
29544
29545	* configure.in: Never pass `-h' to grep.
29546	(mips-sgi-irix6.[2-9]*): Try to find 64-bit compiler.
29547	(hppa1.0*-*-*): New flag for cc.
29548	(hppa2.0*-*-*): Try to find 64-bit compiler.  Chose path, set
29549	CCAS.
29550	* configure: Regenerate.
29551
295522000-04-08  Torbjorn Granlund  <tege@swox.com>
29553
29554	* mpz/bin_ui.c: Don't depend on ANSI C features.
29555	* mpz/bin_uiui.c: Likewise.
29556
29557	* Makefile.am (MPZ_OBJECTS): mpz/cmp_abs* => mpz/cmpabs*.
29558	(MPQ_OBJECTS): Add mpq/set_d.lo.
29559	(MPZ_OBJECTS): Add mpz/fits*.lo.
29560	* Makefile.in: Regenerate.
29561
29562	* mpz/cmpabs.c: New name for mpz/cmp_abs.c.
29563	* mpz/cmpabs_ui.c: New name for mpz/cmp_abs_ui.c.
29564	* mpz/Makefile.am: Corresponding changes.
29565	* mpz/Makefile.in: Regenerate.
29566	* gmp.h: mpz_cmp_abs* => mpz_cmpabs*.
29567
29568	* mpz/addmul_ui.c (mpn_neg1): Don't depend on ANSI C features.
29569
29570	* mpz/invert.c: Use TMP_MARK since we invoke MPZ_TMP_INIT.
29571
29572	* gmp.h (mpq_set_d): Declare correctly.
29573	(mpz_root): Use _PROTO.
29574	(mpz_remove): Use _PROTO.
29575	(mpf_pow_iu): Use _PROTO.
29576
29577	* mpn/asm-defs.m4 (MPN_PREFIX): Revert previous change.
29578	* gmp.h (__MPN): Revert previous change.
29579
29580	* mpz/perfpow.c: De-ANSI-fy.  Add copyright notice.
29581
29582	* mpz/set_d.c: Misc cleanups.
29583
29584	* mpq/set_d: New file.
29585	* gmp.h: Declare mpq_set_d.
29586	* mpq/Makefile.am: List set_d.c.
29587	* mpq/Makefile.in: Regenerate.
29588
295892000-04-07  Torbjorn Granlund  <tege@swox.com>
29590
29591	* mpz/fits_sint_p.c: New file.
29592	* mpz/fits_slong_p.c: New file.
29593	* mpz/fits_sshort_p.c: New file.
29594	* mpz/fits_uint_p.c: New file.
29595	* mpz/fits_ulong_p.c: New file.
29596	* mpz/fits_ushort_p.c: New file.
29597	* gmp.h: Declare mpz_fits_*.
29598	* mpz/Makefile.am: List fits_* files.
29599	* mpz/Makefile.in: Regenerate.
29600
296012000-04-06  Kevin Ryde  <kevin@swox.se>
29602
29603	* gmp.texi (Installing MP): Add known build problem SunOS 4.1.4 m4
29604	failure.
29605
29606	* mpn/x86/pentium/gmp-mparam.h: Tune thresholds.
29607	* mpn/x86/p6/gmp-mparam.h: Ditto.
29608	* mpn/x86/k6/gmp-mparam.h: Tune thresholds, add UMUL_TIME, UDIV_TIME.
29609	* mpn/x86/k7/gmp-mparam.h: Tune thresholds, amend UMUL_TIME.
29610
29611	* mpn/generic/mul_n.c (mpn_kara_mul_n): Add an ASSERT.
29612	(mpn_kara_sqr_n): Add an ASSERT, use KARATSUBA_SQR_THRESHOLD.
29613	(mpn_toom3_sqr_n): Eliminate second evaluate3.
29614
29615	* gmp-impl.h (mpn_com_n,MPN_LOGOPS_N_INLINE): Don't allow size==0.
29616	(tune_mul_threshold,tune_sqr_threshold): Conditionalize
29617	declarations on TUNE_PROGRAM_BUILD.
29618
29619	* mpn/generic/sqr_basecase.c: Add an assert.
29620
296212000-04-05  Torbjorn Granlund  <tege@swox.com>
29622
29623	* gmp.h, mpn/asm-defs.m4: List the same functions for __MPN, but
29624	leave some commented out.
29625
29626	* gmp-impl.h (MPN_LOGOPS_N_INLINE): Optimize.
29627	(mpn_com_n): Optimize.
29628
29629	* gmp.h (__MPN): Make it use __gmpn instead of __mpn for consistency.
29630	* mpn/asm-defs.m4 (MPN_PREFIX): Likewise.
29631
29632	* gmp.h (GMP_ERROR_ALLOCATE): New errcode.
29633
29634	* gmp-impl.h (MPN_MUL_N_RECURSE): Delete.
29635	(MPN_SQR_RECURSE): Delete.
29636
29637	* gmp-impl.h (TARGET_REGISTER_STARVED): New define.
29638
29639	* gmp-impl.h (mpn_kara_sqr_n): Remap with __MPN.
29640	(mpn_toom3_sqr_n): Likewise.
29641	(mpn_kara_mul_n): Likewise.
29642	(mpn_toom3_mul_n): Likewise.
29643	(mpn_reciprocal): Likewise.
29644
29645	* gmp-impl.h (__gmpn_mul_n): Remove declaration.
29646	(__gmpn_sqr): Likewise.
29647	* gmp.h (mpn_sqr_n): Declare/remap.
29648	* mpn/generic/mul.c (mpn_sqr_n): New name for mpn_sqr.
29649
29650	* gmp.h (mpn_udiv_w_sdiv): Move __MPN remap from here...
29651	* gmp-impl.h: ...to here.
29652
296532000-04-05  Linus Nordberg  <linus@swox.se>
29654
29655	* gmp.texi (Top): Add `Random Number Functions' to menu.
29656	(Introduction to MP): Fix typo.
29657	(MP Basics): Create menu for all sections.  Move `Random Number
29658	Functions' to its own chapter.  Add nodes for all sections.
29659	(Function Classes): Mention random generation functions under
29660	miscellaneous.
29661	(Miscellaneous Integer Functions): Update mpz_urandomb,
29662	mpz_urandomm.
29663	(Low-level Functions): Remove mpn_rawrandom.
29664	(Random State Initialization): Update.
29665
29666	* mpf/urandom.c (mpf_urandomb): Remove SIZE parameter.  Normalize
29667	result correctly.
29668
29669	* gmp.h (mpf_urandomb): Remove SIZE parameter.
29670
29671	* randraw.c (gmp_rand_getraw): Handle the case where (1) the LC
29672	scheme doesn't generate even limbs and (2) more than one LC
29673	invocation is necessary to produce the requested number of bits.
29674
296752000-04-05  Torbjorn Granlund  <tege@swox.com>
29676
29677	* mpn/generic/mul_n.c (INVERSE_3): New name for THIRD, define for
29678	any BITS_PER_MP_LIMB.
29679	(MP_LIMB_T_MAX): New.
29680	(mpn_divexact3_n): Remove.
29681	(interpolate3): Use mpn_divexact_by3 instead of mpn_divexact3_n.
29682
296832000-04-05  Kevin Ryde  <kevin@swox.se>
29684
29685	* gmp-impl.h (KARATSUBA_MUL_THRESHOLD<2): Remove cpp test.
29686	(tune_mul_threshold,tune_sqr_threshold): Add declarations, used in
29687	development only.
29688
29689	* mpn/x86/k7/sqr_basecase.asm: New file, only a copy of k6 for now.
29690
296912000-04-04  Torbjorn Granlund  <tege@swox.com>
29692
29693	* gmp-impl.h (TOOM3_MUL_THRESHOLD): Provide default.
29694	(TOOM3_SQR_THRESHOLD): Provide default.
29695
29696	* mpn/generic/mul_n.c: Rewrite (mostly by Robert Harley).
29697	* mpn/generic/mul.c: Rewrite (mostly by Robert Harley).
29698
29699	* configure.in (sparcv9 64-bit OS): Set extra_functions.
29700
297012000-04-04  Linus Nordberg  <linus@swox.se>
29702
29703	* mpn/generic/rawrandom.c: Remove file and replace with randraw.c
29704	on top level.
29705	(mpn_rawrandom): Rename to gmp_rand_getraw.
29706
29707	* randraw.c: New file; essentially a copy of
29708	mpn/generic/rawrandom.c.
29709	(gmp_rand_getraw): New function (formerly known as mpn_rawrandom).
29710
29711	* mpz/urandomb.c (mpz_urandomb): Change mpn_rawrandom -->
29712	gmp_rand_getraw.
29713	* mpz/urandomm.c (mpz_urandomb): Ditto.
29714	* mpf/urandom.c (mpf_urandomb): Ditto.
29715
29716	* gmp.h (gmp_rand_getraw): Add function prototype.
29717	(mpn_rawrandom): Remove function prototype.
29718
29719	* Makefile.am (libgmp_la_SOURCES): Add randraw.c.
29720	* Makefile.in: Regenerate.
29721
29722	* configure.in (gmp_mpn_functions): Remove rawrandom.
29723	* configure: Regenerate.
29724
297252000-04-04  Linus Nordberg  <linus@swox.se>
29726
29727	* gmp.h (GMP_ERROR enum): Remove comma after last enumeration
29728	since the AIX compiler (xlc) doesn't like that.
29729
29730	* randlc.c (gmp_rand_init_lc): Allocate enough space for seed to
29731	hold any upcoming seed.
29732	* randlc2x.c (gmp_rand_init_lc_2exp): Likewise.
29733
29734	* mpn/generic/rawrandom.c: Remove debugging code.
29735	(mpn_lc): Don't reallocate seed.
29736
29737	* mpz/urandomm.c (mpz_urandomm): Implement function.
29738
29739	* mpz/urandomb.c (mpz_urandomb): Fix typo in function definition.
29740
297412000-04-04  Kevin Ryde  <kevin@swox.se>
29742
29743	* make.bat: Removed (no longer works, no longer supported).
29744	* mpn/msdos/asm-syntax.h: Removed (was used only by make.bat).
29745
297462000-04-03  Torbjorn Granlund  <tege@swox.com>
29747
29748	* mpn/generic/brandom.c: New file, replacing random2.
29749
297502000-04-02  Torbjorn Granlund  <tege@swox.com>
29751
29752	* mpn/sparc32/v9/submul_1.asm: Change some carry-form instructions
29753	into their plain counterparts.
29754
29755	* mpn/sparc64/copyi.asm: Avoid executing ALIGN.
29756
29757	* mpn/sparc64/mul_1.asm: Handle overlap of rp/sp.
29758	* mpn/sparc64/addmul_1.asm: Likewise.
29759	* mpn/sparc64/submul_1.asm: Likewise.
29760
297612000-04-01  Linus Nordberg  <linus@swox.se>
29762
29763	* gmp.h: Fix function prototypes for randomization functions.
29764	(__gmp_rand_lc_scheme_struct): Replace `m' with `m2exp'. Remove
29765	unused `bits'.
29766	(__gmp_rand_data_lc): Add `m2exp' as another way of representing
29767	the modulus.
29768	(__gmp_rand_state_struct): Remove unused `size'.
29769
29770	* rand.c (__gmp_rand_scheme): Use better multipliers.  Remove test
29771	schemes.  Replace `m' with `m2exp'.
29772	(gmp_rand_init): Change parameters and return type.  Use `m2exp'
29773	instead of `m'.  Set `gmp_errno' on error.  Disable BBS algorithm.
29774
29775	* randlc.c (gmp_rand_init_lc): Don't use malloc().  Change
29776	parameters.
29777
29778	* randclr.c (gmp_rand_clear): Don't use free().  Disable BBS
29779	algorithm.  Set `gmp_errno' on error.
29780
29781	* randlc2x.c (gmp_rand_init_lc_2exp): New function.
29782	* randsd.c (gmp_rand_seed): New function.
29783	* randsdui.c (gmp_rand_seed_ui): New function.
29784	* randlcui.c: Remove unused file.
29785
29786	* mpn/generic/rawrandom.c (mpn_rawrandom): Rewrite.
29787	(mpn_lc): New static function.
29788
29789	* mpz/urandomb.c (mpz_urandomb): Use ABSIZ() instead of SIZ() for
29790	determining size of ROP.
29791
29792	* mpf/urandom.c (mpf_urandomb): Add third parameter, nbits.  (Not
29793	used yet!)
29794	Change parameter order to mpn_rawrandom().
29795
29796	* Makefile.am (libgmp_la_SOURCES): Add errno.c, randlc2x.c,
29797	randsd.c, randsdui.c.  Remove randui.c.
29798	(MPZ_OBJECTS): Rename urandom.lo --> urandomb.lo.  Add urandomm.lo.
29799	* Makefile.in: Regenerate.
29800
29801	* mpz/Makefile.am (libmpz_la_SOURCES): Change urandom.c -->
29802	urandomb.c.  Add urandomm.c.
29803	* mpz/Makefile.in: Regenerate.
29804
29805	* tests/rand/Makefile.am (noinst_PROGRAMS): Change findcl --> findlc.
29806	Add gen.static.
29807	* tests/rand/Makefile.in: Regenerate.
29808
29809	* tests/rand/gen.c (main): Add mpz_urandomm.  Add command line options
29810	`-C', `-m', extend `-a'.  Use *mp*_*rand*() with new parameters.  Call
29811	gmp_rand_seed().
29812
298132000-04-01  Kevin Ryde  <kevin@swox.se>
29814
29815	* acinclude.m4 (GMP_CHECK_ASM_DATA): Plain .data for hpux.
29816	* configure.in (CCAS): No CFLAGS, they're added when it's used.
29817	(CONFIG_SRCDIR): New define for config.m4.
29818	* mpn/sparc64/addmul_1.asm: Use it for an include().
29819	* mpn/sparc64/submul_1.asm: Ditto.
29820	* mpn/sparc64/mul_1.asm: Ditto.
29821
298222000-03-31  Linus Nordberg  <linus@swox.se>
29823
29824	* mpz/urandom.c: Rename to...
29825	* mpz/urandomb.c: ...this.
29826
29827	* mpz/urandomb.c (mpz_urandomb): Change operand order in call to
29828	mpn_rawrandom().  Use ABSIZ() instead of SIZ() when checking size
29829	of ROP.
29830
29831	* mpz/urandomm.c: New file.
29832
298332000-03-31  Kevin Ryde  <kevin@swox.se>
29834
29835	* acinclude.m4 (GMP_CHECK_ASM_MMX): Give a warning when mmx code
29836	will be omitted.
29837
298382000-03-30  Torbjorn Granlund  <tege@swox.com>
29839
29840	* mpn/sparc64/mul_1h.asm: New file.
29841	* mpn/sparc64/addmul_1h.asm: New file.
29842	* mpn/sparc64/submul_1h.asm: New file.
29843	* mpn/sparc64/mul_1.asm: Rewrite.
29844	* mpn/sparc64/addmul_1.asm: Rewrite.
29845	* mpn/sparc64/submul_1.asm: Rewrite.
29846
298472000-03-28  Torbjorn Granlund  <tege@swox.com>
29848
29849	* mpn/sparc32/v9/mul_1.asm: Fix typo in branch prediction.
29850	* mpn/sparc32/v9/addmul_1.asm: Likewise.
29851	* mpn/sparc32/v9/submul_1.asm: Likewise.
29852
298532000-03-25  Kevin Ryde  <kevin@swox.se>
29854
29855	* mpn/lisp/gmpasm-mode.el: Fix some comment detection, use custom,
29856	fontify more keywords, turn into a standalone mode.
29857
29858	* stamp-vti: New file, generated together with version.texi.
29859
29860	* acinclude.m4 (GMP_VERSION,GMP_HEADER_GETVAL): New macros.
29861	* configure.in (AM_INIT_AUTOMAKE): Use GMP_VERSION.
29862
298632000-03-24  Kevin Ryde  <kevin@swox.se>
29864
29865	* INSTALL: Updates for new configure system.
29866
29867	* configure.in: Add gmp_optcflags_gcc for the x86s, setting -mcpu
29868	and -march.
29869
298702000-03-23  Torbjorn Granlund  <tege@swox.com>
29871
29872	* demos/pexpr.c (mpz_eval_expr): Properly initialize rhs/lhs
29873	for ROOT.
29874
298752000-03-23  Kevin Ryde  <kevin@swox.se>
29876
29877	* config.guess (i?86:*:*:*): Use uname -m if detection program fails.
29878
29879	* mpn/x86/README: Remove remarks on the now implemented MMX shifts.
29880	* mpn/x86/k6/README: Add speed of mpn_divexact_by3, update mpn_mul_1.
29881
29882	* gmp.texi (Installing MP): Corrections to target CPUs.
29883
29884	* version.c: Use VERSION from config.h, add copyright comment,
29885	restore "const" somehow lost.
29886
29887	* configure.in (a29k*-*-*): Fix directory name.
29888
298892000-03-22  Torbjorn Granlund  <tege@swox.com>
29890
29891	* demos/pexpr.c (op_t): Add ROOT.
29892	(fns): Add ROOT.
29893	(mpz_eval_expr): Add ROOT.
29894
29895	* mpz/root.c: Handle roots of negative numbers.
29896	Fix other border cases.
29897	Fix rare memory leakage.
29898
29899	* errno.c: New file.
29900
299012000-03-21  Torbjorn Granlund  <tege@swox.com>
29902
29903	* gmp.h (error number enum): New anonymous enum.
29904	(gmp_errno): New.
29905
29906	* gmp.h (__GNU_MP_VERSION, __GNU_MP_VERSION_MINOR): Bump for GMP 3.0.
29907
299082000-03-20  Torbjorn Granlund  <tege@swox.com>
29909
29910	* mpn/alpha/unicos.m4 (FLOAT64): New define.
29911	* mpn/alpha/default.m4 (FLOAT64): New define.
29912	* mpn/alpha/invert_limb.asm (C36): Use FLOAT64.
29913
299142000-03-21  Kevin Ryde  <kevin@swox.se>
29915
29916	* mpn/x86/k6/diveby3.asm: Tiny speedup.
29917
29918	* acinclude.m4 (GMP_CHECK_ASM_SHLDL_CL): New macro.
29919	* configure.in: Use it, set WANT_SHLDL_CL in config.m4.
29920	* mpn/x86/x86-defs.m4 (shldl,shrdl,shldw,shrdw): New macros, using
29921	WANT_SHLDL_CL.
29922	* mpn/x86/k6/mmx/lshift.asm: Use shldl macro.
29923	* mpn/x86/k7/mmx/lshift.asm: Ditto.
29924	* mpn/x86/pentium/mmx/lshift.asm: Ditto.
29925	* mpn/x86/k6/mmx/rshift.asm: Use shrdl macro.
29926	* mpn/x86/k7/mmx/rshift.asm: Ditto.
29927	* mpn/x86/pentium/mmx/rshift.asm: Ditto.
29928	* mpn/x86/README.family: Add a note about this.
29929
299302000-03-20  Linus Nordberg  <linus@swox.se>
29931
29932	* mpn/generic/rawrandom.c (mpn_rawrandom): Handle seed value of 0
29933	correctly.
29934
29935	* configure.in: Fix detection of alpha flavour.
29936	Set compiler options for `sparcv8'.
29937	* configure: Regenerate.
29938
29939	* rand.c (__gmp_rand_scheme): Clean up some.  Use slightly better
29940	multipliers.
29941
29942	* configure.in (AC_OUTPUT): Add tests/Makefile and
29943	tests/rand/Makefile.
29944
29945	* acinclude.m4 (AC_CANONICAL_BUILD): Define to
29946	`_AC_CANONICAL_BUILD' to deal with incompatibilities between
29947	Autoconf and Libtool.
29948	(AC_CHECK_TOOL_PREFIX): Likewise.
29949
29950	* Makefile.am (EXTRA_DIST): Add directory `tests'.
29951
29952	* mkinstalldirs: Update (Automake 2000-03-17).
29953	* ltconfig: Update (Libtool 2000-03-17).
29954	* ltmain.sh: Ditto.
29955
29956	* configure: Regenerate with new autoconf/-make/libtool suite.
29957	* aclocal.m4: Ditto.
29958	* config.in: Ditto.
29959	* all Makefile.in's: Ditto.
29960
299612000-03-20  Torbjorn Granlund  <tege@swox.com>
29962
29963	* demos/pexpr.c (main): Don't allow `-N' for base, require `-bN'.
29964
29965	* mpn/alpha/unicos.m4 (cvttqc): New define.
29966	* mpn/alpha/invert_limb.asm: Use new define for cvttqc.
29967
299682000-03-19  Kevin Ryde  <kevin@swox.se>
29969
29970	* mpn/x86/k6/sqr_basecase.asm: Tiny amendments for 3x3 case.
29971
29972	* gmp.texi: Use @include version.texi.
29973	Use @email and @uref.
29974	(Installing MP): Rewrite for new configure.
29975	(Low-level Functions): Add mpn_divexact_by3.
29976
29977	* configure.in (--enable-alloca): New option.
29978	* acconfig.h (USE_STACK_ALLOC): For --disable-alloca.
29979
299802000-03-18  Kent Boortz  <kent@swox.com>
29981
29982	* macos: New directory with macos port files.
29983
299842000-03-17  Torbjorn Granlund  <tege@swox.com>
29985
29986	* gmp-impl.h (union ieee_double_extract): Check _CRAYMPP.
29987
29988	* mpn/asm-defs.m4 (invert_normalized_limb): Define.
29989
29990	* mpn/alpha: Translate `.s' files to `.asm'.
29991
29992	* configure: Regenerate.
29993
29994	* mpn/alpha/invert_limb.asm: Replace dash in file name with underscore.
29995	* configure.in: Corresponding change.
29996
29997	* configure.in: Assign special "path" for alphaev6.
29998
29999	* mpn/alpha/unicos.m4: New file.
30000	* configure.in (alpha*-cray-unicos*): [This part of the change
30001	commited 2000-03-13 by linus]
30002	* mpn/alpha/default.m4: New file.
30003	* configure.in (alpha*-*-*): Use it.
30004
300052000-03-17  Kevin Ryde  <kevin@swox.se>
30006
30007	* mpn/x86/pentium/rshift.S: Use plain rcrl (not rcrl $1) for
30008	shift-by-1 case, significant speedup.
30009	* mpn/x86/pentium/README: Add shift-by-1 speed.
30010
300112000-03-16  Torbjorn Granlund  <tege@swox.com>
30012
30013	* config.guess: Handle Cray T3D/E.
30014
300152000-03-15  Kevin Ryde  <kevin@swox.se>
30016
30017	* mpn/generic/diveby3.c: New file.
30018	* mpn/x86/diveby3.asm: New file.
30019	* mpn/x86/k6/diveby3.asm: New file.
30020	* gmp.h (mpn_divexact_by3): Prototype and define.
30021	* mpn/asm-defs.m4: define_mpn(divexact_by3).
30022	* configure.in (gmp_mpn_functions): Add diveby3.
30023
30024	* mpn/x86/pentium/sqr_basecase.asm: A few better addressing modes.
30025
30026	* configure.in: Add AC_C_STRINGIZE and AC_CHECK_TYPES((void)).
30027	* gmp-impl.h (ASSERT): Use them.
30028
30029	* mpn/x86/k7/mmx/lshift.asm: New file.
30030	* mpn/x86/k7/mmx/rshift.asm: Rewrite simple loop and return value
30031	handling, add some pictures.
30032
300332000-03-14  Torbjorn Granlund  <tege@swox.com>
30034
30035	* mpn/sparc32/v8/mul_1.asm: Make PIC actually work.
30036	* mpn/sparc32/v8/addmul_1.asm: Likewise.
30037
30038	* mpn/sparc32/v8/mul_1.asm: Use m4 ifdef, not cpp #if.
30039	* mpn/sparc32/v8/addmul_1.asm: Likewise.
30040
30041	* mpn/asm-defs.m4 (C): New define for comments.
30042	* mpn/sparc32: Start comments with `C'.
30043
30044	* config.guess: Remove `SunOS 6' handling.
30045	Recognize sun4m and sun4d architectures under old SunOS.
30046
300472000-03-14  Linus Nordberg  <linus@swox.se>
30048
30049	* configure.in (gmp_srclinks): Set to list of links created by
30050	configure.
30051	* configure: Regenerate.
30052
30053	* Makefile.am (libgmp_la_LDFLAGS): Set version info.
30054	(DISTCLEANFILES): Include @gmp_srclinks@.
30055	* Makefile.in: Regenerate.
30056
300572000-03-13  Linus Nordberg  <linus@swox.se>
30058
30059	* configure.in: Remove some changequote's by quoting the strings
30060	containing `[]'.
30061	Add support for `alpha*-cray-unicos*'.
30062	AC_DEFINE `_LONG_LONG_LIMB' instead of passing it in CFLAGS.
30063	Conditionalize the assembler syntax checks.
30064	* configure: Regenerate.
30065	* config.in: Regenerate.
30066
30067	* acinclude.m4 (GMP_PROG_CCAS): Remove macro.
30068	* aclocal.m4: Regenerate.
30069
300702000-03-13  Kevin Ryde  <kevin@swox.se>
30071
30072	* mpn/x86/p6/README: New file.
30073
30074	* mpn/x86/k6/mul_1.asm: Rewrite, smaller and slightly faster.
30075
30076	* mpn/lisp/gmpasm-mode.el: Rewrite assembler comment detection and
30077	handling.
30078
30079	* configure.in: Separate mmx directories for each x86 flavour.
30080	* configure: Regenerate.
30081
300822000-03-12  Kevin Ryde  <kevin@swox.se>
30083
30084	* mpn/x86/x86-defs.m4 (ALIGN): Supplement definition from
30085	config.m4 so as to pad with nops not zeros on old gas.
30086
30087	* mpn/x86/k7/mmx/copyd.asm: Use plain emms (femms is just an alias
30088	for emms now).
30089	* mpn/x86/k7/mmx/copyi.asm: Ditto.
30090	* mpn/x86/k7/mmx/rshift.asm: Ditto.
30091	* mpn/x86/x86-defs.m4: Amend comments.
30092
30093	* mpn/x86/mod_1.asm: Add comments on speeds.
30094
30095	* mpn/x86/pentium/mmx/lshift.asm: New file.
30096	* mpn/x86/pentium/mmx/rshift.asm: New file.
30097	* mpn/x86/pentium/README: Add speeds of various routines.
30098
300992000-03-10  Linus Nordberg  <linus@swox.se>
30100
30101	* configure.in: Reorganize.
30102	Use AC_CHECK_TOOL to find `ar'.
30103	Add post-includes `regmap.m4' and `aix.m4' for AIX targets.
30104	asm-syntax.h is not needed for PPC or sparc anymore.
30105	(powerpc64-*-aix*): Compiler is always 64-bit. Use `-q64
30106	-qtune=pwr3' to xlc and `-maix64 -mpowerpc64' to gcc.  Pass `-X
30107	64' to `ar' and `nm'.
30108	(pentiummmx): Use GMP_CHECK_ASM_MMX and avoid MMX assembly path if
30109	assembler is not MMX capable.
30110	(pentium[23]): Likewise.
30111	(athlon): Likewise.
30112	(k6*): Likewise.
30113	* configure: Regenerate.
30114
30115	* acinclude.m4 (GMP_PROG_CC_WORKS): New macro.
30116	(GMP_PROG_CC_FIND): Use GMP_PROG_CC_WORKS instead of
30117	AC_TRY_COMPILER.  Make sure that the *first* working 32-bit
30118	compiler is used if no 64-bit compiler is found.
30119	(GMP_CHECK_ASM_MMX): New macro.
30120	* aclocal.m4: Regenerate.
30121
30122	* Makefile.in: Regenerate.  (CC_TEST removed.)
30123	* mpf/Makefile.in: Likewise.
30124	* mpn/Makefile.in: Likewise.
30125	* mpq/Makefile.in: Likewise.
30126	* mpz/Makefile.in: Likewise.
30127	* mpf/tests/Makefile.in: Likewise.
30128	* mpq/tests/Makefile.in: Likewise.
30129	* mpz/tests/Makefile.in: Likewise.
30130
30131	* acconfig.h (_LONG_LONG_LIMB): Add.
30132
30133	* gmp-impl.h: Include config.h only if HAVE_CONFIG_H is defined.
30134
301352000-03-09  Kevin Ryde  <kevin@swox.se>
30136
30137	* mpn/x86/pentium/mul_basecase.S: Small speedup by avoiding an AGI.
30138
30139	* mpn/x86/k7/mmx/copyd.asm: Tiny speedup by avoiding popl.
30140	* mpn/x86/k7/mmx/copyi.asm: Ditto.
30141	* mpn/x86/k7/mul_basecase.asm: Ditto.
30142
301432000-03-07  Torbjorn Granlund  <tege@swox.com>
30144
30145	* config.guess: Better recognize POWER/PowerPC processor type.
30146
301472000-03-07  Kevin Ryde  <kevin@swox.se>
30148
30149	* mpn/generic/addsub_n.c: Use HAVE_NATIVE_* now in config.h.
30150
30151	* mpn/asm-defs.m4: Add comments about SysV m4.
30152	(m4_log2): Don't use <<.
30153	(m4_lshift,m4_rshift): New macros.
30154
301552000-03-06  Torbjorn Granlund  <tege@swox.com>
30156
30157	* mpn/powerpc32/regmap.m4: Map cr0 => `0', etc.
30158
301592000-03-06  Kevin Ryde  <kevin@swox.se>
30160
30161	* mpn/tests/ref.c (refmpn_divexact_by3): New function.
30162	* mpn/tests/ref.h: Prototype.
30163
30164	* acconfig.h (WANT_ASSERT): New define.
30165	* configure.in (--enable-assert): Turn on WANT_ASSERT.
30166	* assert.c: New file.
30167	* Makefile.am: Add to build.
30168	* gmp-impl.h (ASSERT): New macro.
30169	(ASSERT_NOCARRY) Renamed from assert_nocarry.
30170	(MPZ_CHECK_FORMAT): Use ASSERT_ALWAYS.
30171	* mpn/tests/ref.c: Use ASSERT.
30172	* mpf/get_str.c: Use ASSERT_ALWAYS.
30173	* mpf/set_str.c: Remove old assert macro.
30174
30175	* mpn/x86/x86-defs.m4 (cmovnz_ebx_ecx): New macro.
30176	* mpn/x86/p6/aorsmul_1.asm: Use cmov.
30177
30178	* mpn/x86/lshift.S: Use %dl with testb, not %edx. No object code
30179	change, testb was still getting generated.
30180	* mpn/x86/rshift.S: Ditto.
30181
301822000-03-03  Torbjorn Granlund  <tege@swox.com>
30183
30184	* longlong.h: Add IA-64 support.
30185
30186	* mpn/powerpc32: Misc cleanups.
30187	* mpn/powerpc32/aix.m4: New file (mainly by Linus).
30188	* mpn/powerpc64/aix.m4: New file (mainly by Linus).
30189	* mpn/powerpc64: Translate `.S' files to `.asm'.
30190
30191	* configure.in: Fix tyops.
30192	* configure: Regenerate.
30193
301942000-03-02  Torbjorn Granlund  <tege@swox.com>
30195
30196	* mpn/powerpc32/regmap.m4: New file.
30197	* mpn/powerpc32: Translate `.S' files to `.asm'.
30198	* configure.in: Use mpn/powerpc32/regmap.m4 for powerpc targets
30199	except some weird ones.
30200
302012000-03-03  Kevin Ryde  <kevin@swox.se>
30202
30203	* mpn/lisp/gmpasm-mode.el: Suppress postscript comment prefixes in
30204	filladapt.
30205
30206	* mpn/x86/pentium/sqr_basecase.asm: New file.
30207	* mpn/x86/pentium/gmp-mparam.h (KARATSUBA_SQR_THRESHOLD): Update.
30208
30209	* configure.in: Add --enable-assert, enable k6 logops functions.
30210
30211	* mpn/x86/k6/mmx/copyi.asm: Use m4 for divide, not as.
30212	* mpn/x86/k6/mmx/copyd.asm: Ditto.
30213	* mpn/x86/README.family: Add a note on this.
30214
302152000-03-02  Kevin Ryde  <kevin@swox.se>
30216
30217	* mpn/x86/k6/aors_n.asm: Don't use stosl.
30218	* mpn/x86/copyi.asm: Use cld to clear direction flag.
30219	* mpn/x86/divrem_1.asm: Ditto.
30220	* mpn/x86/README.family: Add a note on this.
30221
30222	* mpn/x86/k6/mmx/copyi.asm: Rewrite.
30223	* mpn/x86/k6/mmx/copyd.asm: New file.
30224	* mpn/x86/k6/README: Update, and small amendments.
30225
30226	* mpn/x86/x86-defs.m4 (Zdisp): New macro.
30227	* mpn/asm-defs.m4 (m4_stringequal_p): New macro.
30228
30229	* mpn/x86/p6/aorsmul_1.asm: Use Zdisp to force zero displacements.
30230	* mpn/x86/k6/aorsmul_1.asm: Ditto.
30231	* mpn/x86/k6/mul_1.asm: Ditto.
30232	* mpn/x86/k6/mul_basecase.asm: Ditto.
30233	* mpn/x86/k7/aors_n.asm: Ditto.
30234	* mpn/x86/k7/aorsmul_1.asm: Ditto.
30235	* mpn/x86/k7/mul_1.asm: Ditto.
30236	* mpn/x86/k7/mul_basecase.asm: Ditto.
30237	* mpn/x86/README.family: Add a note on this.
30238
302392000-02-27  Kevin Ryde  <kevin@swox.se>
30240
30241	* mpn/generic/divrem.c (mpn_divrem_classic): Patch to avoid gcc
30242	2.7.2.3 i386 register handling bug.
30243
30244	* mpn/x86/k6/aors_n.asm: Rewrite.
30245	* mpn/x86/k6/mmx/lshift.asm: Rewrite.
30246	* mpn/x86/k6/mmx/rshift.asm: Rewrite.
30247	* mpn/x86/k6/README: Update.
30248
30249	* mpn/x86/k7/mmx/copyd.asm: Support size==0.
30250	* mpn/x86/k7/mmx/copyi.asm: Ditto.
30251	* mpn/x86/k6/mmx/copyi.asm: Ditto.
30252	* gmp-impl.h: Comment size==0 allowed in MPN_COPY_INCR and
30253	MPN_COPY_DECR.
30254	* configure.in: Enable x86 copyi, copyd; add k6 com_n.
30255
302562000-02-25  Torbjorn Granlund  <tege@swox.com>
30257
30258	* demos/pexpr.c (power): Move factorial handing code from `factor'
30259	to `power'.
30260
30261	* demos/factorize.c (factor_using_pollard_rho): Move resetting of `c'
30262	to before checking for a non-zero gcd.
30263
302642000-02-25  Kevin Ryde  <kevin@swox.se>
30265
30266	* mpn/asm-defs.m4 (MULFUNC_PROLOGUE): New macro by Linus.
30267	* mpn/x86/k6/aors_n.asm: Use MULFUNC_PROLOGUE.
30268	* mpn/x86/k6/aorsmul_1.asm: Ditto.
30269	* mpn/x86/k7/aors_n.asm: Ditto.
30270	* mpn/x86/k7/aorsmul_1.asm: Ditto.
30271	* mpn/x86/p6/aorsmul_1.asm: Ditto.
30272
30273	* mpn/tests/ref.c (refmpn_copyi,refmpn_copyd): Allow size==0.
30274
30275	* gmp-impl.h: Move mpn_and_n, mpn_andn_n, mpn_com_n, mpn_ior_n,
30276	mpn_iorn_n, mpn_nand_n, mpn_nior_n, mpn_xor_n and mpn_xorn_n here
30277	from gmp.h.  Use HAVE_NATIVE_mpn_* to make these functions or
30278	inlines.
30279
30280	* gmp-impl.h: Move mpn_copyd, mpn_copyi here from gmp.h.
30281	* gmp-impl.h (MPN_COPY_INCR): Use mpn_copyi if available.
30282	* gmp-impl.h (MPN_COPY_DECR): Use mpn_copyd if available.
30283
30284	* mpn/x86/k6/mmx/com_n.asm: Moved into mmx subdirectory.
30285	* mpn/x86/k6/mmx/copyi.asm: Ditto.
30286	* mpn/x86/k6/mmx/lshift.asm: Ditto.
30287	* mpn/x86/k6/mmx/rshift.asm: Ditto.
30288	* mpn/x86/k7/mmx/rshift.asm: Ditto.
30289	* mpn/x86/k6/mmx/logops_n.asm: New file.
30290	* configure.in (k6*-*-*): Add logops_n.asm.
30291	* mpn/x86/k6/README: Update.
30292
30293	* mpn/x86/k7/mmx/copyi.asm: New file.
30294	* mpn/x86/k7/mmx/copyd.asm: New file.
30295	* mpn/x86/k7/README: Update.
30296
302972000-02-24  Kevin Ryde  <kevin@swox.se>
30298
30299	* mpn/x86/x86-defs.m4 (femms): Generate emms if 3dnow not available.
30300	* mpn/x86/x86-defs.m4 (FRAME_popl): New macro.
30301
30302	* Makefile.am: Add info_TEXINFOS = gmp.texi
30303
30304	* mpn/x86/divrem_1.asm: Moved from mpn/x86/k6, allow size==0,
30305	conditionalize loop versus decl/jnz.
30306	* mpn/x86/mod_1.asm: Ditto.
30307	* mpn/x86/divmod_1.asm: Removed.
30308	* gmp.texi (mpn_divrem_1,mpn_mod_1): Add that size==0 is allowed.
30309	* mpn/tests/ref.c (refmpn_divrem_1c,etc): Allow size==0.
30310
30311	* mpn/x86/k6/aors_n.asm: Avoid gas 1.92.3 leal displacement
30312	expression problem.
30313	* mpn/x86/k6/aorsmul_1.asm: Ditto.
30314	* mpn/x86/k6/mul_1.asm: Ditto.
30315	* mpn/x86/k6/mul_basecase.asm: Ditto
30316	* mpn/x86/k7/aors_n.asm: Ditto.
30317	* mpn/x86/k7/aorsmul_1.asm: Ditto.
30318	* mpn/x86/k7/mul_1.asm: Ditto.
30319	* mpn/x86/k7/mul_basecase.asm: Ditto.
30320	* mpn/x86/k7/rshift.asm: Ditto.
30321	* mpn/x86/p6/aorsmul_1.asm: Ditto.
30322	* mpn/x86/README.family: Describe problem.
30323
303242000-02-24  Linus Nordberg  <linus@swox.se>
30325
30326	* acinclude.m4 (GMP_CHECK_ASM_LSYM_PREFIX): Add dummy symbol to
30327	testcase to avoid nm failure.  Try nm before piping to grep.
30328
30329	* acconfig.h: Undef HAVE_NATIVE_func for every mpn function found
30330	in gmp.h.
30331
30332	* configure.in: Invoke AC_CONFIG_HEADERS.
30333	Don't invoke AM_CONFIG_HEADER; it makes autoconf confused.
30334	Dig out entry points declared in assembly code and AC_DEFINE proper
30335	HAVE_NATIVE_func.
30336
30337	* mpn/asm-defs.m4 (MULFUNC_PROLOGUE): New macro.
30338
30339	* mpn/x86/p6/aorsmul_1.asm: Use MULFUNC_PROLOGUE.
30340	* mpn/x86/k6/aors_n.asm: Likewise.
30341
30342	* Makefile.am (EXTRA_DIST): Add config.in; needed when we don't
30343	use AM_CONFIG_HEADER in configure.in.
30344
30345	* mpn/Makefile.am (INCLUDES): Add `-I..' for config.h and
30346	gmp-mparam.h.
30347	* mpf/Makefile.am: Likewise.
30348	* mpq/Makefile.am: Likewise.
30349	* mpz/Makefile.am: Likewise.
30350
30351	* mpf/tests/Makefile.am (INCLUDES): Add `-I../..' for config.h and
30352	gmp-mparam.h.
30353	* mpq/tests/Makefile.am: Likewise.
30354	* mpz/tests/Makefile.am: Likewise.
30355
30356	* configure: Regenerate.
30357	* aclocal.m4: Regenerate.
30358	* config.in: Regenerate.
30359	* Makefile.in: Regenerate.
30360	* mpf/Makefile.in: Regenerate.
30361	* mpn/Makefile.in: Regenerate.
30362	* mpq/Makefile.in: Regenerate.
30363	* mpz/Makefile.in: Regenerate.
30364	* mpf/tests/Makefile.in: Regenerate.
30365	* mpq/tests/Makefile.in: Regenerate.
30366	* mpz/tests/Makefile.in: Regenerate.
30367
303682000-02-23  Kevin Ryde  <kevin@swox.se>
30369
30370	* mpn/x86/addmul_1.S: Amend comments, this code no longer used by
30371	PentiumPro.
30372	* mpn/x86/submul_1.S: Ditto.
30373
30374	* mpn/x86/k6/com_n.asm: Rewrite, smaller but same speed.
30375
30376	* mpn/x86/addmul_1.S: Add PROLOGUE and EPILOGUE to get .type and
30377	.size for ELF.  Rename #define size to n to avoid .size.
30378	* mpn/x86/lshift.S: Ditto.
30379	* mpn/x86/mul_1.S: Ditto.
30380	* mpn/x86/mul_basecase.S: Ditto.
30381	* mpn/x86/rshift.S: Ditto.
30382	* mpn/x86/submul_1.S: Ditto.
30383	* mpn/x86/udiv.S: Ditto.
30384	* mpn/x86/umul.S: Ditto.
30385	* mpn/x86/pentium/add_n.S: Ditto.
30386	* mpn/x86/pentium/addmul_1.S: Ditto.
30387	* mpn/x86/pentium/lshift.S: Ditto.
30388	* mpn/x86/pentium/mul_1.S: Ditto.
30389	* mpn/x86/pentium/mul_basecase.S: Ditto.
30390	* mpn/x86/pentium/rshift.S: Ditto.
30391	* mpn/x86/pentium/sub_n.S: Ditto.
30392	* mpn/x86/pentium/submul_1.S: Ditto.
30393
303942000-02-22  Linus Nordberg  <linus@swox.se>
30395
30396	* acinclude.m4 (GMP_INIT): Use temporary file cnfm4p.tmp for
30397	post-defines.
30398	(GMP_FINISH): Ditto.
30399	(GMP_DEFINE): Add third optional argument specifying location in
30400	outfile.
30401	(GMP_DEFINE_RAW): New macro.
30402	* aclocal.m4: Regenerate.
30403
30404	* configure.in: Add `HAVE_TARGET_CPU_$target_cpu' using
30405	GMP_DEFINE_RAW.
30406	* configure: Regenerate.
30407
30408	* mpz/tests/Makefile.am: New test t-root.
30409	* mpz/tests/Makefile.in: Regenerate.
30410
304112000-02-22  Torbjorn Granlund  <tege@swox.com>
30412
30413	* mpz/root.c: Complete rewrite; still primitive, but at least correct.
30414	* mpz/tests/t-root.c: New test.
30415
304162000-02-22  Kevin Ryde  <kevin@swox.se>
30417
30418	* mpn/x86/k7/mul_basecase.asm: New file.
30419	* mpn/x86/k7/README: Add mpn_mul_basecase speed.
30420	* mpn/x86/k7/gmp-mparam.h: New file.
30421
30422	* mpn/x86/x86-defs.m4 (loop_or_decljnz,cmov_bytes): New macros.
30423	* mpn/asm-defs.m4 (m4_ifdef_anyof_p): New macro.
30424
30425	* mpn/x86/k6/aorsmul_1.asm: New file.
30426	* mpn/x86/k6/addmul_1.S: Removed (was a copy of pentium version).
30427	* mpn/x86/k6/submul_1.S: Removed (was a copy of pentium version).
30428
30429	* mpn/x86/p6/aorsmul_1.asm: Use OPERATION_addmul_1 and
30430	OPERATION_submul_1.
30431	* mpn/x86/k6/aors_n.asm: Use OPERATION_add_n and OPERATION_sub_n.
30432	* configure.in: Declare multi-function files for k6 and p6.
30433
30434	* configure.in: Add HAVE_TARGET_CPU_$target_cpu for config.m4.
30435	* mpn/asm-defs.m4 (define_not_for_expansion): New macro.
30436
30437	* mpn/generic/divrem_1n.c (__gmpn_divrem_1n): New file, split from
30438	mpn/generic/divrem_1.c.
30439	* mpn/generic/divrem_1.c: Ditto.
30440	* configure.in (gmp_mpn_functions): Ditto.
30441
304422000-02-21  Torbjorn Granlund  <tege@swox.com>
30443
30444	* gmp.h: Undo 1996-10-06 NeXT change, it was clearly improperly
30445	written.
30446
304472000-02-21  Linus Nordberg  <linus@swox.se>
30448
30449	* configure.in: Link <src>/mpn/asm-defs.m4 to <build>mpn/asm.m4.
30450	* configure: Regenerate.
30451
304522000-02-21  Linus Nordberg  <linus@swox.se>
30453
30454	* mpn/x86/k7/aorsmul_1.asm: Change OPERATION_ADDMUL -->
30455	OPERATION_addmul_1.  Change OPERATION_SUBMUL -->
30456	OPERATION_submul_1.
30457
30458	* mpn/x86/k7/aors_n.asm: Change OPERATION_ADD --> OPERATION_add_n.
30459	Change OPERATION_SUB --> OPERATION_sub_n.
30460
30461	* mpn/Makefile.am: Pass -DOPERATION_$* to preprocessors.
30462	* mpn/Makefile.in: Regenerate.
30463
30464	* configure.in: Symlink mpn/asm-defs.m4 to build-dir/mpn.  Link
30465	multi-function files to mpn/<function>.asm and remove function
30466	name from `gmp_mpn_functions'.
30467	* configure: Regenerate.
30468
30469	* acinclude.m4 (GMP_FINISH): Tell user what we're doing.
30470	* aclocal.m4: Regenerate.
30471
304722000-02-21  Kevin Ryde  <kevin@swox.se>
30473
30474	* gmp-impl.h: Rename __gmpn_mul_basecase to mpn_mul_basecase and
30475	__gmpn_sqr_basecase to mpn_sqr_basecase, remove __gmpn prototypes.
30476	* mpn/x86/mul_basecase.S: Ditto.
30477	* mpn/x86/pentium/mul_basecase.S: Ditto.
30478
30479	* configure.in (gmp_m4postinc): Use x86-defs.m4 on athlon-*-* too.
30480
304812000-02-20  Kevin Ryde  <kevin@swox.se>
30482
30483	* acinclude.m4 (GSYM_PREFIX): Drop $1, change by Linus.
30484	* mpn/asm-defs.m4 (PROLOGUE,EPILOGUE): Use GSYM_PREFIX as a
30485	string, change by Linus.
30486	* mpn/x86/x86-defs.m4: Use GSYM_PREFIX as a string.
30487
30488	* mpn/x86/k6/gmp-mparam.h: New file.
30489	* mpn/asm-defs.m4 (m4_warning): New macro.
30490
30491	* mpn/x86/README: Amendments per new code and directories.
30492	* mpn/x86/README.family: New file.
30493	* mpn/x86/k6/README: New file.
30494	* mpn/x86/k7/README: New file.
30495
30496	* mpn/generic/mul_n.c: Rename __gmpn_mul_basecase to
30497	mpn_mul_basecase and __gmpn_sqr_basecase to mpn_sqr_basecase.
30498	* mpn/generic/mul_basecase.c: Ditto.
30499	* mpn/generic/sqr_basecase.c: Ditto.
30500	* mpn/generic/mul.c: Ditto.
30501
305022000-02-19  Linus Nordberg  <linus@swox.se>
30503
30504	* configure.in: Don't try to symlink more than one multi-func
30505	file.
30506	* configure: Regenerate.
30507
305082000-02-18  Linus Nordberg  <linus@swox.se>
30509
30510	* acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): GMP_DEFINE
30511	`GSYM_PREFIX'.  Run ACTIONs even when value is found in cache.
30512	(GMP_CHECK_ASM_ALIGN_LOG): GMP_DEFINE `ALIGN'.  Run ACTIONs even
30513	when value is found in cache.
30514	* aclocal.m4: Regenerate.
30515
30516	* configure.in: Don't define GSYM_PREFIX or ALIGN.
30517	Add mechanism for multi-function files.
30518	* configure: Regenerate.
30519
305202000-02-18  Kevin Ryde  <kevin@swox.se>
30521
30522	* configure.in (gmp_m4postinc): Enable x86-defs.m4.
30523	* mpn/x86/k7/mul_1.asm: Fix include.
30524	* mpn/x86/k6/mul_basecase.S: Removed (copy of the pentium version).
30525	* mpn/x86/k6/mul_basecase.asm: New file.
30526	* mpn/x86/k6/sqr_basecase.asm: New file.
30527	* mpn/x86/k6/com_n.asm: New file.
30528	* mpn/x86/k6/copyi.asm: New file.
30529	* gmp.texi (Low-level Functions): Clarify mpn overlaps permitted.
30530	* gmp-impl.h (MPN_OVERLAP_P): New macro.
30531	* gmp-impl.h (assert_nocarry): New macro.
30532	* mpn/tests/ref.c: New file, based in part on other mpn/tests/*.c.
30533	* mpn/tests/ref.h: New file.
30534
305352000-02-17  Linus Nordberg  <linus@swox.se>
30536
30537	* Makefile.am (dist-hook): Don't include any emacs backup files
30538	(*.~*) in dist.
30539	* Makefile.in: Regenerate.
30540
305412000-02-17  Torbjorn Granlund  <tege@swox.com>
30542
30543	* mpn/sparc32/v9/mul_1.asm: Use `rd' to get current PC; get rid of
30544	getpc function.
30545	* mpn/sparc32/v9/addmul_1.asm: Likewise.
30546	* mpn/sparc32/v9/submul_1.asm: Likewise.
30547
305482000-02-17  Kevin Ryde  <kevin@swox.se>
30549
30550	* gmp.h: Add prototypes and defines for mpn_and_n, mpn_andn_n,
30551	mpn_com_n, mpn_copyd, mpn_copyi, mpn_ior_n, mpn_iorn_n,
30552	mpn_mul_basecase, mpn_nand_n, mpn_nior_n, mpn_sqr_basecase,
30553	mpn_xor_n, mpn_xorn_n.
30554
30555	* mpn/asm-defs.m4: Many additions making up initial version.
30556	* mpn/asm-defs.m4 (L): Use defn(`LSYM_PREFIX').
30557	* mpn/x86/x86-defs.m4: New file.
30558	* mpn/x86/k6/aors_n.asm: New file.
30559	* mpn/x86/k6/divmod_1.asm: New file.
30560	* mpn/x86/k6/divrem_1.asm: New file.
30561	* mpn/x86/k6/lshift.S: Removed (was a copy of the pentium version).
30562	* mpn/x86/k6/lshift.asm: New file.
30563	* mpn/x86/k6/mod_1.asm: New file.
30564	* mpn/x86/k6/mul_1.S: Removed (was a copy of the pentium version).
30565	* mpn/x86/k6/mul_1.asm: New file.
30566	* mpn/x86/k6/rshift.S: Removed (was a copy of the pentium version).
30567	* mpn/x86/k6/rshift.asm: New file.
30568	* mpn/x86/k7/aors_n.asm: New file.
30569	* mpn/x86/k7/aorsmul_1.asm: New file.
30570	* mpn/x86/k7/mul_1.asm: New file.
30571	* mpn/x86/k7/rshift.asm: New file.
30572	* mpn/x86/p6/aorsmul_1.asm: New file.
30573	* mpn/x86/copyi.asm: New file.
30574	* mpn/x86/copyd.asm: New file.
30575	* mpn/lisp/gmpasm-mode.el: New file.
30576
305772000-02-16  Torbjorn Granlund  <tege@swox.com>
30578
30579	* mpn/sparc32/v9/mul_1.asm: Conditionalize for PIC.
30580	* mpn/sparc32/v9/addmul_1.asm: Likewise.
30581	* mpn/sparc32/v9/submul_1.asm: Likewise.
30582	* mpn/sparc32/v8/supersparc/udiv.asm: Likewise.
30583	* mpn/sparc32/udiv_fp.asm: Likewise.
30584
305852000-02-16  Linus Nordberg  <linus@swox.se>
30586
30587	* configure.in: Add mechanism for including target specific
30588	m4-files in config.m4.
30589	* configure: Regenerate.
30590
30591	* acinclude.m4 (GMP_PROG_CCAS): Begin assembly lines (except
30592	labels) with a tab character.  HP-UX demands it.
30593	(GMP_CHECK_ASM_SIZE): Ditto.
30594	(GMP_CHECK_ASM_LSYM_PREFIX): Ditto.
30595	(GMP_CHECK_ASM_LABEL_SUFFIX): Set to empty string for HP-UX.
30596	(GMP_CHECK_ASM_GLOBL): Change `.xport' --> `.export'.
30597	* aclocal.m4: Regenerate.
30598
305992000-02-16  Linus Nordberg  <linus@swox.se>
30600
30601	* acinclude.m4 (GMP_CHECK_ASM_LSYM_PREFIX): Define LSYM_PREFIX as
30602	the prefix only, no argument.
30603	* aclocal.m4: Regenerate.
30604	* configure: Regenerate.
30605
30606	* mpn/asm-defs.m4 (L): No argument to LSYM_PREFIX.
30607
306082000-02-15  Linus Nordberg  <linus@swox.se>
30609
30610	* acinclude.m4: Prefix all temporary shell variables with
30611	`gmp_tmp_'.
30612	(GMP_PROG_CC_FIND): Use defaults if no arguments are passed.
30613	Quote use of arguments.
30614	(GMP_PROG_CCAS): New macro.
30615	(GMP_INIT): New macro.
30616	(GMP_FINISH): New macro.
30617	(GMP_INCLUDE): New macro.
30618	(GMP_SINCLUDE): New macro.
30619	(GMP_DEFINE): New macro.
30620	(GMP_CHECK_ASM_LABEL_SUFFIX): New macro.
30621	(GMP_CHECK_ASM_TEXT): New macro.
30622	(GMP_CHECK_ASM_DATA): New macro.
30623	(GMP_CHECK_ASM_GLOBL): New macro.
30624	(GMP_CHECK_ASM_TYPE): New macro.
30625	(GMP_CHECK_ASM_SIZE): New macro.
30626	(GMP_CHECK_ASM_LSYM_PREFIX): New macro.
30627	(GMP_CHECK_ASM_W32): New macro.
30628	* aclocal.m4: Regenerate.
30629
30630	* configure.in: Find m4 and nm for target.
30631	Use new macros to create config.m4.
30632	Prefix all temporary shell variables with `tmp_'.
30633	Pass `-X 64' to nm for 64-bit PPC target with 64-bit compiler.
30634	* configure: Regenerate.
30635
30636	* Makefile.am (dist-hook): *Really* remove all CVS dirs in
30637	dist.
30638	* Makefile.in: Regenerate.
30639
30640	* mpn/Makefile.am: Add target for building .lo and .o from
30641	.asm.
30642	Pass -DPIC to preprocessor (CPP/m4) when building .lo.
30643	Build .o a second time for target .lo, without -DPIC to
30644	preprocessor.
30645	(SUFFIX): Add `.asm'.
30646	(EXTRA_DIST): Add asm-defs.m4.
30647	* mpn/Makefile.in: Regenerate.
30648
30649	* mpf/Makefile.in: Regenerate.
30650	* mpf/tests/Makefile.in: Regenerate.
30651	* mpq/Makefile.in: Regenerate.
30652	* mpq/tests/Makefile.in: Regenerate.
30653	* mpz/Makefile.in: Regenerate.
30654	* mpz/tests/Makefile.in: Regenerate.
30655
306562000-02-15  Torbjorn Granlund  <tege@swox.com>
30657
30658	* mpn/sparc32/udiv_fp.asm: Change `RODATA' to `DATA'.
30659	* mpn/sparc32/v8/supersparc/udiv.asm: Likewise.
30660	* mpn/sparc32/v9/addmul_1.asm: Likewise.
30661	* mpn/sparc32/v9/submul_1.asm: Likewise.
30662	* mpn/sparc32/v9/mul_1.asm: Likewise.
30663
30664	* mpn/sparc32/add_n.asm: Rename `size' -> `n'.
30665	* mpn/sparc32/sub_n.asm: Likewise.
30666
30667	* sparc32: Rename `.s' and `.S' files to `.asm'.
30668	* sparc64: Rename `.s' and `.S' files to `.asm'.
30669
306702000-02-11  Torbjorn Granlund  <tege@swox.com>
30671
30672	* config.sub: Adopt to new config.guess sparc naming conventions.
30673
30674	* config.guess (sun4u:SunOS:5.*:*): Change `sparc9' to `sparcv9'.
30675	* config.guess (sun4m:SunOS:5.*:*): Change to sun4[md]:SunOS:5.*:* and
30676	change `sparc8' to `sparcv8'.
30677
30678	* mpn/x86/add_n.S: Use PROLOGUE/EPILOGUE.
30679	* mpn/x86/sub_n.S: Likewise.
30680
30681	* mpn/x86/syntax.h (PROLOGUE): New name for PROLOG.
30682	* mpn/x86/syntax.h (EPILOGUE): New name for EPILOG.
30683
306842000-02-11  Linus Nordberg  <linus@swox.se>
30685
30686	* configure.in: Better path for 64-bit sparc without 64-bit cc.
30687	Change sparc8 --> sparcv8.
30688	Change sparc9 --> sparcv9.
30689	* configure: Regenerate.
30690
306912000-02-10  Linus Nordberg  <linus@swox.se>
30692
30693	* configure.in: Use Autoconf.
30694	* Makefile.am: New file.
30695
30696	* AUTHORS: New file.
30697	* COPYING: New file.
30698	* acinclude.m4: New file.
30699	* acconfig.h: New file.
30700
30701	* configure: Generate.
30702	* Makefile.in: Generate.
30703	* aclocal.m4: Generate.
30704	* config.in: Generate.
30705
30706	* install.sh: Remove.
30707	* install-sh: New file from Automake.
30708	* missing: New file from Automake.
30709	* ltconfig: New file from Libtool.
30710	* ltmain.sh: New file from Libtool.
30711
30712	* mpf/Makefile.am: New file.
30713	* mpf/Makefile.in: Generate.
30714	* mpf/configure.in: Remove.
30715	* mpf/tests/Makefile.am: New file.
30716	* mpf/tests/Makefile.in: Generate.
30717	* mpf/tests/configure.in: Remove.
30718
30719	* mpn/Makefile.am: New file.
30720	* mpn/Makefile.in: Generate.
30721	* mpn/configure.in: Remove.
30722
30723	* mpq/Makefile.am: New file.
30724	* mpq/Makefile.in: Generate.
30725	* mpq/configure.in: Remove.
30726	* mpq/tests/Makefile.am: New file.
30727	* mpq/tests/Makefile.in: Generate.
30728	* mpq/tests/configure.in: Remove.
30729
30730	* mpz/Makefile.am: New file.
30731	* mpz/Makefile.in: Generate.
30732	* mpz/configure.in: Remove.
30733	* mpz/tests/Makefile.am: New file.
30734	* mpz/tests/Makefile.in: Generate.
30735	* mpz/tests/configure.in: Remove.
30736
307372000-02-10  Torbjorn Granlund  <tege@swox.com>
30738
30739	* mpn/x86/add_n.S: Don't use label L0 twice.
30740	* mpn/x86/sub_n.S: Likewise.
30741
307422000-01-20  Linus Nordberg  <linus@swox.se>
30743
30744	* demos/pexpr.c: Don't use setup_error_handler() in windoze.
30745
307462000-01-19  Torbjorn Granlund  <tege@swox.com>
30747
30748	* demos/pexpr.c (sigaltstack): #define to sigstack for AIX.
30749	(setup_error_handler): Don't write to ss_size and ss_flags
30750	on AIX.
30751
307522000-01-11  Torbjorn Granlund  <tege@swox.com>
30753
30754	* mpn/configure.in (hppa2.0*-*-*): Move assignment of
30755	target_makefile_frag to where it belongs.
30756
307571999-12-21  Torbjorn Granlund  <tege@swox.com>
30758
30759	* longlong.h (v9 umul_ppmm): New #define.
30760	(v9 udiv_qrnnd): New #define.
30761
307621999-12-14  Torbjorn Granlund  <tege@swox.com>
30763
30764	* mpn/generic/divmod_1.c: Use invert_limb.
30765	* mpn/generic/mod_1.c: Use invert_limb.
30766
30767	* gmp-impl.h (invert_limb): Put definition here.
30768	* mpn/generic/divrem.c (invert_limb): Delete definition.
30769	* mpn/generic/divrem_2.c (invert_limb): Delete definition.
30770
30771	* gmp.h (mpn_divrem): Inhibit for non-gcc.
30772	But declare (undo 1999-11-22 change).
30773
30774	* gmp-impl.h (DItype,UDItype): Do these also if _LONG_LONG_LIMB.
30775
30776	* longlong.h: Move 64-bit hppa code out of __GNUC__ conditional.
30777
30778	* stack-alloc.c (HSIZ): New #define.
30779	(__tmp_alloc): Use HSIZ instead of sizeof(tmp_stack).
30780
307811999-12-10  Torbjorn Granlund  <tege@swox.com>
30782
30783	* config.sub: Clean up handling of x86 CPUs: Properly recognize
30784	Amd CPUs as unique entities.  Use manufacturer's names of
30785	processors ("pentium", etc); still match ambiguous names like
30786	"i586", "i686", "p6" but be conservative in interpreting them.
30787
30788	* configure.in: Recognize x86 CPU types known by config.guess.
30789	* mpn/configure.in: Likewise.  Add x86/mmx path component as
30790	appropriate.
30791	(athlon-*-*): Fix typo.
30792
30793	* config.guess: Update x86 recog code to initially match
30794	more than just i386.
30795	Call K6-2 and K6-III for "k62" and "k63" respectively.
30796
30797	* config.guess: Recognize x86 CPU types.
30798	Update code for FreeBSD, NetBSD, OpenBSD, Linux.
30799
308001999-12-08  Torbjorn Granlund  <tege@swox.com>
30801
30802	* mpf/pow_ui.c: Avoid final squaring in loop.
30803
308041999-12-07  Torbjorn Granlund  <tege@swox.com>
30805
30806	* gmp-impl.h (udiv_qrnnd_preinv2gen): Prefix local variables with `_'.
30807	(udiv_qrnnd_preinv2norm): Likewise.
30808	From Kevin Ryde:
30809	(HAVE_ALLOCA): #define also if defined (alloca).
30810
308111999-12-04  Torbjorn Granlund  <tege@swox.com>
30812
30813	* mpn/tests/add_n.c: Set OPS from CLOCK.
30814	* mpn/tests/sub_n.c: Likewise.
30815	* mpn/tests/mul_1.c: Likewise.
30816	* mpn/tests/addmul_1.c: Likewise.
30817	* mpn/tests/submul_1.c: Likewise.
30818
30819	* mpn/tests/lshift.c: Update from add_n.c.
30820	* mpn/tests/rshift.c: Likewise.
30821
308221999-12-03  Torbjorn Granlund  <tege@swox.com>
30823
30824	* mpn/powerpc64/copy.S: New file.
30825
308261999-12-02  Torbjorn Granlund  <tege@swox.com>
30827
30828	* mpn/sparc64/copy.s: New file.
30829
30830	* mpn/tests/copy.c: New file.
30831
30832	* mpn/configure.in: Recognize more Amd CPUs; Set special paths for
30833	k7 CPU.
30834
30835	* configure.in: Recognize Amd x86 CPUs.
30836
30837	* mpz/fdiv_r_2exp.c: In rounding code, read in->_mp_size before
30838	writing to res->_mp_size.
30839
30840	* mpn/powerpc64/*.S: Clean up assembly syntax, add function headers.
30841	* mpn/powerpc64/gmp-mparam.h: (KARATSUBA_MUL_THRESHOLD): #define.
30842	(KARATSUBA_SQR_THRESHOLD): #define.
30843
30844	* mpn/tests/add_n.c (main): Only print test number if TIMES==1
30845	and not printing.
30846	(main): Don't run reference code if NOCHECK.
30847	* mpn/tests/sub_n.c: Likewise.
30848	* mpn/tests/mul_1.c: Likewise.
30849	* mpn/tests/addmul_1.c: Likewise.
30850	* mpn/tests/submul_1.c: Likewise.
30851
30852	* mpn/tests/lshift.c: (main): Only print test number if TIMES==1
30853	and not printing.
30854	* mpn/tests/rshift.c: Likewise.
30855
308561999-11-22  Torbjorn Granlund  <tege@swox.com>
30857
30858	* gmp.h (mpz_init_set_str): Declare using __gmp_const.
30859	(mpz_set_str): Likewise.
30860	(mpf_init_set_str): Likewise.
30861	(mpf_set_str): Likewise.
30862	(mpn_set_str): Likewise.
30863	(__gmp_0): Likewise.
30864	(mpn_divrem): Remove separate declaration; it's defined later in
30865	this file.
30866
30867	* gmp.h: Replace "defined (__STD__)' by (__STDC__-0) in
30868	expressions involving more than one term, to handle Sun's compiler
30869	that most helpfully sets __STDC__ to 0.
30870	* gmp-impl.h: Likewise.
30871	* longlong.h: Likewise.
30872
308731999-11-21  Torbjorn Granlund  <tege@swox.com>
30874
30875	* mpn/sparc64/gmp-mparam.h (KARATSUBA_MUL_THRESHOLD): #define.
30876	(KARATSUBA_SQR_THRESHOLD): #define.
30877
30878	* mpn/sparc64/lshift.s: Compensate stack references for odd stack ptr.
30879	* mpn/sparc64/rshift.s: Likewise.
30880
30881	* mpn/sparc64/addmul_1.s: Propagate carry properly.
30882	* mpn/sparc64/submul_1.s: Likewise.
30883
30884	* mpn/sparc64/sub_n.s: Rewrite.
30885
30886	* mpn/sparc64/sub_n.s: Get operand order for main subcc right
30887	(before scrapping this code for new code).
30888
308891999-11-20  Torbjorn Granlund  <tege@swox.com>
30890
30891	* mpn/sparc64/add_n.s: Rewrite.
30892
308931999-11-17  Torbjorn Granlund  <tege@swox.com>
30894
30895	* mpn/x86/syntax.h (PROLOG): New #define.
30896	(EPILOG): New #define.
30897
30898	* gmp.h (mpn_addsub_n): Declare.
30899	* gmp.h (mpn_add_nc): Declare.
30900	* gmp.h (mpn_sub_nc): Declare.
30901	* mpn/powerpc64/addsub_n.S: New file.
30902
309031999-11-17  Torbjorn Granlund  <tege@swox.com>
30904
30905	* mpn/alpha/gmp-mparam.h
30906	(KARATSUBA_MUL_THRESHOLD): Only #define #ifndef.
30907	(KARATSUBA_SQR_THRESHOLD): Likewise.
30908
309091999-11-14  Torbjorn Granlund  <tege@swox.com>
30910
30911	* mpn/x86/mul_1.S: Unroll and optimize for P6 and K7.
30912
309131999-11-09  Torbjorn Granlund  <tege@swox.com>
30914
30915	* mpn/x86/p6/gmp-mparam.h
30916	(KARATSUBA_MUL_THRESHOLD): Only #define #ifndef.
30917	(KARATSUBA_SQR_THRESHOLD): Likewise.
30918
309191999-11-05  Torbjorn Granlund  <tege@swox.com>
30920
30921	* mpn/generic/addsub_n.c: New file.
30922
309231999-11-02  Torbjorn Granlund  <tege@swox.com>
30924
30925	* config.guess: Handle alpha:FreeBSD with alpha:NetBSD.
30926
30927	* configure.in (vax*-*-*): New case.
30928	* config/mt-vax: New file.
30929	* mpn/vax/add_n.s: Rewrite.
30930	* mpn/vax/sub_n.s: Rewrite.
30931
309321999-10-31  Torbjorn Granlund  <tege@swox.com>
30933
30934	* mpn/vax/rshift.s: New file.
30935	* mpn/vax/lshift.s: New file.
30936
309371999-10-29  Torbjorn Granlund  <tege@swox.com>
30938
30939	* config.sub: Handle k5 and k6.
30940	* mpn/configure.in: Recognize k6.
30941
30942	* mpf/tests/t-get_d.c (LOW_BOUND, HIGH_BOUND): New #defines.
30943	(main): Tighten error bounds to 14 digits.
30944
30945	* longlong.h (default umul_ppmm, when smul_ppmm exists):
30946	Rename __m0 => __xm0, __m1 => __xm1.
30947	(default smul_ppmm): Likewise.
30948
309491999-10-11  Torbjorn Granlund  <tege@swox.com>
30950
30951	* config.guess: Reverse the test for POWER vs PowerPC.
30952	* config.guess (sun4m:SunOS:5.*:*): New case.
30953	* config.guess (sun4u:SunOS:5.*:*): New case.
30954
309551999-09-29  Torbjorn Granlund  <tege@swox.com>
30956
30957	* mpn/generic/divrem_2.c: Clean up comments.
30958
309591999-09-23  Torbjorn Granlund  <tege@swox.com>
30960
30961	* mpz/tests/Makefile.in: Use move-if-change when generating binaries.
30962	* mpf/tests/Makefile.in: Likewise.
30963	* mpq/tests/Makefile.in: Likewise.
30964	* mpz/tests/move-if-change: New file.
30965	* mpf/tests/move-if-change: New file.
30966	* mpq/tests/move-if-change: New file.
30967
30968	* gmp.h (mpn_incr_u): New macro (from mpn/generic/mul_n.c).
30969	(mpn_decr_u): New macro.
30970
30971	* mpn/generic/mul_n.c (mpn_incr): Delete.
30972	* mpn/generic/mul_n.c: Update usages mpn_incr => mpn_incr_u.
30973	* mpn/generic/divrem_newt.c: Use mpn_incr_u and mpn_decr_u instead of
30974	mpn_add_1 and mpn_sub_1.
30975	* mpn/generic/sqrtrem.c: Likewise.
30976	* mpz/cdiv_q_ui.c: Likewise.
30977	* mpz/cdiv_qr_ui.c: Likewise.
30978	* mpz/fdiv_q_ui.c: Likewise.
30979	* mpz/fdiv_qr_ui.c: Likewise.
30980
30981	* mpn/generic/sqrtrem.c: Start single-limb Newton iteration from 18
30982	bits.
30983
309841999-07-27  Torbjorn Granlund  <tege@swox.com>
30985
30986	* mpn/generic/divrem_1.c (__gmpn_divrem_1n): New function.
30987
30988	* mpn/generic/divrem_2.c: New file, code from divrem.c, `case 2:'.
30989	* mpn/Makefile.in: Compile divrem_2.c.
30990	* make.bat: Compile divrem_2.c.
30991	* mpn/configure.in (functions): Add divrem_2.
30992	* gmp.h: Declare mpn_divrem_2.
30993
30994	* mpn/generic/divrem.c: Delete special cases, handle just divisors
30995	of more than 2 limbs.
30996	* gmp.h (mpn_divrem): Call mpn_divrem_1, mpn_divrem_2, as appropriate.
30997
30998	* mpn/generic/divrem.c: Rework variable usage for better register
30999	allocation.
31000
310011999-07-26  Torbjorn Granlund  <tege@swox.com>
31002
31003	* mpn/alpha/ev5/add_n.s: Rewrite for better ev6 speed.
31004	* mpn/alpha/ev5/sub_n.s: Likewise.
31005
310061999-07-21  Torbjorn Granlund  <tege@swox.com>
31007
31008	* longlong.h (alpha): Define umul_ppmm for cc.
31009
31010	* gmp-impl.h (DItype, UDItype): Define for non-gcc if _LONGLONG is
31011	defined.
31012
310131999-07-15  Torbjorn Granlund  <tege@swox.com>
31014
31015	* longlong.h (powerpc64 count_leading_zeros): Fix typo.
31016	(powerpc64 add_ssaaaa): Fix typos.
31017	(powerpc64 sub_ddmmss): Fix typos.
31018
310191999-07-14  Torbjorn Granlund  <tege@swox.com>
31020
31021	* mpz/tests/Makefile.in: Pass XCFLAGS when linking.
31022	* mpf/tests/Makefile.in: Likewise.
31023	* mpq/tests/Makefile.in: Likewise.
31024	* mpn/Makefile.in (.S.o): Pass XCFLAGS.
31025
31026	* longlong.h: Add support for 64-bit PowerPC.
31027	* config.sub: Handle "powerpc64".
31028	* configure.in: Likewise.
31029	* mpn/configure.in: Suppress use of config/t-ppc-aix for now,
31030	it seems compiler passes proper options.
31031	* mpn/powerpc64/*.S: New files.
31032
31033	* Makefile.in (FLAGS_TO_PASS): Pass "AR=$(AR)".
31034
310351999-07-07  Torbjorn Granlund  <tege@swox.com>
31036
31037	* demos/pexpr.c (factor): Change alloca call to a malloc/free pair.
31038
31039	* mpn/powerpc32/syntax.h: Add #define's for crN.
31040
31041	* gmp.h (gmp_rand_algorithm): Remove spurious `,'.
31042
310431999-07-05  Torbjorn Granlund  <tege@swox.com>
31044
31045	* mpn/generic/divrem_1.c: Normalize divisor when needed.
31046
310471999-07-02  Torbjorn Granlund  <tege@swox.com>
31048
31049	* mpn/configure.in (powerpc*-apple-mach): New configuration.
31050	* mpn/powerpc32/*: Add support for apple-macho syntax.
31051	* mpn/powerpc32/syntax.h: New file.
31052	* gmp-impl.h: Don't use `__attribute__' syntax for Apple's perversion
31053	of GCC.
31054
310551999-05-26  Linus Nordberg  <linus@swox.se>
31056
31057	* rand.c (gmp_rand_init): Fix typo.
31058
31059	* mpn/generic/rawrandom.c (mpn_rawrandom): Count bits, not limbs,
31060	to keep track of how many rounds to do in loop.  Clean up
31061	temporary allocation.  Update `seedsize' inside loop.  Mask off
31062	the correct number of bits from final result.  Init `mcopyp' even
31063	when not normalizing `m'.
31064
31065	* randlc.c (gmp_rand_init_lc): Fix typo (don't call
31066	mpz_init_set_ui()).
31067
31068	* mpn/generic/rawrandom.c (mpn_rawrandom): Set SIZ(s->seed) when
31069	reallocating.
31070
31071	* tests/rand/Makefile (test, bigtest): Add 33-bit tests.
31072
31073	* tests/rand/gen.c (main): Set precision of variable passed to
31074	mpf_urandomb().  Add option `-p'.
31075
310761999-05-25  Linus Nordberg  <linus@swox.se>
31077
31078	* randcm.c: Remove.
31079	* randcmui.c: Remove.
31080	* Makefile.in: Remove randcm and randcmui.
31081	* make.bat: Ditto.
31082	* gmp-impl.h: Remove prototypes for __gmp_rand_init_common() and
31083	__gmp_rand_init_common_ui().
31084	* randlc.c (gmp_rand_init_lc): Don't call
31085	__gmp_rand_init_common().
31086
31087	* randlcui.c (gmp_rand_init_lc_ui): Don't call
31088	__gmp_rand_init_common_ui().
31089
31090	* gmp.h (__gmp_rand_state_struct): Remove unused member `maxval'.
31091	* randclr.c (gmp_rand_clear): Remove reference to s->maxval.
31092	* randcm.c (__gmp_rand_init_common): Ditto
31093
31094	* mpn/generic/rawrandom.c (mpn_rawrandom): Don't calculate nlimbs
31095	twice.
31096
31097	* gmp.h (__gmp_rand_dist): Remove.
31098
310991999-05-24  Linus Nordberg  <linus@swox.se>
31100
31101	* mpn/generic/rawrandom.c: Clean up comments.
31102
31103	* gmp.texi: Add documentation for random number generation.
31104
311051999-05-21  Linus Nordberg  <linus@swox.se>
31106
31107	* gmp.h: Typedef `gmp_rand_state' as an array with one element.
31108	Change prototypes accordingly.
31109	* gmp-impl.h: Change prototypes using `gmp_rand_state'.
31110	* rand.c (gmp_rand_init): Take `gmp_rand_state' as argument
31111	instead of a pointer to a `gmp_rand_state'.
31112	* mpf/urandom.c (mpf_urandomb): Ditto.
31113	* mpz/urandom.c (mpz_urandomb): Ditto.
31114	* mpn/generic/rawrandom.c (mpn_rawrandom): Ditto.
31115	* randcmui.c (__gmp_rand_init_common_ui): Ditto.
31116	* randlc.c (gmp_rand_init_lc): Ditto.
31117	* randlcui.c (gmp_rand_init_lc_ui): Ditto.
31118	* randui.c (gmp_rand_init_ui): Ditto.
31119	* randcm.c (__gmp_rand_init_common): Ditto.
31120	* randclr.c (gmp_rand_clear): Ditto.
31121
31122	* tests/rand/gen.c (main): Pass `s' to rand-funcs instead of address
31123	of `s'.
31124
311251999-05-20  Linus Nordberg  <linus@swox.se>
31126
31127	* Makefile.in: Rename randi.c --> rand.c, randi_lc.c --> randlc.c,
31128	randicom.c --> randcm.c.  Add randui.c, randcmui.c, randlcui.c.
31129	* make.bat: Ditto.
31130
31131	* gmp.h: Add prototypes for gmp_rand_init_ui() and
31132	gmp_rand_init_lc_ui().
31133	* gmp-impl.h: Add prototypes for __gmp_rand_init_common() and
31134	__gmp_rand_init_common_ui().
31135
31136	* randlc.c, randcm.c, randclr.c, rand.c: Change #include of
31137	<gmp.h> to "gmp.h".
31138	* randclr.c: Include stdlib.h for free().
31139	* rand.c: Include gmp-impl.h.
31140
311411999-05-12  Torbjorn Granlund  <tege@swox.com>
31142
31143	* mpn/configure.in: Put generic m68k alternative last.
31144
311451999-05-04  Torbjorn Granlund  <tege@swox.com>
31146
31147	* demos/pexpr.c (setup_error_handler): Use sigemptyset to create
31148	empty set (for portability).
31149	(fns): Fix typo '#if #if'.
31150	(mpz_eval_expr): Implement FERMAT and MERSENNE.
31151
31152	* demos/pexpr.c: Cast longjmp argument via long to silent warnings on
31153	64-bit hosts.
31154
311551999-05-03  Torbjorn Granlund  <tege@swox.com>
31156
31157	* demos/pexpr.c: Add #defines for GMP 1.x and 2.0 compatibility.
31158
31159	* demos/pexpr.c (setup_error_handler): New function; take signal
31160	handler setup code from main(), with major modifications to use modern
31161	signal interface.
31162	(main): Remove signal handler setup code; call setup_error_handler.
31163
311641999-04-29  Linus Nordberg  <linus@swox.se>
31165
31166	* tests/rand/findcl.c (main): Add option '-i' for interval factor.
31167	Separate v and merit lose figures.  Add '-v' for version.
31168
311691999-04-28  Linus Nordberg  <linus@swox.se>
31170
31171	* tests/rand/statlib.c: Change debugging stuff.
31172
31173	* tests/rand/gmpstat.h: Add debug values definitions.
31174
31175	* tests/rand/findcl.c (main): Print low and high merit on startup.
31176	Print version string on startup.  Catch SEGV and HUP.  Add option -d
31177	for debug.  Fix bug making test for v too hard.
31178	(sh_status): New function.
31179	(sh_status): Flush stdout.  Add RCSID.
31180
311811999-04-27  Linus Nordberg  <linus@swox.se>
31182
31183	* tests/rand/Makefile (clean): Add target.
31184
311851999-04-27  Linus Nordberg  <linus.nordberg@canit.se>
31186
31187	* tests/rand/stat.c: Include gmpstat.h.
31188	Add global int g_debug.
31189
31190	* tests/rand/spect.c: Include <unistd.h>.
31191
31192	* tests/rand/findcl.c (main): Input is `m', not all factors of `m'.
31193	Print only the very first matching multiplier.  Include <unistd.h>.
31194	Flush stdout.  Print "done." when done.
31195
31196	* tests/rand/spect.c: Move everything but main() to statlib.c.
31197
31198	* tests/rand/findcl.c: New file.
31199
31200	* tests/rand/gmpstat.h: New file.
31201
31202	* tests/rand/statlib.c (merit, merit_u, f_floor, vz_dot,
31203	spectral_test): New functions.
31204
312051999-04-27  Torbjorn Granlund  <tege@swox.com>
31206
31207	* mpn/configure.in: Fix typo, "sparc-*)" was "sparc)".
31208
312091999-04-21  Torbjorn Granlund  <tege@swox.com>
31210
31211	* config.sub: Recognize ev6.
31212
312131999-04-12  Linus Nordberg  <linus.nordberg@canit.se>
31214
31215	* urandom.c: Split up into randclr.c, randi.c, randi_lc.c,
31216	randicom.c.
31217	* randclr.c, randi.c, randi_lc.c, randicom.c: New files.
31218	* Makefile.in: Remove urandom.  Add randclr, randi, randi_lc,
31219	randicom.
31220	* make.bat: Ditto
31221
312221999-03-31  Torbjorn Granlund  <tege@matematik.su.se>
31223
31224	* configure.in (sparc9-*-solaris2.[789]*, etc): New alternative.
31225	* mpn/configure.in: Use mt-sprc9 also for ultrasparc*-*-solaris2*.
31226
312271999-03-30  Linus Nordberg  <linus.nordberg@canit.se>
31228
31229	* urandom.c (__gmp_rand_scheme): Change NULL->0.
31230	Include "gmp.h" instead of <gmp.h>.
31231
312321999-03-29  Linus Nordberg  <linus.nordberg@canit.se>
31233
31234	* gmp.h (__gmp_rand_data_lc): Now holds a, c, m instead of scheme
31235	struct.
31236	(__gmp_rand_lc_scheme_struct): Remove mpz_t's `a' and `m'.
31237
31238	* tests/rand/stat.c (f_freq): Don't print 2nd level results if doing
31239	1st level.
31240
31241	* tests/rand/gen.c (main): Set default algorithm to mpz_urandomb.
31242	(main): Add option -c.
31243
312441999-03-24  Linus Nordberg  <linus.nordberg@canit.se>
31245
31246	* tests/rand/Makefile (GMPINC): Rename to GMPH.
31247	(GMPH): Add gmp-mparam.h.
31248	(CFLAGS): Add -I$(GMPLIBDIR)/mpn
31249
312501999-03-23  Linus Nordberg  <linus.nordberg@canit.se>
31251
31252	* Makefile.in: Compile top-dir/urandom.c.
31253	* make.bat: Ditto.
31254
31255	* mpn/Makefile.in: Compile rawrandom.c.
31256	* make.bat: Ditto.
31257
31258	* mpn/configure.in (functions): Add rawrandom.
31259
31260	* gmp.h (__gmp_rand_scheme_struct): Rename to
31261	__gmp_rand_lc_scheme_struct.
31262	(__gmp_rand_data_lc): Remove member 'n'.  Allocate a
31263	__gmp_rand_lc_scheme_struct instead of a pointer to one.
31264	Add prototype for gmp_rand_init_lc(), mpn_rawrandom().
31265	New prototype for mpz_urandomb().
31266
31267	* urandom.c: New file.
31268	(__gmp_rand_init_common): New function.
31269	(gmp_rand_init_lc): New function.
31270	(gmp_rand_init): Don't init data_lc->n.  Call gmp_rand_init_lc()
31271	and __gmp_rand_init_common().
31272	(gmp_rand_clear): Remove reference to data_lc->n.
31273
31274	* mpz/urandom.c (gmp_rand_init, gmp_rand_clear): Move to new file
31275	urandom.c in top-dir.
31276	(mpz_urandomb): Add function parameter nbits.  Call mpn_rawrandom().
31277
31278	* mpf/urandom.c (mpf_urandomb): Call mpn_rawrandom().
31279
31280	* mpn/generic/rawrandom.c: New file.
31281	(mpn_rawrandom): New function.
31282
312831999-03-17  Torbjorn Granlund  <tege@matematik.su.se>
31284
31285	* extract-dbl.c: When packing result, adjust exp when sc == 0.
31286
31287	* mpf/tests/t-get_d.c: New file.
31288	* mpf/tests/Makefile.in: Compile t-get_d.c.
31289
312901999-03-16  Linus Nordberg  <linus.nordberg@canit.se>
31291
31292	* mpz/urandom.c (__gmp_rand_scheme): Add extra braces around the
31293	mpz_t members.
31294
31295	* make.bat: Compile mpz/urandom.c and mpf/urandom.c
31296
31297	* tests/rand/statlib.c (ks_table): Use mpf_pow_ui() and exp().
31298
31299	* tests/rand/gen.c: Include unistd.h for getopt.
31300
313011999-03-15  Linus Nordberg  <linus.nordberg@canit.se>
31302
31303	* mpz/urandom.c (gmp_rand_init): New function.
31304	(gmp_rand_clear): New function.
31305	(mpz_urandomb): New function.
31306
31307	* mpz/Makefile.in: Compile urandom.c
31308
31309	* mpf/urandom.c (mpf_urandomb): New function.
31310
31311	* mpf/Makefile.in: Compile urandom.c.
31312
31313	* gmp.h (__gmp_rand_state_struct, __gmp_rand_scheme_struct): New
31314	structs for randomization functions.
31315	(gmp_rand_dist, gmp_rand_alogrithm): New enums for randomization
31316	functions.
31317	(mpz_urandomb, mpf_urandomb): Add prototype.
31318	(gmp_rand_init, gmp_rand_clear): Add prototype.
31319
31320	* tests/rand/gen.c, stat.c, statlib.c, statlib.h: New files.
31321	* tests/rand/Makefile, tests/rand/ChangeLog: New files.
31322
313231999-03-15  Torbjorn Granlund  <tege@matematik.su.se>
31324
31325	* .gdbinit: New file.
31326
31327	* mpz/dump.c: New file.
31328	* mpz/Makefile.in: Compile dump.c.
31329	* make.bat: Likewise.
31330	* gmp.h (mpz_dump): Declare.
31331
313321999-03-14  Torbjorn Granlund  <tege@matematik.su.se>
31333
31334	* mpz/tests/reuse.c: Also test mpz_invert and mpz_divexact.
31335
31336	* mpz/tests/convert.c: Update to GMP 2 variable syntax.
31337
313381999-03-13  Torbjorn Granlund  <tege@matematik.su.se>
31339
31340	* mpf/README: New file.
31341	* mpz/README: New file.
31342
31343	* mpf/pow_ui.c: New file.
31344	* mpf/Makefile.in: Compile pow_ui.c.
31345	* make.bat: Likewise.
31346	* gmp.h (mpf_pow_ui): Declare.
31347
313481999-03-12  Torbjorn Granlund  <tege@matematik.su.se>
31349
31350	* mpn/configure.in: Stage 1 of rewrite.
31351	* mpn/underscore.h: New name for bsd.h.
31352	* mpn/sysv.h: Deleted.
31353
31354	* mpn/m68k/*: Don't include sysdep.h.
31355
31356	* mpn/pa64/README: New file.
31357
313581999-03-11  Torbjorn Granlund  <tege@matematik.su.se>
31359
31360	* mpn/powerpc32/add_n.S: Add support for both AIX and ELF syntax.
31361	Renamed from `.s'.
31362	* mpn/powerpc32/sub_n.S: Likewise.
31363	* mpn/powerpc32/lshift.S: Likewise.
31364	* mpn/powerpc32/rshift.S: Likewise.
31365	* mpn/powerpc32/mul_1.S: Likewise.
31366	* mpn/powerpc32/addmul_1.S: Likewise.
31367	* mpn/powerpc32/submul_1.S: Likewise.
31368
31369	* mpn/powerpc32/umul.S: New file.
31370	* mpn/sparc32/v8/umul.S: New file.
31371	* mpn/sparc32/umul.S: New file.
31372	* mpn/x86/umul.S: New file.
31373	* mpn/x86/udiv.S: New file.
31374
31375	* mpn/Makefile.in (mul_basecase.o): Delete rule.
31376
313771999-02-22  Torbjorn Granlund  <tege@matematik.su.se>
31378
31379	* configure.in (hppa2.0*-*-*): Force use of GCC.
31380
31381	* extract-dbl.c: Handle IEEE denormalized numbrs.  Clean up.
31382
313831998-12-02  Torbjorn Granlund  <tege@matematik.su.se>
31384
31385	* mpn/Makefile.in (CCAS): New macro.
31386	(.s.o): Use CCAS.
31387	(.S.o): Likewise.
31388
31389	* mpn/Makefile.in (mul_basecase.o): Add dependency.
31390	(sqr_basecase.o): Likewise.
31391	(mod_1.o): Likewise.
31392
31393	* demos/pexpr.c (cputime): Test also __hpux.
31394	(cleanup_and_exit): Check SIGXCPU only #ifdef LIMIT_RESOURCE_USAGE.
31395
31396	* mpz/tests/t-2exp.c: Use urandom, not random.
31397
31398	* mpn/configure.in (arm*-*-*): New alternative.
31399
314001998-11-30  Torbjorn Granlund  <tege@matematik.su.se>
31401
31402	* gmp-impl.h (union ieee_double_extract): Special case for
31403	little-endian arm.
31404	(LIMBS): Alias for PTR.
31405
314061998-11-26  Torbjorn Granlund  <tege@matematik.su.se>
31407
31408	* longlong.h (m68000 umul_ppmm): Use `muluw', not `mulu'.
31409	(m68k stuff): Clean up; add coldfire support.
31410
314111998-11-23  Torbjorn Granlund  <tege@matematik.su.se>
31412
31413	* mpn/mips3/gmp-mparam.h (KARATSUBA_MUL_THRESHOLD): #define.
31414	(KARATSUBA_SQR_THRESHOLD): #define.
31415
31416	* mpn/sparc32/v9/README: New file.
31417
314181998-11-20  Torbjorn Granlund  <tege@matematik.su.se>
31419
31420	* mpn/x86/README: New file.
31421
31422	* mpn/arm/gmp-mparam.h: New file.
31423	* mpn/pa64/gmp-mparam.h: New file.
31424	* mpn/hppa/gmp-mparam.h: New file.
31425	* mpn/x86/pentium/gmp-mparam.h: New file.
31426	* mpn/sparc32/v9/gmp-mparam.h: New file.
31427	* mpn/powerpc32/gmp-mparam.h: New file.
31428	* mpn/x86/p6/gmp-mparam.h: New file.
31429
31430	* mpn/alpha/gmp-mparam.h (KARATSUBA_MUL_THRESHOLD): #define.
31431	(KARATSUBA_SQR_THRESHOLD): #define.
31432
31433	* mpn/configure.in: Point to x86/p6 when appropriate.
31434
31435	* mpn/power/umul.s: New file.
31436	* mpn/power/sdiv.s: New file.
31437	* mpn/pa64/addmul_1.S: New file.
31438	* mpn/pa64/submul_1.S: New file.
31439	* mpn/pa64/mul_1.S: New file.
31440	* mpn/pa64/udiv_qrnnd.c: New file.
31441	* mpn/pa64/umul_ppmm.S: New file.
31442	* mpn/mips2/umul.s: New file.
31443	* mpn/m68k/mc68020/umul.s: New file.
31444	* mpn/m68k/mc68020/udiv.s: New file.
31445	* mpn/hppa/hppa1_1/umul.s: New file.
31446	* mpn/alpha/umul.s: New file.
31447	* mpn/a29k/udiv.s: New file.
31448	* mpn/a29k/umul.s: New file.
31449
314501998-11-17  Torbjorn Granlund  <tege@matematik.su.se>
31451
31452	* mpn/x86/mul_basecase.S: New file for non-pentiums.
31453	* mpn/x86/mul_basecase.S: Move to mpn/x86/pentium.
31454
314551998-11-16  Torbjorn Granlund  <tege@matematik.su.se>
31456
31457	* make.bat: Compile mul_basecase.c and sqr_basecase.c.
31458
314591998-11-10  Torbjorn Granlund  <tege@matematik.su.se>
31460
31461	* mpz/invert.c: Defer writing to parameter `invert' until
31462	end.
31463
314641998-11-03  Torbjorn Granlund  <tege@matematik.su.se>
31465
31466	* mpn/pa64/udiv_qrnnd.c: Handle more border cases.
31467
314681998-10-29  Torbjorn Granlund  <tege@matematik.su.se>
31469
31470	* insert-dbl.c: Special case biased exponents < 1; Get boundary for
31471	Inf right.
31472
31473	* longlong.h (COUNT_LEADING_ZEROS_NEED_CLZ_TAB): New #define.
31474
314751998-10-28  Torbjorn Granlund  <tege@matematik.su.se>
31476
31477	* mpn/powerpc32/submul_1.s: Rewrite, optimizing for PPC604.
31478	* mpn/powerpc32/addmul_1.s: Likewise.
31479	* mpn/powerpc32/lshift.s: Likewise.
31480
314811998-10-23  Torbjorn Granlund  <tege@matematik.su.se>
31482
31483	* config/mt-sprc9-gcc (XCFLAGS): Add -Wa,-xarch=v8plus.
31484
31485	* mpn/sparc32/v9/submul_1.s: New file.
31486
314871998-10-21  Torbjorn Granlund  <tege@matematik.su.se>
31488
31489	* mpn/config/mt-pa2hpux: New file.
31490	* mpn/configure.in (hppa2.0*-*-*): Use new 64-bit code.
31491
31492	* config.sub: Recognize hppa2.0 as CPU type.
31493
31494	* longlong.h (64-bit hppa): Add umul_ppmm and udiv_qrnnd.
31495	* mpn/pa64/mul_1.S: New file.
31496	* mpn/pa64/addmul_1.S: New file.
31497	* mpn/pa64/submul_1.S: New file.
31498	* mpn/pa64/umul_ppmm.S: New file.
31499	* mpn/pa64/udiv_qrnnd.c: New file.
31500
315011998-10-20  Torbjorn Granlund  <tege@matematik.su.se>
31502
31503	* mpz/pprime_p.c: Pass 1L, not 1, to mpz_cmp_ui.
31504
31505	* mpz/fdiv_q_2exp.c: Cast `long' argument to `mp_limb_t' for mpn calls.
31506	* mpz/gcd_ui.c: Likewise.
31507	* mpz/add_ui.c: Likewise.
31508	* mpz/sub_ui.c: Likewise.
31509
315101998-10-19  Torbjorn Granlund  <tege@matematik.su.se>
31511
31512	* mpn/generic/bdivmod.c: Avoid using switch statement with mp_limb_t
31513	index.
31514
315151998-10-17  Torbjorn Granlund  <tege@matematik.su.se>
31516
31517	* mpn/sparc32/v9/mul_1.s: Misc cleanups.
31518	* mpn/sparc32/v9/addmul_1.s: Misc cleanups.
31519
315201998-10-16  Torbjorn Granlund  <tege@matematik.su.se>
31521
31522	* mpn/tests/{add,sub,}mul_1.c: Print xlimb using mpn_print.
31523
31524	* mpz/tests/t-powm.c (SIZE): Increase to 50.
31525	(EXP_SIZE): New parameter; use it for computing exp_size.
31526
315271998-10-15  Torbjorn Granlund  <tege@matematik.su.se>
31528
31529	* mpn/generic/divrem_newt.c: Use TMP_ALLOC interface.
31530
31531	* mpn/generic/sqrtrem.c: Check BITS_PER_MP_LIMB before defining
31532	assembly variants of SQRT.
31533
315341998-10-14  Torbjorn Granlund  <tege@matematik.su.se>
31535
31536	* mpn/tests: Clean up timing routines.  Don't include longlong.h
31537	where it is not needed.
31538	(mpn_print): Handle printing when _LONG_LONG_LIMB.
31539	* mpn/tests/{add,sub,}mul_1.c: Generate xlimb with mpn_random2
31540	and do it whether TIMES != 1 or not.
31541
31542	* mpn/generic/mul_n.c: Delay assignment of `sign' for lower
31543	register pressure.
31544
31545	* mpn/sparc32/v9/mul_1.s: New file.
31546
31547	* config/mt-sprc9-gcc: New file.
31548	* configure.in: Use it.
31549
31550	* mpn/configure.in: Use sparc64 for Solaris 2.7 and later with a
31551	sparc v9 CPU.
31552	* mpn/configure.in: Use sparc32/v9 for Solaris 2.6 or earlier with
31553	a sparc v9 CPU.
31554
31555	* mpf/sub.c: In initial code for ediff == 0, limit precision
31556	before jumping to `normalize'.
31557
315581998-10-13  Torbjorn Granlund  <tege@matematik.su.se>
31559
31560	* mpn/hppa/hppa2_0/add_n.s: New file.
31561	* mpn/hppa/hppa2_0/sub_n.s: New file.
31562	* mpn/configure.in: Handle hppa2.0 (32-bit code for now).
31563
31564	* config.guess: Update from egcs 1.1.
31565	(9000/[3478]??:HP-UX:*:*): Properly return 2.0 for all known 2.0
31566	machines.
31567
315681998-10-07  Torbjorn Granlund  <tege@matematik.su.se>
31569
31570	* mpz/root.c (mpz_root): New file.
31571	* mpz/Makefile.in: Compile it.
31572	* make.bat: Likewise.
31573	* gmp.h (mpz_root): Declare.
31574
31575	* mpz/perfpow.c: New file.
31576	* mpz/Makefile.in: Compile it.
31577	* make.bat: Likewise.
31578	* gmp.h (mpz_perfect_power_p): Declare.
31579
31580	* mpz/remove.c: New file.
31581	* mpz/Makefile.in: Compile it.
31582	* make.bat: Likewise.
31583	* gmp.h (mpz_remove): Declare.
31584
31585	* mpz/bin_ui.c: New file.
31586	* mpz/Makefile.in: Compile it.
31587	* make.bat: Likewise.
31588	* gmp.h (mpz_bin_ui): Declare.
31589
31590	* mpz/bin_uiui.c: New file.
31591	* mpz/Makefile.in: Compile it.
31592	* make.bat: Likewise.
31593	* gmp.h (mpz_bin_uiui): Declare.
31594
315951998-09-16  Torbjorn Granlund  <tege@matematik.su.se>
31596
31597	* longlong.h: Test for __powerpc__ in addition to _ARCH_PPC.
31598
31599Sat Sep  5 17:22:28 1998  Torbjorn Granlund  <tege@matematik.su.se>
31600
31601	* mpf/cmp_si.c: Compare most significant mantissa limb before
31602	trying to deduce anything from the limb count.
31603	* mpf/cmp_ui.c: Likewise.
31604
31605Tue Aug 18 10:24:39 1998  Torbjorn Granlund  <tege@matematik.su.se>
31606
31607	* mpz/pprime_p.c (mpz_probab_prime_p): Add new code block
31608	for doing more dividing.
31609
31610Sat Aug 15 18:43:17 1998  Torbjorn Granlund  <tege@matematik.su.se>
31611
31612	* mpn/generic/divrem_newt.c: New name for divrem_newton.c.
31613	* mpn/Makefile.in: Corresponding changes.
31614	* mpn/configure.in: Likewise.
31615
31616Wed Aug 12 23:07:09 1998  Torbjorn Granlund  <tege@matematik.su.se>
31617
31618	* config.guess: Handle powerpc for NetBSD.
31619
31620Tue Jul 28 23:10:55 1998  Torbjorn Granlund  <tege@matematik.su.se>
31621
31622	* mpz/fib_ui.c: New file.
31623	* mpz/Makefile.in: Compile it.
31624	* make.bat: Likewise.
31625	* gmp.h (mpz_fib_ui): Declare.
31626
31627Wed Jun 17 22:52:58 1998  Torbjorn Granlund  <tege@matematik.su.se>
31628
31629	* make.bat: Fix typo, `asm-synt.h' => `asm-syntax.h'.
31630
31631Wed Jun  3 11:27:32 1998  Torbjorn Granlund  <tege@matematik.su.se>
31632
31633	* config/mt-pwr: New file.
31634	* config/mt-ppc: New file.
31635	* configure.in: Use the new files.
31636
31637Tue Jun  2 13:04:17 1998  Torbjorn Granlund  <tege@matematik.su.se>
31638
31639	* mpn/sparc32/v9/addmul_1.s: New file.
31640	* mpn/config/mt-sprc9: New file.
31641	* mpn/configure.in: Use mt-sprc9.
31642
31643Tue May 26 11:24:18 1998  Torbjorn Granlund  <tege@matematik.su.se>
31644
31645	* demos/factorize.c (factor_using_pollard_rho): Pass correct
31646	parameters in recursive calls; join the two recursion arms.
31647
31648	* mpf/set_q.c: Set result sign.
31649	When normalizing the numerator, don't allow it to increase in size
31650	beyond prec.
31651
31652Tue May 19 17:28:14 1998  Torbjorn Granlund  <tege@matematik.su.se>
31653
31654	* demos/factorize.c (factor_using_division): Call fflush
31655	also for the factor 2.
31656
31657Mon May 18 15:51:01 1998  Torbjorn Granlund  <tege@matematik.su.se>
31658
31659	* make.bat: Pass -fomit-frame-pointer.  Do not pass -g.
31660
31661Tue May  5 01:42:50 1998  Torbjorn Granlund  <tege@matematik.su.se>
31662
31663	* mpz/Makefile.in (LOCAL_CC): Remove definition.
31664
31665	* gmp.h: Get rid of GMP_SMALL stuff.
31666	* mpz/Makefile.in: Likewise.
31667	* mpq/Makefile.in: Likewise.
31668	* mpf/Makefile.in: Likewise.
31669
31670	* mpz/invert.c: Fix typo in comment.
31671
31672Mon May  4 23:05:32 1998  Torbjorn Granlund  <tege@matematik.su.se>
31673
31674	* mpn/generic/sqrtrem.c: Check that __arch64__ is not defined
31675	before defining sparc SQRT.
31676
31677Mon Apr 20 19:16:17 1998  Torbjorn Granlund  <tege@matematik.su.se>
31678
31679	* mpn/generic/gcdext.c: Allow gp to be NULL.
31680
316811998-04-03  Torbjorn Granlund  <tege@matematik.su.se>
31682
31683	* mpn/configure.in: Recognize `alphaev5*', not `alphaev5'.
31684
31685	* config.guess: Handle CPU variants for NetBSD.
31686
31687Mon Mar 16 13:07:54 1998  Torbjorn Granlund  <tege@matematik.su.se>
31688
31689	* mpz/pprime_p.c: Use mpn_mod_1/mpn_preinv_mod_1 for computing mod PP,
31690	not mpz_tdiv_r_ui (which expects an `unsigned long').
31691	(mpz_probab_prime_p): Change type of `r' to mp_limb_t.
31692
31693Thu Mar 12 17:19:04 1998  Torbjorn Granlund  <tege@matematik.su.se>
31694
31695	* gmp.h (mpf_ceil, mpf_floor, mpf_trunc): Add declarations.
31696
31697	* config.guess: Update from FSF version.
31698	* config.sub: Likewise.
31699
31700	* config.guess: Add special handling of alpha-*-NetBSD.
31701
31702Wed Mar 11 00:55:34 1998  Torbjorn Granlund  <tege@matematik.su.se>
31703
31704	* mpz/inp_str.c: Update from set_str.c.
31705	Properly increment `nread' when skipping minus sign.
31706
31707	* mpz/set_str.c: Check for empty string after having skipped
31708	leading zeros.
31709
31710Mon Mar  9 19:28:00 1998  Torbjorn Granlund  <tege@matematik.su.se>
31711
31712	* mpz/set_str.c: Skip leading zeros.
31713
31714Wed Mar  4 19:29:16 1998  Torbjorn Granlund  <tege@matematik.su.se>
31715
31716	* gmp.h (mpz_cmp_si): Cast argument before calling mpz_cmp_ui.
31717
31718	* demos/factorize.c: Rewrite.
31719
317201998-02-04  Torbjorn Granlund  <tege@matematik.su.se>
31721
31722	* configure.in (i[3456]86* etc): Check if using gcc before
31723	choosing mt-x86.
31724
31725	* configure.in (m68*-*-*): New alternative.
31726	* config/mt-m68k: New file.
31727
31728	* mpn/alpha/invert-limb.s: Put tables in text segment,
31729	since not all systems support "rdata".
31730
31731Wed Feb  4 02:20:57 1998  Torbjorn Granlund  <tege@matematik.su.se>
31732
31733	* gmp.h (__GNU_MP_VERSION_SNAP): New #define.
31734	(__GNU_MP_VERSION_MINOR): Now 1.
31735
31736Wed Jan 28 22:29:36 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
31737
31738	* longlong.h (alpha udiv_qrnnd): #define UDIV_NEEDS_NORMALIZATION.
31739
31740Wed Jan 28 20:28:19 1998  Torbjorn Granlund  <tege@sophie.matematik.su.se>
31741
31742	* mpz/pprime_p.c (mpz_probab_prime_p): Delete 59 from tried divisors.
31743
31744Mon Jan 26 01:39:02 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
31745
31746	* mpz/pprime_p.c (mpz_probab_prime_p): Major overhaul: Check small
31747	numbers specifically; check small factors, then perform a fermat test.
31748
31749Tue Jan 13 14:58:28 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
31750
31751	* longlong.h (alpha udiv_qrnnd): Call __mpn_invert_normalized_limb
31752	and udiv_qrnnd_preinv.
31753
31754Wed Jan  7 01:52:54 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
31755
31756	* mpn/configure.in (alpha*, extra_functions): Add invert-limb and
31757	remove udiv_qrnnd.
31758
31759	* mpn/tests/divrem.c: Get allocations right.
31760
31761	* mpn/generic/divrem.c: Conditionally pre-invert most significant
31762	divisor limb.
31763
31764Tue Jan  6 23:08:54 1998  Torbjorn Granlund  <tege@tunnis.tmg.se>
31765
31766	* mpn/generic/divrem_1.c: Rename variables to comply to conventions.
31767	Make `i' have type `mp_size_t'.
31768
31769Tue Dec 30 22:21:42 1997  Torbjorn Granlund  <tege@matematik.su.se>
31770
31771	* mpz/tdiv_qr_ui.c: Return the remainder.
31772	* mpz/tdiv_r_ui.c: Likewise.
31773	* mpz/tdiv_q_ui.c: Likewise.
31774	* gmp.h: Change return type of mpz_tdiv_qr_ui, mpz_tdiv_r_ui,
31775	mpz_tdiv_q_ui.
31776
31777	* mpz/tdiv_ui.c: New file.
31778	* mpz/Makefile.in: Compile it.
31779	* make.bat: Likewise.
31780	* gmp.h (mpz_tdiv_ui): Declare.
31781
31782Fri Nov  7 04:21:15 1997  Torbjorn Granlund  <tege@matematik.su.se>
31783
31784	* mpf/integer.c (FUNC_NAME): Fix bogus test for mpf_trunc.
31785
31786	* demos/isprime.c: New file.
31787
31788	Sat Nov  1 19:32:25 1997  Torbjorn Granlund  <tege@matematik.su.se>
31789
31790	* mpz/cmp_abs.c: New file.
31791	* mpz/Makefile.in: Compile it.
31792	* make.bat: Likewise.
31793	* gmp.h (mpz_cmp_abs): Declare.
31794
31795	* mpz/cmp_abs_ui.c: New file.
31796	* mpz/Makefile.in: Compile it.
31797	* make.bat: Likewise.
31798	* gmp.h (mpz_cmp_abs_ui): Declare.
31799
31800Sat Sep 27 04:49:52 1997  Torbjorn Granlund  <tege@tunnis.tmg.se>
31801
31802	* mpz/fdiv_r_2exp.c: Get allocation for `tmp' right.
31803
31804	* mpz/fdiv_q_2exp.c: In final result adjustment code, handle
31805	that intermediate result is zero.
31806
31807	* mpz/tests/t-2exp.c: New file.
31808	* mpz/tests/Makefile.in: Handle t-2exp.c.
31809
31810Fri Sep 26 16:29:21 1997  Torbjorn Granlund  <tege@tunnis.tmg.se>
31811
31812	* mpz/divexact.c: Fix typo in test for whether to copy numerator to
31813	quotient and move that statement to after handling quotient and
31814	denominator overlap.  Misc cleanups.
31815
31816	* mpn/generic/gcd.c: Change count argument of mpn_lshift/mpn_rshift
31817	calls to `unsigned int'.
31818	* mpz/divexact.c: Likewise.
31819
31820Mon Sep 22 02:19:52 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31821
31822	* mpz/tests/t-powm.c: Decrease `reps' to 2500.
31823
31824	* mpz/tests/t-pow_ui.c: New file.
31825	* mpz/tests/Makefile.in: Handle t-pow_ui.c.
31826
31827	* mpz/ui_pow_ui.c: Get special cases for exponent and base right.
31828
31829	* mpz/pow_ui.c: Increase temp space allocation by 1 limb.
31830	Split `rsize' into two variables; compute space allocation into
31831	`ralloc'.
31832
31833Sun Sep  7 04:15:12 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31834
31835	* mpn/pa64/lshift.s: New file.
31836	* mpn/pa64/rshift.s: New file.
31837	* mpn/pa64/sub_n.s: New file.
31838
31839Sat Sep  6 19:14:13 1997  Torbjorn Granlund  <tege@gmp.tmg.se>
31840
31841	* mpn/pa64/add_n.s: New file.
31842	* mpn/pa64: New directory.
31843
31844Tue Aug 19 16:17:09 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31845
31846	* mpz/swap.c: New file.
31847	* mpz/Makefile.in: Compile it.
31848	* make.bat: Likewise.
31849	* gmp.h (mpz_swap): Declare.
31850
31851	* mpn/generic/mul_n.c: Push assignment of x and y pointers into the
31852	if/else clauses in several places.  (Decreases register pressure.)
31853
31854Mon Aug 18 03:29:50 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31855
31856	* mpn/thumb/add_n.s: New file.
31857	* mpn/thumb/sub_n.s: New file.
31858	* mpn/arm/add_n.s: New file.
31859	* mpn/arm/sub_n.s: New file.
31860
31861	* mpz/powm.c: After mpn_mul_n and mpn_mul calls, adjust product size
31862	if most significant limb is zero.
31863	* mpz/powm_ui.c: Likewise.
31864
31865Fri Aug 15 02:13:57 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31866
31867	* mpn/arm/m/mul_1.s: New file.
31868	* mpn/arm/m/addmul_1.s: New file.
31869
31870	* mpn/powerpc32/mul_1.s: Rewrite.
31871
31872	* mpn/alpha/mul_1.s: Prefix labels with `.'.
31873
31874Mon Aug 11 02:37:16 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31875
31876	* mpn/powerpc32/add_n.s: Rewrite.
31877	* mpn/powerpc32/sub_n.s: Rewrite.
31878
31879Sun Aug 10 17:07:15 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31880
31881	* mpn/powerpc32/addmul_1.s: Delete obsolete comments.
31882	* mpn/powerpc32/submul_1.s: Likewise.
31883
31884Fri Jul 25 20:07:54 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31885
31886	* mpz/addmul_ui.c: New file.
31887	* mpz/Makefile.in: Compile it.
31888	* make.bat: Likewise.
31889	* gmp.h (mpz_addmul_ui): Declare.
31890
31891	* mpz/setbit.c: Add missing code after final `else'.
31892
31893Tue Jul 22 17:45:01 1997  Torbjorn Granlund  <tege@tunnis.tmg.se>
31894
31895	* mpn/sh/add_n.s: Fix typo.
31896	* mpn/sh/sub_n.s: Likewise.
31897
31898	* longlong.h (ns32k count_trailing_zeros): Fix typo.
31899
31900	* insert-dbl.c: Check for exponent overflow and return Inf.
31901
31902	* mpz/get_d.c: Rewrite to avoid rounding errors.
31903
31904Thu May 29 11:51:07 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31905
31906	* mpq/add.c: Swap some usages of tmp1 and tmp2 to make sure
31907	their allocation suffices.
31908	* mpq/sub.c: Likewise.
31909
31910Wed Apr 16 02:24:25 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31911
31912	* demos/pexpr.c: New file.
31913
31914	* mpn/generic/mul_n.c: Misc optimizations from Robert Harley.
31915
31916	* gmp-impl.h (MPZ_PROVOKE_REALLOC): New #define.
31917
31918Sat Apr 12 17:54:04 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31919
31920	* mpz/tstbit.c: New file.
31921	* mpz/Makefile.in: Compile it.
31922	* make.bat: Likewise.
31923	* gmp.h (mpz_tstbit): Declare.
31924
31925	* mpz/tests/logic.c: Use MPZ_CHECK_FORMAT.
31926	* mpz/tests/bit.c: New test.
31927	* mpz/tests/Makefile.in: Handle bit.c.
31928
31929	* mpz/ior.c: In -OP2,+OP1 case, normalize OP2 after call to mpn_sub_1.
31930
31931	* gmp-impl.h (MPZ_CHECK_FORMAT): New #define.
31932
31933Thu Apr 10 00:30:14 1997  Torbjorn Granlund  <tege@tmg.se>
31934
31935	* longlong.h (POWER/PowerPC): Test _ARCH_PWR instead of _IBMR2.
31936
31937Wed Apr  9 18:23:31 1997  Torbjorn Granlund  <tege@pro.tmg.se>
31938
31939	* gmp-impl.h: Move defaulting of UMUL_TIME and UDIV_TIME from here...
31940	* longlong.h: ...to here.
31941
31942Sun Mar 30 12:16:23 1997  Torbjorn Granlund  <tege@matematik.su.se>
31943
31944	* mpn/generic/next_prime.c: New file.
31945
31946	* mpn/generic/perfsqr.c: Remove definitions of PP and PP_INVERTED.
31947	* gmp-impl.h: Put them here.
31948
31949Fri Mar 28 08:18:05 1997  Torbjorn Granlund  <tege@matematik.su.se>
31950
31951	* gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR): Define as inline asm for
31952	for x86, but leave disabled for now.
31953
31954Fri Feb 28 02:39:47 1997  Torbjorn Granlund  <tege@matematik.su.se>
31955
31956	* mpn/Makefile.in (.S.o): Pass SFLAGS and CFLAGS also to compiler
31957	for assembly phase.
31958	(.s.o): Pass SFLAGS.
31959
31960Wed Feb 26 06:46:08 1997  Torbjorn Granlund  <tege@matematik.su.se>
31961
31962	* mpn/configure.in: For Pentium Pro, use default code, not Pentium
31963	optimized code.
31964
31965	* mpn/x86/addmul_1.S: Unroll and optimize for Pentium Pro.
31966	* mpn/x86/submul_1.S: Likewise.
31967
31968Thu Feb 13 08:26:09 1997  Torbjorn Granlund  <tege@matematik.su.se>
31969
31970	* mpf/Makefile.in: Compile floor.o, ceil.o and trunc.o (from
31971	integer.c).
31972	* make.bat: Likewise.
31973
31974Wed Feb  5 05:58:44 1997  Torbjorn Granlund  <tege@matematik.su.se>
31975
31976	* mpn/configure.in (alpha*): Add cntlz to extra_functions.
31977
31978Wed Feb  4 03:30:45 1997  Torbjorn Granlund  <tege@matematik.su.se>
31979
31980	* mpf/integer.c: New file (supporting mpf_floor, mpf_ceil, mpf_trunc).
31981
31982Mon Feb  3 14:21:36 1997  Torbjorn Granlund  <tege@matematik.su.se>
31983
31984	* make.bat: Fix typo, set_dfl_prc => set_dfl_prec.
31985
31986Sun Feb  2 02:34:33 1997  Torbjorn Granlund  <tege@matematik.su.se>
31987
31988	* mpf/out_str.c: After outputting `-', decrement n_digits.
31989
31990Wed Jan  8 02:50:20 1997  Torbjorn Granlund  <tege@quiet.matematik.su.se>
31991
31992	* mpn/generic/divrem.c: qextra_limbs => qxn.
31993
31994Wed Dec 18 07:50:46 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
31995
31996	* mpz/tests/t-tdiv.c (SIZE): Increase to 200.
31997
31998Tue Dec 17 19:32:48 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
31999
32000	* mpn/generic/divrem.c (mpn_divrem_classic): New name for mpn_divrem.
32001	* gmp.h (mpn_divrem): New function.
32002	* mpn/generic/divrem_newton.c: New file.
32003	* mpn/configure.in (functions): Add divrem_newton.
32004	* make.bat: Likewise.
32005
32006Thu Dec 12 17:55:13 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32007
32008	* gmp.h (_GMP_H_HAVE_FILE): Test also __dj_include_stdio_h_.
32009
32010Sat Dec  7 09:40:06 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32011
32012	* mpn/alpha/invert-limb.s: New file.
32013
32014Thu Dec  5 01:25:31 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32015
32016	* mpz/ui_pow_ui.c (mpz_pow2): New (static) function.
32017	(mpz_ui_pow_ui): Rewrite.
32018
32019	* make.bat: `pre_mod_1.c' => `pre_mod_.c'.  Fix typo in path to
32020	gmp-mpar.h.
32021
32022Fri Nov 15 00:49:55 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32023
32024	* mpz/ui_pow_ui.c: Rewrite for better speed.
32025
32026Fri Nov  1 16:36:56 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32027
32028	* Makefile.in (recursive make rules): Use `&&' instead of `;' as
32029	delimiter.
32030
32031Fri Oct 25 17:12:36 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32032
32033	* gmp-impl.h (Cray/uxp MPN_COPY): Really declare as inline.
32034
32035Thu Oct 24 15:08:19 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32036
32037	* mpn/fujitsu/rshift.c: Fix typo in loop boundaries.
32038
32039Fri Oct 18 03:13:54 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32040
32041	* mpn/configure.in: Recognize `nextstep' for m68k variants; likewise
32042	for x86 variants.
32043
32044	* mpn/x86/syntax.h (INSND): New macro.
32045	* mpn/x86/[lr]shift.S: Use INSND.
32046	* mpn/x86/pentium/[lr]shift.S: Likewise.
32047	* mpn/config/t-oldgas (SFLAGS): Pass -DOLD_GAS.
32048
32049	* gmp-impl.h: In code for determining endianness, test also
32050	__BIG_ENDIAN__ and __hppa__.  Remove test of __NeXT__.
32051
32052Wed Oct 16 03:50:34 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32053
32054	* mpf/set_str.c: Let `prec' determine precision used in
32055	exponentiation code; decrease allocation accordingly.
32056
32057	* mpn/vax: Change `jsob*' to `sob*' in all files.
32058
32059Tue Oct 15 03:54:06 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32060
32061	* longlong.h (m88110 udiv_qrnnd): Change type of intermediate quotient
32062	to DImode (divu.d generates a 64-bit quotient).
32063
32064	* configure.in (m88110*): Fix typo.
32065
32066	* mpf/get_str.c: Compute exp_in_base using `double' to avoid overflow.
32067
32068	* gmp-impl.h (struct bases): Change type of chars_per_bit_exactly from
32069	float to double.
32070	* mpn/mp_bases.c (__mp_bases): Give 17 digits for chars_per_bit_exactly
32071	field.
32072
32073	* mpf/get_str.c: Let `prec' determine precision used in
32074	exponentiation code; decrease allocation accordingly.
32075
32076Sun Oct 13 03:31:53 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32077
32078	* longlong.h: Major cleanup.
32079	(__udiv_qrnnd_c): Compute remainders using multiply and subtract,
32080	not explicit `%' operator.
32081	(C umul_ppmm): Get rid of a redundant __ll_lowpart.
32082
32083	* mpz/invert.c: Properly detect all operands that would yield an
32084	undefined inverse; make sure the inverse is always positive.
32085
32086	* mpz/xor.c: New file.
32087	* mpz/Makefile.in: Compile it.
32088	* make.bat: Likewise.
32089	* gmp.h (mpz_xor): Declare.
32090
32091	* mpz/tests/logic.c: Also test mpz_xor.
32092
32093	* mpz/lcm.c: Special case for when either operand equals 0.
32094
32095Sat Oct 12 01:57:09 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32096
32097	* mpn/generic/gcd.c (find_a): Don't inline on x86.
32098
32099	* Makefile.in (CFLAGS): Default to just `-g'.
32100
32101	* configure.in: Recognize 386 and 486 wherever other x86 cpus are
32102	recognized.
32103	* configure.in: Use mt-x86 for all x86 cpus.
32104	* config/mt-x86: New file.
32105
32106	* mpn/alpha/cntlz.s: New file.
32107
32108Tue Oct  8 00:16:18 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32109
32110	* longlong.h: Define smul_ppmm for Fujitsu vpp/uxp.
32111	Rewrite umul_ppmm to actually work on the hardware.
32112
32113	* mpn/x86/sub_n.S: Avoid parens around displacement of `leal'.
32114	* mpn/x86/add_n.S: Likewise.
32115
32116	* mpn/x86/syntax.h (R): Define differently depending on __STDC__.
32117
32118Mon Oct  7 16:48:08 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32119
32120	* longlong.h: Don't test for __NeXT__ in outer 68k conditional;
32121	add test for __m68k__.
32122
32123Sun Oct  6 00:59:09 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32124
32125	* gmp.h: Declare mpn_random.
32126	* make.bat: Compile mpn/generic/random.c.
32127
32128	* longlong.h: Define umul_ppmm for Fujitsu vpp/uxp.
32129
32130	* gmp-impl.h: Protect definitions using `__attribute__ ((mode (...)))'
32131	with test also for __GNUC_MINOR__.
32132
32133	* gmp.h: Don't define macros using __builtin_constant_p when using
32134	NeXT's compiler.
32135
32136Fri Oct  4 16:53:50 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32137
32138	* mpz/lcm.c: New file.
32139	* mpz/Makefile.in: Compile it.
32140	* make.bat: Likewise.
32141	* gmp.h (mpz_lcm): Declare.
32142
32143Wed Sep 25 00:06:21 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32144
32145	* mpq/tests/t-cmp_ui.c: Make sure numerator and denominator of `b' is
32146	within limits of an `unsigned long int'.
32147
32148	* mpz/tests/t-powm_ui.c: Change type of exp2 to `unsigned long int'.
32149
32150Tue Sep 24 18:58:20 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32151
32152	* mpz/powm_ui.c: Make result always positive.
32153
32154	* urandom.h (urandom): Make it return mp_limb_t.
32155
32156	* gmp-impl.h (CNST_LIMB): New macro.
32157	* mpn/mp_bases.c: Use CNST_LIMB.
32158	* mpn/generic/hamdist.c (popc_limb): Likewise.
32159	* mpn/generic/popcount.c (popc_limb): Likewise.
32160	* mpn/generic/perfsqr.c: Likewise.
32161
32162Fri Sep 20 03:08:10 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32163
32164	* mpz/pprime_p.c: When n <= 3, don't clear out n before using it.
32165
32166Wed Sep 18 11:22:45 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32167
32168	* mpn/fujitsu/mul_1.c: New file.
32169	* mpn/fujitsu/addmul_1.c: New file.
32170	* mpn/fujitsu/sub_n.c: New file.
32171	* mpn/fujitsu/add_n.c: Mew file.
32172
32173Sun Sep 15 03:13:02 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32174
32175	* mpn/generic/random.c: New file.
32176	* mpn/configure.in (functions): Add `random'.
32177
32178	* gmp-impl.h (MPN_COPY): Define as annotated inline function for
32179	Crays and Fujitsu VPPs.
32180
32181	* gmp.h (mp_size_t): Define as `int' for non-MPP Cray.
32182	(mp_exp_t): Likewise.
32183
32184	* configure.in: Add support for Fujitsu VPP machines.
32185	* mpn/configure.in: Likewise.
32186	* config.guess: Likewise.
32187	* config.sub: Likewise.
32188
32189	* mpn/fujitsu/rshift.c: New file.
32190	* mpn/fujitsu/lshift.c: New file.
32191	* mpn/fujitsu: New directory, for Fujitsu VPP machines.
32192
32193Wed Sep 11 11:34:38 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32194
32195	* mpn/generic/mul_n.c (__gmpn_mul_n): New name for impn_mul_n.
32196	Call __gmpn_mul_basecase, not impn_mul_n_basecase; update parameter
32197	list to work with __gmpn_mul_basecase.
32198	(__gmpn_sqr): New name for impn_sqr_n.
32199	Call __gmpn_sqr_basecase, not impn_sqr_n_basecase; update parameter
32200	list to work with __gmpn_sqr_basecase.
32201	(mpn_mul_n): Update calls to match new names and parameter conventions.
32202	* gmp-impl.h (MPN_MUL_N_RECURSE): Likewise.
32203	(MPN_SQR_RECURSE): New name for MPN_SQR_N_RECURSE.
32204	Update calls to match new names and parameter conventions.
32205	* mpn/generic/mul.c: Never perform multiply explicitly here, call
32206	__gmpn_mul_basecase instead.
32207	Update calls to match new names and parameter conventions.
32208
32209	* mpn/x86/mul_basecase.S: New file.
32210	* mpn/generic/mul_basecase.c: New file.
32211	* mpn/generic/sqr_basecase.c: New file.
32212
32213Wed Sep  4 02:59:21 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32214
32215	* mpz/set_str.c: Let `0b' and `0B' mean base 2.
32216
32217Fri Aug 30 00:44:00 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32218
32219	* longlong.h (x86 umul_ppmm): Work around GCC bug that was
32220	triggered by Aug 28 change.
32221
32222	* mpbsd/min.c (digit_value_in_base): New function.
32223
32224	* mpz/set_str.c: Refine allocation size computation, use
32225	chars_per_bit_exactly instead of chars_per_limb.
32226
32227	* mpbsd/Makefile.in (.c.o): Add -D_mpz_realloc=_mp_realloc.
32228
32229Wed Aug 28 02:52:14 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32230
32231	* longlong.h (x86 umul_ppmm): Don't cast result operands.
32232	(x86 udiv_qrnnd): Likewise.
32233	(default smul_ppmm): Fix typo, umul_ppmm => smul_ppmm.
32234	(default umul_ppmm): New #define using smul_ppmm.
32235	(vax smul_ppmm): New #define.
32236	(vax umul_ppmm): Delete.
32237	(POWER umul_ppmm): Delete.
32238	(IBM 370 smul_ppmm): New #define.
32239	(IBM 370 umul_ppmm): Delete.
32240	(IBM RT/ROMP smul_ppmm): New #define.
32241	(IBM RT/ROMP umul_ppmm): Delete.
32242
32243Tue Aug 27 01:03:25 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32244
32245	* gmp-impl.h (__gmp_0): Make it `const'.
32246
32247	* mpn/Makefile.in (clean mostlyclean): Comment out recursive clean
32248	of `tests'.
32249
32250	* mpn/generic/mul.c: Identify when we do squaring, and call
32251	impn_sqr_n_basecase/impn_sqr_n as appropriate.  Use
32252	KARATSUBA_MUL_THRESHOLD and KARATSUBA_SQR_THRESHOLD.
32253	Don't #define KARATSUBA_THRESHOLD.
32254
32255	* mpn/generic/mul_n.c: Don't #define KARATSUBA_THRESHOLD.
32256	(impn_mul_n, impn_sqr_n): Rewrite, based on code contributed by
32257	Robert Harley.
32258	(impn_sqr_n_basecase): Rewrite.
32259
32260	* gmp-impl.h (KARATSUBA_MUL_THRESHOLD): New #define.
32261	(KARATSUBA_SQR_THRESHOLD): Likewise.
32262	(MPN_SQR_N_RECURSE): Use KARATSUBA_SQR_THRESHOLD.
32263	(MPN_MUL_N_RECURSE): Use KARATSUBA_MUL_THRESHOLD.
32264
32265	* configure.in: Fix typo in last change.
32266
32267Mon Aug 26 22:25:18 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32268
32269	* mpn/generic/random2.c: Fix typo, `alpha__' => `__alpha'.
32270	* mpf/random2.c: Likewise.
32271
32272Sun Aug 25 00:07:09 1996  Torbjorn Granlund  <tege@quiet.matematik.su.se>
32273
32274	* mpz/tests/t-mul.c: Also test squaring.
32275
32276Fri Aug 16 05:12:08 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32277
32278	* mp_clz_tab.c (__clz_tab): Declare as `const'.
32279	* version.c (gmp_version): Likewise.
32280	* mpn/generic/sqrtrem.c (even_approx_tab, odd_approx_tab): Likewise.
32281
32282Thu Aug 15 02:34:47 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32283
32284	* gmp.h: Fix typo, `mips__' => `__mips'.
32285
32286	* mpf/set_str.c: Allow a number to start with a period, if next
32287	position contains a digit.
32288
32289Tue Aug 13 18:41:25 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32290
32291	* mpz/gcdext.c: Get cofactor sign right for negative input operands.
32292	Clean up code for computing tt.
32293
32294	* mpz/invert.c: Get rid of variable `rv'.
32295
32296	* mpz/divexact.c: Test for zero divisor in special case for zero
32297	dividend.
32298
32299Mon Aug 12 18:04:07 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32300
32301	* mpz/?div_*_ui.c: Special case for division by 0.
32302	* mpz/tdiv_q.c: Likewise.
32303
32304Sat Aug 10 14:45:26 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32305
32306	* mpz/dmincl.c: Special case for division by 0.
32307
32308	* mpz/tdiv_*_ui.c: Delete special case for dividend being 0; handle
32309	it when computing size after mpn_divmod_1 call.
32310
32311	* mp_bpl.c: (__gmp_junk): New variable.
32312	(__gmp_0): New constant.
32313
32314	* gmp-impl.h (DIVIDE_BY_ZERO): New #define.
32315
32316Fri Aug  9 20:03:27 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32317
32318	* mpz/divexact.c: Test for dividend being zero before testing
32319	for small divisors.
32320
32321Thu Aug  8 13:20:23 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32322
32323	* configure.in: Require operating system specification for cpus
32324	where assembly syntax differs between system.
32325
32326	* Makefile.in (many targets): Change `-' action prefix to `@'.
32327
32328	* mpn/Makefile.in: (distclean): Fix typo.
32329
32330	* mpq/cmp_ui.c: Rename function to _mpq_cmp_ui.
32331	(mpq_cmp_ui): #undef deleted.
32332	* mpz/cmp_si.c: Rename function to _mpz_cmp_si.
32333	(mpz_cmp_si): #undef deleted.
32334	* mpz/cmp_ui.c: Rename function to _mpz_cmp_ui.
32335	(mpz_cmp_ui): #undef deleted.
32336	* Makefile.in: Corresponding changes.
32337
32338	* mpf/get_prc.c: Return the *highest* precision achievable.
32339
32340	* mpf/get_str.c: Complete rewrite.
32341
32342	* mpf/set_str.c (swapptr): New #define.
32343	(assert): New #define.
32344	* mpf/set_str.c: Set prec to one more than the saved _mp_prec.
32345	Misc cleanups.
32346
32347	* mpz/set_str.c: #include string.h.
32348	* mpf/out_str.c: #include string.h.
32349	* mpbsd/xtom.c: #include string.h and ctype.h.
32350	* mpbsd/mout.c: #include string.h.
32351
32352Wed Aug  7 11:46:04 EDT 1996  Ken Weber <kweber@mcs.kent.edu>
32353
32354	* mpn/generic/gcd.c: Reorder mpn_gcd argument list.
32355	* mpz/gcd.c: Change call to mpn_gcd.
32356	* gmp.texi: Update manual entry on mpn_gcd.
32357	* mpn/generic/bdivmod.c: Delete limb cache to make mpn_bdivmod
32358	reentrant.
32359
32360Wed Aug  7 02:15:38 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32361
32362	* mpf/get_str.c: Rewrite code for converting integral part of a
32363	number with both an integral and fractional part.
32364
32365	* mpf/set_str.c: Get rid of variable xxx.  New variables madj and radj.
32366	In exp_in_base==0 case, add madj to msize for EXP field.
32367
32368	* mpz/tests/t-gcd.c: Test deleted.  Rename t-gcd2.c to t-gcd.c.
32369	Increase reps to 2000.
32370	* mpz/tests/t-gcd2.c: Get rid of mpz_refgcd.
32371
32372	* mpf/set_str.c: Ignore excess limbs in MP,MSIZE.
32373
32374Thu Jul 25 04:39:10 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32375
32376	* mpn/configure.in: Fix typo in setting path, "sparc" => "sparc32".
32377
32378Wed Jul 24 02:27:02 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32379
32380	* mpn/generic/gcdext.c: Reorganize and clean up.  Get rid of all
32381	signed limb arithmetic.
32382
32383Mon Jul 22 02:39:56 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32384
32385	* mpn/generic/gcdext.c (mpn_gcdext): For large enough operands,
32386	work with most significant *two* limbs.
32387	(div2): New function (two variants).
32388	(THRESHOLD): New #define.
32389
32390	* mpz/gcdext.c: Fix typo in MPZ_TMP_INIT call.
32391
32392	* longlong.h (alpha UMUL_TIME): Now 30.
32393	(alpha UDIV_TIME): Now 350.
32394	(x86 UMUL_TIME): Now 10 (let Pentium decide).
32395	(SuperSPARC UDIV_TIME): Override default.
32396
32397	* extract-dbl.c (MP_BASE_AS_DOUBLE): Don't redefine here.
32398
32399	* extract-dbl.c: New name for extract-double.c.
32400	* insert-dbl.c: New name for insert-double.c.
32401	* Makefile.in: Corresponding changes.
32402	* make.bat: Likewise.
32403
32404	* mpz/Makefile.in (.c.o): Don't pass non-portable `-f' to cp.
32405	* mpq/Makefile.in: Likewise.
32406	* mpf/Makefile.in: Likewise.
32407
32408Sat Jul 20 01:35:18 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32409
32410	* mpz/getlimbn.c: Take ABS of integer->_mp_size.
32411
32412	* mpz/divexact.c: Use mpn_divmod_1 if divisor is a single limb.
32413
32414Thu Jul 18 00:31:15 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32415
32416	* mpn/generic/popcount.c (popc_limb): Use different masking trick
32417	for first step (due to David Seal).
32418	* mpn/generic/hamdist.c (popc_limb): Likewise.
32419
32420Wed Jul 17 23:21:48 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32421
32422	* mpn/generic/divrem.c: In MPN_COPY_DECR call, copy dsize - 1 limbs.
32423
32424Sun Jul 14 17:47:46 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32425
32426	* configure.in: Handle sparc9, sparc64, and ultrasparc like sparc8.
32427
32428Thu Jul 11 14:05:54 1996  J.T. Conklin  <jtc@rtl.cygnus.com>
32429
32430	* longlong.h (mc680x0): Define umul_ppmm, udiv_qrnnd, sdiv_qrnnd
32431	for the '020, '030, '040, and '332.  Define count_leading_zeros
32432	for the '020, '030, '040, and '060.
32433
32434Sun Jul 14 15:24:53 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32435
32436	From Joe Keane:
32437	* mpq/equal.c: Take ABS of num1_size before passing it to mpn_cmp.
32438
32439Fri Jul 12 17:11:17 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32440
32441	* mpn/generic/sqrtrem.c (SQRT): New asm for x86, but leave it
32442	disabled for now.
32443
32444	* mpn/generic/sqrtrem.c: Use MP_BASE_AS_DOUBLE.
32445
32446Wed Jul 10 03:17:45 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32447
32448	* cre-mparam.c: Delete obsolete file.
32449
32450	* gmp.h: #define _LONG_LONG_LIMB if __mips && _ABIN32.
32451	* longlong.h: Test __mips instead of __mips__.
32452
32453Sun Jul  7 23:19:13 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32454
32455	* longlong.h (_PROTO): Define, unless already defined.
32456	(alpha __udiv_qrnnd): Declare using _PROTO.
32457	(hppa __udiv_qrnnd): Likewise.
32458	(sparc __udiv_qrnnd): Likewise.
32459
32460Mon Jul  1 01:44:30 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32461
32462	* config.guess: Update from master version; add Cray x90 handling.
32463
32464Wed Jun 26 05:35:02 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32465
32466	* mpn/power/add_n.s (__mpn_add_n): Work around GAS bug.
32467	* mpn/power/sub_n.s (__mpn_sub_n): Likewise.
32468
32469	* insert-double.c: Rework loop to avoid potential overflow.
32470
32471	* mpq/get_d.c: For vax, if qsize > N_QLIMBS, ignore excess limbs.
32472
32473	* mpq/tests/t-get_d.c (SIZE): Special case for vax.
32474
32475	* gmp.h (mpX_cmp_ui): #define also when ! __GNUC__.
32476
32477Mon Jun 24 17:13:21 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32478
32479	* longlong.h (vax sdiv_qrnnd): Fix typo.
32480
32481Sat Jun 15 01:33:33 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32482
32483	* gmp.h: Support `small' and `large' type and function variants,
32484	controlled by GMP_SMALL.
32485
32486	* mpz/Makefile.in (.c.o): Compile each function twice, for small and
32487	large variant.
32488	(MPZS_OBJS): New variable.
32489	(libmpz.a): Include MPZS_OBJS in archive.
32490	* mpf/Makefile.in: Analogous changes.
32491	* mpq/Makefile.in: Analogous changes.
32492
32493	* gmp.h: Prefix all functions with __gmp, to allow namespace-clean
32494	internal calls.
32495
32496	* mp.h: Rip out __MP_SMALL__ stuff.
32497	(__mpz_struct): mp_size_t => int.
32498
32499	* mpz/invert.c: #include "gmp-impl.h".
32500	Use MPZ_TMP_INIT, not mpz_init.
32501
32502	* mpz/gcdext.c: Rewrite to call mpn_gcdext.
32503
32504Fri Jun 14 18:05:29 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32505
32506	* mpn/generic/gcdext.c (s0size): New parameter.
32507	* gmp.h (mpn_gcdext): Update prototype.
32508
32509	* mpn/generic/gcdext.c: Major rewrite.
32510
32511Mon Jun 10 00:14:27 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32512
32513	* mpn/generic/dump.c: Add missing `else'.
32514
32515Fri Jun  7 03:35:12 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32516
32517	* Makefile.in (gmp_toc.html): Pass -expandinfo to texi2html.
32518
32519Thu Jun  6 19:00:53 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32520
32521	* Version 2.0.2 released.
32522
32523	* install.sh: New file.
32524	* Makefile.in (INSTALL): Use install.sh.
32525	(install-normal): New name for target `install'.
32526	(install): New dummy target.
32527
32528	* mpz/pow_ui.c: Swap tests for (e == 0) and (bsize == 0).
32529	* mpz/ui_pow_ui.c: Swap tests for (e == 0) and (blimb == 0).
32530
32531	* config/mt-linux (AR_FLAGS): New file.
32532	* configure.in: Use config/mt-linux for all linux systems.
32533
32534Tue Jun  4 03:42:18 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32535
32536	* Version 2.0.1 released.
32537
32538	* mpf/tests/ref.c: Cast result of TMP_ALLOC to the right pointer type.
32539
32540	* extract-double.c: Test _GMP_IEEE_FLOATS with #if, not plain if.
32541
32542	* insert-double.c: Don't #include stdlib.h.
32543
32544	* gmp-impl.h (union ieee_double_extract): Test sparc and __sparc.
32545	Do not test __sparc__.
32546
32547	* mpf/reldiff.c: Change declaration to work around irix5 compiler bug.
32548	* mpq/equal.c: Likewise.
32549
32550	* mpn/generic/gcd.c: Delete spurious comma at end of enumeration.
32551
32552	* mpn/generic/gcdext.c: Add K&R declaration syntax.
32553	* stack-alloc.h: Likewise.
32554	* insert-double.c: Likewise.
32555	* extract-double.c: Likewise.
32556	* mpf/tests/reuse.c: Likewise.
32557	* mpz/tests/reuse.c: Likewise.
32558	* mpf/tests/t-sub.c: Likewise.
32559	* mpf/tests/t-add.c: Likewise.
32560	* mpf/tests/t-muldiv.c: Likewise.
32561	* mpf/tests/t-conv.c: Likewise.
32562	* mpf/tests/ref.c: Likewise.
32563
32564	* mpn/config/t-oldgas: Renamed from t-freebsd.
32565	* mpn/configure.in: Use t-oldgas for freebsd, netbsd, and some linux
32566	configurations.
32567
32568	* mpn/powerpc32/mul_1.s: Really clear cy before entering loop.
32569	* mpn/powerpc32/*.s: Fix power/powerpc syntax issues.
32570
32571	* mpn/config/t-ppc-aix: New file.
32572	* mpn/configure.in: Use t-ppc-aix for powerpc like t-pwr-aix for power.
32573
32574Wed May 29 02:07:31 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32575
32576	* gmp.h (mp_bits_per_limb): Change qualifier from `const' to
32577	__gmp_const.
32578
32579	* gmp.h (mpf_init_set_str): Add `const' qualifier for 2nd parameter.
32580	* mpf/iset_str.c: Likewise.
32581
32582Mon May 27 00:15:58 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32583
32584	* gmp-impl.h: Declare __gmp_extract_double.
32585
32586	* mpz/set_q.c: Delete unused variables.
32587
32588	* gmp.h (mpq_equal): Declare.
32589
32590	* mpf/eq.c: mpf_cmp2 -> mpf_eq.
32591
32592Fri May 24 03:20:44 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32593
32594	* mpz/iset_d.c: Don't include <math.h>.
32595
32596	* insert-double.c (__gmp_scale2): New name for scal2.
32597	* mpz/get_d.c: Corresponding change.
32598	* mpf/get_d.c: Likewise.
32599	* mpq/get_d.c: Likewise.
32600	* gmp-impl.h: Declare __gmp_scale2.
32601
32602	* mpn/generic/scan0.c: Clarify comment.
32603
32604	* mpz/set_q.c: New file.
32605	* Makefile.in: Compile it.
32606	* make.bat: Likewise.
32607	* gmp.h: Declare mpz_set_q.
32608
32609	* insert-double.c: New file.
32610	* Makefile.in: Compile it.
32611	* make.bat: Likewise.
32612
32613	* mpz/get_d.c: New file.
32614	* mpz/Makefile.in: Compile it.
32615	* make.bat: Likewise.
32616	* gmp.h: Declare mpz_get_d.
32617
32618	* mpf/get_d.c: New file.
32619	* mpf/Makefile.in: Compile it.
32620	* make.bat: Likewise.
32621	* gmp.h: Declare mpf_get_d.
32622
32623	* make.bat: Compile things in alphabetical order.
32624
32625	* gmp-impl.h (MP_BASE_AS_DOUBLE): New #define.
32626	(LIMBS_PER_DOUBLE): New #define.
32627
32628	* extract-double.c: New file.
32629	* Makefile.in: Compile it.
32630	* make.bat: Likewise.
32631	* mpz/set_d.c: Rewrite to use __gmp_extract_double.
32632	* mpf/set_d.c: Likewise.
32633
32634	* mpn/configure.in: Use t-pwr-aix also for aix 3.2.4 and up.
32635
32636Wed May 22 02:48:35 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32637
32638	* gmp-impl.h: Rework code for defining ieee_double_extract.
32639	(IEEE_DOUBLE_BIG_ENDIAN): Macro removed.
32640	(_GMP_IEEE_FLOATS): New macro.
32641	* mpn/vax/gmp-mparam.h: Delete.
32642
32643	* mpn/config/t-pwr-aix: New file.
32644	* mpn/configure.in: Use t-pwr-aix for aix 4 and later.
32645
32646Mon May 20 16:30:31 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32647
32648	* gmp.h: In code for setting _GMP_H_HAVE_FILE, test more symbols.
32649
32650	* mpf/tests/t-add.c (oo): Add some `l' printf modifiers.
32651	* mpf/tests/t-sub.c (oo): Likewise.
32652	* mpf/tests/t-conv.c (oo): Likewise.
32653	* mpf/tests/t-sqrt.c (oo): Likewise.
32654
32655	* mpz/tests/t-mul.c (_mpn_mul_classic): Remove unused variables.
32656
32657	* mpn/{pyr,i960,clipper}/*.s: Add missing copyright headers.
32658
32659Fri May 17 02:24:43 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32660
32661	* mpz/set_d.c: Call _mpz_realloc.
32662
32663	* mpq/set_z.c: New file.
32664	* mpq/Makefile.in: Compile it.
32665	* make.bat: Likewise.
32666	* gmp.h: Declare mpq_set_z.
32667
32668	* mp?/Makefile.in (libmp?.a): Depend on Makefile, not Makefile.in.
32669	* mpf/Makefile.in (test): Delete spurious target.
32670	* mpq/Makefile.in (test): Likewise.
32671
32672	* mpf/out_str.c: Use `e' to separate exponent when base <= 10.
32673
32674	* mpn/configure.in: Treat ultrasparc just like sparc v8,
32675	until 64-bit compilers are ready.
32676
32677	* mpf/set_d.c: Make it work for 64-bit machines.
32678
32679Thu May 16 20:53:57 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32680
32681	* gmp-impl.h: Set IEEE_DOUBLE_BIG_ENDIAN to 0 for little-endian
32682	machines.
32683	* mpn/x86/gmp-mparam.h: Delete file.
32684
32685	* configure.in: Treat microsparc like sparc8.
32686
32687	* urandom.h: Test __alpha instead of __alpha__, since the former
32688	is the standard symbol.
32689	* mpn/generic/random2.c: Likewise.
32690	* mpf/random2.c: Likewise.
32691
32692Tue May 14 13:42:39 1996  Torbjorn Granlund  (tege@tiny.matematik.su.se)
32693
32694	* mpz/set_f.c: New file.
32695	* mpz/Makefile.in: Compile it.
32696	* gmp.h: Declare mpz_set_f.
32697
32698	* mpf/set_q.c: Simplify expression in rsize == nsize if-then-else arms.
32699
32700Tue May 14 13:03:07 1996  Torbjorn Granlund  (tege@tiny.matematik.su.se)
32701
32702	* make.bat: Add all new files.
32703
32704Sun May 12 22:24:36 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32705
32706	* mpf/set_z.c: New file.
32707	* mpf/Makefile.in: Compile it.
32708	* gmp.h: Declare mpf_set_z.
32709
32710Sat May 11 19:26:25 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32711
32712	* gmp.h: Declare mpf_set_q.
32713
32714	* mpf/set_q.c: Compute prec-1 limbs in mpn_divrem call.
32715
32716Fri May 10 17:37:38 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32717
32718	* mpf/set_q.c: New file.
32719	* mpf/Makefile.in: Compile it.
32720
32721	* config.sub: Recognize sparc8.
32722
32723Wed May  8 09:19:11 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32724
32725	* mpf/tests/t-dm2exp.c: New file.
32726
32727	* mpf/tests/t-add.c: Correct header comment.
32728	* mpf/tests/t-sub.c: Likewise.
32729	* mpf/tests/t-sqrt.c: Likewise.
32730
32731	* mpf/div.c: Misc variable name cleanups.
32732	* mpf/div_ui.c: Base more closely on mpf/div.c.
32733	* mpf/ui_div.c: Likewise.
32734
32735	* mpz/tests/Makefile.in (check): Depend on Makefile.
32736	* mpq/tests/Makefile.in (check): Likewise.
32737	* mpf/tests/Makefile.in (check): Likewise.
32738
32739	* mpf/tests/t-muldiv.c: New file.
32740	* mpf/tests/Makefile.in: Compile and run `t-muldiv'.
32741	(t-ref.o): Delete spurious rule.
32742
32743	* mpf/sqrt.c: Properly detect negative input operand.
32744
32745	* mpf/sqrt_ui.c: Delete spurious header comment.
32746	* mpf/sqrt.c: Likewise.
32747	* mpz/sqrt.c: Likewise.
32748
32749	* mpz/tests/reuse.c (main): Read `reps' from command line.
32750
32751	* mpf/tests/reuse.c: New file.
32752	* mpf/tests/Makefile.in: Compile and run `reuse'.
32753
32754	* mpf/mul_ui.c: Disable code for removing low zero limbs.
32755
32756	* mpf/div.c: Fix condition for when vp and qp overlaps.
32757
32758	* mpf/add_ui.c: When sum equals u, copy up to prec+1 limbs.
32759
32760	* mpf/out_str.c: Don't output '\n' after exponent.
32761
32762	* mpf/add_ui.c: New special case for when U is completely cancelled.
32763
32764Wed Apr 24 05:33:28 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32765
32766	* Version 2.0 released.
32767
32768	* All files: Update FSF's address.
32769
32770	* Makefile.in (gmp_toc.html): New name for gmp.html.
32771	(TAGS): Depend on force.
32772
32773	* mpf/tests/t-conv.c: Pass -base to mpf_set_str.
32774
32775Sat Apr 20 03:54:06 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32776
32777	* Makefile.in (ps): New target, depend on gmp.ps.
32778
32779Fri Apr 19 14:03:15 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32780
32781	* mpf/out_str.c: Print `@' before exponent, not `e'.
32782
32783	* make.bat: Update from Makefiles.
32784
32785Thu Apr 18 01:22:05 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32786
32787	* mpf/set_str.c: If parameter `base' is negative, expect exponent
32788	to be decimal, otherwise in the same base as the mantissa.
32789
32790Wed Apr 17 17:28:36 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32791
32792	* mpf/set_dfl_prec.c: Don't return anything.
32793	* gmp.h: Corresponding changes.
32794
32795	* mpf/set_dfl_prec.c: Use `unsigned long int' for bit counts.
32796	* mpf/init2.c: Likewise.
32797	* mpf/get_prc.c: Likewise.
32798	* mpf/set_prc.c: Likewise.
32799	* mpf/set_prc_raw.c: Likewise.
32800	* mpz/popcount.c: Likewise.
32801	* mpz/hamdist.c: Likewise.
32802	* mpz/scan1.c: Likewise.
32803	* mpz/scan0.c: Likewise.
32804	* mpn/generic/popcount.c: Likewise.
32805	* mpn/generic/hamdist.c: Likewise.
32806	* mpn/generic/scan1.c: Likewise.
32807	* mpn/generic/scan0.c: Likewise.
32808	* gmp.h: Likewise.
32809
32810	* mpf/eq.c: New file, based on mpf/diff.c.
32811	* mpf/diff.c: Delete.
32812	* mpf/Makefile.in: Corresponding changes.
32813	* gmp.h: Likewise.
32814
32815	* mpf/reldiff.c: New file.
32816	* mpf/Makefile.in: Compile it.
32817	* gmp.h: Declare mpf_reldiff.
32818
32819	* mpz/iset_d.c: New file.
32820	* mpz/Makefile.in: Compile it.
32821	* gmp.h: Declare mpz_init_set_d.
32822
32823Tue Apr 16 16:28:31 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32824
32825	* Makefile.in (gmp.html): Pass -acc to texi2html.
32826
32827Mon Apr 15 16:20:24 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32828
32829	* mpf/set_str.c: Switch off code for defaulting the base from the
32830	leading characters.
32831
32832	* gmp.h (mp?_sign): Delete.
32833	(mp?_sgn): New macros.
32834
32835Fri Apr 12 17:23:33 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32836
32837	* Makefile.in (gmp.dvi): Delete tmp.* at end of rule.
32838
32839Wed Apr 10 22:52:02 1996  Torbjorn Granlund  (tege@tiny.matematik.su.se)
32840
32841	* mpf/random2.c: Change of `exp' param, mp_size_t => mp_exp_t.
32842	* gmp.h: Corresponding change.
32843
32844	* gmp.h (mp_bits_per_limb): Make it const.
32845
32846Sat Mar 30 01:20:23 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32847
32848	* configure.in: Re-enable recognition of with_gcc.
32849
32850	* mpf/Makefile.in (.c.o): Pass XCFLAGS.
32851	* mpn/Makefile.in (.c.o): Likewise.
32852	* mpz/Makefile.in (.c.o): Likewise.
32853	* mpq/Makefile.in (.c.o): Likewise.
32854	* mpbsd/Makefile.in (.c.o): Likewise.
32855	* mpf/tests/Makefile.in (.c.o): Likewise.
32856	* mpz/tests/Makefile.in (.c.o): Likewise.
32857	* mpq/tests/Makefile.in (.c.o): Likewise.
32858
32859	* Makefile.in (XCFLAGS): Default to empty.
32860	(FLAGS_TO_PASS): Pass on XCFLAGS.
32861	(.c.o): Pass XCFLAGS.
32862
32863	* config/mt-m88110 (XCFLAGS): Define instead of CC.
32864	* config/mt-sprc8-gcc (XCFLAGS): Likewise.
32865	* config/mt-supspc-gcc (XCFLAGS): Likewise.
32866
32867	* configure: Don't default CC to "gcc -O2" is -with-gcc=no was
32868	specified.
32869
32870Mon Mar 25 01:07:54 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32871
32872	* urandom.h: Test for __SVR4 in addition to __svr4__.
32873
32874	* mp_bpl.c (mp_bits_per_limb): Declare as `const'.
32875
32876	* Makefile.in (CFLAGS): `-O2' => `-O'.
32877	* mpn/Makefile.in (CFLAGS): Likewise.
32878
32879	* gmp-impl.h: Get rid of obsolete field access macros.
32880
32881	* mpn/mp_bases.c (__mp_bases): 1e39 => 1e38 to work around Solaris
32882	cc compiler bug.
32883
32884	* gmp.h (__MPN): Make it work also for non-ANSI compilers.
32885
32886Thu Mar 21 01:07:54 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32887
32888	* mpf/sub.c: New special case for ediff <= 1 before generic code.
32889	Simplify generic code for ediff == 0.
32890	Rename uexp => exp.
32891
32892Mon Mar 11 18:24:57 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32893
32894	* mpf/tests/*.c: Use ref_mpf_sub for error calculation.
32895	* mpf/tests/Makefile.in: Link ref.o to all executables.
32896
32897	* mpf/tests/t-sub.c: Make u = v + 1 with 50% probability.
32898
32899Sun Mar 10 21:03:17 1996  Torbjorn Granlund  (tege@tiny.matematik.su.se)
32900
32901	* mpf/get_str.c: In digit development loop for fractions, change
32902	loop condition from `<' to `<='.
32903
32904Thu Mar  7 04:58:11 1996  Torbjorn Granlund  <tege@tiny.matematik.su.se>
32905
32906	* mpn/mp_bases.c (__mp_bases): 1e100 => 1e39 to avoid overflow warning.
32907
32908Wed Mar  6 01:10:42 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
32909
32910	* mpf/tests/t-sqrt.c: New file.
32911	* mpf/tests/Makefile.in: Corresponding changes.
32912
32913	* mpf/sqrt.c: Special case for square root of zero.
32914
32915	* mpq/add.c: Clean up variable names.
32916	* mpq/sub.c: Update from mpq/add.c.
32917
32918	* mpz/divexact.c: abs => ABS.
32919	* mpz/gcd.c: Likewise.  Rewrite final fixup code, to decrease
32920	allocation.  Misc cleanups.
32921
32922Tue Mar  5 22:24:56 1996  Torbjorn Granlund  <tege@matematik.su.se>
32923
32924	* mpn/configure.in: Recognize linuxoldld as a synonym for linuxaout.
32925
32926	* gmp.h (mpn_add, mpn_add_1, mpn_sub, mpn_sub_1): Add prototypes.
32927
32928	* mpn/configure.in: Use t-freebsd also for netbsd.
32929
32930Mon Mar  4 15:13:28 1996  Torbjorn Granlund  <tege@matematik.su.se>
32931
32932	* mpq/Makefile.in (cmp.o): Depend on longlong.h.
32933
32934	* mpq/equal.c: New file.
32935	* mpq/Makefile.in: Corresponding changes.
32936
32937	* mpf/tests/t-add.c: New file.
32938	* mpf/tests/t-sub.c: Renamed from t-addsub.c.
32939	* mpf/tests/ref.c: New file.
32940	* mpf/tests/Makefile.in: Corresponding changes.
32941
32942	* gmp-impl.h (SIZ, ABSIZ, PTR, EXP, PREC, ALLOC): New #defines.
32943
32944Sun Mar  3 07:45:46 1996  Torbjorn Granlund  <tege@matematik.su.se>
32945
32946	* mpf/set_str.c: In exponentiation code, allocate 3 extra
32947	limbs, not just 2.
32948
32949	* mpf/get_str.c: Allocate sufficient space for tstr.
32950	When calculating exp_in_base, round result down.
32951
32952	* mpf/tests/t-conv.c: New file.
32953	* mpf/tests/Makefile.in: Corresponding changes.
32954
32955	* mp_bpl.c: New file.
32956	* gmp.h: Declare it.
32957	* Makefile.in: Corresponding changes.
32958
32959Sat Mar  2 06:27:56 1996  Torbjorn Granlund  <tege@matematik.su.se>
32960
32961	* mpf/set_prc_raw.c: New file.
32962	* mpf/set_prc.c: Renamed from set_prec.c.
32963	* mpf/get_prc.c: New file.
32964	* mpf/Makefile.in: Corresponding changes.
32965	* gmp.h: Declare new functions.
32966
32967	* mpn/generic/gcdext.c: Add copyright header.
32968
32969Fri Mar  1 01:22:24 1996  Torbjorn Granlund  <tege@matematik.su.se>
32970
32971	* mpn/configure.in: For ppc601, search "power" before "powerpc32".
32972
32973	* mp?/Makefile.in (AR_FLAGS): New variable.
32974	(libmp?.a): Use it.
32975
32976	* make.bat: New file.
32977	* mpn/msdos: New directory.
32978	* mpn/msdos/asm-syntax.h: New file.
32979
32980	* mpn/Makefile.in (distclean maintainer-clean): Delete asm-syntax.h.
32981
32982	* config.sub: Recognize [ctj]90-cray.
32983
32984	* mpn/configure.in: Recognize [ctj]90-cray-unicos*.
32985
32986	* mpn/generic/gcdext.c: Don't use alloca directly, use TMP_* macros.
32987
32988	* mpn/generic/gcd.c: Split increment from use of USIZE to avoid
32989	undefined behaviour.
32990
32991Thu Feb 29 04:11:24 1996  Torbjorn Granlund  <tege@matematik.su.se>
32992
32993	* Makefile.in (install-info-files): Update for new install-info
32994	behaviour.
32995
32996	* mpn/power/add_n.s: Rewrite.
32997	* mpn/power/sub_n.s: Rewrite.
32998
32999Wed Feb 28 01:34:30 1996  Torbjorn Granlund  <tege@matematik.su.se>
33000
33001	* mpz/pow_ui.c: Compute allocation more aggressively for small bases.
33002	* mpz/ui_pow_ui.c: Likewise.
33003
33004	* mpn/mp_bases.c (__mp_bases): Put huge value in 2nd field for index 1.
33005
33006	* mpn/generic/sqrtrem.c: sizeof (mp_limb_t) => BYTES_PER_MP_LIMB.
33007	* mpn/generic/gcd.c: Likewise.
33008	(SIGN_BIT): Compute differently.
33009
33010Mon Feb 26 00:07:36 1996  Torbjorn Granlund  <tege@matematik.su.se>
33011
33012	* All files: mp_limb => mp_limb_t, mp_limb_signed => mp_limb_signed_t.
33013
33014	* Makefile.in (install, install-bsdmp, install-info-files): Depend
33015	on installdirs.  chmod all installed files.
33016
33017Sun Feb 25 01:47:41 1996  Torbjorn Granlund  <tege@matematik.su.se>
33018
33019	* mpbsd/configure.in: Delete debugging code.
33020
33021	* All Makefile.in: Update clean targets.
33022
33023	* Makefile.in (AR_FLAGS): New variable.
33024	(libgmp.a): Use it.
33025	(libmp.a): Likewise.
33026
33027	* VERSION: Delete file.
33028
33029	* Makefile.in (installdirs): New target.
33030	* mkinstalldirs: New file (from the texinfo package).
33031
33032	* Makefile.in (INSTALL, INSTALL_DATA, INSTALL_PROGRAM): New variables.
33033	(MAKEINFO, MAKEINFOFLAGS, TEXI2DVI): New variables.
33034	(install-info): New target.
33035	(install, install-bsdmp): Depend on install-info.
33036	($(srcdir)/gmp.info): Changed from plain gmp.info; put info files
33037	into source directory.
33038	(distclean, mostlyclean): New targets.
33039	(maintainer-clean): New name for realclean.
33040	(uninstall): New target.
33041	(TAGS): New target.
33042	(info, dvi): New targets.
33043	(.PHONY): Assign.
33044
33045	* Makefile.in (install, install-bsdmp): Use INSTALL_DATA.
33046
33047	* mp{n,z,f,bsd}/move-if-change: Delete.
33048
33049	* mpbsd/Makefile.in (stamp-stddefh): Delete target.
33050
33051	* Makefile.in (.c.o): Pass CFLAGS last.
33052	* mpbsd/Makefile.in (.c.o): Likewise.
33053	* mpf/Makefile.in (.c.o): Likewise.
33054	* mpq/Makefile.in (.c.o): Likewise.
33055	* mpz/Makefile.in (.c.o): Likewise.
33056	* mpn/Makefile.in (.c.o): Likewise.
33057	(.S.o): Likewise.
33058
33059	* memory.c: Change allocation error message.
33060
33061	* Makefile.in (install): Prefix gmp.h with $(srcdir).
33062	(install-bsdmp): Prefix mp.h with $(srcdir).
33063
33064	* mp{n,z,f,bsd}/{configure,config.sub}: Delete.
33065
33066	* Makefile.in (gmp.dvi): Set TEXINPUTS also for 2nd tex invocation
33067	(install targets): Install gmp.info-N.
33068
33069Sat Feb 24 03:36:52 1996  Torbjorn Granlund  <tege@matematik.su.se>
33070
33071	* mpf/get_str.c: Fix typo.
33072
33073	* mpz/legendre.c: Clarify expression with extra parens.
33074
33075	* version.c (gmp_version): Not static.
33076
33077	* mpf/iset_str.c: Properly return error code.
33078
33079	* mpf/add.c: Delete unused variables.
33080	* mpf/inp_str.c: Likewise.
33081	* mpq/get_d.c: Likewise.
33082
33083	* mpn/generic/dump.c: #include <stdio.h>.
33084	* mpf/dump.c: Likewise.
33085	* mpf/set_str.c: #include <ctype.h>.
33086	(strtol): Declare.
33087
33088	* gmp.h: mpn_sqrt => mpn_sqrtrem.
33089
33090	* Makefile.in (clean, realclean): Clean in mpbsd.
33091	(check): Test in mpf.
33092
33093	* mpf/Makefile.in (clean): Clean in tests.
33094	* mpq/Makefile.in (clean): Clean in tests.
33095
33096	* mpf/tests/Makefile.in: New file.
33097	* mpf/tests/configure.in: New file.
33098	* mpf/tests/t-addsub.c: New file.
33099
33100	* mpf/sub_ui.c: Simply call mpf_sub for now.
33101
33102	* mpf/sub.c: Increase prec by 1.
33103	* mpf/ui_sub.c: Likewise.
33104
33105Fri Feb 23 00:59:54 1996  Torbjorn Granlund  <tege@matematik.su.se>
33106
33107	* mpf/ui_sub.c: Fix typos.
33108
33109	* mpf/get_str.c: When allocating space for tmp, allow for an extra
33110	limb.  In code for fraction conversion, add special case for bases
33111	that are a power of 2.
33112
33113	* mpf/out_str.c: Output leading "0.".
33114	Default base to 10, before computing string allocation.
33115
33116	* mpf/get_str.c: Make variables for string size have type size_t.
33117	* gmp.h: Corresponding change.
33118
33119	* mpf/random2.c: Allow creation of prec+1 large mantissas.
33120
33121	* mpf/add_ui.c: Don't abort if u < 0; special case for u <= 0.
33122	Fix typo in MPN_COPY offset.
33123	* mpf/sub_ui.c: Analogous changes.
33124
33125	* mpf/set_prec.c: Rewrite.
33126
33127	* mpf/init2.c: Compute precision as in set_prec.c.
33128
33129	* mpf/div_2exp.c: Special case for u == 0.
33130	* mpf/mul_2exp.c: Likewise.  Write r->_mp_size always.
33131
33132	* mpf/sqrt_ui.c: mpn_sqrt => mpn_sqrtrem.
33133	* mpf/sqrt.c: Likewise.  When computing new exponent, round quotient
33134	towards -infinity.
33135
33136	* mpf/add.c: Fix typos.
33137	* mpf/sub.c: Fix typos.
33138
33139Thu Feb 22 00:24:48 1996  Torbjorn Granlund  <tege@matematik.su.se>
33140
33141	* mpz/Makefile.in (stamp-stddefh): Delete target.
33142	(test): Delete target.
33143	* Makefile.in (stamp-stddefh): Delete target.
33144	(cre-stddefh.o): Delete target.
33145	(gmp.dvi): Set TEXINPUTS before invoking tex.
33146
33147	* cre-stddefh.c: Delete.
33148
33149	* mpz/sqrt.c: Fix typo.
33150
33151	* mpz/powm.c: Special case for mod == 0.
33152	* mpz/powm_ui.c: Likewise.
33153
33154	* mpz/get_si.c: Handle -0x80000000 correctly.
33155
33156	* mpz/inp_str.c: Now returns size_t.
33157	Make it return number of bytes read or error indication.
33158	* mpf/inp_str.c: Likewise.
33159
33160	* mpz/out_raw.c: Replace by mpz/out_binary.c, with modifications.
33161	* mpz/inp_raw.c: Rewrite, using mpz/inp_binary as a base.
33162	* mpz/inp_binary.c: Delete.
33163
33164	* mpn/Makefile.in (XCFLAGS): Remove variable.
33165	(.c.o): Don't pass XCFLAGS.
33166	(SFLAGS): Set to nothing.
33167	(.S.o): Pass SFLAGS, not XCFLAGS.
33168
33169	* mpn/config/t-freebsd (SFLAGS): New name for XCFLAGS.
33170
33171	* mpf/out_str.c: Make return number of bytes written or error
33172	indication.
33173	* mpz/out_str.c: Likewise.
33174	* gmp.h: Corresponding changes.
33175
33176	* gmp.h (__mpz_struct): mp_size_t => int.
33177	(__mpq_struct): Likewise.
33178	(__mpf_struct): Likewise.
33179	(mp_size_t): int => long int.
33180
33181	* mpn/cray: New directory.
33182	* mpn/cray/gmp-mparam.h: New file.
33183	* mpn/configure.in: Recognize cray variants.
33184
33185	* Makefile.in: Set defaults for prefix, libdir, etc.
33186	(install): New target.
33187	(install-bsdmp): New target.
33188	(gmp.html): New target.
33189
33190	* stack-alloc.c (__tmp_alloc): Cast void ptrs to char * in comparison.
33191
33192Wed Feb 21 04:35:02 1996  Torbjorn Granlund  <tege@matematik.su.se>
33193
33194	* gmp.h: Sort mpn declarations.
33195	(mpn_gcdext): Add declaration.
33196
33197	* mpn/generic/divrem_1.c: New file.
33198	* mpn/Makefile.in (divrem_1.o): New rule.
33199	* configure.in (functions): Add divrem_1.
33200
33201	* mpn/generic/divmod.c: Delete file.
33202	* mpn/configure.in (functions): Delete divmod.
33203	* Makefile.in (divmod.o): Delete rule.
33204	* gmp.h (mpn_divmod): New #define.
33205
33206	* gmp.h (mpn_next_bit_set): Delete spurious declaration.
33207
33208	* mpn/generic/divrem.c (default case): In code assigning
33209	most_significant_q_limb, move reassignment of n0 into if statement.
33210
33211	* gmp.h (mpf_inp_str): Fix typo.
33212	(mpf_out_str): Make prototype match reality.
33213	* mpf/inp_str.c: New file.
33214	* mpf/out_str.c: New file.
33215	* mpf/Makefile.in: Compile new files.
33216
33217	* mpn/Makefile.in (dump.o): Fix dependency path.
33218	(inlines.o): Likewise.
33219
33220	* mpn/configure.in: Make m68060 be the same as m68000.  Clean up
33221	m68k configs.
33222
33223Tue Feb 20 01:35:11 1996  Torbjorn Granlund  <tege@matematik.su.se>
33224
33225	* mpn/generic/sqrtrem.c: Renamed from sqrt.
33226	* mpn/configure.in (functions): Corresponding change.
33227	* mpn/Makefile.in: Likewise.
33228	* mpz/sqrtrem.c: Likewise.
33229	* mpz/sqrt.c: Likewise.
33230	* mpn/generic/perfsqr.c: Likewise.
33231
33232	* Makefile.in (clean): Also remove libmp.a.
33233	Don't compile cre-conv-tab.c or mp_bases.c.
33234	cre-conv-tab.c: Delete file.
33235	(gmp.ps): New rule.
33236
33237	* mpn/mp_bases.c: New file.
33238	* mpn/Makefile.in: Compile mp_bases.c.
33239
33240	* mpz/set_str.c: Skip initial whitespace.
33241	* mpf/set_str.c: Likewise.
33242	* mpbsd/xtom.c: Likewise.
33243
33244	* gmp.h: Add missing mpz declarations.
33245	Delete all formal parameter names from declarations.
33246
33247	* mpn/Makefile.in: Add dependencies for .c files.
33248
33249	* Makefile.in (check): Write recursive make calls separately, not as
33250	a loop.
33251	(FLAGS_TO_PASS): New variable.  Use it for most recursive makes.
33252
33253Mon Feb 19 01:02:20 1996  Torbjorn Granlund  <tege@matematik.su.se>
33254
33255	* mpn/Makefile.in (.S.o): Pipe cpp output to grep in order to delete
33256	lines starting with #.
33257	(CPP): Set to $(CC) -E to avoid gcc dependency.
33258
33259	* mpn/m68k/syntax.h (moveql): Define to moveq for MIT_SYNTAX.
33260
33261	* mpn/hppa/hppa1_1/pa7100/addmul_1.S: Fix typo in s1_ptr alignment
33262	code.
33263	* mpn/hppa/hppa1_1/pa7100/submul_1.S: Likewise.
33264
33265	* gmp.h: Fix typos in #defines of recently added mpn functions.
33266
33267	* mpz/inp_str.c: Skip all whitespace, not just plain space.
33268	* mpbsd/min.c: Likewise.
33269
33270	* mpn/configure.in (functions): Add gcdext.
33271	* mpn/generic/gcdext.c: New file.
33272
33273	* mpz/legendre.c: mpz_div_2exp => mpz_tdiv_q_2exp.
33274
33275	* gmp.h: Surround mpn declarations with extern "C" { ... }.
33276
33277	* Makefile.in (check): New target.
33278
33279	* mpq/get_d.c: Update comments.  Use rsize instead of dsize + N_QLIMBS
33280	when possible.  Add special case for nsize == 0.
33281
33282	* gmp.h (mpq_get_d): Add declaration.
33283	(mpq_canonicalize): Likewise.
33284	(mpq_cmp_ui): Likewise.
33285	(mpf_diff): Likewise.
33286	(mpf_ui_sub): Likewise.
33287	(mpf_set_prec): Likewise.
33288	(mpf_random2): Likewise.
33289
33290	* gmp.h (mpz_cmp_ui): New #define.
33291	(mpz_cmp_si): New #define.
33292	(mpq_cmp_ui): New #define.
33293	(mpz_sign): New #define.
33294	(mpq_sign): New #define.
33295	(mpf_sign): New #define.
33296	(mpq_numref): New #define.
33297	(mpq_denref): New #define.
33298
33299	* mpq/set_z.c: File deleted.
33300	* mpq/Makefile.in: Corresponding changes.
33301
33302Sun Feb 18 01:34:47 1996  Torbjorn Granlund  <tege@matematik.su.se>
33303
33304	* mpbsd/sdiv.c: Use _mp_realloc, not _mpz_realloc.
33305
33306	* mpz/inp_binary.c: Default stream to stdin.
33307	* mpz/inp_str.c: Likewise.
33308	* mpz/inp_raw.c: Likewise.
33309	* mpz/out_binary.c: Default stream to stdout.
33310	* mpz/out_raw.c: Likewise.
33311	* mpz/out_str.c: Likewise.
33312
33313	* mpbsd/realloc.c: New file.
33314	* mpbsd/Makefile.in: Corresponding changes.
33315
33316	* mpbsd/min.c: Rewrite (base on mpz/inp_str.c).
33317	* mpbsd/mtox.c: Rewrite (base on mpz/get_str.c).
33318
33319	* mpbsd/mout.c: Rewrite (base on mpz/out_str) but make it output
33320	spaces in each 10th position.
33321	* mpbsd/xtom.c: Rewrite (base on mpz/set_str).
33322
33323	* mpq/tests/Makefile.in (st-cmp): New file.
33324	* mpq/tests/configure.in (srcname): New file.
33325
33326	* mpz/tests/configure.in (srcname): Fix typo.
33327
33328	* mpq/cmp.c: Add check using number of significant bits, to avoid
33329	general multiplication.
33330
33331Sat Feb 17 11:58:30 1996  Torbjorn Granlund  <tege@matematik.su.se>
33332
33333	* mpq/cmp_ui.c: Store cy_limb after the mpn_mul_1 calls.
33334
33335	* mpq/tests: New directory.
33336	* mpq/tests/t-cmp.c: New file.
33337	* mpq/tests/t-cmp_ui.c: New file.
33338
33339	* mpz/tests/dive.c (main): Generate zero numerator.
33340	(get_random_size) : Delete.
33341
33342	* mpz/divexact.c: Add special case for 0/x.
33343
33344	* gmp.h (mpz_mod): Add declaration.
33345
33346Fri Feb 16 18:18:39 1996  Andreas Schwab  <schwab@informatik.uni-dortmund.de>
33347
33348	* mpn/m68k/*: Rewrite code not to use the INSN macros.
33349	(L): New macro to properly prefix local labels for ELF.
33350
33351Fri Feb 16 00:20:56 1996  Torbjorn Granlund  <tege@matematik.su.se>
33352
33353	* gmp-impl.h (ieee_double_extract): Use plain `unsigned int' for
33354	fields.
33355	* mpn/generic/inlines.c (_FORCE_INLINES): New #define.  Delete
33356	conditional __GNUC__.
33357	* gmp.h (mpn_add, mpn_sub, mpn_add_1, mpn_sub_1):
33358	Only define these if __GNUC__ || _FORCE_INLINES.
33359	* mpf/random2.c: Add missing parameter in non-ANSI header.
33360	* mpn/generic/gcd.c (SIGN_BIT): Do as #define to work around bug
33361	in AIX compilers.
33362	* mpq/get_d.c: #define N_QLIMBS.
33363	* mpz/divexact.c: Obscure division by 0 to silent compiler warnings.
33364	* stack-alloc.c: Cast void* pointer to char* before doing arithmetic
33365	on it.
33366
33367	* Makefile.in (mpbsd/libmpbsd.a): New rule.
33368	* configure.in (configdirs): Add mpbsd.
33369
33370	* gmp.h: Add declarations for a few missing mpn functions.
33371
33372	* Makefile.in (libmp.a): New rule.
33373
33374	* mpbsd/mdiv.c: #include "dmincl.c", not "mpz_dmincl.c"
33375	* gmp.h: Move #define of __GNU_MP__ into the `#if __GNU_MP__' block.
33376	* mp.h: Likewise.  Update typedefs from gmp.h.
33377	* mpbsd/configure.in: New file.
33378	* mpbsd/Makefile.in: New file.
33379	* mpbsd/configure: Link to master configure.
33380	* mpbsd/config.sub: Link to master config.sub.
33381
33382	* Makefile.in: Set RANLIB_TEST.
33383	* (libgmp.a): Use it.
33384	* (libgmp.a): Do ranlib before moving the libgmp.a to the build
33385	directory.
33386	* mp?/Makefile.in: Don't use or set RANLIB.
33387
33388Thu Feb 15 16:38:41 1996  Torbjorn Granlund  <tege@matematik.su.se>
33389
33390	* mpz/add_ui.c: MP_INT => mpz_t.
33391	* mpz/cmp_ui.c: Likewise.
33392	* mpz/fac_ui.c: Likewise.
33393	* mpz/inp_binary.c: Likewise.
33394	* mpz/inp_raw.c: Likewise.
33395	* mpz/legendre.c: Likewise.
33396	* mpz/jacobi.c: Likewise.
33397	* mpz/out_binary.c: Likewise.
33398	* mpz/out_raw.c: Likewise.
33399	* mpz/random2.c: Likewise.
33400	* mpz/random.c: Likewise.
33401	* mpz/realloc.c: Likewise.
33402
33403	* mpz/legendre.c: __mpz_2factor(X) => mpz_scan1(X,0),
33404	__mpz_odd_less1_2factor => mpz_scan1(X,1).
33405	* mpz/ntsup.c: File deleted.
33406	* mpz/Makefile.in: Corresponding changes.
33407
33408	* mpz/pprime_p: Use mpz_scan1 to avoid looping.
33409
33410	* mpz/fac_ui.c: Type of `k' and `p' is `unsigned long'.
33411	* mpz/pprime_p.c: Pass long to *_ui functions.
33412	* mpz/gcdext.c: Likewise.
33413	* mpz/fdiv_r_2exp.c: Likewise.
33414	* mpz/fac_ui.c: Likewise.
33415
33416	* mpz/powm.c: Don't use mpn_rshift when mod_shift_cnt is 0.
33417
33418	* mpz/tests/Makefile.in (st-sqrtrem): Fix typo.
33419
33420	* mpz/cmp_ui.c: #undef mpz_cmp_ui.
33421	* mpz/cmp_si.c: #undef mpz_cmp_si.
33422	* gmp.h (mpz_cmp_ui): New #define.
33423	(mpz_cmp_si): New #define.
33424
33425Wed Feb 14 22:11:24 1996  Torbjorn Granlund  <tege@matematik.su.se>
33426
33427	* gmp.h: Test __cplusplus in addition to __STDC__.
33428	* gmp-impl.h: Likewise.
33429
33430	* gmp.h: Surround declarations with extern "C" { ... }.
33431
33432Tue Feb 13 15:20:45 1996  Torbjorn Granlund  <tege@matematik.su.se>
33433
33434	* mpz/fdiv_r_2exp.c: Use MPN_NORMALIZE.
33435	* mpz/tdiv_r_2exp.c: Likewise.
33436
33437	* mpz/fdiv_r_2exp.c: New file.
33438	* mpz/fdiv_q_2exp.c: New file.
33439	* mpz/tdiv_r_2exp.c: Renamed from mpz/mod_2exp.c.
33440	* mpz/tdiv_q_2exp.c: Renamed from mpz/div_2exp.c
33441	* mpz/Makefile.in: Corresponding changes.
33442
33443	* mpz/scan0.c,scan1.c: New files.
33444	* mpz/Makefile.in: Compile them.
33445
33446	* gmp.h (mpn_normal_size): Delete.
33447
33448	* config.guess: Update from Cygnus version.
33449
33450	* mpn/m68k/rshift.S: Use INSN2 macro for lea instructions.
33451	* mpn/m68k/lshift.S: Likewise.
33452
33453	* mpn/configure.in: Fix configuration for plain 68000.
33454
33455Mon Feb 12 01:06:06 1996  Torbjorn Granlund  <tege@matematik.su.se>
33456
33457	* mpz/tests/t-powm.c: Generate negative BASE operand.
33458
33459	* mpz/powm.c: Make result always positive.
33460
33461Sun Feb 11 01:44:56 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33462
33463	* mpz/tests/*.c: Add t- prefix.
33464	* mpz/tests/Makefile.in: Corresponding changes.
33465	* mpz/tests/configure.in: Update srctrigger.
33466
33467	* mpz/tests/gcd.c: Generate negative operands.
33468	* mpz/tests/gcd2.c: Likewise.
33469
33470	* mpz/gcdext.c: At end, if G is negative, negate all G, S, and T.
33471
33472Thu Feb  8 17:16:12 UTC 1996 Ken Weber <kweber@mat.ufrgs.br>
33473
33474	* mp{z,n}/gcd.c: Change mpn_gcd interface.
33475	* gmp.h: Ditto.
33476	* gmp.texi: update documentation.
33477
33478Mon Feb  7 23:58:43 1996  Andreas Schwab  <schwab@informatik.uni-dortmund.de>
33479
33480	* mpn/m68k/{lshift,rshift}.S: New files.
33481	* mpn/m68k/syntax.h: New ELF_SYNTAX macros.
33482	(MEM_INDX, R, PROLOG, EPILOG): New macros.
33483	* mpn/m68k/*.S: Use R macro with register name.  Use PROLOG and EPILOG
33484	macros.  Rename `size' to `s_size' or s1_size to avoid clash with ELF
33485	.size directive.
33486	* mpn/configure.in: New target m68k-*-linux*.
33487
33488Wed Feb  7 07:41:31 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33489
33490	* Makefile.in (cre-conv-tab): Workaround for SunOS make.
33491
33492	* mpz/tests/reuse.c: New file.
33493	* mpz/tests/Makefile.in: Handle reuse.c.
33494
33495Tue Feb  6 11:56:24 UTC 1996 Ken Weber <kweber@mat.ufrgs.br>
33496
33497	* mpz/gcd.c: Fix g->size when one op is 0 and g == other op.
33498
33499Tue Feb  6 01:36:39 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33500
33501	* gmp.h (mpz_divexact): Delete parameter names.
33502	(mpz_lcm): Delete spurious declaration.
33503
33504	* mpz/dmincl.c: Fix typo.
33505
33506Mon Feb  5 01:11:56 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33507
33508	* mpn/generic/gcd.c (gcd_2): Declare consistently.
33509
33510	* mpz/tdiv_q.c: Optimize division by a single-limb divisor.
33511	* mpz/dmincl.c: Likewise.
33512
33513	* mpz/add.c: Use MPN_NORMALIZE instead of mpn_normal_size.
33514	* mpz/sub.c: Likewise.
33515	* mpn/generic/sqrt.c: Likewise.
33516
33517	* mpn/tests/{add_n,sub_n,lshift,rshift}.c: Put garbage in the
33518	destination arrays.
33519
33520Fri Feb  2 02:21:27 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33521
33522	* mpz/{jacobi.c,legendre.c,ntsup.c,invert.c}: New files.
33523	* mpz/Makefile.in: Compile them.
33524
33525	* mpn/Makefile.in (INCLUDES): Don't search in `generic'.
33526
33527Thu Feb  1 02:15:11 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33528
33529	Change from Ken Weber:
33530	* mpz/divexact.c: Make it work when quot is identical to either input.
33531
33532	* mpf/ui_sub.c: New file.
33533	* mpf/Makefile.in: Compile it.
33534
33535	* gmp-impl.h (MPZ_TMP_INIT): alloca -> TMP_ALLOC.
33536	* mpz/{c,f}div_{q,qr,r}.c: Use TMP_DECL/TMP_MARK/TMP_FREE since
33537	these use MPZ_TMP_INIT.
33538	* mpz/mod.c: Likewise.
33539	* mpq/{add,sub}.c: Likewise.
33540	* mpq/canonicalize: Likewise.
33541
33542	* mpq/{add,sub,mul,div}.c: Use mpz_divexact. MP_INT -> mpz_t.
33543	* mpq/canonicalize.c: Likewise.
33544
33545Wed Jan 31 01:45:00 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33546
33547	* mpn/generic/gcd.c: Misc changes from Ken.
33548
33549	* mpz/tests/gcd2.c: New file.
33550	* mpz/tests/Makefile.in: Handle gcd2.c.
33551
33552	* mpn/generic/gcd.c (mpn_gcd): When GCD == ORIG_V, return vsize,
33553	not orig_vsize.  Fix parameter declaration.
33554
33555	* mpz/mod_ui.c: Delete file.
33556	* mpz/Makefile.in: Don't try to compile mod_ui.
33557
33558	* mpz/cdiv_*_ui.c): Make them work right.
33559	* gmp.h: Declare cdiv*.
33560
33561Tue Jan 30 02:22:56 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33562
33563	* mpz/{cdiv_q.c,cdiv_q_ui.c,cdiv_qr.c,cdiv_qr_ui.c,cdiv_r.c,
33564	cdiv_r_ui.c,cdiv_ui.c}: New files.
33565	* mpz/Makefile.in: Compile them.
33566
33567	* All files: Make file permissions right.
33568
33569	Changes from Ken Weber:
33570	* mpn/generic/accelgcd.c: Delete.
33571	* mpn/generic/bingcd.c: Delete.
33572	* mpn/generic/numbits.c: Delete.
33573	* mpn/generic/gcd.c: New file.
33574	* mpn/configure.in (functions): Update accordingly.
33575	* mpz/divexact.c: New file.
33576	* mpz/Makefile.in: Compile divexact.c.
33577	* mpz/gcd.c: Rewrite to accommodate for gcd changes in mpn.
33578	* gmp.h: declare new functions, delete obsolete declarations.
33579	* mpz/tests/dive.c: New file.
33580	* mpz/tests/Makefile.in: Handle dive.c.
33581
33582Mon Jan 29 03:53:24 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33583
33584	* mpz/random.c: Handle negative SIZE parameter.
33585
33586	* mpz/tests/tdiv(_ui).c: New name for tst-dm(_ui).c.
33587	* mpz/tests/tst-mdm(_ui).c: Delete.
33588	* mpz/tests/fdiv(_ui).c: New test based in tst-mdm(_ui).
33589	* mpz/tests/*.c: Get rid of tst- prefix for DOS 8+3 naming.
33590	* mpz/tests/Makefile.in: Corresponding changes.
33591	* mpz/tests/configure.in: Update srctrigger.
33592
33593	* mpn/generic/divmod.c: Update from divrem.
33594	* mpn/generic/divrem.c: Misc cleanups.
33595
33596Sun Jan 28 03:25:08 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33597
33598	* All files: Use new TMP_ALLOC interface.
33599
33600	* mpz/powm_ui.c: Make Jan 25 changes to powm.c also here.
33601
33602	* mpz/tests/powm_ui.c: New file.
33603	* mpz/tests/Makefile.in: Add rules for tst-powm and tst-powm_ui.
33604
33605	* Makefile.in: Update dependency list.
33606	* mpf/Makefile.in: Likewise.
33607	* mpz/Makefile.in: Likewise.
33608	* mpq/Makefile.in: Likewise.
33609	* Makefile.in: Set RANLIB simply to ranlib, and allow configure
33610	to override it.
33611
33612	* mpz/Makefile.in (conf): Delete spurious target.
33613	(mp_bases.c): Delete.
33614	(cre-conv-tab rules): Delete.
33615
33616	* Makefile.in (cre-conv-tab): Greatly simplify.
33617
33618Sat Jan 27 13:38:15 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33619
33620	* stack-alloc.c: New file.
33621	* stack-alloc.h: New file.
33622
33623	* gmp.h (__gmp_inline): Define using __inline__.
33624
33625Thu Jan 25 00:28:37 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33626
33627	* mpn/generic/scan0.c: New file.
33628	* mpn/generic/scan1.c: Renamed from next_bit.c.
33629	* mpn/configure.in (functions): Include scan0 and scan1.
33630
33631	* mpn/m68k/*: #include sysdep.h.  Use C_GLOBAL_NAME.
33632
33633	* configure: Update from Cygnus version.
33634	* config.guess: Likewise.
33635	* config.sub: Likewise.
33636	* configure: Pass --nfp to recursive configures.
33637
33638	* mpz/tests/tst-*.c: Adjust SIZE and reps.
33639
33640	* mpz/powm.c: Move esize==0 test earlier.
33641	In final reduction of rp,rsize, don't call mpn_divmod unless
33642	reduction is really needed.
33643
33644	* mpz/tests/tst-powm.c: Fix thinko in checking code.
33645
33646	* All files: Get rid of `__' prefix from mpn_* calls and declarations.
33647	* gmp.h: #define __MPN.
33648	* gmp.h: Use __MPN in #defines for mpn calls.
33649
33650	* mpn/generic/mul_n.c: Prepend `i' to internal routines.
33651	* gmp-impl.h: Add #defines using __MPN for those internal routines.
33652
33653	* mpn/generic/sqrt.c: Change call to mpn_mul to mpn_mul_n.
33654
33655Wed Jan 24 13:28:19 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33656
33657	* mpn/sparc32/udiv_fp.S: New name for udiv_qrnnd.S.
33658	* mpn/sparc32/udiv_nfp.S: New name for v8/udiv_qrnnd.S.
33659	* mpn/sparc32/v8/supersparc: New directory.
33660	* mpn/sparc32/v8/supersparc/udiv.S: New file.
33661
33662Tue Jan 23 01:10:11 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33663
33664	This major contribution is from Ken Weber:
33665	* mpn/generic/accelgcd.c: New file.
33666	* mpn/generic/bdivmod.c: New file.
33667	* mpn/generic/bingcd.c: New file.
33668	* mpn/generic/gcd_1.c: Rewrite.
33669	* mpn/generic/numbits.c: New file (to go away soon).
33670	* mpz/gcd.c: Rewrite.
33671	* mpz/tests/tst-gcd.c (SIZE): Now 128.
33672	* gmp.h: Declare new functions.
33673	* mpn/configure.in (functions): List new files.
33674	* gmp-impl.h (MPN_SWAP): Delete.
33675	(MPN_LESS_BITS_LIMB, MPN_LESS_BITS, MPN_MORE_BITS): Delete.
33676	(MPN_COMPL_INCR, MPN_COMPL): Delete.
33677
33678Mon Jan 22 02:04:59 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33679
33680	* gmp.h (mpn_name): New #define.
33681
33682	* mpn/m88k/mc88110/addmul_1.s: New file.
33683	* mpn/m88k/mc88110/add_n.S: New file.
33684	* mpn/m88k/mc88110/sub_n.S: New file.
33685
33686	* mpn/m88k/sub_n.s: Correctly initialize carry.
33687
33688	* mpn/sparc32/{add_n.S,sub_n.S,lshift.S,rshift.S): `beq' => `be'.
33689
33690Sun Jan 21 00:04:35 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33691
33692	* mpn/sparc64/addmul_1.s: New file.
33693	* mpn/sparc64/submul_1.s: New file.
33694	* mpn/sparc64/rshift.s: New file.
33695
33696Sat Jan 20 00:32:54 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33697
33698	* mpz/iset.c: Fix typo introduced Dec 25.
33699
33700Wed Jan 17 13:16:44 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33701
33702	* config/mt-sprc8-gcc: New name for mt-sparc8-gcc.
33703	* config/mt-sparcv8-gcc: Delete.
33704	* configure.in: Corresponding changes.
33705
33706Tue Jan 16 16:31:01 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33707
33708	* gmp-impl.h: #include alloca.h when necessary.
33709
33710	* longlong.h: Test __alpha instead of __alpha__, since the former
33711	is the standard symbol.
33712
33713Mon Jan 15 18:06:57 1996  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33714
33715	* mpn/sparc64/mul_1.s: Swap operands of mulx instructions.
33716	* mpn/sparc64/lshift.s: New file.
33717
33718Fri Dec 29 17:34:03 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33719
33720	* mpn/x86/pentium/add_n.S: Get rid of #defines for register names.
33721	* mpn/x86/pentium/sub_n.S: Likewise.
33722
33723Thu Dec 28 03:16:57 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33724
33725	* mpn/x86/pentium/mul_1.S: Rework loop to avoid AGI between update
33726	of loop induction variable and load insn at beginning of loop.
33727	* mpn/x86/pentium/addmul_1.S: Likewise.
33728	* mpn/x86/pentium/submul_1.S: Likewise.
33729
33730Mon Dec 25 23:22:55 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33731
33732	* All files: Prefix user-visible structure fields with _mp_.
33733
33734Fri Dec 22 20:42:17 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33735
33736	* mpn/configure.in (m68k configs): Terminate path variable with
33737	plain "m68k".
33738
33739Fri Dec 22 03:29:33 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33740
33741	* mpn/sparc32/add_n.S: Update from sub_n.S to fix bugs, and to
33742	clean things up.
33743
33744	* mpn/configure.in (m68k configs): Update #include path for new
33745	mpn directory organization.
33746
33747Tue Dec 12 02:53:02 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33748
33749	* gmp.h: Prefix all structure field with _mp_.
33750	* gmp-impl.h: Define access macros for these fields.
33751
33752Sun Dec 10 00:47:17 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33753
33754	* mpn/alpha/addmul_1.s: Prefix labels with `.'.
33755	* mpn/alpha/submul_1.s: Likewise.
33756	* mpn/alpha/[lr]shift.s: Likewise.
33757	* mpn/alpha/udiv_qrnnd.S: Likewise.
33758	* mpn/alpha/ev5/[lr]shift.s: Likewise.
33759
33760	* mpn/alpha/ev5/lshift.s: Fix typos.
33761
33762Fri Dec  1 14:28:20 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33763
33764	* mpn/Makefile.in (.SUFFIXES): Define.
33765
33766Wed Nov 29 23:11:57 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33767
33768	* mpn/sparc64/{add_n.s, sub_n.s}: New files.
33769
33770Tue Nov 28 06:03:13 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33771
33772	* mpn/x86/syntax.h: Handle ELF_SYNTAX.
33773	Rename GAS_SYNTAX => BSD_SYNTAX.
33774
33775	* mpn/configure.in: Handle linuxelf and SysV for x86 variants.
33776
33777Mon Nov 27 01:32:12 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33778
33779	* mpn/hppa/hppa1_1/pa7100/submul_1.S: New file.
33780
33781Sun Nov 26 04:30:47 1995  Torbjorn Granlund  <tege@noisy.matematik.su.se>
33782
33783	* mpn/hppa/hppa1_1/pa7100/addmul_1.S: New file.
33784
33785	* mpn/sparc32/add_n.S: Rewrite to use 64 bit loads/stores.
33786	* mpn/sparc32/sub_n.S: Likewise.
33787
33788Fri Nov 17 00:18:46 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33789
33790	* mpn/configure.in: Handle m68k on NextStep.
33791
33792Thu Nov 16 02:30:26 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33793
33794	* mpn: Reorganize machine-specific directories.
33795	* mpn/configure.in: Corresponding changes.
33796	(sh, sh2): Handle these.
33797	(m68k targets): Create asm-syntax.h.
33798
33799Thu Nov  9 02:20:50 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33800
33801	* mpn/generic/mul_n.c (____mpn_sqr_n): Delete code that calls abort.
33802	(____mpn_mul_n): Likewise.
33803
33804Tue Nov  7 03:25:12 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33805
33806	* mpf/get_str.c: In exponentiation code (two places), don't swap
33807	input and output areas when calling mpn_mul_1.
33808	* mpf/set_str.c: Likewise.
33809
33810Fri Nov  3 02:35:58 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33811
33812	* mpf/Makefile.in: Make sure all objects are listed in dependency list;
33813	delete spurious entries.
33814
33815	* mpf/mul.c: Handle U or V being 0.  Allow prec+1 for result precision.
33816
33817	* mpf/set_prec.c: New computation of limb precision.
33818	* mpf/set_dfl_prec.c: Likewise.
33819
33820	* mpf/random2.c: Fix typo computing exp.
33821	* mpf/get_str.c: In (uexp > usize) case, set n_limbs as a function of
33822	the user-requested number of digits, n_digits.
33823
33824Thu Nov  2 16:25:07 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33825
33826	* mpn/generic/divrem.c (case 2): Don't move np vector back, it is
33827	never read.
33828	(default case): Put most significant limb from np in new variable n2;
33829	decrease size argument for MPN_COPY_DECR; use n2 instead of np[dsize].
33830
33831Wed Nov  1 02:59:53 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33832
33833	* mpn/sparc/[lr]shift.S: New files.
33834
33835Tue Oct 31 00:08:12 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33836
33837	* mpz/gcd_ui.c: Set w->size unconditionally when v is zero.
33838
33839	* gmp-impl.h (assert): Delete definition.
33840
33841	* mpf/sub.c: Delete all assert calls.  Delete variable `cy'.
33842
33843	* mpf/neg.c: Use prec+1 as precision.  Optimize for when arguments
33844	are the same.
33845	* mpf/abs.c: Likewise.
33846	* mpf/{set,neg,abs}.c: Make structure and variable names similar.
33847
33848Mon Oct 30 12:45:26 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33849
33850	* mpf/random2.c (random): Test __SVR4 in addition to __svr4__.
33851	* mpn/generic/random2.c (random): Likewise.
33852
33853Sun Oct 29 01:54:28 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33854
33855	* mpf/div.c: Special handle U or V being 0.
33856
33857	* mpf/random2.c: New file.
33858
33859	* longlong.h (i860 rshift_rhlc): Define.
33860	(i960 udiv_qrnnd): Define.
33861	(i960 count_leading_zeros): Define.
33862	(i960 add_ssaaaa): Define.
33863	(i960 sub_ddmmss): Define.
33864	(i960 rshift_rhlc): Define.
33865
33866Sat Oct 28 19:09:15 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33867
33868	* mpn/pentium/rshift.S: Fix and generalize condition for when to use
33869	special code for shift by 1.
33870	* mpn/pentium/lshift.S: Likewise.
33871
33872Thu Oct 26 00:02:56 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33873
33874	* gmp.h: #undef __need_size_t.
33875	* mp.h: Update from gmp.h.
33876
33877Wed Oct 25 00:17:27 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33878
33879	* mpf/Makefile.in: Compile set_prec.c.
33880	* mpf/realloc.c: Delete this file.
33881	* mpf/Makefile.in: Delete mentions of realloc.c.
33882
33883	* gmp.h (__mpf_struct): Get rid of `alloc' field.
33884	* mpf/clear.c: Likewise.
33885	* mpf/init*.c: Likewise.
33886	* mpf/set_prec.c: Likewise.
33887	* mpf/iset*.c: Likewise.
33888
33889	* mpf/iset_str.c: New file.
33890
33891	* mpn/configure.in: Handle pyramid.
33892
33893	* mpf/set.c: Use prec+1 as precision.
33894
33895	* mpf/set_prec.c: New file.
33896
33897Tue Oct 24 00:56:41 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33898
33899	* mpn/generic/divrem.c: New file.  Will replace mpn/generic/divmod.c
33900	when rest of source is converted.
33901	* mpn/configure.in (functions): Add `divrem'
33902	* mpn/generic/set_str.c: Never call __mpn_mul_1 with zero size.
33903
33904	* mpf/get_str.c: Completely rewritten.
33905	* mpf/add.c: Fix several problems.
33906	* mpf/sub.c: Compare operands from most significant end until
33907	first difference, exclude skipped limbs from computation.
33908	Accordingly simplify normalization code.
33909	* mpf/set_str.c: Fix several problems.
33910	* mpf/dump.c: New file.
33911	* mpf/Makefile.in: Compile dump.c.
33912	* mpf/init2.c: Set prec field correctly.
33913
33914Sun Oct 22 03:02:09 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33915
33916	* cre-conv-tab.c: #include math.h; don't declare log and floor.
33917
33918Sat Oct 21 23:04:10 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33919
33920	* mpf/mul_ui.c: Handle U being 0.
33921
33922Wed Oct 18 19:39:27 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33923
33924	* mpn/generic/set_str.c: Correctly handle input like "000000000000".
33925	Misc cleanups.
33926
33927Tue Oct 17 15:14:13 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33928
33929	* longlong.h: Define COUNT_LEADING_ZEROS_0 for machines where
33930	appropriate.
33931
33932Mon Oct 16 19:14:43 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33933
33934	* mpf/add.c: Rewrite.
33935	* mpf/set_str.c: New file.  Needs more work.
33936
33937Sat Oct 14 00:14:04 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33938
33939	* mpf/div_2exp.c: Vastly simplify.
33940	* mpf/mul_2exp.c: Likewise.
33941
33942	* mpf/sub.c: Rewrite.
33943
33944	* gmp-impl.h (udiv_qrnnd_preinv2gen): Terminate comment.
33945
33946	* mpf/dump.c: Free allocated memory.
33947
33948	* gmp-impl.h (assert): Define.
33949
33950Wed Oct 11 13:31:00 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33951
33952	* mpn/pentium/rshift.S: Install new code to optimize shift-by-1.
33953
33954Tue Oct 10 00:37:21 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33955
33956	* mpn/pentium/lshift.S: Install new code to optimize shift-by-1.
33957
33958	* mpn/powerpc32/{lshift.s,rshift.s}: New files.
33959
33960	* configure.in: Fix typo.
33961
33962Sat Oct  7 08:17:09 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33963
33964	* longlong.h (smul_ppmm): Correct type of __m0 and __m1.
33965
33966Wed Oct  4 16:31:28 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33967
33968	* mpn/configure.in: Handle alphaev5.
33969	* mpn/ev4: New name for alpha subdir.
33970	* mpn/ev5: New subdir.
33971	* mpn/ev5/lshift.s: New file.
33972
33973Tue Oct  3 15:06:45 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33974
33975	* mpn/alpha/mul_1.s: Avoid static increments of pointers; use
33976	corresponding offsets in ldq and stq instructions instead.
33977	(Loop): Swap cmpult and stq to save one cycle on EV5.
33978
33979	* mpn/tests/{add_n.s,sub_n.s,lshift.s,rshift.s,mul_1.s,addmul_1.s,
33980	submul_1.s}: Don't check results if NOCHECK is defined.
33981
33982Mon Oct  2 11:40:18 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33983
33984	* longlong.h (mips umul_ppmm [32 and 64 bit versions]):
33985	Make new variants, based on GCC version number, that use `l' and `h'
33986	constraints instead of explicit mflo and mfhi instructions
33987
33988Sun Oct  1 00:17:47 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33989
33990	* mpn/mc88100/add_n.s: Decrease unrolling factor from 16 to 8.
33991	* mpn/mc88100/sub_n.s: Likewise.
33992
33993	* config/mt-m88110: New file.
33994	* configure.in: Use it.
33995
33996	* mpn/mc88110/mul_1.s: Fix thinko.
33997
33998Sat Sep 30 21:28:19 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
33999
34000	* mpz/set_d.c: Declare `size' at function start.
34001
34002	* experimental: New directory for mpx and mpz2.
34003
34004	* mpz/tdiv_q.c: Clarify comments.
34005	* mpz/{mod.c,mod_ui.c}: New file, for math mod function.
34006
34007	* mpn/sh2/{mul_1.s,addmul_1.s,submul_1.s}: New files.
34008
34009	* mpn/sh/{add_n.s,sub_n.s}: New files.
34010
34011	* mpn/pyr/{add_n.s,sub_n.s,mul_1.s,addmul_1.s}: New files.
34012
34013	* mpn/i960/{add_n.s,sub_n.s}: New files.
34014
34015	* mpn/alpha/addmul_1.s (Loop): Move decrement of r18 to before umulh,
34016	to save cycles on EV5.
34017	* mpn/alpha/submul_1.s: Ditto.
34018	* mpn/alpha/mul_1.s: Ditto.
34019
34020Thu Sep 28 02:48:59 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34021
34022	* gmp.h (mp_limb, mp_limb_signed): Define as `long long' if
34023	_LONG_LONG_LIMB is defined.
34024
34025	* longlong.h (m88110): Test __m88110__, not __mc88110__
34026
34027	* mpn/mc88110/mul_1.s: Rewrite.
34028
34029Tue Sep 26 23:29:05 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34030
34031	* config.sub: Update from current Cygnus version.
34032
34033	* mpn/configure.in: Recognize canonical m88*, not mc88*.
34034
34035Fri Sep 22 14:58:05 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34036
34037	* mpz/set_d.c: New file.
34038	* mpz/Makefile.in: Build new files.
34039
34040	* mpq/get_d.c: Replace usage of scalbn with ldexp.
34041
34042	* mpn/{vax,i386}/gmp-mparam.h: New files.
34043	* gmp-impl.h (ieee_double_extract): Define here.
34044	* mpf/set_d.c (ieee_double_extract): Not here.
34045
34046Thu Sep 21 00:56:36 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34047
34048	* longlong.h (C umul_ppmm): Use UWtype, not USItype for temps.
34049	(udiv_qrnnd): For cases implemented with call to __udiv_qrnnd,
34050	protect with new symbol LONGLONG_STANDALONE.
34051	(68000 umul_ppmm): Use %# prefix for immediate constants.
34052
34053Wed Sep 20 15:36:23 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34054
34055	* mpn/generic/divmod_1.c: Handle
34056	divisor_limb == 1 << (BITS_PER_MP_LIMB - 1)
34057	specifically also when normalization_steps != 0.
34058
34059Mon Sep 18 15:42:30 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34060
34061	* mpq/get_d.c: New file.
34062
34063Sun Sep 17 02:04:36 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34064
34065	* longlong.h (pyr): Botch up for now.
34066
34067Sat Sep 16 00:11:50 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34068
34069	* mpn/clipper/mul_1.s: New file.
34070	* mpn/clipper/add_n.s: New file.
34071	* mpn/clipper/sub_n.s: New file.
34072	* mpn/configure.in: Handle clipper*-*-*.
34073
34074	* mpn/configure.in: Recognize rs6000-*-*.
34075
34076Fri Sep 15 00:41:34 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34077
34078	* mpn/alpha/add_n.s: New file.
34079	* mpn/alpha/sub_n.s: New file.
34080
34081	* mpn/mips3: New name for mpn/r4000.
34082	* mpn/mips2: New name for mpn/r3000.
34083	* mpn/configure.in: Corresponding changes.
34084
34085	* mpn/generic/perfsqr.c (primes): Delete.
34086	(residue_map): Delete.
34087
34088Thu Sep 14 00:07:58 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34089
34090	* mpn/r3000/sub_n.s: Fix typo.
34091
34092	* dm_trunc.c: Delete spurious file.
34093
34094	* mpz/out_binary.c: Fix typo.
34095
34096	* mpn/configure.in (per-target): Make mips*-*-irix6* imply r4000.
34097
34098	* gmp-impl.h: For sparc and sgi, include alloca.h.
34099
34100	* mpn/z8000/mul_1.s: Replace `test r' with `and r,r'.  Replace
34101	`ldk r,#0' with `xor r,r'.
34102
34103Wed Sep  6 00:58:38 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34104
34105	* mpz/inp_binary.c: New file.
34106	* mpz/out_binary.c: New file.
34107	* mpz/Makefile.in: Build new files.
34108
34109Tue Sep  5 22:53:51 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34110
34111	* gmp.h (__mpz_struct): Change `long int' => `mp_size_t' for alloc
34112	and size fields.
34113
34114Sat Sep  2 17:47:59 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34115
34116	* mpn/r4000/{add_n.s,sub_n.s}: Optimize away some pointer arithmetic.
34117	* mpn/r3000/{add_n.s,sub_n.s,lshift.s,rshift.s}: New files,
34118	derived from r4000 code.
34119
34120Fri Sep  1 05:35:52 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34121
34122	* mpn/r3000/mul_1.s: Fix typo.
34123
34124	* mpn/powerpc32: Fix some old vs new mnemonic issues.
34125
34126	* mpn/powerpc32/{add_n.s,sub_n.s}: New files.
34127	* mpn/r4000/{add_n.s,sub_n.s,lshift.s,rshift.s}: New files.
34128
34129Wed Aug 30 10:43:47 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34130
34131	* mpn/r3000/mul_1.s ($LC1): Use addiu for immediate add.
34132	* mpn/r4000/{mul_1.s,addmul_1.s,submul_1.s}: New files.
34133
34134	* config.guess: Update to latest FSF revision.
34135
34136Mon Aug 28 02:18:13 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34137
34138	* mpz/out_str.c: Cast str to char * in fputs call.
34139
34140	* gmp-impl.h: Define UQItype, SItype, and USItype also
34141	when not __GNUC__.
34142
34143Fri Aug 25 01:45:04 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34144
34145	* mpn/i386/syntax.h: Renamed from asm-syntax.h.
34146	* mpn/mc68020/syntax.h: Renamed from asm-syntax.h.
34147	* mpn/configure.in: Corresponding changes.
34148
34149Sun Aug 13 19:20:04 1995  Torbjorn Granlund  <tege@bozo.matematik.su.se>
34150
34151	* mpn/generic/random2.c: Test __hpux, not hpux.
34152
34153Sat Apr 15 20:50:33 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34154
34155	* mpn/sparc/add_n.S: Make it work for PIC.
34156	* mpn/sparc/sub_n.s: Likewise.
34157	* mpn/sparc8/addmul_1.S: Likewise.
34158	* mpn/sparc8/mul_1.S: Likewise.
34159	* mpn/i386/add_n.S: Likewise.
34160	* mpn/i386/sub_n.S: Likewise.
34161
34162Thu Apr 13 23:15:03 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34163
34164	* mpn/configure.in: Don't search power subdir for generic ppc configs.
34165	Add some ppc cpu-specific configs.  Misc clean up.
34166
34167Mon Apr 10 00:16:35 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34168
34169	* mpz/ui_pow_ui.c: Delete spurious code to handle negative results.
34170
34171Sun Apr  9 12:38:11 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34172
34173	* longlong.h (SPARC v8 udiv_qrnnd): Generate remainder in C,
34174	not in asm.
34175
34176	* mpn/generic/sqrt.c (SQRT): Test for __SOFT_FLOAT.
34177
34178Tue Mar 28 00:19:52 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34179
34180	* mpn/generic/hamdist.c (popc_limb): Make Mar 16 change here too.
34181
34182Fri Mar 17 23:29:22 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34183
34184	* longlong.h (SH umul_ppmm): Define.
34185
34186Thu Mar 16 16:40:44 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34187
34188	* mpn/generic/popcount.c (popc_limb): Rearrange 32 bit case
34189	to help CSE.
34190
34191Fri Mar 10 20:03:49 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34192
34193	* mpn/powerpc32/mul_1.s: Clear cy before entering loop.
34194	Rearrange loop to save a cycle.
34195	* mpn/powerpc32/addmul_1.s: New file.
34196	* mpn/powerpc32/submul_1.s: New file.
34197
34198Fri Feb 17 22:44:45 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34199
34200	* mpn/configure.in: Set target_makefile_frag for freebsd
34201	in new case stmt.
34202	* mpn/config/t-freebsd: New file.
34203	* mpn/Makefile.in: Add #### for frag insertion.
34204	(XCFLAGS): Clear by default.
34205	(.c.o, .S.o rules): Pass XCFLAGS.
34206
34207Tue Feb  7 16:27:50 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34208
34209	* longlong.h (68000 umul_ppmm): Merge improvements from henderson.
34210
34211Tue Jan 24 04:23:20 1995  Torbjorn Granlund  (tege@tiny.cygnus.com)
34212
34213	* longlong.h (default umul_ppmm): Store input parameters in temporaries
34214	to avoid reading them twice.
34215	(default smul_ppmm): New definition.
34216
34217Thu Dec 29 04:20:07 1994  Jim Meyering  (meyering@comco.com)
34218
34219	* generic/perfsqr.c (__mpn_perfect_square_p): Remove declaration
34220	of unused variable.
34221	* generic/pre_mod_1.c (__mpn_preinv_mod_1): Likewise.
34222	* mpz/powm.c (pow): Likewise.
34223
34224	* mpz/and.c (mpz_and): Use {} instead of `;' for empty else clause
34225	to placate `gcc -Wall'.
34226	* mpz/ior.c (mpz_ior): Likewise.
34227
34228Wed Dec 28 13:31:40 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34229
34230	* mpn/m*68*/*.S: #include asm-syntax.h, not asm.h.
34231
34232Mon Dec 26 17:15:36 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34233
34234	* longlong.h: Test for more symbols, in __mc68000__ case.
34235
34236	* mpn/mpn/config.sub: Recognize m68060.
34237	* mpn/configure.in: Change mc* to m* for 68k targets.
34238	* mpn/Makefile.in (.S.o): Delete spurious creation of temp .c file.
34239
34240Mon Dec 19 01:56:30 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34241
34242	* config.sub: Recognize pentium as a valid CPU.
34243	* mpn/configure.in: Handle pentium specifically, to use new assembly
34244	code.
34245
34246Mon Dec 19 00:13:01 1994  Jim Meyering  (meyering@comco.com)
34247
34248	* gmp.h: Define _GMP_H_HAVE_FILE if FILE, __STDIO_H__, or H_STDIO
34249	is defined.
34250	* gmp.h: test _GMP_H_HAVE_FILE instead of FILE everywhere else.
34251
34252Mon Dec 19 00:04:54 1994  Kent Boortz  (boortz@sics.se)
34253
34254	* Makefile.in (recursive makes): Pass CFLAGS.
34255
34256Sun Dec 18 22:34:49 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34257
34258	* mpn/pentium: New directory.
34259
34260	* mpz/pprime.c: Make sure to mpz_clear all temporaries.
34261
34262	* longlong.h: Don't use udiv instruction when SUPERSPARC is defined.
34263	* configure.in: Handle supersparc*-.
34264	* config/mt-supspc-gcc: New file.
34265	* config/mt-sparc8-gcc: New name for mt-sparcv8-gcc.
34266
34267Mon Dec 12 22:22:10 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34268
34269	* mpn/i386/*.S: #include "asm-syntax.h", not "asm.h".
34270	#include sysdep.h before asm-syntax.h.
34271
34272	* mpn/mc68020/asm-syntax.h: #undef ALIGN before defining it.
34273	* mpn/i386/asm-syntax.h: Likewise.
34274
34275	* mpn/mc68020/asm-syntax.h: New name for asm.h.
34276	* mpn/i386/asm-syntax.h: New name for asm.h.
34277
34278Tue Dec  6 21:55:25 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34279
34280	* mpz/array_init.c: Fix typo in declaration.
34281
34282Fri Nov 18 19:50:52 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34283
34284	* mpn/Makefile.in (.S.o): Pass CFLAGS and INCLUDES.
34285
34286Mon Nov 14 00:34:12 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34287
34288	* mpn/generic/random2.c (random): Test for __svr4__.
34289
34290Wed Oct 12 23:28:16 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34291
34292	* cre-conv-tab.c (main): Avoid upper-case X in printf format string.
34293
34294Tue Aug 23 17:16:35 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34295
34296	* mpz/perfsqr.c: Use mpn_perfect_square_p.
34297	* mpn/generic/perfsqr.c: New file.
34298
34299Wed Jul  6 13:46:51 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34300
34301	* mpz/array_init.c: New file.
34302	* mpz/Makefile.in: Compile array_init.
34303	* gmp.h: Declare mpz_array_init.
34304
34305Mon Jul  4 01:10:03 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34306
34307	* mpz/add.c: Fix bogus comment.
34308	* mpz/sub.c: Likewise.
34309
34310Sat Jul  2 02:14:56 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34311
34312	* mpn/generic/pre_mod_1.c: New file.
34313	* mpz/perfsqr.c: Use __mpn_preinv_mod_1 when faster.
34314
34315Fri Jul 01 22:10:19 1994  Richard Earnshaw (rwe11@cl.cam.ac.uk)
34316
34317	* longlong.h (arm umul_ppmm): Fix typos in last change.  Mark
34318	hard-coded registers with "%|"
34319
34320Thu Jun 30 03:59:33 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34321
34322	* mpz/perfsqr.c: Define PP, etc, for machines with 64 bit limbs.
34323	Use __mpn_mod_1.
34324	* mpz/perfsqr.c: Don't clobber REM in quadratic residue check loop.
34325
34326Wed Jun 29 18:45:41 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34327
34328	* mpn/generic/sqrt.c (SQRT): New asm for IBM POWER2.
34329
34330	* mpz/gcd_ui.c: Return 0 if result does not fit an unsigned long.
34331
34332	* gmp.h: Use "defined (__STDC__)" consistently.
34333
34334Tue Jun 28 18:44:58 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34335
34336	* gmp.h (mpz_get_si): Don't use "signed" keyword for return type.
34337
34338	* mpz/tests/Makefile.in: Use CFLAGS for linking.
34339
34340	* Makefile.in (CFLAGS): Use -O2 here.
34341	* mpn/Makefile (CFLAGS): Not here.
34342
34343	* mpq/cmp_ui.c: Fix typo.
34344	* mpq/canonicalize.c: Fix typo.
34345	* mpz/gcd_ui.c: Handle gcd(0,v) and gcd(u,0) correctly.
34346	* mpn/generic/gcd_1.c: Fix braino in last change.
34347
34348Mon Jun 27 16:10:27 1994  Torbjorn Granlund  (tege@rtl.cygnus.com)
34349
34350	* mpz/gcd_ui.c: Change return type and return result.
34351	Allow destination param to be NULL.
34352	* gmp.h: Corresponding change.
34353	* mpn/generic/gcd_1.c: Handle zero return from mpn_mod_1.
34354
34355Tue Jun 14 02:17:43 1994  Torbjorn Granlund  (tege@tiny.cygnus.com)
34356
34357	* mpn/i386/asm.h (ALIGN): Make it take a parameter.
34358	* mpn/i386/*.S: Use ALIGN to align all loops.
34359
34360	* mpn/i386/*.S: Move colon inside C_GLOBAL_NAME expression.
34361	(Makes old versions of GAS happy.)
34362
34363Sat May 28 01:43:54 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34364
34365	* Many files: Delete unused variables and labels.
34366	* mpn/generic/dump.c: cast printf width argument to int.
34367
34368Wed May 25 00:42:37 1994  Torbjorn Granlund  (tege@thepub.cygnus.com)
34369
34370	* mpz/gcd.c (mpz_gcd): Normalize after __mpn_sub calls.
34371	(xmod): Ignore return value of __mpn_divmod.
34372	(xmod): Improve normalization code.
34373
34374Sat May 21 01:30:09 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34375
34376	* mpz/gcdext.c: Cosmetic changes.
34377
34378	* mpz/fdiv_ui.c: New file.
34379
34380Fri May 20 00:24:53 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34381
34382	* mpz/tests/Makefile.in: Use explicit rules for running tests,
34383	not a shell loop.
34384	(clean): Delete stmp-*.
34385
34386	* mpz/Makefile.in: Update.
34387
34388	* mpz/div_ui.c: Don't include longlong.h.
34389	* mpz/dm_ui.c: Likewise.
34390
34391	* mpz/fdiv_q.c, mpz/fdiv_q_ui.c, mpz/fdiv_qr.c, mpz/fdiv_qr_ui.c,
34392	mpz/fdiv_r.c, mpz/fdiv_r_ui.c: New files.  Code partly from deleted
34393	mdm.c, mdm_ui.c, etc, partly rewritten.
34394	* mpz/dm_floor_ui.c, mpz/dm_floor.c: Delete.
34395	* mpz/mdm.c, mpz/mdm_ui.c, mpz/mdiv.c, mpz/mdiv_ui.c, mpz/mmod.c,
34396	mpz/mmod_ui.c: Delete.
34397
34398	* mpz/tdiv_q.c, mpz/tdiv_q_ui.c, mpz/tdiv_qr.c, mpz/tdiv_qr_ui.c,
34399	mpz/tdiv_r.c, mpz/tdiv_r_ui.c:
34400	New names for files implementing truncating division.
34401	* mpz/div_ui.c, mpz/dm_ui.c, mpz/mod_ui.c: Simplify.
34402
34403	* mpn/Makefile.in (.S.o): Don't rely on CPP being defined, use CC
34404	instead.
34405	(clean): Delete tmp-*.
34406
34407Thu May 19 01:37:44 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34408
34409	* mpz/cmp.c: Call __mpn_cmp.
34410
34411	* mpz/popcount.c: Fix typo.
34412
34413	* mpz/powm_ui.c: Simplify main loop.  Keep principal operand size
34414	smaller than MSIZE when possible.
34415	* mpz/powm.c: Likewise.
34416
34417	* mpn/generic/sqrt.c: Move alloca calls into where the memory is
34418	needed.  Simplify.
34419
34420	* gmp.h: (_PROTO): New macro.
34421	Add many function declarations; use _PROTO macro in all declarations.
34422
34423	* mpf/*.c: Prepend mpn calls with __.
34424
34425Wed May 18 20:57:06 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34426
34427	* mpf/*ui*.c: Make ui argument `long' for consistency with mpz
34428	functions.
34429
34430	* mpf/div_ui.c: Simplify.
34431
34432Tue May 17 01:05:14 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34433
34434	* mpz/*.c: Prepend mpn calls with __.
34435
34436	* mpz/mul_ui.c: Use mpn_mul_1.
34437
34438Mon May 16 17:19:41 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34439
34440	* mpn/i386/mul_1.S: Use C_GLOBAL_NAME.
34441	* mpn/i386/mul_1.S, mpn/i386/addmul_1.S, mpn/i386/submul_1.S:
34442	Nuke use of LAB.
34443
34444Sat May 14 14:21:02 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34445
34446	* gmp-impl.h: Don't define abort here.
34447
34448	* mpz/pow_ui.c: Increase temporary allocation.
34449	* mpz/ui_pow_ui.c: Likewise.
34450
34451	* gmp.h (mpz_add_1, mpz_sub_1): Don't call memcpy.
34452
34453	* All Makefile.in: Delete spurious -I arguments.
34454	Update dependencies.
34455
34456	* mpz/popcount.c: New file.
34457	* mpz/hamdist.c: New file.
34458
34459	* All configure: Latest version from Cygnus.
34460
34461	* mpq/Makefile.in: New file.
34462	* mpq/configure.in: New file.
34463	* Makefile.in, configure.in: Enable compilation of mpq.
34464
34465	* mpq/set_z.c: Fix typos.
34466	* mpq/canonicalize.c: Fix typos.
34467	* mpq/cmp_ui.c: Fix typos.
34468
34469	* mpf/add_ui.c: Read U->D into UP always.  Delete spurious MPN_COPY.
34470	* mpf/sub_ui.c: Likewise.
34471
34472	* gmp-impl.h: Don't redefine alloca.
34473
34474	* COPYING.LIB: Renamed from COPYING.
34475
34476Wed May 11 01:45:44 1994  Torbjorn Granlund  (tege@adder.cygnus.com)
34477
34478	* mpz/powm_ui.c: When shifting E left by C+1, handle out-of-range
34479	shift counts.  Fix typo when testing negative_result.
34480	* mpz/powm.c: Likewise.
34481
34482	* mpz/ui_pow_ui.c: New file.
34483	* mpz/Makefile.in: Update.
34484
34485	* mpz/pow_ui.c: Call __mpn_mul_n instead of __mpn_mul when possible.
34486
34487	* mpz/div.c, mpz/div_ui.c, mpz/gcd.c: Prefix external mpn calls.
34488	* mpz/gcd.c: Declare mpn_xmod.
34489
34490	* mpz/powm.c: Major changes to accommodate changed mpn semantics.
34491	* mpz/powm_ui.c: Update from mpz/powm.c.
34492
34493	* mpz/tests/tst-io.c: New file.
34494	* mpz/tests/tst-logic: New file.
34495	* mpz/tests/Makefile.in: Update.
34496
34497	* mpz/inp_str.c: Get base right when checking for first digit.
34498	* mpz/inp_str.c: Allocate more space for DEST when needed.
34499
34500	* mpz/com.c: Use mpn_add_1 and mpn_sub_1.
34501	* mpz/and.c, mpz/ior.c: Likewise.  Simplify somewhat.
34502
34503	* mpz/add_ui.c: Use mpn_add_1 and mpn_sub_1.
34504	Rename parameters to be consistent with mpz/sub_ui.
34505	General simplifications.
34506	* mpz/sub_ui.x: Likewise.
34507
34508Tue Aug 10 19:41:16 1993  Torbjorn Granlund  (tege@prudens.matematik.su.se)
34509
34510	* mpf: New directory.
34511	* mpf/*.c: Merge basic set of mpf functions.
34512
34513	* Many logs missing...
34514
34515Sun Apr 25 18:40:26 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
34516
34517	* memory.c: Use #if instead of #ifdef for __STDC__ for consistency.
34518	* bsd/xtom.c: Likewise.
34519
34520	* mpz/div.c: Remove free_me and free_me_size and their usage.
34521	Use mpn_divmod for division; corresponding changes in return value
34522	convention.
34523	* mpz/powm.c: `carry_digit' => `carry_limb'.
34524	* bsd/sdiv.c: Clarify comment.
34525
34526Sun Apr 25 00:31:28 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
34527
34528	* longlong.h (__udiv_qrnnd_c): Make all variables `unsigned long int'.
34529
34530Sat Apr 24 16:23:33 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
34531
34532	* longlong.h (__udiv_qrnnd_c): Make all variables `unsigned long int'.
34533
34534	* gmp-impl.h: #define ABS.
34535	* (Many files): Use ABS instead of abs.
34536
34537	* mpn/generic/sqrt.c, mpz/clrbit.c, mpz/get_si.c, mpz/mod_2exp.c,
34538	mpz/pow_ui.c: Cast 1 to mp_limb before shifting.
34539
34540	* mpz/perfsqr.c: Use #if, not plain if for exclusion of code for
34541	non-32-bit machines.
34542
34543Tue Apr 20 13:13:58 1993  Torbjorn Granlund  (tege@du.nada.kth.se)
34544
34545	* mpn/generic/sqrt.c: Handle overflow for intermediate quotients by
34546	rounding them down to fit.
34547
34548	* mpz/perfsqr.c (PP): Define in hexadecimal to avoid GCC warnings.
34549
34550	* mpz/inp_str.c (char_ok_for_base): New function.
34551	(mpz_inp_str): Use it.
34552
34553Sun Mar 28 21:54:06 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
34554
34555	* mpz/inp_raw.c: Allocate x_index, not xsize limbs.
34556
34557Mon Mar 15 11:44:06 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
34558
34559	* mpz/pprime.c: Declare param `const'.
34560	* gmp.h: Add declarations for mpz_com.
34561
34562Thu Feb 18 14:10:34 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
34563
34564	* mpq/add.c, mpq/sub.c: Call mpz_clear for t.
34565
34566Fri Feb 12 20:27:34 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
34567
34568	* mpz/inp_str.c: Recog minus sign as first character.
34569
34570Wed Feb  3 01:36:02 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
34571
34572	* mpz/iset.c: Handle 0 size.
34573
34574Tue Feb  2 13:03:33 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
34575
34576	* mpz/mod_ui.c: Initialize dividend_size before it's used.
34577
34578Mon Jan  4 09:11:15 1993  Torbjorn Granlund  (tege@sics.se)
34579
34580	* bsd/itom.c: Declare param explicitly 'signed'.
34581	* bsd/sdiv.c: Likewise.
34582
34583	* mpq/cmp.c: Remove unused variable tmp_size.
34584	* mpz/powm_ui.c: Fix typo in esize==0 if stmt.
34585	* mpz/powm.c: Likewise.
34586
34587Sun Nov 29 01:16:11 1992  Torbjorn Granlund  (tege@sics.se)
34588
34589	* mpn/generic/divmod_1.c (mpn_divmod_1): Handle
34590	divisor_limb == 1 << (BITS_PER_MP_LIMB - 1)
34591	specifically.
34592
34593	* Reorganize sources.  New directories mpn, mpn/MACH, mpn/generic,
34594	mpz, mpq, bsd.  Use full file name for change logs hereafter.
34595
34596Wed Oct 28 17:40:04 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
34597
34598	* longlong.h (__hppa umul_ppmm): Fix typos.
34599	(__hppa sub_ddmmss): Swap input arguments.
34600
34601	* mpz_perfsqr.c (mpz_perfect_square_p): Avoid , before } in
34602	initializator.
34603
34604Sun Oct 25 20:30:06 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
34605
34606	* mpz_pprime.c (mpz_probab_prime_p): Handle numbers <= 3
34607	specifically (used to consider all negative numbers prime).
34608
34609	* mpz_powm_ui: `carry_digit' => `carry_limb'.
34610
34611	* sdiv: Handle zero dividend specifically.  Replace most code in
34612	this function with a call to mpn_divmod_1.
34613
34614Fri Sep 11 22:15:55 1992  Torbjorn Granlund  (tege@tarrega.sics.se)
34615
34616	* mpq_clear: Don't free the MP_RAT!
34617
34618	* mpn_lshift, mpn_rshift, mpn_rshiftci: Remove `long' from 4:th arg.
34619
34620Thu Sep  3 01:47:07 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
34621
34622	* All files: Remove leading _ from mpn function names.
34623
34624Wed Sep  2 22:21:16 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
34625
34626	Fix from Jan-Hein Buhrman:
34627	* mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c: Make them work as documented.
34628
34629	* mpz_mmod.c, mpz_mdm.c: Move decl of TEMP_DIVISOR to reflect its
34630	life.
34631
34632Sun Aug 30 18:37:15 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
34633
34634	* _mpz_get_str: Use mpz_sizeinbase for computing out_len.
34635	* _mpz_get_str: Don't remove leading zeros.  Abort if there are some.
34636
34637Wed Mar  4 17:56:56 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34638
34639	* gmp.h: Change definition of MP_INT to make the & before params
34640	optional.  Use typedef to define it.
34641	* mp.h: Use typedef to define MINT.
34642
34643Tue Feb 18 14:38:39 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34644
34645	longlong.h (hppa umul_ppmm): Add missing semicolon.  Declare type
34646	of __w1 and __w0.
34647
34648Fri Feb 14 21:33:21 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34649
34650	* longlong.h: Make default count_leading_zeros work for machines >
34651	32 bits.  Prepend `__' before local variables to avoid conflicts
34652	with users' variables.
34653
34654	* mpn_dm_1.c: Remove udiv_qrnnd_preinv ...
34655	* gmp-impl.h: ... and put it here.
34656	* mpn_mod_1: Use udiv_qrnnd_preinv if it is faster than udiv_qrnnd.
34657
34658Tue Feb 11 17:20:12 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34659
34660	* mpn_mul: Enhance base case by handling small multiplicands.
34661	* mpn_dm_1.c: Revert last change.
34662
34663Mon Feb 10 11:55:15 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34664
34665	* mpn_dm_1.c: Don't define udiv_qrnnd_preinv unless needed.
34666
34667Fri Feb  7 16:26:16 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34668
34669	* mpn_mul: Replace code for base case.
34670
34671Thu Feb  6 15:10:42 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34672
34673	* mpn_dm_1.c (_mpn_divmod_1): Add code for avoiding division by
34674	pre-inverting divisor.
34675
34676Sun Feb  2 11:10:25 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34677
34678	* longlong.h: Make __LLDEBUG__ work differently.
34679	(_IBMR2): Reinsert old code.
34680
34681Sat Feb  1 16:43:00 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34682
34683	* longlong.h (#ifdef _IBMR2): Replace udiv_qrnnd with new code
34684	using floating point operations.  Don't define
34685	UDIV_NEEDS_NORMALIZATION any longer.
34686
34687Fri Jan 31 15:09:13 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34688
34689	* longlong.h: Define UMUL_TIME and UDIV_TIME for most machines.
34690	* longlong.h (#ifdef __hppa): Define umul_ppmm.
34691
34692Wed Jan 29 16:41:36 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34693
34694	* mpn_cmp: Only one length parameter, assume operand lengths are
34695	the same.  Don't require normalization.
34696	* mpq_cmp, mpz_add, mpz_sub, mpz_gcd, mpn_mul, mpn_sqrt: Change for
34697	new mpn_cmp definition.
34698
34699Tue Jan 28 11:18:55 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34700
34701	* _mpz_get_str: Fix typo in comment.
34702
34703Mon Jan 27 09:44:16 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34704
34705	* Makefile.in: Add new files.
34706
34707	* mpn_dm_1.c: New file with function _mpn_divmod_1.
34708	* mpz_dm_ui.c (mpz_divmod_ui): Use _mpn_divmod_1.
34709	* mpz_div_ui: Likewise.
34710
34711	* mpn_mod_1.c: New file with function _mpn_mod_1.
34712	* mpz_mod_ui: Use _mpn_mod_1.
34713
34714Thu Jan 23 18:54:09 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34715
34716	Bug found by Paul Zimmermann (zimmermann@inria.inria.fr):
34717	* mpz_div_ui.c (mpz_div_ui), mpz_dm_ui.c (mpz_divmod_ui):
34718	Handle dividend == 0.
34719
34720Wed Jan 22 12:02:26 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34721
34722	* mpz_pprime.c: Use "" for #include.
34723
34724Sun Jan 19 13:36:55 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34725
34726	* mpn_rshiftci.c (header): Correct comment.
34727
34728Wed Jan 15 18:56:04 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34729
34730	* mpz_powm, mpz_powm_ui (if (bsize > msize)): Do alloca (bsize + 1)
34731	to make space for ignored quotient at the end.  (The quotient might
34732	always be an extra limb.)
34733
34734Tue Jan 14 21:28:48 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34735
34736	* mpz_powm_ui: Fix comment.
34737	* mpz_powm: Likewise.
34738
34739Mon Jan 13 18:16:25 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34740
34741	* tests/Makefile.in: Prepend $(TEST_PREFIX) to Makefile target.
34742
34743Sun Jan 12 13:54:28 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34744
34745	Fixes from Kazumaro Aoki:
34746	* mpz_out_raw: Take abs of size to handle negative values.
34747	* mpz_inp_raw: Reallocate before reading ptr from X.
34748	* mpz_inp_raw: Store, don't read, size to x->size.
34749
34750Tue Jan  7 17:50:25 1992  Torbjorn Granlund  (tege@zevs.sics.se)
34751
34752	* gmp.h, mp.h: Remove parameter names from prototypes.
34753
34754Sun Dec 15 00:09:36 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34755
34756	* tests/Makefile.in: Prepend "./" to file names when executing
34757	tests.
34758
34759	* Makefile.in: Fix many problems.
34760
34761Sat Dec 14 01:00:02 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34762
34763	* mpn_sqrt.c: New file with _mpn_sqrt.
34764	* mpz_sqrt, mpz_sqrtrem, mpz_perfect_square_p: Use _mpn_sqrt.
34765	* msqrt.c: Delete.  Create from mpz_sqrtrem.c in Makefile.in.
34766	* mpz_do_sqrt.c: Delete.
34767	* Makefile.in: Update to reflect these changes.
34768
34769	* Makefile.in, configure, configure.subr: New files
34770	(from bothner@cygnus.com).
34771	* dist-Makefile: Delete.
34772
34773	* mpz_fac_ui: Fix comment.
34774
34775	* mpz_random2: Rewrite a bit to make it possible for the most
34776	significant limb to be == 1.
34777
34778	* mpz_pprime.c (mpz_probab_prime_p): Remove \t\n.
34779
34780Fri Dec 13 23:10:02 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34781
34782	* mpz_do_sqrt: Simplify special case for U == 0.
34783	* m*sqrt*.c, mpz_perfsqr.c (mpz_perfect_square_p):
34784	Rename _mpz_impl_sqrt to _mpz_do_sqrt.
34785
34786Fri Dec 13 12:52:28 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34787
34788	* gmp-impl.h (MPZ_TMP_INIT): Cast to the right type.
34789
34790Thu Dec 12 22:17:29 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34791
34792	* mpn_add, mpn_sub, mpn_mul, mpn_div: Change type of several
34793	variables to mp_size.
34794
34795Wed Dec 11 22:00:34 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34796
34797	* mpn_rshift.c: Fix header comments.
34798
34799Mon Dec  9 17:46:10 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34800
34801	Released 1.2.
34802
34803	* gmp-impl.h (MPZ_TMP_INIT): Cast alloca return value.
34804
34805	* dist-Makefile: Add missing dependency for cre-mparam.
34806
34807	* mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c,
34808	  mpz_mmod_ui.c, mpz_mdm_ui.c: Remove obsolete comment.
34809
34810	* dist-Makefile (clean): clean in tests subdir too.
34811	* tests/Makefile: Define default values for ROOT and SUB.
34812
34813	* longlong.h (__a29k__ udiv_qrnnd): Change "q" to "1" for operand
34814	2 constraint.
34815
34816Mon Nov 11 00:06:05 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34817
34818	* mpz_sizeinb.c (mpz_sizeinbase): Special code for size == 0.
34819
34820Sat Nov  9 23:47:38 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34821
34822	Released 1.1.94.
34823
34824	* dist-Makefile, Makefile, tests/Makefile: Merge tests into
34825	distribution.
34826
34827Fri Nov  8 22:57:19 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34828
34829	* gmp.h: Don't use keyword `signed' for non-ANSI compilers.
34830
34831Thu Nov  7 22:06:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34832
34833	* longlong.h: Cosmetic changes to keep it identical to gcc2 version
34834	of longlong.h.
34835	* longlong.h (__ibm032__): Fix operand order for add_ssaaaa and
34836	sub_ddmmss.
34837
34838Mon Nov  4 00:36:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34839
34840	* mpn_mul: Fix indentation.
34841
34842	* mpz_do_sqrt: Don't assume 32 bit limbs (had constant
34843	4294967296.0).
34844	* mpz_do_sqrt: Handle overflow in conversion from double returned
34845	by SQRT to mp_limb.
34846
34847	* gmp.h: Add missing function definitions.
34848
34849Sun Nov  3 18:25:25 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34850
34851	* mpz_pow_ui: Change type of `i' to int.
34852
34853	* ChangeLog: Add change log entry.
34854	* ChangeLog: Add change log entry.
34855	* ChangeLog: Add change log entry.
34856	* ChangeLog: Add change log entry.
34857	* ChangeLog: Add change log entry.
34858	* ChangeLog: Add change log entry.
34859	* ChangeLog: Add change log entry.
34860	* ChangeLog: Add change log entry.
34861Stack overflow.
34862
34863	* mpz_pow_ui.c: Fix typo in comment.
34864
34865	* dist-Makefile: Create rpow.c from mpz_powm_ui.c.
34866	* mpz_powm_ui.c: Add code for rpow.
34867	* rpow.c: Delete this file.  The rpow function is now implemented
34868	in mpz_powm_ui.c.
34869
34870	* mpz_fac_ui.c: New file.
34871	* gmp.h, dist-Makefile: Add stuff for mpz_fac_ui.
34872
34873	Bug found by John Amanatides (amana@sasquatch.cs.yorku.ca):
34874	* mpz_powm_ui, mpz_powm: Call _mpn_mul in the right way, with
34875	the first argument not smaller than the second.
34876
34877Tue Oct 29 13:56:55 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34878
34879	* cre-conv-tab.c (main), cre-mparam.c (main): Fix typo in output
34880	header text.
34881
34882Mon Oct 28 00:35:29 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34883
34884	* mpz_random2: Handle size == 0.
34885
34886	* gmp-impl.h (struct __mp_bases): Rename chars_per_limb_exactly to
34887	chars_per_bit_exactly, and change its definition.
34888	* cre-conv-tab.c (main): Output field according to its new
34889	definition.
34890	* mpz_out_str, _mpz_get_str, mpz_sizeinb, mout:
34891	Use chars_per_bit_exactly.
34892
34893	* mpz_random2: Change the loop termination condition in order to
34894	get a large most significant limb with higher probability.
34895
34896	* gmp.h: Add declaration of new mpz_random2 and mpz_get_si.
34897	* mpz_get_si.c: New file.
34898	* dist-Makefile: Add mpz_random2 and mpz_get_si.
34899
34900	* mpz_sizeinb.c (mpz_sizeinbase): Special code for base being a
34901	power of 2, giving exact result.
34902
34903	* mpn_mul: Fix MPN_MUL_VERIFY in various ways.
34904	* mpn_mul: New macro KARATSUBA_THRESHOLD.
34905	* mpn_mul (karatsuba's algorithm): Don't write intermediate results
34906	to prodp, use temporary pp instead.  (Intermediate results can be
34907	larger than the final result, possibly writing into hyperspace.)
34908	* mpn_mul: Make smarter choice between Karatsuba's algorithm and the
34909	shortcut algorithm.
34910	* mpn_mul: Fix typo, cy instead of xcy.  Unify carry handling code.
34911
34912Sun Oct 27 19:57:32 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34913
34914	* mpn_mul: In non-classical case, choose Karatsuba's algorithm only
34915	when usize > 1.5 vsize.
34916
34917	* mpn_mul: Break between classical and Karatsuba's algorithm at
34918	KARATSUBA_THRESHOLD, if defined.  Default to 8.
34919
34920	* mpn_div: Kludge to fix stray memory read.
34921
34922Sat Oct 26 20:06:14 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34923
34924	* mpz_gcdext: Handle a = b = 0.  Remove memory leakage by calling
34925	mpz_clear for all temporary variables.
34926
34927	* mpz_gcd: Reduce w_bcnt in _mpn_lshift call to hold that
34928	function's argument constraints.  Compute wsize correctly.
34929
34930	* mpz_gcd: Fix typo in comment.
34931
34932	* memory.c (_mp_default_allocate, _mp_default_reallocate): Call
34933	abort if allocation fails, don't just exit.
34934
34935Fri Oct 25 22:17:20 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34936
34937	* mpz_random2.c: New file.
34938
34939Thu Oct 17 18:06:42 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34940
34941	Bugs found by Pierre-Joseph Gailly (pjg@sunbim.be):
34942	* mpq_cmp: Take sign into account, don't just compare the
34943	magnitudes.
34944	* mpq_cmp: Call _mpn_mul in the right way, with the first argument
34945	not smaller than the second.
34946
34947Wed Oct 16 19:27:32 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34948
34949	* mpz_random: Ensure the result is normalized.
34950
34951Tue Oct 15 14:55:13 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34952
34953	* mpz_clrbit: Support non-ANSI compilers.
34954
34955Wed Oct  9 18:03:28 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34956
34957	* longlong.h (68k add_ssaaaa, sub_ddmmss): Generalize constraints.
34958
34959Tue Oct  8 17:42:59 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34960
34961	* mpz_mdm_ui: Add comments.
34962
34963	* mpz_mdiv: Use MPZ_TMP_INIT instead of mpz_init.
34964	* mpz_init_ui: Change spacing and header comment.
34965
34966Thu Oct  3 18:36:13 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34967
34968	* dist-Makefile: Prepend `./' before some filenames.
34969
34970Sun Sep 29 14:02:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34971
34972	Released 1.1 (public).
34973
34974	* mpz_com: New name of mpz_not.
34975	* dist-Makefile: Change mpz_not to mpz_com.
34976
34977Tue Sep 24 12:44:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34978
34979	* longlong.h: Fix header comment.
34980
34981Mon Sep  9 15:16:24 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34982
34983	Released 1.0.92.
34984
34985	* mpn_mul.c (_mpn_mul): Handle leading zero limbs in non-Karatsuba
34986	case.
34987
34988	* longlong.h (m68000 umul_ppmm): Clobber one register less by
34989	slightly rearranging the code.
34990
34991Sun Sep  1 18:53:25 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34992
34993	* dist-Makefile (stamp-stddefh): Fix typo.
34994
34995Sat Aug 31 20:41:31 1991  Torbjorn Granlund  (tege@zevs.sics.se)
34996
34997	Released 1.0.91.
34998
34999	* mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c,
35000	  mpz_mmod_ui.c, mpz_mdm_ui.c: New files and functions.
35001	* gmp.h, gmp.texi: Define the new functions.
35002
35003Fri Aug 30 08:32:56 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35004
35005	* mpz_gcdext: Compute t argument from the other quantities at the
35006	  end, of the function, not in the loop.  New feature: Allow t to be
35007	  NULL.
35008
35009	* mpz_add.c, mpz_sub.c, mpz_mul.c, mpz_powm.c, mpz_gcd.c: Don't
35010	  include "mp.h".  Use type name `MP_INT' always.
35011
35012	* dist-Makefile, mpz_cmp.c: Merge mcmp.c from mpz_cmp.c.
35013
35014Wed Aug 28 00:45:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35015
35016	* dist-Makefile (documentation): Go via tmp.texi to avoid the
35017	  creation of gmp.dvi if any errors occur.  Make tex read input
35018	  from /dev/null.
35019
35020Fri Aug 23 15:58:52 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35021
35022	* longlong.h (68020, i386): Don't define machine-dependent
35023	  __umulsidi3 (so the default definition is used).
35024	* longlong.h (all machines): Cast all operands, sources and
35025	  destinations, to `unsigned long int'.
35026	* longlong.h: Add gmicro support.
35027
35028Thu Aug 22 00:28:29 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35029
35030	* longlong.h: Rename BITS_PER_LONG to LONG_TYPE_SIZE.
35031	* longlong.h (__ibm032__): Define count_leading_zeros and umul_ppmm.
35032	* longlong.h: Define UMUL_TIME and UDIV_TIME for some CPUs.
35033	* _mpz_get_str.c: Add code to do division by big_base using only
35034	  umul_qrnnd, if that is faster.  Use UMUL_TIME and UDIV_TIME to
35035	  decide which variant to use.
35036
35037Wed Aug 21 15:45:23 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35038
35039	* longlong.h (__sparc__ umul_ppmm): Move two insn from end to the
35040	  nops.  (Saves two insn.)
35041
35042	* longlong.h (__sparc__ umul_ppmm): Rewrite in order to avoid
35043	  branch, and to permit input/output register overlap.
35044
35045	* longlong.h (__29k__): Remove duplicated udiv_qrnnd definition.
35046	* longlong.h (__29k__ umul_ppmm): Split asm instructions into two
35047	  asm statements (gives better code if either the upper or lower
35048	  part of the product is unused.
35049
35050Tue Aug 20 17:57:59 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35051
35052	* _mpz_get_str.c (outside of functions): Remove
35053	  num_to_ascii_lower_case and num_to_ascii_upper_case.  Use string
35054	  constants in the function instead.
35055
35056Mon Aug 19 00:37:42 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35057
35058	* cre-conv-tab.c (main): Output table in hex.  Output 4 fields, not
35059	  3, for components 0 and 1.
35060
35061	* gmp.h: Add declaration of mpq_neg.
35062
35063	Released 1.0beta.13.
35064
35065	* _mpz_set_str.c (mpz_set_str): Cast EOF and SPC to char before
35066	  comparing to enum literals SPC and EOF.  This makes the code work
35067	  for compilers where `char' is unsigned.  (Bug found by Brian
35068	  Beuning).
35069
35070	Released 1.0beta.12.
35071
35072	* mpz_mod_ui: Remove references to quot.  Remove quot_ptr, quot_size
35073	  declarations and assignment code.
35074
35075Sun Aug 18 14:44:26 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35076
35077	* mpz_mod_ui: Handle dividend < 0.
35078
35079	Released 1.0beta.11.
35080
35081	* mpz_dm_ui, mpz_div_ui, mpz_mod_ui, sdiv: Make them share the same
35082	  general structure, variable names, etc.
35083
35084	* sdiv: Un-normalize the remainder in n1 before it is negated.
35085
35086	* longlong.h: Mention UDIV_NEEDS_NORMALIZATION in description of
35087	  udiv_qrnnd.
35088
35089	* mpz_dm_ui.c (mpz_divmod_ui), mpz_div_ui.c (mpz_div_ui): Increment
35090	  the quotient size if the dividend size is incremented.  (Bug found
35091	  by Brian Beuning.)
35092
35093	* mpz_mod_ui: Shift back the remainder, if UDIV_NEEDS_NORMALIZATION.
35094	  (Bug found by Brian Beuning.)
35095
35096	* mpz_mod_ui: Replace "digit" by "limb".
35097
35098	* mpz_perfsqr.c (mpz_perfect_square_p): Disable second test case
35099	  for non-32-bit machines (PP is hardwired for such machines).
35100	* mpz_perfsqr.c (outside of functions): Define PP value with an L.
35101
35102	* mpn_mul.c (_mpn_mul): Add verification code that is activated if
35103	  DEBUG is defined.  Replace "digit" by "limb".
35104	* mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 4.): Normalize temp
35105	  after the addition.
35106	* mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 1.): Compare u0_size
35107	  and v0_size, and according to the result, swap arguments in
35108	  recursive call.  (Don't violate mpn_mul's own argument
35109	  constraints.)
35110
35111Fri Aug 16 13:47:12 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35112
35113	Released 1.0beta.10.
35114
35115	* longlong.h (IBMR2): Add udiv_qrnnd.
35116
35117	* mpz_perfsqr: Remove unused variables.
35118
35119	* mpz_and (case for different signs): Initialize loop variable i!
35120
35121	* dist-Makefile: Update automatically generated dependencies.
35122	* dist-Makefile (madd.c, msub.c, pow.c, mult.c, gcd.c): Add mp.h,
35123	  etc to dependency file lists.
35124
35125	* longlong.h (add_ssaaaa, sub_ddmmss [C default versions]): Make __x
35126	  `unsigned long int'.
35127	* longlong.h: Add `int' after `unsigned' and `long' everywhere.
35128
35129Wed Aug 14 18:06:48 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35130
35131	* longlong.h: Add ARM, i860 support.
35132
35133	* mpn_lshift, mpn_rshift, mpn_rshiftci: Rename *_word with *_limb.
35134
35135Tue Aug 13 21:57:43 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35136
35137	* _mpz_get_str.c, _mpz_set_str.c, mpz_sizeinb.c (mpz_sizeinbase),
35138	  mpz_out_str.c, mout.c: Remove declaration of __mp_bases.
35139	* gmp-impl.h: Put it here, and make it `const'.
35140	* cre-conv-tab.c (main): Make struct __mp_bases `const'.
35141
35142Mon Aug 12 17:11:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35143
35144	* cre-conv-tab.c (main): Use %lu in printf for long ints.
35145
35146	* dist-Makefile: Fix cre-* dependencies.
35147
35148	* cre-conv-tab.c (main): Output field big_base_inverted.
35149
35150	* gmp-impl.h (struct bases): New field big_base_inverted.
35151	* gmp-impl.h (struct bases): Change type of chars_per_limb_exactly
35152	  to float (in order to keep the structure smaller).
35153
35154	* mp.h, gmp.h: Change names of macros for avoiding multiple
35155	  includes.
35156
35157Fri Aug  9 18:01:36 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35158
35159	* _mpz_get_str: Only shift limb array if normalization_steps != 0
35160	  (optimization).
35161
35162	* longlong.h (sparc umul_ppmm): Use __asm__, not asm.
35163	* longlong.h (IBMR2 umul_ppmm): Refer to __m0 and __m1, not to m0
35164	  and m1 (overlap between output and input operands did not work).
35165	* longlong.h: Add VAX, ROMP and HP-PA support.
35166	* longlong.h: Sort the machine dependent code in alphabetical order
35167	  on the CPU name.
35168	* longlong.h: Hack comments.
35169
35170Thu Aug  8 14:13:36 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35171
35172	Released 1.0beta.9.
35173
35174	* longlong.h: Define BITS_PER_LONG to 32 if it's not already
35175	  defined.
35176	* Define __BITS4 to BITS_PER_LONG / 4.
35177	* Don't assume 32 bit word size in "count_leading_zeros" C macro.
35178	  Use __BITS4 and BITS_PER_LONG instead.
35179
35180	* longlong.h: Don't #undef internal macros (reverse change of Aug 3).
35181
35182	* longlong.h (68k): Define add_ssaaaa sub_ddmmss, and umul_ppmm
35183	  even for plain mc68000.
35184
35185	* mpq_div: Flip the sign of the numerator *and* denominator of the
35186	  result if the intermediate denominator is negative.
35187
35188	* mpz_and.c, mpz_ior.c: Use MPN_COPY for all copying operations.
35189
35190	* mpz_and.c: Compute the result size more conservatively.
35191	* mpz_ior.c: Likewise.
35192
35193	* mpz_realloc: Never allocate zero space even if NEW_SIZE == 0.
35194
35195	* dist-Makefile: Remove madd.c, msub.c, pow.c, mult.c, gcd.c from
35196	  BSDMP_SRCS.
35197
35198	* dist-Makefile: Create mult.c from mpz_mul.c.
35199	* mult.c: Delete this file.
35200
35201	* _mpz_set_str: Normalize the result (for bases 2, 4, 8... it was
35202	  not done properly if the input string had many leading zeros).
35203
35204Sun Aug  4 16:54:14 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35205
35206	* dist-Makefile (gcd.c, pow.c, madd.c, msub.c): Make these targets
35207	  work with VPATH and GNU MP.
35208
35209	* mpz_gcd: Don't call mpz_set; inline its functionality.
35210
35211	* mpq_mul, mpq_div: Fix several serious typos.
35212
35213	* mpz_dmincl, mpz_div: Don't normalize the quotient if it's already
35214	  zero.
35215
35216	* mpq_neg.c: New file.
35217
35218	* dist-Makefile: Remove obsolete dependencies.
35219
35220	* mpz_sub: Fix typo.
35221
35222	Bugs found by Pierre-Joseph Gailly (pjg@sunbim.be):
35223	* mpq_mul, mpq_div: Initialize tmp[12] variables even when the gcd
35224	  is just 1.
35225	* mpz_gcd: Handle gcd(0,v) and gcd(u,0) in special cases.
35226
35227Sat Aug  3 23:45:28 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35228
35229	* longlong.h: Clean up comments.
35230	* longlong.h: #undef internal macros.
35231
35232Fri Aug  2 18:29:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35233
35234	* mpq_set_si, mpq_set_ui: Canonicalize 0/x to 0/1.
35235	* mpq_set_si, mpq_set_ui: Cosmetic formatting changes.
35236
35237	* mpz_dmincl.c: Normalize the remainder before shifting it back.
35238
35239	* mpz_dm_ui.c (mpz_divmod_ui): Handle rem == dividend.
35240
35241	* mpn_div.c: Fix comment.
35242
35243	* mpz_add.c, mpz_sub.c: Use __MP_INT (not MP_INT) for intermediate
35244	  type, in order to work for both GNU and Berkeley functions.
35245
35246	* dist-Makefile: Create gcd.c from mpz_gcd.c, pow.c from mpz_powm,
35247	  madd.c from mpz_add.c, msub.c from mpz_sub.c.
35248	  respectively.
35249	* pow.c, gcd.c, mpz_powmincl.c, madd.c, msub.c: Remove these.
35250	* mpz_powm.c, mpz_gcd.c, mpz_add.c, mpz_sub.c: #ifdef for GNU and
35251	  Berkeley function name variants.
35252	* dist-Makefile: Add created files to "clean" target.
35253
35254Tue Jul 16 15:19:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35255
35256	* mpq_get_den: No need for absolute value of the size, the
35257	  denominator is always positive.
35258
35259	* mpz_get_ui: If the operand is zero, return zero.  Don't read the
35260	  limb array!
35261
35262	* mpz_dmincl.c: Don't ignore the return value from _mpn_rshift, it
35263	  is the size of the remainder.
35264
35265Mon Jul 15 11:08:05 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35266
35267	* Several files: Remove unused variables and functions.
35268
35269	* gmp-impl.h: Declare _mpz_impl_sqrt.
35270
35271	* mpz_dm_ui (mpz_divmod_ui), sdiv: Shift back the remainder if
35272	  UDIV_NEEDS_NORMALIZATION.  (Fix from Brian Beuning.)
35273
35274	* mpz_dm_ui.c, sdiv: Replace *digit with *limb.
35275
35276	* mpz_ior: Add missing else statement in -OP1 | -OP2 case.
35277	* mpz_ior: Add missing else statement in OP1 | -OP2 case.
35278	* mpz_ior: Swap also OP1 and OP2 pointers in -OP1 & OP2 case.
35279	* mpz_ior: Duplicate _mpz_realloc code.
35280
35281	* mpz_and: Add missing else statement in -OP1 & -OP2 case.
35282	* mpz_and: Rewrite OP1 & -OP2 case.
35283	* mpz_and: Swap also OP1 and OP2 pointers in -OP1 & OP2 case.
35284
35285	* mpz_gcdext: Loop in d1.size (not b->size).  (Fix from Brian
35286	  Beuning.)
35287
35288	* mpz_perfsqr: Fix argument order in _mpz_impl_sqrt call.  (Fix from
35289	  Brian Beuning.)
35290
35291Fri Jul 12 17:10:33 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35292
35293	* mpq_set.c, mpq_set_ui.c, mpq_set_si.c, mpq_inv.c,
35294	  mpq_get_num.c, mpq_get_den.c, mpq_set_num.c, mpq_set_den.c:
35295	  New files.
35296
35297	* mpz_dmincl.c: Remove second re-allocation of rem->d.  It
35298	  was never executed.
35299
35300	* dist-Makefile: Use `-r' instead of `-x' for test for ranlib (as
35301	  some unixes' test doesn't have the -r option).
35302
35303	* *.*: Cast allocated pointers to the appropriate type (makes old C
35304	  compilers happier).
35305
35306	* cre-conv-tab.c (main): Divide max_uli by 2 and multiply again
35307	  after conversion to double.  (Kludge for broken C compilers.)
35308
35309	* dist-Makefile (stamp-stddefh): New target.  Test if "stddef.h"
35310	  exists in the system and creates a minimal one if it does not
35311	  exist.
35312	* cre-stddefh.c: New file.
35313	* dist-Makefile: Make libgmp.a and libmp.a depend on stamp-stddefh.
35314	* dist-Makefile (clean): Add some more.
35315	* gmp.h, mp.h: Unconditionally include "stddef.h".
35316
35317Thu Jul 11 10:08:21 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35318
35319	* min: Do ungetc of last read character.
35320	* min.c: include stdio.h.
35321
35322	* dist-Makefile: Go via tmp- files for cre* redirection.
35323	* dist-Makefile: Add tmp* to "clean" target.
35324
35325	* dist-Makefile: Use LOCAL_CC for cre*, to simplify cross
35326	  compilation.
35327
35328	* gmp.h, mp.h: Don't define NULL here.
35329	* gmp-impl.h: Define it here.
35330
35331Wed Jul 10 14:13:33 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35332
35333	* mpz_mod_2exp: Don't copy too much, overwriting most significant
35334	  limb.
35335
35336	* mpz_and, mpz_ior: Don't read op[12]_ptr from op[12] when
35337	  reallocating res, if op[12]_ptr got their value from alloca.
35338
35339	* mpz_and, mpz_ior: Clear up comments.
35340
35341	* cre-mparam.c: Output parameters for `short int' and `int'.
35342
35343	* mpz_and, mpz_ior: Negate negative op[12]_size in several places.
35344
35345Tue Jul  9 18:40:30 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35346
35347	* gmp.h, mp.h: Test for _SIZE_T defined before typedef'ing size_t.
35348	  (Fix for Sun lossage.)
35349
35350	* gmp.h: Add declaration of mpq_clear.
35351
35352	* dist-Makefile: Check if "ranlib" exists, before using it.
35353	* dist-Makefile: Add mpz_sqrtrem.c and mpz_size.c.
35354	* mpz_powm: Fix typo, "pow" instead of "mpz_powm".
35355
35356Fri Jul  5 19:08:09 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35357
35358	* move: Remove incorrect comment.
35359
35360	* mpz_free, mpq_free: Rename to *_clear.
35361	* dist-Makefile: Likewise.
35362	* mpq_add, mpq_sub, mpq_mul, mpq_div: Likewise.
35363
35364	* mpz_dmincl.c: Don't call "move", inline its functionality.
35365
35366Thu Jul  4 00:06:39 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35367
35368	* Makefile: Include dist-Makefile.  Fix dist target to include
35369	  dist-Makefile (with the name "Makefile" in the archive).
35370
35371	* dist-Makefile: New file made from Makefile.  Add new mpz_...
35372	  functions.
35373
35374	* mpz_powincl.c New file for mpz_powm (Berkeley MP pow)
35375	  functionality.  Avoids code duplication.
35376	* pow.c, mpz_powm.c: Include mpz_powincl.c
35377
35378	* mpz_dmincl.c: New file containing general division code.  Avoids
35379	  code duplication.
35380	* mpz_dm.c (mpz_divmod), mpz_mod.c (mpz_mod), mdiv.c (mdiv): Include
35381	  mpz_dmincl.c.
35382
35383	* _mpz_get_str: Don't call memmove, unless HAS_MEMMOVE is defined.
35384	  Instead, write the overlapping memory copying inline.
35385
35386	* mpz_dm_ui.c: New name for mpz_divmod_ui.c (SysV file name limit).
35387
35388	* longlong.h: Don't use #elif.
35389	* mpz_do_sqrt.c: Likewise.
35390
35391	* longlong.h: Use __asm__ instead of asm.
35392	* longlong.h (sparc udiv_qrnnd): Make it to one string over several
35393	  lines.
35394
35395	* longlong.h: Preend __ll_ to B, highpart, and lowpart.
35396
35397	* longlong.h: Move array t in count_leading_zeros to the new file
35398	  mp_clz_tab.c.  Rename the array __clz_tab.
35399	* All files: #ifdef for traditional C compatibility.
35400
35401Wed Jul  3 11:42:14 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35402
35403	* mpz_and: Initialize res_ptr always (used to be initialized only
35404	  when reallocating).
35405
35406	* longlong.h (umul_ppmm [C variant]): Make __ul...__vh
35407	  `unsigned int', and cast the multiplications.  This way
35408	  compilers more easily can choose cheaper multiplication
35409	  instructions.
35410
35411	* mpz_mod_2exp: Handle input argument < modulo argument.
35412	* mpz_many: Make sure mp_size is the type for sizes, not int.
35413
35414	* mpz_init, mpz_init_set*, mpq_init, mpq_add, mpq_sub, mpq_mul,
35415	  mpq_div: Change mpz_init* interface.  Structure pointer as first
35416	  arg to initialization function, no longer *return* struct.
35417
35418Sun Jun 30 19:21:44 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35419
35420	* Rename mpz_impl_sqrt.c to mpz_do_sqrt.c to satisfy SysV 14
35421	  character file name length limit.
35422
35423	* Most files: Rename MINT to MP_INT.  Rename MRAT to MP_RAT.
35424	* mpz_sizeinb.c: New file with function mpz_sizeinbase.
35425	* mp_bases.c: New file, with array __mp_bases.
35426	* _mpz_get_str, _mpz_set_str: Remove struct bases, use extern
35427	  __mp_bases instead.
35428	* mout, mpz_out_str: Use array __mp_bases instead of function
35429	  _mpz_get_cvtlen.
35430	* mpz_get_cvtlen.c: Remove.
35431	* Makefile: Update.
35432
35433Sat Jun 29 21:57:28 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35434
35435	* longlong.h (__sparc8__ umul_ppmm): Insert 3 nop:s for wr delay.
35436	* longlong.h (___IBMR2__): Define umul_ppmm, add_ssaaaa, sub_ddmmss.
35437	* longlong.h (__sparc__): Don't call .umul; expand asm instead.
35438	  Don't define __umulsidi3 (i.e. use default definition).
35439
35440Mon Jun 24 17:37:23 1991  Torbjorn Granlund  (tege@amon.sics.se)
35441
35442	* _mpz_get_str.c (num_to_ascii_lower_case, num_to_ascii_upper_case):
35443	  Swap 't' and 's'.
35444
35445Sat Jun 22 13:54:01 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35446
35447	* mpz_gcdext.c: New file.
35448
35449	* mpn_mul: Handle carry and unexpected operand sizes in last
35450	  additions/subtractions.  (Bug trigged when v1_size == 1.)
35451
35452	* mp*_alloc*: Rename functions to mp*_init* (files to mp*_iset*.c).
35453	* mpq_*: Call mpz_init*.
35454
35455	* mpz_pow_ui, rpow: Use _mpn_mul instead of mult.  Restructure.
35456
35457Wed May 29 20:32:33 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35458
35459	* mpz_get_cvtlen: multiply by size.
35460
35461Sun May 26 15:01:15 1991  Torbjorn Granlund  (tege@bella.nada.kth.se)
35462
35463	Alpha-release 0.95.
35464
35465	Fixes from Doug Lea (dl@g.oswego.edu):
35466	* mpz_mul_ui: Loop to MULT_SIZE (not PROD_SIZE).  Adjust PROD_SIZE
35467	  correctly.
35468	* mpz_div: Prepend _ to mpz_realloc.
35469	* mpz_set_xs, mpz_set_ds: Fix typos in function name.
35470
35471Sat May 25 22:51:16 1991  Torbjorn Granlund  (tege@bella.nada.kth.se)
35472
35473	* mpz_divmod_ui: New function.
35474
35475	* sdiv: Make the sign of the remainder correct.
35476
35477Thu May 23 15:28:24 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35478
35479	* Alpha-release 0.94.
35480
35481	* mpz_mul_ui: Include longlong.h.
35482
35483	* mpz_perfsqr.c (mpz_perfect_square_p): Call _mpz_impl_sqrt instead
35484	  of msqrt.
35485
35486	* mpz_impl_sqrt: Don't call "move", inline its functionality.
35487
35488	* mdiv: Use MPN_COPY instead of memcpy.
35489	* rpow, mpz_mul, mpz_mod_2exp: Likewise.
35490	* pow.c: Likewise, and fix bug in the size arg.
35491
35492	* xtom: Don't use mpz_alloc, inline needed code instead.  Call
35493	  _mpz_set_str instead of mpz_set_str.
35494
35495	* Makefile: Make two libraries, libmp.a and libgmp.a.
35496
35497Thu May 22 20:25:29 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35498
35499	* Add manual to distribution.
35500	* Fold in many missing routines described in the manual.
35501	* Update Makefile.
35502
35503Wed May 22 13:48:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35504
35505	* mpz_set_str: Make it handle 0x prefix OK.
35506
35507Sat May 18 18:31:02 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35508
35509	* memory.c (_mp_default_reallocate): Swap OLD_SIZE and NEW_SIZE
35510	  arguments.
35511	* mpz_realloc (_mpz_realloc): Swap in call to _mp_reallocate_func.
35512	* min: Likewise.
35513
35514Thu May 16 20:43:05 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35515
35516	* memory.c: Make the default allocations functions global.
35517	* mp_set_fns (mp_set_memory_functions): Make a NULL pointer mean the
35518	  default memory function.
35519
35520Wed May  8 20:02:42 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35521
35522	* mpz_div: Handle DEN the same as QUOT correctly by copying DEN->D
35523	  even if no normalization is needed.
35524	* mpz_div: Rework reallocation scheme, to avoid excess copying.
35525
35526	* mpz_sub_ui.c, mpz_add_ui.c: New files.
35527
35528	* mpz_cmp.c, mpz_cmp_ui.c: New files.
35529
35530	* mpz_mul_2exp: Handle zero input MINT correctly.
35531
35532	* mpn_rshiftci: Don't handle shift counts > BITS_PER_MP_DIGIT.
35533
35534	* mpz_out_raw.c, mpz_inp_raw.c: New files for raw I/O.
35535
35536Tue May  7 15:44:58 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35537
35538	* mpn_rshift: Don't handle shift counts > BITS_PER_MP_DIGIT.
35539	* mpz_div_2exp: Don't call _mpn_rshift with cnt > BITS_PER_MP_DIGIT.
35540	* gcd, mpz_gcd: Likewise.
35541
35542	* gcd, mpz_gcd: Handle common 2 factors correctly.
35543
35544Mon May  6 20:22:59 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35545
35546	* gmp-impl.h (MPN_COPY): Inline a loop instead of calling memcpy.
35547
35548	* gmp-impl.h, mpz_get_str, rpow: Swap DST and SRC in TMPCOPY* macros.
35549
35550Sun May  5 15:16:23 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35551
35552	* mpz_div: Remove test for QUOT == 0.
35553
35554Sun Apr 28 20:21:04 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35555
35556	* pow: Don't make MOD normalization in place, as it's a bad idea to
35557	  write on an input parameter.
35558	* pow: Reduce BASE if it's > MOD.
35559	* pow, mult, mpz_mul: Simplify realloc code.
35560
35561Sat Apr 27 21:03:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35562
35563	* Install multiplication using Karatsuba's algorithm as default.
35564
35565Fri Apr 26 01:03:57 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35566
35567	* msqrt: Store in ROOT even for U==0, to make msqrt(0) defined.
35568
35569	* mpz_div_2exp.c, mpz_mul_2exp.c: New files for shifting right and
35570	  left, respectively.
35571	* gmp.h: Add definitions for mpz_div_2exp and mpz_mul_2exp.
35572
35573	* mlshift.c, mrshift.c: Remove.
35574
35575Wed Apr 24 21:39:22 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35576
35577	* mpn_mul: Check only for m2_size == 0 in function header.
35578
35579Mon Apr 22 01:31:57 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35580
35581	* karatsuba.c: New file for Karatsuba's multiplication algorithm.
35582
35583	* mpz_random, mpz_init, mpz_mod_2exp: New files and functions.
35584
35585	* mpn_cmp: Fix header comment.
35586
35587Sun Apr 21 00:10:44 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35588
35589	* pow: Switch off initial base reduction.
35590
35591Sat Apr 20 22:06:05 1991  Torbjorn Granlund  (tege@echnaton.sics.se)
35592
35593	* mpz_get_str: Don't generate initial zeros for initial word.
35594	  Used to write outside of allocated storage.
35595
35596Mon Apr 15 15:48:08 1991  Torbjorn Granlund  (tege@zevs.sics.se)
35597
35598	* _mpz_realloc: Make it accept size in number of mp_digits.
35599	* Most functions: Use new _mpz_realloc definition.
35600
35601	* mpz_set_str: Remove calls _mp_free_func.
35602
35603	* Most functions: Rename mpn_* to _mpn_*.  Rename mpz_realloc to
35604	  _mpz_realloc.
35605	* mpn_lshift: Redefine _mpn_lshift to only handle small shifts.
35606	* mdiv, mpz_div, ...: Changes for new definition of _mpn_lshift.
35607	* msqrt, mp*_*shift*: Define cnt as unsigned (for speed).
35608
35609Sat Apr  6 14:05:16 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
35610
35611	* mpn_mul: Multiply by the first digit in M2 in a special
35612	  loop instead of zeroing the product area.
35613
35614	* mpz_abs.c: New file.
35615
35616	* sdiv: Implement as mpz_div_si for speed.
35617
35618	* mpn_add: Make it work for second source operand == 0.
35619
35620	* msub: Negate the correct operand, i.e. V before swapping, not
35621	  the smaller of U and V!
35622	* madd, msub: Update abs_* when swapping operands, and not after
35623	  (optimization).
35624
35625Fri Apr  5 00:19:36 1991  Torbjorn Granlund  (tege@black.nada.kth.se)
35626
35627	* mpn_sub: Make it work for subtrahend == 0.
35628
35629	* madd, msub: Rewrite to minimize mpn_cmp calls.  Ensure
35630	  mpn_cmp is called with positive sizes (used to be called
35631	  incorrectly with negative sizes sometimes).
35632
35633	* msqrt: Make it divide by zero if fed with a negative number.
35634	* Remove if statement at end of precision calculation that was
35635	  never true.
35636
35637	* itom, mp.h: The argument is of type short, not int.
35638
35639	* mpz_realloc, gmp.h: Make mpz_realloc return the new digit pointer.
35640
35641	* mpz_get_str.c, mpz_set_str.c, mpz_new_str.c: Don't include mp.h.
35642
35643	* Add COPYING to distribution.
35644
35645	* mpz_div_ui.c, mpz_div_si.c, mpz_new_ui.c, mpz_new_si.c: New files.
35646
35647Fri Mar 15 00:26:29 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
35648
35649	* Add Copyleft headers to all files.
35650
35651	* mpn_mul.c, mpn_div.c: Add header comments.
35652	* mult.c, mdiv.c: Update header comments.
35653
35654	* mpq_add.c, mpq_sub.c, mpq_div.c, mpq_new.c, mpq_new_ui.c,
35655	  mpq_free.c: New files for rational arithmetics.
35656
35657	* mpn_lshift.c: Avoid writing the most significant word if it is 0.
35658
35659	* mdiv.c: Call mpn_lshift for the normalization.
35660	* mdiv.c: Remove #ifdefs.
35661
35662	* Makefile: Add ChangeLog to DISTFILES.
35663
35664	* mpn_div.c: Make the add_back code work (by removing abort()).
35665	* mpn_div.c: Make it return if the quotient is size as compared
35666	  with the difference NSIZE - DSIZE.  If the stored quotient is
35667	  larger than that, return 1, otherwise 0.
35668	* gmp.h: Fix mpn_div declaration.
35669	* mdiv.c: Adopt call to mpn_div.
35670	* mpz_div.c: New file (developed from mdiv.c).
35671
35672	* README: Update routine names.
35673
35674Thu Mar 14 18:45:28 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
35675
35676	* mpq_mul.c: New file for rational multiplication.
35677
35678	* gmp.h: Add definitions for rational arithmetics.
35679
35680	* mpn_div: Kludge the case where the high numerator digit > the
35681	  high denominator digit.  (This code is going to be optimized later.)
35682
35683	* New files: gmp.h for GNU specific functions, gmp-common.h for
35684	  definitions common for mp.h and gmp.h.
35685
35686	* Ensure mp.h just defines what BSD mp.h defines.
35687
35688	* pow.c: Fix typo for bp allocation.
35689
35690	* Rename natural number functions to mpn_*, integer functions to
35691	  mpz_*.
35692
35693Tue Mar  5 18:47:04 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
35694
35695	* mdiv.c (_mp_divide, case 2): Change test for estimate of Q from
35696	  "n0 >= r" to "n0 > r".
35697
35698	* msqrt: Tune the increasing precision scheme, to do fewer steps.
35699
35700Tue Mar  3 18:50:10 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
35701
35702	* msqrt: Use the low level routines.  Use low precision in the
35703	beginning, and increase the precision as the result converges.
35704	(This optimization gave a 6-fold speedup.)
35705