[29c2e4]: ChangeLog Maximize Restore History

Download this file

ChangeLog    4857 lines (3266 with data), 197.3 kB

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out,
	test_runtime/test.configure.eig-bindings.out,
	test_runtime/test.configure.out,
	test_runtime/test.configure.qd-eig-bindings-map-map.out,
	test_runtime/test.configure.qd-eig-bindings-map-stdunordered-random
	-std.out, test_runtime/test.configure.qd-eig-bindings.out,
	test_runtime/test.configure.qd-map-map.out,
	test_runtime/test.configure.qd-map-stdunordered-random-std.out,
	test_runtime/test.configure.qd.out, test_runtime/transforms-8.out:
	Update test results for GluCat 0.7.4.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/sqrt_log_demo.out, pyclical/demos/sqrt_log_demo.py:
	In PyClical sqrt_log_demo, do not print the value of the random
	multivector x.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/clifford_demo.py: Remove plotting_demo_mayavi from
	Clifford demo. It does not work properly from IPython Notebook.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test07/peg07.h: Use scalar_t with scalar constants.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test11/peg11.h: Use tuning parameter function_precision but not
	fast_precision.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/plotting_demo_dialog.py,
	pyclical/demos/plotting_demo_mayavi.py: Improve the PyClical
	plotting demos that use Mayavi.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* INSTALL, NEWS, README, TODO: Update INSTALL, NEWS, README and TODO
	for GluCat 0.7.4.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* AUTHORS, Doxyfile, glucat.lsm, pyclical/PyClical.pyx: Update
	GluCat and PyClical versions to 0.7.4.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/PyClical.h: Do not use tuning parameter fast_precision.
	Use precision_promoted for function_precision for better function
	accuracy. Ignore some clang++ warnings caused by Cython.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/scalar.h, glucat/scalar_imp.h: Use static_cast<>.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/long_double.h, glucat/qd.h: Update copyright notice.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/framed_multi.h, glucat/framed_multi_imp.h,
	glucat/matrix_multi.h, glucat/matrix_multi_imp.h: Consistently
	define and use tuning parameter function_precision but not
	fast_precision.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/global.h: In glucat/global.h, remove tuning parameter
	fast_precision. It did not work as anticipated.

2014-12-24  Paul Leopardi <paul.leopardi@anu.edu.au>

	* admin/cvs.sh, admin/detect-autoconf.sh, admin/ltmain.sh: Make
	admin shell files executable.

2014-05-07  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test11/peg11.h: Do not test cases where the result is known to be
	undefined or NaN,

2014-05-07  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/matrix_multi_imp.h: In operator+=(term), do not cast the
	basis element to matrix_t; in constructors, don't cast crd to
	Scalar_T when crd is already of this type.

2014-05-07  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/scalar_imp.h: Adjust spacing in subtractions.

2014-05-07  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/long_double.h, glucat/qd.h, glucat/scalar_imp.h: Add
	conversions from long double to dd_real and qd_real; promote long
	double to dd_real when _GLUCAT_USE_QD is defined.

2014-05-07  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/matrix_multi.h: Revert basis_matrix_t back to using
	Scalar_T rather than int: this is to speed up matrix_multi
	construction from framed_multi.

2014-05-07  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/matrix_imp.h: Use _GLUCAT_GCC_IGNORE_UNUSED_LOCAL_TYPEDEFS
	with _GLUCAT_USE_BINDINGS.

2014-05-07  Paul Leopardi <paul.leopardi@anu.edu.au>

	* configure.in, configure.in.in: Add GLUCAT_MSG_WARN_DEPRECATED for
	deprecated options; update some AC_* macros; improve quoting in
	messages.

2014-05-02  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test_runtime/test.configure.qd-map-stdunordered-random-std.out:
	Changed test results corresponding to the changes to matrix_multi<>
	constructors.

2014-05-02  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/matrix_multi_imp.h: Simplify constructors to remove
	unnecessary operations and to prevent clang++ warnings about unused
	variables.

2014-04-28  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test_runtime/test.configure.eig-bindings.out,
	test_runtime/test.configure.out,
	test_runtime/test.configure.qd-eig-bindings-map-map.out,
	test_runtime/test.configure.qd-eig-bindings-map-stdunordered-random
	-std.out, test_runtime/test.configure.qd-eig-bindings.out,
	test_runtime/test.configure.qd-map-map.out,
	test_runtime/test.configure.qd-map-stdunordered-random-std.out,
	test_runtime/test.configure.qd.out: Test results for improved scalar
	demotion and promotion.

2014-04-28  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/long_double.h, glucat/qd.h, glucat/scalar_imp.h: Improve
	scalar demotion and promotion by using long double, dd_real and
	qd_real as appropriate.

2014-04-27  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test_runtime/test.configure.eig-bindings.out,
	test_runtime/test.configure.out,
	test_runtime/test.configure.qd-eig-bindings-map-map.out,
	test_runtime/test.configure.qd-eig-bindings-map-stdunordered-random
	-std.out, test_runtime/test.configure.qd-eig-bindings.out,
	test_runtime/test.configure.qd-map-map.out,
	test_runtime/test.configure.qd-map-stdunordered-random-std.out,
	test_runtime/test.configure.qd.out: Test scalar promote / demote, in
	particular test11 uses promoted sqrt, log and exp functions.

2014-04-27  Paul Leopardi <paul.leopardi@anu.edu.au>

	* gfft_test/gfft_test.h, glucat/clifford_algebra_imp.h,
	glucat/framed_multi.h, glucat/framed_multi_imp.h, glucat/global.h,
	glucat/glucat_imp.h, glucat/long_double.h, glucat/matrix_multi.h,
	glucat/matrix_multi_imp.h, glucat/qd.h, glucat/scalar.h,
	glucat/scalar_imp.h, pyclical/PyClical.h, pyclical/PyClical.pyx,
	test11/peg11.cpp, test11/peg11.h, transforms/transforms.h: Implement
	scalar promotion and demotion, and use it in GFFT and in sqrt, log
	and exp functions.

2014-04-27  Paul Leopardi <paul.leopardi@anu.edu.au>

	* INSTALL: Correct test output file names.

2014-04-17  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/build_pyclical_notebooks.py,
	pyclical/demos/clifford_demo.py: New demo file based on presentation
	given at Aston University in 2014, hosted by John Fletcher.

2014-04-02  Paul Leopardi <paul.leopardi@anu.edu.au>

	* ChangeLog: Bring up to date.

2014-04-02  Paul Leopardi <paul.leopardi@anu.edu.au>

	* AUTHORS, Doxyfile, INSTALL, NEWS, README, TODO, glucat.lsm,
	pyclical/PyClical.pyx: Update to version 0.7.3.

2014-04-02  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/pyclical_tutorial_0_3_functions.py,
	pyclical/demos/pyclical_tutorial_0_4_transcendental.py,
	pyclical/demos/pyclical_tutorial_1_2_space.py,
	pyclical/demos/pyclical_tutorial_1_3_lorentz.py,
	pyclical/demos/pyclical_tutorial_1_4_fourth.py,
	pyclical/demos/pyclical_tutorial_1_5_conformal.py: Add missing "from
	PyClical import *" statement to tutorials.

2014-03-31  Paul Leopardi <paul.leopardi@anu.edu.au>

	* ChangeLog: Bring up to date.

2014-03-31  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat.lsm: Bring up to date.

2014-03-31  Paul Leopardi <paul.leopardi@anu.edu.au>

	* NEWS: Fix typo; bring up to date.

2014-03-31  Paul Leopardi <paul.leopardi@anu.edu.au>

	* INSTALL: Improve detailed installation instuctions; describe the 8
	new test output files.

2014-03-30  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test_runtime/test.out: Sample test output file has been replaced
	by 8 files corresponding to different configurations.

2014-03-30  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/test.out, pyclical/test.py: Add test script and test
	output to help automate testing of PyClical.

2014-03-29  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test_runtime/test.configure.eig-bindings.out,
	test_runtime/test.configure.out,
	test_runtime/test.configure.qd-eig-bindings-map-map.out,
	test_runtime/test.configure.qd-eig-bindings-map-stdunordered-random
	-std.out, test_runtime/test.configure.qd-eig-bindings.out,
	test_runtime/test.configure.qd-map-map.out,
	test_runtime/test.configure.qd-map-stdunordered-random-std.out,
	test_runtime/test.configure.qd.out: Add test output corresponding to
	various configure options.

2014-03-29  Paul Leopardi <paul.leopardi@anu.edu.au>

	* admin/config.guess, admin/config.sub, admin/depcomp,
	admin/install-sh, admin/missing, admin/mkinstalldirs, admin/ylwrap:
	Bring up to date with respect to automake 1.11.6.

2014-03-27  Paul Leopardi <paul.leopardi@anu.edu.au>

	* acinclude.m4, admin/acinclude.m4.in, admin/libtool.m4.in: Use []
	quotes for DEFUN names to stop autoreconf warnings on this.  Comment
	out # serial n everywhere, but add # serial 1 at the start of
	acinclude.m4.in: there should only be one # serial in a file.

2014-03-27  Paul Leopardi <paul.leopardi@anu.edu.au>

	* configure.in, configure.in.in: Move basename_cc and basename_cxx
	definitions to a point where $CC and $CXX should always be defined.

2014-03-26  Paul Leopardi <paul.leopardi@anu.edu.au>

	* configure.in, configure.in.in: Use basename_cc, basename_cxx; make
	test for clang++ version more robust.

2014-03-26  Paul Leopardi <paul.leopardi@anu.edu.au>

	* TODO: Bring up to date for GluCat 0.7.2.

2014-03-26  Paul Leopardi <paul.leopardi@anu.edu.au>

	* Doxyfile: Exclude pyclical/PyClical.cpp so that doxygen can be
	used after make.

2014-03-16  Paul Leopardi <paul.leopardi@anu.edu.au>

	* ChangeLog: Bring up to date with latest changes for version 0.7.2.

2014-03-16  Paul Leopardi <paul.leopardi@anu.edu.au>

	* AUTHORS: Include a paper by Yorick Hardy, as well as work by Paul
	Leopardi.

2014-03-16  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/plotting_demo.py: Set correct permissions.

2014-03-14  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/plotting_demo_mayavi.py: Enhanced plotting demo for
	users with Mayavi and wxPython.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/transforms-8.out: Update
	test results for version 0.7.2.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* INSTALL, NEWS, README: Update to describe changes to version
	0.7.2.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat.lsm: Update entered date for version 0.7.2.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/PyClical.pyx: Update to version 0.7.2.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* admin/cvs.sh: Ensure that autoconf and autoreconf run cleanly.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/PyClical.h: Build cleanly with LLVM/Clang.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* configure.in.end: Delete unused file.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/setup.py, pyclical/setup_ext.py,
	pyclical/setup_nocython.py: Build PyClical cleanly and automatically
	whether or not Cython is installed.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* configure.in, configure.in.in: Build cleanly with LLVM/Clang;
	build PyClical cleanly and automatically whether or not Cython is
	installed.

2014-03-12  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/global.h, glucat/matrix_multi_imp.h, pyclical/Makefile.am:
	Build cleanly with LLVM/Clang; build PyClical cleanly and
	automatically whether or not Cython is installed.

2014-02-26  Paul Leopardi <paul.leopardi@anu.edu.au>

	* ChangeLog: Update to GluCat 0.7.2.

2014-02-26  Paul Leopardi <paul.leopardi@anu.edu.au>

	* AUTHORS: Add authors for GluCat 0.7.2; tidy up.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* ChangeLog: Update to GluCat 0.7.2.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/test.out,
	test_runtime/transforms-8.out: Update test output for GluCat 0.7.2.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/pyclical_demo.out,
	pyclical/demos/sqrt_log_demo.out: Update PyClical demo output.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* configure.in, configure.in.in: Bring up to date for GluCat 0.7.2.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* AUTHORS, Doxyfile, INSTALL, NEWS, README, TODO, glucat.lsm: Bring
	up to date for GluCat 0.7.2.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/global.h: Decrease DEFAULT_Inv_Fast_Dim_Threshold because
	inverse GFFT is now faster.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/portability.h: Selectively define
	_GLUCAT_GCC_IGNORE_UNUSED_LOCAL_TYPEDEFS, depending on g++ 4.8.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/matrix_multi_imp.h: Do not trigger the "unused local
	typedefs" warning in g++ 4.8.  Use function signed_perm_nork()
	instead of nork(), to speed up inverse GFFT.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/matrix_imp.h: Do not trigger the "unused local typedefs"
	warning in g++ 4.8.  Add function signed_perm_nork(), to speed up
	inverse GFFT.  Modify nork() to use the definition of van Loan and
	Pitsianis, 1993.  Adjust call to lapack::gees to match changes to
	Boost Bindings.

2014-02-25  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/matrix.h: Add function signed_perm_nork(), to speed up
	inverse GFFT.

2014-02-23  Paul Leopardi <paul.leopardi@anu.edu.au>

	* gfft_test/gfft_test.h, glucat/framed_multi_imp.h,
	glucat/generation_imp.h, products/products.h, squaring/squaring.h,
	test00/peg00.h, test11/peg11.h: Do not trigger the "unused local
	typedefs" warning caused by the addition of -Wunused-local-typedefs
	to -Wall in g++ 4.8.

2014-02-19  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/pyclical_demo.out,
	pyclical/demos/sqrt_log_demo.out: Ensure that sample demo output
	matches demos.

2014-02-19  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/build_pyclical_notebooks.py,
	pyclical/demos/pyclical_demo.py,
	pyclical/demos/pyclical_notebook_utils.py,
	pyclical/demos/pyclical_tutorial_0_0_notation.py,
	pyclical/demos/pyclical_tutorial_0_1_index_sets.py,
	pyclical/demos/pyclical_tutorial_0_2_operations.py,
	pyclical/demos/pyclical_tutorial_0_3_functions.py,
	pyclical/demos/pyclical_tutorial_0_4_transcendental.py,
	pyclical/demos/pyclical_tutorial_1_0_plane.py,
	pyclical/demos/pyclical_tutorial_1_1_complex.py,
	pyclical/demos/pyclical_tutorial_1_2_space.py,
	pyclical/demos/pyclical_tutorial_1_3_lorentz.py,
	pyclical/demos/pyclical_tutorial_1_4_fourth.py,
	pyclical/demos/pyclical_tutorial_1_5_conformal.py,
	pyclical/demos/pyclical_tutorial_2_0_wedge_product.py,
	pyclical/demos/pyclical_tutorial_utils.py,
	pyclical/demos/pyclical_tutorials.py,
	pyclical/demos/sqrt_log_demo.py: All tutorials and most demos now
	have IPython Notebook equivalents.

2014-02-19  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/demos/plotting_demo.py: Tweak plotting parameters and
	colours to give more of a 3D effect.

2014-02-10  Paul Leopardi <paul.leopardi@anu.edu.au>

	* : commit d0ec70a3e32a2d1c64f221ca743e679ae295f8c7 Author: Paul
	Leopardi <paul.leopardi@anu.edu.au> Date:   Tue Jul 30 20:31:13 2013
	+1000

2013-07-30  Paul Leopardi <paul.leopardi@anu.edu.au>

	* configure.in: Fix autoreconf warning message about "remake rules
	might be subtly broken", caused by "./" before "Makefile".

2013-07-30  Paul Leopardi <paul.leopardi@anu.edu.au>

	* INSTALL, glucat/framed_multi.h, glucat/framed_multi_imp.h: Make
	Boost pool allocator optional via _GLUCAT_USE_BOOST_POOL_ALLOC.
	Patch for openSUSE Build Service using Boost 1.53.0.

2013-07-30  Paul Leopardi <paul.leopardi@anu.edu.au>

	* configure.in, configure.in.in: Use test with = rather than test
	with == to compare strings. Patch from Patrick Welche.

2013-07-30  Paul Leopardi <paul.leopardi@anu.edu.au>

	* pyclical/Makefile.am: Use the name for the python executable as
	discovered by ./configure. Patch from Patrick Welche.

2013-07-30  Paul Leopardi <paul.leopardi@anu.edu.au>

	* glucat/global.h: Include <climits> so that g++ sees that ULONG_MAX
	is defined. Patch from Patrick Welche.

2012-11-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.7.1.

2012-11-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS, TODO: Update to version 0.7.1.

2012-11-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.7.1.

2012-11-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/transforms-8.out: Test
	results for version 0.7.1.

2012-11-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: Update list of successful builds to include a case with
	"./configure ... --with-map=map ..." Update to version 0.7.1.

2012-11-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS, Doxyfile, README, configure.in, configure.in.in,
	glucat.lsm: Update to version 0.7.1.

2012-11-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4: Generated file.  Update to version 0.7.1.

2012-11-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Change initialization of 'multivector_t
	result' so that multivector_t based on std::map compiles and works
	correctly.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to version 0.7.0.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/random.h: Include header dependencies.  Use optional preprocessor symbols to control inclusions in this
	file.  Use "#if defined()" instead of "#ifdef".  Cosmetic: Make brackets adhere to coding conventions

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/qd.h: Include header dependencies.  Use optional preprocessor symbols to control inclusions in this
	file.  Use "#if defined()" instead of "#ifdef".

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Include header dependencies.  Cosmetic: Indent preprocessor defines consistently.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Include header dependencies.  Use "#if defined()" instead of "#ifdef".  Rewrite basis_element() so that the basis_cache uses pointers to
	matrices instead of matrices.  Make the use of the basis_cache
	depend on the actual frame count().  Overhaul the implementation of sqrt() and log() so that the Pade'
	approximation depends on the numeric precision.  Implement exp(): exponential of multivector, using clifford_exp().  Cosmetic: Use traits_t consistently.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Include header dependencies.  Use optional preprocessor symbols to control inclusions in this
	file.  Use "#if defined()" instead of "#ifdef".  Define namepace ublas as boost::numeric::ublas in this file.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_imp.h: Include header dependencies.  Use optional preprocessor symbols to control inclusions in this
	file.  Use "#if defined()" instead of "#ifdef".  Change the definitions of epsilon and norm_tol to improve the
	detection of real negative and imaginary eigenvalues.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/long_double.h: Use "#if defined()" instead of "#ifdef".

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h, glucat/glucat_imp.h: Include only GluCat headers
	as dependencies.  Let the GluCat header files include their own dependencies and deal
	with their own relevant preprocessor symbols.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Include header dependencies.  Tweak tuning policy default constants.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Include header dependencies.  Use optional preprocessor symbols to control inclusions in this
	file.  Use "#if defined()" instead of "#ifdef".  If a hash_map or an unordered_map is being used, as indicated by the
	symbol _GLUCAT_MAP_IS_HASH, define the macros _GLUCAT_HASH_N() and
	_GLUCAT_HASH_SIZE_T().  Use _GLUCAT_HASH_N() to construct framed_multi_t from map_t with an
	assumed or inferred minimum number of initial buckets..  In the constructor from matrix_multi_t, and in operators *, ^, &,
	and %  use _GLUCAT_HASH_SIZE_T() to construct framed_multi_t from
	map_t with an inferred minimum number of initial buckets.  Use clifford_exp(). to implement exp(): exponential of multivector.  Define a new member function nbr_terms(): number of terms.  Cosmetic: Use traits_t consistently.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: Include header dependencies.  Use optional preprocessor symbols to control inclusions in this
	file.  Use "#if defined()" instead of "#ifdef".  Declare exp(): exponential of multivector, and make it a friend of
	framed_multi<>.  Change hash() to index_set_hash().  Define hash_size_t.  Declare a private constructor that uses a hash size.  This is to try
	to optimize the allocation for the hash and unordered_map
	implementations of framed_multi<>.  Declare a new member function nbr_terms(): number of terms.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Include header dependencies.  Define clifford_exp(): exponential of multivector, with
	implementation moved from exp() in matrix_multi_imp.h to this
	function, and optimized for varying numeric precision given by
	limits_t::digits.  In acosh() and asinh() distinguish two cases to give a more accurate
	result.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h: Include header dependencies.  Declare clifford_exp(): exponential of multivector.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/errors.h, glucat/generation.h, glucat/generation_imp.h,
	glucat/index_set.h, glucat/index_set_imp.h, glucat/matrix.h,
	glucat/scalar.h: Include header dependencies.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* products/tuning.h, squaring/tuning.h: Tweak tuning policy
	constants.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/peg11.h: Tweak tolerances and set the value of "relative"
	differently, to give a better idea of when the algorithms really
	lose precision.  Output norm of difference to low precision, but output A and B to
	high precision when a test fails.  Use complexifier() instead of elliptic().  Cosmetic: use Multivector_T instead of m_.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/peg11.cpp: Use "#if defined()" instead of "#ifdef".

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyClical.pyx: Update to version 0.7.0.  Add a reference to Doran and Lasenby 2003.  Use integers and sets rather than strings to construct index_sets.  Define __contains__ and __iter__ for index_set and clifford (for
	clifford these raise TypeError.) Fix some doctests for '**' and pow.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyClical.h: Use set notation instead of string notation
	for repr of index_set.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/test.out,
	test_runtime/transforms-8.out: Test results for version 0.7.0.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, NEWS, TODO: Update to version 0.7.0.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, README: Complete rewrite.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.lsm: Use SourceForge email address.  Update to version 0.7.0.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Make "--enable-debug=no
	--enable-pyclical" the default.  Check for $GXX before adding "-std=c++11" to CFLAGS.  Check for <qd/qd_real.h> instead of <qd/qd_config.h>.  Update to version 0.7.0.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS: Use SourceForge email address.  Move references from README to here.  Update to version 0.7.0.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/demos/pyclical_tutorial_utils.py: Move to
	pyclical/demos/.  Move is_near() after print_fill().  Remove exercise_str.  Use a sandbox in input_exec() and check_exec() so that incorrect
	execution does not affect the state. Copy the current state to the
	sandbox before the exec.  Allow check_exec() and check_eval() to pass on KeyboardInterrupt.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/demos/pyclical_tutorials.py: Move to pyclical/demos/.  Rename from pyclical_tutorial.py to pyclical_tutorials.py.  Add new tutorials.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/demos/pyclical_tutorial_1_0_plane.py,
	pyclical/demos/pyclical_tutorial_1_1_complex.py,
	pyclical/demos/pyclical_tutorial_1_2_space.py,
	pyclical/demos/pyclical_tutorial_1_3_lorentz.py,
	pyclical/demos/pyclical_tutorial_1_4_fourth.py,
	pyclical/demos/pyclical_tutorial_1_5_conformal.py: New tutorials.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/demos/pyclical_tutorial_0_2_operations.py,
	pyclical/demos/pyclical_tutorial_0_3_functions.py,
	pyclical/demos/pyclical_tutorial_0_4_transcendental.py: Move to
	pyclical/demos/.  Use the CC-by-SA licence for tutorials.  Call the tutorial() function within "try ... except" so that CRTL-c
	can interrupt the tutorial.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/demos/pyclical_tutorial_0_1_index_sets.py: Move to
	pyclical/demos/.  Use the CC-by-SA licence for tutorials.  Add descriptions for set membership and iteration.  Call the tutorial() function within "try ... except" so that CRTL-c
	can interrupt the tutorial.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/demos/pyclical_tutorial_0_0_notation.py: Move to
	pyclical/demos/.  Use the CC-by-SA licence for tutorials.  Change the description of subscripting [] notation.  Call the tutorial() function within "try ... except" so that CRTL-c
	can interrupt the tutorial.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/demos/pyclical_demo.py, pyclical/demos/sqrt_log_demo.py:
	Move to pyclical/demos/.  Define demo() function and use it within "try ... except" so that
	CRTL-c can interrupt the demo.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/demos/pyclical_demo.out,
	pyclical/demos/sqrt_log_demo.out: Move to pyclical/demos/.  Demo output.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/demos/plotting_demo.py: Move to pyclical/demos/.  New parameters: figheight and figwidth, defaulting to 12 and 15
	respectively.  Change plotting_demo() to demo().  Cosmetic: use punctuation consistently in comments and output.

2012-10-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/plotting_demo.py, pyclical/pyclical_demo.out,
	pyclical/pyclical_demo.py, pyclical/pyclical_tutorial.py,
	pyclical/pyclical_tutorial_0_0_notation.py,
	pyclical/pyclical_tutorial_0_1_index_sets.py,
	pyclical/pyclical_tutorial_0_2_operations.py,
	pyclical/pyclical_tutorial_0_3_functions.py,
	pyclical/pyclical_tutorial_0_4_transcendental.py,
	pyclical/pyclical_tutorial_utils.py, pyclical/sqrt_log_demo.out,
	pyclical/sqrt_log_demo.py: Move to pyclical/demos.

2012-07-15  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/pyclical_tutorial.py,
	pyclical/pyclical_tutorial_0_0_notation.py,
	pyclical/pyclical_tutorial_0_1_index_sets.py,
	pyclical/pyclical_tutorial_0_2_operations.py,
	pyclical/pyclical_tutorial_0_3_functions.py,
	pyclical/pyclical_tutorial_0_4_transcendental.py: First set of
	interactive tutorials for PyClical.  Run separately or via
	pyclical_tutorial.py.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/sqrt_log_demo.out, pyclical/sqrt_log_demo.py: Use demo
	utilities from pyclical_tutorial_utils.py, e.g. print_exec(),
	print_fill().

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyClical.pyx: Interim version number "0.6.0 + cvs".  Use
	ixt rather than ist to name parameters of class index_set.  New
	 member function reframe(self, ixt): Put self into a larger frame,
	defined by index set ixt.  Ensure that __richcmp__ for clifford
	raises TypeError for unimplemented comparisons.  Test member
	function inv() properly.  Member functions __pow__() and pow(), and
	ordinary function pow() can now take clifford powers as well as
	integer powers.  Member function vector_part() now has optional
	parameter frm.  The name cl is now an abbreviation for clifford.
	The name ist is now an abbreviation for index_set.  The name tau is
	an abbreviation for pi*2.  Cosmetic changes: o Tidy up some expressions in doctests.  o Fix
	typos in comments.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyClical.h: Function agc3() no longer reframes its output
	into {1,2,3}.  Functions cga3() and cga3std() no longer reframe
	their output into {-1,1,2,3,4}.  (PyClical now includes an explicit
	reframe() member function.)

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/pyclical_demo.out, pyclical/pyclical_demo.py: Use demo
	utilities from pyclical_tutorial_utils.py, e.g. print_exec(),
	print_fill().  Reformat remarks: remove double spaces between words,
	and end sentences with full stops.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/plotting_demo.py: Overhaul plotting demo: Split demo
	function into demo() and draw_orbit().  Use two rotors, randomly
	choosing between them.  Exponentiate each of two bivectors only
	once, in demo().  In draw_orbit(), use successive multiplication.
	Improve point plotting and colouring.  Remove parameter d: demo uses
	d=4 exclusively.  Use appropriate default values.  Fix typos.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/glucat.pxd: Include constructor Clifford (Clifford Clf,
	IndexSet ist) except+.  New member function vector[scalar_t]
	vector_part(IndexSet frm) except+.  Functions agc3(), cga3() and
	cga3std() no longer throw exceptions.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/pyclical_tutorial_utils.py: New file. Utilities for
	tutorials and demos.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: For Cygwin: check for HAVE_BITS_WORDSIZE_H
	and include bits/wordsize.h.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat_imp.h, glucat/random.h: If flag
	_GLUCAT_USE_STD_RANDOM is set, use C++11 std random number
	generation.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h, glucat/glucat.h: New type of map:
	_GLUCAT_USE_STD_UNORDERED_MAP for C++11 std::unordered_map.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h, glucat/framed_multi_imp.h,
	glucat/matrix_multi_imp.h: New member function  vector_part(frm,
	 prechecked): vector part of multivector, as a vector_t with respect
	to frm.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.h.in: Generated file.

2012-07-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: New type of map: stdunordered for
	 C++11 std::unordered_map: sets _GLUCAT_USE_STD_UNORDERED_MAP
	Previous map type unordered is now tr1unordered for
	std::tr1::unordered_map.  New random generator type std for C++11
	 std random number generation: sets _GLUCAT_USE_STD_RANDOM.  If
	either stdunordered or std random is chosen successfully, this sets
	glucat_cxx_std="cxx11" which sets -std=c++11 compiler option.  For
	Cygwin: check for bits/wordsize.h and set HAVE_BITS_WORDSIZE_H.

2012-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/sqrt_log_demo.out, pyclical/sqrt_log_demo.py: Split the
	expression for atanh2 over multiple input lines (not visible in
	output).  Use the pseudoscalar i = e({-1,1,2,3,4}) to obtain the log
	of -R or R.

2012-05-26  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/sqrt_log_demo.out, pyclical/sqrt_log_demo.py: Overhaul.
	Use print_exec to execute lines of Python code.  Compare PyClical
	sqrt and log with the sqrt and log of Dorst and Valkenburg in the
	case of rotors in Conformal Geometric Algebra.

2012-05-26  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/pyclical_demo.out, pyclical/pyclical_demo.py: Overhaul.
	Use print_exec to execute lines of Python code.  Use e(int) rather
	than special names for generators.  Use generators in canonical
	order and use e(set) where this makes sense.

2012-05-23  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/plotting_demo.py: Overhaul to make more useful.  New function draw_orbit(r, nbr_points, segment_len, azimuth,
	rot_angle, jitter) allows the user to explore the use of their own
	rotor r and see what happens when r is a multivector other than a
	rotor.  Share common default values between draw_orbit and demo functions.
	Give these defaults more useful values.  Draw the origin as a white point to work around a bug in Matplotlib.  Ensure that the initial point is on the unit sphere in Euclidean
	space.  Now that agc3 has been fixed to ensure that the result is in
	ist({1,2,3}), use agc3(u).vector_part().  Use the norms of each point in p to make the points of the scatter
	plot more colourful without oversaturating them.  The variable
	arena_width and replotting of the points are no longer used.  For each plot, the demo function now just generates a random
	bivector in istpq(d,0), exponentiates it to obtain the rotor and and
	then simply calls draw_orbit.  Cosmetic: Clean up comment header.

2012-05-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/glucat.pxd: The last change in PyClical.h to namespace
	cga3 functions cga3(), cga3std() and agc3() mean that these
	functions can throw exceptions.  Ensure that Cython know this.

2012-05-16  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/plotting_demo.py: This script is now more usable as a
	demo. Many changes have been made, including: o New arguments: - azimuth : Angle about a vertical axis used to define the
	viewpoint.  - jitter : Angle in degrees to use for each step in the rotation.  o More sensible default values for arguments.  o Do not use the twisted adjoint action |=, but instead calculate
	ir, the inverse of the rotor r once, and use the adjoint action u =
	r * u * ir. This works because r must be even, since it is th
	exponential of a bivector.  o Do not plot lines. The code is now fast enough that this is no
	longer useful, since the hull of the scattered points can now more
	easily be seen.  o Do not use plt.show(). This caused the plots to corrupt when the
	next figure was started.  o Ensure the points lie within the arena by doubling the arena width
	and  recolouring existing points when necessary.

2012-05-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyClical.h: In namespace cga3, ensure that cga3(),
	cga3std() return a multivector within frame {-1,1,2,3,4}, and agc3()
	returns a multivector within frame {1,2,3}.

2012-05-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/plotting_demo.py: Fix bug in plotting demo due to use of
	vector_part() on result of cga3().  Extract individual coordinates
	instead, until cga3() is fixed to return a vector with frame
	ist("{1,2,3}").

2012-05-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.6.0.

2012-05-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: Specify versions of Boost numeric bindings, Python and
	Cython used for testing.

2012-05-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/squaring.h: In mult_test(), do not define outer_frame,
	because it is not used.

2012-05-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS, INSTALL, NEWS, README, TODO: Update for version 0.6.0.

2012-05-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyClical.pyx: Set __version__ to "0.6.0".

2012-05-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Remove spurious static property from
	definition of sqrt().  This fixes problem w reported by John
	Fletcher in email of  2012-04-07.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.h.in, configure.in, configure.in.in: Use
	GLUCAT_CHECK_HEADERS instead of AC_CHECK_HEADERS for non-system
	headers.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyCliCal.h, pyclical/PyCliCal.pyx: Change module name
	from PyCliCal to PyClical.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/pyclical_demo.out: Output from pyclical_demo.py.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.h.in: Auto-generated from configure.in.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.lsm: Version 0.6.0.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile: Version 0.6.0.  Document ./pyclical and ./test as well
	as ./glucat.  Treat *.pxd and *.pyx as Python source -- really
	Cython, but Doyxgen doesn't know about Cython.  Change output
	directory from ./glucat-api to ./doc/api.  Change tabbing to 2
	spaces.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.end: Conditionally set CXXFLAGS using
	$glucat_extra_cxxflags_pyclical before AC_CONFIG_FILES([
	pyclical/Makefile ]).  No longer call KDE_CREATE_SUBDIRSLIST.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: Version 0.6.0.  Explicitly name m4 macro dir.  Use
	AC_INT(aclocal.m4) rather than AC_INIT(acinclude.m4) Move various
	AC_DEFUN declarations from acinclude.m4 to here, with GLUCAT_* and
	glucat_* names.  Rename KDE_* and kde_* to GLUCAT_* and glucat_*
	respectively.  To assist PyClical build and installation: o Do not define or use
	 GLUCAT_PROG_LIBTOOL: o do not patch libtool or create a
	libtool-script.  o If the flag $glucat_use_pyclical is set, use
	  AM_PATH_PYTHON and add -fno-strict-aliasing to
	$glucat_extra_cxxflags_pyclical.  Do not use AC_VALIDIFY_CXXFLAGS,
	KDE_CHECK_FINAL, KDE_FAST_CONFIGURE, KDE_CONF_FILES.  Conditionally
	set CXXFLAGS using $glucat_extra_cxxflags_pyclical before
	AC_CONFIG_FILES([ pyclical/Makefile ]).  No longer call
	KDE_CREATE_SUBDIRSLIST.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.in: Version 0.6.0.  Explicitly name m4 macro dir.
	Use AC_INT(aclocal.m4) rather than AC_INIT(acinclude.m4) Move
	various AC_DEFUN declarations from acinclude.m4 to here, with
	GLUCAT_* and glucat_* names.  Rename KDE_* and kde_* to GLUCAT_* and
	glucat_* respectively.  To assist PyClical build and installation: o Do not define or use
	 GLUCAT_PROG_LIBTOOL: o do not patch libtool or create a
	libtool-script.  o If the flag $glucat_use_pyclical is set, use
	  AM_PATH_PYTHON and add -fno-strict-aliasing to
	$glucat_extra_cxxflags_pyclical.  Do not use AC_VALIDIFY_CXXFLAGS,
	KDE_CHECK_FINAL, KDE_FAST_CONFIGURE, KDE_CONF_FILES.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4: Update Autottools.  Define AM_PATH_PYTHON for use by
	PyClical.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/test.out,
	test_runtime/transforms-8.out: Test results for version 0.6.0.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test05/peg05.h, test07/peg07.h: Change operator|(lhs,rhs) to
	operator||(lhs,rhs), since operator|() is now used for twisted
	adjoint action.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test00/peg00.h: New function is_error(lhs, rhs) : o test for
	relative and absolute error between lhs and rhs Use random(frm, fill) with fill factor 0.5.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* admin/ltmain.sh: Update Libtool.  (Libtool is not needed for
	installation.)

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/sqrt_log_demo.out, pyclical/sqrt_log_demo.py: Add comment
	block header.  Do not define pq here - istpq is now defined in
	PyClical.  In print statements where output is small, use abs().

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/pyclical_demo.py: Add comment block header.  Do not
	define pi here - pi is now defined in PyClical.  In function
	pause(), check if __name__ == __main__.  Print output header lines
	citing Lounesto et al.  In print statements where output is small,
	use abs().

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/plotting_demo.py: New file.  Plot curves obtained by
	exponentiating a bivector in Conformal Geometric Algebra.  Based on
	agacse_demo.py demonstrated at AGACSE 2010 in Amsterdam.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyClical.pyx: New name for PyCliCal.pyx Complete
	overhaul.  Wrap most of the member functions of classes
	glucat::index_set<> as Python class index_set and
	glucat::matrix_multi<> as Python class clifford, as well as most
	glucat:: functions operating on these classes.  Provide Doctests for
	all functions and member functions where this works.  Functions
	index_set_hidden_doctests() and clifford_hidden_doctests() provide
	tests for functions that Doctest cannot see.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/setup_nocython.py: New file.  Build PyClical.so from
	PyCliCal.cpp and PyClical.h without using Cython.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/setup.py: Add comment block header.  Use
	Cython.Build.cythonize New environment variables: o ext_name : name
	of extension o sources  : filename of our Cython source

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyClical.pxd, pyclical/glucat.pxd: New file.  Cython
	translation of C++ class and function definitions corresponding to
	glucat/glucat.h, especially index_set<> as IndexSet and
	matrix_multi<> as Clifford.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyClical.h: New name for PyCliCal.h Complete overhaul to
	support new PyClical.  New namespace cga3 for 3D Conformal Geometric Algebra based on
	definitions in Doran and Lasenby: o cga3() :  Convert Euclidean 3D
	  vector to Conformal Geometric Algebra null vector.  o cga3std() :
	  Convert CGA3 null vector to standard Conformal Geometric Algebra
	null vector.  o agc3() : Convert CGA3 null vector to Euclidean 3D
	vector.  Cosmetics: o Add comment header block.  o Add Doxygen comments.  o
	Put definitions in a more logical order.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/Makefile.am: Ensure that PyClical.so builds and installs
	correctly.  Use setup_nocython.py when PyClical.cpp already exists,
	so that Cython is not needed in this case.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: New member functions for
	matrix_multi<>: o operator|=(rhs) : Transformation via twisted
	adjoint action.  o grade() : Maximum of the grades of each term.  o
	pure() : Pure part.  New operator|(lhs, rhs): o Transformation via twisted adjoint
	action.  Function real(val) is now a synonym for val.scalar().  Cosmetics: o Put matrix_multi<> member functions in same order as
	per clifford_algebra<>.  o Neaten up ? : expressions.  o Fix comment
	for operator+=(term).

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: For matrix_multi<>, make double the default
	for Scalar_T.  New operator|(lhs, rhs): o Transformation via twisted adjoint
	action.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: In constructor index_set_imp(str): o Check
	state of stream ss and throw error_t if in failure state.  o Use
	  peek() to see if the end of the string has been reached, and throw
	error_t if not.  Overhaul operator>>(s, ist): o Parsing errors now set
	std::istream::failbit.  In function hash(), leave neg_part unshifted.  Cosmetic: o Put min_neg() before max_pos().

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h: Make compare<>(lhs, rhs) a friend of
	index_set<>.  Cosmetics: o Put count_neg() before count_pos().  o Put min_neg()
	before max_pos().  o Fix some comments.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Global timing constant MS_PER_S is now
	deprecated: moved to test/timing.h

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: In constructor framed_multi(str): o
	Check state of stream ss and throw error_t if in failure state.  o
	  Use peek() to see if the end of the string has been reached, and
	throw error_t if not.  New member functions for framed_multi<>: o operator|=(rhs) :
	Transformation via twisted adjoint action.  o grade() : Maximum of
	the grades of each term.  o pure() : Pure part.  New operator|(lhs, rhs): o Transformation via twisted adjoint
	action.  Function real(val) is now a synonym for val.scalar().  In
	operator<<(os,term), output as double where possible.  Overhaul operator>>(s, val): o Parsing errors now set
	std::istream::failbit.  Cosmetics: o Put framed_multi<> member functions in same order as
	per clifford_algebra<>.  o Neaten up ? : expressions.  o Fix comment
	for operator+=(term).

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: For framed_multi<>, make double the default
	for Scalar_T.  Explicitly use std::equal_to<> in
	std::tr1:unordered_map<>.  New operator|(lhs, rhs): o Transformation via twisted adjoint
	action.

2012-05-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h, glucat/clifford_algebra_imp.h: New
	member functions for clifford_algebra<>: o operator|=(rhs) :
	Transformation via twisted adjoint action.  o grade() : Maximum of
	the grades of each term.  o pure() : Pure part.  New operator|(lhs, rhs): o Transformation via twisted adjoint
	action.  Function real(val) is now a synonym for val.scalar().  Function
	imag(val) now always returns 0.  New function complexifier(val) : o Square root of -1 which commutes
	with all members of the frame of the multivector val.  o The name
	"elliptic" is now deprecated: use "complexifier" instead.  New function sqrt(val,i,prechecked) : o Square root of multivector
	with specified complexifier.  New function log(val,i,prechecked) : o Natural logarithm of
	multivector with specified complexifier.  Cosmetics: o Fix comments for member functions max_abs(),
	truncated() and involute().  o Put member functions in a more
	sensible order.

2012-05-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* products/products.cpp, squaring/squaring.cpp: Remove #define
	GLUCAT_TEST_REPEAT. Equivalent define is now in header file.

2012-05-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* products/products.h, squaring/squaring.h: Use common definitions
	from test/timing.h to standardize timing test.  Define
	_GLUCAT_TEST_REPEAT.  Repeated trials in timing tests now increase
	by the factor EXTRA_TRIALS until the elapsed time is non-zero.
	Random multivector generation uses multivector_t::random() with fill
	values 0.5 and 1.0.

2012-05-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.h, transforms/transforms.h: Use common
	definitions from test/timing.h to standardize timing test.  Define
	_GLUCAT_TEST_REPEAT.  Repeated trials in timing tests now increase
	by the factor EXTRA_TRIALS until the elapsed time is non-zero.
	Function relative() chooses between relative and absolute error
	consistently.  Random multivector generation uses
	multivector_t::random() with fill values 0.5 and 1.0.

2012-05-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/timing.h: Common definitions to support timing tests.

2012-05-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h, glucat/framed_multi_imp.h,
	glucat/matrix_multi.h, glucat/matrix_multi_imp.h: Add fill parameter
	to random(), with default 1.0: Probability that the coefficient of
	each basis element of a frame is a non-zero normal random scalar
	rather than 0.  This gives an average fill factor for the
	multivector, and is useful for testing.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.5.1.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.5.1.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/pyclical_demo.out, pyclical/sqrt_log_demo.out: PyCliCal
	demo output for version 0.5.1.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/test.out,
	test_runtime/transforms-8.out: Test results for version 0.5.1.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, NEWS, README, TODO, glucat.lsm: Update to version 0.5.1.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile: Update to version 0.5.1.  Append
	"_GLUCAT_USE_EIGENVALUES _GLUCAT_USE_BINDINGS" to PREDEFINED.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.in: Update to version 0.5.1: Define new macro GLUCAT_CHECK_LIB, which saves LDFLAGS, appends
	$all_libraries to LDFLAGS before calling AC_CHECK_LIB, then restores
	LDFLAGS.  This allows AC_CHECK_LIB to find libraries whose location
	is defined via the configure option --with-extra-libs.  Use GLUCAT_CHECK_LIB instead of AC_CHECK_LIB throughout the rest of
	the file.  Change name of all "AC_GLUCAT_*" macros to just "GLUCAT_*" for
	consistency.  Set all_includes to "-I. -I.. $all_includes $USER_INCLUDES" before
	calling GLUCAT_CHECK_COMPILERS. This ensures that compilation always
	has "-I. -I.." before other includes, and specifically helps when
	both uBLAS and Boost numeric bindings are being used.  New configure option --with-eig[=ARG]:  library to use for
	eigenvalues ARG can be (no|alglib|bindingsv1|bindings). This sets
	glucat_use_eigenvalues to the corresponding value.  If $glucat_use_eigenvalues is "alglib", check for the gamma()
	function in libalglib.a (there is apparently no "main" function),
	check for <alglib/evd.h> and if both are found, append
	"-D_GLUCAT_USE_EIGENVALUES -D_GLUCAT_USE_ALGLIB" to CXXFLAGS and
	append "-lalglib" to all_libraries.  If $glucat_use_eigenvalues is "bindingsv1" or "bindings", check
	liblapack.a and libblas.a.  If both are found, append "-llapack
	-lblas" to all_libraries.  If $glucat_use_eigenvalues is
	"bindingsv1", check for <boost/numeric/bindings/lapack/gees.hpp>,
	and if found, append "-D_GLUCAT_USE_EIGENVALUES
	-D_GLUCAT_USE_BINDINGS_V1" to CXXFLAGS.  If $glucat_use_eigenvalues
	is "bindings", check for
	<boost/numeric/bindings/lapack/driver/gees.hpp>, and if found,
	append "-D_GLUCAT_USE_EIGENVALUES -D_GLUCAT_USE_BINDINGS" to
	CXXFLAGS.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: See changes for ./configure.in.in

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Move static function definitions from
	clifford_algebra.h to here: o pade_approx(): Pade' approximation o
	db_step(): Single step of product form of Denman-Beavers square root
	iteration o db_sqrt(): Product form of Denman-Beavers square root
	iteration o pade_log(): Pade' approximation of log o cascade_log():
	Incomplete square root cascade and Pade' approximation of log Move function definitions from clifford_algebra.h to here (and to
	framed_multi_imp.h): o sqrt(val, i, prechecked): square root of
	multivector with specified complexifier o log(val, i, prechecked):
	natural logarithm of multivector with specified complexifier o
	exp(): exponential function In sqrt() and log(), _GLUCAT_USE_EIGENVALUES is not defined, proceed
	as per GluCat 0.5.0, including detection of special cases of
	negative eigenvalues.  If _GLUCAT_USE_EIGENVALUES is defined, call set genus to the struct
	returned by matrix::classify_eigenvalues(unitval.m_matrix) and
	switch on genus.m_eig_case (the classification of eigenvalues of
	unitval.m_matrix): In sqrt(): o negative_eig_case: (unitval.m_matrix has negative
	  eigenvalues) scaled_result = sqrt(-i * unitval, i, prechecked) * (i
	+ Scalar_T(1)) / sqrt_2; o both_eig_case: (unitval.m_matrix has both
	  negative and imaginary eigenvalues) scaled_result =
	sqrt(exp(i*safe_arg) * unitval, i, prechecked) * exp(-i*safe_arg/2);
	o otherwise (no negative eigenvalues), proceed as per GluCat 0.5.0.  In log(): o negative_eig_case: (unitval.m_matrix has negative
	  eigenvalues) scaled_result = log(-i * unitval, i, prechecked) + i *
	pi/Scalar_T(2); o both_eig_case: (unitval.m_matrix has both negative
	  and imaginary eigenvalues) scaled_result = log(exp(i*safe_arg) *
	unitval, i, prechecked) - i * safe_arg; o otherwise (no negative
	eigenvalues), proceed as per GluCat 0.5.0.  In exp(), remove the specific test for Scalar_T(0) and let the
	Scalar_T exp() handle it.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Move function declarations from
	clifford_algebra.h to here (and to framed_multi.h): o sqrt(val, i,
	prechecked): square root of multivector with specified complexifier
	o log(val, i, prechecked): natural logarithm of multivector with
	specified complexifier o exp(): exponential function Make sqrt() and log() friends of class matrix_multi<>.  Cosmetic improvements.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_imp.h: Include headers for external eigenvalue
	functions depending on whether _GLUCAT_USE_ALGLIB,
	_GLUCAT_USE_BINDINGS_V1 or _GLUCAT_USE_BINDINGS is defined.  Define new static functions: * Functions needed for interface to external eigenvalue functions:   o to_alglib(const Matrix_T& val): Convert matrix to ALGLIB format.    o to_lapack(const Matrix_T& val): Convert matrix to LAPACK format.  * Functions declared in matrix.h:   o eigenvalues(const Matrix_T& val): Eigenvalues of a matrix.      The implementation differs depending on whether
	    _GLUCAT_USE_ALGLIB, _GLUCAT_USE_BINDINGS_V1 or
	  _GLUCAT_USE_BINDINGS is defined.  o classify_eigenvalues(const
	Matrix_T& val): Classify the eigenvalues of a matrix.  Include <set> so that classify_eigenvalues() can use a set of
	eigenvalues.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h: New data structures: o eig_case_t: Classification
	of eigenvalues of a matrix.  o eig_genus:  Structure containing
	classification of eigenvalues.  Declare new functions: o eigenvalues(const Matrix_T& val):
	Eigenvalues of a matrix.  o classify_eigenvalues(const Matrix_T&
	val): Classify the eigenvalues of a matrix.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Move function definitions from
	clifford_algebra_imp.h to here (and to matrix_multi_imp.h): o
	sqrt(val, i, prechecked): square root of multivector with specified
	complexifier o log(val, i, prechecked): natural logarithm of
	multivector with specified complexifier o exp(): exponential
	function In the general case, these functions call the corresponding
	functions for matri_multi<>.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: Move function declarations from
	clifford_algebra.h to here (and to matrix_multi.h): o sqrt(val, i,
	prechecked): square root of multivector with specified complexifier
	o log(val, i, prechecked): natural logarithm of multivector with
	specified complexifier o exp(): exponential function Cosmetic improvements.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Move static function definitions to
	matrix_multi_imp.h: o pade_approx(): Pade' approximation o
	db_step(): Single step of product form of Denman-Beavers square root
	iteration o db_sqrt(): Product form of Denman-Beavers square root
	iteration o pade_log(): Pade' approximation of log o cascade_log():
	Incomplete square root cascade and Pade' approximation of log Move function definitions to framed_multi_imp.h and
	matrix_multi_imp.h: o sqrt(val, i, prechecked): square root of
	multivector with specified complexifier o log(val, i, prechecked):
	natural logarithm of multivector with specified complexifier o
	exp(): exponential function For functions f() == cosh(), cos(), sinh(), sin(), tanh(), tan(),
	atan(): If val is scalar, return value of scalar version of f().  For functions f() == acos(), asin(): If val is real and abs(val) <=
	1, return value of scalar version of f().  Make comments more accurate.

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h: Move function declarations to
	framed_multi.h and matrix_multi.h: o sqrt(val, i, prechecked):
	square root of multivector with specified complexifier o log(val, i,
	prechecked): natural logarithm of multivector with specified
	complexifier o exp(): exponential function

2010-05-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS: Add acknowledgements for QD and PyClical.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.5.0.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.5.0.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/peg11.h: In all functions: o Do not use explicit std::,
	since we already are "using namespace std;" o Use typenames scalar_t
	  instead of s_, and index_set_t instead of e_, for greater clarity.  In check(): o Set squared tolerance tol2 to either 0 (if
	  test_control.m_verbose_output is true) or otherwise to the larger of
	  std::numeric_limits<scalar_t>::epsilon(), and the square of
	  numeric_limits<double>::epsilon(). When nonzero, tolerance is then
	  the larger of sqrt(std::numeric_limits<scalar_t>::epsilon()) and   numeric_limits<double>::epsilon().  o Use relative norm of A-B if
	norm(A) > tol2, otherwise use absolute norm of A-B.  o Use
	numeric_traits<scalar_t>::sqrt() to obtain the size of the error.  o
	If test failed but norm of A-B <= tol2, print B.  In rand_transcendtest(): o For p from 0 to max_index (==n), for q
	  from the greater of 0 and p-2 to p, call transcendtest() twice with
	a random multivector in the Clifford algebra R_{p,q}.  o Use
	m_::random() to obtain the random multivector.  In do_test11(): o Print the value of
	  numeric_limits<scalar_t>::epsilon(), for better comparison of
	errors.  o Call rand_transcendtest<m_>(n) with n==3 rather than 4,
	to reduce test runtime.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/peg11.cpp: Use program arguments "--help" and "--verbose":
	Create the object test_control, of type control_t, constructed from
	the program arguments, argc and argv.  Call test11() only if
	test_control.m_valid is true, that is, only if the program arguments
	are valid.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test00/peg00.h: Change print_a_b_lhs_rhs() to
	print_error_lhs_rhs(), delete print_a_b_c_lhs_rhs(): o The new
	  routine print_error_lhs_rhs() prints only the relative error
	  (assuming rhs is not 0) and the error tolerance, if this is not 0.
	  The previous routines produced output which was too verbose.  In test_idents(): o Change last parameter from multivector_t e to
	  index_set_t e: the frame containing a, b and c.  o Set tolerance tol
	  to either 0 (if test_control.m_verbose_output is true) or otherwise
	to 512.0*std::numeric_limits<scalar_t>::epsilon().  o Change most
	  tests to call print_error_lhs_rhs() if abs(lhs - rhs) >
	  abs(rhs)*tol.  When test_control.m_verbose_output is true, this
	  calls print_error_lhs_rhs() whenever lhs != rhs.  o Those tests
	  which create scalar expressions call print_error_lhs_rhs() if
	scalar_diff*scalar_diff > tol*tol. When
	  test_control.m_verbose_output is true, this calls
	print_error_lhs_rhs() whenever scalar_diff != 0.  In do_test00(): o Use new static multivector_t::random() function to
	  give random values to multivector_t variables a, b and c, instead of
	calling rand().  o Call test_idents() with paramaters a, b, c, and
	  e: the frame containing a, b and c.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test00/peg00.cpp: Use program arguments "--help" and "--verbose":
	Create the object test_control, of type control_t, constructed from
	the program arguments, argc and argv.  Call test00() only if
	test_control.m_valid is true, that is, only if the program arguments
	are valid.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: New static member function random(const
	index_set_t frm).  Add missing comments.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: New static member function random(const
	index_set_t frm).  Add comments for some groups of declarations.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Define new static member function
	random(const index_set_t frm).  This uses
	random_generator_t::generator(), defined in glucat/random.h.  Move definition of var_term from here to framed_multi.h: this
	improves standard C++ compliance and allows Intel C++ to work.  Add some missing comments.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: New static member function random(const
	index_set_t frm).  Move definition of var_term from framed_multi_imp.h to here: this
	improves standard C++ compliance and allows Intel C++ to work.  Add comments for some groups of declarations.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/qd.h: Separate the definitions for dd_real and qd_real,
	rather than interleaving them.  Define macro _GLUCAT_QD_F(_T, _F) to reduce duplication in this
	file.  Here _T is a type and _F is a function.  For numeric_traits<dd_real> and numeric_traits<qd_real>: o Use
	  _GLUCAT_QD_F() to define new functions cos(), acos(), cosh(), sin(),
	asin(), sinh(), tan(), atan(), tanh().  o Also use _GLUCAT_QD_F() to
	define log() and exp() functions.  o Define new function
	to_double().

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/scalar.h: For numeric_traits<Scalar_T>isInf(), use the
	macro _GLUCAT_ISINF().  For numeric_traits<Scalar_T>isNaN(), use the
	macro _GLUCAT_ISNAN().  Define new functions to_double(), cos(), acos(), cosh(), sin(),
	asin(), sinh(), tan(), atan(), tanh() for numeric_traits<Scalar_T>.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Recognize the __INTEL_COMPILER macro name.  Disable warning 858: type qualifier on return type is meaningless.
	Disable warning 2259: non-pointer conversion from "double" to
	"...={float}" may lose significant bits.  Define macros _GLUCAT_ISNAN() and _GLUCAT_ISINF(), because icpc does
	not have std::tr1::isnan() or std:tr1::isinf().

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat_imp.h: If _GLUCAT_USE_GSL_RANDOM is defined, then
	 include <gsl/gsl_rng.h> and <gsl/gsl_randist.h>, otherwise include
	<tr1/random>.  Include new file "glucat/random.h".

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: If _GLUCAT_USE_GNU_CXX_HASH_MAP is defined, if
	_GLUCAT_USE_BACKWARD_HASH_MAP is also defined, then include
	<backward/hash_map> otherwise include <ext/hash_map>.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/try_catch.h: Fix initial comment which names the file.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/test.out,
	test_runtime/transforms-8.out: Test results for version 0.5.0.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* README: Update README file to version 0.5.0: Describe problems with the current sqrt() and log() functions, and
	their effects.  The PDF version of the API documentation is now called
	./glucat-api/glucat-api-refman.pdf.  Describe the new --enable-pyclical, --with-map[=ARG],
	--with-random[=ARG] options to ./configure, and their associated
	macro definitions.  Describe PyCliCal.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: Update installation instructions to version 0.5.0: Include a description and installation instructions for PyCliCal.  Describe test/test_optional.sh and the program arguments --help and
	--verbose for ./test00 and ./test11.  Describe the new --with-map[=ARG], --with-random[=ARG] options to
	./configure.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: NEWS for version 0.5.0.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: TODO for version 0.5.0.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.lsm: Update to version 0.5.0.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile: Update to version 0.5.0.  Add  _GLUCAT_USE_TR1_RANDOM to
	"PREDFINED".  This allows doxygen to see code in glucat/random.h.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Makefile.am: Append pyclical to SUBDIRS (and therefor build
	pyclical) only if the conditional make_pyclical is set.  Remove
	obsolete comments mentioning kdevelop.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.h.in: Add macro defines: HAVE_BACKWARD_HASH_MAP for
	<backward/hash_map> HAVE_GSL_GSL_RNG_H for <gsl/gsl_rng.h>
	HAVE_QD_QD_CONFIG_H for <qd/qd_config.h> HAVE_TR1_RANDOM for
	<tr1/random>

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.end: Create pyclical/Makefile if
	"$glucat_use_pyclical" == "yes".

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.in: Update to version 0.5.0.  Options for framed_multi map: Make these more sensible: Change
	options "--with-hash-map" and "--with-unordered-map" to
	"--with-map=(map|hash|unordered)". Make "unordered" the default
	value.  When "hash" is selected, check and add compiler flag
	"-Wno-deprecated", check header files <ext/hash_map> and define
	_GLUCAT_USE_GNU_CXX_HASH_MAP.  If <backward/hash_map> is also found,
	define _GLUCAT_USE_BACKWARD_HASH_MAP.  Options for random number generation: Add new option
	"--with-random=(tr1|gsl)", with "tr1" the default value.  This
	selects the type of random number generator to use.  If "gsl" was
	selected, use AC_CHECK_LIB to check for libgsl.a and libgslcblas.a,
	if found, check header file <gsl/gsl_rng.h>, and if that is found,
	define _GLUCAT_USE_GSL_RANDOM and append "-lgsl -lgslcblas" to the
	variable all_libraries. If "tr1" was selected, or in the default
	case, check headr file <tr1/random>, but do not define any macros.  Option for PyCliCal: Add new option "--enable-pyclical". This uses
	Cython to build the PyCliCal prototype. If "--disable-pyclical" was
	selected, or in the default case, append "pyclical" to the variable
	DO_NOT_COMPILE. If "-enable-pyclical" was selected, use
	AM_CONDITIONAL to set the condition make_pyclical.  Compilation with Intel C++: For icpc version 11 or greater, check
	and add compiler flag "-fp-model precise" rather than "-mp1".  Option for QD: Make this more consistent with others: If "--with-qd"
	was selected, use AC_CHECK_LIB to check for libqd.a, if found, check
	header file <qd/qd_config.h>, and if that is found, define
	_GLUCAT_USE_QD and append "-lqd" to the variable all_libraries.  Do not append USER_INCLUDES to all_includes twice.  Do not append
	USER_LDFLAGS to all_libraries twice.  Move parentheses on a separate line back to the end of the previous
	line.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: See changes to configure.in.in and configure.in.end.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* subdirs: New in CVS: Include only those directories for which
	Makefiles can be created.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test_optional.sh: New file: Shell script which passes program
	arguments to each test.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/control.h: New file: Define and set parameters to control
	tests.  Defines struct control_t, constructed from the program
	arguments, argc and argv.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/random.h: New file: Random number generator with single
	instance per Scalar_T.  Uses either TR1 or GSL random numbers.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/sqrt_log_demo.out: New file for PyCliCal: prototype
	Clifford algebra extension to Python.  Output from sqrt_log_demo.py:
	Demonstration of sqrt and log using PyCliCal.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/sqrt_log_demo.py: New file for PyCliCal: prototype
	Clifford algebra extension to Python.  Demonstration of sqrt and log
	using PyCliCal.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/pyclical_demo.out: New file for PyCliCal: prototype
	Clifford algebra extension to Python.  Output from pyclical_demo.py:
	Python version of CLICAL demo, using PyCliCal.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/pyclical_demo.py: New file for PyCliCal: prototype
	Clifford algebra extension to Python.  Python version of CLICAL
	demo, using PyCliCal.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/setup.py: New file for PyCliCal: prototype Clifford
	algebra extension to Python.  Python setup script for PyCliCal.
	Designed to be run from make.  Uses distutils and Cython.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyCliCal.pyx: New file for PyCliCal: prototype Clifford
	algebra extension to Python.  Python extension file for use with
	Cython.  Wraps most of the C++ interface for classes IndexSet and
	Clifford.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/PyCliCal.h: New file for PyCliCal: prototype Clifford
	algebra extension to Python.  C++ header file for Cython to use with
	PyCliCal.pyx.  Specifies that class IndexSet is
	index_set<DEFAULT_LO,DEFAULT_HI>, scalar_t is double, and class
	Clifford is framed_multi<scalar_t>.

2010-05-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* pyclical/Makefile.am: New file for PyCliCal: prototype Clifford
	algebra extension to Python.  Automake input file to create Makefile
	for PyCliCal.

2010-04-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.4.4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.4.4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: Describe the use of -with-qd and _GLUCAT_USE_QD to
	control the use of QD.  Remove reference to www.garloff.de web page,
	now possibly obsolete.  Update to version 0.4.4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* README: Describe the use of _GLUCAT_USE_QD to control the use of
	QD.  Fix various grammatical errors.  Make references to header
	files more consistent.  Update to version 0.4.4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Add some TODO items describing the use of random numbers
	with normal distribution.  Rearrange some of the existing TODO
	items.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: NEWS for version 0.4.4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/test.out,
	test_runtime/transforms-8.out: Test results for version 0.4.4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.lsm: Update to Version 0.4.4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile: Define _GLUCAT_USE_DENSE_MAT _GLUCAT_USE_QD
	_GLUCAT_USE_TR1_UNORDERED_MAP Expand
	_GLUCAT_CLIFFORD_ALGEBRA_OPERATIONS macro.  Define include path so
	that glucat/clifford_algebra.h is used for definition of
	_GLUCAT_CLIFFORD_ALGEBRA_OPERATIONS.  Update to Version 0.4.4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: Generated from configure.in.in and configure.in.end.
	See changes to configure.in.in.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.in: Support QD classes dd_real and qd_real: Add
	option --with-qd which sets glucat_use_qd, checks qd/qd_config.h,
	defines _GLUCAT_USE_QD, and adds -ldq to all_libraries.  Quote help
	comments properly.  Append $USER_LDFLAGS to all_libraries, and
	$USER_INCLUDES to all_includes before calling
	AC_GLUCAT_CHECK_COMPILERS to allow user definition of extra
	libraries and includes before checking starts.  Update to Version
	0.4.4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4: Generated automatically by aclocal-1.11.  See changes
	to acinclude.m4.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* acinclude.m4: Update to aclocal-1.11.  Avoid warning messages
	about serial.  Use _cv_ in names to avoid a warning message.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/peg11.cpp: Support QD classes dd_real and qd_real: If
	_GLUCAT_USE_QD is defined, test using dd_real and qd_real.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test00/peg00.h: Use value scalar_t(1) instead of 1.0 to ensure
	correct use of scalar values.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test00/peg00.cpp: Support QD classes dd_real and qd_real: If
	_GLUCAT_USE_QD is defined, test using dd_real and qd_real.  Test
	using long_double.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h, glucat/matrix_multi.h: Include
	glucat/clifford_algebra.h so that Doxygen can see definition of
	_GLUCAT_CLIFFORD_ALGEBRA_OPERATIONS.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/long_double.h: Remove unneeded definitions of std::conj,
	std::real and std::imag.  The equivalent functions are available via
	numeric_traits defined in scalar.h.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/qd.h: New source file to support QD classes dd_real and
	qd_real.  Define specializations for numeric_traits<dd_real> and
	numeric_traits<qd_real>.

2010-04-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: Support QD classes dd_real and qd_real: If
	_GLUCAT_USE_QD is defined, include qd/qd_real.h and glucat/qd.h.
	Improve comment for glucat/scalar.h.

2009-12-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: ChangeLog for version 0.4.3.

2009-12-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/test.out: Test results for version 0.4.3.

2009-12-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test14/peg14.cpp: For operator!= (const Scalar_T& scr, const
	Multivector<Scalar_T,LO,HI>& rhs), there was essentially the same
	bug as was fixed in GluCat 0.4.2, but this was missed by Bug
	2847758. This change add more tests to test14 to check this case as
	well.

2009-12-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: For operator!= (const Scalar_T&
	scr, const Multivector<Scalar_T,LO,HI>& rhs), there was essentially
	the same bug as was fixed in GluCat 0.4.2, but this was missed by
	Bug 2847758. This change fixes this operator.

2009-12-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: NEWS for version 0.4.3.

2009-12-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, INSTALL, configure.in, configure.in.in, glucat.lsm:
	Update to Version 0.4.3.

2009-12-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to version 0.4.2.

2009-12-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/test.out,
	test_runtime/transforms-8.out: Test results for version 0.4.2.

2009-12-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Add some TODO items, including investigating the use of
	Eigen as a replacement for uBLAS.  Rearrange some of the existing
	TODO items.

2009-12-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: News for version 0.4.2.

2009-12-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, INSTALL, configure.in.in, glucat.lsm: Update to version
	0.4.2.

2009-12-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: File created by cat configure.in.in configure.in.end
	Update to version 0.4.2.

2009-12-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test14/peg14.cpp: Test bug fix 2847758: "operator!=(lhs,scr)
	sometimes wrongly returns true".  Add tests to test14 to ensure that operator==(lhs,scr) and
	operator!=(lhs,scr) return the correct values.

2009-12-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Fix bug 2847758:
	"operator!=(lhs,scr) sometimes wrongly returns true".  In operator!= (const Multivector<Scalar_T,LO,HI>& lhs, const
	Scalar_T& scr)., with GluCat 0.4.1 and earlier, when lhs is of type
	matrix_multi_t, it is possible that lhs.frame().count() !=0 and yet
	the matrix is scr times the identity matrix.  In this case
	operator!=() returns false when it should return true.

2009-07-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to version 0.4.1.

2009-07-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, TODO: Update to version 0.4.1.

2009-07-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: News for version 0.4.1.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile: Updated to Doxygen version 1.5.9.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/products-8.out,
	test_runtime/squaring-11.out, test_runtime/test.out,
	test_runtime/transforms-8.out: Test results for version 0.4.1.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/Makefile.in, products/Makefile.in,
	squaring/Makefile.in, test/Makefile.in, test00/Makefile.in,
	test01/Makefile.in, test02/Makefile.in, test03/Makefile.in,
	test04/Makefile.in, test05/Makefile.in, test06/Makefile.in,
	test07/Makefile.in, test08/Makefile.in, test09/Makefile.in,
	test10/Makefile.in, test11/Makefile.in, test12/Makefile.in,
	test13/Makefile.in, test14/Makefile.in, test15/Makefile.in,
	test16/Makefile.in, transforms/Makefile.in: Files created
	automatically by automake.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: File created by cat configure.in.in configure.in.end
	Update to version 0.4.1.  Change ./Makefile to Makefile to prevent
	error message.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, configure.in.in, glucat.lsm: Update to version 0.4.1.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4: Update autotools.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.end: Change ./Makefile to Makefile to prevent warning
	message.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/peg11.h: Set tol to sqrt(epsilon()).  If tests fails,
	always print absolute norm of difference, and also print relative
	norm when this makes sense.  In transcendtest():    New bool parameter random,    use exp() rather than std::exp().  New function
	rand_transcendtest(): test using random values.  In do_test11():    Use numeric_traits<s_>::pi(),    use rand_transcendtest().

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/peg11.cpp: Test using framed_multi<float>,
	matrix_multi<float>, framed_multi<long double> and matrix_multi<long
	double>, as well as framed_multi<double> and matrix_multi<double>.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Consistently use Scalar_T to cast
	integer constants.  Use static consts where possible.  Reorder
	expressions for more efficiency.  Use new form of check_complex().
	Use numeric_traits<Scalar_T>:: abs(), exp(), fmod(), log(), pi(),
	pow(), to_int().  Use traits_t for numeric_traits<Scalar_T>.  Make transcendental functions more accurate: In check_complex(): add
	a bool parameter prechecked, defaulting to false.  In pade_approx(): use arrays a and b of length 14 rather than 10.  In db_sqrt(): reduce tolerance tol from epsilon()/2 to
	epsilon()/1024; use variable norm_M_1 = norm(M - 1); check Y.isnan()
	inside loop and leave early if true.  In sqrt(): use Pade approximation produced by
	Pade1(sqrt(1+x),x,13,13); if val*val is real and val is not real
	then the matrix for val has negative eigenvalues, so return
	sqrt(-i*val)*(i+1)/sqrt_2; scale val towards val == 1 or towards
	abs(val) == 1 as appropriate: if norm(val/real(val) - 1) < 1, then
	scale by real(val) [towards val == 1], else if real(val)<0 then
	scale by -abs(val) otherwise scale by abs(val) [towards circle
	abs(val) == 1]; use unitval=val/scale with either Pade'
	approximation or product form of Denman-Beavers square root
	iteration to obtain scaled_result, if scaled_result.isnan() then try
	again, this time multiplying unitval by -i to try to rotate
	eigenvalues away from negative real axis.  In exp(): make 0 a special case; test for NaN earlier; test for
	pure_scale==0; In pade_log(): use Pade approximation produced by
	Pade1(log(1-x),x,13,13); do not scale val towards circle abs(A) == 1
	(now done in log() instead); In cascade_log(): use variable norm_Y_1 = norm(Y - 1); use
	pow_2_outer_step [==pow(2,outer-step)], pow_4_outer_step
	[==pow(4,outer-step)], max_outer_norm and max_inner_norm to control
	the nested loops; remove "Warning: log iteration did not
	converge..." and instead return NaN if iteration does not converge; In log(): check for special case where val is not scalar but val*val
	is positive scalar, and return log(-i*val)+i*pi/2; scale val towards
	val == 1 or towards abs(val) == 1 as appropriate: if
	norm(val/real(val) - 1) < 1.0/9.0, then scale by real(val) [towards
	val == 1], else if real(val)<0 then scale by -abs(val) otherwise
	scale by abs(val) [towards circle abs(val) == 1]; check for special
	case where scale==0, and return NaN; [log_scale==log(abs(scale))]:
	check for special case where scale<0, and set
	rescale=i*pi+log_scale, otherwise rescale=log_scale;
	[scaled_result==cascade_log(val/scale)]: if scaled_result.isnan()
	just return NaN, otherwise return scaled_result+rescale.  In sin(): use pi() and fmod() to bring real part of val into the
	interval [0, 2*pi), defining z, and return i * (exp(-z)-exp(z)) /
	Scalar_T(2).  In atan(): if val is closer to 1 than it is to -1, return
	(log(val+1) - log(-val+1)))/2, otherwise return log((val+1) /
	(-val+1))/2.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Use traits_t for
	numeric_traits<Scalar_T>.  Use traits_t::real() rather than
	std::real().

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Increase DEFAULT_Sqrt_Max_Steps from 16 to 64;
	Increase DEFAULT_Fast_Size_Threshold from 6 to 7.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: Include long_double.h after scalar.h.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/long_double.h: Specializations of numeric_traits<long
	double>::pi() and ln_2().

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_imp.h: In nork(): explicitly cast the expression for
	nnz_lhs to double before casting to Scalar_T.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h, glucat/matrix_multi.h: Construct a
	multivector from a char*; Construct a multivector, within a given
	frame, from a char*.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: In scalar() and norm(): explicitly cast
	dim to double before casting to Scalar_T.

2009-07-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/scalar.h: Use const Scalar_T& instead of Scalar_T for
	parameters where possible.  Fix comment describing IsInf().  New
	    static member functions for numeric_traits<Scalar_T>: to_int(),
	fmod(), conj(), real(), imag(), pi(), ln_2(), log2(), pow(), exp().
	Existing log2() function now uses static member function log2().

2007-11-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Fix typos.

2007-11-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to version 0.4.0.

2007-11-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: News for version 0.4.0.

2007-11-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: Make initialization of generators more
	consistent.

2007-11-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/timing_tests.sh: Shell script for timing tests.

2007-11-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS, INSTALL, README, TODO: Update for version 0.4.0.

2007-11-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.lsm: Update entered date.

2007-11-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/test.out: Test results for version 0.4.0.

2007-11-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/scalar.h: Work around change in
	<boost/numeric/ublas/traits.hpp>.  Use UBLAS_ABS and UBLAS_SQRT as
	per portability.h, rather than type_abs and type_sqrt.

2007-11-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Work around change in
	<boost/numeric/ublas/traits.hpp>.  If BOOST_VERSION is at least
	103400 (ie. Boost 1.34.0) then set UBLAS_ABS to type_abs and
	UBLAS_SQRT to type_sqrt, otherwise use abs and sqrt respectively.

2007-11-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: Include <boost/version.hpp>.

2007-11-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.directory, glucat.kdevelop: These files are no longer used.

2007-11-04  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/products-8.out: Timing test for *, ^, &, % products.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/scalar.h: New member functions abs(), sqrt(), log().
	Functions abs() and sqrt() use ublas::type_traits<>.  Function
	log2() uses log().  Cosmetics.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: New member function scalar().  New
	function star() and new operators *, ^, &, %, / based on code for
	*=, ^=, etc.  Make operators *=, ^=, &=, %=, /= depend on new
	operators *, ^, &, %, / respectively.  Use this-> more consistently.  In operator ==: o ensure that there is no aliasing; o convert *this
	and rhs to a common frame, if necessary; o
	if_GLUCAT_USE_DENSE_MATRICES is defined, use ublas::norm_inf().  In operator ==(Scalar_T), treat 0 and NaN as special cases.  Other optimizations for speed: o Inline functions pow(), write(),
	isnan(), fast_matrix_multi() and operators +=, -=, *=, /=, (), >>.
	o In operators += and -=, ensure there is no aliasing, and use
	noalias() assignment.  o In operator *, use ublas::axpy_prod() if
	_GLUCAT_USE_DENSE_MATRICES is defined, otherwise use
	ublas::sparse_prod().  o In operators * and /, check isnan() only if
	_GLUCAT_USE_DENSE_MATRICES is not defined.  o In operator /, treat
	rhs == 0 as a special case; convert *this and rhs to a common frame,
	if necessary.  o In function inv(), use / rather than /=.  o In
	function isnan(), use new function matrix::isnan().  o In function
	fast(), use 3 parameter constructor for J.  o In operator
	+=(term_t), use plus_assign().  o In function norm() use new fnction
	matrix::norm_frob2() rather than matrix::inner().  Cosmetics.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Optimizations for speed: o Make function
	star() and operators *, ^, &, %, / friends of class matrix_multi<>.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_imp.h: New functions: o mono_kron(): sparse
	Kronecker tensor product of monomial matrices; o norm_frob2():
	square of Frobenius norm; o trace(): Matrix trace.  Optimizations for speed: o Functions mono_kron() and mono_prod()
	assume that their arguments are sparse and use the ublas 3 parameter
	constructor.  o Function nork() only checks number of rows, columns
	etc. if mono is false.  Remove inline from functions nnz() and isnan(): they contain double
	loops.  Cosmetic changes.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h: New functions: o mono_kron(): sparse Kronecker
	tensor product of monomial matrices; o norm_frob2(): square of
	Frobenius norm; o trace(): Matrix trace.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Optimzations for speed: o In constructor
	from index_pair_t, use masks instead of a loop.  o Consolidate
	templates for functions test(), count(), count_pos(), use
	bitset_t::to_ulong().  o In functions min() and max(), if
	   _GLUCAT_BITS_PER_ULONG is 32 or 64, use the "bit wizardry" version
	of the function for all LO, HI, but only include all cases if HI-LO
	> 8.  o In function compare(), use lex_less_than().  o In function
	lex_less_than() use, bitset_t::to_ulong().  o Inline functions
	classname() and value_of_fold().  o Consolidate templates for
	  sign_of_mult(). Use bitset_t::to_ulong().  If HI-LO > 8, use "bit
	  wizardry": new static functions inverse_gray() and
	  inverse_reversed_gray().  Otherwise use slightly faster loops.  o
	  Consolidate templates for hash_fn().  Shift neg_part into high bits
	of result, to reduce collisions.  o Inline short
	index_set<>::reference functions.  Use static_cast<> where appropriate.  New member function sign_of_square(): sign of geometric square of a
	Clifford basis element.  Remove deprecated function index_range().  Cosmetics.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h: Make operators ^, & and | friends of class
	index_set<>.  Use BOOST_STATIC_ASSERT to enforce (LO <= 0) && (HI >=
	0) && (HI > LO) && (-LO < _GLUCAT_BITS_PER_ULONG) && (HI <
	_GLUCAT_BITS_PER_ULONG) && (HI-LO <= _GLUCAT_BITS_PER_ULONG).  New
	typedef index_pair_t for use with index_set<> constructor for index
	range.  New member function sign_of_square(): sign of geometric
	square of a Clifford basis element.  Remove deprecated function
	index_range().

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat_imp.h: Use the Boost pool allocator.  Include
	<boost/pool/pool_alloc.hpp>

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: Include <boost/static_assert.hpp> Include <boost/numeric/ublas/traits.hpp> Use the appropriate type of map, depending on
	_GLUCAT_USE_GNU_CXX_HASH_MAP and _GLUCAT_USE_TR1_UNORDERED_MAP.  If
	neither is defined, define _GLUCAT_MAP_IS_ORDERED.  Use the Boost pool allocator.  Include <boost/pool/poolfwd.hpp>

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Change _GLUCAT_CTAssert so that it does not
	generate spurious warnings with gcc 4.2.2.  New tuning parameter
	Products_Size_Threshold, default 1UL << 22, to control operators ^,
	& and %.  Change defaults for the other tuning parameters:
	DEFAULT_Div_Max_Steps           =         4; DEFAULT_Sqrt_Max_Steps
	=        16; DEFAULT_Log_Max_Outer_Steps     =        16;
	DEFAULT_Log_Max_Inner_Steps     =        16; DEFAULT_Basis_Max_Count
	=        10; DEFAULT_Fast_Size_Threshold     = 1UL <<  6;
	DEFAULT_Inv_Fast_Dim_Threshold  = 1UL <<  6;

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: Optimizations for speed: o Make
	generator_table<> operator() inline; o In function
	gen_from_pm1_qm1(), use 3 parameter constructor for neg and dup,
	copy pos from neg and use function mono_kron().

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Inline function classname().  In constructor from matrix_multi<>, do not add a term if its
	relative contribution to the norm is <= eps*eps.  In operator ==, fix the loop so that it terminates if either this_it
	or rhs_it has reached its respective end().  Use function numeric_traits<Scalar_T>::abs() rather than std::abs()
	or ublas::type_traits<Scalar_T>::norm_2().  New function star() and new operators *, ^, &, %, / based on code
	for *=, ^=, etc.  Make operators *=, ^=, &=, %=, /= depend on new
	operators *, ^, &, %, / respectively.  In operator *, use _GLUCAT_MAP_IS_ORDERED rather than
	_GLUCAT_USE_GNU_CXX_HASH_MAP for conditional compilation.  For operators ^, & and %, use an asymptotically faster algorithm for
	large sizes, controlled by Tune_P::products_size_threshold.  For operator % if _GLUCAT_MAP_IS_ORDERED is defined then use an
	algorithm which knows that both lhs and rhs are sorted by increasing
	grade, then lexicographically, and a "larger" index set cannot be a
	subset of a "smaller" one.  New member function scalar().  Do not inline functions fold() and unfold(): they contain loops.  New non-member function crd_of_mult() gives the coordinate of a
	product of terms.  In operator * for product of terms, use
	crd_of_mult().  Other optimizations for speed: o Use initialization list in copy
	constructor.  o In constructor from matrix_multi<>, use shortcuts
	for 0 and scalars.  o In operator ==, use _GLUCAT_MAP_IS_ORDERED
	rather than an if().  o Use constants this_begin, this_end,
	lhs_begin, lhs_end, rhs_begin, rhs_end, with iterators in operators
	==, *, o Inline operators += and -=.  o In function quad(), use
	count_neg().  o In functions centre_pm4_qp4() and centre_pp4_qm4()
	use the index_set_t constructor which takes an index range ddefined
	using an index_pair_t.  o Inline fast_framed_multi().  o In function
	  fast(), if *this is empty, return a zero matrix of the appropriate
	  size.  This cuts out multiple levels of unnecessary recursion.  o
	In function fast(), use 3 parameter constructor for J.  Cosmetics.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: Optimizations for speed: o Make function
	star() and operators *, ^, &, %, / friends of class framed_multi<>;
	o Use boost::fast_pool_allocator<> with std::map<>.  If _GLUCAT_USE_GNU_CXX_HASH_MAP is not defined and
	_GLUCAT_USE_TR1_UNORDERED_MAP is defined, then use
	std::tr1::unordered_map<> for map_t.  New non-member function crd_of_mult() gives the coordinate of a
	product of terms.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Optimizations for speed: (1) For operators *, ^, &, %, use the new corresponding operator for
	the left hand side type in preferenece to *=, ^=, &=, %=.  (2) The function star() uses the corresponding function for the left
	hand side type.  (3) The functions scalar() and pure() use the member function
	scalar().  The function pow() with int right hand side is no longer
	inlined.  Overhaul transcendental functions to make them more correct and more
	precise: New references: [H] Nicholas J. Higham, "The Scaling and Squaring
	Method for the Matrix Exponential Revisited", 2005.  [Z] Doron
	Zeilberger, "PADE" (Maple code), 2002.  Make order of products more
	consistent: geometric, outer, inner, contraction.  New function check_complex(val, i) checks that i is a valid
	complexifier for val, ie. checks that i and elliptic(val) are
	consistent.  New versions of sqrt, log, acosh, cos, acos, asinh, sin, asin,
	atanh, tan, atan, with a second parameter i, which is a specified
	complexifier and a third parameter prechecked which controls
	check_complex.  The functions F(val), where F == sqrt, ... atan call
	F(val, elliptic(val), true).  Increase degree of pade_approx() from 8 to 10; cosmetic changes.  In function abs(), use numeric_traits<Scalar_T>::sqrt rather than
	std::sqrt().  In function db_sqrt(): o use the tolerance tol = epsilon()/2; o
	check norm(1-M) > tol*tol rather than norm(1-M) > 0; o remove the
	warning if convergence fails and return NaN instead.  In function sqrt(val, i, prechecked): o use a degree 10 Pade
	approximation obtained using [Z]; o use pade_approx() only for
	norm(unitval-1) < 1/4 rather than norm(unitval-1) < 1; o if
	db_sqrt(unitval) returns NaN, try db_sqrt(-unival),  if this does
	not return NaN, multiply result by i; o Use
	numeric_traits<Scalar_T>::sqrt rather than std::sqrt().  In function exp(): o use norm() rather than max_abs(); o change
	ilog2_scale to take the A.frame() into account; o increase the
	degree of Pade approximation from 8 to 13, per [H].  In function pade_log() use a degree 10 Pade approximation obtained
	using [Z].  In function cascade_log(): o try to iterate until
	norm(1-Y) > 1/8 rather than norm(1-Y) > 1/2; o check Y.isnan()
	rather than val.isnan().  In function log(), if cascade_log(unitval)
	returns NaN, try cascade_log(-unitval) and add i * l_pi to the
	result.  Function acosh() uses log(val + sqrt(val*val-1,i,true),i,true).
	Function acos() uses acosh(val,i,true).  Function asinh() uses
	log(val + sqrt(val*val+1,i,true),i,true).  Function sin uses
	i*(cos(val)-exp(i*val)).  Function asin() uses
	-i*asinh(i*val,i,true).  Function atanh() uses
	log((1+val)/(1-val),i,true)/2.  Function tan() uses
	sin(val,i,true)/cos(val,i,true).  Function atan() uses
	-i*atanh(i*val,i,true).

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h: New const member function scalar().
	Make order of products more consistent: geometric, outer, inner,
	contraction.  New versions of sqrt, log, cos, acos, acosh, sin,
	asin, asinh, tan, atan, atanh with a second parameter i, which is a
	specified complexifier and a third parameter prechecked which
	controls check_complex.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/transforms.cpp: Remove the test for
	matrix_multi<double>.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/peg11.h: Make test11 into a regression test which uses the
	new function check() to compare results.  Use many more test cases
	with function transcendtest().

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test04/peg04.cpp, test04/peg04.h: Correct the URL of the Clical
	demo.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test00/peg00.h: Tighten tol from eps*4 to eps*2.  Do not use
	std::abs(). It is not needed when Scalar_T is float or double.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test00/peg00.cpp: Use more test cases with function do_test00(): <
	*_multi<float,-3,4> >(3),  < *_multi<float,-5,6> >(5), <
	*_multi<double> >(5).

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* products/products.h, squaring/squaring.cpp, squaring/squaring.h:
	Use GLUCAT_TEST_REPEAT to control whether to repeat the timing
	tests.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* products/products.cpp: Use GLUCAT_TEST_REPEAT to control whether
	to repeat the timing tests.  Remove the tests for
	*_multi<double,-4,4>, and *_multi<float>.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* products/tuning.h, squaring/tuning.h: Change
	Driver_Fast_Size_Threshold and Driver_Inv_Fast_Dim_Threshold for
	_GLUCAT_SQUARING_OPT to match the default value of 1 << 6.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Update to version 0.4.0.  New
	configure option --with-unordered-map which controls
	-D_GLUCAT_USE_TR1_UNORDERED_MAP.  Reorder compiler flags for the
	sake of consistency.  Remove some commands which were commented out.
	For gcc between 4 and 4.0.2, move the test for and use of the flag
	-fno-strict-aliasing.  Confine the test for and use of
	-fabi-version=0 to gcc between 4 and 4.0.2 only.  Confine the test
	for and use of -Wstrict-aliasing=2 to gcc between 4 and 4.1 only.
	If --enable-strict is selected, for gcc later than 4.1, test and use
	 the flags -pedantic  -Wextra -Wno-unused-parameter.  If
	--enable-debug=no is selected: (1) For gcc 4.1 and later, test and use the flags  -O3 --param max-inline-insns-single=5400 --param
	 large-function-insns=5400 -funroll-loops
	-fvariable-expansion-in-unroller -fno-math-errno -fno-trapping-math.  (2) For gcc later than 4.2.1, for host x86_64-*-*, also use the flag
	-march=k8.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.h.in: HAVE_TR1_UNORDERED_MAP is to be defined to 1 if
	<tr1/unordered_map> exists.

2007-11-03  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, glucat.lsm: Update to version 0.4.0.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes for version 0.3.0.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/squaring-11.out,
	test_runtime/test.out, test_runtime/transforms-8.out: Test results
	for version 0.3.0.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/squaring.cpp: Add an extra line after the tests for each
	different template class, to make output easier to read.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/squaring.h: Clean up based on products test.  Increase
	precision of output and increase number of repetitions to get more
	accurate timings for small frame sizes.  Use new index_set(range)
	constructor.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.h: Increase precision of output and increase
	number of repetitions to get more accurate timings for small frame
	sizes.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/transforms.h: Use new index_set(range) constructor.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test.sh: Add 00 to list of tests.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* products/Makefile.am, products/Makefile.in,
	products/products.cpp, products/products.h, products/tuning.h: New
	timing test which measures the speed of the *, ^, & and % products.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test00/Makefile.am, test00/Makefile.in, test00/peg00.cpp,
	test00/peg00.h: New regression test which checks many Geometric
	Algebra identities.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: In operator&(), ensure that the inner
	product implements the definition given in Hestenes and Sobczyk,
	1984.  According to the definition, a & b == 0 if either a or b is a
	scalar.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Add a new constructor,  index_set(range),
	where range is a pair of index_t values.  This is intended to
	replace the function index_range(), which is now deprecated and will
	be removed from GluCat 0.4.0.  The new constructor is needed because
	of differences between the current GNU and Intel compilers.  In lex_less_than(), fix the lexicographical ordering of index sets.
	This affects the ordering of terms both in output and internally in
	framed_multi<> when framed multivectors use map<> rather than
	hash_map<>, ie. when _GLUCAT_USE_GNU_CXX_HASH_MAP is not defined.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h: Add a new constructor,  index_set(range),
	where range is a pair of index_t values.  This is intended to
	replace the function index_range(), which is now deprecated and will
	be removed from GluCat 0.4.0.  The new constructor is needed because
	of differences between the current GNU and Intel compilers.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Correctly obtain the version of
	icpc versions 8 through 10 (and hopefully later versions)

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS: Update email address.  Fix references to framed_multi<>
	and matrix_multi<>.  Add references for identities.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Fix typos.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: Update to version 0.3.0.  New test directories:
	./products, ./test00.

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Makefile.am, configure.in.end: New test directories: ./products,
	./test00

2007-09-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, INSTALL, NEWS, configure.in.in, glucat.lsm: Update to
	version 0.3.0

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to version 0.2.3.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-8.out,
	test_runtime/transforms-6.out: Remove old, redundant test results to
	avoid confusion.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-11.out, test_runtime/squaring-11.out,
	test_runtime/transforms-8.out: Test results for version 0.2.3.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/test.out: Update to test results for version 0.2.3.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.cpp, gfft_test/gfft_test.h,
	glucat/clifford_algebra.h, glucat/errors.h, glucat/errors_imp.h,
	glucat/framed_multi.h, glucat/generation.h, glucat/glucat.h,
	glucat/glucat_imp.h, glucat/index_set.h, glucat/index_set_imp.h,
	glucat/long_double.h, squaring/squaring.cpp, squaring/squaring.h,
	test/driver.h, test/try_catch.h, test01/peg01.cpp, test01/peg01.h,
	test02/peg02.cpp, test02/peg02.h, test03/peg03.cpp, test03/peg03.h,
	test04/peg04.cpp, test04/peg04.h, test05/peg05.cpp, test05/peg05.h,
	test06/peg06.cpp, test06/peg06.h, test07/peg07.cpp, test07/peg07.h,
	test08/peg08.cpp, test08/peg08.h, test09/peg09.cpp, test09/peg09.h,
	test10/peg10.cpp, test10/peg10.h, test11/peg11.cpp, test11/peg11.h,
	test12/peg12.cpp, test12/peg12.h, test13/peg13.cpp, test13/peg13.h,
	test14/peg14.cpp, test14/peg14.h, test15/peg15.cpp, test15/peg15.h,
	test16/peg16.cpp, test16/peg16.h, transforms/transforms.cpp,
	transforms/transforms.h: Relicense under LGPLv3.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/tuning.h: Relicense under LGPLv3.  Tweak test tuning
	policies.  Try new tuning policies using new define
	_GLUCAT_SQUARING_OPT.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/scalar.h: Relicense under LGPLv3.  Move definition of
	numeric_traits<> here.  Define smart isInf(), smart isNaN_or_isInf()
	and NaN().

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Relicense under LGPLv3.  Disable Intel
	warning "zero used for undefined preprocessing identifier"

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Relicense under LGPLv3.  Correctly
	initialize matrices.  Use ublas noalias assignment where
	appropriate.  Improve the use of IEEE NaN.  Use IEEE Inf where
	appropriate.  Use matrix::prod() in operator*=().  Use
	ublas::axpy_prod() in operator/=().  Fix the pow() functions to
	yield the correct powers of 0.  Use basis_matrix_t for generator and
	basis matrices.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Relicense under LGPLv3.  If
	_GLUCAT_USE_DENSE_MATRICES is defined, matrix_multi<> uses a a dense
	matrix.  Otherwise matrix_multi<> uses a compressed matrix type.
	Basis matrices always use a compressed matrix type.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_imp.h: Relicense under LGPLv3.  For functions
	kron(), nork(), inner(), allow LHS_T and RHS_T to differ.  New
	function isnan() for matrices.  New function prod() for both dense
	and compressed matrices.  Correctly initialize matrices.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h: Relicense under LGPLv3.  For functions kron(),
	nork(), inner(), allow LHS_T and RHS_T to differ.  New function
	isnan() for matrices.  New function prod() for both dense and
	compressed matrices.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Relicense under LGPLv3.  Optimize default tuning
	policy for both dense and compressed matrices.  Move definition of
	numeric_traits<> to scalar.h.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: Relicense under LGPLv3.  Remove redundant
	initializations.  Use ublas noalias assignment where appropriate.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Relicense under LGPLv3.  Improve the
	use of IEEE NaN.  Use IEEE Inf where appropriate.  Fix the pow()
	functions to yield the correct powers of 0.  Use basis_matrix_t for
	generators I, J, K, JK in fast().

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Relicense under LGPLv3.  Fix the
	pow() functions to yield the correct powers of 0.  Improve the use
	of IEEE NaN.  Use IEEE Inf where appropriate.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* COPYING: Relicense under LGPLv3.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.in: Remove option --with-dense-mult controlling
	_GLUCAT_USE_DENSE_MATRIX_MULT.  Add new option --with-dense-mat
	controlling _GLUCAT_USE_DENSE_MATRICES.  For g++ 4.1 and later use
	--param max-inline-insns-single=2700 instead of -finline-limit=2400.
	Update to version 0.2.3.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: This file is now redundant and will be removed from
	CVS at a later date.

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.end: New file: To use, cat configure.in.in
	configure.in.end > configure.in

2007-08-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, INSTALL, NEWS, README, TODO, glucat.kdevelop,
	glucat.lsm: Update to version 0.2.3.

2007-03-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Fix fold() and unfold(). The test which
	determines whether to short-circuit the function should depend on
	the frame only and not on *this.

2007-03-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Correct is_contiguous() so that it matches
	the requirements of framed_multi<>::fold() and
	framed_multi<>::unfold(). The set which is tested for contiguity is
	*this with the index value 0 (notionally) added, so that {1,2,3} is
	contiguous, but {2,3} is not.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to version 0.2.2.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Bit wizardry. Hand optimize various
	functions.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/long_double.h: Remove definition of abs for long double -
	no longer needed.  Cosmetics.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Cosmetics.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Define and use _GLUCAT_BITS_PER_ULONG.  Update
	references to disambiguate Alexandrescu from Arndt.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: Add #include <boost/cstdint.hpp> Move #include
	<boost/limits.hpp> before #include "glucat/portability.h"

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Correct file name in latest NEWS item.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Fix comments for Doxygen.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-8.out,
	test_runtime/transforms-6.out: Update test results to match GluCat
	0.2.2.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Add new things to do after GluCat 0.2.2, such as splitting
	matrix_t into basis_matrix_t and matrix_t.

2007-02-27  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS, Doxyfile, INSTALL, NEWS, configure.in, configure.in.in,
	glucat.kdevelop, glucat.lsm: Update to version 0.2.2.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to GluCat version 0.2.1.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Disable 593 "variable was set but never
	used".  Drop ISNAN macro -- never used.  Update copyright notice.
	Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: In operator= drop call to resize() --
	it was redundant.  Make operator*= faster: In operator*= recursively
	call *= to "represent rhs in our_frame via conversion through
	framed_multi_t".  In operator*= use dense ublas::prod based on
	_GLUCAT_USE_DENSE_MATRIX_MULT but only if both *this and rhs are
	both "dense enough" -- defined as nnz is at least half the number of
	entries in the matrix.  Make fast() faster: In fast() define I_x,
	j_x, k_x, jk_x to be Scalar_T when possible.  In fast() use
	framed_multi_t operator+= with term_t. and use framed_multi_t
	operator+= with framed_multi_t.  Cosmetic: Prefer T a = T(..) form
	of non-default construction; the form T a(..) is sometimes confused
	with a function declaration.  Prefer const index_set_t to const
	index_set_t& - ie. pass index_set_t by value rather than reference.
	Prefer const matrix_t& to const matrix_t, ie. use const references
	for constant matrices.  Cosmetic: In constructors which use the
	constant frame parameter frm, prefer using this parameter to using
	m_frame.  Cosmetic: Rename pair_t to term_t.  Cosmetic: Prefer
	Scalar_T to scalar_t.  Cosmetic: Prefer Scalar_T(1) to 1 etc., where
	applicable.  Cosmetic: Use this-> more consistently.  Update
	copyright notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Give "Construct a multivector from an index
	set and a scalar coordinate" a default value of Scalar_T(1) for the
	coordinate.  Define the type dense_matrix_t to use for dense
	matrices.  Rename pair_t to term_t.  Prefer const index_set_t to
	const index_set_t& - ie. pass index_set_t by value rather than
	reference.  Update copyright notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_imp.h: Make nork faster: iterate over sparse
	rhs_range rather than scaling and adding whole range.  Make kron and
	inner match naming conventions used by nork.  Prefer const Scalar_T&
	to const Scalar_T, ie. use const references for constant scalars.
	Cosmetic: Prefer T a = T(..) form of non-default construction; the
	form T a(..) is sometimes confused with a function declaration.
	Cosmetic: Prefer Scalar_T to scalar_t.  Cosmetic: Prefer
	Scalar_T(-1) to Scalar_T(-1.0) etc.  Cosmetic: In nork, using
	"ublas::range" rather than "using namespace ublas".  Update
	copyright notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Add bool member function is_contiguous
	("Determine if the index set is contiguous, ie. has no gaps").  Use
	more efficient form of construcor from bitset_t.  Update copyright
	notice.  Drop old email address.  Cosmetics.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h: Add bool member function is_contiguous
	("Determine if the index set is contiguous, ie. has no gaps").
	Update copyright notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: Drop calls to resize() -- these were
	redundant.  Cosmetic: Prefer T a = T(..) form of non-default
	construction; the form T a(..) is sometimes confused with a function
	declaration.  Update copyright notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: "Construct a multivector from an index
	set and a scalar coordinate" now has a default value of Scalar_T(1)
	for the coordinate.  Cosmetic: Rename pair_t to term_t.  Make
	var_pair_t into the nested class var_term_t, including operator*=
	which multiplies by a term_t.  Delete operator* for var_pair_t.
	Make operator*= faster: use direct multiply whenever product is
	sparse and hash_map is being used; use this->clear() in array mult;
	In operator*= rename array_size to algebra_dim and rename
	result_pair to result_term.  Make operator== ("Test for equality of
	multivector and scalar") faster: Switch on this->size() and avoid
	calling this->frame().  Make fold and unfold faster: test if frame
	is contiguous and return *this if it is.  Make centre_pm4_qp4,
	centre_pp4_qm4, centre_qp1_pm1 faster: use var_pair_t, operator*=,
	and const references.  Make fast_matrix_multi faster: use
	bott_offset rather than bott, use a constructor rather than a
	variable to return result.  In fast_matrix_multi, use correct
	function name in error messages.  Prefer const index_set_t to const
	index_set_t& - ie. pass index_set_t by value rather than reference.
	Prefer const Scalar_T& to const Scalar_T, ie. use const references
	for constant scalars.  Prefer const matrix_t& to const matrix_t, ie.
	use const references for constant matrices.  Prefer index_t to int
	where applicable.  Rely on default contruction of multivector_t as
	0, where applicable.  Prefer const const_iterator& to const_iterator
	where applicable.  Use a more efficient form of constructor for
	sorted_range.  Cosmetic: Prefer T a = T(..) form of non-default
	construction; the form T a(..) is sometimes confused with a function
	declaration.  Cosmetic: Prefer Scalar_T(-1) to Scalar_T(-1.0) etc.
	Cosmetic: Prefer Scalar_T(1) to 1 etc., where applicable.  Cosmetic:
	Use Map_T and Sorted_Map_T as template parameter names.  Cosmetic:
	Use this-> more consistently.  Update copyright notice.  Drop old
	email address.  Cosmetics.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: Give "Construct a multivector from an index
	set and a scalar coordinate" a default value of Scalar_T(1) for the
	coordinate.  Cosmetic: Rename pair_t to term_t.  Make var_pair_t
	into the nested class var_term_t, including operator*= which
	multiplies by a term_t.  Delete operator* for var_pair_t.  Define
	size_type.  Make operator+= ("Add a term, if non-zero") public
	rather than private, to allow fast() in matrix_multi_imp.h to use
	this operator.  Prefer const index_set_t to const index_set_t& - ie.
	pass index_set_t by value rather than reference.  Update copyright
	notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Prefer const Scalar_T& to const
	Scalar_T, ie. use const references for scalars.  Update copyright
	notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h: Prefer const index_set_t to const
	index_set_t& - ie. pass index_set_t by value rather than reference.
	Update copyright notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.cpp, glucat/errors.h, glucat/errors_imp.h,
	glucat/generation.h, glucat/global.h, glucat/glucat.h,
	glucat/glucat_imp.h, glucat/long_double.h, glucat/matrix.h,
	glucat/scalar.h, squaring/squaring.cpp, squaring/tuning.h,
	test/driver.h, test/try_catch.h, test01/peg01.cpp, test01/peg01.h,
	test02/peg02.cpp, test02/peg02.h, test03/peg03.cpp, test03/peg03.h,
	test04/peg04.cpp, test05/peg05.cpp, test05/peg05.h,
	test06/peg06.cpp, test06/peg06.h, test07/peg07.cpp,
	test08/peg08.cpp, test08/peg08.h, test09/peg09.cpp, test09/peg09.h,
	test10/peg10.cpp, test10/peg10.h, test11/peg11.cpp, test11/peg11.h,
	test12/peg12.cpp, test12/peg12.h, test13/peg13.cpp, test13/peg13.h,
	test14/peg14.cpp, test14/peg14.h, test15/peg15.cpp, test15/peg15.h,
	test16/peg16.cpp, test16/peg16.h, transforms/transforms.cpp,
	transforms/transforms.h: Update copyright notice.  Drop old email
	address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test07/peg07.h: Correct write statement to read "u*x*reverse(u) |
	u*y*reverse(u) =".  Update copyright notice.  Drop old email
	address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test04/peg04.h: Move declaration of F into block to prevent
	shadowing.  Update copyright notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/squaring.h: Use only one cpu_time variable to prevent
	shadowing.  Update copyright notice.  Drop old email address.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.h: Test GFFT with frames which are not
	contiguous.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-8.out,
	test_runtime/test.out, test_runtime/transforms-6.out: Update to
	GluCat 0.2.1.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Makefile.am: Remove glucat.kdevelop from EXTRA_DIST.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS, TODO, glucat.kdevelop, glucat.lsm: Update to GluCat version
	0.2.1.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, README: Update to GluCat version 0.2.1.  Describe
	--with-dense-mult and _GLUCAT_USE_DENSE_MATRIX_MULT.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile: Update to GluCat version 0.2.1.  Clean up paths.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Extensive changes: Update to GluCat
	version 0.2.1.  Quote names used in AC_DEFUN.  Add optional argument
	--with-dense-mult corresponding to variable
	glucat_use_dense_matrix_mult.  Use variable
	glucat_use_dense_matrix_mult to decide when to add
	-D_GLUCAT_USE_DENSE_MATRIX_MULT to CXXFLAGS.  Drop support for KAI
	C++. GluCat was never tested with KAI C++, and Intel has effectively
	replaced it with Intel C++.  Change preferred name for Intel C++
	from "icc" to "icpc" as per Intel documentation.  Check Intel C++
	version and store it in icpcversion.  When icpcversion is between
	"8" and "9" use -fabi-version=1 rather than -fabi-version=0.  Use
	AC_CONFIG_HEADERS rather than obsolete AM_CONFIG_HEADER.  Change
	name of GLUCAT_PROG_LIBTOOL to AC_GLUCAT_PROG_LIBTOOL.  Move
	AC_PROG_PP after test for kde_use_debug_code.  Remove
	-I/usr/local/include from CXXFLAGS. GluCat configure has never
	checked if this include helped.  Change references to $GCC to $GXX
	in tests which affect CXXFLAGS.  Clean up lines which were commented
	out.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4: (auto generated file) Remove reference to
	AM_CONFIG_HEADER.

2007-01-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* acinclude.m4: Quote names used in AC_DEFUN.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to GluCat 0.2.0.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test01/peg01.cpp, test02/peg02.cpp, test03/peg03.cpp,
	test04/peg04.cpp, test05/peg05.cpp, test06/peg06.cpp,
	test07/peg07.cpp, test08/peg08.cpp, test09/peg09.cpp,
	test10/peg10.cpp, test12/peg12.cpp, test13/peg13.cpp,
	test15/peg15.cpp, test16/peg16.cpp: Move test function from header
	file to source file.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/transforms.h: Move test function from header to source
	file.  Define template functions as static.  Use streamsize.  Use
	cout.precision().

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/squaring.cpp, transforms/transforms.cpp: Move test
	function from header to source file.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-8.out,
	test_runtime/test.out, test_runtime/transforms-6.out: Update test
	results.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/peg11.cpp: Move test function from header to source file.
	Force NDEBUG to be defined, to turn off spurious checking in uBLAS
	sparse_prod().

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test01/peg01.h, test02/peg02.h, test03/peg03.h, test04/peg04.h,
	test05/peg05.h, test06/peg06.h, test07/peg07.h, test08/peg08.h,
	test09/peg09.h, test10/peg10.h, test11/peg11.h, test12/peg12.h,
	test13/peg13.h, test14/peg14.h, test15/peg15.h, test16/peg16.h: Move
	test function from header to source file.  Define template functions
	as static.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test14/peg14.cpp: Move test function from header file to source
	file.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/try_catch.h: Define function prototypes.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/squaring.h: Move test function from header to source
	file.  Define template functions as static.  Define and use const
	RAND_SCALE.  Use streamsize.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/scalar.h: Add Doxygen description of log2().  Do not use
	const for results of functions which return a scalar.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Remove workarounds for old compilers.
	Suppress spurious Intel compiler warnings.  Define ISNAN(x) macro
	which uses isnan(x) macro if available, and otherwise uses
	std:isnan(x).

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Use index_t for bott.  Define template
	functions as static if they are intended to be used only within the
	header file.  In calls to resize, use third parameter set to false.
	Use std::numeric_limits<Scalar_T>::has_quiet_NaN and
	numeric_traits<Scalar_T>::isNaN().  Use index_t for variables p, q,
	orig_p, orig_q, old_p.  Use explicit casts to index_t.  Cosmetics.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Do not use friend_maker.  Define
	numeric_limits< glucat::matrix_multi<Scalar_T,LO,HI> >.  Cosmetics.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_imp.h: Do not use const for results of functions
	which return a scalar.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h: Do not use const for results of functions which
	return a scalar.  Cosmetics.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h, glucat/long_double.h: Cosmetics.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Pass bitset_t, index_t, index_set_t and
	set_value_t by value.  Consistently use index_set_t rather than
	index_set.  Use const parameters where appropriate.  Use explicit
	casts to index_t.  Cosmetics.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h: Pass bitset_t, index_t, index_set_t and
	set_value_t by value.  Consistently use index_set_t rather than
	index_set.  Use const parameters where appropriate.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat_imp.h: Move ublas includes from glucat/glucat.h.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: Include <boost/config.hpp>.  Include <cmath>
	rather than <math.h> Move includes for glucat/long_double.h and
	glucat/scalar.h closer to the start.  Move ublas includes to
	glucat/glucat_imp.h and replace with include for
	<boost/numeric/ublas/fwd.hpp>.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Use glucat::CTAssertion<(expr)> instead of
	CTAssertion<(expr)>.  Define template class bool_to_type<>.  Define
	template class numeric_traits<T>, including function isNaN().
	Define type index_t to be int rather than short.  Cosmetics.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: Use index_t for offset_to_super[].  In
	calls to resize, use third parameter set to false.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation.h: Use index_t for offset_to_super[].

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: In operator<<(), use isnan() and
	std::numeric_limits<Scalar_T>::quiet_NaN().  In isnan(), use
	std::numeric_limits<Scalar_T>::has_quiet_NaN and
	numeric_traits<Scalar_T>::isNaN().  In operator>>(), use int c to
	hold the result of s.peek().  In truncated(), use isnan().  In
	centre_pm4_qp4(), centre_pp4_qm4(), centre_qp1_pm1(), use index_t
	for arguments p and q.  Consistently use Scalar_T rather than
	scalar_t.  Cosmetics.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: Do not use friend_maker.  In
	centre_pm4_qp4(), centre_pp4_qm4(), centre_qp1_pm1(), use index_t
	for arguments p and q.  Tidy use of _GLUCAT_USE_GNU_CXX_HASH_MAP.
	Define numeric_limits< glucat::framed_multi<Scalar_T,LO,HI> >.
	Cosmetics.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Define template functions as static
	if they are intended to be used only within the header file.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.h: Move test function from header to source
	file.  Define template functions as static.  Use
	std::numeric_limits<int>.  Use streamsize.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.cpp: Move test function from header to source
	file.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/Makefile.in, squaring/Makefile.in, test/Makefile.in,
	test01/Makefile.in, test02/Makefile.in, test03/Makefile.in,
	test04/Makefile.in, test05/Makefile.in, test06/Makefile.in,
	test07/Makefile.in, test08/Makefile.in, test09/Makefile.in,
	test10/Makefile.in, test11/Makefile.in, test12/Makefile.in,
	test13/Makefile.in, test14/Makefile.in, test15/Makefile.in,
	test16/Makefile.in, transforms/Makefile.in: Update to automake
	1.9.6.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.lsm: Update to GluCat 0.2.0.  Update author contact.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.kdevelop: Update to GluCat 0.2.0.  Update author contact.
	Set main program to gfft_test/gfft_test.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, NEWS, README, TODO, configure.in, configure.in.in: Update
	to GluCat 0.2.0.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4: Update to aclocal 1.9.6, automake 1.9.6.

2006-12-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile: Update to GluCat 0.2.0.  Use source browser.  Generate
	LaTeX.

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Re-add changes logged prior to the use of CVS.

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Log changes for version 0.1.9.

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/ublas_imp.h: Ensure this file is removed.

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* README: Remove references to  _GLUCAT_HAS_UBLAS_LU_H

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: News for version 0.1.9.

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: Bring instructions up to date with changes to g++ and
	Boost.

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/ublas.h: Ensure this file has been removed.

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.h.in: Remove reference to HAVE_BOOST_NUMERIC_UBLAS_LU_HPP

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Only use -fno-strict-aliasing with
	g++ 4.0.0 and g++ 4.0.1. Gcc bug 23599 has apparently been fixed for
	g++ 4.0.2.  Remove tests for and references to
	_GLUCAT_HAVE_UBLAS_LU_H

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat_imp.h: Remove reference to ublas_imp.h

2005-08-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: Remove references to ublas.h and
	_GLUCAT_HAVE_UBLAS_LU_H

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-8.out,
	test_runtime/test.out, test_runtime/transforms-6.out: Update tests
	using g++ 3.3.5 and Boost 1.31.0.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Makefile.am: Update to current KDevelop.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.lsm: Update to version 0.1.9.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.kdevelop: Update to version 0.1.9.  Update to current
	KDevelop.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile: Fix project name to read "glucat".  Fix STRIP_FROM_PATH.
	Update to version 0.1.9.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Use -fno-strict-aliasing with g++
	4.0.X.  Use Wstrict-aliasing=2 with g++ 4.X.  Update to version
	0.1.9.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4, gfft_test/Makefile.in, squaring/Makefile.in,
	test/Makefile.in, test01/Makefile.in, test02/Makefile.in,
	test03/Makefile.in, test04/Makefile.in, test05/Makefile.in,
	test06/Makefile.in, test07/Makefile.in, test08/Makefile.in,
	test09/Makefile.in, test10/Makefile.in, test11/Makefile.in,
	test12/Makefile.in, test13/Makefile.in, test14/Makefile.in,
	test15/Makefile.in, test16/Makefile.in, transforms/Makefile.in: Use
	new version of automake (1.9.5).

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test16/peg16.cpp: Add #include required for Boost 1.33.0.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: In constructor from matrix_multi,
	invoke basis_element() as a member function of matrix_multi, and
	remove unnecessary <Scalar_T> qualifier.  In operator==(), use the
	name this_it consistently.  In operator*=(), do not assume that stv
	gives an index_set within our_frame.  In operator>>(), define
	multivector_t and pair_t, and add terms by using pair_t rather than
	multivector_t.  Make frame(), fold() and unfold() into inline
	functions.  Cosmetic changes.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: Use private rather than public / private
	workaround.  Cosmetic changes.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h: Make some comments visible to Doxygen.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Interface changes: Make basis_element()
	into a private member function of matrix_multi, remove the parameter
	m_frame and replace with this->m_frame.  Add the template parameter
	Matrix_T to basis_table.  Implementation changes.  In constructor
	from matrix_multi, remove the unnecessary call to resize.  In
	operator==(), since Boost 1.33.0 no longer defines ublas::equals,
	use iterators to compare matrices.  In operator+=(), if neither this
	nor rhs has same frame as the common frame, then do the addition
	using framed_multi.  Similarly for operator-=().  In operator[](),
	vector_part() and operator+=(const pair_t&), remove the unnecessary
	<Scalar_T> qualifier from basis_element().

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Make basis_element() into a private member
	function of matrix_multi, remove the parameter m_frame and replace
	with this->m_frame.  Cosmetic changes.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: In hash_fn(), change the definition of
	lo_mask to match the shift given to pos_part.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Rearrange declarations to avoid problems
	with public / private.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Remove incorrect workaround for public /
	private with different compiler versions.  Restrict workaround for
	g++ 3.2 typename bug to g++ 3.X only.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: Add #includes for compatibility with Boost
	1.33.0.

2005-08-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: In generator_table<Matrix_T>::operator()
	delete superfluous break statements from switch: these gave warning
	messages in g++ 4.XX.

2005-07-17  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.h.in: Re-add forgotten file

2004-08-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes for GluCat 0.1.8

2004-08-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Reflect chage in inlining

2004-08-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: For g++ versions before 3.3 use an
	inline limit of 1200 rather than 2400

2004-08-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes for GluCat 0.1.8

2004-08-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Reflect recent changes

2004-08-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Check for g++ version.  Do nothing
	with version for now

2004-08-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-8.out,
	test_runtime/transforms-6.out: Bring test results up to date

2004-08-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Revert changes to operator==, operator!=.
	Streamline sign_of_mult

2004-08-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Small speedup in geometric product

2004-08-06  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Minor optimizations to sign_of_mult().
	Clean up some constructors, operator==, operator!=

2004-08-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-8.out,
	test_runtime/transforms-6.out: Update timing test results to reflect
	changes

2004-08-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes for GluCat 0.1.8

2004-08-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Remove news of reverted changes

2004-08-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Change -finline-limit back to 2400.
	The value 3000 was too high for g++ 3.2 on Red Hat.

2004-08-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Revert changes to operator+= and
	operator-=

2004-08-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes for GluCat 0.1.8

2004-08-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-8.out,
	test_runtime/transforms-6.out: Update timing test output to reflect
	change to constructor for matrix_multi<>

2004-08-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Update to GluCat version 0.1.8

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes for GluCat 0.1.8

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes for GluCat 0.1.8

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Use resize() in constructor to ensure
	that matrix has correct size

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: News items for GluCat 0.1.8

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-6.out,
	test_runtime/squaring-8.out, test_runtime/test.out,
	test_runtime/transforms-6.out: Test output for GluCat 0.1.8

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: The subscripting operator [] for
	matrix_multi<> now works properly for index sets not contained in
	m_frame.  Minor speed improvements for some constructors and for the
	operators += and -=

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: The stream input operator >> now works
	properly with strings of the form "1,2" as well as "{1,2}".

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Minor speed improvement in left
	contraction

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.h, glucat/errors.h, glucat/errors_imp.h,
	squaring/squaring.h, test/Makefile.am, test/Makefile.in,
	test/driver.h, test/try_catch.h, transforms/transforms.h: Move the
	try_catch functions from glucat/errors.h and glucat/errors_imp.h to
	the new file test/try_catch.h

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Inline more agressively

2004-07-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, glucat.kdevelop, glucat.lsm: GluCat version 0.1.8

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update for version 1.7 continued

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.kdevelop: Cosmetic changes resulting form quitting kdevelop

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: Update list of tested systems

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* README: Move Dependencies section to INSTALL

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update for version 0.1.7

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* README: New URL for John Fletcher

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test11/Makefile.in: Update autotools to 1.8.3

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Use AC_CHECK_HEADERS to check
	headers

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4, gfft_test/Makefile.in, squaring/Makefile.in,
	test/Makefile.in, test01/Makefile.in, test02/Makefile.in,
	test03/Makefile.in, test04/Makefile.in, test05/Makefile.in,
	test06/Makefile.in, test07/Makefile.in, test08/Makefile.in,
	test09/Makefile.in, test10/Makefile.in, test12/Makefile.in,
	test13/Makefile.in, test14/Makefile.in, test15/Makefile.in,
	test16/Makefile.in, transforms/Makefile.in: Update autotools to
	version 1.8.3

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: News for version 0.1.7

2004-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, glucat.kdevelop, glucat.lsm: Update to version 0.1.7

2004-05-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update using cvs2cl

2004-05-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h, glucat/matrix_multi.h,
	glucat/portability.h: Use _GLUCAT_USE_STRUCT_NAME to work around bug
	in g++ 3.2

2004-05-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update using cvs2cl

2004-05-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.kdevelop: Keep kdevelop3 project file up to date.

2004-05-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, NEWS, README: GluCat 0.1.6 now compiles under g++ 3.4.
	Update files to reflect this, update list of tested configurations.

2004-05-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Use more agressive inlining when
	optimizing. Change inline limit from 1600 to 2400.

2004-05-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Compilation with g++ 3.4 has been fixed.

2004-05-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: In operator<<(), insert keyword
	typename where g++ 3.4.0 requires it.  For function
	fast_framed_multi(), ensure function definition matches function
	declaration in the exact way that g++ 3.4.0 requires these to match.

2004-05-09  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: For functions fast() and
	fast_matrix_multi(), ensure function definition headers match
	function declarations in the exact way that g++ 3.4.0 requires these
	to match.

2004-05-08  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h, glucat/matrix_multi.h: Correct declarations
	of framed_multi<> and matrix_multi<> to allow compilation with g++
	3.4.0.

2004-05-08  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Delete line containing
	"mcmodel=medium".

2004-05-08  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, glucat.kdevelop, glucat.lsm: Update version to 0.1.6.

2004-05-08  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.kdevelop, glucat.kdevprj: Use kdevelop3 to control Doxygen.

2004-05-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update using cvs2cl

2004-05-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/Makefile.am, squaring/Makefile.in, test/Makefile.am,
	test/Makefile.in: Correct EXTRA_DIST

2004-05-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Do not use -mcmodel=medium.  Fix
	typo in comment

2004-05-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update using cvs2cl

2004-05-05  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, NEWS, README, TODO: Update testing and compilation status
	to reflect that g++ 3.3.3 works and g++ 3.4 does not work.

2004-04-18  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update using cvs2cl

2004-04-18  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS: Add tester. Add URL for BoostCliffordDiscussion.

2004-04-18  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Move KDE_CHECK_EXTRA_LIBS earlier.
	This allows $USER_INCLUDES to be used when searching for
	<boost/numeric/ublas/lu.hpp> so that configure will find it even if
	Boost headers are in a non-standard place, as long as the user has
	used --with-extra-includes.

2004-04-18  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/Makefile.am, gfft_test/Makefile.in,
	squaring/Makefile.am, squaring/Makefile.in, test01/Makefile.am,
	test01/Makefile.in, test02/Makefile.am, test02/Makefile.in,
	test03/Makefile.am, test03/Makefile.in, test04/Makefile.am,
	test04/Makefile.in, test05/Makefile.am, test05/Makefile.in,
	test06/Makefile.am, test06/Makefile.in, test07/Makefile.am,
	test07/Makefile.in, test08/Makefile.am, test08/Makefile.in,
	test09/Makefile.am, test09/Makefile.in, test10/Makefile.am,
	test10/Makefile.in, test11/Makefile.am, test11/Makefile.in,
	test12/Makefile.am, test12/Makefile.in, test13/Makefile.am,
	test13/Makefile.in, test14/Makefile.am, test14/Makefile.in,
	test15/Makefile.am, test15/Makefile.in, test16/Makefile.am,
	test16/Makefile.in, transforms/Makefile.am, transforms/Makefile.in:
	Define INCLUDES as $(all_includes) This causes $(all_includes) to be
	passed correctly to the compiler command line.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update using cvs2cl

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Add odd(): Odd part of multivector.  In
	operator==(), check if map is sorted and use appropriate algorithm.
	In operator*=(), use double() to check array sizes.  In
	operator()(), even(), odd() and vector_part(), use algorithm for
	unsorted map.  Use sorted_range<> as a helper for operator<<(), so
	that it works with both sorted and unsorted maps.  Tidy up fast().
	Use odd() to make fast_matrix_multi() faster.  Make iterator names
	consistent.  Make for loops consistently tidy.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: Make hash_map<> an optional base for
	framed_multi<>, depending on _GLUCAT_USE_GNU_CXX_HASH_MAP.  Change
	misleading parameter name in fast().

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h: Include <ext/hash_map> depending on
	_GLUCAT_USE_GNU_CXX_HASH_MAP.  Include
	<boost/numeric/ublas/operation.hpp> before
	<boost/numeric/ublas/lu.hpp>.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Add compare_types<> for type comparison.  Change
	tuning parameters to unsigned int.  Change default tuning parameter
	values.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Add odd(): Odd part of multivector.
	Make for loops consistently tidy.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Add hash_fn().  Make for loops
	consistently tidy.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_imp.h: In nork(), fix nnz_lhs, improve calculation
	of rhs_range.  Make for loops consistently tidy.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Add odd(): Odd part of multivector.
	Use odd() to make fast() faster, tidy up names in fast().  Make
	iterator names consistent.  Make for loops consistently tidy.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h: Add odd(): Odd part of multivector

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h: Add hash_fn()

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h, glucat/ublas_imp.h: Make for loops
	consistently tidy.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.h: Streamline testing.  Medium trials use more
	trials than before.  Aim is to get accurate, reproducible trial
	time.  Report number of trials used.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/tuning.h: Use different tuning policies controlled by
	preprocessor defines. This was used for testing as documented in the
	paper, "A generalized FFT for Clifford algebras".

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/squaring.h: Streamline test. Use multivector_t as name of
	type.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.cpp, transforms/transforms.cpp: Use try_catch

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-6.out,
	test_runtime/test.out, test_runtime/transforms-6.out: Test using
	hash_map on Athlon64 3200+

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/errors.h, glucat/errors_imp.h, test/driver.h: Move
	declaration of try_catch to errors.h and definition to errors_imp.h

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/squaring.cpp: Change misleading variable name

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/Makefile.in, squaring/Makefile.in, test/Makefile.in,
	test01/Makefile.in, test02/Makefile.in, test03/Makefile.in,
	test04/Makefile.in, test05/Makefile.in, test06/Makefile.in,
	test07/Makefile.in, test08/Makefile.in, test09/Makefile.in,
	test10/Makefile.in, test11/Makefile.in, test12/Makefile.in,
	test13/Makefile.in, test14/Makefile.in, test15/Makefile.in,
	test16/Makefile.in, transforms/Makefile.in: Update automake to 1.7.6

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: Update Boost instructions.  Update testing status.  Add
	description of --with-hash-map.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* README: Improve description of GluCat classes.  Update and
	rearrange web site and software references.  Update Boost
	instructions.  Update testing status.  Add descriptions of
	_GLUCAT_HAS_UBLAS_LU_H and _GLUCAT_USE_GNU_CXX_HASH_MAP to Usage.
	Move layout of headers to Coding standards.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Remove obsolete TODO items.  Add SWIG and CLU TODO items.
	Rearrange priorities.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS, glucat.lsm: Update to version 0.1.5

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS: Add Jan Cnops as author of recursive expression for
	matrix representation.  Add Henk Jansen as tester.  Add more GFFT
	references.  Fix punctuation.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4: Update to aclocal 1.7.6

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Doxyfile, glucat.doxygen: New name for Doxygen configuration file.
	Change GluCat version to 0.1.5.  Bring up to date.  Include new
	Doxygen capabilities.

2004-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Change GluCat version to 0.1.5.
	Add --with-hash-map, which sets $glucat_use_hash_map, which adds
	-D_USE_GLUCAT_GNU_CXX_HASH_MAP to CXXFLAGS.  Move test for
	<boost/numeric/ublas/lu.hpp> to an earlier part of configure.  Fix
	test for Woverloaded-virtual. Increase O3 -finline-limit to 1600.
	Add test for mcmodel=medium to support AMD64 medium model.

2003-07-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update using cvs2cl.pl

2003-07-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/gfft_test-10.out, test_runtime/squaring-6.out,
	test_runtime/test.out, test_runtime/transforms-6.out: Use test
	results from runs of this version.

2003-07-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: Update to version 0.1.4

2003-07-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.h: Make tests depend on template parameters
	rather than fixed typedefs.

2003-07-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Decrease DEFAULT_Inv_Fast_Dim_Threshold to 1 << 4

2003-07-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Minor tidy up. Define and use
	permutation_t.

2003-07-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Previous implementation was too slow.
	Optimize: o Use bitset_t as much as possible.  o New member function
	lex_less_than() o Make operator<() into a member function.

2003-07-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h: New index_set<> member function
	less_less_than. Make operator< into a member function.

2003-06-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update using cvs2cl.pl

2003-06-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Describe changes for version 0.1.4. Reformat.

2003-06-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.in, glucat.doxygen, glucat.kdevprj, glucat.lsm:
	Update to version 0.1.4

2003-06-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h, glucat/index_set.h, glucat/index_set_imp.h:
	Change mapping of index_set_t to bitset_t to make index 0 of
	index_set_t a "virtual" bit rather than a real dead bit of bitset_t.
	This allows DEFAULT_LO to be reduced by 1, and DEFAULT_HI to be
	increased by 1. For a 32 bit unsigned long, the default index_set_t
	is now index_set<-16,16>, using std::bitset<32> rather than
	index_set<-15,15>, using std::bitset<31>.

2003-06-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h: Reformat: change tabs to spaces, fold
	long lines, tidy up.

2003-06-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test.sh: Add to CVS. This should have been added for
	glucat-0.1.3 and tagged release_0_1_3

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update Changelog using cvs2cl.pl

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Correct a typo.

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update Changelog using cvs2cl.pl

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Correct news date

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, README: Update g++ version tested on alpha to 3.1

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set_imp.h: Use 1UL ((unsigned long) 1) in mask
	calculations. This is needed for Alpha, which is 64-bit, and is
	correct in all cases.

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.h: Remove unused constants v_lo and v_hi

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.kdevprj: Fix references to test04.  Add configure.in to
	project.

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Makefile.am: List all relevant directories, including test?? in
	SUBDIRS

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/Makefile.am, transforms/Makefile.in: Remove obsolete
	references to driver.h

2003-06-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/gfft_test.h: Remove unused variables pos_frame and
	outer_frame.

2003-06-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, README: Make instructions more accurate. Describe
	test_runtime.

2003-06-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/driver.h: Use default tuning for main tests and squaring
	test.

2003-06-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/test-6.out, transforms/transforms-6.out: Move all test
	output to test_runtime

2003-06-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test_runtime/eg3.res, test_runtime/eg8.txt,
	test_runtime/gfft_test-10.out, test_runtime/squaring-6.out,
	test_runtime/test.out, test_runtime/transforms-6.out: New directory
	for test input and output files.

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog, INSTALL, NEWS, README: Update to reflect changes to
	0.1.3

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h, glucat/index_set_imp.h: Add a constructor from
	bitset_t.  Optimize fold() and value_of_fold() by using bitset_t and
	masks.  Use this->etc() more consistently.

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h, glucat/matrix_imp.h: Move ublas interface to
	ublas.h and ublas_imp.h.  New nnz() function: number of non-zeros.
	Optimize nork() for the monomial case, and use new nnz().  Optimize
	unit() by using ublas::identity_matrix() and declaring inline.

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Workaround change to gcc 3.3 which applies
	visibility rules more strictly, by defining _GLUCAT_PRIVATE to be
	public in this case.

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h, glucat/glucat_imp.h: Use updated uBLAS interface
	from Boost CVS when available, while remaining compatible with uBLAS
	from current Boost release 1.30.0: If _GLUCAT_HAVE_UBLAS_H  is
	defined, includer <boost/numeric/ublas/lu.hpp> Include new ublas.h
	and ublas_imp.h headers.

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Change lu_solve() to lu_substitute()
	and change permutation argument to lu_factorize() to match
	<boost/numeric/ublas/lu.h> Use optimized monomial version of nork().

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/ublas.h, glucat/ublas_imp.h: Move uBLAS interface to
	separate files to clean it up. Make uBLAS interface optional, used
	only if _GLUCAT_HAVE_UBLAS_LU_H is not defined. Change lu_solve() to
	lu_substitute() to match <boost/numeric/ublas/lu.h>

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Add fabi-version=0 to work around
	bug in gcc 3.3 where gcc 3.3 default is to match gcc 3.2 C++ abi,
	which is known to be broken.  Automatically configure updated uBLAS
	interface from Boost CVS while remaining compatible with uBLAS from
	current Boost release 1.30.0: Test for <boost/numeric/ublas/lu.hpp>
	and define _GLUCAT_HAVE_UBLAS_H if present.  Restructure tests.
	Update to version 0.1.3

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.kdevprj: Restructure tests. Update to version 0.1.3

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.doxygen, glucat.lsm: Update to version 0.1.3

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Makefile.am: Restructure tests

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* aclocal.m4: New aclocal version

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/driver.h: Restructure tests. Remove test includes from this
	file. Add try_catch() function.

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/transforms.h: Restructure transforms test. Add contents
	of old driver.h to this file.

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/Makefile.am: Restructure transforms test

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Restore correct file for this directory

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.in, transforms/Makefile.in: Add to CVS for
	consistency with other directories

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* gfft_test/Makefile.am, gfft_test/Makefile.in,
	gfft_test/gfft_test.cpp, gfft_test/gfft_test.h: Add gfft_test based
	on transforms test, but testing only gfft and inverse gfft.

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/transforms.cpp: Restructure transforms test: rename
	driver.cpp to transforms.cpp

2003-06-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/driver.cpp, transforms/driver.h: Restructure transforms
	test: remove driver files

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test01/Makefile.am, test01/Makefile.in, test01/peg01.cpp,
	test01/peg01.h, test02/Makefile.am, test02/Makefile.in,
	test02/peg02.cpp, test02/peg02.h, test03/Makefile.am,
	test03/Makefile.in, test03/peg03.cpp, test03/peg03.h,
	test04/Makefile.am, test04/Makefile.in, test04/peg04.cpp,
	test04/peg04.h, test05/Makefile.am, test05/Makefile.in,
	test05/peg05.cpp, test05/peg05.h, test06/Makefile.am,
	test06/Makefile.in, test06/peg06.cpp, test06/peg06.h,
	test07/Makefile.am, test07/Makefile.in, test07/peg07.cpp,
	test07/peg07.h, test08/Makefile.am, test08/Makefile.in,
	test08/peg08.cpp, test08/peg08.h, test09/Makefile.am,
	test09/Makefile.in, test09/peg09.cpp, test09/peg09.h,
	test10/Makefile.am, test10/Makefile.in, test10/peg10.cpp,
	test10/peg10.h, test11/Makefile.am, test11/Makefile.in,
	test11/peg11.cpp, test11/peg11.h, test12/Makefile.am,
	test12/Makefile.in, test12/peg12.cpp, test12/peg12.h,
	test13/Makefile.am, test13/Makefile.in, test13/peg13.cpp,
	test13/peg13.h, test14/Makefile.am, test14/Makefile.in,
	test14/peg14.cpp, test14/peg14.h, test15/Makefile.am,
	test15/Makefile.in, test15/peg15.cpp, test15/peg15.h,
	test16/Makefile.am, test16/Makefile.in, test16/peg16.cpp,
	test16/peg16.h: Move tests to separate subdirectories.

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* squaring/Makefile.am, squaring/Makefile.in,
	squaring/squaring.cpp, squaring/squaring.h, squaring/test-6.out: Try
	again. Moving squaring test to squaring subdirectory.

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/squaring.cpp: Try again. Moving squaring test to squaring
	subdirectory.

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am, test/squaring.cpp: Try again. Moving squaring
	test to squaring subdirectory.

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/driver.h: Re-add file accidentally removed

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/squaring.cpp: Try again. Moving squaring test to squaring
	subdirectory.

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/squaring.cpp: New driver for squaring test

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/driver.cpp, test/driver.h, test/squaring.h: Remove files
	accidentally added to these directories

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/eg3.res, test/eg8.txt, test/test.out: Remove files
	accidentally added to this directory

2003-06-19  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/squaring.h: Move squaring test to squaing subdirectory

2003-06-18  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/squaring.h, test/test-6.out: Move squaring test header and
	output to squaring subdirectory

2003-06-18  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/peg01.h, test/peg02.h, test/peg03.h, test/peg04.h,
	test/peg05.h, test/peg06.h, test/peg07.h, test/peg08.h,
	test/peg09.h, test/peg10.h, test/peg11.h, test/peg12.h,
	test/peg13.h, test/peg14.h, test/peg15.h, test/peg16.h: Move test
	headers to test?? subdirectories

2003-03-02  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, README: Update to reflect testing with  Boost RC_1_30_0

2003-03-02  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test-6.out, transforms/transforms-6.out: Update test results
	to reflect use of Boost RC_1_30_0

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Reflect changes to 0.1.2

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test-6.out, test/test.out: Test results for version 0.1.2

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/transforms-6.out: Results of running
	./transforms/transforms 6 when compiled with g++ -O3

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS, INSTALL, NEWS, README, TODO: Reflect changes to version
	0.1.2

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.doxygen, glucat.kdevprj, glucat.lsm: Update to version
	0.1.2

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in: Handle differences in platforms and
	options here rather than in Makefile.am

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Makefile.am: Add transforms directory.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h, glucat/framed_multi_imp.h: Add generalized
	FFT fast_matrix_multi(frm) Add fast_framed_multi(), which creates a
	copy of *this.  Add private member functions used by
	fast_matrix_multi(frm), including the recursive function fast(),
	which almost all the work.  Use generalized FFT in constructors from
	matrix_multi<>.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/transforms.h: Change output format to make it narrower
	and easier to read.  Rename variables to make naming more
	consistent.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/Makefile.am: Change name of program to transforms.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Simplify. ./configure now takes care of
	differences between platforms and options.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/driver.h: Add Tune_P template parameters for generalized FFT.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/driver.cpp: Cosmetic change.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/peg03.h: Change template to relax constraints on LO and HI.
	They don't work well with generalized FFT and are not really needed
	anyway.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Add offset_level(). Move folded_dim()
	from generation.h.  Add fast_matrix_multi(frm), which creates a copy
	of *this within frm.  Use generalized FFT in constructors from
	framed_multi<>.  Add inverse generalized FFT fast_framed_multi().
	This uses the new recursive function fast() to do almost all the
	work.  In operator/=, use ublas::norm_inf() rather than
	ublas::norm_2().  Use namespace gen:: where needed.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Add fast_matrix_multi(frm), which creates a
	copy of *this within frm.  Add inverse generalized FFT
	fast_framed_multi().

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Fix bug in tuning<> policy class where default
	was always used in enumerations, regardless of template parameters.
	Add tuning for generalised FFT and inverse generalized FFT. Tweak
	default values for tuning parameters to take account of generalised
	FFT and its inverse.  Move pos_mod() to this file.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h, glucat/matrix_imp.h: Add nork() - left inverse of
	Kronecker product kron(). Change call to ublas::sparse_prod() to
	match changes to uBLAS in Boost CVS.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation.h, glucat/generation_imp.h: Hide contents inside
	namespace gen. Add the offset_to_super[] table to the interface.
	Move pos_mod() to global.h. Remove folded_dim().

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/errors.h, glucat/errors_imp.h: Generalize glucat_error by
	adding a context string. This can be used for the classname(), as
	previously, or for a different context string. This allows
	glucat_error to be used where classname() does not exist or is
	otherwise misleading.

2003-03-01  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h, glucat/index_set_imp.h: Add index_set
	complement (operator~, not) and intersection (operator&=, operator&,
	and)

2003-02-25  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* transforms/Makefile.am, transforms/driver.cpp,
	transforms/driver.h, transforms/transforms.h: New directory
	./transforms for generalized FFT test

2003-02-25  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am, test/driver.cpp, test/driver.h: Re-add files
	which were accidentally deleted from CVS repository.

2003-02-25  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/.cvsignore, test/Makefile.am, test/driver.cpp, test/driver.h:
	New directory ./transforms for generalized FFT test program.

2003-01-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes up to GluCat 0.1.1

2003-01-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: More accurate installation instructions, including a
	warning not to set -finline-limit too high with Red Hat g++ 2.96

2003-01-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Change order of TODO items

2003-01-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test-6.out: Update timing test results to new format

2003-01-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/squaring.h: Change use of fixed and showpoint to ensure that
	timing test compiles and runs correctly with RedHat g++ 2.96

2003-01-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/driver.h: Change DRIVER_BASIS_MAX_COUNT from 8 to 9 to partly
	compensate for the change to global.h

2003-01-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Simplify build flags.  Use -O3 and
	-finline-limit=900 for g++ production build

2003-01-11  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Reduce DEFAULT_Basis_Max_Count from 10 to 8 to
	reduce default potential memory usage of basis cache.

2003-01-08  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Remove an item now done.  Update to include new priorities

2003-01-07  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Describe GluCat 0.1.1

2003-01-07  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/driver.h: Define DRIVER_BASIS_MAX_COUNT as an example of the
	use of Tune_P

2003-01-07  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Make tuning<> template and associated constants
	easier to use

2003-01-07  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Enhance basis_element() by using a basis_table as
	a cache Change default tuning constant names to DEFAULT_*

2003-01-07  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Enhance basis_element() by using a
	basis_table as a cache

2003-01-07  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/squaring.h: Make timing more accurate.  Make output format
	more consistent, neat and useful.

2003-01-07  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Make Makefile (hopefully) more robust

2003-01-07  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in, glucat.doxygen, glucat.kdevprj:
	Update to GluCat version 0.1.1

2002-12-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Include change to test/Makefile.am

2002-12-31  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Do not install glucat binary

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes up to GluCat 0.1.0

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Add news for GluCat 0.1.0

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test-6.out, test/test.out: Use GluCat 0.1.0 test output

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/peg11.h: Use std::numeric_limits<>::max()

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Use numeric_limits<>::quiet_NaN to
	return NaN when appropriate.  Use matrix:: explicitly rather than
	using namespace matrix.  Use ublas::equals().

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: Use matrix:: rather than using namespace
	matrix.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Use numeric_limits<>::quiet_NaN to
	return NaN when appropriate.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h, glucat/matrix_imp.h: Remove operator== - no
	longer needed

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/peg16.h: Use uBLAS rather than MTL.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/squaring.h: Clean up time_mult() interface.  Add input
	validation to prevent test with a value which is too big.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Add commented options for Intel C++, debugging,
	profiling.  Rearrange commented options.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, configure.in.in, glucat.kdevprj, glucat.lsm: Update
	to GluCat 0.1.0.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.doxygen: Update to GluCat 0.1.0.  Use newer version of
	Doxygen.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Remove items which are essentially done: Port to Intel C++
	is done. Port to MTL3 replaced by port to uBLAS.  Add a few new
	items, including better use of automake and autoconf.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, README: Update instructions and status to reflect the use
	of uBLAS, Boost CVS, g++ 3.2 and Intel C++ 7.0.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* AUTHORS: Add Joerg Walter and Carlos O'Ryan.  Sort credits
	alphabetically.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: Use uBLAS rather than MTL.  Prefer
	std::string to char* for classname.  Remove copy constructor - no
	longer needed.  Have basis_element() return matrix_t rather than
	void.  Remove dense_mult from operator *= - no longer needed.
	Operator /= now uses the whole matrix rather than a vector at a
	time.  Use namespace matrix.  Clean up interface to inner().  Clean
	up calls to folded_dim() and basis_element().  Use inline more
	appropriately.  Minor formatting changes.  Use namespace std for
	vector.

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Clean up call to basis_element()

2002-12-30  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h, glucat/matrix.h, glucat/matrix_imp.h:
	Clean up interface to inner().

2002-12-29  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: Use simplified mono_prod().

2002-12-29  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h, glucat/matrix_imp.h: Move swap_rows(),
	lu_factorize() and lu_solve() from ublas.h to matrix.h.  Rename
	compressed_prod() to sparse_prod().  Simplify interfaces of
	mon_prod() and sparse_prod().

2002-12-29  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/Makefile.am, glucat/glucat.h, glucat/glucat_imp.h,
	glucat/ublas.h, glucat/ublas_imp.h: Move swap_rows(), lu_factorize()
	and lu_solve() from ublas.h to matrix.h Remove ublas.h and
	ublas_imp.h

2002-12-29  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* subdirs: Remove autogenerated file.

2002-12-29  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Remove dense_matrix_t, sparse_matrix_t,
	col_matrix_t - no longer needed.

2002-12-29  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: Use uBLAS rather than MTL.  Use namespace
	std.  Use namespace matrix.  Use new kron() and unit() interfaces.
	Use inline more appropriately.  Minor formatting changes.

2002-12-29  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h: Use uBLAS rather than MTL.  Use new
	basis_element() interface.  Prefer std::string to char* for
	classname.  Prefer referencing to copying multivectors.  Use inline
	more appropriately.  Minor formatting changes.

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi.h: Prefer std::string to char* for classname.
	Use uBLAS rather than MTL.  Use _GLUCAT_PUBLIC for Intel C++
	compatibility.  Remove copy constructor - no longer needed.  Have
	basis_element() return matrix_t rather than void.  Minor formatting
	changes.

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/glucat.h, glucat/glucat_imp.h: Use UBLAS rather than MTL.

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.h, config.h.in, config.status, configure, libtool: Remove
	automatically generated files from CVS repository.

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_imp.h: Use uBLAS rather than MTL.  Use namespace
	matrix to reduce clutter in namespace glucat.  Remove
	is_perm_shaped() and is_singlet() as they are no longer needed.  Add
	operator==, mono_prod() and compressed_prod() for matrix
	expressions.  Change interface so that kron and unit return Matrix_T
	rather than void.

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h: Use uBLAS rather than MTL.  Use namespace matrix
	to reduce clutter in namespace glucat.  Remove is_perm_shaped() and
	is_singlet() as they are no longer needed.  Add operator==,
	mono_prod() and compressed_prod() for matrix expressions.  Change
	interface so that kron and unit return Matrix_T rather than void.
	Remove extraneous "using std::vector".

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation.h: Minor formatting changes.

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi.h: Prefer std::string to char* for classname.
	Make iterators public. Minor formatting changes.

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Use inline more appropriately.
	Prefer const referencing to copying multivectors. Minor formatting
	changes.

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/Makefile.am: uBLAS interface by Joerg Walter

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h, glucat/index_set_imp.h: Prefer std::string to
	char*

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/portability.h: Intel C++ compatibility: define
	_GLUCAT_PRIVATE to be public for Intel C++

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Increase default maximum steps of stepwise
	refinement used in division (from 3 to 4)

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation.h: Make single instance into a static member of
	generator_table

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h, glucat/errors.h, glucat/errors_imp.h:
	Prefer std::string to char*

2002-12-28  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/ublas.h, glucat/ublas_imp.h: uBLAS interface by Joerg
	Walter

2002-08-18  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Correct commenting

2002-08-18  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: Improve test build documentation, especially in relation
	to choices for CXXFLAGS

2002-08-18  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Create commented out choices for CXXFLAGS

2002-08-17  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes for version 0.0.7

2002-08-17  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, README: Update to correctly describe changes needed to
	Makefile.in to build the test on Compaq Alpha, and to build the
	timing test.

2002-08-15  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Changes up to version 0.0.7

2002-08-15  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/Makefile.am: Update for consistency

2002-08-15  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test-6.out, test/test.out: Update test output

2002-08-15  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Set default compile flags to -O -g

2002-08-15  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL, NEWS, README, TODO: Update documentation to reflect
	changes to version 0.0.7

2002-08-15  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.doxygen, glucat.kdevprj, glucat.lsm: Update to version
	0.0.7, using KDevelop 2.1.2

2002-08-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Simplify compile flags - reduce optimization and
	debugging

2002-08-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.log: Remove file apparently not needed

2002-08-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* acinclude.m4, aclocal.m4, config.h, config.log, configure.files,
	libtool, stamp-h1, subdirs: (Re)add files possibly needed by autoconf, automake or configure

2002-08-13  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in.in: Add file apparently needed by automake, autoconf
	or configure

2002-08-13  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Makefile.am, Makefile.dist, config.h.in, configure.in: Update to
	automake 1.6.3 and autoconf 2.52

2002-08-13  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* config.status, configure: Add files apparently needed by automake,
	autoconf or configure

2002-08-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* admin/ChangeLog, admin/Makefile.common, admin/acinclude.m4.in,
	admin/am_edit, admin/conf.change.pl, admin/config.guess,
	admin/config.pl, admin/config.sub, admin/configure.in.min,
	admin/cvs-clean.pl, admin/cvs.sh, admin/debianrules, admin/depcomp,
	admin/detect-autoconf.sh, admin/install-sh, admin/libtool.m4.in,
	admin/ltmain.sh, admin/missing, admin/mkinstalldirs, admin/ylwrap:
	Add files apparently needed by autoconf, automake or configure

2002-08-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* acinclude.m4.in: Remove file apparently no longer needed by
	autoconf, automake or configure

2002-08-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* acconfig.h, config.guess, config.sub, configure.in.no_shlib,
	install-sh, libtool.m4.in, ltconfig, ltmain.sh, missing,
	mkinstalldirs, stamp-h.in: Remove files apparently no longer needed
	by autoconf, automake or configure

2002-08-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/peg16.h: Improve compatibility with g++ 3.1.1 and hopefully
	also with standard C++'

2002-08-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h, glucat/clifford_algebra_imp.h,
	glucat/errors.h, glucat/errors_imp.h, glucat/framed_multi.h,
	glucat/framed_multi_imp.h, glucat/generation.h,
	glucat/generation_imp.h, glucat/index_set.h,
	glucat/index_set_imp.h, glucat/matrix_multi.h,
	glucat/matrix_multi_imp.h: Improve compatibility with g++ 3.1.1 and
	hopefully also with standard C++

2002-08-10  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Remove possible name clash by renaming CTAssert
	to _GLUCAT_CTAssert

2002-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to reflect change to NEWS

2002-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS: Update NEWS to reflect fix to elliptic()

2002-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to version 0.0.6

2002-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test-6.out, test/test.out: Update test output to reflect
	change in elliptic()

2002-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, glucat.doxygen, glucat.kdevprj, glucat.lsm: Update
	version

2002-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: Fix elliptic() to return a unit
	volume element I which commutes with the whole relevant subalgebra

2002-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation_imp.h: Use count_pos() and count_neg() in
	folded_dim()

2002-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/index_set.h, glucat/index_set_imp.h: Add count_pos() and
	count_neg(): count positive and negative indices

2002-04-14  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Update to include items listed in the coursework thesis,
	"Practical Computation with Clifford Algebras," submitted as part of
	the requirements for MScTech at UNSW.

2002-01-26  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Update to version 0.0.5

2002-01-26  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* INSTALL: Add instructions for g++ 3.0.X

2002-01-26  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* NEWS, README, TODO: Reflect that GluCat 0.0.5 is now compatible
	with g++ 3.0.3

2002-01-26  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, glucat.doxygen, glucat.kdevprj, glucat.lsm: Update
	version to 0.0.5

2002-01-26  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/Makefile.am: Adjust makefile to keep G++ 3.0.X inlining under
	control while optimizing as much as possible.

2002-01-26  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/driver.cpp, test/peg01.h, test/peg02.h, test/peg03.h,
	test/peg04.h, test/peg05.h, test/peg06.h, test/peg07.h,
	test/peg08.h, test/peg09.h, test/peg10.h, test/peg11.h,
	test/peg12.h, test/peg13.h, test/peg14.h, test/peg15.h,
	test/peg16.h, test/squaring.h: Make tests compatible with G++ 3.0.X
	by using namespace std where needed

2002-01-26  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra.h, glucat/clifford_algebra_imp.h,
	glucat/errors.h, glucat/errors_imp.h, glucat/framed_multi.h,
	glucat/framed_multi_imp.h, glucat/generation.h,
	glucat/generation_imp.h, glucat/index_set.h,
	glucat/index_set_imp.h, glucat/matrix_multi.h,
	glucat/matrix_multi_imp.h, glucat/portability.h: Make library
	compatible with G++ 3.0.X by using std:: where needed

2002-01-24  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Use cvs2cl. Unfortunately this loses changes from 0.0.1
	to 0.0.2.  Update for version 0.0.4

2002-01-24  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test-6.out, test/test.out: Update test results

2002-01-24  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: Update to reflect that ithe rreducible real representation
	has been implemented.

2002-01-24  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.lsm: Update to version 0.0.4

2002-01-24  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, glucat.doxygen, glucat.kdevprj: Update version to
	0.0.4

2002-01-24  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/Makefile.am: Add generation.h and generation_imp.h to
	Makefile

2002-01-24  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/generation.h, glucat/generation_imp.h,
	glucat/matrix_multi_imp.h: Define class generator_table<> and
	singleton generator<>()

2002-01-24  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/global.h: Change CTChecker to CTAssertion to avoid clash
	with POOMA when using namespace glucat

2002-01-23  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/squaring.h: Take account of irredicible representations by
	testing Cl(n,0)

2002-01-23  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/framed_multi_imp.h, glucat/generation.h,
	glucat/generation_imp.h, glucat/global.h, glucat/glucat.h,
	glucat/glucat_imp.h, glucat/matrix.h, glucat/matrix_imp.h,
	glucat/matrix_multi.h, glucat/matrix_multi_imp.h: matrix_multi<> now
	uses real irreducible representation per Porteous and Lounesto.

2002-01-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix.h, glucat/matrix_imp.h: Optimize and clean up gen()
	and gengen() before implementing irreducible real representation.

2002-01-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in, glucat.doxygen: Update version to 0.0.3

2002-01-22  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure: Remove configure: file is auto generated

2002-01-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Add comment on change to norm() in matrix_multi_imp.h

2002-01-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* test/test-6.out, test/test.out: Version 0.0.3 test output

2002-01-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Keep style consistent

2002-01-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.lsm: Update to version 0.0.3

2002-01-21  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: Document version 0.0.3

2002-01-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat.kdevses: Remove irrelevant KDevelop session file

2002-01-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/matrix_multi_imp.h: operator==: fix use of const_iterators
	norm: optimize by using inner()

2002-01-20  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* glucat/clifford_algebra_imp.h: cos, sin: bring real part into
	range 0 <= x < 2*pi

2002-01-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure, glucat.kdevprj: Get ready for release 0.0.2

2002-01-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* TODO: update

2002-01-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* ChangeLog: updated

2002-01-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* configure.in: Remove unused doc directory

2002-01-12  Paul C. Leopardi <leopardi@users.sourceforge.net>

	* Add glucat to cvs

2002-01-12 leopardi

        * .cvsignore, AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am,
          Makefile.dist, NEWS, README, TODO, acconfig.h, acinclude.m4.in,
          config.guess, config.h.in, config.sub, configure, configure.in,
          configure.in.no_shlib, glucat.directory, glucat.doxygen,
          glucat.kdevprj, glucat.kdevses, glucat.lsm, install-sh,
          libtool.m4.in, ltconfig, ltmain.sh, missing, mkinstalldirs,
          stamp-h.in, glucat/.cvsignore, glucat/Makefile.am,
          glucat/clifford_algebra.h, glucat/clifford_algebra_imp.h,
          glucat/errors.h, glucat/errors_imp.h, glucat/framed_multi.h,
          glucat/framed_multi_imp.h, glucat/global.h, glucat/glucat.h,
          glucat/glucat_imp.h, glucat/index_set.h, glucat/index_set_imp.h,
          glucat/long_double.h, glucat/matrix_multi_imp.h, glucat/matrix.h,
          glucat/matrix_imp.h, glucat/matrix_multi.h, glucat/portability.h,
          glucat/scalar.h, glucat/templates/.cvsignore,
          glucat/templates/cpp_template, glucat/templates/header_template,
          test/.cvsignore, test/Makefile.am, test/driver.cpp,
          test/driver.h, test/eg3.res, test/eg8.txt, test/peg01.h,
          test/peg02.h, test/peg03.h, test/peg04.h, test/peg05.h,
          test/peg06.h, test/peg07.h, test/peg08.h, test/peg09.h,
          test/peg10.h, test/peg11.h, test/peg12.h, test/peg13.h,
          test/peg14.h, test/peg15.h, test/peg16.h, test/squaring.h,
          test/test-6.out, test/test.out, test/templates/.cvsignore,
          test/templates/cpp_template, test/templates/header_template:
          Initial revision

2002-01-12 leopardi

        *  Update version to 0.0.2

2002-01-12  leopardi

        * ./test/test.out, test6.out: Add sample output

2002-01-12  leopardi

        * Add all relevant files to CVS

2002-01-12  leopardi

        * ./glucat/doc: remove unused directory

2002-01-11  leopardi

        * ./glucat/clifford_algebra_imp.h: Fix elliptic() to give a result which commutes

2002-01-11  leopardi

        * ./test/peg12.cpp: Change example name from "basis group" to "frame group"

2002-01-11  leopardi

        * ./test/peg13.cpp, peg14.cpp, peg15.cpp: Add cout << example name

2002-01-11  leopardi

        * ./test/peg16.cpp: Fix example name to read: Matrices of multivectors

2002-01-10  leopardi

        * ./README: Add -finline-limit-400

2002-01-09  leopardi

        * Release glucat-0.0.1