As at GluCat 0.6.0, 2012-05-12:

Documentation:
o Write a programmer's guide with descriptions of usage via use cases.
o Provide better user documentation for PyCliCal.

Packaging:
o Simplify and improve the use of Autotools in configuring, building and
  installing GluCat and PyClical. Essentially a complete overhaul is needed.
o Improve the packaging of the example and test programs.

Portability:
o Build and test GluCat and PyClical using Intel C++, Clang (requested by
  John Fletcher), and Cygwin on Windows (requested by Alan Bromborsky).
o Port to other architectures and compilers which support template template
  parameters.

Interfaces:
  Downwards:
o Support later versions of Alglib and Boost numeric bindings
  (requested by John Fletcher).
o Support the use of C++11 std::unordered_map (requested by John Fletcher).
o Support the use of C++11 std:: random number generation
  (requested by John Fletcher).
o Investigate the use of Eigen as a replacement for uBLAS.

  Upwards:
o Expand the Cython-based Python extension module PyCliCal into a Sage interface.
o Try defining Boost concepts and more numeric traits so that GluCat can eventually
  become a Boost library.

Transcendental functions:
o Devise better algorithms and better implementations of existing algorithms for
  the transcendental functions. In particular, pay more attention to radius of
  convergence, condition number of matrices and poking out of the subalgebra.
o Investigate the use of matrix decompositions in the evaluation of transcentental
  functions. See N. J. Higham, Functions of Matrices: Theory and Computation, 2008.

Experimental:
o Try refactoring the relationship between matrix_multi, framed_multi and
  clifford_algebra to allow more flexibility with template parameters.
  Possibly use enable_if and SFINAE to do this.
o Try adding a Matrix_Tag template parameter to framed_multi and matrix_multi,
  to determine if matrix_t is compressed, dense, etc.
o Try removing the template parameters LO and HI from framed_multi and
  matrix_multi, and using DEFAULT_LO and DEFAULT_HI where these are needed in
  framed_multi.h, matrx_multi.h, etc.
o Try making Tune_P into a mixin policy class template parameter.
o Add operator| for geometric operations: return rhs * lhs * involute(inv(rhs))
o Add convenience constructors to index_set<>: index_set<>(int, int),
  index_set<>(int, int, int), ... etc.
o Try replacing multiplication by +/-1 within inner products by addition and
  subtraction.
o Try creating a class, vector_multi<>, which uses std::vector rather than
  std::map. This should be faster than framed_multi<>, if tuned properly, for
  full multivectors. For sparse multivectors, it may be slower.
