SRC/sspgvd.f(3)
πΈ SRC/sspgvd.f(3) πΈ
okay so bestie, this page is from the Library Functions Manual, and it is literally all about SRC/sspgvd.f β the LAPACK glow-up for a generalized symmetric-definite eigenproblem. stay with me, it slays π
β¨
β¨ NAME β¨
SRC/sspgvd.fβ that's the name, no cap π
π¦ SYNOPSIS π¦
π§ Functions/Subroutines
subroutine sspgvd (itype, jobz, uplo, n, ap, bp, w, z, ldz, work, lwork,
iwork, liwork, info)
SSPGVD β main character energy, periodt. π
π Function/Subroutine Documentation π
π subroutine sspgvd
subroutine sspgvd (integer itype, character jobz, character uplo, integer n,
real, dimension( * ) ap, real, dimension( * ) bp, real, dimension( * )
w, real, dimension( ldz, * ) z, integer ldz, real, dimension( * ) work,
integer lwork, integer, dimension( * ) iwork, integer liwork, integer
info)
SSPGVD π«Ά
π Purpose π
bestie, <pink>SSPGVD</pink> computes all the eigenvalues, and optionally the eigenvectors, of a real generalized symmetric-definite eigenproblem. it handles these forms:
A*x=(lambda)*B*xA*Bx=(lambda)*xB*A*x=(lambda)*x
here A and B are assumed to be symmetric, stored in packed format, and B is also positive definite. if eigenvectors are desired, it uses a divide and conquer algorithm. iconic algorithm behavior, honestly β¨
π Parameters π
ITYPEβINTEGER. specifies the problem type to solve:= 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 matricesAandB.N >= 0.APβREALarray, dimension(N*(N+1)/2). on entry, this is 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. gone. reduced to atoms. π
BPβREALarray, dimension(N*(N+1)/2). on entry, this is 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. she transformed, your honor π¦
WβREALarray, dimension(N). ifINFO = 0, this contains the eigenvalues in ascending order. so organized, so demure β¨ZβREALarray, dimension(LDZ, N). ifJOBZ = 'V', then ifINFO = 0,Zcontains the matrixZof eigenvectors. 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
if JOBZ = 'N', then Z is not referenced. she's off-duty, don't call her π
LDZβINTEGER. the leading dimension of the arrayZ.LDZ >= 1, and ifJOBZ = 'V',LDZ >= max(1,N).WORKβREALarray, dimension(MAX(1,LWORK)). on exit, ifINFO = 0,WORK(1)returns the requiredLWORK.LWORKβINTEGER. the dimension of the arrayWORK.- if
N <= 1,LWORK >= 1. - if
JOBZ = 'N'andN > 1,LWORK >= 2*N. - if
JOBZ = 'V'andN > 1,LWORK >= 1 + 6*N + 2*N**2.
- if
if LWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of the WORK and IWORK arrays, returns these values as the first entries of the WORK and IWORK arrays, and no error message related to LWORK or LIWORK is issued by XERBLA. sneaky little query mode, iykyk π
IWORKβINTEGERarray, dimension(MAX(1,LIWORK)). on exit, ifINFO = 0,IWORK(1)returns the requiredLIWORK.LIWORKβINTEGER. the dimension of the arrayIWORK.- if
JOBZ = 'N'orN <= 1,LIWORK >= 1. - if
JOBZ = 'V'andN > 1,LIWORK >= 3 + 5*N.
- if
if LIWORK = -1, then a workspace query is assumed; the routine only calculates the required sizes of the WORK and IWORK arrays, returns these values as the first entries of the WORK and IWORK arrays, and no error message related to LWORK or LIWORK is issued by XERBLA. same query vibe, different array bestie π
INFOβINTEGER= 0: successful exit< 0: if INFO = -i, the i-th argument had an illegal value> 0: SPPTRF or SSPEVD returned an error code:<= N: if INFO = i, SSPEVD failed to converge; i off-diagonal elements of an intermediate tridiagonal form did not converge to zero;> 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.
π¨ bestie, that lastINFO > Nsituation is a real βthe math said noβ moment: the factorization ofBcould not be completed, and no eigenvalues or eigenvectors were computed. periodt. π
π 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 202 of file sspgvd.f. π
β¨ Author β¨
Generated automatically by Doxygen for LAPACK from the source code.
π okay that's the whole page, bestie β the footer moment is LAPACK Version 3.12.0, generated automatically by Doxygen for LAPACK from the source code. no cap, she's complete. πβ¨
π¦ 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