SRC/dspgvx.f(3)
πΈ NAME πΈ
SRC/dspgvx.f β that's the page name, bestie, straight from the Library Functions Manual. We're talking about DSPGVX, and it's giving serious linear-algebra main character energy. π
β¨ 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 π¦
Full signature, no cap:
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, 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, stored in packed storage, and B is also positive definite. Eigenvalues and eigenvectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues. Iconic behavior, honestly. π
π Parameters π
ITYPEβITYPE is INTEGER. Specifies the problem type to be solved, and the options are:= 1: A*x = (lambda)*B*x= 2: A*B*x = (lambda)*x= 3: B*A*x = (lambda)*x
JOBZβJOBZ is CHARACTER*1. Choose your vibe:= 'N': Compute eigenvalues only;= 'V': Compute eigenvalues and eigenvectors.
RANGEβRANGE is CHARACTER*1. This is the selection filter, bestie:= '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βUPLO is CHARACTER*1. Which triangle are we packing?= 'U': Upper triangle of A and B are stored;= 'L': Lower triangle of A and B are 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) for 1<=i<=j;if UPLO = 'L', AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
π On exit, the contents of AP are destroyed. Not me warning you dramatically, it's literally in the docs.
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) for 1<=i<=j;if UPLO = 'L', BP(i + (j-1)*(2*n-j)/2) = B(i,j) for j<=i<=n.
On exit, 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, if N > 0; IL = 1 and IU = 0 if N = 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, if N > 0; IL = 1 and IU = 0 if N = 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 toABSTOL + EPS * max( |a|,|b| ) ,whereEPSis the machine precision. IfABSTOLis less than or equal to zero, thenEPS*|T|will be used in its place, where|T|is the 1-norm of the tridiagonal matrix obtained by reducingAto 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').
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 = 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 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. π«Ά
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. Exit-status tea:= 0: successful exit< 0: if INFO = -i, the i-th argument had an illegal value> 0: DPPTRF or DSPEVX returned an error code:<= N: if INFO = i, DSPEVX 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 269 of file dspgvx.f. π
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
Cute sign-off:Generated automatically by Doxygen for LAPACK from the source code.The source/version/date footer is exactlyLAPACK Version 3.12.0 SRC/dspgvx.f(3). Byeeee bestie, go slay those generalized symmetric-definite eigenproblems! πβ¨π
π¦ 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