AD-HOC: A C++ Expression Template package for high-order derivatives backpropagation

ArXiv ID: 2412.05300 “View on arXiv”

Authors: Unknown

Abstract

This document presents a new C++ Automatic Differentiation (AD) tool, AD-HOC (Automatic Differentiation for High-Order Calculations). This tool aims to have the following features: -Calculation of user specified derivatives of arbitrary order -To be able to run with similar speeds as handwritten code -All derivatives calculations are computed in a single backpropagation tree pass -No source code generation is used, relying heavily on the C++ compiler to statically build the computation tree before runtime -A simple interface -The ability to be used \textit{“in conjunction”} with other established, general-purpose dynamic AD tools -Header-only library, with no external dependencies -Open source, with a business-friendly license

Keywords: Automatic Differentiation (AD), C++, High-Performance Computing, Derivatives Pricing, Backpropagation

Complexity vs Empirical Score

  • Math Complexity: 8.5/10
  • Empirical Rigor: 3.0/10
  • Quadrant: Lab Rats
  • Why: The paper presents complex mathematical derivations of high-order derivative backpropagation using Taylor expansions, but it is primarily a theoretical computational tool paper with no backtesting, empirical results, or performance benchmarks provided in the excerpt.
  flowchart TD
    A["Research Goal: Develop a C++ AD tool<br>for high-order derivatives using<br>expression templates"] --> B["Methodology: Expression Template Architecture"]
    
    B --> C{"Input: User Mathematical<br>Expression"}
    B --> D{"Input: Target Derivative Order"}
    
    C --> E["Computational Process: Compile-time<br>Expression Tree Construction"]
    D --> E
    
    E --> F["Single-Pass Backpropagation<br>via Tree Traversal"]
    
    F --> G["Key Findings/Outcomes"]
    
    subgraph G [" "]
        G1["High-performance computation<br>comparable to handwritten code"]
        G2["Header-only, zero-dependency<br>C++ library"]
        G3["Arbitrary order derivatives<br>calculated efficiently"]
    end