This file records noteworthy changes.
-0.8.4 (<date>)
+1.1.0 (3 April 2003)
+* Removed deprecated macros is_ex_a, is_ex_exactly_a and friends for good.
+* The scalar_products mechanism allows the specification of an index dimension.
+* Removed dirac_gamma6/7().
+* Added ex::to_polynomial().
+* subs() accepts an optional "options" argument. The option
+ subs_option::subs_algebraic enables "smart" substitutions in products and
+ powers.
+* Added stream manipulators "dflt", "latex", "python", "python_repr", "tree",
+ "csrc", "csrc_float", "csrc_double", "csrc_cl_N", "index_dimensions" and
+ "no_index_dimensions" to control the output format. Calling basic::print()
+ directly is now deprecated.
+* Made the hashing more simple and efficient.
+* Caveats for class implementors:
+ - basic::subs(): third argument changed from "bool" to "unsigned"
+ - unarchiving constructor and basic::unarchive(): "const" removed from
+ second argument
+ - basic::let_op() should only be implemented if write access to
+ subexpressions is desired
+ - simplify_ncmul() renamed to eval_ncmul()
+ - simplified_ncmul() renamed to hold_ncmul()
+ - nonsimplified_ncmul() renamed to reeval_ncmul()
+
+1.0.14 (1 March 2003)
+* Improved the C-source output: complex numbers are printed correctly (using
+ the STL complex<> template or cln::complex()), rational numbers use cl_RA()
+ in the CLN output, and small integers are printed in a more compact format
+ (e.g. "2.0" instead of "2.0000000e+00").
+* function_options::set_return_type() and function_options::do_not_evalf_params()
+ now actually work.
+
+1.0.13 (27 January 2003)
+* Contracting epsilon tensors with Euclidean indices now works.
+* Improved dummy index symmetrization in sums.
+* Added dirac_gammaL/R(), which can be used instead of dirac_gamma6/7()
+ but are single objects, to allow for a more compact notation of Dirac
+ strings.
+* Powers with negative numeric exponents are printed as fractions in the
+ LaTeX output.
+* Added symbolic_matrix() for the convenient creation of matrices filled
+ with symbols.
+* Added collect_common_factors() which collects common factors from the
+ terms of sums.
+* simplify_indexed() converts "gamma~mu*p.mu" to "p\".
+
+1.0.12 (30 October 2002)
+* Fixed a bug in power::expand() that could produce invalid expressions.
+* The input parser no longer ignores extra data following accepted input.
+* Improved the CLN C-source output (integers are printed as integers, and
+ floating point numbers include the precision).
+* Fixed a problem in the LaTeX-output of negative fractions.
+* Added print_latex() and print_csrc() to ginsh.
+* The sprem() function is now public.
+
+1.0.11 (18 September 2002)
+* Fixed a possible memory corruption in contractions of indexed objects with
+ delta or metric tensors.
+* Computing the derivative of a power series object with respect to a symbol
+ that is not the expansion variable now works correctly.
+* Several bugfixes in code generation.
+
+1.0.10 (24 July 2002)
+* Powers of indexed objects are now parenthesized correctly in LaTeX output.
+* Input parser handles indices (they have to be specified in the same list
+ as the symbols).
+* Added some limited support for subspaces in the idx and tensor classes.
+* Fixed a bug in canonicalize() (antisymmetric canonicalization of an already
+ sorted list containing two or more equal objects failed to return 0).
+
+1.0.9 (11 June 2002)
+* simplify_indexed() now raises/lowers dummy indices to canonicalize the index
+ variance. This allows some simplifications that weren't possible before,
+ like eps~a.b~c~d*X.a*X~b -> 0 and X.a~a-X~a.a -> 0.
+* Implemented relational::subs().
+* Fixed bug in simplify_ncmul() for clifford objects.
+
+1.0.8 (31 March 2002)
+* Improvements in memory usage of the expand() methods.
+
+1.0.7 (18 March 2002)
+* Fixed LaTeX output of indexed and matrix objects.
+* Fixed matrix::pow(n) for n==0 and added helper functions to create unit
+ matrices "ex unit_matrix(unsigned, unsigned)".
+
+1.0.6 (4 March 2002)
+* "(x+1).subs(x==x-1)" now returns the correct result "x" instead of "x-1".
+
+1.0.5 (27 January 2002)
+* (l)degree(s), coeff(s, n) and collect(s) were extended to accept expressions
+ of any class (except add/mul/ncmul/numeric) for "s". They should even work
+ if "s" is a "power" object, as long as the exponent is non-integer, but with
+ some limitations. For example, you can "collect(a*2^x+b*2^x, 2^x)" to get
+ "(a+b)*2^x", but "degree(2^(3*x), 2^x)" yields 0 instead of 3).
+* Fixed a small output bug.
+
+1.0.4 (24 January 2002)
+* Speedup in expand().
+* Faster Bernoulli numbers (Markus Nullmeier).
+* Some minor bugfixes and documentation updates.
+
+1.0.3 (21 December 2001)
+* Fixed a bug where quo() would call vector::reserve() with a negative
+ argument.
+* Fix several bugs in code generation.
+
+1.0.2 (19 December 2001)
+* Input parser recognizes "sqrt()", which is also used in the output.
+* divide(a,b,q) only modifies q if the division succeeds; also, divide(a,b,a)
+ works now.
+* Fixed small bug in dummy index renaming which could cause it to not
+ recognize renamable indices in some cases.
+* power::degree() and power::ldegree() throw an exception when encountering
+ a non-integer exponent.
+* Add output-support for Python bindings.
+
+1.0.1 (22 November 2001)
+* Function sqrfree() handles a few more cases now.
+* Class relational has real canonical ordering now.
+* Handle obscene libreadline version numbers when building ginsh.
+
+1.0.0 (6 November 2001)
+* Some internal reorganization resulting in a general speed-up.
+* The last 3 evaluated expressions in ginsh are now referred to with the
+ tokens '%', '%%' and '%%%'. The old '"', '""' and '"""' remain for
+ compatibility but may be removed in a future version of GiNaC.
+
+0.9.4 (20 September 2001)
+* Functions have better support for external scripting languages.
+* Interface cleanups and bugfixes.
+* Fix silly bug in evalf() that prevented things like 2^Pi being computed.
+
+0.9.3 (16 August 2001)
+* series expansion now much more consistent for small order expansion.
+* lsolve() accepts algorithmic hint as parameter.
+
+0.9.2 (31 July 2001)
+* Epsilon tensor is more functional.
+* simplify_indexed() is better at detecting expressions that vanish for
+ symmetry reasons.
+* Several little bugfixes and consistency enhancements.
+
+0.9.1 (27 June 2001)
+* Ctors of class numeric are not explicit any more. All built-in callers for
+ pseudofunctions are now templated and default to ex arguments which relaxes
+ the need for explicit ctors.
+* New functions/methods:
+ - find()
+ - remove_first(), remove_last(), sort() and unique() for lists
+ - symmetrize_cyclic()
+ - decomp_rational()
+* Instead of just totally symmetric or antisymmetric, complex symmetries
+ can now be defined for indexed objects. Symmetries are described by a
+ tree of "symmetry" objects that is constructed with the sy_none(),
+ sy_symm(), sy_anti() and sy_cycl() functions. The symmetry of a function
+ with respect to its arguments can also be defined (this is currently
+ only used for the Beta function).
+* Generalized map() to take a function object instead of a function pointer.
+ This allows passing an arbitrary number of additional state to the
+ function being called.
+* color_trace(), dirac_trace(), diff(), expand(), evalf() and normal() work
+ better with container classes, e.g. using color_trace() on a relation will
+ take the trace on both sides, using diff() on a matrix differentiates every
+ element etc.
+* diff() works properly with non-commutative products and indexed objects.
+* New option flag "expand_function_args" for expand().
+* Supplement some (now deprecated) macros by inlined template functions:
+ - is_of_type(foo, type) -> is_a<type>(foo)
+ - is_ex_of_type(foo, type) -> is_a<type>(foo)
+ - is_exaclty_of_type(foo, type) -> is_exaclty_a<type>(foo)
+ - is_ex_exaclty_of_type(foo, type) -> is_exaclty_a<type>(foo)
+ - ex_to_foobar(baz) -> ex_to<foobar>(baz)
+* rem(c, p[x], x) (c: numeric, p[x]: polynomial) erroneously returned p[x]
+ instead of c.
+* Small bugfixes in pattern matching.
+* Updated libtool to version 1.4.
+
+0.9.0 (7 June 2001)
+* In the output and in ginsh, lists are now delimited by { } braces, and
+ matrices are delimited by single [ ] brackets.
* simplify_indexed() renames dummy indices so, e.g., "a.i*a.i+a.j*a.j" gets
- simplified to "2*a.i*a.i".
-* Added canonicalize_clifford() function that can be helpful when comparing
- expressions containing Dirac matrices.
+ simplified to "2*a.i*a.i" (or "2*a.j*a.j").
+* New functions/methods:
+ - canonicalize_clifford() (helpful when comparing expressions containing
+ Dirac matrices)
+ - symmetrize() and antisymmetrize()
+ - numer_denom() (return numerator and denominator in one call)
+ - map() (apply function to subexpressions)
+ - evalm() (evaluate sums, products and integer powers of matrices)
* Added a new function match() for performing pattern matching. subs() and
has() also accept patterns as arguments. A pattern can be any expression,
optionally containing wildcard objects. These are constructed with the
call "wild(<unsigned>)" and are denoted as "$0", "$1" etc. in the output
and in ginsh.
-* Fixed possible crash when calling subs() on expressions with non-commutative
- products.
+* Positive integer powers of non-commutative expressions (except matrices)
+ are automatically expanded.
+* Removed cint subdirectory, ginaccint is a separate package now due to
+ packaging considerations.
+* Several little bugfixes.
0.8.3 (11 May 2001)
* color and clifford classes are functional and documented.
* Predefined spinor metric tensor (created by spinor_metric()).
* Symbols can have a LaTeX name, e.g. symbol s("s", "\\sigma");
* LaTeX output of indexed objects is much nicer.
-* Fix some build-problems (with recent libreadline).
+* Fixed some build problems (with recent libreadline).
* Semantics of arithmetic operators now follows the C++ rules more strictly.
0.8.2 (24 April 2001)