This paper does a weird thing by introducing complex numbers and then presenting a code solution that effectively implements dual numbers [0] while still calling them complex:
"The new version of the complexify module has
been improved by using the new function definitons discussed in the previous section, i.e., definitions that use the original real function for the real
part and the derivative of the function multiplied by
h for the imaginary part, rather than the complex
function definition." (emphasis mine)
Dual numbers ( "a + bE", where E [usually small epsilon] is a symbol defined by E^2=0, but E itself doesn't equal 0) are perfectly suited for automatic differentiation [1,2], so this paper is accurate. I just think it's confusing, probably especially for someone new to the topic, to kind of conflate dual and complex numbers in this way.
"The new version of the complexify module has been improved by using the new function definitons discussed in the previous section, i.e., definitions that use the original real function for the real part and the derivative of the function multiplied by h for the imaginary part, rather than the complex function definition." (emphasis mine)
Dual numbers ( "a + bE", where E [usually small epsilon] is a symbol defined by E^2=0, but E itself doesn't equal 0) are perfectly suited for automatic differentiation [1,2], so this paper is accurate. I just think it's confusing, probably especially for someone new to the topic, to kind of conflate dual and complex numbers in this way.
[0] - https://en.wikipedia.org/wiki/Dual_number
[1] - https://github.com/JuliaDiff/DualNumbers.jl
[2] - https://blog.demofox.org/2014/12/30/dual-numbers-automatic-d...