1348 lines
42 KiB
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Wed May 19 12:14:19 1993 Torbjorn Granlund (
* Many files: Call alloca(0) before function return.
* alloca.c: New file.
* Makefile (IMPL_SRCS): Add alloca.c.
(IMPL_OBJS): Add alloca.o.
Fri May 14 00:52:01 1993 Torbjorn Granlund (
* mpz_iset_str.c: Fix header comment.
* gmp.h: Don't test just FILE, tests some variants of _STDIO_H for
machines were FILE is a typedef.
Tue May 11 21:20:07 1993 Torbjorn Granlund (
* Makefile (realclean): Make it just be like clean.
(In particular, don't delete Makefile...)
Thu May 6 14:31:02 1993 Torbjorn Granlund (
* mpn_mul.c (vsize < KARATSUBA_THRESHOLD): Eliminate unused
variable `c'.
* longlong.h (#if mc88110): Use local union to avoid explicit mov
* longlong.h (All union defs): Prepend __ before tags to avoid
conflicts. Cleanup union definitions to look the same.
* mpz_inp_str.c: Pass BASE to char_ok_for_base.
Wed May 5 01:25:23 1993 Torbjorn Granlund (
* tests/tst-convert.c: Try base == 0.
* mpz_inp_str.c: Fix typo in assignment.
* longlong.h: Adjust UMUL_TIME and UDIV_TIME for several archs.
(#if hppa): Remove udiv_qrnnd.
(#if vax): Define sdiv_qrnnd. Use "g" constraint for umul_ppmm's
operand 0.
Tue May 4 17:11:55 1993 Torbjorn Granlund (
* longlong.h (#if ns32000): Fix typo, udiv_qrnnd was div_qrnnd.
Mon May 3 00:20:52 1993 Torbjorn Granlund (
* Makefile: Add rule for mp_bases.o.
* _mpz_set_str.c: Make inp_digit an mp_limb. Remove casts of
inp_digit to unsigned.
* mpn_dm_1.c: Use BITS_PER_MP_LIMB instead of 32.
* mpn_mod_1.c: Likewise.
* mpn_dm_1.c (udiv_qrnnd_preinv): Delete testing of overflow that
Peter Montgomery proved can't happen.
* tests/*.c: Include gmp-impl.h to make `inline' and `const' be
* Makefile: Update automatically generated dependencies.
* mpz_pow_ui: Don't include mp.h.
Use MP_INT instead of MINT even for rpow.
Sun May 2 16:35:53 1993 Torbjorn Granlund (
* tests/tst-convert.c, tests/tst-dm_ui.c, tests/tst-mdm.c,
tests/tst-mdm_ui.c: New files.
* tests/tst-dm.c: New name for tests/tst-divmod.c.
* tests/*.c: Include urandom.h. Use urandom(), never random().
Restructure test code to be more consistent, define and use
dump_abort(), only dump input operands, generate negative operands
when allowed by the tested function, etc.
* tests/urandom.h: New file.
* tests/Makefile: Add new tests. Update dependencies.
(CFLAGS): Pass `-I.'.
(tests) Don't print "The tests passed" since we don't correctly
detect failures.
* mpz_fac_ui: Fix some comments.
* mpz_random.c, mpz_random2.c: Declare random();
Define random to call mrand48 for __alpha__.
* All files: Use #ifdef instead if #if for testing __STDC__.
* longlong.h (#if sparc_v8): Define UMUL_TIME and UDIV_TIME.
* mpz_inp_str.c: If BASE is 0, try to determine the base from the
leading characters. Restructure code.
* mpz_pprime_p.c: Include gmp-impl.h.
Fri Apr 30 09:35:03 1993 Torbjorn Granlund (
* tests/Makefile: Set CC and OPT as in main Makefile.
Add copyright notice.
* gmp.h: Remove declaration of mpz_not.
Thu Apr 29 19:51:34 1993 Torbjorn Granlund (
* mpq_cmp.c: Fix header comment.
From Anders Thulin:
* mpz_inp_str.c: Get condition for char_ok_for_base right.
Tue Apr 27 12:30:48 1993 Torbjorn Granlund (
* Makefile (check): Pass OPT to recursive make.
* tests/Makefile (OPT): Set to default value.
(CFLAGS): Don't include -g.
(tst-mul): Pass $(CFLAGS) to $(CC).
(tst-divmod): Likewise.
(tst-gcd): Likewise.
(tst-sqrtrem): Likewise.
* mpz_gcd.c: Fix typo in comments.
* mpz_sqrtrem.c: Really divide by zero for negative operands.
* mpz_mul_ui.c: Fix header comment.
* mpz_get_si.c: Fix type typo in cast.
Sun Apr 25 18:40:26 1993 Torbjorn Granlund (
* memory.c: Use #if instead of #ifdef for __STDC__ for consistency.
* bsd/xtom.c: Likewise.
* cre-conv-tab.c: #include gmp.h and gmp-impl.h to get bit size
right for longlong.h.
* Makefile: Add new deps for `cre-conv-tab'.
* Makefile, tests/Makefile: Don't define or use srcdir.
* longlong.h (#if alpha): Define umul_ppmm.
(#if i960): Define umul_ppmm and __umulsidi3.
(#if hppa): Define count_leading_zeros.
(#if IBMR2): Remove umul_ppmm. Define smul_ppmm.
(#if 68020): Define smul_ppmm.
(#if mc88110): Define umul_ppmm and udiv_qrnnd.
(#if ns32000): Define umul_ppmm.
(#if pyr): Rewrite umul_ppmm.
* mpz_powm: `carry_digit' => `carry_limb'.
* sdiv.c: Clearify comment.
Sat Apr 24 16:23:33 1993 Torbjorn Granlund (
* tests: Update header comments. Make default sizes 8, use SIZE
symbol to allow user override. Increase default repetitions.
* longlong.h (__udiv_qrnnd_c): Define this always.
Make all variables `unsigned long int'.
(__LLDEBUG__): Remove this conditional.
* gmp-impl.h: #define ABS.
* (Many files): Use ABS instead of abs.
* _mpz_get_str, mpn_sqrt, mpz_clrbit, mpz_get_si, mpz_mod_2exp,
mpz_pow_ui, mpz_random2: Cast 1 to mp_limb before shifting.
* gmp.h: mpn_add returns mp_limb.
* mpz_perfsqr: Use #if, not plain if for exclusion of code for
non-32-bit machines.
Tue Apr 20 13:13:58 1993 Torbjorn Granlund (
* mpn_sqrt: Handle overflow for intermediate quotients by rounding
them down to fit.
* mpz_random2: Back to random(); rand() is so bad we get into cycles.
* mpz_perfsqr.c (PP): Define in hexadecimal to avoid GCC warnings.
* mpz_inp_str.c (char_ok_for_base): New function.
(mpz_inp_str): Use it.
* gmp.h: Add `const' to decl of mpz_probab_pripe_p.
* _mpz_set_str.c (char_type): Remove final `,'.
(ascii_to_num): Likewise.
Sun Mar 28 21:54:06 1993 Torbjorn Granlund (
* mpz_inp_raw: Allocate x_index, not xsize limbs.
Mon Mar 15 11:44:06 1993 Torbjorn Granlund (
* mpz_pprime_p.c: Declare param `const'.
* gmp.h: Add declarations for mpz_com.
Thu Feb 18 14:10:34 1993 Torbjorn Granlund (
* mpq_add, mpq_sub: Call mpz_clear for t.
Fri Feb 12 20:27:34 1993 Torbjorn Granlund (
* mpz_inp_str: Recog minus sign as first character.
Wed Feb 3 01:36:02 1993 Torbjorn Granlund (
* mpz_random.c (urandom): New conditionally defined local function.
Use it instead of random().
* mpz_random2: Use rand() instead of random() here, since we don't
care how many bits we get.
* mpz_iset: Handle 0 size.
Tue Feb 2 13:03:33 1993 Torbjorn Granlund (
* _mpz_get_str: Adjust for negative msize when returning str.
* mpz_mod_ui: Initialize dividend_size before it's used.
Mon Jan 4 09:11:15 1993 Torbjorn Granlund (
* itom: Declare param explicitly 'signed'.
* sdiv: Likewise.
* mpq_cmp: Remove unused variable tmp_size.
* mpz_powm_ui: Fix typo in esize==0 if stmt.
* mpz_powm: Likewise.
Sun Nov 29 01:16:11 1992 Torbjorn Granlund (
* mpn_dm_1.c (mpn_divmod_1): Handle
divisor_limb == 1 << (BITS_PER_MP_LIMB - 1)
Sat Nov 28 17:19:40 1992 Torbjorn Granlund (
* mpz_div: Remove free_me and free_me_size and their usage.
Wed Oct 28 17:40:04 1992 Torbjorn Granlund (
* longlong.h (__hppa umul_ppmm): Fix typos.
(__hppa sub_ddmmss): Swap input arguments.
* mpz_perfsqr.c (mpz_perfect_square_p): Avoid , before } in
Sun Oct 25 20:30:06 1992 Torbjorn Granlund (
* mpz_pprime_p.c (mpz_probab_prime_p): Handle numbers <= 3
specifically (used to consider all negative numbers prime).
* mpz_powm_ui: `carry_digit' => `carry_limb'.
* sdiv: Handle zero dividend specifically. Replace most code in
this function with a call to mpn_divmod_1.
* mpn_add: Return type is mp_limb.
* _mpz_get_str: Assign and use MSIZE smarter, to avoid using
* _mpz_get_str: Allocate extra STR space if (MSIZE < 0) for minus
* _mpz_get_str: Move string backwards smarter, avoid copying when
not needed.
* gmp.h (mpn_lshift, mpn_rshift, mpn_rshiftci): Remove `long' from
4:th arg.
* (MP_OBJS) : Include mpz_sizeinb.o.
Fri Sep 11 22:15:55 1992 Torbjorn Granlund (
* mpq_clear: Don't free the MP_RAT!
* mpn_lshift, mpn_rshift, mpn_rshiftci: Remove `long' from 4:th arg.
Thu Sep 3 01:47:07 1992 Torbjorn Granlund (
* mpn_mul: Rewrite code jumping between `carry case' and `noncarry
case' to avoid jumping. Special case for V_LIMB being 0 ot 1.
* All files: Remove leading _ from mpn function names.
Wed Sep 2 22:21:16 1992 Torbjorn Granlund (
Fix from Jan-Hein Buhrman:
* mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c: Make them work as documented.
* mpz_mmod.c, mpz_mdm.c: Move decl of TEMP_DIVISOR to reflect its
Sun Aug 30 18:37:15 1992 Torbjorn Granlund (
* _mpz_get_str: Use mpz_sizeinbase for computing out_len.
* _mpz_get_str: Don't remove leading zeros. Abort if there are some.
Tue Feb 18 14:38:39 1992 Torbjorn Granlund (
longlong.h (hppa umul_ppmm): Add missing semicolon. Declare type
of __w1 and __w0.
Fri Feb 14 21:33:21 1992 Torbjorn Granlund (
* longlong.h: Make default count_leading_zeros work for machines >
32 bits. Prepend `__' before local variables to avoid conflicts
with users' variables.
Thu Feb 6 15:10:42 1992 Torbjorn Granlund (
* mpn_dm_1.c (_mpn_divmod_1): Add code for avoiding division by
pre-inverting divisor.
Sun Feb 2 11:10:25 1992 Torbjorn Granlund (
* longlong.h: Make __LLDEBUG__ work differently.
(_IBMR2): Reinsert old code.
Sat Feb 1 16:43:00 1992 Torbjorn Granlund (
* longlong.h (#ifdef _IBMR2): Replace udiv_qrnnd with new code
using floating point operations. Don't define
Fri Jan 31 15:09:13 1992 Torbjorn Granlund (
* longlong.h: Define UMUL_TIME and UDIV_TIME for most machines.
* longlong.h (#ifdef __hppa): Define umul_ppmm.
Wed Jan 29 16:41:36 1992 Torbjorn Granlund (
* mpn_cmp: Only one length parameter, assume operand lengths are
the same. Don't require normalization.
* mpq_cmp, mpz_add, mpz_sub, mpz_gcd, mpn_mul, mpn_sqrt: Change for
new mpn_cmp definition.
Tue Jan 28 11:18:55 1992 Torbjorn Granlund (
* _mpz_get_str: Fix typo in comment.
Mon Jan 27 09:44:16 1992 Torbjorn Granlund (
* Add new files.
* mpn_dm_1.c: New file with function _mpn_divmod_1.
* mpz_dm_ui.c (mpz_divmod_ui): Use _mpn_divmod_1.
* mpz_div_ui: Likewise.
* mpn_mod_1.c: New file with function _mpn_mod_1.
* mpz_mod_ui: Use _mpn_mod_1.
Thu Jan 23 18:54:09 1992 Torbjorn Granlund (
Bug found by Paul Zimmermann (
* mpz_div_ui.c (mpz_div_ui), mpz_dm_ui.c (mpz_divmod_ui):
Handle dividend == 0.
Wed Jan 22 12:02:26 1992 Torbjorn Granlund (
* mpz_pprime_p.c: Use "" for #include.
Sun Jan 19 13:36:55 1992 Torbjorn Granlund (
* mpn_rshiftci.c (header): Correct comment.
Wed Jan 15 18:56:04 1992 Torbjorn Granlund (
* mpz_powm, mpz_powm_ui (if (bsize > msize)): Do alloca (bsize + 1)
to make space for ignored quotient at the end. (The quotient might
always be an extra limb.)
Tue Jan 14 21:28:48 1992 Torbjorn Granlund (
* mpz_powm_ui: Fix comment.
* mpz_powm: Likewise.
Mon Jan 13 18:16:25 1992 Torbjorn Granlund (
* tests/ Prepend $(TEST_PREFIX) to Makefile target.
Sun Jan 12 13:54:28 1992 Torbjorn Granlund (
Fixes from Kazumaro Aoki:
* mpz_out_raw: Take abs of size to handle negative values.
* mpz_inp_raw: Reallocate before reading ptr from X.
* mpz_inp_raw: Store, don't read, size to x->size.
Tue Jan 7 17:50:25 1992 Torbjorn Granlund (
* gmp.h, mp.h: Remove parameter names from prototypes.
Sun Dec 15 00:09:36 1991 Torbjorn Granlund (
* tests/ Prepend "./" to file names when executing
* Fix many problems.
Sat Dec 14 01:00:02 1991 Torbjorn Granlund (
* mpn_sqrt.c: New file with _mpn_sqrt.
* mpz_sqrt, mpz_sqrtrem, mpz_perfect_square_p: Use _mpn_sqrt.
* msqrt.c: Delete. Create from mpz_sqrtrem.c in
* mpz_do_sqrt.c: Delete.
* Update to reflect these changes.
*, configure, configure.subr: New files
* dist-Makefile: Delete.
* mpz_fac_ui: Fix comment.
* mpz_random2: Rewrite to make it possible for the most significant
limb to be == 1.
* mpz_pprime_p.c (mpz_probab_prime_p): Remove \t\n.
Fri Dec 13 23:10:02 1991 Torbjorn Granlund (
* mpz_do_sqrt: Simplify special case for U == 0.
* m*sqrt*.c, mpz_perfsqr.c (mpz_perfect_square_p):
Rename _mpz_impl_sqrt to _mpz_do_sqrt.
Fri Dec 13 12:52:28 1991 Torbjorn Granlund (
* gmp-impl.h (MPZ_TMP_INIT): Cast to the right type.
Thu Dec 12 22:17:29 1991 Torbjorn Granlund (
* mpn_add, mpn_sub, mpn_mul, mpn_div: Change type of several
variables to mp_size.
Wed Dec 11 22:00:34 1991 Torbjorn Granlund (
* mpn_rshift.c: Fix header comments.
Mon Dec 9 17:46:10 1991 Torbjorn Granlund (
Released 1.2.
* gmp-impl.h (MPZ_TMP_INIT): Cast alloca return value.
* dist-Makefile: Add missing dependency for cre-mparam.
* mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c,
mpz_mmod_ui.c, mpz_mdm_ui.c: Remove obsolete comment.
* dist-Makefile (clean): clean in tests subdir too.
* tests/Makefile: Define default values for ROOT and SUB.
* longlong.h (__a29k__ udiv_qrnnd): Change "q" to "1" for operand
2 constraint.
Mon Nov 11 00:06:05 1991 Torbjorn Granlund (
* mpz_sizeinb.c (mpz_sizeinbase): Special code for size == 0.
Sat Nov 9 23:47:38 1991 Torbjorn Granlund (
Released 1.1.94.
* dist-Makefile, Makefile, tests/Makefile: Merge tests into
Fri Nov 8 22:57:19 1991 Torbjorn Granlund (
* gmp.h: Don't use keyword `signed' for non-ANSI compilers.
Thu Nov 7 22:06:46 1991 Torbjorn Granlund (
* longlong.h: Cosmetic changes to keep it identical to gcc2 version
of longlong.h.
* longlong.h (__ibm032__): Fix operand order for add_ssaaaa and
Mon Nov 4 00:36:46 1991 Torbjorn Granlund (
* mpn_mul: Fix indentation.
* mpz_do_sqrt: Don't assume 32 bit limbs (had constant
* mpz_do_sqrt: Handle overflow in conversion from double returned
by SQRT to mp_limb.
* gmp.h: Add missing function definitions.
Sun Nov 3 18:25:25 1991 Torbjorn Granlund (
* mpz_pow_ui: Change type of `i' to int.
* ChangeLog: Add change log entry.
* ChangeLog: Add change log entry.
* ChangeLog: Add change log entry.
* ChangeLog: Add change log entry.
* ChangeLog: Add change log entry.
* ChangeLog: Add change log entry.
* ChangeLog: Add change log entry.
* ChangeLog: Add change log entry.
Stack overflow.
* mpz_pow_ui.c: Fix typo in comment.
* dist-Makefile: Create rpow.c from mpz_powm_ui.c.
* mpz_powm_ui.c: Add code for rpow.
* rpow.c: Delete this file. The rpow function is now implemented
in mpz_powm_ui.c.
* mpz_fac_ui.c: New file.
* gmp.h, dist-Makefile: Add stuff for mpz_fac_ui.
Bug found by John Amanatides (
* mpz_powm_ui, mpz_powm: Call _mpn_mul in the right way, with
the first argument not smaller than the second.
Tue Oct 29 13:56:55 1991 Torbjorn Granlund (
* cre-conv-tab.c (main), cre-mparam.c (main): Fix typo in output
header text.
Mon Oct 28 00:35:29 1991 Torbjorn Granlund (
* mpz_random2: Handle size == 0.
* gmp-impl.h (struct __mp_bases): Rename chars_per_limb_exactly to
chars_per_bit_exactly, and change its definition.
* cre-conv-tab.c (main): Output field according to its new
* mpz_out_str, _mpz_get_str, mpz_sizeinb, mout:
Use chars_per_bit_exactly.
* mpz_random2: Change the loop termination condition in order to
get a large most significant limb with higher probability.
* gmp.h: Add declaration of new mpz_random2 and mpz_get_si.
* mpz_get_si.c: New file.
* dist-Makefile: Add mpz_random2 and mpz_get_si.
* mpz_sizeinb.c (mpz_sizeinbase): Special code for base being a
power of 2, giving exact result.
* mpn_mul: Fix MPN_MUL_VERIFY in various ways.
* mpn_mul: New macro KARATSUBA_THRESHOLD.
* mpn_mul (karatsuba's algorithm): Don't write intermediate results
to prodp, use temporary pp instead. (Intermediate results can be
larger than the final result, possibly writing into hyperspace.)
* mpn_mul: Make smarter choice between Karatsuba's algorithm and the
shortcut algorithm.
* mpn_mul: Fix typo, cy instead of xcy. Unify carry handling code.
Sun Oct 27 19:57:32 1991 Torbjorn Granlund (
* mpn_mul: In non-classical case, choose Karatsuba's algorithm only
when usize > 1.5 vsize.
* mpn_mul: Break between classical and Karatsuba's algorithm at
KARATSUBA_THRESHOLD, if defined. Default to 8.
* mpn_div: Kludge to fix stray memory read.
Sat Oct 26 20:06:14 1991 Torbjorn Granlund (
* mpz_gcdext: Handle a = b = 0. Remove memory leakage by calling
mpz_clear for all temporary variables.
* mpz_gcd: Reduce w_bcnt in _mpn_lshift call to hold that
function's argument constraints. Compute wsize correctly.
* mpz_gcd: Fix typo in comment.
* memory.c (_mp_default_allocate, _mp_default_reallocate): Call
abort if allocation fails, don't just exit.
Fri Oct 25 22:17:20 1991 Torbjorn Granlund (
* mpz_random2.c: New file.
Thu Oct 17 18:06:42 1991 Torbjorn Granlund (
Bugs found by Pierre-Joseph Gailly (
* mpq_cmp: Take sign into account, don't just compare the
* mpq_cmp: Call _mpn_mul in the right way, with the first argument
not smaller than the second.
Wed Oct 16 19:27:32 1991 Torbjorn Granlund (
* mpz_random: Ensure the result is normalized.
Tue Oct 15 14:55:13 1991 Torbjorn Granlund (
* mpz_clrbit: Support non-ANSI compilers.
Wed Oct 9 18:03:28 1991 Torbjorn Granlund (
* longlong.h (68k add_ssaaaa, sub_ddmmss): Generalize constraints.
Tue Oct 8 17:42:59 1991 Torbjorn Granlund (
* mpz_mdm_ui: Add comments.
* mpz_mdiv: Use MPZ_TMP_INIT instead of mpz_init.
* mpz_init_ui: Change spacing and header comment.
Thu Oct 3 18:36:13 1991 Torbjorn Granlund (
* dist-Makefile: Prepend `./' before some filenames.
Sun Sep 29 14:02:11 1991 Torbjorn Granlund (
Released 1.1 (public).
* mpz_com: New name of mpz_not.
* dist-Makefile: Change mpz_not to mpz_com.
Tue Sep 24 12:44:11 1991 Torbjorn Granlund (
* longlong.h: Fix header comment.
Mon Sep 9 15:16:24 1991 Torbjorn Granlund (
Released 1.0.92.
* mpn_mul.c (_mpn_mul): Handle leading zero limbs in non-Karatsuba
* longlong.h (m68000 umul_ppmm): Clobber one register less by
slightly rearranging the code.
Sun Sep 1 18:53:25 1991 Torbjorn Granlund (
* dist-Makefile (stamp-stddefh): Fix typo.
Sat Aug 31 20:41:31 1991 Torbjorn Granlund (
Released 1.0.91.
* mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c,
mpz_mmod_ui.c, mpz_mdm_ui.c: New files and functions.
* gmp.h, gmp.texi: Define the new functions.
Fri Aug 30 08:32:56 1991 Torbjorn Granlund (
* mpz_gcdext: Compute t argument from the other quantities at the
end, of the function, not in the loop. New feature: Allow t to be
* mpz_add.c, mpz_sub.c, mpz_mul.c, mpz_powm.c, mpz_gcd.c: Don't
include "mp.h". Use type name `MP_INT' always.
* dist-Makefile, mpz_cmp.c: Merge mcmp.c from mpz_cmp.c.
Wed Aug 28 00:45:11 1991 Torbjorn Granlund (
* dist-Makefile (documentation): Go via tmp.texi to avoid the
creation of gmp.dvi if any errors occur. Make tex read input
from /dev/null.
Fri Aug 23 15:58:52 1991 Torbjorn Granlund (
* longlong.h (68020, i386): Don't define machine-dependent
__umulsidi3 (so the default definition is used).
* longlong.h (all machines): Cast all operands, sources and
destinations, to `unsigned long int'.
* longlong.h: Add gmicro support.
Thu Aug 22 00:28:29 1991 Torbjorn Granlund (
* longlong.h: Rename BITS_PER_LONG to LONG_TYPE_SIZE.
* longlong.h (__ibm032__): Define count_leading_zeros and umul_ppmm.
* longlong.h: Define UMUL_TIME and UDIV_TIME for some CPUs.
* _mpz_get_str.c: Add code to do division by big_base using only
umul_qrnnd, if that is faster. Use UMUL_TIME and UDIV_TIME to
decide which variant to use.
Wed Aug 21 15:45:23 1991 Torbjorn Granlund (
* longlong.h (__sparc__ umul_ppmm): Move two insn from end to the
nops. (Saves two insn.)
* longlong.h (__sparc__ umul_ppmm): Rewrite in order to avoid
branch, and to permit input/output register overlap.
* longlong.h (__29k__): Remove duplicated udiv_qrnnd definition.
* longlong.h (__29k__ umul_ppmm): Split asm instructions into two
asm statements (gives better code if either the upper or lower
part of the product is unused.
Tue Aug 20 17:57:59 1991 Torbjorn Granlund (
* _mpz_get_str.c (outside of functions): Remove
num_to_ascii_lower_case and num_to_ascii_upper_case. Use string
constants in the function instead.
Mon Aug 19 00:37:42 1991 Torbjorn Granlund (
* cre-conv-tab.c (main): Output table in hex. Output 4 fields, not
3, for components 0 and 1.
* gmp.h: Add declaration of mpq_neg.
Released 1.0beta.13.
* _mpz_set_str.c (mpz_set_str): Cast EOF and SPC to char before
comparing to enum literals SPC and EOF. This makes the code work
for compilers where `char' is unsigned. (Bug found by Brian
Released 1.0beta.12.
* mpz_mod_ui: Remove references to quot. Remove quot_ptr, quot_size
declarations and assignment code.
Sun Aug 18 14:44:26 1991 Torbjorn Granlund (
* mpz_mod_ui: Handle dividend < 0.
Released 1.0beta.11.
* mpz_dm_ui, mpz_div_ui, mpz_mod_ui, sdiv: Make them share the same
general structure, variable names, etc.
* sdiv: Un-normalize the remainder in n1 before it is negated.
* longlong.h: Mention UDIV_NEEDS_NORMALIZATION in description of
* mpz_dm_ui.c (mpz_divmod_ui), mpz_div_ui.c (mpz_div_ui): Increment
the quotient size if the dividend size is incremented. (Bug found
by Brian Beuning.)
* mpz_mod_ui: Shift back the remainder, if UDIV_NEEDS_NORMALIZATION.
(Bug found by Brian Beuning.)
* mpz_mod_ui: Replace "digit" by "limb".
* mpz_perfsqr.c (mpz_perfect_square_p): Disable second test case
for non-32-bit machines (PP is hardwired for such machines).
* mpz_perfsqr.c (outside of functions): Define PP value with an L.
* mpn_mul.c (_mpn_mul): Add verification code that is activated if
DEBUG is defined. Replace "digit" by "limb".
* mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 4.): Normalize temp
after the addition.
* mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 1.): Compare u0_size
and v0_size, and according to the result, swap arguments in
recursive call. (Don't violate mpn_mul's own argument
Fri Aug 16 13:47:12 1991 Torbjorn Granlund (
Released 1.0beta.10.
* longlong.h (IBMR2): Add udiv_qrnnd.
* mpz_perfsqr: Remove unused variables.
* mpz_and (case for different signs): Initialize loop variable i!
* dist-Makefile: Update automatically generated dependencies.
* dist-Makefile (madd.c, msub.c, pow.c, mult.c, gcd.c): Add mp.h,
etc to dependency file lists.
* longlong.h (add_ssaaaa, sub_ddmmss [C default versions]): Make __x
`unsigned long int'.
* longlong.h: Add `int' after `unsigned' and `long' everywhere.
Wed Aug 14 18:06:48 1991 Torbjorn Granlund (
* longlong.h: Add ARM, i860 support.
* mpn_lshift, mpn_rshift, mpn_rshiftci: Rename *_word with *_limb.
Tue Aug 13 21:57:43 1991 Torbjorn Granlund (
* _mpz_get_str.c, _mpz_set_str.c, mpz_sizeinb.c (mpz_sizeinbase),
mpz_out_str.c, mout.c: Remove declaration of __mp_bases.
* gmp-impl.h: Put it here, and make it `const'.
* cre-conv-tab.c (main): Make struct __mp_bases `const'.
Mon Aug 12 17:11:46 1991 Torbjorn Granlund (
* cre-conv-tab.c (main): Use %lu in printf for long ints.
* dist-Makefile: Fix cre-* dependencies.
* cre-conv-tab.c (main): Output field big_base_inverted.
* gmp-impl.h (struct bases): New field big_base_inverted.
* gmp-impl.h (struct bases): Change type of chars_per_limb_exactly
to float (in order to keep the structure smaller).
* mp.h, gmp.h: Change names of macros for avoiding multiple
Fri Aug 9 18:01:36 1991 Torbjorn Granlund (
* _mpz_get_str: Only shift limb array if normalization_steps != 0
* longlong.h (sparc umul_ppmm): Use __asm__, not asm.
* longlong.h (IBMR2 umul_ppmm): Refer to __m0 and __m1, not to m0
and m1 (overlap between output and input operands did not work).
* longlong.h: Add VAX, ROMP and HP-PA support.
* longlong.h: Sort the machine dependent code in alphabetical order
on the CPU name.
* longlong.h: Hack comments.
Thu Aug 8 14:13:36 1991 Torbjorn Granlund (
Released 1.0beta.9.
* longlong.h: Define BITS_PER_LONG to 32 if it's not already
* Define __BITS4 to BITS_PER_LONG / 4.
* Don't assume 32 bit word size in "count_leading_zeros" C macro.
Use __BITS4 and BITS_PER_LONG instead.
* longlong.h: Don't #undef internal macros (reverse change of Aug 3).
* longlong.h (68k): Define add_ssaaaa sub_ddmmss, and umul_ppmm
even for plain mc68000.
* mpq_div: Flip the sign of the numerator *and* denominator of the
result if the intermediate denominator is negative.
* mpz_and.c, mpz_ior.c: Use MPN_COPY for all copying operations.
* mpz_and.c: Compute the result size more conservatively.
* mpz_ior.c: Likewise.
* mpz_realloc: Never allocate zero space even if NEW_SIZE == 0.
* dist-Makefile: Remove madd.c, msub.c, pow.c, mult.c, gcd.c from
* dist-Makefile: Create mult.c from mpz_mul.c.
* mult.c: Delete this file.
* _mpz_set_str: Normalize the result (for bases 2, 4, 8... it was
not done properly if the input string had many leading zeros).
Sun Aug 4 16:54:14 1991 Torbjorn Granlund (
* dist-Makefile (gcd.c, pow.c, madd.c, msub.c): Make these targets
work with VPATH and GNU MP.
* mpz_gcd: Don't call mpz_set; inline its functionality.
* mpq_mul, mpq_div: Fix several serious typos.
* mpz_dmincl, mpz_div: Don't normalize the quotient if it's already
* mpq_neg.c: New file.
* dist-Makefile: Remove obsolete dependencies.
* mpz_sub: Fix typo.
Bugs found by Pierre-Joseph Gailly (
* mpq_mul, mpq_div: Initialize tmp[12] variables even when the gcd
is just 1.
* mpz_gcd: Handle gcd(0,v) and gcd(u,0) in special cases.
Sat Aug 3 23:45:28 1991 Torbjorn Granlund (
* longlong.h: Clean up comments.
* longlong.h: #undef internal macros.
Fri Aug 2 18:29:11 1991 Torbjorn Granlund (
* mpq_set_si, mpq_set_ui: Canonicalize 0/x to 0/1.
* mpq_set_si, mpq_set_ui: Cosmetic formatting changes.
* mpz_dmincl.c: Normalize the remainder before shifting it back.
* mpz_dm_ui.c (mpz_divmod_ui): Handle rem == dividend.
* mpn_div.c: Fix comment.
* mpz_add.c, mpz_sub.c: Use __MP_INT (not MP_INT) for intermediate
type, in order to work for both GNU and Berkeley functions.
* dist-Makefile: Create gcd.c from mpz_gcd.c, pow.c from mpz_powm,
madd.c from mpz_add.c, msub.c from mpz_sub.c.
* pow.c, gcd.c, mpz_powmincl.c, madd.c, msub.c: Remove these.
* mpz_powm.c, mpz_gcd.c, mpz_add.c, mpz_sub.c: #ifdef for GNU and
Berkeley function name variants.
* dist-Makefile: Add created files to "clean" target.
Tue Jul 16 15:19:46 1991 Torbjorn Granlund (
* mpq_get_den: No need for absolute value of the size, the
denominator is always positive.
* mpz_get_ui: If the operand is zero, return zero. Don't read the
limb array!
* mpz_dmincl.c: Don't ignore the return value from _mpn_rshift, it
is the size of the remainder.
Mon Jul 15 11:08:05 1991 Torbjorn Granlund (
* Several files: Remove unused variables and functions.
* gmp-impl.h: Declare _mpz_impl_sqrt.
* mpz_dm_ui (mpz_divmod_ui), sdiv: Shift back the remainder if
UDIV_NEEDS_NORMALIZATION. (Fix from Brian Beuning.)
* mpz_dm_ui.c, sdiv: Replace *digit with *limb.
* mpz_ior: Add missing else statement in -OP1 | -OP2 case.
* mpz_ior: Add missing else statement in OP1 | -OP2 case.
* mpz_ior: Swap also OP1 and OP2 pointers in -OP1 & OP2 case.
* mpz_ior: Duplicate _mpz_realloc code.
* mpz_and: Add missing else statement in -OP1 & -OP2 case.
* mpz_and: Rewrite OP1 & -OP2 case.
* mpz_and: Swap also OP1 and OP2 pointers in -OP1 & OP2 case.
* mpz_gcdext: Loop in d1.size (not b->size). (Fix from Brian
* mpz_perfsqr: Fix argument order in _mpz_impl_sqrt call. (Fix from
Brian Beuning.)
Fri Jul 12 17:10:33 1991 Torbjorn Granlund (
* mpq_set.c, mpq_set_ui.c, mpq_set_si.c, mpq_inv.c,
mpq_get_num.c, mpq_get_den.c, mpq_set_num.c, mpq_set_den.c:
New files.
* mpz_dmincl.c: Remove second re-allocation of rem->d. It
was never executed.
* dist-Makefile: Use `-r' instead of `-x' for test for ranlib (as
some unixes' test doesn't have the -r option).
* *.*: Cast allocated pointers to the appropriate type (makes old C
compilers happier).
* cre-conv-tab.c (main): Divide max_uli by 2 and multiply again
after conversion to double. (Kludge for broken C compilers.)
* dist-Makefile (stamp-stddefh): New target. Test if "stddef.h"
exists in the system and creates a minimal one if it does not
* cre-stddefh.c: New file.
* dist-Makefile: Make libgmp.a and libmp.a depend on stamp-stddefh.
* dist-Makefile (clean): Add some more.
* gmp.h, mp.h: Unconditionally include "stddef.h".
Thu Jul 11 10:08:21 1991 Torbjorn Granlund (
* min: Do ungetc of last read character.
* min.c: include stdio.h.
* dist-Makefile: Go via tmp- files for cre* redirection.
* dist-Makefile: Add tmp* to "clean" target.
* dist-Makefile: Use LOCAL_CC for cre*, to simplyfy cross
* gmp.h, mp.h: Don't define NULL here.
* gmp-impl.h: Define it here.
Wed Jul 10 14:13:33 1991 Torbjorn Granlund (
* mpz_mod_2exp: Don't copy too much, overwriting most significant
* mpz_and, mpz_ior: Don't read op[12]_ptr from op[12] when
reallocating res, if op[12]_ptr got their value from alloca.
* mpz_and, mpz_ior: Clear up comments.
* cre-mparam.c: Output parameters for `short int' and `int'.
* mpz_and, mpz_ior: Negate negative op[12]_size in several places.
Tue Jul 9 18:40:30 1991 Torbjorn Granlund (
* gmp.h, mp.h: Test for _SIZE_T defined before typedef'ing size_t.
(Fix for Sun lossage.)
* gmp.h: Add declaration of mpq_clear.
* dist-Makefile: Chack if "ranlib" exists, before using it.
* dist-Makefile: Add mpz_sqrtrem.c and mpz_size.c.
* mpz_powm: Fix typo, "pow" instead of "mpz_powm".
Fri Jul 5 19:08:09 1991 Torbjorn Granlund (
* move: Remove incorrect comment.
* mpz_free, mpq_free: Rename to *_clear.
* dist-Makefile: Likewise.
* mpq_add, mpq_sub, mpq_mul, mpq_div: Likewise.
* mpz_dmincl.c: Don't call "move", inline its functionality.
Thu Jul 4 00:06:39 1991 Torbjorn Granlund (
* Makefile: Include dist-Makefile. Fix dist target to include
dist-Makefile (with the name "Makefile" in the archive).
* dist-Makefile: New file made from Makefile. Add new mpz_...
* mpz_powincl.c New file for mpz_powm (Berkeley MP pow)
functionality. Avoids code duplication.
* pow.c, mpz_powm.c: Include mpz_powincl.c
* mpz_dmincl.c: New file containing general division code. Avoids
code duplication.
* mpz_dm.c (mpz_divmod), mpz_mod.c (mpz_mod), mdiv.c (mdiv): Include
* _mpz_get_str: Don't call memmove, unless HAS_MEMMOVE is defined.
Instead, write the overlapping memory copying inline.
* mpz_dm_ui.c: New name for mpz_divmod_ui.c (SysV file name limit).
* longlong.h: Don't use #elif.
* mpz_do_sqrt.c: Likewise.
* longlong.h: Use __asm__ instead of asm.
* longlong.h (sparc udiv_qrnnd): Make it to one string over several
* longlong.h: Preend __ll_ to B, highpart, and lowpart.
* longlong.h: Move array t in count_leading_zeros to the new file
mp_clz_tab.c. Rename the array __clz_tab.
* All files: #ifdef for traditional C compatibillity.
Wed Jul 3 11:42:14 1991 Torbjorn Granlund (
* mpz_and: Initialize res_ptr always (used to be initialized only
when reallocating).
* longlong.h (umul_ppmm [C variant]): Make __ul...__vh
`unsigned int', and cast the multiplications. This way
compilers more easily can choose cheaper multiplication
* mpz_mod_2exp: Handle input argument < modulo argument.
* mpz_many: Make sure mp_size is the type for sizes, not int.
* mpz_init, mpz_init_set*, mpq_init, mpq_add, mpq_sub, mpq_mul,
mpq_div: Change mpz_init* interface. Structure pointer as first
arg to initialization function, no longer *return* struct.
Sun Jun 30 19:21:44 1991 Torbjorn Granlund (
* Rename mpz_impl_sqrt.c to mpz_do_sqrt.c to satisfy SysV 14
character file name length limit.
* Most files: Rename MINT to MP_INT. Rename MRAT to MP_RAT.
* mpz_sizeinb.c: New file with function mpz_sizeinbase.
* mp_bases.c: New file, with array __mp_bases.
* _mpz_get_str, _mpz_set_str: Remove struct bases, use extern
__mp_bases instead.
* mout, mpz_out_str: Use array __mp_bases instead of function
* mpz_get_cvtlen.c: Remove.
* Makefile: Update.
Sat Jun 29 21:57:28 1991 Torbjorn Granlund (
* longlong.h (__sparc8__ umul_ppmm): Insert 3 nop:s for wr delay.
* longlong.h (___IBMR2__): Define umul_ppmm, add_ssaaaa, sub_ddmmss.
* longlong.h (__sparc__): Don't call .umul; expand asm instead.
Don't define __umulsidi3 (i.e. use default definition).
Mon Jun 24 17:37:23 1991 Torbjorn Granlund (
* _mpz_get_str.c (num_to_ascii_lower_case, num_to_ascii_upper_case):
Swap 't' and 's'.
Sat Jun 22 13:54:01 1991 Torbjorn Granlund (
* mpz_gcdext.c: New file.
* mpn_mul: Handle carry and unexpected operand sizes in last
additions/subtractions. (Bug trigged when v1_size == 1.)
* mp*_alloc*: Rename functions to mp*_init* (files to mp*_iset*.c).
* mpq_*: Call mpz_init*.
* mpz_pow_ui, rpow: Use _mpn_mul instead of mult. Restructure.
Wed May 29 20:32:33 1991 Torbjorn Granlund (
* mpz_get_cvtlen: multiply by size.
Sun May 26 15:01:15 1991 Torbjorn Granlund (
Alpha-release 0.95.
Fixes from Doug Lea (
* mpz_mul_ui: Loop to MULT_SIZE (not PROD_SIZE). Adjust PROD_SIZE
* mpz_div: Prepend _ to mpz_realloc.
* mpz_set_xs, mpz_set_ds: Fix typos in function name.
Sat May 25 22:51:16 1991 Torbjorn Granlund (
* mpz_divmod_ui: New function.
* sdiv: Make the sign of the remainder correct.
Thu May 23 15:28:24 1991 Torbjorn Granlund (
* Alpha-release 0.94.
* mpz_mul_ui: Include longlong.h.
* mpz_perfsqr.c (mpz_perfect_square_p): Call _mpz_impl_sqrt instead
of msqrt.
* mpz_impl_sqrt: Don't call "move", inline its functionality.
* mdiv: Use MPN_COPY instead of memcpy.
* rpow, mpz_mul, mpz_mod_2exp: Likewise.
* pow.c: Likewise, and fix bug in the size arg.
* xtom: Don't use mpz_alloc, inline needed code instead. Call
_mpz_set_str instead of mpz_set_str.
* Makefile: Make two libraries, libmp.a and libgmp.a.
Thu May 22 20:25:29 1991 Torbjorn Granlund (
* Add manual to distribution.
* Fold in many missing routines descibed in the manual.
* Update Makefile.
Wed May 22 13:48:46 1991 Torbjorn Granlund (
* mpz_set_str: Make it handle 0x prefix OK.
Sat May 18 18:31:02 1991 Torbjorn Granlund (
* memory.c (_mp_default_reallocate): Swap OLD_SIZE and NEW_SIZE
* mpz_realloc (_mpz_realloc): Swap in call to _mp_reallocate_func.
* min: Likewise.
Thu May 16 20:43:05 1991 Torbjorn Granlund (
* memory.c: Make the default allocations functions global.
* mp_set_fns (mp_set_memory_functions): Make a NULL pointer mean the
default memory function.
Wed May 8 20:02:42 1991 Torbjorn Granlund (
* mpz_div: Handle DEN the same as QUOT correctly by copying DEN->D
even if no normalization is needed.
* mpz_div: Rework reallocation scheme, to avoid excess copying.
* mpz_sub_ui.c, mpz_add_ui.c: New files.
* mpz_cmp.c, mpz_cmp_ui.c: New files.
* mpz_mul_2exp: Handle zero input MINT correctly.
* mpn_rshiftci: Don't handle shift counts > BITS_PER_MP_DIGIT.
* mpz_out_raw.c, mpz_inp_raw.c: New files for raw I/O.
Tue May 7 15:44:58 1991 Torbjorn Granlund (
* mpn_rshift: Don't handle shift counts > BITS_PER_MP_DIGIT.
* mpz_div_2exp: Don't call _mpn_rshift with cnt > BITS_PER_MP_DIGIT.
* gcd, mpz_gcd: Likewise.
* gcd, mpz_gcd: Handle common 2 factors correctly.
Mon May 6 20:22:59 1991 Torbjorn Granlund (
* gmp-impl.h (MPN_COPY): Inline a loop instead of calling memcpy.
* gmp-impl.h, mpz_get_str, rpow: Swap DST and SRC in TMPCOPY* macros.
Sun May 5 15:16:23 1991 Torbjorn Granlund (
* mpz_div: Remove test for QUOT == 0.
Sun Apr 28 20:21:04 1991 Torbjorn Granlund (
* pow: Don't make MOD normalization in place, as it's a bad idea to
write on an input parameter.
* pow: Reduce BASE if it's > MOD.
* pow, mult, mpz_mul: Simplify realloc code.
Sat Apr 27 21:03:11 1991 Torbjorn Granlund (
* Install multplication using Karatsuba's algorithm as default.
Fri Apr 26 01:03:57 1991 Torbjorn Granlund (
* msqrt: Store in ROOT even for U==0, to make msqrt(0) defined.
* mpz_div_2exp.c, mpz_mul_2exp.c: New files for shifting right and
left, respectively.
* gmp.h: Add definitions for mpz_div_2exp and mpz_mul_2exp.
* mlshift.c, mrshift.c: Remove.
Wed Apr 24 21:39:22 1991 Torbjorn Granlund (
* mpn_mul: Check only for m2_size == 0 in function header.
Mon Apr 22 01:31:57 1991 Torbjorn Granlund (
* karatsuba.c: New file for Karatsuba's multplication algorithm.
* mpz_random, mpz_init, mpz_mod_2exp: New files and functions.
* mpn_cmp: Fix header comment.
Sun Apr 21 00:10:44 1991 Torbjorn Granlund (
* pow: Switch off initial base reduction.
Sat Apr 20 22:06:05 1991 Torbjorn Granlund (
* mpz_get_str: Don't generate initial zeros for initial word.
Used to write outside of allocated storage.
Mon Apr 15 15:48:08 1991 Torbjorn Granlund (
* _mpz_realloc: Make it accept size in number of mp_digits.
* Most functions: Use new _mpz_realloc definition.
* mpz_set_str: Remove calls _mp_free_func.
* Most functions: Rename mpn_* to _mpn_*. Rename mpz_realloc to
* mpn_lshift: Redefine _mpn_lshift to only handle small shifts.
* mdiv, mpz_div, ...: Changes for new definition of _mpn_lshift.
* msqrt, mp*_*shift*: Define cnt as unsigned (for speed).
Sat Apr 6 14:05:16 1991 Torbjorn Granlund (
* mpn_mul: Multiply by the first digit in M2 in a special
loop instead of zeroing the product area.
* mpz_abs.c: New file.
* sdiv: Implement as mpz_div_si for speed.
* mpn_add: Make it work for second source operand == 0.
* msub: Negate the correct operand, i.e. V before swapping, not
the smaller of U and V!
* madd, msub: Update abs_* when swapping operands, and not after
Fri Apr 5 00:19:36 1991 Torbjorn Granlund (
* mpn_sub: Make it work for subtrahend == 0.
* madd, msub: Rewrite to minimize mpn_cmp calls. Ensure
mpn_cmp is called with positive sizes (used to be called
incorrectly with negative sizes sometimes).
* msqrt: Make it divide by zero if fed with a negative number.
* Remove if statement at end of precision calculation that was
never true.
* itom, mp.h: The argument is of type short, not int.
* mpz_realloc, gmp.h: Make mpz_realloc return the new digit pointer.
* mpz_get_str.c, mpz_set_str.c, mpz_new_str.c: Don't include mp.h.
* Add COPYING to distribution.
* mpz_div_ui.c, mpz_div_si.c, mpz_new_ui.c, mpz_new_si.c: New files.
Fri Mar 15 00:26:29 1991 Torbjorn Granlund (
* Add Copyleft headers to all files.
* mpn_mul.c, mpn_div.c: Add header comments.
* mult.c, mdiv.c: Update header comments.
* mpq_add.c, mpq_sub.c, mpq_div.c, mpq_new.c, mpq_new_ui.c,
mpq_free.c: New files for rational arithmetics.
* mpn_lshift.c: Avoid writing the most significant word if it is 0.
* mdiv.c: Call mpn_lshift for the normalization.
* mdiv.c: Remove #ifdefs.
* Makefile: Add ChangeLog to DISTFILES.
* mpn_div.c: Make the add_back code work (by removing abort()).
* mpn_div.c: Make it return if the quotient is size as compared
with the difference NSIZE - DSIZE. If the stored quotient is
larger than that, return 1, otherwise 0.
* gmp.h: Fix mpn_div declaration.
* mdiv.c: Adopt call to mpn_div.
* mpz_div.c: New file (developed from mdiv.c).
* README: Update routine names.
Thu Mar 14 18:45:28 1991 Torbjorn Granlund (
* mpq_mul.c: New file for rational multplication.
* gmp.h: Add definitions for rational arithmetics.
* mpn_div: Kludge the case where the high numerator digit > the
high denominator digit. (This code is going to be optimized later.)
* New files: gmp.h for GNU specific functions, gmp-common.h for
definitions common for mp.h and gmp.h.
* Ensure mp.h just defines what BSD mp.h defines.
* pow.c: Fix typo for bp allocation.
* Rename natural number functions to mpn_*, integer functions to
Tue Mar 5 18:47:04 1991 Torbjorn Granlund (
* mdiv.c (_mp_divide, case 2): Change test for estimate of Q from
"n0 >= r" to "n0 > r".
* msqrt: Tune the increasing precision scheme, to do fewer steps.
Tue Mar 3 18:50:10 1991 Torbjorn Granlund (
* msqrt: Use the low level routines. Use low precision in the
beginning, and increase the precision as the result converges.
(This optimization gave a 6-fold speedup.)
Local Variables:
mode: indented-text
left-margin: 8
fill-column: 75
version-control: never