LAPACK
3.4.2
LAPACK: Linear Algebra PACKage

Go to the source code of this file.
Functions/Subroutines  
subroutine  zggsvp (JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, IWORK, RWORK, TAU, WORK, INFO) 
ZGGSVP 
subroutine zggsvp  (  character  JOBU, 
character  JOBV,  
character  JOBQ,  
integer  M,  
integer  P,  
integer  N,  
complex*16, dimension( lda, * )  A,  
integer  LDA,  
complex*16, dimension( ldb, * )  B,  
integer  LDB,  
double precision  TOLA,  
double precision  TOLB,  
integer  K,  
integer  L,  
complex*16, dimension( ldu, * )  U,  
integer  LDU,  
complex*16, dimension( ldv, * )  V,  
integer  LDV,  
complex*16, dimension( ldq, * )  Q,  
integer  LDQ,  
integer, dimension( * )  IWORK,  
double precision, dimension( * )  RWORK,  
complex*16, dimension( * )  TAU,  
complex*16, dimension( * )  WORK,  
integer  INFO  
) 
ZGGSVP
Download ZGGSVP + dependencies [TGZ] [ZIP] [TXT]ZGGSVP computes unitary matrices U, V and Q such that NKL K L U**H*A*Q = K ( 0 A12 A13 ) if MKL >= 0; L ( 0 0 A23 ) MKL ( 0 0 0 ) NKL K L = K ( 0 A12 A13 ) if MKL < 0; MK ( 0 0 A23 ) NKL K L V**H*B*Q = L ( 0 0 B13 ) PL ( 0 0 0 ) where the KbyK matrix A12 and LbyL matrix B13 are nonsingular upper triangular; A23 is LbyL upper triangular if MKL >= 0, otherwise A23 is (MK)byL upper trapezoidal. K+L = the effective numerical rank of the (M+P)byN matrix (A**H,B**H)**H. This decomposition is the preprocessing step for computing the Generalized Singular Value Decomposition (GSVD), see subroutine ZGGSVD.
[in]  JOBU  JOBU is CHARACTER*1 = 'U': Unitary matrix U is computed; = 'N': U is not computed. 
[in]  JOBV  JOBV is CHARACTER*1 = 'V': Unitary matrix V is computed; = 'N': V is not computed. 
[in]  JOBQ  JOBQ is CHARACTER*1 = 'Q': Unitary matrix Q is computed; = 'N': Q is not computed. 
[in]  M  M is INTEGER The number of rows of the matrix A. M >= 0. 
[in]  P  P is INTEGER The number of rows of the matrix B. P >= 0. 
[in]  N  N is INTEGER The number of columns of the matrices A and B. N >= 0. 
[in,out]  A  A is COMPLEX*16 array, dimension (LDA,N) On entry, the MbyN matrix A. On exit, A contains the triangular (or trapezoidal) matrix described in the Purpose section. 
[in]  LDA  LDA is INTEGER The leading dimension of the array A. LDA >= max(1,M). 
[in,out]  B  B is COMPLEX*16 array, dimension (LDB,N) On entry, the PbyN matrix B. On exit, B contains the triangular matrix described in the Purpose section. 
[in]  LDB  LDB is INTEGER The leading dimension of the array B. LDB >= max(1,P). 
[in]  TOLA  TOLA is DOUBLE PRECISION 
[in]  TOLB  TOLB is DOUBLE PRECISION TOLA and TOLB are the thresholds to determine the effective numerical rank of matrix B and a subblock of A. 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. 
[out]  K  K is INTEGER 
[out]  L  L is INTEGER On exit, K and L specify the dimension of the subblocks described in Purpose section. K + L = effective numerical rank of (A**H,B**H)**H. 
[out]  U  U is COMPLEX*16 array, dimension (LDU,M) If JOBU = 'U', U contains the unitary matrix U. If JOBU = 'N', U is not referenced. 
[in]  LDU  LDU is INTEGER The leading dimension of the array U. LDU >= max(1,M) if JOBU = 'U'; LDU >= 1 otherwise. 
[out]  V  V is COMPLEX*16 array, dimension (LDV,P) If JOBV = 'V', V contains the unitary matrix V. If JOBV = 'N', V is not referenced. 
[in]  LDV  LDV is INTEGER The leading dimension of the array V. LDV >= max(1,P) if JOBV = 'V'; LDV >= 1 otherwise. 
[out]  Q  Q is COMPLEX*16 array, dimension (LDQ,N) If JOBQ = 'Q', Q contains the unitary matrix Q. If JOBQ = 'N', Q is not referenced. 
[in]  LDQ  LDQ is INTEGER The leading dimension of the array Q. LDQ >= max(1,N) if JOBQ = 'Q'; LDQ >= 1 otherwise. 
[out]  IWORK  IWORK is INTEGER array, dimension (N) 
[out]  RWORK  RWORK is DOUBLE PRECISION array, dimension (2*N) 
[out]  TAU  TAU is COMPLEX*16 array, dimension (N) 
[out]  WORK  WORK is COMPLEX*16 array, dimension (max(3*N,M,P)) 
[out]  INFO  INFO is INTEGER = 0: successful exit < 0: if INFO = i, the ith argument had an illegal value. 
The subroutine uses LAPACK subroutine ZGEQPF for the QR factorization with column pivoting to detect the effective numerical rank of the a matrix. It may be replaced by a better rank determination strategy.
Definition at line 262 of file zggsvp.f.