DSPGVX(3)
π DSPGVX(3) π
LAPACK Library Functions Manual β yes bestie, we're literally in the LAPACK manual and this page is all about dspgvx.f. Grab a strawberry drink π, because we're about to get into generalized symmetric-definite eigenproblem territory.
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dspgvx.f
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine DSPGVX (itype, jobz, range, uplo, n, ap, bp, vl, vu, il, iu,
abstol, m, w, z, ldz, work, iwork, ifail, info)
DSPGVX
π¦ Function/Subroutine Documentation π¦
subroutine DSPGVX (integer itype, character jobz, character range, character
uplo, integer n, double precision, dimension( * ) ap, double precision,
dimension( * ) bp, double precision vl, double precision vu, integer il,
integer iu, double precision abstol, integer m, double precision,
dimension( * ) w, double precision, dimension( ldz, * ) z, integer ldz,
double precision, dimension( * ) work, integer, dimension( * ) iwork,
integer, dimension( * ) ifail, integer info)
DSPGVX
π― Purpose π―
Okay so DSPGVX computes selected eigenvalues β and optionally eigenvectors β of a real generalized symmetric-definite eigenproblem. The forms are exactly:
A*x=(lambda)*B*xA*Bx=(lambda)*xB*A*x=(lambda)*x
Here A and B are assumed to be symmetric, stored in packed storage, and B is also positive definite. You can select eigenvalues and eigenvectors by specifying either a range of values or a range of indices for the desired eigenvalues. It's giving choose-your-own-adventure, but with linear algebra. π
π§Ύ Parameters π§Ύ
ITYPEβITYPE is 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βJOBZ is CHARACTER*1= 'N': Compute eigenvalues only;= 'V': Compute eigenvalues and eigenvectors.
RANGEβRANGE is CHARACTER*1= 'A': all eigenvalues will be found.= 'V': all eigenvalues in the half-open interval(VL,VU]will be found.= 'I': theIL-th throughIU-th eigenvalues will be found.
UPLOβUPLO is CHARACTER*1= 'U': Upper triangle ofAandBare stored;= 'L': Lower triangle ofAandBare stored.
NβN is INTEGER. The order of the matrix pencil(A,B).N >= 0.APβAP is DOUBLE PRECISION array, dimension (N*(N+1)/2). On entry, the upper or lower triangle of the symmetric matrixA, packed columnwise in a linear array. Thej-th column ofAis stored in the arrayAPas follows:- if
UPLO = 'U',AP(i + (j-1)*j/2) = A(i,j)for1<=i<=j; - if
UPLO = 'L',AP(i + (j-1)*(2*n-j)/2) = A(i,j)forj<=i<=n.
- if
On exit, the contents of AP are destroyed. So bestie, do not expect AP to come back unchanged β it's gone, okay? π
BPβBP is DOUBLE PRECISION array, dimension (N*(N+1)/2). On entry, the upper or lower triangle of the symmetric matrixB, packed columnwise in a linear array. Thej-th column ofBis stored in the arrayBPas follows:- if
UPLO = 'U',BP(i + (j-1)*j/2) = B(i,j)for1<=i<=j; - if
UPLO = 'L',BP(i + (j-1)*(2*n-j)/2) = B(i,j)forj<=i<=n.
- if
On exit, it holds the triangular factor U or L from the Cholesky factorization B = U**T*U or B = L*L**T, in the same storage format as B.
VLβVL is DOUBLE PRECISION. IfRANGE='V', the lower bound of the interval to be searched for eigenvalues.VL < VU. Not referenced ifRANGE = 'A'or'I'.VUβVU is DOUBLE PRECISION. IfRANGE='V', the upper bound of the interval to be searched for eigenvalues.VL < VU. Not referenced ifRANGE = 'A'or'I'.ILβIL is INTEGER. IfRANGE='I', the index of the smallest eigenvalue to be returned.1 <= IL <= IU <= N, ifN > 0;IL = 1andIU = 0ifN = 0. Not referenced ifRANGE = 'A'or'V'.IUβIU is INTEGER. IfRANGE='I', the index of the largest eigenvalue to be returned.1 <= IL <= IU <= N, ifN > 0;IL = 1andIU = 0ifN = 0. Not referenced ifRANGE = 'A'or'V'.ABSTOLβABSTOL is DOUBLE PRECISION. 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 A to tridiagonal form.
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*DLAMCH('S'). That's the self-care tip of the day. π«Ά
MβM is INTEGER. The total number of eigenvalues found.0 <= M <= N. IfRANGE = 'A',M = N, and ifRANGE = 'I',M = IU-IL+1.WβW is DOUBLE PRECISION array, dimension (N). On normal exit, the firstMelements contain the selected eigenvalues in ascending order.ZβZ is DOUBLE PRECISION 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 thei-th column ofZholding the eigenvector associated withW(i).
The eigenvectors are normalized as follows:
- if
ITYPE = 1or2,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 least max(1,M) columns are supplied in the array Z; if RANGE = 'V', the exact value of M is not known in advance and an upper bound must be used. So plan ahead, bestie. π
LDZβLDZ is INTEGER. The leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N).WORKβWORK is DOUBLE PRECISION array, dimension (8*N).IWORKβIWORK is INTEGER array, dimension (5*N).IFAILβIFAIL is 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βINFO is INTEGER= 0: successful exit< 0: ifINFO = -i, thei-th argument had an illegal value> 0:DPPTRForDSPEVXreturned an error code:<= N: ifINFO = i,DSPEVXfailed to converge;ieigenvectors failed to converge. Their indices are stored in arrayIFAIL.> N: ifINFO = N + i, for1 <= i <= N, then the leading principal minor of orderiofBis 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.
π Contributors: π
Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
π§ Definition at line π§
269 of file dspgvx.f.
π£ Author π£
Generated automatically by Doxygen for LAPACK from the source code.
π Cute sign-off, bestie: this footer is giving LAPACK Version 3.12.0, source /home/abui...RC/dspgvx.f(3). Stay slay and may all your eigenvectors converge. π
β¨
π¦ 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