A tutorial on automatic differentiation with complex numbers
Not on the map. Why?
Abstract (arXiv)
Automatic differentiation is everywhere, but there exists only minimal documentation of how it works in complex arithmetic beyond stating "derivatives in mathbbCd" cong "derivatives in ℝ2d" and, at best, shallow references to Wirtinger calculus. Unfortunately, the equivalence mathbbCd cong ℝ2d 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 derive, explain, and implement a complex version of Jacobian-vector and vector-Jacobian products almost entirely with linear algebra without relying on complex analysis or differential geometry. This tutorial is a call to action, for users and developers alike, to take complex values seriously when implementing custom gradient propagation rules -- the manuscript explains how.
Key facts. Cited by 1 paper in the map (data through 14 Oct 2026). First posted on arXiv 10 Sep 2024.
Builds on
0 of 0 references.
No references here yet.
Built on by
Citing papers per year: 2026: 1.
1 paper.