Symbolic Differentiation

Software that displays the symbolic derivative of a function specified through keyboard interactions.

Required Operation
As the user presses keys, a representation of a function in conventional mathematical notation (parentheses, multiplication indicated by juxtaposition, exponents indicated by superscripts, etc) appears on the screen. At the user's request, the software displays the derivative of the function on the screen, again in conventional mathematical notation. Graphics and software that reacts to key presses and mouse gestures is discussed in the competitive pachinko project.

Functions to Differentiate
Polynomials, trigonometric functions (sin, cos, tan), natural logarithms and exponentials, and sums, products, ratios, and compositions of these functions. Your software should do something to simplify the formula it delivers as the derivative, but using methods to avoid complex results rather than methods that simplify results will be adequate for purposes of this software. (Algebraic simplification is a much more difficult problem, in general, than symbolic differentiation.)

Existing Software
The symbolic differentiation problem has been widely studied and is a favorite assignment in many computer science courses. You will be able to find a wealth of material on the subject, including programs in Lisp and DrScheme. As usual, you are welcome to use any software you find, as long as you cite your sources in commentary included in your software. It is unlikely that you will find any software that implements the kind of interface that you will want your software to have.