Function "diffEval" in fspace.spad is not called during
creation of formal derivatives.
It is called in situations when k is a %diff kernel,
(operator(k)) (someTransformation argument k)
which is common in recursive simplification functions.
So, I can't think of any reason that a new dummy variable
is required and a substitution is needed here.
Because of alpha substitution, I don't think the old code
is doing anything of value.
- Qian
diffEval l ==
k : K
g := retract(second l)@K
((u := retractIfCan(first l)@Union(K, "failed")) case "failed")
or (u case K and symbolIfCan(k := u@K) case SY) => dfeval(l, g)
op := operator k
(ud := derivative op) case "failed" =>
-- possible trouble
-- make sure it is a dummy var
dumm : % := symsub(gendiff, 1)::%
ss := subst(l.1, l.2 = dumm)
-- output(nl::OutputForm)$OutputPackage
-- output("fixed"::OutputForm)$OutputPackage
nl := [ss, dumm, l.3]
kernel(opdiff, nl)
(n := position(second l, argument k)) < minIndex l =>
dfeval(l, g)
d := ud::List(List % -> %)
eval((d.n)(argument k), g, third l)
--
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/fricas-devel/a756180e-faa4-4b26-b2c8-fffcb0b35554%40gmail.com.