Parent Directory
|
Revision Log
| Links to HEAD: | (view) (annotate) |
| Links to release_0-9-0: | (view) (annotate) |
| Sticky Tag: |
- Removed obsolete (even for Cint!) malloc_alloc template arguments.
- in the output, list delimiters are now { } and matrix delimiters are [ ]
- added evalm() method for evaluating sums and products of matrices
- added map() method for applying a function to subexpressions
- power(noncommut, posint) automatically expands the product, removed ncpow()
- first implementation of pattern matching
replaced "precedence" static member variable by virtual precedence() function
- dummy index renamer didn't account for internal dummy indices of objects in products; a~mu.mu-a~nu.nu gets simplified to 0 now - made a little more use of STL facilities for exvectors, especially in the indexed stuff; append_exvector_to_exvector() and index_set_difference() are gone and utils.h defines the functors ex_is_less and ex_is_equal
* Cint fix. It looks like the hacks are going to go away really soon, after some recent work by Masaharu.
- color/clifford objects have representation label to distinguish elements
of different algebras; objects with different labels commute with each
other
- dirac_one() -> dirac_ONE()
- added gamma5 clifford objects which is constructed by dirac_gamma5()
- clifford::simplify_ncmul() anticommutes gamma5's to the front and removes
squares of gamma5
- 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(). For example (ginsh):
> f=a*x-x+a*x*y+x*y+a*x*y^2-2*x*y^2+y^2;
a*x+y*a*x+y^2*a*x+y^2-x+y*x-2*y^2*x
> collect(f,x);
(-1+y+y^2*a+y*a+a-2*y^2)*x+y^2
> collect(f,y);
a*x-x+y^2*(1+a*x-2*x)+y*(a*x+x)
> collect(f,[x,y]);
(-1+y*(1+a)+y^2*(-2+a)+a)*x+y^2
> collect(f,[y,x]);
(-1+a)*x+y*(1+a)*x+(1+(-2+a)*x)*y^2
> collect_distributed(f,[x,y]);
(-1+a)*x+y^2*(-2+a)*x+y*(1+a)*x+y^2
added basic::get_precedence()
- 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 - print_tree output of indexed objects looks better
degree(), ldegree(), coeff(), lcoeff(), tcoeff() and collect() can now be used with constants and indexed expressions as well, so you can use it to collect by powers of Pi or find the coefficient of gamma~0. Limitations: - it only works with symbols, constants 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 the functions on elements of noncommutative products might return wrong or surprising results
- simplify_indexed() simplifies c*(M).i.j -> (M').i.j (c: numeric, M: matrix) with M'=c*M - new member function matrix::mul(const numeric &other) to multiply matrix with scalar - lst_to_matrix() takes a "lst &" instead of an "ex &" - added constructor of matrix from flat list - added function diag_matrix() to construct matrix from list of diagonal elements
sums of indexed matrices are now possible
- lcm_of_coefficients_denominators(1/2+x^10) returned 1024 instead of 2 and multiply_lcm() on that expression barfed - contract_with() now takes two exvector::iterators and and exvector; this makes it possible to look for more contractions in the implementation
- revamped indexed objects - subs() works on matrices
* ginac/registrar.h: dtor is inlined now. * ginac/basic.h, ginac/ex.h: removed INLINE_FOO_CONSTRUCTORS and hand-inlined stuff instead, since the macros turned out to get in the way while fine-tuning the inlining. * ginac/utils.h: if 'long long' works, use that one for computing the hash value instead of floating point tricks. 2 Reasons: on Intel the assembler is terrible and slow otherwise, 'long long' will appear in C++ anyways when they adapt to the C99 standard. * Several other small performance tweaks. * ginac/constant.cpp: (constant::calchash()) implement, caring for serial. * ginac/function.pl (function::calchash()): implement, caring for serial. * ginac/expairseq.cpp: honor coeff's hash value. * ginac/pseries.cpp: (pseries::power_const()) fix problems with zero pseries. * Added several pounds of in-source documentation in doxygen style.
is_(ex_)(exactly_)of_type: macros fixed, simplfied and documented.
pseries::expand(): do not generate zero terms. pseries::print(): print trivial case, too. others: documentation updates.
the destructor, copy constructor, and assignment operator (which were the same for all subclasses of basic, with very few exceptions) are now included in the GINAC_IMPLEMENT_REGISTERED_CLASS macro; the GINAC_DECLARE_REGISTERED_CLASS macro also defines these (and other common) member functions
removed the "some_*" and "typeid_*" definitions since we are using our own RTTI for quite some time now
- See if __GNUC__ < 2.97 before using std::vector<..,malloc_alloc>. Sorry, there is no way having this depend on whether we are setting up Cint or not because the malloc_alloc goes into the mangled signature and the result won't link if one tries to be more clever. It really sucks. Let's all just pray Masaharu throws away that old STL implementation really soon now. (Jeez, he still calls this old junk 'reference'!) - Bumped up a few dates. :-)
- Inserted some more std:: to make it compile under GCC2.96.
- Changes to make it more ANSI-conformant. Stuff detected while trying the compiler from Portland Group.
- fixes to the indentation
- indentation is now done with tabs - printtree() prints the class names as known to the registrar, not the (mangled) class names from typeid().name()
- Fixed the bug that broke xloop's po_redux. - Interface Change: No argument 'bool branchcut' for series methods, instead 'unsigned options'. Sorry. : ----------------------------------------------------------------------
- Derivatives are now assembled in a slightly different manner (i.e. they '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. - Series expansion accepts an additional bool argument now, telling it whether branch cuts are to be honored (as Maple does it) or not (as Mathematica does it). It defaults to true (i.e. the Maple way). - Many series expansions of built-in functions have been reengineered. - 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 helpers updated from upstream.
- added ex::to_rational() to convert general expression to rational expression
by replacing all non-rational parts with temporary symbols, e.g.:
ex a = pow(sin(x), 2) - pow(cos(x), 2);
ex b = sin(x) + cos(x);
ex d;
lst l;
divide(a.to_rational(l), b.to_rational(l), d);
cout << d.subs(l) << endl;
will print "sin(x)-cos(x)"
- We now write f(x).series(x==3,5) instead of f(x).series(x,3,5) and f(x).series(x,4) instead of f(x).series(x,0,4). We also don't allow default arguments any more.
- normal() now internally keeps numerator and denominator separated and
doesn't combine them to a fraction until the very end. All implementations
of basic::normal() now return a 2-component lst {num, den} instead of a
simple expression.
- dropped status_flags::normal_form
- ex::numer() and ex::denom() didn't work correctly on numerics
- lcm(a, b) with a and b being a numeric returned the GCD of a and b (*argh*)
- diff() is now only defined on classes ex and basic, where it handles higher derivatives. derivative() is now the method to be implemented by the user that does single derivatives, it is protected. - Implemented some very clumpsy automatic generation of ginaccint. It is ugly because we have to compile libginac without namespace GiNaC. - Fixed some wrong logic in numeric::power().
- Renamed flag NO_GINAC_NAMESPACE to NO_NAMESPACE_GINAC because of m4. - Made configure check for cint and makecint and call makecint to dump out cint/Makefile.cint, which will later be called by cint/Makefile. See configure option --with-cint. - Added some documentation about GiNaC-cint (e.g. a manpage). - All dummies in subdir cint/ are created by cint/dummies.pl now, removed older stuff.
- building GiNaC in a separate directory now works
- changed all instances of "foo const &/*" to "const foo &/*" - changed function arguments like "int const" to a simple "int"
- implemented global class registry (for class basic and derived classes) - implemented archiving of expressions (except for class idx, and all classes derived from idx and indexed) - added series() wrapper function - class series renamed to pseries to avoid name clashes with global series() wrapper function, ex::series(), and basic::series() - corrected the series expansion of single symbols with respect to the order term - calling subs() on a series didn't work
- made nops() return unsigned instead of int - changed dates in copyright notices
- more logic on the trigonometric function stuff. - changed several occurences of numeric const & to const numeric &, which is the same, but doxygen kept being confused because declarations differed from implementations.
- introduced info_flags::cinteger, info_flags::crational, info_flags::cinteger_polynomial, info_flags::crational_polynomial with intuitive behaviour. - extended documentation - made things like evlaf(zeta(3)) work - killed several bugs
#ifndef around namespace GiNaC { }
- ASSERT macro renamed to GINAC_ASSERT
- rotate_31() and golden_hash_ratio() moved to utils.h - golden_hash_ratio() looks for a suitable data type by means of defines from config.h
- put everything in "GiNaC" namespace - converted some macros into inline functions - split debugmsg.h into assertion.h (public) and debugmsg.h (private)
- modified the comment blocks so the copyright message no longer appears in the reference manual (made by Doxygen)
- modified GiNaC headers to Alexander's liking
- enforced GiNaC coding standards :-)
- switched to automake build environment
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
| Christian Bauer">Christian Bauer | ViewVC Help |
| Powered by ViewVC 1.1.15 |