tgsja#
Functions
-
void stgsja(const char *jobu, const char *jobv, const char *jobq, const INT m, const INT p, const INT n, const INT k, const INT l, f32 *restrict A, const INT lda, f32 *restrict B, const INT ldb, const f32 tola, const f32 tolb, f32 *restrict alpha, f32 *restrict beta, f32 *restrict U, const INT ldu, f32 *restrict V, const INT ldv, f32 *restrict Q, const INT ldq, f32 *restrict work, INT *ncycle, INT *info)#
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 DGGSVP from a general M-by-N matrix A and P-by-N matrix B:
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 )N-K-L K L
On exit,
where U, V and Q are orthogonal matrices.U**T *A*Q = D1*( 0 R ), V**T *B*Q = D2*( 0 R ),
Parameters
injobu= ‘U’: U must contain an orthogonal matrix U1 on entry; = ‘I’: U is initialized to the unit matrix; = ‘N’: U is not computed.
injobv= ‘V’: V must contain an orthogonal matrix V1 on entry; = ‘I’: V is initialized to the unit matrix; = ‘N’: V is not computed.
injobq= ‘Q’: Q must contain an orthogonal matrix Q1 on entry; = ‘I’: Q is initialized to the unit matrix; = ‘N’: Q is not computed.
inmThe number of rows of matrix A. m >= 0.
inpThe number of rows of matrix B. p >= 0.
innThe number of columns of A and B. n >= 0.
inkSubblock dimension from SGGSVP3.
inlSubblock dimension from SGGSVP3.
inoutAOn entry, the M-by-N matrix A. On exit, contains the triangular matrix R.
inldaLeading dimension of A. lda >= max(1,m).
inoutBOn entry, the P-by-N matrix B. On exit, may contain part of R.
inldbLeading dimension of B. ldb >= max(1,p).
intolaConvergence threshold for A.
intolbConvergence threshold for B.
outalphaGeneralized singular values (dimension n).
outbetaGeneralized singular values (dimension n).
inoutUOrthogonal matrix U (dimension ldu,m).
inlduLeading dimension of U.
inoutVOrthogonal matrix V (dimension ldv,p).
inldvLeading dimension of V.
inoutQOrthogonal matrix Q (dimension ldq,n).
inldqLeading dimension of Q.
outworkWorkspace of dimension 2*n.
outncycleNumber of cycles for convergence.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
= 1: the procedure does not converge after MAXIT cycles.
void stgsja(
const char* jobu,
const char* jobv,
const char* jobq,
const INT m,
const INT p,
const INT n,
const INT k,
const INT l,
f32* restrict A,
const INT lda,
f32* restrict B,
const INT ldb,
const f32 tola,
const f32 tolb,
f32* restrict alpha,
f32* restrict beta,
f32* restrict U,
const INT ldu,
f32* restrict V,
const INT ldv,
f32* restrict Q,
const INT ldq,
f32* restrict work,
INT* ncycle,
INT* info
);
Functions
-
void dtgsja(const char *jobu, const char *jobv, const char *jobq, const INT m, const INT p, const INT n, const INT k, const INT l, f64 *restrict A, const INT lda, f64 *restrict B, const INT ldb, const f64 tola, const f64 tolb, f64 *restrict alpha, f64 *restrict beta, f64 *restrict U, const INT ldu, f64 *restrict V, const INT ldv, f64 *restrict Q, const INT ldq, f64 *restrict work, INT *ncycle, INT *info)#
DTGSJA 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 DGGSVP from a general M-by-N matrix A and P-by-N matrix B:
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 )N-K-L K L
On exit,
where U, V and Q are orthogonal matrices.U**T *A*Q = D1*( 0 R ), V**T *B*Q = D2*( 0 R ),
Parameters
injobu= ‘U’: U must contain an orthogonal matrix U1 on entry; = ‘I’: U is initialized to the unit matrix; = ‘N’: U is not computed.
injobv= ‘V’: V must contain an orthogonal matrix V1 on entry; = ‘I’: V is initialized to the unit matrix; = ‘N’: V is not computed.
injobq= ‘Q’: Q must contain an orthogonal matrix Q1 on entry; = ‘I’: Q is initialized to the unit matrix; = ‘N’: Q is not computed.
inmThe number of rows of matrix A. m >= 0.
inpThe number of rows of matrix B. p >= 0.
innThe number of columns of A and B. n >= 0.
inkSubblock dimension from DGGSVP3.
inlSubblock dimension from DGGSVP3.
inoutAOn entry, the M-by-N matrix A. On exit, contains the triangular matrix R.
inldaLeading dimension of A. lda >= max(1,m).
inoutBOn entry, the P-by-N matrix B. On exit, may contain part of R.
inldbLeading dimension of B. ldb >= max(1,p).
intolaConvergence threshold for A.
intolbConvergence threshold for B.
outalphaGeneralized singular values (dimension n).
outbetaGeneralized singular values (dimension n).
inoutUOrthogonal matrix U (dimension ldu,m).
inlduLeading dimension of U.
inoutVOrthogonal matrix V (dimension ldv,p).
inldvLeading dimension of V.
inoutQOrthogonal matrix Q (dimension ldq,n).
inldqLeading dimension of Q.
outworkWorkspace of dimension 2*n.
outncycleNumber of cycles for convergence.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
= 1: the procedure does not converge after MAXIT cycles.
void dtgsja(
const char* jobu,
const char* jobv,
const char* jobq,
const INT m,
const INT p,
const INT n,
const INT k,
const INT l,
f64* restrict A,
const INT lda,
f64* restrict B,
const INT ldb,
const f64 tola,
const f64 tolb,
f64* restrict alpha,
f64* restrict beta,
f64* restrict U,
const INT ldu,
f64* restrict V,
const INT ldv,
f64* restrict Q,
const INT ldq,
f64* restrict work,
INT* ncycle,
INT* info
);
Functions
-
void ctgsja(const char *jobu, const char *jobv, const char *jobq, const INT m, const INT p, const INT n, const INT k, const INT l, c64 *restrict A, const INT lda, c64 *restrict B, const INT ldb, const f32 tola, const f32 tolb, f32 *restrict alpha, f32 *restrict beta, c64 *restrict U, const INT ldu, c64 *restrict V, const INT ldv, c64 *restrict Q, const INT ldq, c64 *restrict work, INT *ncycle, INT *info)#
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 ZGGSVP from a general M-by-N matrix A and P-by-N matrix B:
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 )N-K-L K L
On exit,
where U, V and Q are unitary matrices.U**H *A*Q = D1*( 0 R ), V**H *B*Q = D2*( 0 R ),
Parameters
injobu= ‘U’: U must contain a unitary matrix U1 on entry; = ‘I’: U is initialized to the unit matrix; = ‘N’: U is not computed.
injobv= ‘V’: V must contain a unitary matrix V1 on entry; = ‘I’: V is initialized to the unit matrix; = ‘N’: V is not computed.
injobq= ‘Q’: Q must contain a unitary matrix Q1 on entry; = ‘I’: Q is initialized to the unit matrix; = ‘N’: Q is not computed.
inmThe number of rows of matrix A. m >= 0.
inpThe number of rows of matrix B. p >= 0.
innThe number of columns of A and B. n >= 0.
inkSubblock dimension from CGGSVP3.
inlSubblock dimension from CGGSVP3.
inoutAOn entry, the M-by-N matrix A. On exit, contains the triangular matrix R.
inldaLeading dimension of A. lda >= max(1,m).
inoutBOn entry, the P-by-N matrix B. On exit, may contain part of R.
inldbLeading dimension of B. ldb >= max(1,p).
intolaConvergence threshold for A.
intolbConvergence threshold for B.
outalphaGeneralized singular values (dimension n).
outbetaGeneralized singular values (dimension n).
inoutUUnitary matrix U (dimension ldu,m).
inlduLeading dimension of U.
inoutVUnitary matrix V (dimension ldv,p).
inldvLeading dimension of V.
inoutQUnitary matrix Q (dimension ldq,n).
inldqLeading dimension of Q.
outworkComplex workspace of dimension 2*n.
outncycleNumber of cycles for convergence.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
= 1: the procedure does not converge after MAXIT cycles.
void ctgsja(
const char* jobu,
const char* jobv,
const char* jobq,
const INT m,
const INT p,
const INT n,
const INT k,
const INT l,
c64* restrict A,
const INT lda,
c64* restrict B,
const INT ldb,
const f32 tola,
const f32 tolb,
f32* restrict alpha,
f32* restrict beta,
c64* restrict U,
const INT ldu,
c64* restrict V,
const INT ldv,
c64* restrict Q,
const INT ldq,
c64* restrict work,
INT* ncycle,
INT* info
);
Functions
-
void ztgsja(const char *jobu, const char *jobv, const char *jobq, const INT m, const INT p, const INT n, const INT k, const INT l, c128 *restrict A, const INT lda, c128 *restrict B, const INT ldb, const f64 tola, const f64 tolb, f64 *restrict alpha, f64 *restrict beta, c128 *restrict U, const INT ldu, c128 *restrict V, const INT ldv, c128 *restrict Q, const INT ldq, c128 *restrict work, INT *ncycle, INT *info)#
ZTGSJA 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 ZGGSVP from a general M-by-N matrix A and P-by-N matrix B:
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 )N-K-L K L
On exit,
where U, V and Q are unitary matrices.U**H *A*Q = D1*( 0 R ), V**H *B*Q = D2*( 0 R ),
Parameters
injobu= ‘U’: U must contain a unitary matrix U1 on entry; = ‘I’: U is initialized to the unit matrix; = ‘N’: U is not computed.
injobv= ‘V’: V must contain a unitary matrix V1 on entry; = ‘I’: V is initialized to the unit matrix; = ‘N’: V is not computed.
injobq= ‘Q’: Q must contain a unitary matrix Q1 on entry; = ‘I’: Q is initialized to the unit matrix; = ‘N’: Q is not computed.
inmThe number of rows of matrix A. m >= 0.
inpThe number of rows of matrix B. p >= 0.
innThe number of columns of A and B. n >= 0.
inkSubblock dimension from ZGGSVP3.
inlSubblock dimension from ZGGSVP3.
inoutAOn entry, the M-by-N matrix A. On exit, contains the triangular matrix R.
inldaLeading dimension of A. lda >= max(1,m).
inoutBOn entry, the P-by-N matrix B. On exit, may contain part of R.
inldbLeading dimension of B. ldb >= max(1,p).
intolaConvergence threshold for A.
intolbConvergence threshold for B.
outalphaGeneralized singular values (dimension n).
outbetaGeneralized singular values (dimension n).
inoutUUnitary matrix U (dimension ldu,m).
inlduLeading dimension of U.
inoutVUnitary matrix V (dimension ldv,p).
inldvLeading dimension of V.
inoutQUnitary matrix Q (dimension ldq,n).
inldqLeading dimension of Q.
outworkComplex workspace of dimension 2*n.
outncycleNumber of cycles for convergence.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
= 1: the procedure does not converge after MAXIT cycles.
void ztgsja(
const char* jobu,
const char* jobv,
const char* jobq,
const INT m,
const INT p,
const INT n,
const INT k,
const INT l,
c128* restrict A,
const INT lda,
c128* restrict B,
const INT ldb,
const f64 tola,
const f64 tolb,
f64* restrict alpha,
f64* restrict beta,
c128* restrict U,
const INT ldu,
c128* restrict V,
const INT ldv,
c128* restrict Q,
const INT ldq,
c128* restrict work,
INT* ncycle,
INT* info
);