Happy New Year!
Fix some compiler warnings.
Finalize 1.8.2 release. Oh, and Happy New Year!
Happy New Year!
Happy New Year!
Happy New Year!
Happy New Year!
Happy New Year! Update copyright statements.
Improve performance of clifford_to_lst(). Rewrite get_clifford_comp() so it is less obscure and more efficient.
Add proper functions to make clifford_bar() and clifford_star(). Previously operations clifford_bar() and clifford_star() called conjugate() method. This results in reversion of all non-commutative entries (not only Clifford units) and produced complex conjugation of all non-real items. The new routine operates on Clifford units only.
Use C++11 'auto' and range-based for loops where possible.
[C++17] Remove inheritance from std::binary_function, std::unary_function. This inheritance is unneeded since C++11 and the two classes may be removed in C++-17.
Happy New Year!
Add specific dbgprinttree() method to clifford. Metric is an important element of a clifford object, thus it is useful to have the metric to be printed in the detailed debug printing. Signed-off-by: Vladimir V. Kisil <kisilv@maths.leeds.ac.uk>
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.
Use initializer lists to construct container<>, lst. Add constructor of initializer_list<ex> to container<C<ex>>. In particular, this means that we can finally declare lst objects as lst{a,2*b,2}. Convert GiNaC to this syntax throughout. Deprecate the old constructors taking 1..16 ex parameters and the ones from comma seaparated lists (without braces).
Remove 'discardable' option from ctors of container and derived classes. The whole idea of this was to allow the ctor to pilfer the data from the constructed-from object, which is precisely the move semantics which C++11 supports with rvalue references.
Use C++11 range-based foor loops and auto, where possible.
Remove dependence on depreacted std::auto_ptr<T>. Most of the auto_ptr were introduced to avoid copying. C++11 supports move semantics for this. Some other can be replaced by std::unique_ptr<T>.
Fix some apparent typos and misindentations 2. (Formatting should comply with http://www.cebix.net/indentation.html.)