*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> complib/zggsvp (3)              
Title
Content
Arch
Section
 

Contents


ZGGSVP(3F)							    ZGGSVP(3F)


NAME    [Toc]    [Back]

     ZGGSVP - compute unitary matrices U, V and	Q such that   N-K-L K L
     U'*A*Q = K	( 0 A12	A13 ) if M-K-L >= 0

SYNOPSIS    [Toc]    [Back]

     SUBROUTINE	ZGGSVP(	JOBU, JOBV, JOBQ, M, P,	N, A, LDA, B, LDB, TOLA, TOLB,
			K, L, U, LDU, V, LDV, Q, LDQ, IWORK, RWORK, TAU, WORK,
			INFO )

	 CHARACTER	JOBQ, JOBU, JOBV

	 INTEGER	INFO, K, L, LDA, LDB, LDQ, LDU,	LDV, M,	N, P

	 DOUBLE		PRECISION TOLA,	TOLB

	 INTEGER	IWORK( * )

	 DOUBLE		PRECISION RWORK( * )

	 COMPLEX*16	A( LDA,	* ), B(	LDB, * ), Q( LDQ, * ), TAU( * ), U(
			LDU, * ), V( LDV, * ), WORK( * )

PURPOSE    [Toc]    [Back]

     ZGGSVP computes unitary matrices U, V and Q such that
		   L ( 0     0	 A23 )
	       M-K-L ( 0     0	  0  )

		      N-K-L  K	  L
	     =	   K ( 0    A12	 A13 )	if M-K-L < 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 >= 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 conjugate transpose of Z.

     This decomposition	is the preprocessing step for computing	the
     Generalized Singular Value	Decomposition (GSVD), see subroutine ZGGSVD.

ARGUMENTS    [Toc]    [Back]

     JOBU    (input) CHARACTER*1
	     = 'U':  Unitary matrix U is computed;
	     = 'N':  U is not computed.

     JOBV    (input) CHARACTER*1
	     = 'V':  Unitary matrix V is computed;
	     = 'N':  V is not computed.



									Page 1






ZGGSVP(3F)							    ZGGSVP(3F)



     JOBQ    (input) CHARACTER*1
	     = 'Q':  Unitary matrix Q is computed;
	     = 'N':  Q is not computed.

     M	     (input) INTEGER
	     The number	of rows	of the matrix A.  M >= 0.

     P	     (input) INTEGER
	     The number	of rows	of the matrix B.  P >= 0.

     N	     (input) INTEGER
	     The number	of columns of the matrices A and B.  N >= 0.

     A	     (input/output) COMPLEX*16 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.

     LDA     (input) INTEGER
	     The leading dimension of the array	A. LDA >= max(1,M).

     B	     (input/output) COMPLEX*16 array, dimension	(LDB,N)
	     On	entry, the P-by-N matrix B.  On	exit, B	contains the
	     triangular	matrix described in the	Purpose	section.

     LDB     (input) INTEGER
	     The leading dimension of the array	B. LDB >= max(1,P).

     TOLA    (input) DOUBLE PRECISION
	     TOLB    (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	     (output) INTEGER
	     L	     (output) INTEGER On exit, K and L specify the dimension
	     of	the subblocks described	in Purpose section.  K + L = effective
	     numerical rank of (A',B')'.

     U	     (output) COMPLEX*16 array,	dimension (LDU,M)
	     If	JOBU = 'U', U contains the unitary matrix U.  If JOBU =	'N', U
	     is	not referenced.

     LDU     (input) INTEGER
	     The leading dimension of the array	U. LDU >= max(1,M) if JOBU =
	     'U'; LDU >= 1 otherwise.

     V	     (output) COMPLEX*16 array,	dimension (LDV,M)
	     If	JOBV = 'V', V contains the unitary matrix V.  If JOBV =	'N', V
	     is	not referenced.



									Page 2






ZGGSVP(3F)							    ZGGSVP(3F)



     LDV     (input) INTEGER
	     The leading dimension of the array	V. LDV >= max(1,P) if JOBV =
	     'V'; LDV >= 1 otherwise.

     Q	     (output) COMPLEX*16 array,	dimension (LDQ,N)
	     If	JOBQ = 'Q', Q contains the unitary matrix Q.  If JOBQ =	'N', Q
	     is	not referenced.

     LDQ     (input) INTEGER
	     The leading dimension of the array	Q. LDQ >= max(1,N) if JOBQ =
	     'Q'; LDQ >= 1 otherwise.

     IWORK   (workspace) INTEGER array,	dimension (N)

     RWORK   (workspace) DOUBLE	PRECISION array, dimension (2*N)

     TAU     (workspace) COMPLEX*16 array, dimension (N)

     WORK    (workspace) COMPLEX*16 array, dimension (max(3*N,M,P))

     INFO    (output) INTEGER
	     = 0:  successful exit
	     < 0:  if INFO = -i, the i-th argument had an illegal value.

FURTHER	DETAILS
     The subroutine uses LAPACK	subroutine ZGEQPF for the QR factorization
     with column pivoting to detect the	effective numerical rank of the	a
     matrix. It	may be replaced	by a better rank determination strategy.
ZGGSVP(3F)							    ZGGSVP(3F)


NAME    [Toc]    [Back]

     ZGGSVP - compute unitary matrices U, V and	Q such that   N-K-L K L
     U'*A*Q = K	( 0 A12	A13 ) if M-K-L >= 0

SYNOPSIS    [Toc]    [Back]

     SUBROUTINE	ZGGSVP(	JOBU, JOBV, JOBQ, M, P,	N, A, LDA, B, LDB, TOLA, TOLB,
			K, L, U, LDU, V, LDV, Q, LDQ, IWORK, RWORK, TAU, WORK,
			INFO )

	 CHARACTER	JOBQ, JOBU, JOBV

	 INTEGER	INFO, K, L, LDA, LDB, LDQ, LDU,	LDV, M,	N, P

	 DOUBLE		PRECISION TOLA,	TOLB

	 INTEGER	IWORK( * )

	 DOUBLE		PRECISION RWORK( * )

	 COMPLEX*16	A( LDA,	* ), B(	LDB, * ), Q( LDQ, * ), TAU( * ), U(
			LDU, * ), V( LDV, * ), WORK( * )

PURPOSE    [Toc]    [Back]

     ZGGSVP computes unitary matrices U, V and Q such that
		   L ( 0     0	 A23 )
	       M-K-L ( 0     0	  0  )

		      N-K-L  K	  L
	     =	   K ( 0    A12	 A13 )	if M-K-L < 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 >= 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 conjugate transpose of Z.

     This decomposition	is the preprocessing step for computing	the
     Generalized Singular Value	Decomposition (GSVD), see subroutine ZGGSVD.

ARGUMENTS    [Toc]    [Back]

     JOBU    (input) CHARACTER*1
	     = 'U':  Unitary matrix U is computed;
	     = 'N':  U is not computed.

     JOBV    (input) CHARACTER*1
	     = 'V':  Unitary matrix V is computed;
	     = 'N':  V is not computed.



									Page 1






ZGGSVP(3F)							    ZGGSVP(3F)



     JOBQ    (input) CHARACTER*1
	     = 'Q':  Unitary matrix Q is computed;
	     = 'N':  Q is not computed.

     M	     (input) INTEGER
	     The number	of rows	of the matrix A.  M >= 0.

     P	     (input) INTEGER
	     The number	of rows	of the matrix B.  P >= 0.

     N	     (input) INTEGER
	     The number	of columns of the matrices A and B.  N >= 0.

     A	     (input/output) COMPLEX*16 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.

     LDA     (input) INTEGER
	     The leading dimension of the array	A. LDA >= max(1,M).

     B	     (input/output) COMPLEX*16 array, dimension	(LDB,N)
	     On	entry, the P-by-N matrix B.  On	exit, B	contains the
	     triangular	matrix described in the	Purpose	section.

     LDB     (input) INTEGER
	     The leading dimension of the array	B. LDB >= max(1,P).

     TOLA    (input) DOUBLE PRECISION
	     TOLB    (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	     (output) INTEGER
	     L	     (output) INTEGER On exit, K and L specify the dimension
	     of	the subblocks described	in Purpose section.  K + L = effective
	     numerical rank of (A',B')'.

     U	     (output) COMPLEX*16 array,	dimension (LDU,M)
	     If	JOBU = 'U', U contains the unitary matrix U.  If JOBU =	'N', U
	     is	not referenced.

     LDU     (input) INTEGER
	     The leading dimension of the array	U. LDU >= max(1,M) if JOBU =
	     'U'; LDU >= 1 otherwise.

     V	     (output) COMPLEX*16 array,	dimension (LDV,M)
	     If	JOBV = 'V', V contains the unitary matrix V.  If JOBV =	'N', V
	     is	not referenced.



									Page 2






ZGGSVP(3F)							    ZGGSVP(3F)



     LDV     (input) INTEGER
	     The leading dimension of the array	V. LDV >= max(1,P) if JOBV =
	     'V'; LDV >= 1 otherwise.

     Q	     (output) COMPLEX*16 array,	dimension (LDQ,N)
	     If	JOBQ = 'Q', Q contains the unitary matrix Q.  If JOBQ =	'N', Q
	     is	not referenced.

     LDQ     (input) INTEGER
	     The leading dimension of the array	Q. LDQ >= max(1,N) if JOBQ =
	     'Q'; LDQ >= 1 otherwise.

     IWORK   (workspace) INTEGER array,	dimension (N)

     RWORK   (workspace) DOUBLE	PRECISION array, dimension (2*N)

     TAU     (workspace) COMPLEX*16 array, dimension (N)

     WORK    (workspace) COMPLEX*16 array, dimension (max(3*N,M,P))

     INFO    (output) INTEGER
	     = 0:  successful exit
	     < 0:  if INFO = -i, the i-th argument had an illegal value.

FURTHER	DETAILS
     The subroutine uses LAPACK	subroutine ZGEQPF for the QR factorization
     with column pivoting to detect the	effective numerical rank of the	a
     matrix. It	may be replaced	by a better rank determination strategy.


									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service