[project @ 1998-11-26 09:17:22 by sof]
[ghc-hetmet.git] / ghc / runtime / gmp / ChangeLog
1 Wed May 19 12:14:19 1993  Torbjorn Granlund  (tege@nada.kth.se)
2
3         * Many files: Call alloca(0) before function return.
4         * alloca.c: New file.
5         * Makefile (IMPL_SRCS): Add alloca.c.
6         (IMPL_OBJS): Add alloca.o.
7
8 Fri May 14 00:52:01 1993  Torbjorn Granlund  (tege@nada.kth.se)
9
10         * mpz_iset_str.c: Fix header comment.
11
12         * gmp.h: Don't test just FILE, tests some variants of _STDIO_H for
13         machines were FILE is a typedef.
14
15 Tue May 11 21:20:07 1993  Torbjorn Granlund  (tege@nada.kth.se)
16
17         * Makefile (realclean): Make it just be like clean.
18         (In particular, don't delete Makefile...)
19
20 Thu May  6 14:31:02 1993  Torbjorn Granlund  (tege@nada.kth.se)
21
22         * mpn_mul.c (vsize < KARATSUBA_THRESHOLD): Eliminate unused
23         variable `c'.
24
25         * longlong.h (#if mc88110): Use local union to avoid explicit mov
26         insns.
27         * longlong.h (All union defs): Prepend __ before tags to avoid
28         conflicts.  Cleanup union definitions to look the same.
29
30         * mpz_inp_str.c: Pass BASE to char_ok_for_base. 
31
32 Wed May  5 01:25:23 1993  Torbjorn Granlund  (tege@nada.kth.se)
33
34         * tests/tst-convert.c: Try base == 0.
35
36         * mpz_inp_str.c: Fix typo in assignment.
37
38         * longlong.h: Adjust UMUL_TIME and UDIV_TIME for several archs.
39         (#if hppa): Remove udiv_qrnnd.
40         (#if vax): Define sdiv_qrnnd.  Use "g" constraint for umul_ppmm's
41         operand 0.
42
43 Tue May  4 17:11:55 1993  Torbjorn Granlund  (tege@du.nada.kth.se)
44
45         * longlong.h (#if ns32000): Fix typo, udiv_qrnnd was div_qrnnd.
46
47 Mon May  3 00:20:52 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
48
49         * Makefile: Add rule for mp_bases.o.
50
51         * _mpz_set_str.c: Make inp_digit an mp_limb.  Remove casts of
52         inp_digit to unsigned.
53
54         * mpn_dm_1.c: Use BITS_PER_MP_LIMB instead of 32.
55         * mpn_mod_1.c: Likewise.
56         * mpn_dm_1.c (udiv_qrnnd_preinv): Delete testing of overflow that
57         Peter Montgomery proved can't happen.
58
59         * tests/*.c: Include gmp-impl.h to make `inline' and `const' be
60         #define'd.
61
62         * Makefile: Update automatically generated dependencies.
63
64         * mpz_pow_ui: Don't include mp.h.
65         Use MP_INT instead of MINT even for rpow.
66
67 Sun May  2 16:35:53 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
68
69         * tests/tst-convert.c, tests/tst-dm_ui.c, tests/tst-mdm.c,
70         tests/tst-mdm_ui.c: New files.
71         * tests/tst-dm.c: New name for tests/tst-divmod.c.
72         * tests/*.c: Include urandom.h.  Use urandom(), never random().
73         Restructure test code to be more consistent, define and use
74         dump_abort(), only dump input operands, generate negative operands
75         when allowed by the tested function, etc.
76         * tests/urandom.h: New file.
77         * tests/Makefile: Add new tests.  Update dependencies.
78         (CFLAGS): Pass `-I.'.
79         (tests) Don't print "The tests passed" since we don't correctly
80         detect failures.
81
82         * mpz_fac_ui: Fix some comments.
83
84         * mpz_random.c, mpz_random2.c: Declare random();
85         Define random to call mrand48 for __alpha__.
86
87         * All files: Use #ifdef instead if #if for testing __STDC__.
88
89         * longlong.h (#if sparc_v8): Define UMUL_TIME and UDIV_TIME.
90
91         * mpz_inp_str.c: If BASE is 0, try to determine the base from the
92         leading characters.  Restructure code.
93
94         * mpz_pprime_p.c: Include gmp-impl.h.
95
96 Fri Apr 30 09:35:03 1993  Torbjorn Granlund  (tege@du.nada.kth.se)
97
98         * tests/Makefile: Set CC and OPT as in main Makefile.
99         Add copyright notice.
100
101         * gmp.h: Remove declaration of mpz_not.
102
103 Thu Apr 29 19:51:34 1993  Torbjorn Granlund  (tege@du.nada.kth.se)
104
105         * mpq_cmp.c: Fix header comment.
106
107         From Anders Thulin:
108         * mpz_inp_str.c: Get condition for char_ok_for_base right.
109
110 Tue Apr 27 12:30:48 1993  Torbjorn Granlund  (tege@du.nada.kth.se)
111
112         * Makefile (check): Pass OPT to recursive make.
113         * tests/Makefile (OPT): Set to default value.
114         (CFLAGS): Don't include -g.
115         (tst-mul): Pass $(CFLAGS) to $(CC).
116         (tst-divmod): Likewise.
117         (tst-gcd): Likewise.
118         (tst-sqrtrem): Likewise.
119
120         * mpz_gcd.c: Fix typo in comments.
121
122         * mpz_sqrtrem.c: Really divide by zero for negative operands.
123
124         * mpz_mul_ui.c: Fix header comment.
125
126         * mpz_get_si.c: Fix type typo in cast.
127
128 Sun Apr 25 18:40:26 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
129
130         * memory.c: Use #if instead of #ifdef for __STDC__ for consistency.
131         * bsd/xtom.c: Likewise.
132
133         * cre-conv-tab.c: #include gmp.h and gmp-impl.h to get bit size
134         right for longlong.h.
135         * Makefile: Add new deps for `cre-conv-tab'.
136
137         * Makefile, tests/Makefile: Don't define or use srcdir.
138
139         * longlong.h (#if alpha): Define umul_ppmm.
140         Define UMUL_TIME and UDIV_TIME.
141         (#if i960): Define umul_ppmm and __umulsidi3.
142         (#if hppa): Define count_leading_zeros.
143         (#if IBMR2): Remove umul_ppmm.  Define smul_ppmm.
144         (#if 68020): Define smul_ppmm.
145         (#if mc88110): Define umul_ppmm and udiv_qrnnd.
146         (#if ns32000): Define umul_ppmm.
147         (#if pyr): Rewrite umul_ppmm.
148
149         * mpz_powm: `carry_digit' => `carry_limb'.
150         * sdiv.c: Clearify comment.
151
152 Sat Apr 24 16:23:33 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
153
154         * tests: Update header comments.  Make default sizes 8, use SIZE
155         symbol to allow user override.  Increase default repetitions.
156
157         * longlong.h (__udiv_qrnnd_c):  Define this always.
158         Make all variables `unsigned long int'.
159         (__LLDEBUG__): Remove this conditional.
160
161         * gmp-impl.h: #define ABS.
162         * (Many files): Use ABS instead of abs.
163
164         * _mpz_get_str, mpn_sqrt, mpz_clrbit, mpz_get_si, mpz_mod_2exp,
165         mpz_pow_ui, mpz_random2: Cast 1 to mp_limb before shifting.
166
167         * gmp.h: mpn_add returns mp_limb.
168
169         * mpz_perfsqr: Use #if, not plain if for exclusion of code for
170         non-32-bit machines.
171
172 Tue Apr 20 13:13:58 1993  Torbjorn Granlund  (tege@du.nada.kth.se)
173
174         * mpn_sqrt: Handle overflow for intermediate quotients by rounding
175         them down to fit.
176
177         * mpz_random2: Back to random(); rand() is so bad we get into cycles.
178
179         * mpz_perfsqr.c (PP): Define in hexadecimal to avoid GCC warnings.
180
181         * mpz_inp_str.c (char_ok_for_base): New function.
182         (mpz_inp_str): Use it.
183
184         * gmp.h: Add `const' to decl of mpz_probab_pripe_p.
185
186         * _mpz_set_str.c (char_type): Remove final `,'.
187         (ascii_to_num): Likewise.
188
189 Sun Mar 28 21:54:06 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
190
191         * mpz_inp_raw: Allocate x_index, not xsize limbs.
192
193 Mon Mar 15 11:44:06 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
194
195         * mpz_pprime_p.c: Declare param `const'.
196         * gmp.h: Add declarations for mpz_com.
197
198 Thu Feb 18 14:10:34 1993  Torbjorn Granlund  (tege@pde.nada.kth.se)
199
200         * mpq_add, mpq_sub: Call mpz_clear for t.
201
202 Fri Feb 12 20:27:34 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
203
204         * mpz_inp_str: Recog minus sign as first character.
205
206 Wed Feb  3 01:36:02 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
207
208         * mpz_random.c (urandom): New conditionally defined local function.
209         Use it instead of random().
210         * mpz_random2: Use rand() instead of random() here, since we don't
211         care how many bits we get.
212
213         * mpz_iset: Handle 0 size.
214
215 Tue Feb  2 13:03:33 1993  Torbjorn Granlund  (tege@cyklop.nada.kth.se)
216
217         * _mpz_get_str: Adjust for negative msize when returning str.
218
219         * mpz_mod_ui: Initialize dividend_size before it's used.
220
221 Mon Jan  4 09:11:15 1993  Torbjorn Granlund  (tege@sics.se)
222
223         * itom: Declare param explicitly 'signed'.
224         * sdiv: Likewise.
225
226         * mpq_cmp: Remove unused variable tmp_size.
227         * mpz_powm_ui: Fix typo in esize==0 if stmt.
228         * mpz_powm: Likewise.
229
230 Sun Nov 29 01:16:11 1992  Torbjorn Granlund  (tege@sics.se)
231
232         * mpn_dm_1.c (mpn_divmod_1): Handle
233         divisor_limb == 1 << (BITS_PER_MP_LIMB - 1)
234         specifically.
235
236 Sat Nov 28 17:19:40 1992  Torbjorn Granlund  (tege@sics.se)
237
238         * mpz_div: Remove free_me and free_me_size and their usage.
239
240 Wed Oct 28 17:40:04 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
241
242         * longlong.h (__hppa umul_ppmm): Fix typos.
243         (__hppa sub_ddmmss): Swap input arguments.
244
245         * mpz_perfsqr.c (mpz_perfect_square_p): Avoid , before } in
246         initializator.
247
248 Sun Oct 25 20:30:06 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
249
250         * mpz_pprime_p.c (mpz_probab_prime_p): Handle numbers <= 3
251         specifically (used to consider all negative numbers prime).
252
253         * mpz_powm_ui: `carry_digit' => `carry_limb'.
254
255         * sdiv: Handle zero dividend specifically.  Replace most code in
256         this function with a call to mpn_divmod_1.
257
258         * mpn_add: Return type is mp_limb.
259
260         * _mpz_get_str: Assign and use MSIZE smarter, to avoid using
261         m->size.
262         * _mpz_get_str: Allocate extra STR space if (MSIZE < 0) for minus
263         sign.
264         * _mpz_get_str: Move string backwards smarter, avoid copying when
265         not needed.
266
267         * gmp.h (mpn_lshift, mpn_rshift, mpn_rshiftci): Remove `long' from
268         4:th arg.
269         * Makefile.in (MP_OBJS) : Include mpz_sizeinb.o.
270
271 Fri Sep 11 22:15:55 1992  Torbjorn Granlund  (tege@tarrega.sics.se)
272
273         * mpq_clear: Don't free the MP_RAT!
274
275         * mpn_lshift, mpn_rshift, mpn_rshiftci: Remove `long' from 4:th arg.
276
277 Thu Sep  3 01:47:07 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
278
279         * mpn_mul: Rewrite code jumping between `carry case' and `noncarry
280         case' to avoid jumping.  Special case for V_LIMB being 0 ot 1.
281         * All files: Remove leading _ from mpn function names.
282
283 Wed Sep  2 22:21:16 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
284
285         Fix from Jan-Hein Buhrman:
286         * mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c: Make them work as documented.
287
288         * mpz_mmod.c, mpz_mdm.c: Move decl of TEMP_DIVISOR to reflect its
289         life.
290
291 Sun Aug 30 18:37:15 1992  Torbjorn Granlund  (tege@jupiter.sics.se)
292
293         * _mpz_get_str: Use mpz_sizeinbase for computing out_len.
294         * _mpz_get_str: Don't remove leading zeros.  Abort if there are some.
295
296 Tue Feb 18 14:38:39 1992  Torbjorn Granlund  (tege@zevs.sics.se)
297
298         longlong.h (hppa umul_ppmm): Add missing semicolon.  Declare type
299         of __w1 and __w0.
300
301 Fri Feb 14 21:33:21 1992  Torbjorn Granlund  (tege@zevs.sics.se)
302
303         * longlong.h: Make default count_leading_zeros work for machines >
304         32 bits.  Prepend `__' before local variables to avoid conflicts
305         with users' variables.
306
307 Thu Feb  6 15:10:42 1992  Torbjorn Granlund  (tege@zevs.sics.se)
308
309         * mpn_dm_1.c (_mpn_divmod_1): Add code for avoiding division by
310         pre-inverting divisor.
311
312 Sun Feb  2 11:10:25 1992  Torbjorn Granlund  (tege@sics.se)
313
314         * longlong.h: Make __LLDEBUG__ work differently.
315         (_IBMR2): Reinsert old code.
316
317 Sat Feb  1 16:43:00 1992  Torbjorn Granlund  (tege@sics.se)
318
319         * longlong.h (#ifdef _IBMR2): Replace udiv_qrnnd with new code
320         using floating point operations.  Don't define
321         UDIV_NEEDS_NORMALIZATION any longer.
322
323 Fri Jan 31 15:09:13 1992  Torbjorn Granlund  (tege@sics.se)
324
325         * longlong.h: Define UMUL_TIME and UDIV_TIME for most machines.
326         * longlong.h (#ifdef __hppa): Define umul_ppmm.
327
328 Wed Jan 29 16:41:36 1992  Torbjorn Granlund  (tege@sics.se)
329
330         * mpn_cmp: Only one length parameter, assume operand lengths are
331         the same.  Don't require normalization.
332         * mpq_cmp, mpz_add, mpz_sub, mpz_gcd, mpn_mul, mpn_sqrt: Change for
333         new mpn_cmp definition.
334
335 Tue Jan 28 11:18:55 1992  Torbjorn Granlund  (tege@sics.se)
336
337         * _mpz_get_str: Fix typo in comment.
338
339 Mon Jan 27 09:44:16 1992  Torbjorn Granlund  (tege@sics.se)
340
341         * Makefile.in: Add new files.
342
343         * mpn_dm_1.c: New file with function _mpn_divmod_1.
344         * mpz_dm_ui.c (mpz_divmod_ui): Use _mpn_divmod_1.
345         * mpz_div_ui: Likewise.
346
347         * mpn_mod_1.c: New file with function _mpn_mod_1.
348         * mpz_mod_ui: Use _mpn_mod_1.
349
350 Thu Jan 23 18:54:09 1992  Torbjorn Granlund  (tege@sics.se)
351
352         Bug found by Paul Zimmermann (zimmermann@inria.inria.fr):
353         * mpz_div_ui.c (mpz_div_ui), mpz_dm_ui.c (mpz_divmod_ui):
354         Handle dividend == 0.
355
356 Wed Jan 22 12:02:26 1992  Torbjorn Granlund  (tege@sics.se)
357
358         * mpz_pprime_p.c: Use "" for #include.
359
360 Sun Jan 19 13:36:55 1992  Torbjorn Granlund  (tege@sics.se)
361
362         * mpn_rshiftci.c (header): Correct comment.
363
364 Wed Jan 15 18:56:04 1992  Torbjorn Granlund  (tege@sics.se)
365
366         * mpz_powm, mpz_powm_ui (if (bsize > msize)): Do alloca (bsize + 1)
367         to make space for ignored quotient at the end.  (The quotient might
368         always be an extra limb.)
369
370 Tue Jan 14 21:28:48 1992  Torbjorn Granlund  (tege@sics.se)
371
372         * mpz_powm_ui: Fix comment.
373         * mpz_powm: Likewise.
374
375 Mon Jan 13 18:16:25 1992  Torbjorn Granlund  (tege@sics.se)
376
377         * tests/Makefile.in: Prepend $(TEST_PREFIX) to Makefile target.
378
379 Sun Jan 12 13:54:28 1992  Torbjorn Granlund  (tege@sics.se)
380
381         Fixes from Kazumaro Aoki:
382         * mpz_out_raw: Take abs of size to handle negative values.
383         * mpz_inp_raw: Reallocate before reading ptr from X.
384         * mpz_inp_raw: Store, don't read, size to x->size.
385
386 Tue Jan  7 17:50:25 1992  Torbjorn Granlund  (tege@sics.se)
387
388         * gmp.h, mp.h: Remove parameter names from prototypes.
389
390 Sun Dec 15 00:09:36 1991  Torbjorn Granlund  (tege@sics.se)
391
392         * tests/Makefile.in: Prepend "./" to file names when executing
393         tests.
394
395         * Makefile.in: Fix many problems.
396
397 Sat Dec 14 01:00:02 1991  Torbjorn Granlund  (tege@sics.se)
398
399         * mpn_sqrt.c: New file with _mpn_sqrt.
400         * mpz_sqrt, mpz_sqrtrem, mpz_perfect_square_p: Use _mpn_sqrt.
401         * msqrt.c: Delete.  Create from mpz_sqrtrem.c in Makefile.in.
402         * mpz_do_sqrt.c: Delete.
403         * Makefile.in: Update to reflect these changes.
404
405         * Makefile.in, configure, configure.subr: New files
406         (from bothner@cygnus.com).
407         * dist-Makefile: Delete.
408
409         * mpz_fac_ui: Fix comment.
410
411         * mpz_random2: Rewrite to make it possible for the most significant
412         limb to be == 1.
413
414         * mpz_pprime_p.c (mpz_probab_prime_p): Remove \t\n.
415
416 Fri Dec 13 23:10:02 1991  Torbjorn Granlund  (tege@sics.se)
417
418         * mpz_do_sqrt: Simplify special case for U == 0.
419         * m*sqrt*.c, mpz_perfsqr.c (mpz_perfect_square_p):
420           Rename _mpz_impl_sqrt to _mpz_do_sqrt.
421
422 Fri Dec 13 12:52:28 1991  Torbjorn Granlund  (tege@sics.se)
423
424         * gmp-impl.h (MPZ_TMP_INIT): Cast to the right type.
425
426 Thu Dec 12 22:17:29 1991  Torbjorn Granlund  (tege@sics.se)
427
428         * mpn_add, mpn_sub, mpn_mul, mpn_div: Change type of several
429         variables to mp_size.
430
431 Wed Dec 11 22:00:34 1991  Torbjorn Granlund  (tege@sics.se)
432
433         * mpn_rshift.c: Fix header comments.
434
435 Mon Dec  9 17:46:10 1991  Torbjorn Granlund  (tege@sics.se)
436
437         Released 1.2.
438
439         * gmp-impl.h (MPZ_TMP_INIT): Cast alloca return value.
440
441         * dist-Makefile: Add missing dependency for cre-mparam.
442
443         * mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c,
444           mpz_mmod_ui.c, mpz_mdm_ui.c: Remove obsolete comment.
445
446         * dist-Makefile (clean): clean in tests subdir too.
447         * tests/Makefile: Define default values for ROOT and SUB.
448
449         * longlong.h (__a29k__ udiv_qrnnd): Change "q" to "1" for operand
450         2 constraint.
451
452 Mon Nov 11 00:06:05 1991  Torbjorn Granlund  (tege@sics.se)
453
454         * mpz_sizeinb.c (mpz_sizeinbase): Special code for size == 0.
455
456 Sat Nov  9 23:47:38 1991  Torbjorn Granlund  (tege@sics.se)
457
458         Released 1.1.94.
459
460         * dist-Makefile, Makefile, tests/Makefile: Merge tests into
461         distribution.
462
463 Fri Nov  8 22:57:19 1991  Torbjorn Granlund  (tege@sics.se)
464
465         * gmp.h: Don't use keyword `signed' for non-ANSI compilers.
466
467 Thu Nov  7 22:06:46 1991  Torbjorn Granlund  (tege@sics.se)
468
469         * longlong.h: Cosmetic changes to keep it identical to gcc2 version
470         of longlong.h.
471         * longlong.h (__ibm032__): Fix operand order for add_ssaaaa and
472         sub_ddmmss.
473
474 Mon Nov  4 00:36:46 1991  Torbjorn Granlund  (tege@sics.se)
475
476         * mpn_mul: Fix indentation.
477
478         * mpz_do_sqrt: Don't assume 32 bit limbs (had constant
479         4294967296.0).
480         * mpz_do_sqrt: Handle overflow in conversion from double returned
481         by SQRT to mp_limb.
482
483         * gmp.h: Add missing function definitions.
484
485 Sun Nov  3 18:25:25 1991  Torbjorn Granlund  (tege@sics.se)
486
487         * mpz_pow_ui: Change type of `i' to int.
488
489         * ChangeLog: Add change log entry.
490         * ChangeLog: Add change log entry.
491         * ChangeLog: Add change log entry.
492         * ChangeLog: Add change log entry.
493         * ChangeLog: Add change log entry.
494         * ChangeLog: Add change log entry.
495         * ChangeLog: Add change log entry.
496         * ChangeLog: Add change log entry.
497 Stack overflow.
498
499         * mpz_pow_ui.c: Fix typo in comment.
500
501         * dist-Makefile: Create rpow.c from mpz_powm_ui.c.
502         * mpz_powm_ui.c: Add code for rpow.
503         * rpow.c: Delete this file.  The rpow function is now implemented
504         in mpz_powm_ui.c.
505
506         * mpz_fac_ui.c: New file.
507         * gmp.h, dist-Makefile: Add stuff for mpz_fac_ui.
508
509         Bug found by John Amanatides (amana@sasquatch.cs.yorku.ca):
510         * mpz_powm_ui, mpz_powm: Call _mpn_mul in the right way, with
511         the first argument not smaller than the second.
512
513 Tue Oct 29 13:56:55 1991  Torbjorn Granlund  (tege@sics.se)
514
515         * cre-conv-tab.c (main), cre-mparam.c (main): Fix typo in output
516         header text.
517
518 Mon Oct 28 00:35:29 1991  Torbjorn Granlund  (tege@sics.se)
519
520         * mpz_random2: Handle size == 0.
521
522         * gmp-impl.h (struct __mp_bases): Rename chars_per_limb_exactly to
523         chars_per_bit_exactly, and change its definition.
524         * cre-conv-tab.c (main): Output field according to its new
525         definition.
526         * mpz_out_str, _mpz_get_str, mpz_sizeinb, mout:
527         Use chars_per_bit_exactly.
528
529         * mpz_random2: Change the loop termination condition in order to
530         get a large most significant limb with higher probability.
531
532         * gmp.h: Add declaration of new mpz_random2 and mpz_get_si.
533         * mpz_get_si.c: New file.
534         * dist-Makefile: Add mpz_random2 and mpz_get_si.
535
536         * mpz_sizeinb.c (mpz_sizeinbase): Special code for base being a
537         power of 2, giving exact result.
538
539         * mpn_mul: Fix MPN_MUL_VERIFY in various ways.
540         * mpn_mul: New macro KARATSUBA_THRESHOLD.
541         * mpn_mul (karatsuba's algorithm): Don't write intermediate results
542         to prodp, use temporary pp instead.  (Intermediate results can be
543         larger than the final result, possibly writing into hyperspace.)
544         * mpn_mul: Make smarter choice between Karatsuba's algorithm and the
545         shortcut algorithm.
546         * mpn_mul: Fix typo, cy instead of xcy.  Unify carry handling code.
547
548 Sun Oct 27 19:57:32 1991  Torbjorn Granlund  (tege@sics.se)
549
550         * mpn_mul: In non-classical case, choose Karatsuba's algorithm only
551         when usize > 1.5 vsize.
552
553         * mpn_mul: Break between classical and Karatsuba's algorithm at
554         KARATSUBA_THRESHOLD, if defined.  Default to 8.
555
556         * mpn_div: Kludge to fix stray memory read.
557
558 Sat Oct 26 20:06:14 1991  Torbjorn Granlund  (tege@sics.se)
559
560         * mpz_gcdext: Handle a = b = 0.  Remove memory leakage by calling
561         mpz_clear for all temporary variables.
562
563         * mpz_gcd: Reduce w_bcnt in _mpn_lshift call to hold that
564         function's argument constraints.  Compute wsize correctly.
565
566         * mpz_gcd: Fix typo in comment.
567
568         * memory.c (_mp_default_allocate, _mp_default_reallocate): Call
569         abort if allocation fails, don't just exit.
570
571 Fri Oct 25 22:17:20 1991  Torbjorn Granlund  (tege@sics.se)
572
573         * mpz_random2.c: New file.
574
575 Thu Oct 17 18:06:42 1991  Torbjorn Granlund  (tege@sics.se)
576
577         Bugs found by Pierre-Joseph Gailly (pjg@sunbim.be):
578         * mpq_cmp: Take sign into account, don't just compare the
579         magnitudes.
580         * mpq_cmp: Call _mpn_mul in the right way, with the first argument
581         not smaller than the second.
582
583 Wed Oct 16 19:27:32 1991  Torbjorn Granlund  (tege@sics.se)
584
585         * mpz_random: Ensure the result is normalized.
586
587 Tue Oct 15 14:55:13 1991  Torbjorn Granlund  (tege@sics.se)
588
589         * mpz_clrbit: Support non-ANSI compilers.
590
591 Wed Oct  9 18:03:28 1991  Torbjorn Granlund  (tege@sics.se)
592
593         * longlong.h (68k add_ssaaaa, sub_ddmmss): Generalize constraints.
594
595 Tue Oct  8 17:42:59 1991  Torbjorn Granlund  (tege@sics.se)
596
597         * mpz_mdm_ui: Add comments.
598
599         * mpz_mdiv: Use MPZ_TMP_INIT instead of mpz_init.
600         * mpz_init_ui: Change spacing and header comment.
601
602 Thu Oct  3 18:36:13 1991  Torbjorn Granlund  (tege@sics.se)
603
604         * dist-Makefile: Prepend `./' before some filenames.
605
606 Sun Sep 29 14:02:11 1991  Torbjorn Granlund  (tege@sics.se)
607
608         Released 1.1 (public).
609
610         * mpz_com: New name of mpz_not.
611         * dist-Makefile: Change mpz_not to mpz_com.
612
613 Tue Sep 24 12:44:11 1991  Torbjorn Granlund  (tege@sics.se)
614
615         * longlong.h: Fix header comment.
616
617 Mon Sep  9 15:16:24 1991  Torbjorn Granlund  (tege@sics.se)
618
619         Released 1.0.92.
620
621         * mpn_mul.c (_mpn_mul): Handle leading zero limbs in non-Karatsuba
622         case.
623
624         * longlong.h (m68000 umul_ppmm): Clobber one register less by
625         slightly rearranging the code.
626
627 Sun Sep  1 18:53:25 1991  Torbjorn Granlund  (tege@sics.se)
628
629         * dist-Makefile (stamp-stddefh): Fix typo.
630
631 Sat Aug 31 20:41:31 1991  Torbjorn Granlund  (tege@sics.se)
632
633         Released 1.0.91.
634
635         * mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c,
636           mpz_mmod_ui.c, mpz_mdm_ui.c: New files and functions.
637         * gmp.h, gmp.texi: Define the new functions.
638
639 Fri Aug 30 08:32:56 1991  Torbjorn Granlund  (tege@sics.se)
640
641         * mpz_gcdext: Compute t argument from the other quantities at the
642           end, of the function, not in the loop.  New feature: Allow t to be
643           NULL.
644
645         * mpz_add.c, mpz_sub.c, mpz_mul.c, mpz_powm.c, mpz_gcd.c: Don't
646           include "mp.h".  Use type name `MP_INT' always.
647
648         * dist-Makefile, mpz_cmp.c: Merge mcmp.c from mpz_cmp.c.
649
650 Wed Aug 28 00:45:11 1991  Torbjorn Granlund  (tege@sics.se)
651
652         * dist-Makefile (documentation): Go via tmp.texi to avoid the
653           creation of gmp.dvi if any errors occur.  Make tex read input
654           from /dev/null.
655
656 Fri Aug 23 15:58:52 1991  Torbjorn Granlund  (tege@sics.se)
657
658         * longlong.h (68020, i386): Don't define machine-dependent
659           __umulsidi3 (so the default definition is used).
660         * longlong.h (all machines): Cast all operands, sources and
661           destinations, to `unsigned long int'.
662         * longlong.h: Add gmicro support.
663
664 Thu Aug 22 00:28:29 1991  Torbjorn Granlund  (tege@sics.se)
665
666         * longlong.h: Rename BITS_PER_LONG to LONG_TYPE_SIZE.
667         * longlong.h (__ibm032__): Define count_leading_zeros and umul_ppmm.
668         * longlong.h: Define UMUL_TIME and UDIV_TIME for some CPUs.
669         * _mpz_get_str.c: Add code to do division by big_base using only
670           umul_qrnnd, if that is faster.  Use UMUL_TIME and UDIV_TIME to
671           decide which variant to use.
672
673 Wed Aug 21 15:45:23 1991  Torbjorn Granlund  (tege@sics.se)
674
675         * longlong.h (__sparc__ umul_ppmm): Move two insn from end to the
676           nops.  (Saves two insn.)
677
678         * longlong.h (__sparc__ umul_ppmm): Rewrite in order to avoid
679           branch, and to permit input/output register overlap.
680
681         * longlong.h (__29k__): Remove duplicated udiv_qrnnd definition.
682         * longlong.h (__29k__ umul_ppmm): Split asm instructions into two
683           asm statements (gives better code if either the upper or lower
684           part of the product is unused.
685
686 Tue Aug 20 17:57:59 1991  Torbjorn Granlund  (tege@sics.se)
687
688         * _mpz_get_str.c (outside of functions): Remove
689           num_to_ascii_lower_case and num_to_ascii_upper_case.  Use string
690           constants in the function instead.
691
692 Mon Aug 19 00:37:42 1991  Torbjorn Granlund  (tege@sics.se)
693
694         * cre-conv-tab.c (main): Output table in hex.  Output 4 fields, not
695           3, for components 0 and 1.
696
697         * gmp.h: Add declaration of mpq_neg.
698
699         Released 1.0beta.13.
700
701         * _mpz_set_str.c (mpz_set_str): Cast EOF and SPC to char before
702           comparing to enum literals SPC and EOF.  This makes the code work
703           for compilers where `char' is unsigned.  (Bug found by Brian
704           Beuning).
705
706         Released 1.0beta.12.
707
708         * mpz_mod_ui: Remove references to quot.  Remove quot_ptr, quot_size
709           declarations and assignment code.
710
711 Sun Aug 18 14:44:26 1991  Torbjorn Granlund  (tege@sics.se)
712
713         * mpz_mod_ui: Handle dividend < 0.
714
715         Released 1.0beta.11.
716
717         * mpz_dm_ui, mpz_div_ui, mpz_mod_ui, sdiv: Make them share the same
718           general structure, variable names, etc.
719
720         * sdiv: Un-normalize the remainder in n1 before it is negated.
721
722         * longlong.h: Mention UDIV_NEEDS_NORMALIZATION in description of
723           udiv_qrnnd.
724
725         * mpz_dm_ui.c (mpz_divmod_ui), mpz_div_ui.c (mpz_div_ui): Increment
726           the quotient size if the dividend size is incremented.  (Bug found
727           by Brian Beuning.)
728
729         * mpz_mod_ui: Shift back the remainder, if UDIV_NEEDS_NORMALIZATION.
730           (Bug found by Brian Beuning.)
731
732         * mpz_mod_ui: Replace "digit" by "limb".
733
734         * mpz_perfsqr.c (mpz_perfect_square_p): Disable second test case
735           for non-32-bit machines (PP is hardwired for such machines).
736         * mpz_perfsqr.c (outside of functions): Define PP value with an L.
737
738         * mpn_mul.c (_mpn_mul): Add verification code that is activated if
739           DEBUG is defined.  Replace "digit" by "limb".
740         * mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 4.): Normalize temp
741           after the addition.
742         * mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 1.): Compare u0_size
743           and v0_size, and according to the result, swap arguments in
744           recursive call.  (Don't violate mpn_mul's own argument
745           constraints.)
746
747 Fri Aug 16 13:47:12 1991  Torbjorn Granlund  (tege@sics.se)
748
749         Released 1.0beta.10.
750
751         * longlong.h (IBMR2): Add udiv_qrnnd.
752
753         * mpz_perfsqr: Remove unused variables.
754
755         * mpz_and (case for different signs): Initialize loop variable i!
756
757         * dist-Makefile: Update automatically generated dependencies.
758         * dist-Makefile (madd.c, msub.c, pow.c, mult.c, gcd.c): Add mp.h,
759           etc to dependency file lists.
760
761         * longlong.h (add_ssaaaa, sub_ddmmss [C default versions]): Make __x
762           `unsigned long int'.
763         * longlong.h: Add `int' after `unsigned' and `long' everywhere.
764
765 Wed Aug 14 18:06:48 1991  Torbjorn Granlund  (tege@sics.se)
766
767         * longlong.h: Add ARM, i860 support.
768
769         * mpn_lshift, mpn_rshift, mpn_rshiftci: Rename *_word with *_limb.
770
771 Tue Aug 13 21:57:43 1991  Torbjorn Granlund  (tege@sics.se)
772
773         * _mpz_get_str.c, _mpz_set_str.c, mpz_sizeinb.c (mpz_sizeinbase),
774           mpz_out_str.c, mout.c: Remove declaration of __mp_bases.
775         * gmp-impl.h: Put it here, and make it `const'.
776         * cre-conv-tab.c (main): Make struct __mp_bases `const'.
777
778 Mon Aug 12 17:11:46 1991  Torbjorn Granlund  (tege@sics.se)
779
780         * cre-conv-tab.c (main): Use %lu in printf for long ints.
781
782         * dist-Makefile: Fix cre-* dependencies.
783
784         * cre-conv-tab.c (main): Output field big_base_inverted.
785
786         * gmp-impl.h (struct bases): New field big_base_inverted.
787         * gmp-impl.h (struct bases): Change type of chars_per_limb_exactly
788           to float (in order to keep the structure smaller).
789
790         * mp.h, gmp.h: Change names of macros for avoiding multiple
791           includes.
792
793 Fri Aug  9 18:01:36 1991  Torbjorn Granlund  (tege@sics.se)
794
795         * _mpz_get_str: Only shift limb array if normalization_steps != 0
796           (optimization).
797
798         * longlong.h (sparc umul_ppmm): Use __asm__, not asm.
799         * longlong.h (IBMR2 umul_ppmm): Refer to __m0 and __m1, not to m0
800           and m1 (overlap between output and input operands did not work).
801         * longlong.h: Add VAX, ROMP and HP-PA support.
802         * longlong.h: Sort the machine dependent code in alphabetical order
803           on the CPU name.
804         * longlong.h: Hack comments.
805
806 Thu Aug  8 14:13:36 1991  Torbjorn Granlund  (tege@sics.se)
807
808         Released 1.0beta.9.
809
810         * longlong.h: Define BITS_PER_LONG to 32 if it's not already
811           defined.
812         * Define __BITS4 to BITS_PER_LONG / 4.
813         * Don't assume 32 bit word size in "count_leading_zeros" C macro.
814           Use __BITS4 and BITS_PER_LONG instead.
815
816         * longlong.h: Don't #undef internal macros (reverse change of Aug 3).
817
818         * longlong.h (68k): Define add_ssaaaa sub_ddmmss, and umul_ppmm
819           even for plain mc68000.
820
821         * mpq_div: Flip the sign of the numerator *and* denominator of the
822           result if the intermediate denominator is negative.
823
824         * mpz_and.c, mpz_ior.c: Use MPN_COPY for all copying operations.
825
826         * mpz_and.c: Compute the result size more conservatively.
827         * mpz_ior.c: Likewise.
828
829         * mpz_realloc: Never allocate zero space even if NEW_SIZE == 0.
830
831         * dist-Makefile: Remove madd.c, msub.c, pow.c, mult.c, gcd.c from
832           BSDMP_SRCS.
833
834         * dist-Makefile: Create mult.c from mpz_mul.c.
835         * mult.c: Delete this file.
836
837         * _mpz_set_str: Normalize the result (for bases 2, 4, 8... it was
838           not done properly if the input string had many leading zeros).
839
840 Sun Aug  4 16:54:14 1991  Torbjorn Granlund  (tege@sics.se)
841
842         * dist-Makefile (gcd.c, pow.c, madd.c, msub.c): Make these targets
843           work with VPATH and GNU MP.
844
845         * mpz_gcd: Don't call mpz_set; inline its functionality.
846
847         * mpq_mul, mpq_div: Fix several serious typos.
848
849         * mpz_dmincl, mpz_div: Don't normalize the quotient if it's already
850           zero.
851
852         * mpq_neg.c: New file.
853
854         * dist-Makefile: Remove obsolete dependencies.
855
856         * mpz_sub: Fix typo.
857
858         Bugs found by Pierre-Joseph Gailly (pjg@sunbim.be):
859         * mpq_mul, mpq_div: Initialize tmp[12] variables even when the gcd
860           is just 1.
861         * mpz_gcd: Handle gcd(0,v) and gcd(u,0) in special cases.
862
863 Sat Aug  3 23:45:28 1991  Torbjorn Granlund  (tege@sics.se)
864
865         * longlong.h: Clean up comments.
866         * longlong.h: #undef internal macros.
867
868 Fri Aug  2 18:29:11 1991  Torbjorn Granlund  (tege@sics.se)
869
870         * mpq_set_si, mpq_set_ui: Canonicalize 0/x to 0/1.
871         * mpq_set_si, mpq_set_ui: Cosmetic formatting changes.
872
873         * mpz_dmincl.c: Normalize the remainder before shifting it back.
874
875         * mpz_dm_ui.c (mpz_divmod_ui): Handle rem == dividend.
876
877         * mpn_div.c: Fix comment.
878
879         * mpz_add.c, mpz_sub.c: Use __MP_INT (not MP_INT) for intermediate
880           type, in order to work for both GNU and Berkeley functions.
881
882         * dist-Makefile: Create gcd.c from mpz_gcd.c, pow.c from mpz_powm,
883           madd.c from mpz_add.c, msub.c from mpz_sub.c.
884           respectively.
885         * pow.c, gcd.c, mpz_powmincl.c, madd.c, msub.c: Remove these.
886         * mpz_powm.c, mpz_gcd.c, mpz_add.c, mpz_sub.c: #ifdef for GNU and
887           Berkeley function name variants.
888         * dist-Makefile: Add created files to "clean" target.
889
890 Tue Jul 16 15:19:46 1991  Torbjorn Granlund  (tege@sics.se)
891
892         * mpq_get_den: No need for absolute value of the size, the
893           denominator is always positive.
894
895         * mpz_get_ui: If the operand is zero, return zero.  Don't read the
896           limb array!
897
898         * mpz_dmincl.c: Don't ignore the return value from _mpn_rshift, it
899           is the size of the remainder.
900
901 Mon Jul 15 11:08:05 1991  Torbjorn Granlund  (tege@sics.se)
902
903         * Several files: Remove unused variables and functions.
904
905         * gmp-impl.h: Declare _mpz_impl_sqrt.
906
907         * mpz_dm_ui (mpz_divmod_ui), sdiv: Shift back the remainder if
908           UDIV_NEEDS_NORMALIZATION.  (Fix from Brian Beuning.)
909
910         * mpz_dm_ui.c, sdiv: Replace *digit with *limb.
911
912         * mpz_ior: Add missing else statement in -OP1 | -OP2 case.      
913         * mpz_ior: Add missing else statement in OP1 | -OP2 case.       
914         * mpz_ior: Swap also OP1 and OP2 pointers in -OP1 & OP2 case.
915         * mpz_ior: Duplicate _mpz_realloc code.
916
917         * mpz_and: Add missing else statement in -OP1 & -OP2 case.
918         * mpz_and: Rewrite OP1 & -OP2 case.
919         * mpz_and: Swap also OP1 and OP2 pointers in -OP1 & OP2 case.
920
921         * mpz_gcdext: Loop in d1.size (not b->size).  (Fix from Brian
922           Beuning.)
923
924         * mpz_perfsqr: Fix argument order in _mpz_impl_sqrt call.  (Fix from
925           Brian Beuning.)
926
927 Fri Jul 12 17:10:33 1991  Torbjorn Granlund  (tege@sics.se)
928
929         * mpq_set.c, mpq_set_ui.c, mpq_set_si.c, mpq_inv.c,
930           mpq_get_num.c, mpq_get_den.c, mpq_set_num.c, mpq_set_den.c:
931           New files.
932
933         * mpz_dmincl.c: Remove second re-allocation of rem->d.  It
934           was never executed.
935
936         * dist-Makefile: Use `-r' instead of `-x' for test for ranlib (as
937           some unixes' test doesn't have the -r option).
938
939         * *.*: Cast allocated pointers to the appropriate type (makes old C
940           compilers happier).
941
942         * cre-conv-tab.c (main): Divide max_uli by 2 and multiply again
943           after conversion to double.  (Kludge for broken C compilers.)
944
945         * dist-Makefile (stamp-stddefh): New target.  Test if "stddef.h"
946           exists in the system and creates a minimal one if it does not
947           exist.
948         * cre-stddefh.c: New file.
949         * dist-Makefile: Make libgmp.a and libmp.a depend on stamp-stddefh.
950         * dist-Makefile (clean): Add some more.
951         * gmp.h, mp.h: Unconditionally include "stddef.h".
952
953 Thu Jul 11 10:08:21 1991  Torbjorn Granlund  (tege@sics.se)
954
955         * min: Do ungetc of last read character.
956         * min.c: include stdio.h.
957
958         * dist-Makefile: Go via tmp- files for cre* redirection.
959         * dist-Makefile: Add tmp* to "clean" target.
960
961         * dist-Makefile: Use LOCAL_CC for cre*, to simplyfy cross
962           compilation.
963
964         * gmp.h, mp.h: Don't define NULL here.
965         * gmp-impl.h: Define it here.
966
967 Wed Jul 10 14:13:33 1991  Torbjorn Granlund  (tege@sics.se)
968
969         * mpz_mod_2exp: Don't copy too much, overwriting most significant
970           limb.
971
972         * mpz_and, mpz_ior: Don't read op[12]_ptr from op[12] when
973           reallocating res, if op[12]_ptr got their value from alloca.
974
975         * mpz_and, mpz_ior: Clear up comments.
976
977         * cre-mparam.c: Output parameters for `short int' and `int'.
978
979         * mpz_and, mpz_ior: Negate negative op[12]_size in several places.
980
981 Tue Jul  9 18:40:30 1991  Torbjorn Granlund  (tege@sics.se)
982
983         * gmp.h, mp.h: Test for _SIZE_T defined before typedef'ing size_t.
984           (Fix for Sun lossage.)
985
986         * gmp.h: Add declaration of mpq_clear.
987
988         * dist-Makefile: Chack if "ranlib" exists, before using it.
989         * dist-Makefile: Add mpz_sqrtrem.c and mpz_size.c.
990         * mpz_powm: Fix typo, "pow" instead of "mpz_powm".
991
992 Fri Jul  5 19:08:09 1991  Torbjorn Granlund  (tege@sics.se)
993
994         * move: Remove incorrect comment.
995
996         * mpz_free, mpq_free: Rename to *_clear.
997         * dist-Makefile: Likewise.
998         * mpq_add, mpq_sub, mpq_mul, mpq_div: Likewise.
999
1000         * mpz_dmincl.c: Don't call "move", inline its functionality.
1001
1002 Thu Jul  4 00:06:39 1991  Torbjorn Granlund  (tege@sics.se)
1003
1004         * Makefile: Include dist-Makefile.  Fix dist target to include
1005           dist-Makefile (with the name "Makefile" in the archive).
1006
1007         * dist-Makefile: New file made from Makefile.  Add new mpz_...
1008           functions.
1009
1010         * mpz_powincl.c New file for mpz_powm (Berkeley MP pow)
1011           functionality.  Avoids code duplication.
1012         * pow.c, mpz_powm.c: Include mpz_powincl.c
1013
1014         * mpz_dmincl.c: New file containing general division code.  Avoids
1015           code duplication.
1016         * mpz_dm.c (mpz_divmod), mpz_mod.c (mpz_mod), mdiv.c (mdiv): Include
1017           mpz_dmincl.c.
1018
1019         * _mpz_get_str: Don't call memmove, unless HAS_MEMMOVE is defined.
1020           Instead, write the overlapping memory copying inline.
1021
1022         * mpz_dm_ui.c: New name for mpz_divmod_ui.c (SysV file name limit).
1023
1024         * longlong.h: Don't use #elif.
1025         * mpz_do_sqrt.c: Likewise.
1026
1027         * longlong.h: Use __asm__ instead of asm.
1028         * longlong.h (sparc udiv_qrnnd): Make it to one string over several
1029           lines.
1030
1031         * longlong.h: Preend __ll_ to B, highpart, and lowpart.
1032
1033         * longlong.h: Move array t in count_leading_zeros to the new file
1034           mp_clz_tab.c.  Rename the array __clz_tab.
1035         * All files: #ifdef for traditional C compatibillity.
1036
1037 Wed Jul  3 11:42:14 1991  Torbjorn Granlund  (tege@sics.se)
1038
1039         * mpz_and: Initialize res_ptr always (used to be initialized only
1040           when reallocating).
1041
1042         * longlong.h (umul_ppmm [C variant]): Make __ul...__vh
1043           `unsigned int', and cast the multiplications.  This way
1044           compilers more easily can choose cheaper multiplication
1045           instructions.
1046
1047         * mpz_mod_2exp: Handle input argument < modulo argument.
1048         * mpz_many: Make sure mp_size is the type for sizes, not int.
1049
1050         * mpz_init, mpz_init_set*, mpq_init, mpq_add, mpq_sub, mpq_mul,
1051           mpq_div: Change mpz_init* interface.  Structure pointer as first
1052           arg to initialization function, no longer *return* struct.
1053
1054 Sun Jun 30 19:21:44 1991  Torbjorn Granlund  (tege@sics.se)
1055
1056         * Rename mpz_impl_sqrt.c to mpz_do_sqrt.c to satisfy SysV 14
1057           character file name length limit.
1058
1059         * Most files: Rename MINT to MP_INT.  Rename MRAT to MP_RAT.
1060         * mpz_sizeinb.c: New file with function mpz_sizeinbase.
1061         * mp_bases.c: New file, with array __mp_bases.
1062         * _mpz_get_str, _mpz_set_str: Remove struct bases, use extern
1063           __mp_bases instead.
1064         * mout, mpz_out_str: Use array __mp_bases instead of function
1065           _mpz_get_cvtlen.
1066         * mpz_get_cvtlen.c: Remove.
1067         * Makefile: Update.
1068
1069 Sat Jun 29 21:57:28 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1070
1071         * longlong.h (__sparc8__ umul_ppmm): Insert 3 nop:s for wr delay.
1072         * longlong.h (___IBMR2__): Define umul_ppmm, add_ssaaaa, sub_ddmmss.
1073         * longlong.h (__sparc__): Don't call .umul; expand asm instead.
1074           Don't define __umulsidi3 (i.e. use default definition).
1075
1076 Mon Jun 24 17:37:23 1991  Torbjorn Granlund  (tege@amon.sics.se)
1077
1078         * _mpz_get_str.c (num_to_ascii_lower_case, num_to_ascii_upper_case):
1079           Swap 't' and 's'.
1080
1081 Sat Jun 22 13:54:01 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1082
1083         * mpz_gcdext.c: New file.
1084
1085         * mpn_mul: Handle carry and unexpected operand sizes in last
1086           additions/subtractions.  (Bug trigged when v1_size == 1.)
1087
1088         * mp*_alloc*: Rename functions to mp*_init* (files to mp*_iset*.c).
1089         * mpq_*: Call mpz_init*.
1090
1091         * mpz_pow_ui, rpow: Use _mpn_mul instead of mult.  Restructure.
1092
1093 Wed May 29 20:32:33 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1094
1095         * mpz_get_cvtlen: multiply by size.
1096
1097 Sun May 26 15:01:15 1991  Torbjorn Granlund  (tege@bella.nada.kth.se)
1098
1099         Alpha-release 0.95.
1100
1101         Fixes from Doug Lea (dl@g.oswego.edu):
1102         * mpz_mul_ui: Loop to MULT_SIZE (not PROD_SIZE).  Adjust PROD_SIZE
1103           correctly.
1104         * mpz_div: Prepend _ to mpz_realloc.
1105         * mpz_set_xs, mpz_set_ds: Fix typos in function name.
1106
1107 Sat May 25 22:51:16 1991  Torbjorn Granlund  (tege@bella.nada.kth.se)
1108
1109         * mpz_divmod_ui: New function.
1110
1111         * sdiv: Make the sign of the remainder correct.
1112
1113 Thu May 23 15:28:24 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1114
1115         * Alpha-release 0.94.
1116
1117         * mpz_mul_ui: Include longlong.h.
1118
1119         * mpz_perfsqr.c (mpz_perfect_square_p): Call _mpz_impl_sqrt instead
1120           of msqrt.
1121
1122         * mpz_impl_sqrt: Don't call "move", inline its functionality.
1123
1124         * mdiv: Use MPN_COPY instead of memcpy.
1125         * rpow, mpz_mul, mpz_mod_2exp: Likewise.
1126         * pow.c: Likewise, and fix bug in the size arg.
1127
1128         * xtom: Don't use mpz_alloc, inline needed code instead.  Call
1129           _mpz_set_str instead of mpz_set_str.
1130
1131         * Makefile: Make two libraries, libmp.a and libgmp.a.
1132
1133 Thu May 22 20:25:29 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1134
1135         * Add manual to distribution.
1136         * Fold in many missing routines descibed in the manual.
1137         * Update Makefile.
1138
1139 Wed May 22 13:48:46 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1140
1141         * mpz_set_str: Make it handle 0x prefix OK.
1142
1143 Sat May 18 18:31:02 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1144
1145         * memory.c (_mp_default_reallocate): Swap OLD_SIZE and NEW_SIZE
1146           arguments.
1147         * mpz_realloc (_mpz_realloc): Swap in call to _mp_reallocate_func.
1148         * min: Likewise.
1149
1150 Thu May 16 20:43:05 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1151
1152         * memory.c: Make the default allocations functions global.
1153         * mp_set_fns (mp_set_memory_functions): Make a NULL pointer mean the
1154           default memory function.
1155
1156 Wed May  8 20:02:42 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1157
1158         * mpz_div: Handle DEN the same as QUOT correctly by copying DEN->D
1159           even if no normalization is needed.
1160         * mpz_div: Rework reallocation scheme, to avoid excess copying.
1161
1162         * mpz_sub_ui.c, mpz_add_ui.c: New files.
1163
1164         * mpz_cmp.c, mpz_cmp_ui.c: New files.
1165
1166         * mpz_mul_2exp: Handle zero input MINT correctly.
1167
1168         * mpn_rshiftci:  Don't handle shift counts > BITS_PER_MP_DIGIT.
1169
1170         * mpz_out_raw.c, mpz_inp_raw.c: New files for raw I/O.
1171
1172 Tue May  7 15:44:58 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1173
1174         * mpn_rshift: Don't handle shift counts > BITS_PER_MP_DIGIT.
1175         * mpz_div_2exp: Don't call _mpn_rshift with cnt > BITS_PER_MP_DIGIT.
1176         * gcd, mpz_gcd: Likewise.
1177
1178         * gcd, mpz_gcd: Handle common 2 factors correctly.
1179
1180 Mon May  6 20:22:59 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1181
1182         * gmp-impl.h (MPN_COPY): Inline a loop instead of calling memcpy.
1183
1184         * gmp-impl.h, mpz_get_str, rpow: Swap DST and SRC in TMPCOPY* macros.
1185
1186 Sun May  5 15:16:23 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1187
1188         * mpz_div: Remove test for QUOT == 0.
1189
1190 Sun Apr 28 20:21:04 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1191
1192         * pow: Don't make MOD normalization in place, as it's a bad idea to
1193           write on an input parameter.
1194         * pow: Reduce BASE if it's > MOD.
1195         * pow, mult, mpz_mul: Simplify realloc code.
1196
1197 Sat Apr 27 21:03:11 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1198
1199         * Install multplication using Karatsuba's algorithm as default.
1200
1201 Fri Apr 26 01:03:57 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1202
1203         * msqrt: Store in ROOT even for U==0, to make msqrt(0) defined.
1204
1205         * mpz_div_2exp.c, mpz_mul_2exp.c: New files for shifting right and
1206           left, respectively.
1207         * gmp.h: Add definitions for mpz_div_2exp and mpz_mul_2exp.
1208
1209         * mlshift.c, mrshift.c: Remove.
1210
1211 Wed Apr 24 21:39:22 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1212
1213         * mpn_mul: Check only for m2_size == 0 in function header.
1214
1215 Mon Apr 22 01:31:57 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1216
1217         * karatsuba.c: New file for Karatsuba's multplication algorithm.
1218
1219         * mpz_random, mpz_init, mpz_mod_2exp: New files and functions.
1220
1221         * mpn_cmp: Fix header comment.
1222
1223 Sun Apr 21 00:10:44 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1224
1225         * pow: Switch off initial base reduction.
1226
1227 Sat Apr 20 22:06:05 1991  Torbjorn Granlund  (tege@echnaton.sics.se)
1228
1229         * mpz_get_str: Don't generate initial zeros for initial word.
1230           Used to write outside of allocated storage.
1231
1232 Mon Apr 15 15:48:08 1991  Torbjorn Granlund  (tege@zevs.sics.se)
1233
1234         * _mpz_realloc: Make it accept size in number of mp_digits.
1235         * Most functions: Use new _mpz_realloc definition.
1236
1237         * mpz_set_str: Remove calls _mp_free_func.
1238
1239         * Most functions: Rename mpn_* to _mpn_*.  Rename mpz_realloc to
1240           _mpz_realloc.
1241         * mpn_lshift: Redefine _mpn_lshift to only handle small shifts.
1242         * mdiv, mpz_div, ...: Changes for new definition of _mpn_lshift.
1243         * msqrt, mp*_*shift*: Define cnt as unsigned (for speed).
1244
1245 Sat Apr  6 14:05:16 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
1246
1247         * mpn_mul: Multiply by the first digit in M2 in a special
1248           loop instead of zeroing the product area.
1249
1250         * mpz_abs.c: New file.
1251
1252         * sdiv: Implement as mpz_div_si for speed.
1253
1254         * mpn_add: Make it work for second source operand == 0.
1255
1256         * msub: Negate the correct operand, i.e. V before swapping, not
1257           the smaller of U and V!
1258         * madd, msub: Update abs_* when swapping operands, and not after
1259           (optimization).
1260
1261 Fri Apr  5 00:19:36 1991  Torbjorn Granlund  (tege@black.nada.kth.se)
1262
1263         * mpn_sub: Make it work for subtrahend == 0.
1264
1265         * madd, msub: Rewrite to minimize mpn_cmp calls.  Ensure
1266           mpn_cmp is called with positive sizes (used to be called
1267           incorrectly with negative sizes sometimes).
1268
1269         * msqrt: Make it divide by zero if fed with a negative number.
1270         * Remove if statement at end of precision calculation that was
1271           never true.
1272
1273         * itom, mp.h: The argument is of type short, not int.
1274
1275         * mpz_realloc, gmp.h: Make mpz_realloc return the new digit pointer.
1276
1277         * mpz_get_str.c, mpz_set_str.c, mpz_new_str.c: Don't include mp.h.
1278
1279         * Add COPYING to distribution.
1280
1281         * mpz_div_ui.c, mpz_div_si.c, mpz_new_ui.c, mpz_new_si.c: New files.
1282
1283 Fri Mar 15 00:26:29 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
1284
1285         * Add Copyleft headers to all files.
1286
1287         * mpn_mul.c, mpn_div.c: Add header comments.
1288         * mult.c, mdiv.c: Update header comments.
1289
1290         * mpq_add.c, mpq_sub.c, mpq_div.c, mpq_new.c, mpq_new_ui.c,
1291           mpq_free.c: New files for rational arithmetics.
1292
1293         * mpn_lshift.c: Avoid writing the most significant word if it is 0.
1294
1295         * mdiv.c: Call mpn_lshift for the normalization.
1296         * mdiv.c: Remove #ifdefs.
1297
1298         * Makefile: Add ChangeLog to DISTFILES.
1299
1300         * mpn_div.c: Make the add_back code work (by removing abort()).
1301         * mpn_div.c: Make it return if the quotient is size as compared
1302           with the difference NSIZE - DSIZE.  If the stored quotient is
1303           larger than that, return 1, otherwise 0.
1304         * gmp.h: Fix mpn_div declaration.
1305         * mdiv.c: Adopt call to mpn_div.
1306         * mpz_div.c: New file (developed from mdiv.c).
1307
1308         * README: Update routine names.
1309
1310 Thu Mar 14 18:45:28 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
1311
1312         * mpq_mul.c: New file for rational multplication.
1313
1314         * gmp.h: Add definitions for rational arithmetics.
1315
1316         * mpn_div: Kludge the case where the high numerator digit > the
1317           high denominator digit.  (This code is going to be optimized later.)
1318
1319         * New files: gmp.h for GNU specific functions, gmp-common.h for
1320           definitions common for mp.h and gmp.h.
1321
1322         * Ensure mp.h just defines what BSD mp.h defines.
1323
1324         * pow.c: Fix typo for bp allocation.
1325
1326         * Rename natural number functions to mpn_*, integer functions to
1327           mpz_*.
1328
1329 Tue Mar  5 18:47:04 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
1330
1331         * mdiv.c (_mp_divide, case 2): Change test for estimate of Q from
1332           "n0 >= r" to "n0 > r".
1333
1334         * msqrt: Tune the increasing precision scheme, to do fewer steps.
1335
1336 Tue Mar  3 18:50:10 1991  Torbjorn Granlund  (tege@musta.nada.kth.se)
1337
1338         * msqrt: Use the low level routines.  Use low precision in the
1339         beginning, and increase the precision as the result converges.
1340         (This optimization gave a 6-fold speedup.)
1341 \f
1342 Local Variables:
1343 mode: indented-text
1344 left-margin: 8
1345 fill-column: 75
1346 version-control: never
1347 End: