SRC/dsygvd.f(3)
β¨ NAME β¨
SRC/dsygvd.f(3) β okay so this is the Library Functions Manual page for the DSYGVD routine in SRC/dsygvd.f, and it's lowkey iconic. π
π SYNOPSIS π
Functions/Subroutines
subroutine dsygvd (itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork,
iwork, liwork, info)
DSYGVD
π§ββοΈ Function/Subroutine Documentation π§ββοΈ
subroutine dsygvd (integer itype, character jobz, character uplo, integer n,
double precision, dimension( lda, * ) a, integer lda, double precision,
dimension( ldb, * ) b, integer ldb, double precision, dimension( * ) w,
double precision, dimension( * ) work, integer lwork, integer,
dimension( * ) iwork, integer liwork, integer info)
DSYGVD
DSYGVD β the main character. π
Purpose
Okay bestie, here's the vibe: DSYGVD computes all the eigenvalues, and optionally the eigenvectors, of a real generalized symmetric-definite eigenproblem. The forms are A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A and B are assumed to be symmetric and B is also positive definite. If eigenvectors are desired, it uses a divide and conquer algorithm. Slay. β¨
Parameters
ITYPEβINTEGER. Specifies the problem type to be solved:= 1:A*x = (lambda)*B*x= 2:A*B*x = (lambda)*x= 3:B*A*x = (lambda)*x
JOBZβCHARACTER*1:= 'N': Compute eigenvalues only;= 'V': Compute eigenvalues and eigenvectors.
UPLOβCHARACTER*1:= 'U': Upper triangles of A and B are stored;= 'L': Lower triangles of A and B are stored.
NβINTEGER. The order of the matrices A and B.N >= 0.AβDOUBLE PRECISIONarray, dimension(LDA, N). On entry, the symmetric matrix A. IfUPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A. IfUPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A. On exit, ifJOBZ = 'V', then ifINFO = 0, A contains the matrix Z of eigenvectors. The eigenvectors are normalized as follows: ifITYPE = 1 or 2,Z**T*B*Z = I; ifITYPE = 3,Z**T*inv(B)*Z = I. IfJOBZ = 'N', then on exit the upper triangle (ifUPLO='U') or the lower triangle (ifUPLO='L') of A, including the diagonal, is destroyed.LDAβINTEGER. The leading dimension of the array A.LDA >= max(1,N).BβDOUBLE PRECISIONarray, dimension(LDB, N). On entry, the symmetric matrix B. IfUPLO = 'U', the leading N-by-N upper triangular part of B contains the upper triangular part of the matrix B. IfUPLO = 'L', the leading N-by-N lower triangular part of B contains the lower triangular part of the matrix B. On exit, ifINFO <= N, the part of B containing the matrix is overwritten by the triangular factor U or L from the Cholesky factorizationB = U**T*UorB = L*L**T.LDBβINTEGER. The leading dimension of the array B.LDB >= max(1,N).WβDOUBLE PRECISIONarray, dimension(N). IfINFO = 0, the eigenvalues in ascending order.WORKβDOUBLE PRECISIONarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβINTEGER. The dimension of the arrayWORK. IfN <= 1,LWORK >= 1. IfJOBZ = 'N'andN > 1,LWORK >= 2*N+1. IfJOBZ = 'V'andN > 1,LWORK >= 1 + 6*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.IWORKβINTEGERarray, dimension(MAX(1,LIWORK)). On exit, ifINFO = 0,IWORK(1)returns the optimalLIWORK.LIWORKβINTEGER. The dimension of the arrayIWORK. IfN <= 1,LIWORK >= 1. IfJOBZ = 'N'andN > 1,LIWORK >= 1. IfJOBZ = 'V'andN > 1,LIWORK >= 3 + 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.INFOβINTEGER:= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value> 0:DPOTRForDSYEVDreturned an error code:<= N: ifINFO = iandJOBZ = 'N', then the algorithm failed to converge; i off-diagonal elements of an intermediate tridiagonal form did not converge to zero; ifINFO = iandJOBZ = 'V', then the algorithm failed to compute an eigenvalue while working on the submatrix lying in rows and columnsINFO/(N+1)throughmod(INFO,N+1);> N: ifINFO = N + i, for1 <= i <= N, then the leading principal minor of order i of B is not positive. The factorization of B could not be completed and no eigenvalues or eigenvectors were computed.
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Further Details
Okay so this routine was modified so that no backsubstitution is performed if DSYEVD fails to converge (NEIG in old code could be greater than N causing out of bounds reference to A - reported by Ralf Meyer). Also corrected the description of INFO and the test on ITYPE. Sven, 16 Feb 05. π«Ά
Contributors
Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
Definition at line 219 of file dsygvd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
That's the whole vibe, bestie. This page is from LAPACK Version 3.12.0 and it lives at SRC/dsygvd.f(3). Bye! πβ¨
π¦ 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