2006-09-16  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Version 1.2-mk-0.6
	
2006-09-16  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Add copyright and license notices to all source files.  Files
	without any author notices are marked "Copyright 2002-2004 Jesus
	A. De Loera, David Haws, Raymond Hemmecke, Peter Huggins, Jeremy
	Tauzer, Ruriko Yoshida" (the original LattE team).

	* code/latte/count.cpp: New command-line switches --polynomial,
	--dual, reflecting current default behavior.

2006-09-15  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/ReadingFile.cpp (CheckRed): Handle errors of redcheck_gmp.

	* code/latte/CheckEmpty.cpp (CheckEmpty): Handle errors of CDD+.

2006-09-14  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/genFunction/piped.cpp (PointsInParallelepipedGenerator::GeneratePoint):
	Repair computation of points; fixes polynomial substitution.

2006-09-13  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Performance improvements.
	
	* code/latte/ExponentialSubst.cpp: Remove unused var.

	* code/latte/Irrational.cpp, code/latte/ResSingle.cpp,
	code/latte/RudyResNTL.cpp, code/latte/binarySearchIP.cpp,
	code/latte/count.cpp, code/latte/dual.cpp, code/latte/ehrhart.cpp,
	code/latte/maximize.cpp, code/latte/genFunction/maple.h,
	code/latte/minimize.cpp, code/latte/print.cpp,
	code/latte/rational.cpp, code/latte/rational.h,
	code/latte/vertices/cdd.cpp, code/latte/genFunction/piped.cpp,
	code/latte/genFunction/piped.h: Change the interface to rational
	vectors, so the result of scaleRationalVectorToInteger can be
	cached.

	* code/latte/rational.cpp, code/latte/rational.h: Remove some
	unused functions.

	* code/latte/convert.cpp (transformArrayBigVectorToListVector):
	Save some copying.

	* code/latte/genFunction/piped.h,
	code/latte/genFunction/piped.cpp: Avoid computing with large
	numbers.  Precompute more data.
	(pointsInParallelepipedOfUnimodularCone):  Removed.  The general
	function is faster.
	
2006-09-04  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/genFunction/piped.cpp, code/latte/barvinok/dec.cpp:
	Remove unused variables.

	* code/latte/PolyTree.h (PolyTree_Node): Add virtual destructor to
	fix warning from GCC.

	* code/latte/Residue.cpp: Remove unused variable.

	* code/latte/count.cpp: Change calls to computeVertexConesFromVrep.
	Fix uninitialized-variable problem in "vrep" mode, which caused
	segfaults in SPARC/64-bit compiles.

	* code/latte/ehrhart.cpp, code/latte/maximize.cpp,
	code/latte/minimize.cpp, code/latte/ramon.cpp: Change calls to
	computeVertexConesFromVrep.

	* code/latte/vertices/cdd.cpp, code/latte/vertices/cdd.h
	(computeVertexConesFromVrep): Change interface to remove unused
	argument.

2006-09-03  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/count.cpp (main): Don't segfault when invoked without
	arguments.

	* code/latte/Irrational.cpp (computeConeStabilityCube_simplicial):
	Fix computation of center (always round down!).  Fixes test cases
	aardallenstra.equ, tru_cube_latte, tru_simplex_latte with "--irr
	--exp --maxdet=500" (Assertion failed, not integer equivalent with
	center).

2006-08-28  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/genFunction/NTL_to_LiDIA.cpp
	(convert_vec_ZZ_to_bigint_array): Remove implementation
	restriction; arbitrarily large numbers can now be copied.

	* code/latte/barvinok/barvinok.cpp,
	code/latte/barvinok/ConeDecom.cpp, code/latte/barvinok/Cone.cpp,
	code/latte/ResSingle.cpp, code/latte/RudyResNTL.cpp: Remove
	g++-isms.

2006-07-16  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/genFunction/piped.cpp,
	code/latte/genFunction/piped.h: Remove arbitrary limitation of the
	Smith normal form elements to machine integers.

	* code/latte/latte_random.cpp,
	code/latte/latte_random.h (uniform_random_number): Overload to
	handle NTL integers.
	(seed_random_generator): Also seed the NTL random generator.

2006-07-15  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/banner.cpp (latte_banner):
	Show web address of LattE macchiato.

2006-07-13  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/genFunction/piped.cpp (get_integer_comb): Fix a bug
	caused by integer overflow for `count vrep --exp --maxdet=1000
	random-simplex/random-simplex-dim4-digits2-9.vrep'.  

	* code/latte/count.cpp: Don't delete the input file in vrep mode.

2006-07-12  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* m4/gmp-check.m4: Use "-lgmpxx -lgmp"; the Solaris linker needs
	this order!

2006-07-06  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Version 1.2-mk-0.5

	* configure.ac: New release.

	* code/latte/count.cpp: Make the "--all-primal vrep" case work.

	* m4/lidia-check.m4: Fix for LiDIA 2.2.0.

	* code/latte/genFunction/NTL_to_LiDIA.cpp,
	code/latte/genFunction/matrix_ops.cpp: Fix LiDIA includes.

	* code/latte/dual.cpp (dualizeCones): Don't delete the facets of
	the first cone.

2006-07-04  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Version 1.2-mk-0.4
	
	* code/latte/Irrational.cpp, code/latte/Makefile.am,
	code/latte/barvinok/barvinok.cpp, code/latte/count.cpp: Include
	the irrationalization code in the distribution.

	* configure.ac: Try to determine "fast" compiler flags.

2006-07-03  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Revive the "vrep" code.
	
	* code/latte/adjacency/Makefile.am, code/latte/Makefile.am:
	New subdir "adjacency".

	* configure.ac: Check for cddlib, so we can build the
	ComputeAdjacency binary.  Compute and define
	COMPUTEADJACENCY_PATH.

	* m4/define_dir.m4: New file.

2006-07-02  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Implement the irrational all-primal method, where
	triangulation is also done in primal space.
	
	* code/latte/count.cpp: Measure time for irrationalization.

	* code/latte/Irrational.cpp (computeConeStabilityCube_general):
	Implement.
	(estimate_barvinok_depth): New, factored out from
	irrationalizeCone; implement for non-simplicial case.
	(irrationalizeCone): Use it here.

	* code/latte/vertices/cdd.cpp, code/latte/vertices/cdd.h
	(ReadLpsFile, LP): Extend interface.

	* code/latte/barvinok/barvinok.cpp,
	code/latte/barvinok/barvinok.h: New timer.

	* code/latte/Irrational.h (computeConeStabilityCube): Change
	interface, split implementation into two functions.

	* code/latte/Irrational.cpp (irrationalizeCone): Estimates are
	based on maximum entry of rays, not facets.
	(computeConeStabilityCube): Change interface, split implementation
	into two functions.

	* code/latte/cone.h (listVector::listVector): New optional
	argument for rest.

	* code/latte/count.cpp: Handle new option --irrational-all-primal
	(--all-primal).

	* code/latte/dual.cpp, code/latte/dual.h
	(computeTightInequalitiesOfCones): New.

	* code/latte/barvinok/barvinok.cpp, code/latte/barvinok/barvinok.h:
	New decomposition type, IrrationalAllPrimalDecomposition.

	* code/latte/vertices/cdd.cpp (computeVertexCones,
	computeVertexConesViaLrs): Remove unnecessary call to
	createListOfInequalities.

2006-07-01  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/count.cpp: Use upgrade constructors to upgrade
	BarvinokParameters to one of its subclasses.  Measure time for
	subtasks using the new Timer class; take time for child processes
	properly into account.

	* code/latte/barvinok/ConeDecom.cpp (barvinokDecomposition_Single):
	Take the triangulation time.

	* code/latte/barvinok/barvinok.cpp, code/latte/barvinok/barvinok.h
	(BarvinokParameters): Move slot Flags here from subclass
	Single_Cone_Parameters.  New slots for timers.  New method
	print_statistics.
	(Single_Cone_Parameters): Create upgrade constructor.

	* code/latte/barvinok/dec.cpp, code/latte/barvinok/dec.h
	(Generic_Vector_Single_Cone_Parameters,
	Standard_Single_Cone_Parameters): Create upgrade constructors.
	(decomposeAndComputeResidue): New function, factored out from
	decomposeCones_Single.
	(decomposeCones_Single): Reimplement using
	decomposeAndComputeResidue.

	* code/latte/timing.cpp, code/latte/timing.h (getcputime): Unused,
	removed.
	(Timer): New class.

	* code/latte/ExponentialApprox.h, code/latte/ExponentialSubst.h
	(Exponential_Single_Cone_Parameters):
	(Write_Exponential_Sample_Formula_Single_Cone_Parameters): Create
	upgrade constructors.

	* code/latte/Irrational.cpp, code/latte/Irrational.h
	(computeConeStabilityCube): New.
	(irrationalizeCone): Use it here.  Implement the irrationalization
	from math.CO/0603308v2.

2006-06-30  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/barvinok/Triangulation.cpp (Triangulation_Load_Save):
	Fix cdd invocation in the load/save case.

	* code/latte/count.cpp:
	Don't forget to initialize the Flags in the exponential case.

2006-06-28  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Version 1.2-mk-0.3
	
	* code/latte/cone.h (listCone): New slot
	lattice_points_scalar_products.

	* code/latte/ExponentialSubst.cpp,
	code/latte/ExponentialSubst.h (computeExponentialResidue_Single):
	Compute scalar products of points in paralellelepiped with the
	generic vector directly, using computeLatticePointsScalarProducts;
	this is faster than first computing all the points.

	* code/latte/genFunction/piped.cpp,
	code/latte/genFunction/piped.h (PointsInParallelepipedGenerator::compute_multiplier):
	New.
	(PointsInParallelepipedGenerator::translate_lattice_point): New.
	(PointsScalarProductsGenerator): New class.
	(computeLatticePointsScalarProducts): New.

2006-06-27  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/genFunction/piped.cpp,
	code/latte/genFunction/piped.h (PointsInParallelepipedGenerator):
	Precompute some more data.

	* code/latte/ExponentialSubst.cpp (computeExponentialResidue_Single):
	Reimplement for speed.

2006-06-25  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/genFunction/piped.cpp (translate_lattice_point):
	Reimplement for speed.

	* m4/ntl-check.m4: Enable out-of-sourcedir compiles.

	* code/latte/count.cpp: Catch NotIrrationalException.

	* code/latte/Irrational.cpp, code/latte/Irrational.h
	(irrationalizeCone): Fix code and put in assertions for
	irrationality and integer equivalence.

	* code/latte/convert.cpp, code/latte/convert.h (createFacetMatrix2):
	New function.

	* code/latte/genFunction/piped.cpp (PointsInParallelepipedGenerator): 
	Special-case unimodular cones (for speed).  In the non-unimodular
	case, avoid matrix inversion.
	(computePointsInParallelepiped): Always use
	pointsInParallelepiped; we will make it faster than
	pointsInParallelepipedOfUnimodularCone. 

2006-06-24  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/barvinok/barvinok.cpp (barvinok_DFS): Fix counting
	of current simplicial cones.  Use checkConeIrrational.

2006-06-23  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/Irrational.cpp (irrationalizeCone): Check that
	irrationalization is OK.

	* code/latte/Irrational.cpp, code/latte/Irrational.h 
	(isConeIrrational, checkConeIrrational): New.
	(assertConesIntegerEquivalent):  New.

2006-04-03  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/ReadingFile.cpp (CheckRed): Don't put FILENAME.latte
	files into the directory of the example; put them into the current
	directory.  This enables parallel testing, if the current
	directory is unique.

	* EXAMPLES/*: Add missing "linearity" keyword in many examples.

2006-04-02  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/barvinok/barvinok.cpp:
	Fix conditional inclusion of irrational code.

2006-04-01  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/Residue.cpp (Residue_Single_Cone):
	Handle non-unimodular cones.

	* CheckEmpty.cpp, banner.cpp, dual.cpp, vertices/cdd.cpp:
	Remove excess whitespace.

	* count.cpp: Write out the total time.

	* barvinok/dec.cpp (decomposeCones_Single): Write the
	numOfLatticePoints file also in the "homog" case.

	* CheckEmpty.cpp, Grobner.cpp, IntegralHull.cpp, Makefile.am,
	ReadingFile.cpp, ResSingle.cpp, Residue.cpp, RudyResNTL.cpp,
	binarySearchIP.cpp, cone.cpp, count.cpp, dual.cpp, ehrhart.cpp,
	latte_system.cpp, latte_system.h, maximize.cpp, minimize.cpp,
	barvinok/Triangulation.cpp, genFunction/maple.cpp,
	genFunction/piped.cpp, print.cpp, ramon.cpp, rational.cpp,
	tmpIP.cpp, vertices/cdd.cpp: Handle the exit status of all
	subprocesses.  When an error occurs, exit with a nonzero exit
	status.

2006-03-31  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* barvinok/barvinok.cpp, barvinok/barvinok.h (Single_Cone_Parameters):
	New slot Total_Simplicial_Cones.

2006-03-30  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* count.cpp: New command-line argument --random-seed=N.

	* latte_random.cpp, latte_random.h (seed_random_generator): New.

	* genFunction/piped.cpp (pointsInParallelepiped):
	Fix delete/delete[] issue.

	* vertices/cdd.cpp: flush stdout to show progress

	* barvinok/barvinok.cpp: Conditionalize irrationalization.

	* ExponentialSubst.h (scalar_power): Export.

	* Makefile.am, latte_random.cpp, latte_random.h:
	New files, latte_random.h, .cpp

	* genFunction/piped.cpp (get_multipliers_from_snf):
	Check implementation restriction.

	* genFunction/NTL_to_LiDIA.cpp (convert_bigint_matrix_to_mat_ZZ):
	Don't convert via longs.
	(convert_vec_ZZ_to_bigint_array): Abort when numbers are too large.

2006-03-29  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* barvinok/barvinok.cpp, barvinok/barvinok.h (barvinok_DFS):
	Special-case max_determinant == 0 to mean "no decomposition".  In
	dual decomposition, observe the dual determinant rather than the
	primal determinant.

	* count.cpp: Enable option "nodecom" in all modes; can also be spelt
	"--no-decomposition".

	* Makefile.am: Conditionalize on HAVE_EXPERIMENTS rather than
	MAINTAINER_MODE.

	* simple-main.cpp: Removed (currently broken)

	* genFunction/piped.cpp, genFunction/piped.h
	(PointsInParallelepipedGenerator): New class.
	(pointsInParallelepiped): Use PointsInParallelepipedGenerator.
	(movePoint): Unused, removed.

	* genFunction/IntCombEnum.cpp: Fix gcc warning

	* Grobner.cpp, ReadingFile.cpp, ramon.cpp, ehrhart.cpp,
	maximize.cpp, minimize.cpp: Don't make cout unbuffered.

2006-03-20  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/Makefile.am: Fix for non-LiDIA build.
	
	* m4/lidia-check.m4: Fix HAVE_LIDIA conditional.

	* code/latte/genFunction/piped.cpp: Fix #includes.

	* code/latte/genFunction/NTL_to_LiDIA.h,
	code/latte/genFunction/NTL_to_LiDIA.cpp
	(print_debug_vector, print_debug_matrix): Move mat_ZZ versions to
	print.h, print.cpp.
	(convert_listVector_to_mat_ZZ): Move to convert.h, convert.cpp.

	* code/latte/Residue.cpp (Residue, Residue_Single_Cone): This code
	silently assumes unimodular cones; put in an assertion.

2006-03-19  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/count.cpp: Write file "numOfLatticePoints" in --exp
	mode too.

2006-03-19  Susan Margulies <smargulies@ucdavis.edu>

	* code/latte/genFunction/piped.cpp,
	code/latte/genFunction/IntCombEnum.cpp,
	code/latte/genFunction/matrix_ops.cpp,
	code/latte/genFunction/matrix_ops.h: Fixed up enumeration code.

2006-03-18  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/genFunction/matrix_ops.cpp: Fix conditionalization.

	* code/latte/genFunction/matrix_ops.h: Fix #include

	* code/latte/cone.h (listVector): Add constructors.

	* code/latte/ramon.cpp, code/latte/ramon.h (appendVectorToListVector):
	Change interface.
	(transformListVectorToArrayVector, transformArrayVectorToListVector,
	readListVectorMLP): Unused, removed.

2006-03-18  Susan Margulies <smargulies@ucdavis.edu>

	* code/latte/genFunction/piped.cpp, code/latte/genFunction/piped.h
	(pointsInParallelepiped): Changed interface.

	* code/latte/ehrhart.cpp, code/latte/maximize.cpp,
	code/latte/minimize.cpp: Change all callers of pointsInParallelepiped.

	* code/latte/ramon.cpp, code/latte/ramon.h (isEqual,
	isVectorInListVector): New.

2006-03-18  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/dual.cpp (computeDetAndFacetsOfSimplicialCone):
	Facet divisors are always positive.

2006-03-17  Susan Margulies <smargulies@ucdavis.edu>

	* code/latte/genFunction/IntCombEnum.cpp: Fixed enumeration code
	to include origin, and optimized code.

2006-03-16  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/Irrational.cpp: Put in warning about implementation flaw.

2006-03-13  Susan Margulies <smargulies@ucdavis.edu>

	* code/latte/Makefile.am, code/latte/genFunction/IntCombEnum.cpp,
	code/latte/genFunction/IntCombEnum.h,
	code/latte/genFunction/NTL_to_LiDIA.cpp,
	code/latte/genFunction/NTL_to_LiDIA.h,
	code/latte/genFunction/matrix_ops.cpp,
	code/latte/genFunction/matrix_ops.h,
	code/latte/genFunction/piped.cpp: Added files and functions
	related to non-unimodular lattice point enumeration.

2006-03-13  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/dual.h, code/latte/dual.cpp
	(computeDetAndFacetsOfSimplicialCone): Cancel gcds of the facet
	vectors, and also fill the new face_divisors slot.
	(dualizeBackCones): Now dualizing is an involution, even for our
	datastructure, so don't cancel gcds here; no scaling tricks
	needed.

	* code/latte/convert.cpp, code/latte/convert.h
	(createFacetMatrix): The stored facet vectors are no longer scaled
	by the full determinant, so do the scaling here for creating the
	matrix.

	* code/latte/cone.h (listCone): New slot facet_divisors.

	* code/latte/Irrational.cpp (irrationalizeCone):
	computeDetAndFacetsOfSimplicialCone only if not computed yet.

2006-03-10  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* Makefile.am, acinclude.m4, autogen.sh:
	Remove acinclude.m4 in favor of ACLOCAL_AMFLAGS = -I m4

2006-03-09  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* simple-main.cpp: In the --exp case, don't forget to set the
	decomposition type.

	* count.cpp: Support --exp.  Signal that "homog --exp" is not implemented.

	* code/latte/ResSingle.cpp (ResidueFunction_Single_Cone): 
	* code/latte/RudyResNTL.cpp (ResidueFunction): These functions
	assume that the vertex of each cone is 0, thus the irrational
	decomposition does not currently work in the homogenized Barvinok
	algorithm.  They also assume that the cones are unimodular.  Put
	in an assert() for that.

2006-03-09  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Fix some memory problems.
	
	* code/latte/rational.cpp:
	Use abort() instead of exit(0) to indicate memory allocation error.

	* code/latte/convert.cpp (transformArrayBigVectorToListVector):
	Fix memory leak shown by valgrind.

	* code/latte/cone.cpp, code/latte/cone.h (freeCone): New.
	(freeListCone): Use it here.

	* code/latte/Residue.cpp (Residue_Single_Cone):
	Use freeCone() to delete all data of the cone.

	* code/latte/PolyTree.cpp:
	Fix delete/delete[] problem shown by valgrind.

	* code/latte/barvinok/barvinok.cpp (barvinok_Single):
	Don't computeDetAndFacetsOfSimplicialCone in the
	IrrationalPrimalDecomposition case, where it is already computed.

2006-03-09  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Implement irrational primal decompositions.
	
	* code/latte/count.cpp: Change calls to decomposeCones_Single,
	decomposeCones.  New command-line options --irr, --maxdet=N.

	* code/latte/Irrational.cpp (irrationalizeCone): Implement.

	* code/latte/ExponentialSubst.cpp:
	(Exponential_Single_Cone_Parameters::ConsumeCone): No need to
	dualizeBack() anymore.

	* code/latte/ExponentialApprox.cpp:
	(Write_Exponential_Sample_Formula_Single_Cone_Parameters::ConsumeCone):
	No need to dualizeBack() anymore.

	* code/latte/Grobner.cpp, code/latte/ehrhart.cpp,
	code/latte/maximize.cpp, code/latte/minimize.cpp,
	code/latte/simple-main.cpp: Change calls to decomposeCones_Single,
	decomposeCones.

	* code/latte/barvinok/dec.cpp, code/latte/barvinok/dec.h
	(decomposeCones, decomposeCones_Single): Change interface.

	* code/latte/barvinok/barvinok.cpp (barvinokSingle):
	In IrrationalPrimalDecomposition, polarize back and
	irrationalize cones after triangulation.
	(barvinok_DFS): In DualDecomposition, polarize back cones after
	Barvinok decomposition; pass the polarized-back cone to ConsumeCone().

	* code/latte/barvinok/barvinok.h
	(BarvinokParameters::DecompositionType): New typedef.

	* code/latte/print.cpp (printConeToFile): Also print dual determinant.

	* code/latte/rational.cpp, code/latte/rational.h
	(createRationalVector): Create a vector of length numOfVars, not
	numOfVars+1.
	(addRationalVector, scaleRationalVectorToInteger,
	canonicalizeRationalVector): New.

2006-03-08  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Add infrastructure for irrational primal decompositions.
	
	* code/latte/barvinok/barvinok.h (BarvinokParameters): New slot
	"decomposition".

	* code/latte/barvinok/dec.h, code/latte/barvinok/dec.cpp
	(decomposeCones_Single): Change interface.

	* code/latte/barvinok/dec.cpp 
	(Standard_Single_Cone_Parameters::ConsumeCone): Don't dualize back
	in the primal case.
	* code/latte/ExponentialSubst.cpp
	(Exponential_Single_Cone_Parameters::ConsumeCone): Don't dualize
	back in the primal case.
	* code/latte/ExponentialApprox.cpp
	(Write_Exponential_Sample_Formula_Single_Cone_Parameters::ConsumeCone):
	Don't dualize back in the primal case.

	* code/latte/simple-main.cpp:
	New switch --irr, irrational decomposition.

	* code/latte/Irrational.cpp, code/latte/Irrational.h: New files.

2006-03-04  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Compute and store the data of the polar cones during the Barvinok
	decomposition.
	
	* code/latte/genFunction/piped.cpp
	(computePointsInParallelepiped): The stored determinant is now
	signed, so discriminate on its absolute value.

	* code/latte/barvinok/barvinok.cpp (barvinok_Single):
	Call computeDetAndFacetsOfSimplicialCone for the
	to-be-decomposed cone.
	(barvinokStep): Pass precomputed dual to ComputeOmega; call
	computeDetAndFacetsOfSimplicialCone for the subcones.

	* code/latte/dual.cpp, code/latte/dual.h (computeDetAndFacetsOfSimplicialCone):
	New.
	(dualizeBackCones): Use it here.

	* code/latte/barvinok/Cone.cpp, code/latte/barvinok/Cone.h (ComputeOmega):
	Change interface to make use of precomputed dual (-transpose(inv(B))).

	* code/latte/convert.cpp, code/latte/convert.h (createFacetMatrix):
	New.

2006-03-04  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	More code clean up.
	
	* code/latte/myheader.h (listVector, rationalVector, listCone):
	Moved to cone.h, rational.h

	* code/latte/rational.h (rationalVector): Moved here from myheader.h

	* code/latte/cone.h (listVector, listCone): Move here from myheader.h

	* code/latte/Makefile.am: Build experimental stuff only in
	"maintainer mode".

	* code/latte/Residue.cpp, code/latte/Residue.h (Residue_Single_Cone):
	Change interface slightly.

	* code/latte/ExponentialSubst.cpp, code/latte/ExponentialSubst.h:
	Use Generic_Vector_Single_Cone_Parameters to simplify the code.

	* code/latte/ResSingle.cpp: Rename the Random_Lambda slot to
	generic_vector.

	* code/latte/flags.h: Moved class definitions elsewhere,
	now only contains flags again.

	* code/latte/barvinok/barvinok.h (BarvinokParameters, Single_Cone_Parameters):
	Move here from flags.h

	* code/latte/barvinok/dec.cpp, code/latte/barvinok/dec.h (Collecting_Single_Cone_Parameters):
	Move here from flags.h
	(Standard_Single_Cone_Parameters): Move here from flags.h
	(NotGenericException): Move here from ExponentialSubst.h
	(guess_generic_vector): Move here from ExponentialSubst.h

	(Generic_Vector_Single_Cone_Parameters): New class.
	(barvinokDecomposition_List): New function.

2006-03-03  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/ExponentialSubst.cpp, code/latte/ExponentialSubst.h
	(computeExponentialResidueWeights): New, factored out from
	computeExponentialResidue_Single.

	* code/latte/dual.h: Add preprocessor magic.

	* code/latte/Grobner.cpp, code/latte/Makefile.am,
	code/latte/Residue.cpp, code/latte/Residue.h,
	code/latte/count.cpp, code/latte/ehrhart.cpp,
	code/latte/maximize.cpp, code/latte/minimize.cpp,
	code/latte/print.cpp, code/latte/print.h,
	code/latte/printsingle.cpp, code/latte/barvinok/dec.cpp,
	code/latte/simple-main.cpp: 
	Move residue calculations from print.cpp, print.h, printsingle.cpp to
	Residue.cpp, Residue.h.

2006-03-02  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/barvinok/barvinok.cpp (PtrCone): Removed.
	(barvinok): Removed.
	(barvinok_Single, barvinok_DFS): Restructured to get rid of use of
	PtrCone and Cone in favor of listCone.  Avoid some repeated determinant
	computations.  Avoid generating cones with determinant 0.

	* code/latte/barvinok/Cone.cpp, code/latte/barvinok/Cone.h (Cone):
	Removed.

	* code/latte/myheader.h (GIVETIME, listRationalVector, inputFile):
	Unused, removed.

	* code/latte/convert.cpp, code/latte/convert.h: "const" fix.

2006-03-02  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Version 1.2-mk-0.2
	
	* code/latte/dual.cpp (dualizeBackCones): Special case
	unimodular cones for speed. 

2006-03-02  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Fixes to get it running on Solaris.
	
	* configure.ac: Check for cddr+_gmp in preference of cddr+.
	Check for <sstream>.

	* code/latte/Makefile.am: Handle GMP_CFLAGS, GMP_LIBS.

	* m4/ntl-check.m4: Don't require that the NTL namespace is configured.

	* code/latte/ReadingFile.cpp (CheckRed): Change shell redirection
	operator so it works with Solaris /bin/sh.
	* code/latte/vertices/cdd.cpp (computeVertexConesFromVrep):
	Likewise.

2006-03-01  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/todd/todd-expansion.cpp (taylor_reciprocal): Fix
	warning shown by -Wall.

2006-03-01  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	This set of changes cleans up several interfaces (notably
	barvinok.h and ConeDecom.h are now simple and useful) and
	adds a memory-save mode for the exponential substitution.
	
	* simple-main.cpp: Use the "memory save" version of the polynomial
	and exponential substitutions.

	* ExponentialSubst.cpp, ExponentialSubst.h (Exponential_Single_Cone_Parameters):
	New class.
	(decomposeAndComputeExponentialResidue): New function.

	* flags.h (BarvinokParameters): New slots File_Name,
	Number_of_Variables.
	(Single_Cone_Parameters): Remove slot Cone.

	* barvinok/dec.cpp (decomposeCones, decomposeCones_Single): Change
	call to barvinokDecomposition_Single.

	* barvinok/dec.h, barvinok/dec.cpp (createConeDecMatrix): Move to
	convert.h.

	* barvinok/ConeDecom.cpp, barvinok/ConeDecom.h
	(barvinokDecomposition_Single): Simplify the interface, overload
	for listCone input data.

	(transformArrayBigVectorToListVector): Move to convert.h.

	* barvinok/barvinok.cpp, barvinok/barvinok.h (barvinok_DFS, barvinok_Single):
	Simplify/unify the interface.

	* ramon.cpp, ramon.h (freeListVector): New.

	* rational.cpp, rational.h (copyRationalVector): New.

	* dual.cpp (transformArrayBigVectorToListVector2, createConeDecMatrix2):
	Unused, removed.

	* cone.cpp, cone.h (freeListCone): New.

	* convert.cpp, convert.h: New files.

	* ResSingle.cpp: Fix references to members in
	Single_Cone_Parameters (ZZ instead of ZZ*).

	* barvinok/dec.cpp
	(Collecting_Single_Cone_Parameters::ConsumeCone): New, implement
	the traditional LattE behavior of collecting all decomposed cones.

	(decomposeCones): Use Collecting_Single_Cone_Parameters together with
	barvinokDecomposition_Single instead of barvinokDecomposition.

	Simplify some references to members in Single_Cone_Parameters (ZZ
	instead of ZZ*); the indirection is no longer necessary now that we
	don't convert between "Barvinok_Parameters" and
	"Single_Cone_Parameters" any more.

	* barvinok/barvinok.cpp (barvinok_DFS): Respect
	Parameters->max_determinant.

	* barvinok/ConeDecom.cpp, barvinok/ConeDecom.h
	(transformRudyListConeIntoRamonListCone): Removed.
	(barvinokDecomposition): Removed; we now use
	barvinokDecomposition_Single.

	* dual.cpp (transformRudyListConeIntoRamonListCone2): Unused, removed.

	* RudyResNTL.h, flags.h (Single_Cone_Parameters,
	Standard_Single_Cone_Parameters): Moved from RudyResNTL.h to
	flags.h (temporary location).
	* flags.h (Collecting_Single_Cone_Parameters): New class.

	* genFunction/piped.cpp: Fix last change.

2006-02-28  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/count.cpp, code/latte/simple-main.cpp:
	Avoid CheckEmpty call for CDD-style input format (does not work), warn.

	* code/latte/genFunction/piped.cpp, code/latte/genFunction/piped.h
	(computePointsInParallelepiped): New function.
	(computePointsInParallelepipeds): Use it here.

	* code/latte/barvinok/ConeDecom.cpp,
	code/latte/barvinok/ConeDecom.h (barvinokDecomposition_Single):
	Simplify arglist by moving Node_Controller into
	Single_Cone_Parameters.

	* code/latte/RudyResNTL.h, code/latte/ResSingle.cpp
	(ResidueFunction_Single_Cone): Simplify arglist by moving
	Node_Controller into Single_Cone_Parameters.

	* code/latte/RudyResNTL.h (Single_Cone_Parameters)
	(Standard_Single_Cone_Parameters): Use subclassing and virtual
	method ConsumeCone to refactor the code.

	* code/latte/barvinok/barvinok.cpp (barvinok_Single)
	(barvinok_DFS): Factor out residue calculation from DFS Barvinok.
	* code/latte/barvinok/dec.cpp (ConsumeCone): Residue calculation
	in DFS Barvinok is now performed by the virtual method
	Single_Cone_Parameters::ConsumeCone.

	* configure.ac: Bump version number to 1.2-mk-0.2.

2006-02-26  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/Makefile.am, code/latte/Array.h,
	code/latte/ResSingle.cpp, code/latte/RudyResNTL.cpp,
	code/latte/print.cpp, code/latte/printsingle.cpp: 
	Remove BigArray in favor of std::vector.

	* code/latte/ExponentialSubst.cpp, code/latte/Makefile.am,
	code/latte/todd/todd.cpp, code/latte/todd/todd.h,
	code/latte/todd/todd.maple, code/latte/todd/todd.sed,
	code/latte/todd/test-todd.cpp: Remove Maple Todd code.

	* code/latte/latte_gmp.cpp, code/latte/latte_gmp.h:
	New files, replacing gmp-interface.h and .cpp

	* code/latte/gmp-interface.cpp, code/latte/gmp-interface.h:
	Removed, replaced by latte_gmp.h and .cpp

	* code/latte/todd/todd-expansion.cpp, code/latte/todd/todd-expansion.h:
	New files, compute evaluation of Todd polynomial by Tayloring.

	* code/latte/CheckEmpty.cpp, code/latte/ConeInfo.cpp,
	code/latte/ConeInfo.h, code/latte/ExponentialSubst.cpp,
	code/latte/Grobner.cpp, code/latte/Grobner.h,
	code/latte/IntegralHull.cpp, code/latte/IntegralHull.h,
	code/latte/Makefile.am, code/latte/ReadingFile.cpp,
	code/latte/ReadingFile.h, code/latte/barvinok/Cone.h,
	code/latte/barvinok/dec.cpp, code/latte/barvinok/dec.h,
	code/latte/binarySearchIP.cpp, code/latte/binarySearchIP.h,
	code/latte/count.cpp, code/latte/dual.cpp, code/latte/ehrhart.cpp,
	code/latte/genFunction/maple.cpp, code/latte/genFunction/maple.h,
	code/latte/genFunction/piped.cpp, code/latte/genFunction/piped.h,
	code/latte/maximize.cpp, code/latte/minimize.cpp,
	code/latte/myheader.h, code/latte/preprocess.cpp,
	code/latte/preprocess.h, code/latte/print.cpp, code/latte/print.h,
	code/latte/ramon.cpp, code/latte/ramon.h, code/latte/rational.cpp,
	code/latte/rational.h, code/latte/simple-main.cpp,
	code/latte/todd/todd.cpp, code/latte/todd/todd.h,
	code/latte/todd/todd.maple, code/latte/vertices/cdd.cpp,
	code/latte/vertices/cdd.h: Replace vector by vec_ZZ to get rid of
	type clash with STL.

2006-02-24  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/ConeInfo.cpp, code/latte/IntegralHull.cpp,
	code/latte/RudyResNTL.cpp, code/latte/barvinok/Triangulation.cpp,
	code/latte/barvinok/dec.cpp, code/latte/print.cpp: Don't seed the
	random generator in the middle of the algorithms.

2006-02-23  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* ExponentialSubst.cpp, ExponentialSubst.h
	(computeExponentialResidue_Single, computeExponentialResidue): New
	functions.

	* ExponentialSubst.cpp, ExponentialSubst.h: New files.

	* gmp-interface.cpp, gmp-interface.h: New files.

	* simple-main.cpp: New command-line args, --exp, --maxdet.

	* flags.h (struct BarvinokParameters): New.

	* myheader.h: Add typedef ZZ Integer.

	* Makefile.am: Link against LiDIA and gmpxx.

	* code/latte/ReadingFile.cpp (Mail): Removed.

	* code/latte/ConeDeterminant.cpp, code/latte/ConeDeterminant.h,
	code/latte/KnapSackEst.cpp, code/latte/hnf.cpp,
	code/latte/preproc.cpp, code/latte/rand.cpp: Removed unused source
	files and test programs.

2006-02-22  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/dual.cpp (scaled_inverse): Fix to always get the
	right sign. 

	* code/latte/barvinok/barvinok.cpp (barvinok): New optional arg,
	"max_determinant"; allows stopping decomposition before
	unimodularity is reached.
	* code/latte/barvinok/dec.cpp (decomposeCones): Likewise.
	* code/latte/barvinok/ConeDecom.cpp (barvinokDecomposition): 
	Likewise.

	* code/latte/dual.cpp (scaled_inverse): New.
	(dualizeBackCones): Handle the non-unimodular case.

	* code/latte/barvinok/barvinok.cpp (barvinok): Store the
	determinants in the result list.
	(barvinok_DFS): Likewise.
	(transformRudyListConeIntoRamonListCone_Single): Copy the
	determinant. 

	* code/latte/barvinok/ConeDecom.cpp
	(transformRudyListConeIntoRamonListCone): Copy the determinant.

	* code/latte/myheader.h (PtrCone): New slot "determinant".
	(listCone): New slot "determinant"; removed unused slot.

	* code/latte/cone.cpp (createListCone): Initialize it here to 0.

	* code/latte/genFunction/piped.cpp (computePointsInParallelepipeds): 
	New function, factored out from all the main programs.
	
	* latte.el: New file, Emacs customizations for work on LattE.

	* code/latte/Makefile.am: Build test program simple-count from
	simple-main.cpp; this is where the new experiments will take
	place.

	* code/latte/todd/gmp_pow.cpp, code/latte/todd/gmp_pow.h,
	code/latte/todd/test-todd.cpp, code/latte/todd/todd.h,
	code/latte/todd/todd.maple, code/latte/todd/todd.sed:  New files.

2006-02-21  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* acinclude.m4, configure.ac: Check for LiDIA.

	* m4/gmp-check.m4, m4/Makefile.am, m4/latte-misc.m4,
	m4/lidia-check.m4, m4/ntl-check.m4: More autoconf scripts stolen
	from LinBox.

2006-02-20  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* m4/lidia-check.m4: autoconf macro checking for LiDIA, stolen
	from LinBox

	* configure.ac: Signal error/warning when CDD or LRS binaries are
	not found at configure time.

2006-02-19  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/banner.cpp, code/latte/banner.h,
	code/latte/Makefile.am, code/latte/count.cpp,
	code/latte/ehrhart.cpp, code/latte/maximize.cpp,
	code/latte/minimize.cpp, configure.ac: Bump version number.  Show
	actual version in banners.

	* code/latte/IntegralHull.cpp, code/latte/tmpIP.cpp,
	code/latte/vertices/cdd.cpp, configure.ac: Check for LRS binary in
	configure, use this path rather than "./lrs1".

2006-02-18  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Autoconfiscate.
	Minor fixes to get it compiled with modern C++ compilers.

2006-02-15  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/simple-main.cpp: Simplified version of the main program
	for use in the approximate counting project.

2006-02-14  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Imported LattE 1.2

2005-01-26  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/barvinok/barvinok.cpp: Avoid some redundant
	determinant computations.

2005-01-21  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	* code/latte/PolyTree.cpp: Remove some g++-isms.

2005-01-20  Matthias Koeppe  <mkoeppe@mail.math.uni-magdeburg.de>

	Renamed barvinok/cone.cpp and cone.h to Cone.cpp and Cone.h to
	remove filename clash.

	First adjustments to make it compile.

	Imported LattE release v 1.1
