Automatic Differentiation roughly means that a numerical value is equipped with a derivative part, which is updated accordingly on every function application. Let the number x0 be equipped with the derivative x1: . For example the sinus is defined as:
You see, that's just estimating errors as in physics. However, it becomes more interesting for vector functions.
1 Power Series
You may count arithmetic with power series also as Automatic Differentiation, since this means just working with all derivatives simultaneously.
Implementation with Haskell 98 type classes: http://code.haskell.org/~thielema/htam/src/PowerSeries/Taylor.hs
With advanced type classes in Numeric Prelude: http://hackage.haskell.org/packages/archive/numeric-prelude/0.0.5/doc/html/MathObj-PowerSeries.html