STGSJA (3) Linux Manual Page
NAME
stgsja.f –
SYNOPSIS
Functions/Subroutines
subroutine stgsja (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)
STGSJA
Function/Subroutine Documentation
subroutine stgsja (characterJOBU, characterJOBV, characterJOBQ, integerM, integerP, integerN, integerK, integerL, real, dimension( lda, * )A, integerLDA, real, dimension( ldb, * )B, integerLDB, realTOLA, realTOLB, real, dimension( * )ALPHA, real, dimension( * )BETA, real, dimension( ldu, * )U, integerLDU, real, dimension( ldv, * )V, integerLDV, real, dimension( ldq, * )Q, integerLDQ, real, dimension( * )WORK, integerNCYCLE, integerINFO)
STGSJA
Purpose:
-
STGSJA computes the generalized singular value decomposition(GSVD) of two real 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 SGGSVP 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 **T *A *Q = D1 * (0 R), V **T *B *Q = D2 * (0 R), where U, V and Q are orthogonal 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 orthogonal 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 an orthogonal matrix U1 on entry, and the product U1*U is returned; = 'I': U is initialized to the unit matrix, and the orthogonal matrix U is returned; = 'N': U is not computed.JOBV
JOBV is CHARACTER*1 = 'V': V must contain an orthogonal matrix V1 on entry, and the product V1*V is returned; = 'I': V is initialized to the unit matrix, and the orthogonal matrix V is returned; = 'N': V is not computed.JOBQ
JOBQ is CHARACTER*1 = 'Q': Q must contain an orthogonal matrix Q1 on entry, and the product Q1*Q is returned; = 'I': Q is initialized to the unit matrix, and the orthogonal 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 STGSJA. See Further Details.A
A is REAL 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 REAL 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 and
BETA(K + L + 1
: N) = 0.U
U is REAL array, dimension(LDU, M) On entry, if JOBU = ‘U’, U must contain a matrix U1(usually the orthogonal matrix returned by SGGSVP).On exit,
if JOBU = ‘I’, U contains the orthogonal 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 REAL array, dimension(LDV, P) On entry, if JOBV = ‘V’, V must contain a matrix V1(usually the orthogonal matrix returned by SGGSVP).On exit,
if JOBV = ‘I’, V contains the orthogonal 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 REAL array, dimension(LDQ, N) On entry, if JOBQ = ‘Q’, Q must contain a matrix Q1(usually the orthogonal matrix returned by SGGSVP).On exit,
if JOBQ = ‘I’, Q contains the orthogonal 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 REAL 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..fi
Author : Univ.of Tennessee
Univ.of California Berkeley
Univ.of Colorado Denver
NAG Ltd.
Date : November 2011
Further Details :
STGSJA 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 **T *A13 *Q1 = C1 * R1;
V1 **T *B13 *Q1 = S1 * R1,
where U1, V1 and Q1 are orthogonal matrix, and Z **T is the transpose of Z.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 377 of file stgsja.f. Generated automatically by Doxygen for LAPACK from the source code. Author
Index
