DSYGVX(3)
π DSYGVX(3) β Library Functions Manual π
okay so bestie, welcome to DSYGVX(3) from the Library Functions Manual β it's a LAPACK routine, and it's lowkey carrying the whole generalized symmetric-definite eigenproblem situation on its back. β¨
πΈ NAME πΈ
this page is literally for this file:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dsygvx.f
yes bestie, that's the whole NAME section β it's a path, not a drill. π
π§ SYNOPSIS π§
π«Ά Functions/Subroutines π«Ά
here's the short version, typed exactly as it should be:
subroutine DSYGVX (itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu,
il, iu, abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
DSYGVX
π¦ Function/Subroutine Documentation π¦
full signature incoming β all the types, all the dimensions, no cap:
subroutine DSYGVX (integer itype, character jobz, character range, character
uplo, integer n, double precision, dimension( lda, * ) a, integer lda,
double precision, dimension( ldb, * ) b, integer ldb, 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 lwork, integer, dimension( * ) iwork, integer, dimension(
* ) ifail, integer info)
DSYGVX
β¨ Purpose β¨
DSYGVX 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 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:= 1: A*x = (lambda)*B*x,= 2: A*B*x = (lambda)*x,= 3: B*A*x = (lambda)*x. pick your fighter, bestie.JOBZβJOBZ is CHARACTER*1.= 'N':compute eigenvalues only;= 'V':compute eigenvalues and eigenvectors. so like, eigenvectors are optional but very main character.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.AβA is DOUBLE PRECISION array, 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, the lower triangle (ifUPLO='L') or the upper triangle (ifUPLO='U') ofA, including the diagonal, is destroyed. yes, destroyed destroyed. πLDAβLDA is INTEGER. The leading dimension of the arrayA.LDA >= max(1,N).BβB is DOUBLE PRECISION array, 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. slay, but also know that yourBis getting rewritten. πLDBβLDB is INTEGER. The leading dimension of the arrayB.LDB >= max(1,N).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 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 reducingCto tridiagonal form, whereCis the symmetric matrix of the standard symmetric problem to which the generalized problem is transformed. Eigenvalues will be computed most accurately whenABSTOLis set to twice the underflow threshold2*DLAMCH('S'), not zero. If this routine returns withINFO>0, indicating that some eigenvectors did not converge, try settingABSTOLto2*DLAMCH('S'). bestie, this is the "be precise or be sorry" parameter. π―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: ifITYPE = 1or2,Z**T*B*Z = I; ifITYPE = 3,Z**T*inv(B)*Z = I. If an eigenvector fails to converge, then that column ofZcontains the latest approximation to the eigenvector, and the index of the eigenvector is returned inIFAIL. 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. read that note again, bestie β it's giving "do not skimp on your array." ππ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 (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORK is INTEGER. The length of the arrayWORK.LWORK >= max(1,8*N). For optimal efficiency,LWORK >= (NB+3)*N, whereNBis the blocksize forDSYTRDreturned byILAENV. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA.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:DPOTRForDSYEVXreturned an error code:<= N:ifINFO = i,DSYEVXfailed 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. okay so if this hits> N, it's not a vibe β no eigenvalues, no eigenvectors, no nothing. π
π 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 π
Definition at line 294 of file dsygvx.f.
π«Ά Author π«Ά
Generated automatically by Doxygen for LAPACK from the source code.
π and that's the whole page, bestie! it came from LAPACK, version 3.12.0, with the footer path /home/abui...RC/dsygvx.f(3). no extra date line was in the footer, so I'm not inventing one β periodt. ππ¦
π¦ 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