Is there a faster complex exponent?
9 views (last 30 days)
Show older comments
Daniel Dolan
on 15 Dec 2023
Answered: Daniel Dolan
on 18 Dec 2023
Is there any way to more quickly evaluate complex exponentials, i.e:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1570122/image.png)
where Q is a real array? Quick numerical tests show that complex input noticeably slows down MATLAB's exp function.
Several thoughts:
- Some libraries, such as Julia Base, provide a cis/cisoid function that directly evaluates the Euler expansion.
- The GNU C library has sincos function that simultaneously evaluate sine and cosine more quickly than separate calls.
- The Fixed Point Designer has a cordicexp function that seems to be identical to cis, but I don't have this toolbox. No idea how this performs compared to the standard exp function.
11 Comments
Paul
on 15 Dec 2023
Edited: Paul
on 16 Dec 2023
FWIW, Simulink offers a sincos and cos + jsin functions (Trigonometric Function), with options for how those functions are computed (Algorithm - Approximation Method). Don't know if the "under the hood" Simulink implementation would offer any performance benefits if brought into Matlab proper.
Bruno Luong
on 15 Dec 2023
But again I'm not convice MATLAB is NOT already do specific acceleration for exp(1i*Q). It is faster than cos alone on my PC and Walter PC as well
Accepted Answer
More Answers (1)
Sulaymon Eshkabilov
on 15 Dec 2023
Let's compare two ways e.g.:
Q = linspace(-10, 10, 1e6);
tic;
CQ1 = exp(1i*Q);
T1 =toc
tic;
CQ2 = cos(Q)+1i*sin(Q);
T2 =toc
fprintf('Calc time of exp(1i*Q): %f; cos(Q)+i*sin(Q): %f; \n', [T1, T2])
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!