dggsvd man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

dggsvd(3P)		    Sun Performance Library		    dggsvd(3P)

NAME
       dggsvd - compute the generalized singular value decomposition (GSVD) of
       an M-by-N real matrix A and P-by-N real matrix B

SYNOPSIS
       SUBROUTINE DGGSVD(JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB,
	     ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, IWORK3, INFO)

       CHARACTER * 1 JOBU, JOBV, JOBQ
       INTEGER M, N, P, K, L, LDA, LDB, LDU, LDV, LDQ, INFO
       INTEGER IWORK3(*)
       DOUBLE  PRECISION  A(LDA,*),  B(LDB,*),	ALPHA(*),  BETA(*),  U(LDU,*),
       V(LDV,*), Q(LDQ,*), WORK(*)

       SUBROUTINE DGGSVD_64(JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB,
	     ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, IWORK3, INFO)

       CHARACTER * 1 JOBU, JOBV, JOBQ
       INTEGER*8 M, N, P, K, L, LDA, LDB, LDU, LDV, LDQ, INFO
       INTEGER*8 IWORK3(*)
       DOUBLE  PRECISION  A(LDA,*),  B(LDB,*),	ALPHA(*),  BETA(*),  U(LDU,*),
       V(LDV,*), Q(LDQ,*), WORK(*)

   F95 INTERFACE
       SUBROUTINE GGSVD(JOBU, JOBV, JOBQ, [M], [N], [P], K, L, A, [LDA], B,
	      [LDB], ALPHA, BETA, U, [LDU], V, [LDV], Q, [LDQ], [WORK], IWORK3,
	      [INFO])

       CHARACTER(LEN=1) :: JOBU, JOBV, JOBQ
       INTEGER :: M, N, P, K, L, LDA, LDB, LDU, LDV, LDQ, INFO
       INTEGER, DIMENSION(:) :: IWORK3
       REAL(8), DIMENSION(:) :: ALPHA, BETA, WORK
       REAL(8), DIMENSION(:,:) :: A, B, U, V, Q

       SUBROUTINE GGSVD_64(JOBU, JOBV, JOBQ, [M], [N], [P], K, L, A, [LDA],
	      B, [LDB], ALPHA, BETA, U, [LDU], V, [LDV], Q, [LDQ], [WORK],
	      IWORK3, [INFO])

       CHARACTER(LEN=1) :: JOBU, JOBV, JOBQ
       INTEGER(8) :: M, N, P, K, L, LDA, LDB, LDU, LDV, LDQ, INFO
       INTEGER(8), DIMENSION(:) :: IWORK3
       REAL(8), DIMENSION(:) :: ALPHA, BETA, WORK
       REAL(8), DIMENSION(:,:) :: A, B, U, V, Q

   C INTERFACE
       #include <sunperf.h>

       void dggsvd(char jobu, char jobv, char jobq, int m, int n, int  p,  int
		 *k,  int  *l,	double *a, int lda, double *b, int ldb, double
		 *alpha, double *beta, double *u, int ldu, double *v, int ldv,
		 double *q, int ldq, int *iwork3, int *info);

       void dggsvd_64(char jobu, char jobv, char jobq, long m, long n, long p,
		 long *k, long *l, double *a, long lda, double *b,  long  ldb,
		 double	 *alpha, double *beta, double *u, long ldu, double *v,
		 long ldv, double *q, long ldq, long *iwork3, long *info);

PURPOSE
       dggsvd computes the generalized singular value decomposition (GSVD)  of
       an M-by-N real matrix A and P-by-N real matrix B:

	   U'*A*Q = D1*( 0 R ),	   V'*B*Q = D2*( 0 R )

       where U, V and Q are orthogonal matrices, and Z' is the transpose of Z.
       Let K+L = the effective numerical rank of the matrix (A',B')',  then  R
       is  a  K+L-by-K+L nonsingular upper triangular matrix, D1 and D2 are M-
       by-(K+L) and P-by-(K+L) "diagonal" matrices and of the following struc‐
       tures, respectively:

       If M-K-L >= 0,

			   K  L
	      D1 =     K ( I  0 )
		       L ( 0  C )
		   M-K-L ( 0  0 )

			 K  L
	      D2 =   L ( 0  S )
		   P-L ( 0  0 )

		       N-K-L  K	   L
	 ( 0 R ) = K (	0   R11	 R12 )
		   L (	0    0	 R22 )

       where

	 C = diag( ALPHA(K+1), ... , ALPHA(K+L) ),
	 S = diag( BETA(K+1),  ... , BETA(K+L) ),
	 C**2 + S**2 = I.

	 R is stored in A(1:K+L,N-K-L+1:N) on exit.

       If M-K-L < 0,

			 K M-K K+L-M
	      D1 =   K ( I  0	 0   )
		   M-K ( 0  C	 0   )

			   K M-K K+L-M
	      D2 =   M-K ( 0  S	   0  )
		   K+L-M ( 0  0	   I  )
		     P-L ( 0  0	   0  )

			  N-K-L	 K   M-K  K+L-M
	 ( 0 R ) =     K ( 0	R11  R12  R13  )
		     M-K ( 0	 0   R22  R23  )
		   K+L-M ( 0	 0    0	  R33  )

       where

	 C = diag( ALPHA(K+1), ... , ALPHA(M) ),
	 S = diag( BETA(K+1),  ... , BETA(M) ),
	 C**2 + S**2 = I.

	 (R11 R12 R13 ) is stored in A(1:M, N-K-L+1:N), and R33 is stored
	 ( 0  R22 R23 )
	 in B(M-K+1:L,N+M-K-L+1:N) on exit.

       The routine computes C, S, R, and optionally the orthogonal transforma‐
       tion matrices U, V and Q.

       In particular, if B is an N-by-N nonsingular matrix, then the GSVD of A
       and B implicitly gives the SVD of A*inv(B):
			    A*inv(B) = U*(D1*inv(D2))*V'.
       If  ( A',B')' has orthonormal columns, then the GSVD of A and B is also
       equal to the CS decomposition of A and B. Furthermore, the GSVD can  be
       used to derive the solution of the eigenvalue problem:
			    A'*A x = lambda* B'*B x.
       In some literature, the GSVD of A and B is presented in the form
			U'*A*X = ( 0 D1 ),   V'*B*X = ( 0 D2 )
       where  U	 and  V	 are  orthogonal  and  X is nonsingular, D1 and D2 are
       ``diagonal''.  The former GSVD form can be converted to the latter form
       by taking the nonsingular matrix X as

			    X = Q*( I	0    )
				  ( 0 inv(R) ).

ARGUMENTS
       JOBU (input)
		 = 'U':	 Orthogonal matrix U is computed;
		 = 'N':	 U is not computed.

       JOBV (input)
		 = 'V':	 Orthogonal matrix V is computed;
		 = 'N':	 V is not computed.

       JOBQ (input)
		 = 'Q':	 Orthogonal matrix Q is computed;
		 = 'N':	 Q is not computed.

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

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

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

       K (output)
		 On  exit,  K  and  L  specify	the dimension of the subblocks
		 described in the Purpose section.  K + L = effective  numeri‐
		 cal rank of (A',B')'.

       L (output)
		 See the description of K.

       A (input/output)
		 On  entry, the M-by-N matrix A.  On exit, A contains the tri‐
		 angular matrix R, or part of R.  See Purpose for details.

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

       B (input/output)
		 On entry, the P-by-N matrix B.	 On exit, B contains the  tri‐
		 angular matrix R if M-K-L < 0.	 See Purpose for details.

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

       ALPHA (output)
		 On  exit,  ALPHA  and	BETA  contain the generalized singular
		 value pairs of A and B; ALPHA(1:K) = 1,
		 BETA(1:K)  = 0, and if M-K-L >= 0, ALPHA(K+1:K+L) = C,
		 BETA(K+1:K+L)	 =  S,	or  if	M-K-L  <  0,   ALPHA(K+1:M)=C,
		 ALPHA(M+1:K+L)=0
		 BETA(K+1:M) =S, BETA(M+1:K+L) =1 and ALPHA(K+L+1:N) = 0
		 BETA(K+L+1:N)	= 0

       BETA (output)
		 See the description of ALPHA.

       U (output)
		 If JOBU = 'U', U contains the M-by-M orthogonal matrix U.  If
		 JOBU = 'N', U is not referenced.

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

       V (output)
		 If JOBV = 'V', V contains the P-by-P orthogonal matrix V.  If
		 JOBV = 'N', V is not referenced.

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

       Q (output)
		 If JOBQ = 'Q', Q contains the N-by-N orthogonal matrix Q.  If
		 JOBQ = 'N', Q is not referenced.

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

       WORK (workspace)
		 dimension (max(3*N,M,P)+N)

       IWORK3 (output)
		 dimension(N)  On exit, IWORK3 stores the sorting information.
		 More precisely, the following loop will sort ALPHA  for  I  =
		 K+1,  min(M,K+L)  swap	 ALPHA(I)  and ALPHA(IWORK3(I)) endfor
		 such that ALPHA(1) >= ALPHA(2) >= ... >= ALPHA(N).

       INFO (output)
		 = 0:  successful exit
		 < 0:  if INFO = -i, the i-th argument had an illegal value.
		 > 0:  if INFO = 1, the Jacobi-type procedure failed  to  con‐
		 verge.	 For further details, see subroutine DTGSJA.

				  6 Mar 2009			    dggsvd(3P)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net