X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=NEWS;h=858847136318b64c957ba81b28d832900bcc8bc8;hp=47dfa00eb7699768ed27fdd9f0c22736bb45051b;hb=a4d079e9b74040f142e5b87a636c6224877e72b0;hpb=f293ecba8b6026a7754795256b2f23910bf70507 diff --git a/NEWS b/NEWS index 47dfa00e..85884713 100644 --- a/NEWS +++ b/NEWS @@ -1,13 +1,129 @@ This file records noteworthy changes. -0.6.0 (...) +0.8.1 () +* 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. +* Some bugfixes (indexed objects, archive writing). + +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. 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. +* Added a section to the tutorial about adding new algebraic classes to GiNaC. +* Closed many in-source documentation gaps. + +0.7.2 (17 February 2001) +* Several bugfixes in power series expansion, one of them critical. + +0.7.1 (7 February 2001) +* Fix problems with Cint that were caused by CLN's overloaded operator new. +* Fix compilation errors with GCC3. +* normal() handles large sums of fractions better and normalizes the exponent + of power expressions. +* expand() always expands the exponent and transforms x^(a+b) -> x^a*x^b. +* Some bugfixes of series expansion around branch cuts of special functions. + +0.7.0 (15 December 2000) +* Requires CLN 1.1 now. Class numeric doesn't use an indirect pointer to the + actual representation any more. This is a speedup. +* mul::expand() was reengineered to not allocate excess temporary memory. +* Non-integer powers of a symbol are treated as constants by (l)degree() and + coeff(). Using these functions on an expression containing such powers used + to fail with an internal error message. The side-effect is that collect() + can be used on expressions which are not polynomials. +* Added a man page for the ginac-config script. +* Ctor of numeric from char* honors Digits. + +0.6.4 (10 August 2000) +* Complete revamp of methods in class matrix. Some redundant (and poor) + implementations of elimination schemes were thrown out. The code is now + highly orthogonal, more flexible and much more efficient. +* Some long standing and quite nasty bugs were discovered and fixed in the + following functions: add::normal(), heur_gcd(), sr_gcd() and Order_eval(). + +0.6.3 (25 July 2000) +* Derivatives are now assembled in a slightly different manner (i.e. they + might 'look' different on first sight). Under certain circumstances this + can result in a dramatic speedup because it gives hashing a better chance, + especially when computing higher derivatives. +* Some series expansions of built-in functions have been reengineered. +* The algorithm for computing determinants can be chosen by the user. See + ginac/flags.h and ginac/matrix.h. +* The Dilogarithm (Li2) now has floating point evaluation, derivative and a + proper series expansion. +* Namespace 'std' cleanly disentangled, as demanded by ISO/EIC 14882-1998(E). +* Some minor bugfixes, one major lsolve()-bugfix and documentation updates. + +0.6.2 (21 June 2000) +* ginaccint.bin is now launched by a binary program instead of by a scripts. + This allows us to write #!-scripts. A small test suite for GiNaC-cint was + added. +* Several minor bugfixes. + +0.6.1 (18 May 2000) +* Cleanup in the interface to Cint. The required version is now Cint 5.14.38. +* Several bugfixes in target install. + +0.6.0 (11 May 2000) * IMPORTANT: Several interface changes make programs written with GiNaC much clearer but break compatibility with older versions: - f(x).series(x,p[,o]) -> f(x).series(x==p,o) - series(f(x),x,p[,o]) -> series(f(x),x==p,o) - - gamma() -> Gamma() - - EulerGamma -> gamma - - beta() -> Beta() + - gamma() -> tgamma() (The true Gamma function, there is now also + log(tgamma()), called lgamma(), in accord with ISO/IEC 9899:1999.) + - EulerGamma -> Euler +* #include'ing ginac.h defines the preprocessor symbols GINACLIB_MAJOR_VERSION, + GINACLIB_MINOR_VERSION, and GINACLIB_MICRO_VERSION with the respective GiNaC + library version numbers. +* Expressions can be constructed from strings like this: + ex e("2*x+y", lst(x, y)); +* ex::to_rational() provides a way to extend the domain of functions like + gcd() and divide() that only work on polynomials or rational functions (the + good old ex::subs() method reverses this process) +* Calling diff() on a function that has no derivative defined returns the + inert derivative function "Derivative". +* Several new timings in the check target. Some of them may be rather rude + at your machine, feel free to interrupt them. 0.5.4 (15 March 2000) * Some algorithms in class matrix (notably determinant) were replaced by