Contributor
grimmmyshini

Add numerical differentiation support in Clad


Mentors
Vassil Vassilev, Alexander Penev
Organization
CERN-HSF

In mathematics and computer algebra, automatic differentiation (AD) is a set of techniques to numerically evaluate the derivative of a function specified by a computer program. Automatic differentiation is an alternative technique to Symbolic differentiation and Numerical differentiation (the method of finite differences). Clad is based on Clang which provides the necessary facilities for code transformation. The AD library can differentiate non-trivial functions, find a partial derivative for trivial cases, and has good unit test coverage. In several cases, due to different limitations, it is either inefficient or impossible to differentiate a function, as such instead of issuing an error Clad should fall back to its future numerical differentiation abilities.