A tutorial on automatic differentiation with complex numbers
Nicholas Kr\"amer

TL;DR
This paper provides a comprehensive tutorial on automatic differentiation with complex numbers, emphasizing practical implementation and avoiding overly restrictive assumptions like holomorphicity, to aid users and developers in deriving custom gradients.
Contribution
It offers a detailed survey and implementation guide for forward- and reverse-mode automatic differentiation in complex numbers, focusing on Wirtinger derivatives and linear algebra techniques.
Findings
Derivation of complex Jacobian-vector and vector-Jacobian products using linear algebra.
Explicit avoidance of holomorphicity and Cauchy--Riemann equations in complex differentiation.
Guidance for implementing custom gradient rules for complex-valued functions.
Abstract
Automatic differentiation is everywhere, but there exists only minimal documentation of how it works in complex arithmetic beyond stating "derivatives in " "derivatives in " and, at best, shallow references to Wirtinger calculus. Unfortunately, the equivalence becomes insufficient as soon as we need to derive custom gradient rules, e.g., to avoid differentiating "through" expensive linear algebra functions or differential equation simulators. To combat such a lack of documentation, this article surveys forward- and reverse-mode automatic differentiation with complex numbers, covering topics such as Wirtinger derivatives, a modified chain rule, and different gradient conventions while explicitly avoiding holomorphicity and the Cauchy--Riemann equations (which would be far too restrictive). To be precise, we will…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsIterative Methods for Nonlinear Equations · Numerical Methods and Algorithms
