Tapenade is a software tool akin to a compiler, that transforms a program that compiles a math function F, into a program F' that computes derivatives of F. The strong point of Tapenade is its adjoint mode, that provides gradients at a remarkably low cost. More info at http://www-sop.inria.fr/tropics/