Click or drag to resize

DGGSVPRun Method

Purpose ======= DGGSVP computes orthogonal matrices U, V and Q such that N-K-L K L U'*A*Q = K ( 0 A12 A13 ) if M-K-L .GE. 0; L ( 0 0 A23 ) M-K-L ( 0 0 0 ) N-K-L K L = K ( 0 A12 A13 ) if M-K-L .LT. 0; M-K ( 0 0 A23 ) N-K-L K L V'*B*Q = 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 .GE. 0, otherwise A23 is (M-K)-by-L upper trapezoidal. K+L = the effective numerical rank of the (M+P)-by-N matrix (A',B')'. Z' denotes the transpose of Z. This decomposition is the preprocessing step for computing the Generalized Singular Value Decomposition (GSVD), see subroutine DGGSVD.

Namespace: DotNumerics.LinearAlgebra.CSLapack
Assembly: DWSIM.MathOps.DotNumerics (in DWSIM.MathOps.DotNumerics.dll) Version: 1.0.0.0 (1.0.0.0)
Syntax
public void Run(
	string JOBU,
	string JOBV,
	string JOBQ,
	int M,
	int P,
	int N,
	ref double[] A,
	int offset_a,
	int LDA,
	ref double[] B,
	int offset_b,
	int LDB,
	double TOLA,
	double TOLB,
	ref int K,
	ref int L,
	ref double[] U,
	int offset_u,
	int LDU,
	ref double[] V,
	int offset_v,
	int LDV,
	ref double[] Q,
	int offset_q,
	int LDQ,
	ref int[] IWORK,
	int offset_iwork,
	ref double[] TAU,
	int offset_tau,
	ref double[] WORK,
	int offset_work,
	ref int INFO
)
Request Example View Source

Parameters

JOBU  String
(input) CHARACTER*1 = 'U': Orthogonal matrix U is computed; = 'N': U is not computed.
JOBV  String
(input) CHARACTER*1 = 'V': Orthogonal matrix V is computed; = 'N': V is not computed.
JOBQ  String
(input) CHARACTER*1 = 'Q': Orthogonal matrix Q is computed; = 'N': Q is not computed.
M  Int32
(input) INTEGER The number of rows of the matrix A. M .GE. 0.
P  Int32
(input) INTEGER The number of rows of the matrix B. P .GE. 0.
N  Int32
(input) INTEGER The number of columns of the matrices A and B. N .GE. 0.
A  Double
(input/output) DOUBLE PRECISION array, dimension (LDA,N) On entry, the M-by-N matrix A. On exit, A contains the triangular (or trapezoidal) matrix described in the Purpose section.
offset_a  Int32
 
LDA  Int32
(input) INTEGER The leading dimension of the array A. LDA .GE. max(1,M).
B  Double
(input/output) DOUBLE PRECISION array, dimension (LDB,N) On entry, the P-by-N matrix B. On exit, B contains the triangular matrix described in the Purpose section.
offset_b  Int32
 
LDB  Int32
(input) INTEGER The leading dimension of the array B. LDB .GE. max(1,P).
TOLA  Double
(input) DOUBLE PRECISION
TOLB  Double
(input) DOUBLE PRECISION TOLA and TOLB are the thresholds to determine the effective numerical rank of matrix B and a subblock of A. Generally, they are set to TOLA = MAX(M,N)*norm(A)*MAZHEPS, TOLB = MAX(P,N)*norm(B)*MAZHEPS. The size of TOLA and TOLB may affect the size of backward errors of the decomposition.
K  Int32
(output) INTEGER
L  Int32
( 0 0 A23 )
U  Double
(output) DOUBLE PRECISION array, dimension (LDU,M) If JOBU = 'U', U contains the orthogonal matrix U. If JOBU = 'N', U is not referenced.
offset_u  Int32
 
LDU  Int32
(input) INTEGER The leading dimension of the array U. LDU .GE. max(1,M) if JOBU = 'U'; LDU .GE. 1 otherwise.
V  Double
(output) DOUBLE PRECISION array, dimension (LDV,M) If JOBV = 'V', V contains the orthogonal matrix V. If JOBV = 'N', V is not referenced.
offset_v  Int32
 
LDV  Int32
(input) INTEGER The leading dimension of the array V. LDV .GE. max(1,P) if JOBV = 'V'; LDV .GE. 1 otherwise.
Q  Double
(output) DOUBLE PRECISION array, dimension (LDQ,N) If JOBQ = 'Q', Q contains the orthogonal matrix Q. If JOBQ = 'N', Q is not referenced.
offset_q  Int32
 
LDQ  Int32
(input) INTEGER The leading dimension of the array Q. LDQ .GE. max(1,N) if JOBQ = 'Q'; LDQ .GE. 1 otherwise.
IWORK  Int32
(workspace) INTEGER array, dimension (N)
offset_iwork  Int32
 
TAU  Double
(workspace) DOUBLE PRECISION array, dimension (N)
offset_tau  Int32
 
WORK  Double
(workspace) DOUBLE PRECISION array, dimension (max(3*N,M,P))
offset_work  Int32
 
INFO  Int32
(output) INTEGER = 0: successful exit .LT. 0: if INFO = -i, the i-th argument had an illegal value.
See Also