[GiNaC-devel] Custom power evaluation
Richard B. Kreckel
kreckel at ginac.de
Fri Oct 27 22:26:44 CEST 2006
Hi Vladimir,
You wrote:
> In my GiNaC code I oftenly use some objects which have special
> properties with respect to power. For example, if values of a symbol s
> are assumed to be only -1, 0, or 1, then s^3=s. Another example is
> provided by "imaginary units" for double and dual numbers.
>
>
Thanks a lot for your input, but this time I am not convinced it would
be good to include your contribution.
About five years ago, I was doing something very similar. I had
polynomials of theta functions of different (symbolic) arguments and it
was convenient enough to write tree traversers and convert the theta
functions to individual symbols and back again to theta functions. Just
replacing s^2 by s was not hard. But it also was hardly enough! This
was, because theta functions offer a number of other, very useful
identities:
1) If the argument of theta factorizes, one can transform theta(P*Q) ->
theta(P)*theta(Q)+theta(-P)*theta(-Q).
2) One can find arguments that differ in sign only and transform
theta(-P) -> 1-theta(P).
3) One can easily proof that square free factorization of polynomials of
idempotent things is equal to the full factorization and do fine things
with GiNaC's sqrfree function.
n) ...
My point is that with objects as specialized as theta functions or,
equivalently, step functions, many specialized rules suddenly hold and
it does not appear to make much sense adding virtual functions to the
basic class in order to support just a few of them. I suggest doing
these things in specialized code.
Best wishes
-richy.
--
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>
More information about the GiNaC-devel
mailing list