This is a new release of SAML, the Simple Algebraic Math Library. As always, I will put the tarballs on topo.math.u-psud.fr today or tomorrow. Note that I've only tested it under SunOS and Linux; if there are significant porting difficulties to other Unices (especially on 64-bit machines), drop me a mail.
The main changes between 960426 and 960701 are:
o The new type ST_APOLY is now fully implemented. This representation of polynomials is usually faster, more compact, and much more reliable than the ST_POLY representation. This is now the default for samuel and induce, although there are toggles to select ST_POLY, which can be more efficient in some (rare) cases.
o The ST_CYCLIC type, and samuel, only allowed moduli up to 2^31-1, and it wasn't documented anywhere. Now moduli can be as high as 2^32-1. The hash function for cyclic integers has been optimized (we removed an expensive division) and a memory leak in int2cyclic() has been plugged.
o Samuel now manages its own stack of temporary expressions, instead of relying on the stack provided by yacc/bison. It allows better recovery in the case of a parse error (no more memory leaks) and simplifies the handling of variable-size argument lists.
o An embarrassing bug in induce, which caused it to crash ungracefully in the case of a cyclic dependency, has been fixed. This is still a fatal error, but now it will be correctly reported.
o Induce now supports multiple memos, tilde-expands all filenames, and checks the exitcode of its children.
o Factorint has undergone considerable modifications: we now use Rabin-Miller (instead of the weak Fermat test) for pseudo-primality, and MPQS (instead of CFRAC) for factorization. The default parameters have been carefully tuned and it shouldn't be necessary to modify them, unless you want to skip the Pollard phase entirely.
o The makefiles for 960426 incorrectly assumed that under SunOS, memcpy() could handle overlapping copies. This is not true (and, oddly enough, bcopy() doesn't have this problem) so memcpy() is not an acceptable replacement for memmove(). This is fixed.
Here is the entry for the Linux Software Map:
Begin3 Title: SAML, the Simple Algebraic Math Library Version: 960701 Entered-date: 01JUL96 Description: SAML is a C library for symbolic calculations, accompanied by some application programs (samuel, factorint, induce). The library provides an object-oriented framework for defining and handling mathematical types, and implements the most common data types of computer algebra: integers, reals, fractions, complex numbers, polynomials, tensors, matrices, etc. The application programs consist of an interactive symbolic calculator (samuel), a programming language (induce) and a program to factorize integers (factorint). Keywords: Computer algebra, C, library, symbolic calculus Author: firstname.lastname@example.org (Thierry Bousch) Maintained-by: email@example.com (Thierry Bousch) Primary-site: topo.math.u-psud.fr /pub/bousch 203kB saml-960701.tgz Platform: Requires a decent Un*x system, gcc 2.5.0 or later, gdbm, perl and gmake. Bison and TeXinfo can be useful. Copying-policy: GPL End