sgesvj man page on Scientific

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

SGESVJ(1LAPACK routine (version 3.2)				     SGESVJ(1)

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

SYNOPSIS
       SUBROUTINE SGESVJ( 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

	   REAL		  A( LDA, * ), SVA( N ), V( LDV, * ),

	   +		  WORK( LWORK )

PURPOSE
       SGESVJ 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=SQRT(M),  EPS=SLAMCH('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 SLAMCH('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=SQRT(M)*EPS (default); or TOL=CTOL*EPS
	       (JOBU.EQ.'C'), see the description of JOBU.  If	INFO  .GT.  0,
	       the  procedure  SGESVJ  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 orthogo‐
	       nality 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 SGESVJ 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 SGESVJ 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
	       SGESVJ 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  col‐
	       umns   of   A   are   mutually	orthogonal   up	 to  CTOL*EPS,
	       EPS=SLAMCH('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 vcalues 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  underflow	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	infor‐
	       mation in cases when SGESVJ did not converge, as it can be used
	       to estimate whether the output is stil useful and for post fes‐
	       tum  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  :	SGESVJ	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			     SGESVJ(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