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
翻译:本文介绍了一种新的C++自动微分(AD)工具——AD-HOC(高阶计算自动微分)。该工具旨在具备以下特性:- 计算用户指定的任意阶导数 - 能够以接近手写代码的速度运行 - 所有导数计算均在单次反向传播树遍历中完成 - 无需生成源代码,主要依赖C++编译器在运行前静态构建计算树 - 简洁的接口 - 能够与其它成熟的通用动态AD工具结合使用 - 仅需头文件的库,无外部依赖 - 采用商业友好许可证的开源项目