fortran-lapack
Loading...
Searching...
No Matches
la_lapack::tgsja Interface Reference

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...

Public Member Functions

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
 

Detailed Description

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.

Member Function/Subroutine Documentation

◆ 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: