SSYGVX(3)
π NAME π
Okay bestie, welcome to SSYGVX(3) β your fave page from the Library Functions Manual. π
The source file is /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/ssygvx.f, and yes, this is the LAPACK generalized symmetric-definite eigenproblem main character. No cap. β¨
β¨ SYNOPSIS β¨
Functions/Subroutines π¦
subroutine SSYGVX (itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu,
il, iu, abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
SSYGVX
Function/Subroutine Documentation π
subroutine SSYGVX (integer itype, character jobz, character range, character
uplo, integer n, real, dimension( lda, * ) a, integer lda, real,
dimension( ldb, * ) b, integer ldb, real vl, real vu, integer il,
integer iu, real abstol, integer m, real, dimension( * ) w, real,
dimension( ldz, * ) z, integer ldz, real, dimension( * ) work, integer
lwork, integer, dimension( * ) iwork, integer, dimension( * ) ifail,
integer info)
SSYGVX
Purpose π«Ά
SSYGVX computes selected eigenvalues, and optionally eigenvectors, of a real generalized symmetric-definite eigenproblem, in one of these forms: 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. You can pick eigenvalues and eigenvectors by specifying either a range of values or a range of indices for the desired eigenvalues. π
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. Tells the routine what to compute:
= 'N': Compute eigenvalues only;
= 'V': Compute eigenvalues and eigenvectors.
RANGEβCHARACTER*1. Picks the eigenvalue range:
= 'A': all eigenvalues will be found.
= 'V': all eigenvalues in the half-open interval (VL,VU]
will be found.
= 'I': the IL-th through IU-th eigenvalues will be found.
UPLOβCHARACTER*1. Says which triangle is stored:
= 'U': Upper triangle of A and B are stored;
= 'L': Lower triangle of A and B are stored.
Nβ INTEGER. The order of the matrix pencil(A,B).N >= 0. πAβ REAL array, dimension(LDA, N). On entry, the symmetric matrixA. IfUPLO = 'U', the leading N-by-N upper triangular part ofAcontains the upper triangular part of the matrixA. IfUPLO = 'L', the leading N-by-N lower triangular part ofAcontains the lower triangular part of the matrixA.
On exit, the lower triangle (ifUPLO='L') or the upper triangle (ifUPLO='U') ofA, including the diagonal, is destroyed. Bestie, sheβs gone. π
LDAβ INTEGER. The leading dimension of the arrayA.LDA >= max(1,N).Bβ REAL array, dimension(LDB, N). On entry, the symmetric matrixB. IfUPLO = 'U', the leading N-by-N upper triangular part ofBcontains the upper triangular part of the matrixB. IfUPLO = 'L', the leading N-by-N lower 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. So yeah,Bgets a whole new outfit. π¦
LDBβ INTEGER. The leading dimension of the arrayB.LDB >= max(1,N).VLβ REAL. IfRANGE='V', the lower bound of the interval to be searched for eigenvalues.VL < VU. Not referenced ifRANGE = 'A'or'I'.VUβ REAL. IfRANGE='V', the upper bound of the interval to be searched for eigenvalues.VL < VU. Not referenced ifRANGE = 'A'or'I'.ILβ INTEGER. IfRANGE='I', the index of the smallest eigenvalue to be returned.1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.Not referenced ifRANGE = 'A'or'V'.IUβ INTEGER. IfRANGE='I', the index of the largest eigenvalue to be returned.1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.Not referenced ifRANGE = 'A'or'V'.ABSTOLβ REAL. The absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval[a,b]of width less than or equal to
ABSTOL + EPS * max( |a|,|b| ) ,
where EPS is the machine precision. If ABSTOL is less than or equal to zero, then EPS*|T| will be used in its place, where |T| is the 1-norm of the tridiagonal matrix obtained by reducing C to tridiagonal form, where C is the symmetric matrix of the standard symmetric problem to which the generalized problem is transformed.
Eigenvalues will be computed most accurately when ABSTOL is set to twice the underflow threshold 2*DLAMCH('S'), not zero. If this routine returns with INFO>0, indicating that some eigenvectors did not converge, try setting ABSTOL to 2*SLAMCH('S'). π₯
Mβ INTEGER. The total number of eigenvalues found.0 <= M <= N. IfRANGE = 'A',M = N, and ifRANGE = 'I',M = IU-IL+1.Wβ REAL array, dimension(N). On normal exit, the firstMelements contain the selected eigenvalues in ascending order. Slay, sorted. β¨Zβ REAL array, dimension(LDZ, max(1,M)). IfJOBZ = 'N', thenZis not referenced. IfJOBZ = 'V', then ifINFO = 0, the firstMcolumns ofZcontain the orthonormal eigenvectors of the matrixAcorresponding to the selected eigenvalues, with the i-th column ofZholding the eigenvector associated withW(i).
The eigenvectors are normalized as follows: if ITYPE = 1 or 2, Z**T*B*Z = I; if ITYPE = 3, Z**T*inv(B)*Z = I.
If an eigenvector fails to converge, then that column of Z contains the latest approximation to the eigenvector, and the index of the eigenvector is returned in IFAIL.
Note: the user must ensure that at leastmax(1,M)columns are supplied in the arrayZ; ifRANGE = 'V', the exact value ofMis not known in advance and an upper bound must be used. Plan ahead, bestie. π«Ά
LDZβ INTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N).WORKβ REAL array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. πLWORKβ INTEGER. The length of the arrayWORK.LWORK >= max(1,8*N). For optimal efficiency,LWORK >= (NB+3)*N, whereNBis the blocksize forSSYTRDreturned byILAENV.
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. Lowkey iconic behavior. π
IWORKβ INTEGER array, dimension(5*N).IFAILβ INTEGER array, dimension(N). IfJOBZ = 'V', then ifINFO = 0, the firstMelements ofIFAILare zero. IfINFO > 0, thenIFAILcontains the indices of the eigenvectors that failed to converge. IfJOBZ = 'N', thenIFAILis not referenced.INFOβ INTEGER. The exit tea:
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: SPOTRF or SSYEVX returned an error code:
<= N: if INFO = i, SSYEVX failed to converge;
i eigenvectors failed to converge. Their indices
are stored in array IFAIL.
> N: if INFO = N + i, for 1 <= 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.
Contributors π
Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
Definition at line 294 of file ssygvx.f π
Author π§
Generated automatically by Doxygen for LAPACK from the source code.
Okay bestie, thatβs the whole page. Footer sign-off: LAPACK Version 3.12.0 and footer path /home/abui...RC/ssygvx.f(3). No separate date on the page β just that source/version and path combo. Byeee, stay positive definite and slay those eigenvalues ππ
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms