Tue Jul 1 14:26:29 1997 Jens Schmidt * GNUmakefile.in (dist): use ln instead of cp to build distribution * canonicalform.cc (initCanonicalForm, mmInit): initialize memory managment if compiled with Singular. Declaration of mmInit() added. * cf_random.cc (RandomGenerator): removed definitions of const long int in class for mac. Instead, they are initialized in the constructor. * cf_random.h (factoryrandom, factoryseed): declarations marked as public Mon Jun 30 15:38:08 1997 Jens Schmidt * GNUmakefile.in (LIBCFLAGS, LIBCXXFLAGS, TMPLCXXFLAGS): option -Wall replaced by references to $(WARNFLAGS) (WARNFLAGS): new variable * imm.h (MINIMMEDIATELL, MAXIMMEDIATELL): initialization for mac added (he does not like a 'LL' suffix) * templates/ftmpl_matrix.cc: include paths for mac added * templates/ftmpl_list.cc: include paths for mac added * templates/ftmpl_factor.cc: include paths for mac added * templates/ftmpl_array.cc: include paths for mac added * factory.template: include paths for mac added * canonicalform.h: include paths for mac added * ftmpl_inst.cc: include paths for mac added * cf_gcd.cc: include paths for mac added * cf_map.cc: include paths for mac added * cf_map.h: include paths for mac added * fac_ezgcd.cc: include paths for mac added * configure: checked into RCS * readcf.cc: checked into RCS Fri Jun 27 10:33:29 1997 Jens Schmidt * bin/makeheader: doc checked * bin/install-sh: doc checked * bin/mkinstalldirs: doc checked * bin/makeheader: checked into RCS * bin/install-sh: checked into RCS * bin/mkinstalldirs: checked into RCS Thu Jun 26 16:06:39 1997 Jens Schmidt * GNUmakefile.in: doc checked * GNUmakefile.in: doc fix Wed Jun 25 10:02:51 1997 Jens Schmidt * configure.in (enable_gmp): bug fix (CPPFLAGS, LDFLAGS): bug fix Tue Jun 24 11:15:25 1997 Jens Schmidt * configure.in: doc checked * configure.in (with_builtingmp): command line option --with-builtingmp removed. All references to with_builtingmp and some additional code to deal with the command line options --with-gmp and --with-builtin-gmp removed, too. * configure.in (enable_assertions): disabled by default * configure.in (enable_gmp): with_gmp and with_builtin_gmp are set to '$(includedir)' if command line option --enable-gmp is given * configure.in: fixes in configure's messages * configure.in: doc fix Mon Jun 23 12:44:50 1997 Jens Schmidt * config.h.in: doc checked * factory.template: doc checked * factoryconf.template: doc checked * gengftables.cc: doc checked * config.h.in: doc fix * factory.template: doc fix * factoryconf.template: doc fix Fri Jun 20 12:09:00 1997 Jens Schmidt * templates/: all files prefixed with 'ftmpl_'. All #include statements changed. * GNUmakefile.in (templatesrc, templateincl): all files prefixed with 'ftmpl_' * ftmpl_inst.cc, tmpl_inst.cc: tmpl_inst.cc renamed to ftmpl_inst.cc * GNUmakefile.in: all references to tmpl_inst replaced by references to ftmpl_inst Thu Jun 19 14:33:17 1997 Jens Schmidt * config.h.in: doc fix * factoryconf.template: doc fix * headers of almost all source files fixed Thu Jun 12 13:12:49 1997 Jens Schmidt * cf_globals.cc: doc fix Fri Jun 6 09:38:05 1997 Jens Schmidt * configure.in: some stupid warnings removed if "dangerous" combinations of with's/enable's are specified on commandline. Some other fixes in configure's messages. * configure.in (enable_memdebug): code removed which sets enable_memdebug to 'normal' since this is really never tested * configure.in (with_gmp, with_builtingmp): new command line options. Rest of configure.in adapted to new scheme of specifying where gmp lives. * configure.in: doc fix * GNUmakefile.in (distsrc, clean): gengftables added to distribution (distfiles): ChangeLog added to distribution Thu Jun 5 15:03:48 1997 Jens Schmidt * configure.in (enable_debugoutput, enable_timing): dependency on with_Singular removed so '--with-Singular --enable-debugoutput' and '--with-Singular --enable-timing' are possible * GNUmakefile.in (gengftables.o): check added which makes make complain if factory was not configured in the right way * configure.in: checks on sizeof(int) == sizeof(void *) == 4 removed * debug.h: dependency on #define NDEBUG removed * factoryconf.template: doc fix * config.h.in: added to distribution as source file. config.h.in is not created from acconfig.h any longer. * acconfig.h: removed from distribution * GNUmakefile.in: ($(srcdir)/config.h.in, $(srcdir)/stamp-h.in, realmaintainerclean, dist, distfiles): changed to reflect the changes described above * config.h.in (INCL_CONFIG_H): new #define to prevent multiple inclusion of config.h * GNUmakefile.in ($(srcdir)/configure): make will not complain about a missing autoconf any longer * canonicalform.cc (operator>>): returns 0 again if #define SINGULAR and #define NOSTREAMIO are switched on Before Mon Jun 4 1997 Jens Schmidt This is a list of most of the changes I made after I took the responsibility for factory development and before I started to update the ChangeLog regularily. It is unlikely to be complete. Besides minor changes at "source code level" (bug fixes, new features) which are not really visible to the user in general there are quite a lot of changes at "organization level" (aka preprocessor level) and at "distribution level" (configure, Makefile). First, the changes at distribution level: * bin: some useful/necessary scripts added to distribution * install-sh: moved to bin * ChangeLog: added to distribution * configure.in: totally rewritten * config.h.in, conf.h.in: conf.h.in replaced by a totally rewritten config.h.in. Furthermore, config.h is now explicitly included in allmost every source file of the distribution. * factoryconf.template: new file. factoyconf.h is included instead of config.h in all source files which are not translated but installed (e.g. templates). * factory.template, factory.h: factory.h replaced by factory.template since makeheader is now included in the distribution * factory.template: rewritten to new makeheader syntax * factory.template, singfactory.h: Singular stuff moved from singfactory.h to factory.template. Wrapped by #ifdef SINGULAR. * singfactory.h: removed from distribution * gengftables.cc: code for generating gftables added to distribution * GNUmakefile.in, Makefile.in: Makefile.in replaced by a totally rewritten GNUmakefile.in * INSTALL: removed from distribution since not up to date * memman.h, mmalloc.c, mmallocs.c, mmheap.c, mmprivate.h, mmutil.c, mmallocb.c, mmblock.c, mminit.c, mmspec.c: new memory manager added to distribution * mpext.cc, mpext.h, mpfactory.h: removed from distribution. No more MP support. * config.h.in (MULTIPROTOCOL): #define MULTIPROTOCOL removed * int_int.h (class InternalInteger): declarations dependent on #define MULTIPROTOCOL removed * int_rat.h (class InternalRational): declarations dependent on #define MULTIPROTOCOL removed * readcf.cc: added to distribution since not all users have bison available Now for the changes at organization level: If we refer to the "DEBOUT macros", the "ASSERT macros", or the "TIMING macros" we mean one (or more) of the macros defined in debug.h, assert.h, and timing.h, resp. * assert.h (NOASSERT, NDEBUG): #define NDEBUG to switch off assertions replaced by #define NOASSERT. For sake of backward compatibility NDEBUG works, too. * assert.h (DEBINCLEVEL, DEBDECLEVEL, DEBOUTSL, DEBOUT, DEBOUTLN): DEBOUT macros moved to debug.h * assert.cc: renamed to debug.cc * debug.h, debug.cc: new files. DEBOUT macros moved from assert.h/assert.cc to debug.h/debug.cc. All source files which need these macros include debug.h. * assert.h (PVIRT_VOID, PVIRT_INTCF, PVIRT_BOOL, PVIRT_INT, PVIRT_CHARCC): PVIRT_*-macros moved from int_cf.h to assert.h * int_cf.h (PVIRT_VOID, PVIRT_INTCF, PVIRT_BOOL, PVIRT_INT, PVIRT_CHARCC): PVIRT_*-macros moved to assert.h * assert.h (__ASSERT, __STICKYASSERT): the preprocessor instead of fprintf() pastes the message into the format string now * assert.h (__ASSERT1, ASSERT1, STICKYASSERT1): new macros * assert.h (__WARN, WARN, STICKYWARN): new macros * canonicalform.cc (operator>>): dependency on #define SINGULAR removed * cf_defs.h (INCL_CF_DEFS_H, incl_cf_defs_H): #define incl_cf_defs_H renamed to #define INCL_CF_DEFS_H so cf_defs.h is included only once * cf_factor.cc (factorize): dependency on #define MULTIFACTOR removed * cf_factory.cc (CFFactory::basic( int, int )): error message changed to call of ASSERT macros * fac_util.cc: (crossprod): error message changed to call of ASSERT macros * int_cf.cc: several error messages changed to calls of ASSERT macros * int_cf.h (InternalCF::InternalCF( InternalCF& )): error message changed to call of ASSERT macros * int_poly.cc (InternalPoly::InternalPoly( InternalPoly& )): error message changed to call of ASSERT macros * templates/array.cc (Array::operator[], Array::operator+=): error messages changed to calls of ASSERT macros * templates/list.cc (List::getFirst, List::getLast, ListIterator::getItem): error messages changed to calls of ASSERT macros * cf_gcd.cc: debug output changed to calls of DEBOUT macros * cf_linsys.cc: debug output rewritten and changed to calls of DEBOUT macros * fac_berlekamp.cc (QPrintFF, QPrintGF): definition and calls of QPrintFF(), QPrintGF() wrapped by #ifdef DEBUGOUTPUT * fac_univar.cc: debug output rewritten (hprint): calls to hprint() wrapped by calls to #define DEBOUTHPRINT, which definition depends on #define DEBUGOUTPUT (instead of NDEBUG, as before). All callers changed. * cf_linsys.cc: superfluous #define TIMING removed * fac_distrib.cc: superfluous #undef DEBUGOUTPUT removed * fac_ezgcd.cc: some superfluous #defines (DEBUGOUTPUT, TIMING) and #includes removed * fac_multihensel.cc: some superfluous #defines (DEBUGOUTPUT, TIMING) removed * fac_multivar.cc: some superfluous #defines (DEBUGOUTPUT, TIMING) removed * fac_univar.cc: some superfluous #defines (DEBUGOUTPUT, TIMING) and #includes removed * config.h.in (GFTABLEDIR): new #define * gfops.cc (gf_get_table): uses #define GFTABLEDIR to get path to the GF(q) tables * config.h.in (MDEBUG, NOASSERT, TIMING, DEBUGOUTPUT): new #defines * config.h.in (NOSTREAMIO): new #define NOSTREAMIO to switch off stream IO. Operators <<, >>, and related stuff wrapped by #ifndef NOSTREAMIO. * debug.cc (deb_level, level_msg, deb_inc_level): deb_inc_level()'s output made more pretty at time of first call * debug.h (DEBOUT, DEBOUTLN): slightly modified so they print "objects" instead of only one "msg" and one "object". All callers changed. * debug.h (DEBUGOUTPUT): #define DEBUGOUTPUT is switched off now if #define NDEBUG is switched on * fac_univar.cc (ZFactorizeUnivariate): timing stuff changed to calls of TIMING macros * gmpext.h: references to #define INCL_GCDEXT_H replaced by references to #define INCL_GMPEXT_H * initgmp.cc (initializeGMP): dependency on #define SINGULAR removed * mmallocb.c (MM_TEST, TEST): references to #define TEST replaced by references to #define MM_TEST * readcf.h: '#include ' replaced by '#include ' * readcf.y: dependency on #define COMEAU removed * templates/matrix.cc (ASSERT): definition of ASSERT macros replaced by inclusion of factoryconf.h * timing.h (HZ): new #define to calculate ticks per second in a more portable way. All references changed. * timing.h (TIMING_DEFINE_PRINT, TIMING_END_AND_PRINT): stream IO changed to std IO * timing.h (TIMING_END_AND_PRINT): new macro Last not least, changes at source code level: * canonicalform.cc (mapinto): fixed mapping from int to GF(q) * cf_factor.cc (sqrFree( CanonicalForm, boolean )): new function which sorts output if desired * cf_factor.cc (sqrFree( CanonicalForm )): changed to call new sqrFree() * canonicalform.h, cf_factor.h (sqrFree( CanonicalForm, boolean )): new declaration * fac_sqrfree.cc (compareFactors, sortCFFList): new functions used by new sqrFree() * fac_sqrfee.h (sortCFFList): new declaration * cf_defs.h (SW_USE_SPARSEMOD): new switch * cf_globals.cc (factoryVersion): new external * cf_globals.h (factoryVersion): new declaration * config.h.in (FACTORYVERSION): new #define * factory.template: '#include cf_globals.h' added because of version string * cf_linsys.cc (linearSystemSolve, determinant, determinant2): typedef int_ptr added (linearSystemSolve, determinant, determinant2): 'new (int*)[..]' replaced by 'new int_ptr[..]' * templates/matrix.h (Matrix::T_ptr): new typedef * templates/matrix.cc (Matrix::Matrix( int, int ), Matrix::Matrix( Matrix ), Matrix::operator=): 'new (T*)[..]' replaced by 'new T_ptr[..]' * cf_iter.h: superfluous '#include ' removed * cf_factor.h: superfluous '#include ' removed * cf_reval.h: superfluous '#include ' removed * memutil.c: superfluous '#include ' removed * mmalloc.c: superfluous '#include ' removed * cf_random.cc (RandomGenerator): new class (RanGen): new static (factoryrandom, factoryseed): calls to stdlib random generator replaced by methods of class RandomGenerator * cf_switches.h (RATIONAL): superfluous #define RATIONAL removed * int_int.cc (IntInt): superfluous #define IntInt removed * int_pp.cc (IntPP): superfluous #define IntPP removed * fac_univar.cc (initHG, ZFactorizeUnivariate): STICKYWARNings added because of some strange errors which occur in these functions * fac_univar.cc (kBound): cast to double added in calculation of the bound (UnivariateQuadraticLift): cast to double added in calculation of no_iter * fac_univar.cc (max_fp_fac, MAX_FP_FAC): '#define MAX_FP_FAC' replaced by 'const int max_fp_fac'. All references changed. * fac_univar.cc (ZFactorizeUnivariate): superfluous declaration of 'CFFList G' removed. Some trivial structural changes. Test on 'D != 0' (before deleting D) removed. * gfops.h (gf_gf2ff, gf_isff): declarations marked as public for Singular * factory.template: '#include "gfops.h"' added * gfops.cc (gf_get_table): gf_table[gf_q] is guaranteed to be 0 * gfops.cc (gf_get_table): rewritten. Major changes: copies Singulars tables if these are present instead of reading from disk. Uses standard IO instead of stream IO to read the tables. * singext.h (nfCharQ, nfM1, nfMinPoly, nfPlus1Table): declarations of Singular objects added to copy Singulars GF(q) tables * gfops.cc (gf_get_table): length of temporary buffer replaced by 'const int gf_maxbuffer' * gfops.cc (gf_isff): rewritten * gfops.cc (gf_maxtable, MAXTABLE): '#define MAXTABLE' replaced by 'const int gf_maxtable'. All references changed. * gfops.cc (gf_valid_combination): 'int m' replaced by references to gf_maxtable * gfops.cc (intVec2CF): new function * gfops.h (gf_mipo): new declaration * imm.h (class InternalCF): superfluous declaration of class InternalCF removed * imm.h (imm_intval): convertion from GF(q) to integer added * int_int.cc (InternalInteger::genOne): Ruedigers last fryday afternoon fix * variable.cc (Variable::name): casts to int added * variable.cc (Variable::Variable( char ), Variable::Variable( int, char ), rootOf): 'delete ...' changed to 'delete [] ...' where necessary