# How to efficiently exponentiate a complex (symmetric) tridiagonal matrix?

**URL:** <https://discourse.julialang.org/t/how-to-efficiently-exponentiate-a-complex-symmetric-tridiagonal-matrix/56982>\
**Category:** Performance\
**Tags:** question, performance, linearalgebra, memory\
**Created:** [March 11, 2021, 10:48pm UTC](https://discourse.julialang.org/t/how-to-efficiently-exponentiate-a-complex-symmetric-tridiagonal-matrix/56982 "2021-03-11T22:48:01Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [March 12, 2021, 12:41pm UTC](https://discourse.julialang.org/t/how-to-efficiently-exponentiate-a-complex-symmetric-tridiagonal-matrix/56982/4 "2021-03-12T12:41:51Z")

</div>

> [@jagot](#):
>
> The Hamiltonian you have is Hermitian and purely real, the complexity comes about from the `-im*t` in the propagator,

If that is the only reason for the non-Hermitian-ness, then you are have an easy task — the matrix A=iH is anti-Hermitian, not Hermitian, but it is still [normal](https://en.wikipedia.org/wiki/Normal_matrix) with orthogonal eigenvectors.

More simply, if you have a matrix A where H=-iA is Hermitian, then simply diagonalize H=Q\Lambda Q^\* and use e^A = e^{iH}=Qe^{i\Lambda}Q^\*.

Furthermore, if A is tridiagonal, then H is tridiagonal and Hermitian. If H is not already real, there is a [trivial change of basis to make the problem real symmetric tridiagonal](https://discourse.julialang.org/t/what-is-the-point-of-the-symmetric-type/40773/5). So you can always use the efficient real-`SymTridiagonal` eigensolver.

---

_[View the full topic](https://discourse.julialang.org/t/how-to-efficiently-exponentiate-a-complex-symmetric-tridiagonal-matrix/56982)._
