Parent Directory
|
Revision Log
| Links to HEAD: | (view) (annotate) |
| Links to release_1-0-10: | (view) (annotate) |
| Sticky Tag: |
* Finilize version 1.0.4 (version numbers, copyrights and such rubbish).
* Fix thinkos in print_csrc context. (Cebix: read the implementations of ex::compare() and basic::compare()!!!)
* Remove check for empty seq in Python output.
* Added output-support for Python bindings and LaTeX printing for indexed objects (Pearu Peterson). * relational.*: Removed superfluous is_equal_same_type()... * inifcns_trans.cpp: ...added extern declaration as workaround for compiler-bug triggered by changes to relational.*, * input_parser.yy: added missing namespace specification.
* Some minor optimization glitches.
* As agreed upon at lunch, remove debugmsg since it is hardly of any use.
* Some internal reorganization WRT flyweight handling and initialization, resulting in a general speed-up. Wherever thou hast written _ex7() thou shalt write _ex7 from now on.
- Cleanups: My evil plot of making ex::bp private may finally be carried out, provided one changes all the is_of_type(obj,type) to is_a<type>(obj) which we don't do right now because it would degrade performance on gcc-2.95.x. Also, ex_to_type(obj) has gone for good now, we have been having ex_to<type>(obj) long enough. ex_to_nonconst_type(obj) have gone as well, since they are almost never used and one can always cast aways the constness explicitly if need should arise.
- carried on with felonious plot about making ex::bp private.
- Move several comments into doxygen comment blocks.
- replaced the Derivative() function by a more resonable fderivative class; to see it in action, try "series(abs(x),x==0,3)" and "series(abs(x),x==y,3)" in ginsh with previous GiNaC releases and with this one - add::eval() throws an exception when the first term is non-commutative and the overall_coeff is non-zero - small fixes to print_tree output of indexed objects - ncmul::expand() now actually does expand something like "(dirac_gamma(mu)+1) *dirac_gamma(nu)" correctly (but the change to add::eval() should make this a "can't happen" case) - moved ToString() to tostring.h (fewer header dependencies) - ALL YOUR "BASES CLASSES" ARE BELONG TO US
some more comments and cleanups to mul::expand() and ncmul::expand()
some cleanups
- added find() (like has(), but returns list of all occurrences)
- added lst::sort() and lst::unique()
- status_flags::expanded is only taken into account when no expand options
are specified. This makes it possible to re-expand with other options.
- added expand_options::expand_function_args
- collect(foo, {}) doesn't crash any more
- introduced match_same_type() method which is slightly similar to
is_equal_same_type() but doesn't check subexpressions. Fixed a number of
match() bugs with this (e.g. a==b matched a!=b, and matrices with different
dimensions but the same number of elements could match). Only container
classes with additional member variables that have to be equal for a match
need to implement match_same_type().
some cleanups
- The default implementations of evalf(), diff(), normal() and expand() use map() where useful. This has the nice effect of having a more reasonable default behaviour for container functions (most of the evalfchildren() etc. stuff is gone). - diff() works with non-commutative products (product rule) and no longer bails on indexed objects. - added decomp_rational() - added sqrfree_parfrac() which doesn't yet work in the general case and is unsupported
* Supplement some (now deprecated) macros by inlined template functions: - ex_to_foobar(baz) -> ex_to<foobar>(baz).
* 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)
- 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()
replaced "precedence" static member variable by virtual precedence() function
* add::coeff(): don't epvector::reserve() more terms than we'll actually need and don't epvector::push_back() all those _ex0()'s into coeffseq.
* basic::collec() never worked correctly on non-polynomials till now.
We simply correct for the missing terms, which makes it at least
algebraically correct (suggested by Pearu Peterson).
* Added support to print out LaTeX-style, based on some work by Stefan
Weinzierl:
- print.h: added a class print_latex().
- function.pl: added function_options::latex_name() because there was
no good way of setting that name before.
- inifncs*.cpp: use it.
- *.cpp: switch to see if print_context is actually print_latex and
then change the style.
* Fixed some stupid bugs in sections that were #define'd away for gcc-2.95.
* add::print() shouldn't put parens around overall_coeff.
something like 2/3*a is no longer printed as (2/3)*a
- 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
- added skeleton implementation of color and clifford classes (don't bother trying it, it doesn't work yet) - some macros in utils.h (DEFAULT_*) provide shorthands for implementing many required class member functions
- 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.
pseries::expand(): do not generate zero terms. pseries::print(): print trivial case, too. others: documentation updates.
GINAC_DECLARE_REGISTERED_CLASS declares duplicate() and compare_same_type(), GINAC_IMPLEMENT_REGISTERED_CLASS implements duplicate()
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. :-)
- pseries::print(): did not insert parenthesis when needed for precedence. - pseries::precedence: was missing (thus being inherited from basic). - add::print(): was not honoring upper_precedence for rest.
- removed non-sources from CVS
- Inserted some more std:: to make it compile under GCC2.96.
- more indentation fixes
- indentation is now done with tabs - printtree() prints the class names as known to the registrar, not the (mangled) class names from typeid().name()
- 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.
- introduced info_flag::algebraic. - matrix::fraction_free_elimination(bool) finished and used by matrix::determinant(). - introduced some comments.
- The status_flags::expanded is now used on some occasions.
- Doxygen'ed a bunch of comments.
- More drastic performance boost on matrix stuff. - Addition of some comments.
- 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.
- killed old add::print
- 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.
- Banned exZERO(), exONE(), exMINUSHALF() and all this from the interface. There is now _ex1() meaning 1, _ex_1() meaning -1, _ex1_2() meaning 1/2 and so on defined in utils.h and implemented in utils.cpp. Feel free to extend them as it pleases you but use them inside the library only. - Added more evaluations of trigonometric functions - Added series expansions for psi(x) and psi(n,x) at all their poles
- 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
- changed behaviour of numeric::is_rational() and added numeric::is_cinteger() and numeric::is_crational() which work for complex numbers now - added default ctor for constant to please CInt - documentation reflects the changes for upcoming 0.4.1
#ifndef around namespace GiNaC { }
- ASSERT macro renamed to GINAC_ASSERT
- 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 |