![]() |
LAPACK
3.9.0
LAPACK: Linear Algebra PACKage
|
| subroutine dgsvts3 | ( | integer | M, |
| integer | P, | ||
| integer | N, | ||
| double precision, dimension( lda, * ) | A, | ||
| double precision, dimension( lda, * ) | AF, | ||
| integer | LDA, | ||
| double precision, dimension( ldb, * ) | B, | ||
| double precision, dimension( ldb, * ) | BF, | ||
| integer | LDB, | ||
| double precision, dimension( ldu, * ) | U, | ||
| integer | LDU, | ||
| double precision, dimension( ldv, * ) | V, | ||
| integer | LDV, | ||
| double precision, dimension( ldq, * ) | Q, | ||
| integer | LDQ, | ||
| double precision, dimension( * ) | ALPHA, | ||
| double precision, dimension( * ) | BETA, | ||
| double precision, dimension( ldr, * ) | R, | ||
| integer | LDR, | ||
| integer, dimension( * ) | IWORK, | ||
| double precision, dimension( lwork ) | WORK, | ||
| integer | LWORK, | ||
| double precision, dimension( * ) | RWORK, | ||
| double precision, dimension( 6 ) | RESULT | ||
| ) |
DGSVTS3
DGSVTS3 tests DGGSVD3, 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 DOUBLE PRECISION array, dimension (LDA,M)
The M-by-N matrix A. |
| [out] | AF | AF is DOUBLE PRECISION array, dimension (LDA,N)
Details of the GSVD of A and B, as returned by DGGSVD3,
see DGGSVD3 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 DOUBLE PRECISION array, dimension (LDB,P)
On entry, the P-by-N matrix B. |
| [out] | BF | BF is DOUBLE PRECISION array, dimension (LDB,N)
Details of the GSVD of A and B, as returned by DGGSVD3,
see DGGSVD3 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 DOUBLE PRECISION array, dimension(LDU,M)
The M by M orthogonal matrix U. |
| [in] | LDU | LDU is INTEGER
The leading dimension of the array U. LDU >= max(1,M). |
| [out] | V | V is DOUBLE PRECISION array, dimension(LDV,M)
The P by P orthogonal matrix V. |
| [in] | LDV | LDV is INTEGER
The leading dimension of the array V. LDV >= max(1,P). |
| [out] | Q | Q is DOUBLE PRECISION array, dimension(LDQ,N)
The N by N orthogonal 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 DGGSVD3 for details. |
| [out] | R | R is DOUBLE PRECISION 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 DOUBLE PRECISION 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 212 of file dgsvts3.f.