CTGSJA (3) Linux Manual Page
NAME
ctgsja.f –
SYNOPSIS
Functions/Subroutines
subroutine ctgsja (JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B, LDB, TOLA, TOLB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, NCYCLE, INFO)
CTGSJA
Function/Subroutine Documentation
subroutine ctgsja (characterJOBU, characterJOBV, characterJOBQ, integerM, integerP, integerN, integerK, integerL, complex, dimension( lda, * )A, integerLDA, complex, dimension( ldb, * )B, integerLDB, realTOLA, realTOLB, real, dimension( * )ALPHA, real, dimension( * )BETA, complex, dimension( ldu, * )U, integerLDU, complex, dimension( ldv, * )V, integerLDV, complex, dimension( ldq, * )Q, integerLDQ, complex, dimension( * )WORK, integerNCYCLE, integerINFO)
CTGSJA
Purpose:
-
CTGSJA computes the generalized singular value decomposition(GSVD) of two complex upper triangular(or trapezoidal) matrices A and B.On entry, it is assumed that matrices A and B have the following forms, which may be obtained by the preprocessing subroutine CGGSVP from a general M - by - N matrix A and P - by - N matrix B : N - K - L K L A = K(0 A12 A13) if M - K - L >= 0; L(0 0 A23) M - K - L(0 0 0) N - K - L K L A = K(0 A12 A13) if M - K - L < 0; M - K(0 0 A23) N - K - L K L B = L(0 0 B13) P - L(0 0 0) where the K - by - K matrix A12 and L - by - L matrix B13 are nonsingular upper triangular; A23 is L - by - L upper triangular if M - K - L >= 0, otherwise A23 is(M - K) - by - L upper trapezoidal.On exit, U **H *A *Q = D1 * (0 R), V **H *B *Q = D2 * (0 R), where U, V and Q are unitary matrices.R is a nonsingular upper triangular matrix, and D1 and D2 are ``diagonal'' matrices, which are of the following structures : 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) K L(0 0 R22) L 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.R = (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 computation of the unitary transformation matrices U, V or Q is optional.These matrices may either be formed explicitly, or they may be postmultiplied into input matrices U1, V1, or Q1.
Parameters:
- JOBU
JOBU is CHARACTER*1 = 'U': U must contain a unitary matrix U1 on entry, and the product U1*U is returned; = 'I': U is initialized to the unit matrix, and the unitary matrix U is returned; = 'N': U is not computed.JOBV
JOBV is CHARACTER*1 = 'V': V must contain a unitary matrix V1 on entry, and the product V1*V is returned; = 'I': V is initialized to the unit matrix, and the unitary matrix V is returned; = 'N': V is not computed.JOBQ
JOBQ is CHARACTER*1 = 'Q': Q must contain a unitary matrix Q1 on entry, and the product Q1*Q is returned; = 'I': Q is initialized to the unit matrix, and the unitary matrix Q is returned; = 'N': Q is not computed.M
M is INTEGER The number of rows of the matrix A. M >= 0.P
P is INTEGER The number of rows of the matrix B. P >= 0.N
N is INTEGER The number of columns of the matrices A and B. N >= 0.K
K is INTEGERL
L is INTEGER K and L specify the subblocks in the input matrices A and B: A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,,N-L+1:N) of A and B, whose GSVD is going to be computed by CTGSJA. See Further Details.A
A is COMPLEX array, dimension (LDA,N) On entry, the M-by-N matrix A. On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular matrix R or part of R. See Purpose for details.LDA
LDA is INTEGER The leading dimension of the array A. LDA >= max(1,M).B
B is COMPLEX array, dimension (LDB,N) On entry, the P-by-N matrix B. On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains a part of R. See Purpose for details.LDB
LDB is INTEGER The leading dimension of the array B. LDB >= max(1,P).TOLA
TOLA is REALTOLB
TOLB is REAL TOLA and TOLB are the convergence criteria for the Jacobi- Kogbetliantz iteration procedure. Generally, they are the same as used in the preprocessing step, say TOLA = MAX(M,N)*norm(A)*MACHEPS, TOLB = MAX(P,N)*norm(B)*MACHEPS.ALPHA
ALPHA is REAL array, dimension (N)BETA
BETA is REAL array, dimension(N) On exit, ALPHA and BETA contain 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) = diag(C),
BETA(K + 1
: K + L) = diag(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. Furthermore,
if K + L < N,
ALPHA(K + L + 1
: N) = 0 BETA(K + L + 1
: N) = 0.U
U is COMPLEX array, dimension(LDU, M) On entry, if JOBU = ‘U’, U must contain a matrix U1(usually the unitary matrix returned by CGGSVP).On exit,
if JOBU = ‘I’, U contains the unitary matrix U;
if JOBU
= ‘U’, U contains the product U1 *U.If JOBU = ‘N’, U is not referenced.LDU
LDU is INTEGER
The leading dimension of the array U.LDU >= max(1, M) if JOBU = ‘U’;
LDU >= 1 otherwise.V
V is COMPLEX array, dimension(LDV, P) On entry, if JOBV = ‘V’, V must contain a matrix V1(usually the unitary matrix returned by CGGSVP).On exit,
if JOBV = ‘I’, V contains the unitary matrix V;
if JOBV
= ‘V’, V contains the product V1 *V.If JOBV = ‘N’, V is not referenced.LDV
LDV is INTEGER
The leading dimension of the array V.LDV >= max(1, P) if JOBV = ‘V’;
LDV >= 1 otherwise.Q
Q is COMPLEX array, dimension(LDQ, N) On entry, if JOBQ = ‘Q’, Q must contain a matrix Q1(usually the unitary matrix returned by CGGSVP).On exit,
if JOBQ = ‘I’, Q contains the unitary matrix Q;
if JOBQ
= ‘Q’, Q contains the product Q1 *Q.If JOBQ = ‘N’, Q is not referenced.LDQ
LDQ is INTEGER The leading dimension of the array Q.LDQ >= max(1, N) if JOBQ = 'Q'; LDQ >= 1 otherwise.WORK
WORK is COMPLEX array, dimension (2*N)NCYCLE
NCYCLE is INTEGER The number of cycles required for convergence.INFO
INFO is INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value. = 1: the procedure does not converge after MAXIT cycles.
Internal Parameters:
-
MAXIT INTEGER MAXIT specifies the total loops that the iterative procedure may take. If after MAXIT cycles, the routine fails to converge, we return INFO = 1.
Author:
- Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date:
- November 2011
Further Details:
-
CTGSJA essentially uses a variant of Kogbetliantz algorithm to reduce min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L matrix B13 to the form: U1**H *A13*Q1 = C1*R1; V1**H *B13*Q1 = S1*R1, where U1, V1 and Q1 are unitary matrix. C1 and S1 are diagonal matrices satisfying C1**2 + S1**2 = I, and R1 is an L-by-L nonsingular upper triangular matrix.
Definition at line 378 of file ctgsja.f.
Author
Generated automatically by Doxygen for LAPACK from the source code.
