# Diagonalizing a block tridiagonal Toepliz Hermitean matrix

I have to diagonalize, within a Fortran-written code, a block tridiagonal Toeplitz Hermitian matrix, e.g.

$$\left[ \begin{array}{ccccc} \ddots & \hat{A} & & & \\ \hat{A}^\dagger & \hat{B} & \hat{A} & & \\ & \hat{A}^\dagger & \hat{B} & \hat{A} & \\ & & \hat{A}^\dagger & \hat{B} & \hat{A} \\ & & & \hat{A}^\dagger & \ddots \end{array} \right]$$

where $B$ is a Hermitian matrix. For the moment, I am just using standard Lapack routine ZHEEV for Hermitian matrices.

Do you have any suggestion on how to take advantage of one or more of the properties of this matrix to get a faster computation?