As we all know, every real matrix A has a Schur decomposition A = OSO' where O is orthogonal, S is a lower (or upper) triangular matrix.

In the case that A is symmetric, the S matrix is diagonal.

But why isn't there a subroutine in LAPACK doing exactly Schur decomposition? The closet routine is DSYTD2, but it only reduces symmetric A to a tridiagonal.

I cannot understand why DSYTD2 only reduces A to tridiagonal when it CAN be made diagonal !

Can anyone give me a hint?