package Jampack; /** Zspec implements the spectral (eigenvalue-eigenvector) decomposition of a Hermitian matrix. Specifically, given a Hermitian matrix A there is a unitary matrix A and a real diagonal matrix D such that
*      D = UHAU.
Zspec implements U as a Zmat and D as a Zdiagmat. It returns a JampackException if A is not Hermitian.

Comments: The decomposition is computed using . Schur. Eventually, there will be code that takes advantage of symmetry.
Since the diagonal matrix is real, it will be reimplemented as a Ddiagmat later. @version Pre-alpha @author G. W. Stewart */ public class Zspec{ /** The matrix of eigenvectors */ public Zmat U; /** The matrix of eigenvalues */ public Zdiagmat D; /** Creates a Zspec from Zmat. Throws a JampackException if the matrix is not Hermitian. @param AA A Zmat @return The spectral decomposition of A @exception JampackException Thown if AA is not Hermitian.
Passed from below. */ public Zspec(Zmat AA) throws JampackException{ int i, j; if (AA.nrow != AA.ncol){ throw new RuntimeException ("Matrix not square."); } Zmat A = new Zmat(AA); /* Check for A Hermitian. */ for (i=0; i