Thanks Barton and Robert. The Barton's sugestion about funmake works for
me at this stage of my code.
May be in the future I should change it using the robert's sugestion
about using the simplifier.
>> I use a modified version of the newdiff function found in the Maxima
>> book section 7.11.
>> This function output some noun form and after that I have problems to
>> evaluate expresions.
>>
>> My problem can be described with the following function:
>>
>> F(x):=block([inflag:true],
>> if atom(x)=true then 'F(x)
>> else
>> if inpart(x,0)="+" then map(F,x)
>> else 'F(x));
>>
>
> I see the "Maxima Book" encourages more than one weak practice.
> The right way to make F an additive function is to use the simplifier.
> The multiadditive declaration which Barton mentioned is exactly
> the right thing. If there were no multiadditive package, you could make
> a simplification rule via tellsimp or defrule.
>
> Maxima is an algebra system to the extent that it can work out the
> implications of declarations such as "F is additive". Users should
> try to take advantage of that; it's not really necessary, nor desirable,
> to clutter every function with generic algebraic stuff.
>
> Maybe if you tell us what your goal is here, we can offer some more
> specific advice.
>
I am trying to implement a very weak version of a differential operator
called xdiff such that:
xdiff(x,x,1)=x ( and not 1 as diff does), linear and satisfying Leibniz
rule with respect the first argument.
Every expresion involving diff may be converting in an expresion
involving xdiff and reciprocally:
xdiff(y(x),x,1)= x* diff(y(x),x,1),...
but in some question is most natural to use xdiff.
Best wishes,
jose cano