AD2004 Automatic Differentiation