P. D. Hovland, B. Norris, M. M. Strout, S. Bhowmick, and J. Utke, "Sensitivity Analysis and Design Optimization through Automatic Differentiation," Preprint ANL/MCS-P1264-0605, June 2005. [pdf]
Automatic, or algorithmic, differentiation (AD) is a technique for transforming a program or subprogram that can be interpreted as computing a mathematical function, including arbitrarily complex simulation codes, into one that computes the derivatives of that function. We describe the implementation and application of automatic differentiation tools. We highlight recent advances in the combinatorial algorithms and compiler technology that underlie successful implementation of automatic differentiation tools. We discuss applications of automatic differentiation in design optimization and sensitivity analysis. We also describe ongoing research in the design of language-independent source transformation infrastructures and memory management for automatic differentiation algorithms.