SRC/ssygvd.f(3)
π NAME π
okay so this page is SRC/ssygvd.f(3), straight outta the Library Functions Manual, and it's all about the SSYGVD subroutine. bestie, we're getting into eigenvalues and eigenvectors today β¨
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine ssygvd (itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork,
iwork, liwork, info)
SSYGVD
π¦ Function/Subroutine Documentation π¦
subroutine ssygvd (integer itype, character jobz, character uplo, integer n,
real, dimension( lda, * ) a, integer lda, real, dimension( ldb, * ) b,
integer ldb, real, dimension( * ) w, real, dimension( * ) work, integer
lwork, integer, dimension( * ) iwork, integer liwork, integer info)
SSYGVD
πΈ Purpose
SSYGVD computes all the eigenvalues, and optionally, the eigenvectors of a real generalized symmetric-definite eigenproblem, of the form 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. no cap, that's the whole vibe π
π Parameters
ITYPEβITYPEisINTEGER. It 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βJOBZisCHARACTER*1. It says how much we're computing:'N': compute eigenvalues only;'V': compute eigenvalues and eigenvectors.
UPLOβUPLOisCHARACTER*1. It tells us which triangle is stored:'U': upper triangles ofAandBare stored;'L': lower triangles ofAandBare stored.
NβNisINTEGER. The order of the matricesAandB.N >= 0.AβAisREALarray, dimension(LDA, N). On entry, the symmetric matrixA. IfUPLO = 'U', the leadingN-by-Nupper triangular part ofAcontains the upper triangular part of the matrixA. IfUPLO = 'L', the leadingN-by-Nlower triangular part ofAcontains the lower triangular part of the matrixA. On exit, ifJOBZ = 'V', then ifINFO = 0,Acontains the matrixZof eigenvectors. The eigenvectors are normalized as follows: ifITYPE = 1or2,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') ofA, including the diagonal, is destroyed. π don't say I didn't warn you.LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).BβBisREALarray, dimension(LDB, N). On entry, the symmetric matrixB. IfUPLO = 'U', the leadingN-by-Nupper triangular part ofBcontains the upper triangular part of the matrixB. IfUPLO = 'L', the leadingN-by-Nlower triangular part ofBcontains the lower triangular part of the matrixB. On exit, ifINFO <= N, the part ofBcontaining the matrix is overwritten by the triangular factorUorLfrom the Cholesky factorizationB = U**T*UorB = L*L**T.LDBβLDBisINTEGER. The leading dimension of the arrayB.LDB >= max(1,N).WβWisREALarray, dimension(N). IfINFO = 0, the eigenvalues in ascending order. slay, organized πWORKβWORKisREALarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORKisINTEGER. 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. iykyk, that's the query-mode loophole π₯IWORKβIWORKisINTEGERarray, dimension(MAX(1,LIWORK)). On exit, ifINFO = 0,IWORK(1)returns the optimalLIWORK.LIWORKβLIWORKisINTEGER. 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βINFOisINTEGER, the exit-status bestie:= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value.> 0:SPOTRForSSYEVDreturned 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 ofBis not positive. The factorization ofBcould 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:
Modified so that no backsubstitution is performed if SSYEVD 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 ssygvd.f.
π Author
Generated automatically by Doxygen for LAPACK from the source code.
and that's the whole page, bestie π«Ά this cutie is LAPACK Version 3.12.0 from source SRC/ssygvd.f(3) β no date on the footer, just so you know π 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