SRC/dspgvd.f(3)
π SRC/dspgvd.f(3) β Library Functions Manual π
okay bestie, welcome to the DSPGVD page. The manual name is folded in right here: Library Functions Manual, source/page SRC/dspgvd.f(3). Itβs giving linear algebra main character energy, and weβre gonna get through every single detail. π¦
β¨ NAME β¨
SRC/dspgvd.f β thatβs the name, periodt. This page is all about the DSPGVD routine.
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine dspgvd (itype, jobz, uplo, n, ap, bp, w, z, ldz, work, lwork,
iwork, liwork, info)
DSPGVD
π Function/Subroutine Documentation π
subroutine dspgvd (integer itype, character jobz, character uplo, integer n,
double precision, dimension( * ) ap, double precision, dimension( * )
bp, double precision, dimension( * ) w, double precision, dimension(
ldz, * ) z, integer ldz, double precision, dimension( * ) work, integer
lwork, integer, dimension( * ) iwork, integer liwork, integer info)
DSPGVD
π¦ Purpose π¦
DSPGVD computes all the eigenvalues, and optionally the eigenvectors, of a real generalized symmetric-definite eigenproblem. The forms are:
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. Thatβs the whole vibe: symmetric, packed, positive definite, and optionally eigenvector-delivering. π
π Parameters π
π ITYPE
ITYPE is INTEGER. It 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.
π UPLO
UPLO is CHARACTER*1.
= 'U': Upper triangles ofAandBare stored;= 'L': Lower triangles ofAandBare stored.
π N
N is INTEGER. Itβs the order of the matrices A and B. N >= 0.
π AP
AP is DOUBLE PRECISION array, dimension (N*(N+1)/2).
On entry, it holds the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array. The j-th column of A is stored in the array AP as 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.
On exit, the contents of AP are destroyed. Yeah, it said destroyed β RIP to whatever was in there before. π
π BP
BP is DOUBLE PRECISION array, dimension (N*(N+1)/2).
On entry, it holds the upper or lower triangle of the symmetric matrix B, packed columnwise in a linear array. The j-th column of B is stored in the array BP as 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.
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.
π W
W is DOUBLE PRECISION array, dimension (N).
If INFO = 0, it holds the eigenvalues in ascending order. Cute, sorted, organized β we love to see it. β¨
π Z
Z is DOUBLE PRECISION array, dimension (LDZ, N).
If JOBZ = 'V', then if INFO = 0, Z contains the matrix Z of eigenvectors. The eigenvectors are normalized as follows:
- if
ITYPE = 1or2,Z**T*B*Z = I; - if
ITYPE = 3,Z**T*inv(B)*Z = I.
If JOBZ = 'N', then Z is not referenced. So donβt stress about it, bestie. π
π LDZ
LDZ is INTEGER. Itβs the leading dimension of the array Z. LDZ >= 1, and if JOBZ = 'V', LDZ >= max(1,N).
π WORK
WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)).
On exit, if INFO = 0, WORK(1) returns the required LWORK.
π LWORK
LWORK is INTEGER. Itβs the dimension of the array WORK.
- 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 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. Thatβs the βjust tell me how much room I needβ mode. π₯
π IWORK
IWORK is INTEGER array, dimension (MAX(1,LIWORK)).
On exit, if INFO = 0, IWORK(1) returns the required LIWORK.
π LIWORK
LIWORK is INTEGER. Itβs the dimension of the array IWORK.
- If
JOBZ = 'N'orN <= 1,LIWORK >= 1. - If
JOBZ = 'V'andN > 1,LIWORK >= 3 + 5*N.
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.
π INFO
INFO is INTEGER.
= 0: successful exit.< 0: ifINFO = -i, thei-th argument had an illegal value.> 0:DPPTRForDSPEVDreturned an error code:<= N: ifINFO = i,DSPEVDfailed to converge;ioff-diagonal elements of an intermediate tridiagonal form did not converge to zero;> 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.
bestie, pay attention toINFO: positive values are not a drill, and the> Ncase meansBwasnβt positive definite enough for the factorization to finish. No eigenvalues, no eigenvectors. π
π 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 dspgvd.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
Okay thatβs the page, bestie π«Ά. Footer tea: LAPACK, Version 3.12.0, source/page SRC/dspgvd.f(3) β and the date slot is literally not printed on this manpage, so no cap, thatβs the whole sign-off. πβ¨
π¦ 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