SGESVJ man page on RedHat

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

sgesvj.f(3)			    LAPACK			   sgesvj.f(3)

NAME
       sgesvj.f -

SYNOPSIS
   Functions/Subroutines
       subroutine sgesvj (JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V, LDV,
	   WORK, LWORK, INFO)
	   SGESVJ

Function/Subroutine Documentation
   subroutine sgesvj (character*1JOBA, character*1JOBU, character*1JOBV,
       integerM, integerN, real, dimension( lda, * )A, integerLDA, real,
       dimension( n )SVA, integerMV, real, dimension( ldv, * )V, integerLDV,
       real, dimension( lwork )WORK, integerLWORK, integerINFO)
       SGESVJ

       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.

       Parameters:
	   JOBA

		     JOBA is 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

		     JOBU is 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
			    columns of A. See more details in the description of A.
			    The default numerical orthogonality threshold is set to
			    approximately 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 vectors. 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

		     JOBV is 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

		     M is INTEGER
		     The number of rows of the input matrix A. 1/SLAMCH('E') > M >= 0.

	   N

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

	   A

		     A is 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 corresponding to underflowed or zero singular
			    values are not computed. 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
			    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 SGESVJ did not converge in the given number
			    of iterations (sweeps).

	   LDA

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

	   SVA

		     SVA is 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
		     iterations (sweeps) and SCALE*SVA(1:N) may not be accurate.

	   MV

		     MV is INTEGER
		     If JOBV .EQ. 'A', then the product of Jacobi rotations in SGESVJ
		     is applied to the first MV rows of V. See the description of JOBV.

	   V

		     V is 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

		     LDV is 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

		     WORK is 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=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 information in cases when SGESVJ did
			       not converge, 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

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

	   INFO

		     INFO is 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.

       Author:
	   Univ. of Tennessee

	   Univ. of California Berkeley

	   Univ. of Colorado Denver

	   NAG Ltd.

       Date:
	   September 2012

       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 modified Jacobi transformation of Drmac [4] is
	   used. Pivot strategy uses column interchanges of de Rijk [2]. The
	   relative accuracy of the computed 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 procedure 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
	   implementer.
	    The computational range for the nonzero singular values is the
	   machine number interval ( UNDERFLOW , OVERFLOW ). In extreme cases,
	   even denormalized singular values can be computed with the
	   corresponding gradual loss of accurate digits.

       Contributors:
	   Zlatko Drmac (Zagreb, Croatia) and Kresimir Veselic (Hagen,
	   Germany)

       References:
	   [1] A. A. Anda and H. Park: Fast plane rotations with dynamic
	   scaling.
	    SIAM J. matrix Anal. Appl., Vol. 15 (1994), pp. 162-174.

	    [2] P. P. M. De Rijk: A one-sided Jacobi algorithm for computing
	   the singular value decomposition on a vector computer.
	    SIAM J. Sci. Stat. Comp., Vol. 10 (1998), pp. 359-371.

	    [3] J. Demmel and K. Veselic: Jacobi method is more accurate than
	   QR.
	    [4] Z. Drmac: Implementation of Jacobi rotations for accurate
	   singular value computation in floating point arithmetic.
	    SIAM J. Sci. Comp., Vol. 18 (1997), pp. 1200-1222.

	    [5] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD
	   algorithm I.
	    SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1322-1342.
	    LAPACK Working note 169.

	    [6] Z. Drmac and K. Veselic: New fast and accurate Jacobi SVD
	   algorithm II.
	    SIAM J. Matrix Anal. Appl. Vol. 35, No. 2 (2008), pp. 1343-1362.
	    LAPACK Working note 170.

	    [7] Z. Drmac: SIGMA - mathematical software library for accurate
	   SVD, PSV, QSVD, (H,K)-SVD computations.
	    Department of Mathematics, University of Zagreb, 2008.

       Bugs, Examples and Comments:
	   Please report all bugs and send interesting test examples and
	   comments to drmac@math.hr. Thank you.

       Definition at line 321 of file sgesvj.f.

Author
       Generated automatically by Doxygen for LAPACK from the source code.

Version 3.4.2			Tue Sep 25 2012			   sgesvj.f(3)
[top]

List of man pages available for RedHat

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