Happy New Year!
Finalize 1.8.2 release. Oh, and Happy New Year!
Happy New Year!
[PATCH 2/3] Make a stronger normalisation for expressions with exponents. If several exponents have arguments different by a rational number factors they are replaced by monomials of the same variable. Signed-off-by: Vladimir V. Kisil <V.Kisilv@leeds.ac.uk>
Happy New Year!
Happy New Year!
Happy New Year!
Happy New Year! Update copyright statements.
Remove 'level' argument of normal(). The 'level' argument was modeled after that of the eval() methods (removed in 6c946d4c). It has never been very useful except for confusing developers and it hasn't been documented in the tutorial. Moreover, I have no indication that it has ever been used.
Remove 'level' argument of evalf(). The 'level' argument was modeled after that of the eval() methods (removed in 6c946d4c). It has never been very useful except for confusing developers. Moreover, I have no indication that it has ever been used.
Happy New Year!
Make .eval() evaluate top-level only. With the previous patch, some old workarounds have become unnecessary: If all expressions are evaluated, any object which is an aggregate of expressions will only ever have to evaluate the top level. As such, it has become pointless to evaluate child objects of an expression prior to doing its own term-rewriting. This patch removes the evaluation of children from all GiNaC objects. It also removes the now superfluous parameter 'level' of the eval methods.
Improve method of setting status_flags::dynallocated. There seems to be no way to obsolete the need to mark an object derived from basic and handled by ex as being 'on the heap', at least none that doesn't have significant performance impact. Having said that, this patch aims at making this process simpler and more intuitive. Where, before, one would return from a function returning an ex with return (new mul(a, b))->setflag(status_flags::dynallocated); this patch lets us return with return dynallocate<mul>(a, b); which should be much clearer. In any case, it involves less typing. The two points where the status_flags::dynallocated are set are now * the dynallocate<B>(args...) template function and * the virtual duplicate() member functions. This patch rolls out the new functionality throughout the library.
Make ample use of the contextual keyword 'override'. This patch adds the C++11 contextual keyword 'override' to every overridden virtual function declaration except where that would incur macro duplications. Along the way, it fixes some comments about member functions 'virtuality'.
Make specialized power::expand() helpers static member fuctions. The class power member functions expand_add(), expand_add_2(), and expand_mul() do not access any member variable of class power. (In fact, the only reason not to hide them entirely is that they invoke protected members of classs expairseq, add, and mul which requires them to be friends of these classes.)
Make (a+b+c+...)^n work for huuuge terms. This fix is neccessary for results exceeding 2^31 terms. While at it, also restructured power::expand_add_() a bit to look more like the more general power::expand_add().
Happy new year!
Update copyright statements.
Extend copyright to 2011.
Update copyright notice.