# Eigenvalue problem with symmetric matrix with diagonal diagonal blocks

I would like to efficiently compute all the eigenvalues and eigenvectors of a real matrix A for which the structure is as follows:

$A =\begin{bmatrix} D_1 & C\\C^T & D_2 \end{bmatrix}$ ,

in which $D_1$ is a $n_1 \times n_1$ diagonal matrix with strictly positive elements and $D_2$ is a $n_2 \times n_2$ diagonal matrix with strictly positive elements, and where $C$ is a fully-populated $n_1 \times n_2$ matrix with full rank.

I would like to know if there is a way to exploit the fact that $D_1$ and $D_2$ are diagonal, in order to speed-up the calculation.

For now, I am directly using MATLAB routine eig applied to A:

[V,D] = eig(A)

and it isn't faster than for a fully-populated real symmetric positive-definite matrix of the same size, even for the case $n_1 \ll n_2$ for which $C$ is very thin.

Are you aware of any way to exploit such a structure?

Thanks very much,

Olivier