]> www.ginac.de Git - ginac.git/blobdiff - NEWS
- ginac-config.1: removed (duplicate).
[ginac.git] / NEWS
diff --git a/NEWS b/NEWS
index a2ef2d1fac86302e9da0584923c1b8cb7f9f86de..5ce5f2407fbe84645d348ba453f968c163da5f14 100644 (file)
--- a/NEWS
+++ b/NEWS
 This file records noteworthy changes.
 
-0.8.1 (<date>)
+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" (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.
+* 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.
+* New "spinidx" class for dotted/undotted indices.
+* 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.
+* Fixed some build problems (with recent libreadline).
+* Semantics of arithmetic operators now follows the C++ rules more strictly.
+
+0.8.2 (24 April 2001)
+* degree(), ldegree(), coeff(), lcoeff(), tcoeff() and collect() work with
+  non-symbols as the second argument in ginsh.
+* the argument to collect() can be a list of objects in which case the
+  result is either a recursively collected polynomial, or a polynomial in
+  a distributed form with terms like coeff*x1^e1*...*xn^en, as specified by
+  the second argument to collect().
+* Several bugfixes (including a nasty memory leak in .normal()).
+* class matrix: solve() doesn't call algorithms redundantly any more and
+  inverse() falls back to solve() which works in more general cases.
+
+0.8.1 (16 April 2001)
 * degree(), ldegree(), coeff(), lcoeff(), tcoeff() and collect() can now
   be used with constants, functions and indexed expressions as well, so you
   can use it to collect by powers of Pi or sin(x), or to find the coefficient
   of gamma~0.
   Limitations:
-   - it only works with symbols, constants, functions and indexed expressions;
-     trying to find the coefficient of, e.g., "x^2" or "x+y" won't work
+   - it only works with symbols, constants, functions and indexed expressions,
+     trying to find the coefficient of, e.g., "x^2" or "x+y" won't work;
    - it does not know about dummy index summations; the coefficient of
-     gamma~0 in p.mu*gamma~mu should be p.0 but is returned as 0
+     gamma~0 in p.mu*gamma~mu should be p.0 but is returned as 0;
    - using coeff(), tcoeff(), lcoeff() or collect() on elements of
-     noncommutative products might return wrong or surprising results
-* Likewise, subs() can be used to substitute functions, tensors and indexed
-  expressions.
+     noncommutative products might return wrong or surprising results.
+* subs() no longer only substitutes symbols and indices but performs a more
+  general "syntactic substitution", i.e. it substitutes whole objects in sub-
+  expressions. You can subs((a+b)^2,a+b==3) and get 9, but subs(a+b+c,a+b==3)
+  doesn't do anything.
+  Limitations:
+   - substituting numerics (subs(expr, 2==4)) will not replace then in all
+     occurences; in general, you shouldn't substitute numerics, though.
 * Added preliminary (re)implementations of color and clifford classes.
 * simplify_indexed(): contraction of symmetric and antisymmetric tensors
   is zero.
+* Replaced the various print*() member functions by a single print() that
+  takes a print_context object that determines the output formatting. This
+  should make it easier to add more output types, such as LaTeX output,
+  which is based on work by Stefan Weinzierl.
+* Added functions to retrieve the properties stored in archive objects
+  outside of unarchive() (for printing or debugging purposes).
 * Some bugfixes (indexed objects, archive writing).
+* .collect() on non-polynomials is now algebraically correct.
 
 0.8.0 (24 March 2001)
 * Complete revamp of indexed objects. Instead of multiple classes for