Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation | Synapse