1.2.0 (<insert date>)
* Added a structure<T> template class for the easy creation of user-defined
algebraic classes.
-* Improved the speed of subs() and normal() by the use of maps instead of
- lists.
-* Many internal reorganizations and optimizations.
+* Added support for (acyclic) visitors, to allow cleaner implementations of
+ algebraic algorithms.
+* <iterators>
+* Completely revamped the implementation of expression output. It is now
+ possible to add new output formats, to change the behavior of predefined
+ formats at run-time, and to have different output styles for algebraic
+ functions.
+* Symbols can be made non-commutative.
+* Complex conjugation available.
+* Improved the speed of subs(), normal(), to_rational() and to_polynomial()
+ by the use of maps instead of lists. The old forms
+ subs(const lst & ls, const lst & lr, unsigned options)
+ to_rational/to_polynomial(lst & repl)
+ are still available for compatibility, but using the new forms
+ subs(const exmap & m, unsigned options)
+ to_rational/to_polynomial(exmap & repl)
+ is more efficient, especially when the number of replacements is large.
+* quo(), rem(), prem(), sprem(), decomp_rational(), unit(), content(),
+ primpart() and matrix::charpoly() now take a "const ex &" instead of a
+ "const symbol &".
+* <object fusion>
+* Lots of internal streamlining and optimizations.
* Caveats for class implementors:
- basic::copy() and basic::destroy() are gone; classes derived from
basic can use the defaults for the assignment operator and copy
constructor.
- - basic::subs() and basic::normal() take an 'exmap &' instead of two
- 'lst &'.
+ - basic::subs(), basic::normal(), basic::to_rational() and
+ basic::to_polynomial() take 'exmap' objects instead of lists.
- basic::subs() now descends into subexpressions (if accessible via
nops()/op()/let_op()). If you have a custom implementation of subs()
that calls basic::subs() after substituting subexpressions, this needs
to be changed to a call to subs_one_level().
+ - lst::thislst() and exprseq::thisexprseq() renamed to thiscontainer().
+ - thiscontainer() and associated constructors now take a std::auto_ptr.
+ - Overloading basic::print() is now deprecated. You should use
+ print_func<>() class options instead.
1.1.0 (3 April 2003)
* Removed deprecated macros is_ex_a, is_ex_exactly_a and friends for good.