Description
Currently, according to the guide https://mc-stan.org/docs/functions-reference/complex-valued_basic_functions.html it seems that basic arithmetic operators and pow
are the only functions that accept complex vectors.
I am modelling some periodicities in data using Fourier series, and I find it the most compact (and computationally efficient) to express what I do in terms of complex numbers. However, it's not efficient to run a function over a matrix using a loop when there's autodiff.
The most striking case is the exp
function, which is ubiquitous in complex analysis and I want to be able to run it elementwise over a vector or a matrix.
I figured out a possible workaround is to use pow(exp(1), z)
which does work on vectorized z
, but still I believe that exp
is more fundamental than pow
and it should be implemented, because the current state is confusing at best.
Of course then there are all the other functions which accept a real or complex scalar and accept vectorized real, but don't accept vectorized complex, which is inconsistent. This includes log
and the trigonometric functions.