SRC/zhpevd.f(3)
π SRC/zhpevd.f π
okay bestie, this is a page from the Library Functions Manual and it's all about zhpevd.f, a LAPACK routine that literally eats Hermitian matrices for breakfast and spits out eigenvalues (and eigenvectors if you ask nicely). no cap, it's iconic π
πΈ NAME πΈ
SRC/zhpevd.f
π¦ SYNOPSIS π¦
β¨ Functions/Subroutines β¨
subroutine zhpevd (jobz, uplo, n, ap, w, z, ldz, work, lwork, rwork, lrwork, iwork, liwork, info)β ZHPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices π
π Function/Subroutine Documentation π
π subroutine zhpevd π
subroutine zhpevd (character jobz, character uplo, integer n, complex*16,
dimension( * ) ap, double precision, dimension( * ) w, complex*16,
dimension( ldz, * ) z, integer ldz, complex*16, dimension( * ) work,
integer lwork, double precision, dimension( * ) rwork, integer lrwork,
integer, dimension( * ) iwork, integer liwork, integer info)
ZHPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices. π¦
β¨ Purpose β¨
!> !> ZHPEVD computes all the eigenvalues and, optionally, eigenvectors of !> a complex Hermitian matrix A in packed storage. If eigenvectors are !> desired, it uses a divide and conquer algorithm. !> !>
π Parameters π
JOBZβJOBZ is CHARACTER*1;= 'N': Compute eigenvalues only;= 'V': Compute eigenvalues and eigenvectors.π₯UPLOβUPLO is CHARACTER*1;= 'U': Upper triangle of A is stored;= 'L': Lower triangle of A is stored.π«ΆNβN is INTEGER; the order of the matrix A.N >= 0.β¨APβAP is COMPLEX*16 array, dimension (N*(N+1)/2). On entry, the upper or lower triangle of the Hermitian matrix A, packed columnwise in a linear array. The j-th column of A is stored in the array AP as follows:- if
UPLO = 'U',AP(i + (j-1)*j/2) = A(i,j)for1<=i<=j; - if
UPLO = 'L',AP(i + (j-1)*(2*n-j)/2) = A(i,j)forj<=i<=n.
- if
On exit, AP is overwritten by values generated during the reduction to tridiagonal form. If UPLO = 'U', the diagonal and first superdiagonal of the tridiagonal matrix T overwrite the corresponding elements of A, and if UPLO = 'L', the diagonal and first subdiagonal of T overwrite the corresponding elements of A. π (like, it literally replaces your matrix, so don't come crying later)
WβW is DOUBLE PRECISION array, dimension (N); ifINFO = 0, the eigenvalues in ascending order. πZβZ is COMPLEX*16 array, dimension (LDZ, N); ifJOBZ = 'V', then ifINFO = 0, Z contains the orthonormal eigenvectors of the matrix A, with the i-th column of Z holding the eigenvector associated withW(i). IfJOBZ = 'N', then Z is not referenced. πLDZβLDZ is INTEGER; the leading dimension of the array Z.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N). πWORKβWORK is COMPLEX*16 array, dimension (MAX(1,LWORK)); on exit, ifINFO = 0,WORK(1)returns the required LWORK. βLWORKβLWORK is INTEGER; the dimension of array WORK.- If
N <= 1,LWORKmust be at least 1. - If
JOBZ = 'N'andN > 1,LWORKmust be at least N. - If
JOBZ = 'V'andN > 1,LWORKmust be at least2*N.
- If
If LWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of the WORK, RWORK and IWORK arrays, returns these values as the first entries of the WORK, RWORK and IWORK arrays, and no error message related to LWORK or LRWORK or LIWORK is issued by XERBLA. π§ (workspace query slay)
RWORKβRWORK is DOUBLE PRECISION array, dimension (MAX(1,LRWORK)); on exit, ifINFO = 0,RWORK(1)returns the required LRWORK. πLRWORKβLRWORK is INTEGER; the dimension of array RWORK.- If
N <= 1,LRWORKmust be at least 1. - If
JOBZ = 'N'andN > 1,LRWORKmust be at least N. - If
JOBZ = 'V'andN > 1,LRWORKmust be at least1 + 5*N + 2*N**2.
- If
If LRWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of the WORK, RWORK and IWORK arrays, returns these values as the first entries of the WORK, RWORK and IWORK arrays, and no error message related to LWORK or LRWORK or LIWORK is issued by XERBLA. πΈ
IWORKβIWORK is INTEGER array, dimension (MAX(1,LIWORK)); on exit, ifINFO = 0,IWORK(1)returns the required LIWORK. πLIWORKβLIWORK is INTEGER; the dimension of array IWORK.- If
JOBZ = 'N'orN <= 1,LIWORKmust be at least 1. - If
JOBZ = 'V'andN > 1,LIWORKmust be at least3 + 5*N.
- If
If LIWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of the WORK, RWORK and IWORK arrays, returns these values as the first entries of the WORK, RWORK and IWORK arrays, and no error message related to LWORK or LRWORK or LIWORK is issued by XERBLA. π
INFOβINFO is INTEGER= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value. π> 0: ifINFO = i, the algorithm failed to converge; i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. π (like, it tried and it literally couldn't, no cap)
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 192 of file zhpevd.f. β¨
π Author (the meta one) π
Generated automatically by Doxygen for LAPACK from the source code. π€ (not me writing my own manpage, periodt)
okay bestie that's the whole thing, every single flag and value accounted for, and honestly? it ate. π«Άπ
LAPACK β Version 3.12.0 β that's the footer, bestie, and this page was brought to you by SRC/zhpevd.f(3), signing off with main character energy. π
β¨π
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms