SRC/DEPRECATED/dggsvd.f(3)
π NAME π
okay bestie, welcome to SRC/DEPRECATED/dggsvd.f(3) from the Library Functions Manual β this is the deprecated DGGSVD page, and it's literally here to serve you the generalized SVD tea. π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine dggsvd (jobu, jobv, jobq, m, n, p, k, l, a, lda, b, ldb,
alpha, beta, u, ldu, v, ldv, q, ldq, work, iwork, info)
The one-liner is literally: DGGSVD computes the singular value decomposition (SVD) for OTHER matrices β yes, "OTHER" is in all caps, and no, we are not asking questions. π«Ά
πΈ Function/Subroutine Documentation πΈ
subroutine dggsvd (character jobu, character jobv, character jobq, integer
m, integer n, integer p, integer k, integer l, double precision,
dimension( lda, * ) a, integer lda, double precision, dimension( ldb, *
) b, integer ldb, double precision, dimension( * ) alpha, double
precision, dimension( * ) beta, double precision, dimension( ldu, * ) u,
integer ldu, double precision, dimension( ldv, * ) v, integer ldv,
double precision, dimension( ldq, * ) q, integer ldq, double precision,
dimension( * ) work, integer, dimension( * ) iwork, integer info)
DGGSVD computes the singular value decomposition (SVD) for OTHER matrices
Purpose
β οΈ deprecated alert, bestie: This routine is deprecated and has been replaced by routine DGGSVD3.
DGGSVD computes the generalized singular value decomposition (GSVD) of an M-by-N real matrix A and a P-by-N real matrix B:
U**T*A*Q = D1*( 0 R ), V**T*B*Q = D2*( 0 R )
where U, V and Q are orthogonal matrices.
Let K+L = the effective numerical rank of the matrix (A**T,B**T)**T, then R is a K+L-by-K+L nonsingular upper triangular matrix, D1 and D2 are M-by-(K+L) and P-by-(K+L) matrices, and their structures are respectively:
If M-K-L >= 0,
K L
D1 = K ( I 0 )
L ( 0 C )
M-K-L ( 0 0 )
K L
D2 = L ( 0 S )
P-L ( 0 0 )
N-K-L K L
( 0 R ) = K ( 0 R11 R12 )
L ( 0 0 R22 )
where
C = diag( ALPHA(K+1), ... , ALPHA(K+L) ),
S = diag( BETA(K+1), ... , BETA(K+L) ),
C**2 + S**2 = I.
R is stored in A(1:K+L,N-K-L+1:N) on exit.
If M-K-L < 0,
K M-K K+L-M
D1 = K ( I 0 0 )
M-K ( 0 C 0 )
K M-K K+L-M
D2 = M-K ( 0 S 0 )
K+L-M ( 0 0 I )
P-L ( 0 0 0 )
N-K-L K M-K K+L-M
( 0 R ) = K ( 0 R11 R12 R13 )
M-K ( 0 0 R22 R23 )
K+L-M ( 0 0 0 R33 )
where
C = diag( ALPHA(K+1), ... , ALPHA(M) ),
S = diag( BETA(K+1), ... , BETA(M) ),
C**2 + S**2 = I.
(R11 R12 R13 ) is stored in A(1:M, N-K-L+1:N), and R33 is stored
( 0 R22 R23 )
in B(M-K+1:L,N+M-K-L+1:N) on exit.
The routine computes C, S, R, and optionally the orthogonal transformation matrices U, V and Q.
In particular, if B is an N-by-N nonsingular matrix, then the GSVD of A and B implicitly gives the SVD of A*inv(B):
A*inv(B) = U*(D1*inv(D2))*V**T.
If ( A**T,B**T)**T has orthonormal columns, then the GSVD of A and B is also equal to the CS decomposition of A and B. Furthermore, the GSVD can be used to derive the solution of the eigenvalue problem:
A**T*A x = lambda* B**T*B x.
In some literature, the GSVD of A and B is presented in the form
U**T*A*X = ( 0 D1 ), V**T*B*X = ( 0 D2 )
where U and V are orthogonal and X is nonsingular, D1 and D2 are ``diagonal''. The former GSVD form can be converted to the latter form by taking the nonsingular matrix X as
X = Q*( I 0 )
( 0 inv(R) ).
Parameters
JOBUβCHARACTER*1.= 'U': orthogonal matrix U is computed;= 'N': U is not computed.JOBVβCHARACTER*1.= 'V': orthogonal matrix V is computed;= 'N': V is not computed.JOBQβCHARACTER*1.= 'Q': orthogonal matrix Q is computed;= 'N': Q is not computed.MβINTEGER. The number of rows of the matrix A.M >= 0.NβINTEGER. The number of columns of the matrices A and B.N >= 0.PβINTEGER. The number of rows of the matrix B.P >= 0.KβINTEGER. (K's whole exit-era meaning is right below with L, bestie.)LβINTEGER. On exit,KandLspecify the dimension of the subblocks described in Purpose.K + L= effective numerical rank of(A**T,B**T)**T.AβDOUBLE PRECISION array, dimension (LDA,N). On entry, theM-by-Nmatrix A. On exit, A contains the triangular matrix R, or part of R. See Purpose for details.LDAβINTEGER. The leading dimension of the array A.LDA >= max(1,M).BβDOUBLE PRECISION array, dimension (LDB,N). On entry, theP-by-Nmatrix B. On exit, B contains the triangular matrix R ifM-K-L < 0. See Purpose for details.LDBβINTEGER. The leading dimension of the array B.LDB >= max(1,P).ALPHAβDOUBLE PRECISION array, dimension (N).BETAβDOUBLE PRECISION array, dimension (N). On exit,ALPHAandBETAcontain the generalized singular value pairs of A and B:
ALPHA(1:K) = 1,
BETA(1:K) = 0,
and if M-K-L >= 0,
ALPHA(K+1:K+L) = C,
BETA(K+1:K+L) = S,
or if M-K-L < 0,
ALPHA(K+1:M)=C, ALPHA(M+1:K+L)=0
BETA(K+1:M) =S, BETA(M+1:K+L) =1
and
ALPHA(K+L+1:N) = 0
BETA(K+L+1:N) = 0
UβDOUBLE PRECISION array, dimension (LDU,M). IfJOBU = 'U', U contains theM-by-Morthogonal matrix U. IfJOBU = 'N', U is not referenced.LDUβINTEGER. The leading dimension of the array U.LDU >= max(1,M)ifJOBU = 'U';LDU >= 1otherwise.VβDOUBLE PRECISION array, dimension (LDV,P). IfJOBV = 'V', V contains theP-by-Porthogonal matrix V. IfJOBV = 'N', V is not referenced.LDVβINTEGER. The leading dimension of the array V.LDV >= max(1,P)ifJOBV = 'V';LDV >= 1otherwise.QβDOUBLE PRECISION array, dimension (LDQ,N). IfJOBQ = 'Q', Q contains theN-by-Northogonal matrix Q. IfJOBQ = 'N', Q is not referenced.LDQβINTEGER. The leading dimension of the array Q.LDQ >= max(1,N)ifJOBQ = 'Q';LDQ >= 1otherwise.WORKβDOUBLE PRECISION array, dimension (max(3*N,M,P)+N).IWORKβINTEGER array, dimension (N). On exit, IWORK stores the sorting information. More precisely, the following loop will sort ALPHA:
for I = K+1, min(M,K+L)
swap ALPHA(I) and ALPHA(IWORK(I))
endfor
such that ALPHA(1) >= ALPHA(2) >= ... >= ALPHA(N).
INFOβINTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value.> 0: ifINFO = 1, the Jacobi-type procedure failed to converge. For further details, see subroutineDTGSJA.
Internal Parameters
TOLAβDOUBLE PRECISION.TOLBβDOUBLE PRECISION.
TOLA and TOLB are the thresholds to determine the effective rank of (A',B')**T. Generally, they are set to:
TOLA = MAX(M,N)*norm(A)*MAZHEPS,
TOLB = MAX(P,N)*norm(B)*MAZHEPS.
The size of TOLA and TOLB may affect the size of backward errors of the decomposition.
π«Ά Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π§ Contributors
Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA
Definition at line 331 of file dggsvd.f.
π Author (generated)
Generated automatically by Doxygen for LAPACK from the source code.
okay bestie, that's the whole page πβ¨ β this cute little sign-off is for LAPACK Version 3.12.0 and the file SRC/DEPRECATED/dggsvd.f(3), no cap. ππ¦
π¦ 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