X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=NEWS;h=c835919491b38e4a94e610b1bfbbd7a42b71fb30;hp=8c11cffc96ef9a4b3ffb9fbf601c3599f491374a;hb=e5d3bf4cb7ffe363ff7e820090649122b8ca689f;hpb=6d383491ac7fdc612ebc15778a2db01dbc5660d6;ds=sidebyside diff --git a/NEWS b/NEWS index 8c11cffc..c8359194 100644 --- a/NEWS +++ b/NEWS @@ -1,19 +1,139 @@ This file records noteworthy changes. -0.8.0 () +0.9.2 () +* 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(foo) + - is_ex_of_type(foo, type) -> is_a(foo) + - is_exaclty_of_type(foo, type) -> is_exaclty_a(foo) + - is_ex_exaclty_of_type(foo, type) -> is_exaclty_a(foo) + - ex_to_foobar(baz) -> ex_to(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()" 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 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; + - using coeff(), tcoeff(), lcoeff() or collect() on elements of + 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 indexed things and their indices there is now only one "indexed" class and two types of indices: "idx" for simple indices and "varidx" for indices with variance. There are predefined delta, epsilon and metric tensors, and a function simplify_indexed() that performs canonicalization - and dummy index summations. + and dummy index summations. Matrix objects can be indexed for doing simple + linear algebra. * Added an option "expand_indexed" to expand() to perform expansion of indexed objects like (a+b).i -> a.i + b.i * Renamed get_indices() to get_free_indices(), which no longer returns dummy indices and checks the consistency of indices in sums. * sqrfree() factorization fixed and improved syntactically. * subs() works on matrices. +* Matrices can be constructed from flat list of elements; diagonal matrices + can be constructed from list of diagonal elements with diag_matrix(). * Fixed memory leak in expand(). +* Operator% for objects of class ncmul has gone. Use operator* now for that + case too, which is much more natural. 0.7.3 (28 February 2001) * Several bugfixes and minor performance tunings.