[GiNaC-devel] Custom power evaluation
Vladimir Kisil
kisilv at maths.leeds.ac.uk
Fri Oct 27 18:17:23 CEST 2006
Dear Alexei,
>>>>> "SA" == Sheplyakov Alexei <varg at theor.jinr.ru> writes:
SA> GiNaC offers ex::map() method for implementation of such custom
SA> evaluation rules.
Unfortunately I cannot see how to use map() for simplification of
automatic evaluations for derived classes, could you give me a hint?
SA> Adding more methods to the `basic' class does not sound like
SA> good idea to me. What if someone implements custom evaluation
SA> rules, say, for the `mul' class? E.g. foosymbol times
SA> barfunction is always zero. Add even more methods to basic?
There is a limited number of evaluations (add(), mul(), ncmul()) so
only three additional virtual methods will cover any desire in
automatic evaluation.
SA> Likewise, I think adding even more stuff to info_flags is bad
SA> idea.
However this makes a check for existence of an additional evaluation method much
quicker. Are there a better way to check this?
SA> Spamming to std{out,err} is a MORTAL SIN. NEVER, EVER do this.
SA> Either return the expression unevaluated or throw an exception.
Alright, I am not insisting on the warning message. Throwing an
exception is not appropriate since nothing dangerous happens.
SA> This slows down a bit evaluation of *every* power expression,
SA> including those which do not provide such a method. GiNaC's
SA> performance is not exactly brilliant, why reduce it even more?
However it make much-much more faster evaluation of expressions
which do contain such object. For example, calculations in two
dimensions can be done now without usage Clifford algebras and *very*
time-expensive non-commutativity.
In my opinion it is a fair exchange for slowing down *a bit* for
other calls. Everything in this world come at a price.
Best wishes,
Vladimir
--
Vladimir V. Kisil email: kisilv at maths.leeds.ac.uk
-- www: http://maths.leeds.ac.uk/~kisilv/
More information about the GiNaC-devel
mailing list