http://sourceforge.net/projects/derive
Si tratta di un semplice parser a discesa ricorsiva: in pratica, faccio il parsing dell'espressione assegnata e creo un albero che la rappresenta.
Poi la derivata viene fatta manipolando l'albero: sia la derivata sia l'albero hanno definizioni ricorsive, e' quindi piuttosto facile.
Ho fatto anche un modulo per cercare di semplificare un po' il risultato (per esempio, eliminando le moltiplicazioni per uno e via dicendo); tuttavia non c'e' una definizione formale di semplificazione, quindi mi sono limitato a cercare dei casi semplici