dgesvj man page on Scientific

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

DGESVJ(1LAPACK routine (version 3.2)				     DGESVJ(1)

NAME
       DGESVJ  -  computes the singular value decomposition (SVD) of a real M-
       by-N matrix A, where M >= N

SYNOPSIS
       SUBROUTINE DGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V,

	   +		  LDV, WORK, LWORK, INFO )

	   IMPLICIT	  NONE

	   INTEGER	  INFO, LDA, LDV, LWORK, M, MV, N

	   CHARACTER*1	  JOBA, JOBU, JOBV

	   DOUBLE	  PRECISION A( LDA, * ), SVA( N ), V( LDV, * ),

	   +		  WORK( LWORK )

PURPOSE
       DGESVJ computes the singular value decomposition (SVD) of a real M-by-N
       matrix A, where M >= N. The SVD of A is written as
					  [++]	 [xx]	[x0]   [xx]
		    A = U * SIGMA * V^t,  [++] = [xx] * [ox] * [xx]
					  [++]	 [xx]
       where  SIGMA  is	 an N-by-N diagonal matrix, U is an M-by-N orthonormal
       matrix, and V is an N-by-N orthogonal matrix. The diagonal elements  of
       SIGMA are the singular values of A. The columns of U and V are the left
       and the right singular vectors of A, respectively.
       Further Details
       The orthogonal N-by-N matrix V is obtained as a product of Jacobi plane
       rotations.  The	rotations  are implemented as fast scaled rotations of
       Anda and Park [1]. In the case of underflow of the Jacobi angle, a mod‐
       ified  Jacobi  transformation of Drmac [4] is used. Pivot strategy uses
       column interchanges of de Rijk [2]. The relative accuracy of  the  com‐
       puted singular values and the accuracy of the computed singular vectors
       (in angle metric) is as guaranteed by the theory of Demmel and  Veselic
       [3].   The  condition  number  that determines the accuracy in the full
       rank case is essentially min_{D=diag} kappa(A*D), where kappa(.) is the
       spectral condition number. The best performance of this Jacobi SVD pro‐
       cedure is achieved if used in an	  accelerated  version	of  Drmac  and
       Veselic	[5,6],	and it is the kernel routine in the SIGMA library [7].
       Some tunning parameters (marked with [TP]) are available for the imple‐
       menter.
       The computational range for the nonzero singular values is the  machine
       number interval ( UNDERFLOW , OVERFLOW ). In extreme cases, even denor‐
       malized	singular values can be computed with the corresponding gradual
       loss of accurate digits.
       Contributors
       ~~~~~~~~~~~~
       Zlatko Drmac (Zagreb, Croatia) and Kresimir  Veselic  (Hagen,  Germany)
       References
       ~~~~~~~~~~
	  SIAM J. matrix Anal. Appl., Vol. 15 (1994), pp. 162-174.
	  singular value decomposition on a vector computer.
	  SIAM J. Sci. Stat. Comp., Vol. 10 (1998), pp. 359-371.
	  value computation in floating point arithmetic.
	  SIAM J. Sci. Comp., Vol. 18 (1997), pp. 1200-1222.
	  SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1322-1342.
	  LAPACK Working note 169.
	  SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1343-1362.
	  LAPACK Working note 170.
	  QSVD, (H,K)-SVD computations.
	  Department  of Mathematics, University of Zagreb, 2008.  Bugs, Exam‐
       ples and Comments
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~
       Please report all bugs and send interesting test examples and  comments
       to drmac@math.hr. Thank you.

ARGUMENTS
       JOBA    (input) CHARACTER* 1
	       Specifies  the  structure  of  A.  = 'L': The input matrix A is
	       lower triangular;
	       = 'U': The input matrix A is upper triangular;
	       = 'G': The input matrix A is general M-by-N matrix, M >= N.

       JOBU    (input) CHARACTER*1
	       Specifies whether to compute the left singular vectors (columns
	       of U):
	       =  'U':	The left singular vectors corresponding to the nonzero
	       singular values are computed and returned in the	 leading  col‐
	       umns  of	 A.  See  more	details	 in the description of A.  The
	       default numerical orthogonality threshold is  set  to  approxi‐
	       mately  TOL=CTOL*EPS,  CTOL=DSQRT(M),  EPS=DLAMCH('E').	= 'C':
	       Analogous to JOBU='U', except that user can control  the	 level
	       of  numerical  orthogonality of the computed left singular vec‐
	       tors. TOL can be set to TOL = CTOL*EPS, where CTOL is given  on
	       input  in the array WORK.  No CTOL smaller than ONE is allowed.
	       CTOL greater than 1 / EPS is meaningless. The option 'C' can be
	       used  if	 M*EPS	is  satisfactory orthogonality of the computed
	       left singular vectors, so  CTOL=M  could	 save  few  sweeps  of
	       Jacobi  rotations.   See	 the descriptions of A and WORK(1).  =
	       'N': The matrix U is not computed. However, see the description
	       of A.

       JOBV    (input) CHARACTER*1
	       Specifies  whether  to compute the right singular vectors, that
	       is, the matrix V:
	       = 'V' : the matrix V is computed and returned in the array V
	       = 'A' : the Jacobi rotations are applied to the	MV-by-N	 array
	       V.  In  other  words, the right singular vector matrix V is not
	       computed explicitly, instead it is applied to an MV-by-N matrix
	       initially stored in the first MV rows of V.  = 'N' : the matrix
	       V is not computed and the array V is not referenced

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

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

       A       (input/output) REAL array, dimension (LDA,N)
	       On entry, the M-by-N matrix A.  On exit :
	       If JOBU .EQ. 'U' .OR. JOBU .EQ. 'C' :
	       If INFO .EQ. 0 : RANKA orthonormal columns of U are returned in
	       the  leading  RANKA  columns of the array A. Here RANKA <= N is
	       the number of computed singular values of A that are above  the
	       underflow  threshold  DLAMCH('S').  The singular vectors corre‐
	       sponding to underflowed or zero singular values	are  not  com‐
	       puted.  The  value  of  RANKA  is returned in the array WORK as
	       RANKA=NINT(WORK(2)). Also see the descriptions of SVA and WORK.
	       The  computed  columns of U are mutually numerically orthogonal
	       up to approximately TOL=DSQRT(M)*EPS (default); or TOL=CTOL*EPS
	       (JOBU.EQ.'C'),  see  the description of JOBU.  If INFO .GT. 0 :
	       the procedure DGESVJ did not converge in the  given  number  of
	       iterations  (sweeps).  In  that case, the computed columns of U
	       may not be orthogonal up to TOL. The output U  (stored  in  A),
	       SIGMA (given by the computed singular values in SVA(1:N)) and V
	       is still a decomposition of the input matrix  A	in  the	 sense
	       that the residual ||A-SCALE*U*SIGMA*V^T||_2 / ||A||_2 is small.
	       If JOBU .EQ. 'N' : If INFO .EQ. 0 : Note that the left singular
	       vectors	are  'for free' in the one-sided Jacobi SVD algorithm.
	       However, if only the singular values are needed, the  level  of
	       numerical orthogonality of U is not an issue and iterations are
	       stopped when the columns of the iterated matrix are numerically
	       orthogonal up to approximately M*EPS. Thus, on exit, A contains
	       the columns of U scaled with the corresponding singular values.
	       If  INFO	 .GT. 0 : the procedure DGESVJ did not converge in the
	       given number of iterations (sweeps).

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

       SVA     (workspace/output) REAL array, dimension (N)
	       On exit :
	       If INFO .EQ. 0 :
	       depending on the value SCALE = WORK(1), we have:
	       If SCALE .EQ. ONE :
	       SVA(1:N) contains the computed singular values  of  A.	During
	       the  computation SVA contains the Euclidean column norms of the
	       iterated matrices in the array A.  If SCALE .NE. ONE :
	       The singular values of A are SCALE*SVA(1:N), and this  factored
	       representation  is  due	to  the fact that some of the singular
	       values of A might underflow or overflow.	 If INFO .GT. 0 :  the
	       procedure DGESVJ did not converge in the given number of itera‐
	       tions (sweeps) and SCALE*SVA(1:N) may not be accurate.

       MV      (input) INTEGER
	       If JOBV .EQ. 'A', then  the  product  of	 Jacobi	 rotations  in
	       DGESVJ  is  applied to the first MV rows of V. See the descrip‐
	       tion of JOBV.

       V       (input/output) REAL array, dimension (LDV,N)
	       If JOBV = 'V', then V contains on exit the N-by-N matrix of the
	       right  singular	vectors;  If  JOBV  = 'A', then V contains the
	       product of the computed right singular vector  matrix  and  the
	       initial	matrix	in  the array V.  If JOBV = 'N', then V is not
	       referenced.

       LDV     (input) INTEGER
	       The leading dimension of the array V, LDV .GE. 1.  If JOBV .EQ.
	       'V',  then  LDV .GE. max(1,N).  If JOBV .EQ. 'A', then LDV .GE.
	       max(1,MV) .

       WORK    (input/workspace/output) REAL array, dimension max(4,M+N).
	       On entry :
	       If JOBU .EQ. 'C' : WORK(1)  =  CTOL,  where  CTOL  defines  the
	       threshold for convergence.  The process stops if all columns of
	       A are mutually orthogonal up to CTOL*EPS, EPS=DLAMCH('E').   It
	       is  required  that CTOL >= ONE, i.e. it is not allowed to force
	       the routine to obtain orthogonality below EPSILON.  On exit :
	       WORK(1) = SCALE is the scaling factor such that	SCALE*SVA(1:N)
	       are  the	 computed  singular  values of A.  (See description of
	       SVA().)	WORK(2) = NINT(WORK(2)) is the number of the  computed
	       nonzero singular values.	 WORK(3) = NINT(WORK(3)) is the number
	       of the computed singular values that are larger than the under‐
	       flow  threshold.	  WORK(4)  =  NINT(WORK(4))  is	 the number of
	       sweeps of Jacobi rotations needed  for  numerical  convergence.
	       WORK(5)	= max_{i.NE.j} |COS(A(:,i),A(:,j))| in the last sweep.
	       This is useful information in cases when DGESVJ	did  not  con‐
	       verge, as it can be used to estimate whether the output is stil
	       useful and for post festum analysis.   WORK(6)  =  the  largest
	       absolute	 value over all sines of the Jacobi rotation angles in
	       the last sweep. It can be useful for a post festum analysis.

       LWORK   length of WORK, WORK >= MAX(6,M+N)

       INFO    (output) INTEGER
	       = 0 : successful exit.
	       < 0 : if INFO = -i, then the i-th argument had an illegal value
	       > 0 : DGESVJ did not converge in	 the  maximal  allowed	number
	       (30)  of	 sweeps.  The  output  may  still  be  useful. See the
	       description of WORK.

 LAPACK routine (version 3.2)	 November 2008			     DGESVJ(1)
[top]

List of man pages available for Scientific

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