hbevd(3)
π¦ hbevd β eig, divide and conquer π¦
okay so this is hbevd(3) from the Library Functions Manual, and bestie, it's a whole family of subroutines β hb and sb, real and complex, all doing the eigen-thing the fancy divide-and-conquer way. Buckle up π
β¨ NAME β¨
hbevd β {hb,sb}evd: eig, divide and conquer
β¨ SYNOPSIS β¨
π Functions
subroutine chbevd (jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, rwork, lrwork, iwork, liwork, info)CHBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matricessubroutine dsbevd (jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, iwork, liwork, info)DSBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matricessubroutine ssbevd (jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, iwork, liwork, info)SSBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matricessubroutine zhbevd (jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, rwork, lrwork, iwork, liwork, info)ZHBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
πΈ Detailed Description πΈ
(no body here, it's literally just vibes and a heading β the real tea is in Function Documentation below π)
π Function Documentation π
π subroutine chbevd (character jobz, character uplo, integer n, integer kd, complex, dimension( ldab, * ) ab, integer ldab, 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)
CHBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
Purpose:
!>
!> CHBEVD computes all the eigenvalues and, optionally, eigenvectors of
!> a complex Hermitian band matrix A. 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.
!>
KD
!> KD is INTEGER
!> The number of superdiagonals of the matrix A if UPLO = 'U',
!> or the number of subdiagonals if UPLO = 'L'. KD >= 0.
!>
AB
!> AB is COMPLEX array, dimension (LDAB, N)
!> On entry, the upper or lower triangle of the Hermitian band
!> matrix A, stored in the first KD+1 rows of the array. The
!> j-th column of A is stored in the j-th column of the array AB
!> as follows:
!> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
!> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
!>
!> On exit, AB is overwritten by values generated during the
!> reduction to tridiagonal form. If UPLO = 'U', the first
!> superdiagonal and the diagonal of the tridiagonal matrix T
!> are returned in rows KD and KD+1 of AB, and if UPLO = 'L',
!> the diagonal and first subdiagonal of T are returned in the
!> first two rows of AB.
!>
LDAB
!> LDAB is INTEGER
!> The leading dimension of the array AB. LDAB >= KD + 1.
!>
W
!> W is REAL array, dimension (N)
!> If INFO = 0, the eigenvalues in ascending order.
!>
Z
!> Z is COMPLEX array, dimension (LDZ, N)
!> If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
!> eigenvectors of the matrix A, with the i-th column of Z
!> holding the eigenvector associated with W(i).
!> If JOBZ = 'N', then Z is not referenced.
!>
LDZ
!> LDZ is INTEGER
!> The leading dimension of the array Z. LDZ >= 1, and if
!> JOBZ = 'V', LDZ >= max(1,N).
!>
WORK
!> WORK is COMPLEX array, dimension (MAX(1,LWORK))
!> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
!>
LWORK
!> LWORK is INTEGER
!> The dimension of the array WORK.
!> If N <= 1, LWORK must be at least 1.
!> If JOBZ = 'N' and N > 1, LWORK must be at least N.
!> If JOBZ = 'V' and N > 1, LWORK must be at least 2*N**2.
!>
!> If LWORK = -1, then a workspace query is assumed; the routine
!> only calculates the optimal 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.
!>
RWORK
!> RWORK is REAL array,
!> dimension (LRWORK)
!> On exit, if INFO = 0, RWORK(1) returns the optimal LRWORK.
!>
LRWORK
!> LRWORK is INTEGER
!> The dimension of array RWORK.
!> If N <= 1, LRWORK must be at least 1.
!> If JOBZ = 'N' and N > 1, LRWORK must be at least N.
!> If JOBZ = 'V' and N > 1, LRWORK must be at least
!> 1 + 5*N + 2*N**2.
!>
!> If LRWORK = -1, then a workspace query is assumed; the
!> routine only calculates the optimal 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, if INFO = 0, IWORK(1) returns the optimal LIWORK.
!>
LIWORK
!> LIWORK is INTEGER
!> The dimension of array IWORK.
!> If JOBZ = 'N' or N <= 1, LIWORK must be at least 1.
!> If JOBZ = 'V' and N > 1, LIWORK must be at least 3 + 5*N .
!>
!> If LIWORK = -1, then a workspace query is assumed; the
!> routine only calculates the optimal 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: if INFO = -i, the i-th argument had an illegal value.
!> > 0: if INFO = i, the algorithm failed to converge; i
!> off-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 207 of file chbevd.f.
π subroutine dsbevd (character jobz, character uplo, integer n, integer kd, double precision, dimension( ldab, * ) ab, integer ldab, double precision, dimension( * ) w, double precision, dimension( ldz, * ) z, integer ldz, double precision, dimension( * ) work, integer lwork, integer, dimension( * ) iwork, integer liwork, integer info)
DSBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
Purpose:
!>
!> DSBEVD computes all the eigenvalues and, optionally, eigenvectors of
!> a real symmetric band matrix A. 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.
!>
KD
!> KD is INTEGER
!> The number of superdiagonals of the matrix A if UPLO = 'U',
!> or the number of subdiagonals if UPLO = 'L'. KD >= 0.
!>
AB
!> AB is DOUBLE PRECISION array, dimension (LDAB, N)
!> On entry, the upper or lower triangle of the symmetric band
!> matrix A, stored in the first KD+1 rows of the array. The
!> j-th column of A is stored in the j-th column of the array AB
!> as follows:
!> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
!> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
!>
!> On exit, AB is overwritten by values generated during the
!> reduction to tridiagonal form. If UPLO = 'U', the first
!> superdiagonal and the diagonal of the tridiagonal matrix T
!> are returned in rows KD and KD+1 of AB, and if UPLO = 'L',
!> the diagonal and first subdiagonal of T are returned in the
!> first two rows of AB.
!>
LDAB
!> LDAB is INTEGER
!> The leading dimension of the array AB. LDAB >= KD + 1.
!>
W
!> W is DOUBLE PRECISION array, dimension (N)
!> If INFO = 0, the eigenvalues in ascending order.
!>
Z
!> Z is DOUBLE PRECISION array, dimension (LDZ, N)
!> If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
!> eigenvectors of the matrix A, with the i-th column of Z
!> holding the eigenvector associated with W(i).
!> If JOBZ = 'N', then Z is not referenced.
!>
LDZ
!> LDZ is INTEGER
!> The leading dimension of the array Z. LDZ >= 1, and if
!> JOBZ = 'V', LDZ >= max(1,N).
!>
WORK
!> WORK is DOUBLE PRECISION array,
!> dimension (LWORK)
!> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
!>
LWORKβ β¦LWORKβ okay so this is anINTEGER, and itβs literally the dimension of theWORKarray. Bestie, the rules are:IF N <= 1,LWORKmust be at least1. IfJOBZ = 'N'andN > 2,LWORKmust be at least2*N. IfJOBZ = 'V'andN > 2,LWORKmust be at least( 1 + 5*N + 2*N**2 ).
IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA. iykyk β¨
IWORKβIWORKis anINTEGERarray, dimension(MAX(1,LIWORK)). On exit, ifINFO = 0,IWORK(1)returns the optimalLIWORK. slay πLIWORKβLIWORKis anINTEGER. Itβs the dimension of the arrayIWORK. IfJOBZ = 'N'orN <= 1,LIWORKmust be at least1. IfJOBZ = 'V'andN > 2,LIWORKmust be at least3 + 5*N.
IfLIWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA. no cap π¦
INFOβINFOis anINTEGER.= 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. periodt π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 185 of file dsbevd.f.
π subroutine ssbevd π
subroutine ssbevd (character jobz, character uplo, integer n, integer kd,
real, dimension( ldab, * ) ab, integer ldab, real, dimension( * ) w,
real, dimension( ldz, * ) z, integer ldz, real, dimension( * ) work,
integer lwork, integer, dimension( * ) iwork, integer liwork, integer
info)
SSBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices. itβs giving main character energy π
π Purpose π
SSBEVD computes all the eigenvalues and, optionally, eigenvectors of a real symmetric band matrix A. If eigenvectors are desired, it uses a divide and conquer algorithm. obsessed β¨
π Parameters π
JOBZβJOBZisCHARACTER*1.= 'N': Compute eigenvalues only;= 'V': Compute eigenvalues and eigenvectors. simple as that πUPLOβUPLOisCHARACTER*1.= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored. choose your fighter π¦NβNisINTEGER. The order of the matrixA.N >= 0. math girlie πKDβKDisINTEGER. The number of superdiagonals of the matrixAifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KD >= 0. lowkey important β¨ABβABisREALarray, dimension(LDAB, N). On entry, the upper or lower triangle of the symmetric band matrixA, stored in the firstKD+1rows of the array. Thej-th column ofAis stored in thej-th column of the arrayABas follows:
if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
On exit, AB is overwritten by values generated during the reduction to tridiagonal form. If UPLO = 'U', the first superdiagonal and the diagonal of the tridiagonal matrix T are returned in rows KD and KD+1 of AB, and if UPLO = 'L', the diagonal and first subdiagonal of T are returned in the first two rows of AB. the way that works π
LDABβLDABisINTEGER. The leading dimension of the arrayAB.LDAB >= KD + 1. respect the dimension πWβWisREALarray, dimension(N). IfINFO = 0, the eigenvalues in ascending order. in order, bestie β¨ZβZisREALarray, dimension(LDZ, N). IfJOBZ = 'V', then ifINFO = 0,Zcontains the orthonormal eigenvectors of the matrixA, with thei-th column ofZholding the eigenvector associated withW(i). IfJOBZ = 'N', thenZis not referenced. not me ignoring Z when JOBZ is N πLDZβLDZisINTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N). rules are rules πWORKβWORKisREALarray, dimension(LWORK). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. workspace icon πLWORKβLWORKisINTEGER. The dimension of the arrayWORK.IF N <= 1,LWORKmust be at least1. IfJOBZ = 'N'andN > 2,LWORKmust be at least2*N. IfJOBZ = 'V'andN > 2,LWORKmust be at least( 1 + 5*N + 2*N**2 ).
IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA. workspace query slay π
IWORKβIWORKisINTEGERarray, dimension(MAX(1,LIWORK)). On exit, ifINFO = 0,IWORK(1)returns the optimalLIWORK. int array realness β¨LIWORKβLIWORKisINTEGER. The dimension of the arrayIWORK. IfJOBZ = 'N'orN <= 1,LIWORKmust be at least1. IfJOBZ = 'V'andN > 2,LIWORKmust be at least3 + 5*N.
IfLIWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORKandIWORKarrays, returns these values as the first entries of theWORKandIWORKarrays, and no error message related toLWORKorLIWORKis issued byXERBLA. same vibe, different array π¦
INFOβINFOisINTEGER.= 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. convergence drama π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 185 of file ssbevd.f.
π subroutine zhbevd π
subroutine zhbevd (character jobz, character uplo, integer n, integer kd,
complex*16, dimension( ldab, * ) ab, integer ldab, 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)
ZHBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices. complex Hermitian band matrix? she ate π
π Purpose π
ZHBEVD computes all the eigenvalues and, optionally, eigenvectors of a complex Hermitian band matrix A. If eigenvectors are desired, it uses a divide and conquer algorithm. divide and conquer queen β¨
π Parameters π
JOBZβJOBZisCHARACTER*1.= 'N': Compute eigenvalues only;= 'V': Compute eigenvalues and eigenvectors. pick your path πUPLOβUPLOisCHARACTER*1.= 'U': Upper triangle ofAis stored;= 'L': Lower triangle ofAis stored. upper or lower, no in-between π¦NβNisINTEGER. The order of the matrixA.N >= 0. size queen πKDβKDisINTEGER. The number of superdiagonals of the matrixAifUPLO = 'U', or the number of subdiagonals ifUPLO = 'L'.KD >= 0. diagonal count, bestie β¨ABβABisCOMPLEX*16array, dimension(LDAB, N). On entry, the upper or lower triangle of the Hermitian band matrixA, stored in the firstKD+1rows of the array. Thej-th column ofAis stored in thej-th column of the arrayABas follows:
if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
On exit, AB is overwritten by values generated during the reduction to tridiagonal form. If UPLO = 'U', the first superdiagonal and the diagonal of the tridiagonal matrix T are returned in rows KD and KD+1 of AB, and if UPLO = 'L', the diagonal and first subdiagonal of T are returned in the first two rows of AB. the way that overwrites π
LDABβLDABisINTEGER. The leading dimension of the arrayAB.LDAB >= KD + 1. leading dimension realness πWβWisDOUBLE PRECISIONarray, dimension(N). IfINFO = 0, the eigenvalues in ascending order. ascending, always β¨ZβZisCOMPLEX*16array, dimension(LDZ, N). IfJOBZ = 'V', then ifINFO = 0,Zcontains the orthonormal eigenvectors of the matrixA, with thei-th column ofZholding the eigenvector associated withW(i). IfJOBZ = 'N', thenZis not referenced. Z said not today when JOBZ is N πLDZβLDZisINTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N). dimension check, slay πWORKβWORKisCOMPLEX*16array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. complex workspace vibes πLWORKβLWORKβLWORK is INTEGER, and itβs the dimension of the arrayWORK, bestie. The requirements are giving very specific:- If
N <= 1,LWORKmust be at least1. - If
JOBZ = 'N'andN > 1,LWORKmust be at leastN. - If
JOBZ = 'V'andN > 1,LWORKmust be at least2*N**2. - If
LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORK,RWORKandIWORKarrays, returns these values as the first entries of theWORK,RWORKandIWORKarrays, and no error message related toLWORKorLRWORKorLIWORKis issued byXERBLA. Very βask first, allocate laterβ of it β¨
- If
RWORKβRWORK is DOUBLE PRECISION array, dimension (LRWORK). On exit, ifINFO = 0,RWORK(1)returns the optimalLRWORK. Bestie said βreport back with the optimal numberβ πLRWORKβLRWORK is INTEGER, and itβs the dimension of arrayRWORK. The rules are:- If
N <= 1,LRWORKmust be at least1. - If
JOBZ = 'N'andN > 1,LRWORKmust be at leastN. - If
JOBZ = 'V'andN > 1,LRWORKmust be at least1 + 5*N + 2*N**2. - If
LRWORK = -1, then a workspace query is assumed; the routine only calculates the optimal sizes of theWORK,RWORKandIWORKarrays, returns these values as the first entries of theWORK,RWORKandIWORKarrays, and no error message related toLWORKorLRWORKorLIWORKis issued byXERBLA. Same workspace-query vibe, different array π«Ά
- If
IWORKβIWORK is INTEGER array, dimension (MAX(1,LIWORK)). On exit, ifINFO = 0,IWORK(1)returns the optimalLIWORK. Itβs the integer-array bestie, keeping receipts πLIWORKβLIWORK is INTEGER, and itβs the dimension of arrayIWORK. The checklist:- 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 optimal sizes of theWORK,RWORKandIWORKarrays, returns these values as the first entries of theWORK,RWORKandIWORKarrays, and no error message related toLWORKorLRWORKorLIWORKis issued byXERBLA. Query mode stays iconic π
- If
INFOβINFO is INTEGER. Hereβs the status tea:= 0: successful exit. We love a clean win π< 0: ifINFO = -i, thei-th argument had an illegal value. Not the argument doing illegal stuff π> 0: ifINFO = i, the algorithm failed to converge;ioff-diagonal elements of an intermediate tridiagonal form did not converge to zero. Convergence said βnot today,β and thatβs a real warning, bestie π
β¨ AUTHOR β¨
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 207 of file zhbevd.f.
π¦ AUTHOR (DOXYGEN EDITION) π¦
Generated automatically by Doxygen for LAPACK from the source code. Doxygen really said βIβll document it so you donβt have toβ β¨
Sign-off time, bestie: this page is from LAPACK Version 3.12.0, and the page name is hbevd(3). The footer date wasnβt included in the footer text provided, so Iβm not inventing one β no fake calendar energy here, 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