(C|Z)HEEV

Single complex and double complex HEEV.

Description

Computes the eigenvalues and (optionally) eigenvectors of a Hermitian matrix.

Right eigenvectors satisfy:

\fvar{A} \mult v_i = \lambda_i v_i

Left eigenvectors satisfy:

\herm{u_i} \mult \fvar{A} = \lambda \herm{u_i}

Computed eigenvectors are normalized to have Euclidean unit length and largest real component.

LAPACK Interface

void cheev(const char *JOBZ, const char *UPLO, const qml_long *N,
    qml_single_complex *A, const qml_long *LDA, float *W,
    qml_single_complex *WORK, const qml_long *LWORK, float *RWORK,
    qml_long *INFO);

void zheev(const char *JOBZ, const char *UPLO, const qml_long *N,
    qml_double_complex *A, const qml_long *LDA, double *W,
    qml_double_complex *WORK, const qml_long *LWORK, double *RWORK,
    qml_long *INFO);

Arguments

JOBZ Compute eigenvectors and store in A if ‘V’, otherwise do not compute
UPLO Specify whether to use ‘U’ upper triangular or ‘L’ lower triangular part of A
N Number of rows and columns of A
A Matrix of size N x N, overwritten on exit
LDA Leading dimension of A
W Array of size N containing eigenvalues on exit
WORK Work space of size at least LWORK
LWORK Size of work space, at least 2N-1 but optimally a larger multiple of N (-1 to query)
RWORK Work space of size 3N-2
INFO 0 on success