hpevd(3)
๐ NAME ๐
hpevd โ {hp,sp}evd: eig, divide and conquer. that's the whole vibe bestie, no cap โจ
โจ SYNOPSIS โจ
๐ฆ Functions
subroutine chpevd (jobz, uplo, n, ap, w, z, ldz, work, lwork, rwork, lrwork, iwork, liwork, info)โ CHPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices ๐subroutine dspevd (jobz, uplo, n, ap, w, z, ldz, work, lwork, iwork, liwork, info)โ DSPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices ๐subroutine sspevd (jobz, uplo, n, ap, w, z, ldz, work, lwork, iwork, liwork, info)โ SSPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices ๐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 ๐
๐ซ Detailed Description ๐ซ
okay so this section is literally empty in the original โ nothing under it, bestie, we move straight to the good part ๐ซถ
๐ฅ Function Documentation ๐ฅ
๐ subroutine chpevd
subroutine chpevd (character jobz, character uplo, integer n, complex,
dimension( * ) ap, real, dimension( * ) w, complex, dimension( ldz, * )
z, integer ldz, complex, dimension( * ) work, integer lwork, real,
dimension( * ) rwork, integer lrwork, integer, dimension( * ) iwork,
integer liwork, integer info)
CHPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
๐ Purpose:
CHPEVD 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. iconic behavior fr ๐ฅ
๐ธ Parameters
JOBZโJOBZ is CHARACTER*1, so like, what do you actually want out of this:= 'N': Compute eigenvalues only;= 'V': Compute eigenvalues and eigenvectors.
UPLOโUPLO is CHARACTER*1, which triangle are we even talking about:= '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. (yes, zero is allowed, she's tiny but valid ๐)APโAP is COMPLEX 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) for 1<=i<=j;
if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
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. so yeah, your input? gone. she ate it ๐ญ
WโW is REAL array, dimension (N). IfINFO = 0, the eigenvalues in ascending order. cute, sorted, organized, main character energy ๐ZโZ is COMPLEX 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. (she said "don't talk to me" ๐)LDZโLDZ is INTEGER. The leading dimension of the array Z.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N).WORKโWORK is COMPLEX array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the required LWORK. she's a little snitch and that's a compliment ๐LWORKโLWORK is INTEGER. The dimension of array WORK.- If
N <= 1, LWORK must be at least1. - If
JOBZ = 'N'andN > 1, LWORK must be at leastN. - If
JOBZ = 'V'andN > 1, LWORK must be at least2*N. - 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. (the-1trick is basically "hey queen, how much room do I need?" ๐ง)
- If
RWORKโRWORK is REAL 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, LRWORK must be at least1. - If
JOBZ = 'N'andN > 1, LRWORK must be at leastN. - If
JOBZ = 'V'andN > 1, LRWORK must be at least1 + 5*N + 2*N**2. - 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.
- If
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, LIWORK must be at least1. - If
JOBZ = 'V'andN > 1, LIWORK must be at least3 + 5*N. - 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.
- If
INFOโINFO is INTEGER, the receipts ๐งพ= 0: successful exit (slay ๐)< 0: ifINFO = -i, the i-th argument had an illegal value. (you passed her something cursed, bestie)> 0: ifINFO = i, the algorithm failed to converge; i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. (this one's the bad ending โ she tried and she could NOT ๐ญ)
๐ซถ Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
โญ Definition at line 192 of file chpevd.f.
๐ subroutine dspevd
subroutine dspevd (character jobz, character uplo, integer n, double
precision, dimension( * ) ap, double precision, dimension( * ) w, double
precision, dimension( ldz, * ) z, integer ldz, double precision,
dimension( * ) work, integer lwork, integer, dimension( * ) iwork,
integer liwork, integer info)
DSPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
๐ Purpose:
DSPEVD computes all the eigenvalues and, optionally, eigenvectors of a real symmetric matrix A in packed storage. If eigenvectors are desired, it uses a divide and conquer algorithm. same energy, double precision this time ๐
๐ธ 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 DOUBLE PRECISION array, dimension (N*(N+1)/2). On entry, the upper or lower triangle of the symmetric 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) for 1<=i<=j;
if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
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. again: your precious input gets replaced, that's just the deal ๐ซ
WโW is DOUBLE PRECISION array, dimension (N). IfINFO = 0, the eigenvalues in ascending order.ZโZ is DOUBLE PRECISION 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 DOUBLE PRECISION array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the required LWORK.LWORKโLWORK is INTEGER. The dimension of the array WORK.- If
N <= 1, LWORK must be at least1. - If
JOBZ = 'N'andN > 1, LWORK must be at least2*N. - If
JOBZ = 'V'andN > 1, LWORK must be at least1 + 6*N + N**2. - If
LWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of the WORK and IWORK arrays, returns these values as the first entries of the WORK and IWORK arrays, and no error message related to LWORK or LIWORK is issued by XERBLA. (yup, no RWORK in this one โ different routine, different baggage โจ)
- If
IWORKโIWORK is INTEGER array, dimension (MAX(1,LIWORK)). On exit, ifINFO = 0,IWORK(1)returns the required LIWORK.LIWORKโLIWORKโ okay soLIWORKisINTEGER, and it's literally the dimension of theIWORKarray, bestie. IfJOBZ = 'N'orN <= 1, thenLIWORKhas to be at least1. IfJOBZ = 'V'andN > 1, thenLIWORKmust be at least3 + 5*N. And ifLIWORK = -1, that's the workspace-query vibe: the routine only calculates the required sizes of theWORKandIWORKarrays, returns those values as the first entries of theWORKandIWORKarrays, andXERBLAdoes not issue any error message related toLWORKorLIWORK. Periodt. ๐INFOโINFOisINTEGER, and here's the tea:= 0means successful exit ๐;< 0means ifINFO = -i, the i-th argument had an illegal value ๐จ; and> 0means ifINFO = i, the algorithm failed to converge โ specifically,ioff-diagonal elements of an intermediate tridiagonal form did not converge to zero ๐ญ. Not me being dramatic, that's just what it says.
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ Definition
Definition at line 170 of file dspevd.f.
๐ฆ subroutine sspevd
subroutine sspevd (character jobz, character uplo, integer n, real,
dimension( * ) ap, real, dimension( * ) w, real, dimension( ldz, * ) z,
integer ldz, real, dimension( * ) work, integer lwork, integer,
dimension( * ) iwork, integer liwork, integer info)
SSPEVD computes the eigenvalues and, optionally, the left and/or right
eigenvectors for OTHER matrices
SSPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices. Iconic. โจ
โจ Purpose
SSPEVD computes all the eigenvalues and, optionally, eigenvectors of a real symmetric matrix A in packed storage. If eigenvectors are desired, it uses a divide and conquer algorithm. Slay. ๐
๐ธ Parameters
JOBZโJOBZisCHARACTER*1.= 'N': compute eigenvalues only;= 'V': compute eigenvalues and eigenvectors. Choose your fighter. ๐UPLOโUPLOisCHARACTER*1.= 'U': upper triangle ofAis stored;= 'L': lower triangle ofAis stored. Pick a side, bestie. ๐ซถNโNisINTEGER. The order of the matrixA.N >= 0. No negative nonsense. ๐ซAPโAPisREALarray, dimension(N*(N+1)/2). On entry, the upper or lower triangle of the symmetric matrixA, packed columnwise in a linear array. The j-th column ofAis stored in the arrayAPas follows: ifUPLO = 'U',AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;ifUPLO = 'L',AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.On exit,APis overwritten by values generated during the reduction to tridiagonal form. IfUPLO = 'U', the diagonal and first superdiagonal of the tridiagonal matrixToverwrite the corresponding elements ofA, and ifUPLO = 'L', the diagonal and first subdiagonal ofToverwrite the corresponding elements ofA. That's the whole packed-storage moment. ๐WโWisREALarray, dimension(N). IfINFO = 0, the eigenvalues in ascending order. So organized. ๐ZโZisREALarray, dimension(LDZ, N). IfJOBZ = 'V', then ifINFO = 0,Zcontains the orthonormal eigenvectors of the matrixA, with the i-th column ofZholding the eigenvector associated withW(i). IfJOBZ = 'N', thenZis not referenced. Ghosted. ๐ปLDZโLDZisINTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N). Respect the dimension, fr fr. ๐WORKโWORKisREALarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the requiredLWORK. Cute. โจLWORKโLWORKisINTEGER. The dimension of the arrayWORK. IfN <= 1,LWORKmust be at least1. IfJOBZ = 'N'andN > 1,LWORKmust be at least2*N. IfJOBZ = 'V'andN > 1,LWORKmust be at least1 + 6*N + N**2. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA. The math is mathing. ๐งฎIWORKโIWORKisINTEGERarray, dimension(MAX(1,LIWORK)). On exit, ifINFO = 0,IWORK(1)returns the requiredLIWORK. ๐LIWORKโLIWORKisINTEGER. The dimension of the arrayIWORK. IfJOBZ = 'N'orN <= 1,LIWORKmust be at least1. IfJOBZ = 'V'andN > 1,LIWORKmust be at least3 + 5*N. IfLIWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA. Same energy, different array. ๐INFOโINFOisINTEGER.= 0: successful exit โ ;< 0: ifINFO = -i, the i-th argument had an illegal value โ;> 0: ifINFO = i, the algorithm failed to converge;ioff-diagonal elements of an intermediate tridiagonal form did not converge to zero ๐ตโ๐ซ. No cap.
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ Definition
Definition at line 170 of file sspevd.f.
๐ฆ 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
ZHPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices. Complex Hermitian? We love to see it. ๐
โจ 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. Main character algorithm energy. ๐
๐ธ Parameters
JOBZโJOBZisCHARACTER*1.= 'N': compute eigenvalues only;= 'V': compute eigenvalues and eigenvectors. Pick your plotline. ๐UPLOโUPLOisCHARACTER*1.= 'U': upper triangle ofAis stored;= 'L': lower triangle ofAis stored. Choose wisely, bestie. ๐ซถNโNisINTEGER. The order of the matrixA.N >= 0. Keep it non-negative. โจAPโAPisCOMPLEX*16array, dimension(N*(N+1)/2). On entry, the upper or lower triangle of the Hermitian matrixA, packed columnwise in a linear array. The j-th column ofAis stored in the arrayAPas follows: ifUPLO = 'U',AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;ifUPLO = 'L',AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.On exit,APis overwritten by values generated during the reduction to tridiagonal form. IfUPLO = 'U', the diagonal and first superdiagonal of the tridiagonal matrixToverwrite the corresponding elements ofA, and ifUPLO = 'L', the diagonal and first subdiagonal ofToverwrite the corresponding elements ofA. Same packed-storage saga, now with complex flavor. ๐ธWโWisDOUBLE PRECISIONarray, dimension(N). IfINFO = 0, the eigenvalues in ascending order. Sorted, slay. ๐ZโZisCOMPLEX*16array, dimension(LDZ, N). IfJOBZ = 'V', then ifINFO = 0,Zcontains the orthonormal eigenvectors of the matrixA, with the i-th column ofZholding the eigenvector associated withW(i). IfJOBZ = 'N', thenZis not referenced. Not referenced means not invited to the function. ๐LDZโLDZisINTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N). Rules are rules. ๐WORKโWORKisCOMPLEX*16array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the requiredLWORK. ๐LWORKโLWORKisINTEGER. The dimension of arrayWORK. IfN <= 1,LWORKmust be at least1. IfJOBZ = 'N'andN > 1,LWORKmust be at leastN. IfJOBZ = 'V'andN > 1,LWORKmust be at least2*N. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of theWORK,RWORKandIWORKarrays, returns these values as the first entries of theWORK,RWORKandIWORKarrays, and no error message related toLWORKorLRWORKorLIWORKis issued byXERBLA. The workspace query is lowkey iconic. โจRWORKโRWORKisDOUBLE PRECISIONarray, dimension(MAX(1,LRWORK)). On exit, ifINFO = 0,RWORK(1)returns the requiredLRWORK. ๐LRWORKโLRWORKisINTEGER. The dimension of arrayRWORK. IfN <= 1,LRWORKmust be at least1. IfJOBZ = 'N'andN > 1,LRWORKmust be at leastN. IfJOBZ = 'V'andN > 1,LRWORKmust be at least1 + 5*N + 2*N**2. IfLRWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of theWORK,RWORKandIWORKarrays, returns these values as the first entries of theWORK,RWORKandIWORKarrays, and no error message related toLWORKorLRWORKorLIWORKis issued byXERBLA. Big workspace energy. ๐ฅIWORKโIWORKisINTEGERarray, dimension(MAX(1,LIWORK)). On exit, ifINFO = 0,IWORK(1)returns the requiredLIWORK. ๐ซถLIWORKโ
Okay bestie, back to the parameter list โ hereโs the tea on LIWORK and INFO, and theyโre both giving โread me carefullyโ energy:
LIWORKโINTEGER, aka the dimension of arrayIWORK.- If
JOBZ = 'N'orN <= 1,LIWORKmust be at least1. - If
JOBZ = 'V'andN > 1,LIWORKmust be at least3 + 5*N. - If
LIWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of theWORK,RWORKandIWORKarrays, returns these values as the first entries of theWORK,RWORKandIWORKarrays, and no error message related toLWORKorLRWORKorLIWORKis issued byXERBLA.
- If
INFOโINTEGER, the exit-status bestie. Hereโs the breakdown:= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.> 0: ifINFO = i, the algorithm failed to converge;ioff-diagonal elements of an intermediate tridiagonal form did not converge to zero.
๐ Author ๐
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ Definition at line 192 of file zhpevd.f.
๐ Author ๐ (the auto-generated encore)
Generated automatically by Doxygen for LAPACK from the source code.
Mwah! ๐ This little icon is from LAPACK Version 3.12.0, page hpevd(3) โ footer date? Not shown, so sheโs timeless, periodt. ๐ฆโจ
๐ฆ 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