Niko--
As a workaround (until something like newdiff is implemented in Maxima),
you can declare:
gradef( f(x), f1(x) )
Then
diff( f(x^2) , x)
correctly gives
2 x f1(x^2)
----------------------
This also works with multivariate functions.
Try
gradef ( h(x,y), h1(x,y), h2(x,y) )
then
diff ( h( x^3, log(x) ), x)
Aside:
Why, you may ask, did I use "h" rather than "f" for my multivariate
example? Because it turns out that there is already an obscure
undocumented function g1 built into the system (comment in Bessel.lisp
says "I think g1(x) =... based on some simple numerical evaluations"
!!), so g1(x,y) simplifies (no error for wrong number of args!) to
g1(x).
-s