XAD The Comprehensive Tool for Automatic Differentiation
XAD is a comprehensive open-source C++ library for automatic differentiation. It targets production-quality code at any scale, striving for both ease of use and high performance.
Automatic Differentiation
Automatic differentiation (also called algorithmic differentiation) is a set of techniques for calculating partial derivatives of functions specified as computer programs. Since every program execution is always composed of a sequence of simple operations with known derivatives (arithmetics and mathematical functions like sin, exp, log, etc.), the chain rule can be applied repeatedly to calculate partial derivatives automatically. XAD implements this using operator-overloading in C++, allowing to compute derivatives with minimal changes to the program. See automatic differentation mathematical background for more details.
Application areas
- Machine Learning and Deep Learning: Training neural networks or other machine learning models.
- Optimization: Solving optimization problems in engineering and finance.
- Numerical Analysis: Enhancing numerical solution methods for differential equations.
- Scientific Computing: Simulating physical systems and processes.
- Risk Management and Quantitative Finance: Assessing and hedging risk in financial models.
- Computer Graphics: Optimizing rendering algorithms.
- Robotics: Improving control and simulation of robotic systems.
- Meteorology: Enhancing weather prediction models.
- Biotechnology: Modeling biological processes and systems.