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 be equipped with the derivative : . 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.
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