TGSJA: 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.
More...
|
pure 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) |
|
| la_ctgsja |
|
pure subroutine | dtgsja (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) |
|
| la_dtgsja |
|
| la_qtgsja |
|
pure 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) |
|
| la_stgsja |
|
| la_wtgsja |
|
pure subroutine | ztgsja (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) |
|
| la_ztgsja |
|
TGSJA: 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.
◆ ctgsja()
pure subroutine la_lapack::tgsja::ctgsja |
( |
character, intent(in) |
jobu, |
|
|
character, intent(in) |
jobv, |
|
|
character, intent(in) |
jobq, |
|
|
integer(ilp), intent(in) |
m, |
|
|
integer(ilp), intent(in) |
p, |
|
|
integer(ilp), intent(in) |
n, |
|
|
integer(ilp), intent(in) |
k, |
|
|
integer(ilp), intent(in) |
l, |
|
|
complex(sp), dimension(lda,*), intent(inout) |
a, |
|
|
integer(ilp), intent(in) |
lda, |
|
|
complex(sp), dimension(ldb,*), intent(inout) |
b, |
|
|
integer(ilp), intent(in) |
ldb, |
|
|
real(sp), intent(in) |
tola, |
|
|
real(sp), intent(in) |
tolb, |
|
|
real(sp), dimension(*), intent(out) |
alpha, |
|
|
real(sp), dimension(*), intent(out) |
beta, |
|
|
complex(sp), dimension(ldu,*), intent(inout) |
u, |
|
|
integer(ilp), intent(in) |
ldu, |
|
|
complex(sp), dimension(ldv,*), intent(inout) |
v, |
|
|
integer(ilp), intent(in) |
ldv, |
|
|
complex(sp), dimension(ldq,*), intent(inout) |
q, |
|
|
integer(ilp), intent(in) |
ldq, |
|
|
complex(sp), dimension(*), intent(out) |
work, |
|
|
integer(ilp), intent(out) |
ncycle, |
|
|
integer(ilp), intent(out) |
info |
|
) |
| |
◆ dtgsja()
pure subroutine la_lapack::tgsja::dtgsja |
( |
character, intent(in) |
jobu, |
|
|
character, intent(in) |
jobv, |
|
|
character, intent(in) |
jobq, |
|
|
integer(ilp), intent(in) |
m, |
|
|
integer(ilp), intent(in) |
p, |
|
|
integer(ilp), intent(in) |
n, |
|
|
integer(ilp), intent(in) |
k, |
|
|
integer(ilp), intent(in) |
l, |
|
|
real(dp), dimension(lda,*), intent(inout) |
a, |
|
|
integer(ilp), intent(in) |
lda, |
|
|
real(dp), dimension(ldb,*), intent(inout) |
b, |
|
|
integer(ilp), intent(in) |
ldb, |
|
|
real(dp), intent(in) |
tola, |
|
|
real(dp), intent(in) |
tolb, |
|
|
real(dp), dimension(*), intent(out) |
alpha, |
|
|
real(dp), dimension(*), intent(out) |
beta, |
|
|
real(dp), dimension(ldu,*), intent(inout) |
u, |
|
|
integer(ilp), intent(in) |
ldu, |
|
|
real(dp), dimension(ldv,*), intent(inout) |
v, |
|
|
integer(ilp), intent(in) |
ldv, |
|
|
real(dp), dimension(ldq,*), intent(inout) |
q, |
|
|
integer(ilp), intent(in) |
ldq, |
|
|
real(dp), dimension(*), intent(out) |
work, |
|
|
integer(ilp), intent(out) |
ncycle, |
|
|
integer(ilp), intent(out) |
info |
|
) |
| |
◆ la_ctgsja()
la_lapack::tgsja::la_ctgsja |
◆ la_dtgsja()
la_lapack::tgsja::la_dtgsja |
◆ la_qtgsja()
la_lapack::tgsja::la_qtgsja |
◆ la_stgsja()
la_lapack::tgsja::la_stgsja |
◆ la_wtgsja()
la_lapack::tgsja::la_wtgsja |
◆ la_ztgsja()
la_lapack::tgsja::la_ztgsja |
◆ stgsja()
pure subroutine la_lapack::tgsja::stgsja |
( |
character, intent(in) |
jobu, |
|
|
character, intent(in) |
jobv, |
|
|
character, intent(in) |
jobq, |
|
|
integer(ilp), intent(in) |
m, |
|
|
integer(ilp), intent(in) |
p, |
|
|
integer(ilp), intent(in) |
n, |
|
|
integer(ilp), intent(in) |
k, |
|
|
integer(ilp), intent(in) |
l, |
|
|
real(sp), dimension(lda,*), intent(inout) |
a, |
|
|
integer(ilp), intent(in) |
lda, |
|
|
real(sp), dimension(ldb,*), intent(inout) |
b, |
|
|
integer(ilp), intent(in) |
ldb, |
|
|
real(sp), intent(in) |
tola, |
|
|
real(sp), intent(in) |
tolb, |
|
|
real(sp), dimension(*), intent(out) |
alpha, |
|
|
real(sp), dimension(*), intent(out) |
beta, |
|
|
real(sp), dimension(ldu,*), intent(inout) |
u, |
|
|
integer(ilp), intent(in) |
ldu, |
|
|
real(sp), dimension(ldv,*), intent(inout) |
v, |
|
|
integer(ilp), intent(in) |
ldv, |
|
|
real(sp), dimension(ldq,*), intent(inout) |
q, |
|
|
integer(ilp), intent(in) |
ldq, |
|
|
real(sp), dimension(*), intent(out) |
work, |
|
|
integer(ilp), intent(out) |
ncycle, |
|
|
integer(ilp), intent(out) |
info |
|
) |
| |
◆ ztgsja()
pure subroutine la_lapack::tgsja::ztgsja |
( |
character, intent(in) |
jobu, |
|
|
character, intent(in) |
jobv, |
|
|
character, intent(in) |
jobq, |
|
|
integer(ilp), intent(in) |
m, |
|
|
integer(ilp), intent(in) |
p, |
|
|
integer(ilp), intent(in) |
n, |
|
|
integer(ilp), intent(in) |
k, |
|
|
integer(ilp), intent(in) |
l, |
|
|
complex(dp), dimension(lda,*), intent(inout) |
a, |
|
|
integer(ilp), intent(in) |
lda, |
|
|
complex(dp), dimension(ldb,*), intent(inout) |
b, |
|
|
integer(ilp), intent(in) |
ldb, |
|
|
real(dp), intent(in) |
tola, |
|
|
real(dp), intent(in) |
tolb, |
|
|
real(dp), dimension(*), intent(out) |
alpha, |
|
|
real(dp), dimension(*), intent(out) |
beta, |
|
|
complex(dp), dimension(ldu,*), intent(inout) |
u, |
|
|
integer(ilp), intent(in) |
ldu, |
|
|
complex(dp), dimension(ldv,*), intent(inout) |
v, |
|
|
integer(ilp), intent(in) |
ldv, |
|
|
complex(dp), dimension(ldq,*), intent(inout) |
q, |
|
|
integer(ilp), intent(in) |
ldq, |
|
|
complex(dp), dimension(*), intent(out) |
work, |
|
|
integer(ilp), intent(out) |
ncycle, |
|
|
integer(ilp), intent(out) |
info |
|
) |
| |
The documentation for this interface was generated from the following file: