LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine zgsvts3 | ( | integer | m, |
integer | p, | ||
integer | n, | ||
complex*16, dimension( lda, * ) | a, | ||
complex*16, dimension( lda, * ) | af, | ||
integer | lda, | ||
complex*16, dimension( ldb, * ) | b, | ||
complex*16, dimension( ldb, * ) | bf, | ||
integer | ldb, | ||
complex*16, dimension( ldu, * ) | u, | ||
integer | ldu, | ||
complex*16, dimension( ldv, * ) | v, | ||
integer | ldv, | ||
complex*16, dimension( ldq, * ) | q, | ||
integer | ldq, | ||
double precision, dimension( * ) | alpha, | ||
double precision, dimension( * ) | beta, | ||
complex*16, dimension( ldr, * ) | r, | ||
integer | ldr, | ||
integer, dimension( * ) | iwork, | ||
complex*16, dimension( lwork ) | work, | ||
integer | lwork, | ||
double precision, dimension( * ) | rwork, | ||
double precision, dimension( 6 ) | result ) |
ZGSVTS3
!> !> ZGSVTS3 tests ZGGSVD3, which computes the GSVD of an M-by-N matrix A !> and a P-by-N matrix B: !> U'*A*Q = D1*R and V'*B*Q = D2*R. !>
[in] | M | !> M is INTEGER !> The number of rows of the matrix A. M >= 0. !> |
[in] | P | !> P is INTEGER !> The number of rows of the matrix B. P >= 0. !> |
[in] | N | !> N is INTEGER !> The number of columns of the matrices A and B. N >= 0. !> |
[in] | A | !> A is COMPLEX*16 array, dimension (LDA,M) !> The M-by-N matrix A. !> |
[out] | AF | !> AF is COMPLEX*16 array, dimension (LDA,N) !> Details of the GSVD of A and B, as returned by ZGGSVD3, !> see ZGGSVD3 for further details. !> |
[in] | LDA | !> LDA is INTEGER !> The leading dimension of the arrays A and AF. !> LDA >= max( 1,M ). !> |
[in] | B | !> B is COMPLEX*16 array, dimension (LDB,P) !> On entry, the P-by-N matrix B. !> |
[out] | BF | !> BF is COMPLEX*16 array, dimension (LDB,N) !> Details of the GSVD of A and B, as returned by ZGGSVD3, !> see ZGGSVD3 for further details. !> |
[in] | LDB | !> LDB is INTEGER !> The leading dimension of the arrays B and BF. !> LDB >= max(1,P). !> |
[out] | U | !> U is COMPLEX*16 array, dimension(LDU,M) !> The M by M unitary matrix U. !> |
[in] | LDU | !> LDU is INTEGER !> The leading dimension of the array U. LDU >= max(1,M). !> |
[out] | V | !> V is COMPLEX*16 array, dimension(LDV,M) !> The P by P unitary matrix V. !> |
[in] | LDV | !> LDV is INTEGER !> The leading dimension of the array V. LDV >= max(1,P). !> |
[out] | Q | !> Q is COMPLEX*16 array, dimension(LDQ,N) !> The N by N unitary matrix Q. !> |
[in] | LDQ | !> LDQ is INTEGER !> The leading dimension of the array Q. LDQ >= max(1,N). !> |
[out] | ALPHA | !> ALPHA is DOUBLE PRECISION array, dimension (N) !> |
[out] | BETA | !> BETA is DOUBLE PRECISION array, dimension (N) !> !> The generalized singular value pairs of A and B, the !> ``diagonal'' matrices D1 and D2 are constructed from !> ALPHA and BETA, see subroutine ZGGSVD3 for details. !> |
[out] | R | !> R is COMPLEX*16 array, dimension(LDQ,N) !> The upper triangular matrix R. !> |
[in] | LDR | !> LDR is INTEGER !> The leading dimension of the array R. LDR >= max(1,N). !> |
[out] | IWORK | !> IWORK is INTEGER array, dimension (N) !> |
[out] | WORK | !> WORK is COMPLEX*16 array, dimension (LWORK) !> |
[in] | LWORK | !> LWORK is INTEGER !> The dimension of the array WORK, !> LWORK >= max(M,P,N)*max(M,P,N). !> |
[out] | RWORK | !> RWORK is DOUBLE PRECISION array, dimension (max(M,P,N)) !> |
[out] | RESULT | !> RESULT is DOUBLE PRECISION array, dimension (6) !> The test ratios: !> RESULT(1) = norm( U'*A*Q - D1*R ) / ( MAX(M,N)*norm(A)*ULP) !> RESULT(2) = norm( V'*B*Q - D2*R ) / ( MAX(P,N)*norm(B)*ULP) !> RESULT(3) = norm( I - U'*U ) / ( M*ULP ) !> RESULT(4) = norm( I - V'*V ) / ( P*ULP ) !> RESULT(5) = norm( I - Q'*Q ) / ( N*ULP ) !> RESULT(6) = 0 if ALPHA is in decreasing order; !> = ULPINV otherwise. !> |
Definition at line 206 of file zgsvts3.f.