Diff for /rpl/lapack/lapack/zgesvj.f between versions 1.7 and 1.9

version 1.7, 2018/05/29 07:18:16 version 1.9, 2023/08/07 08:39:19
Line 89 Line 89
 *>          Specifies whether to compute the right singular vectors, that  *>          Specifies whether to compute the right singular vectors, that
 *>          is, the matrix V:  *>          is, the matrix V:
 *>          = 'V' or 'J': the matrix V is computed and returned in the array V  *>          = 'V' or 'J': the matrix V is computed and returned in the array V
 *>          = 'A' : the Jacobi rotations are applied to the MV-by-N  *>          = 'A':  the Jacobi rotations are applied to the MV-by-N
 *>                  array V. In other words, the right singular vector  *>                  array V. In other words, the right singular vector
 *>                  matrix V is not computed explicitly; instead it is  *>                  matrix V is not computed explicitly; instead it is
 *>                  applied to an MV-by-N matrix initially stored in the  *>                  applied to an MV-by-N matrix initially stored in the
 *>                  first MV rows of V.  *>                  first MV rows of V.
 *>          = 'N' : the matrix V is not computed and the array V is not  *>          = 'N':  the matrix V is not computed and the array V is not
 *>                  referenced  *>                  referenced
 *> \endverbatim  *> \endverbatim
 *>  *>
Line 116 Line 116
 *>          A is COMPLEX*16 array, dimension (LDA,N)  *>          A is COMPLEX*16 array, dimension (LDA,N)
 *>          On entry, the M-by-N matrix A.  *>          On entry, the M-by-N matrix A.
 *>          On exit,  *>          On exit,
 *>          If JOBU .EQ. 'U' .OR. JOBU .EQ. 'C':  *>          If JOBU = 'U' .OR. JOBU = 'C':
 *>                 If INFO .EQ. 0 :  *>                 If INFO = 0 :
 *>                 RANKA orthonormal columns of U are returned in the  *>                 RANKA orthonormal columns of U are returned in the
 *>                 leading RANKA columns of the array A. Here RANKA <= N  *>                 leading RANKA columns of the array A. Here RANKA <= N
 *>                 is the number of computed singular values of A that are  *>                 is the number of computed singular values of A that are
Line 127 Line 127
 *>                 in the array RWORK as RANKA=NINT(RWORK(2)). Also see the  *>                 in the array RWORK as RANKA=NINT(RWORK(2)). Also see the
 *>                 descriptions of SVA and RWORK. The computed columns of U  *>                 descriptions of SVA and RWORK. The computed columns of U
 *>                 are mutually numerically orthogonal up to approximately  *>                 are mutually numerically orthogonal up to approximately
 *>                 TOL=SQRT(M)*EPS (default); or TOL=CTOL*EPS (JOBU.EQ.'C'),  *>                 TOL=SQRT(M)*EPS (default); or TOL=CTOL*EPS (JOBU = 'C'),
 *>                 see the description of JOBU.  *>                 see the description of JOBU.
 *>                 If INFO .GT. 0,  *>                 If INFO > 0,
 *>                 the procedure ZGESVJ did not converge in the given number  *>                 the procedure ZGESVJ did not converge in the given number
 *>                 of iterations (sweeps). In that case, the computed  *>                 of iterations (sweeps). In that case, the computed
 *>                 columns of U may not be orthogonal up to TOL. The output  *>                 columns of U may not be orthogonal up to TOL. The output
Line 137 Line 137
 *>                 values in SVA(1:N)) and V is still a decomposition of the  *>                 values in SVA(1:N)) and V is still a decomposition of the
 *>                 input matrix A in the sense that the residual  *>                 input matrix A in the sense that the residual
 *>                 || A - SCALE * U * SIGMA * V^* ||_2 / ||A||_2 is small.  *>                 || A - SCALE * U * SIGMA * V^* ||_2 / ||A||_2 is small.
 *>          If JOBU .EQ. 'N':  *>          If JOBU = 'N':
 *>                 If INFO .EQ. 0 :  *>                 If INFO = 0 :
 *>                 Note that the left singular vectors are 'for free' in the  *>                 Note that the left singular vectors are 'for free' in the
 *>                 one-sided Jacobi SVD algorithm. However, if only the  *>                 one-sided Jacobi SVD algorithm. However, if only the
 *>                 singular values are needed, the level of numerical  *>                 singular values are needed, the level of numerical
Line 147 Line 147
 *>                 numerically orthogonal up to approximately M*EPS. Thus,  *>                 numerically orthogonal up to approximately M*EPS. Thus,
 *>                 on exit, A contains the columns of U scaled with the  *>                 on exit, A contains the columns of U scaled with the
 *>                 corresponding singular values.  *>                 corresponding singular values.
 *>                 If INFO .GT. 0 :  *>                 If INFO > 0:
 *>                 the procedure ZGESVJ did not converge in the given number  *>                 the procedure ZGESVJ did not converge in the given number
 *>                 of iterations (sweeps).  *>                 of iterations (sweeps).
 *> \endverbatim  *> \endverbatim
Line 162 Line 162
 *> \verbatim  *> \verbatim
 *>          SVA is DOUBLE PRECISION array, dimension (N)  *>          SVA is DOUBLE PRECISION array, dimension (N)
 *>          On exit,  *>          On exit,
 *>          If INFO .EQ. 0 :  *>          If INFO = 0 :
 *>          depending on the value SCALE = RWORK(1), we have:  *>          depending on the value SCALE = RWORK(1), we have:
 *>                 If SCALE .EQ. ONE:  *>                 If SCALE = ONE:
 *>                 SVA(1:N) contains the computed singular values of A.  *>                 SVA(1:N) contains the computed singular values of A.
 *>                 During the computation SVA contains the Euclidean column  *>                 During the computation SVA contains the Euclidean column
 *>                 norms of the iterated matrices in the array A.  *>                 norms of the iterated matrices in the array A.
Line 173 Line 173
 *>                 factored representation is due to the fact that some of the  *>                 factored representation is due to the fact that some of the
 *>                 singular values of A might underflow or overflow.  *>                 singular values of A might underflow or overflow.
 *>  *>
 *>          If INFO .GT. 0 :  *>          If INFO > 0:
 *>          the procedure ZGESVJ did not converge in the given number of  *>          the procedure ZGESVJ did not converge in the given number of
 *>          iterations (sweeps) and SCALE*SVA(1:N) may not be accurate.  *>          iterations (sweeps) and SCALE*SVA(1:N) may not be accurate.
 *> \endverbatim  *> \endverbatim
Line 181 Line 181
 *> \param[in] MV  *> \param[in] MV
 *> \verbatim  *> \verbatim
 *>          MV is INTEGER  *>          MV is INTEGER
 *>          If JOBV .EQ. 'A', then the product of Jacobi rotations in ZGESVJ  *>          If JOBV = 'A', then the product of Jacobi rotations in ZGESVJ
 *>          is applied to the first MV rows of V. See the description of JOBV.  *>          is applied to the first MV rows of V. See the description of JOBV.
 *> \endverbatim  *> \endverbatim
 *>  *>
Line 199 Line 199
 *> \param[in] LDV  *> \param[in] LDV
 *> \verbatim  *> \verbatim
 *>          LDV is INTEGER  *>          LDV is INTEGER
 *>          The leading dimension of the array V, LDV .GE. 1.  *>          The leading dimension of the array V, LDV >= 1.
 *>          If JOBV .EQ. 'V', then LDV .GE. max(1,N).  *>          If JOBV = 'V', then LDV >= max(1,N).
 *>          If JOBV .EQ. 'A', then LDV .GE. max(1,MV) .  *>          If JOBV = 'A', then LDV >= max(1,MV) .
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in,out] CWORK  *> \param[in,out] CWORK
 *> \verbatim  *> \verbatim
 *>          CWORK is COMPLEX*16 array, dimension (max(1,LWORK))  *>          CWORK is COMPLEX*16 array, dimension (max(1,LWORK))
 *>          Used as workspace.  *>          Used as workspace.
 *>          If on entry LWORK .EQ. -1, then a workspace query is assumed and  *>          If on entry LWORK = -1, then a workspace query is assumed and
 *>          no computation is done; CWORK(1) is set to the minial (and optimal)  *>          no computation is done; CWORK(1) is set to the minial (and optimal)
 *>          length of CWORK.  *>          length of CWORK.
 *> \endverbatim  *> \endverbatim
Line 223 Line 223
 *> \verbatim  *> \verbatim
 *>          RWORK is DOUBLE PRECISION array, dimension (max(6,LRWORK))  *>          RWORK is DOUBLE PRECISION array, dimension (max(6,LRWORK))
 *>          On entry,  *>          On entry,
 *>          If JOBU .EQ. 'C' :  *>          If JOBU = 'C' :
 *>          RWORK(1) = CTOL, where CTOL defines the threshold for convergence.  *>          RWORK(1) = CTOL, where CTOL defines the threshold for convergence.
 *>                    The process stops if all columns of A are mutually  *>                    The process stops if all columns of A are mutually
 *>                    orthogonal up to CTOL*EPS, EPS=DLAMCH('E').  *>                    orthogonal up to CTOL*EPS, EPS=DLAMCH('E').
Line 243 Line 243
 *>          RWORK(5) = max_{i.NE.j} |COS(A(:,i),A(:,j))| in the last sweep.  *>          RWORK(5) = max_{i.NE.j} |COS(A(:,i),A(:,j))| in the last sweep.
 *>                    This is useful information in cases when ZGESVJ did  *>                    This is useful information in cases when ZGESVJ did
 *>                    not converge, as it can be used to estimate whether  *>                    not converge, as it can be used to estimate whether
 *>                    the output is stil useful and for post festum analysis.  *>                    the output is still useful and for post festum analysis.
 *>          RWORK(6) = the largest absolute value over all sines of the  *>          RWORK(6) = the largest absolute value over all sines of the
 *>                    Jacobi rotation angles in the last sweep. It can be  *>                    Jacobi rotation angles in the last sweep. It can be
 *>                    useful for a post festum analysis.  *>                    useful for a post festum analysis.
 *>         If on entry LRWORK .EQ. -1, then a workspace query is assumed and  *>         If on entry LRWORK = -1, then a workspace query is assumed and
 *>         no computation is done; RWORK(1) is set to the minial (and optimal)  *>         no computation is done; RWORK(1) is set to the minial (and optimal)
 *>         length of RWORK.  *>         length of RWORK.
 *> \endverbatim  *> \endverbatim
Line 261 Line 261
 *> \param[out] INFO  *> \param[out] INFO
 *> \verbatim  *> \verbatim
 *>          INFO is INTEGER  *>          INFO is INTEGER
 *>          = 0 : successful exit.  *>          = 0:  successful exit.
 *>          < 0 : if INFO = -i, then the i-th argument had an illegal value  *>          < 0:  if INFO = -i, then the i-th argument had an illegal value
 *>          > 0 : ZGESVJ did not converge in the maximal allowed number  *>          > 0:  ZGESVJ did not converge in the maximal allowed number
 *>                (NSWEEP=30) of sweeps. The output may still be useful.  *>                (NSWEEP=30) of sweeps. The output may still be useful.
 *>                See the description of RWORK.  *>                See the description of RWORK.
 *> \endverbatim  *> \endverbatim
Line 276 Line 276
 *> \author Univ. of Colorado Denver  *> \author Univ. of Colorado Denver
 *> \author NAG Ltd.  *> \author NAG Ltd.
 *  *
 *> \date June 2016  
 *  
 *> \ingroup complex16GEcomputational  *> \ingroup complex16GEcomputational
 *  *
 *> \par Further Details:  *> \par Further Details:
Line 296 Line 294
 *> spectral condition number. The best performance of this Jacobi SVD  *> spectral condition number. The best performance of this Jacobi SVD
 *> procedure is achieved if used in an  accelerated version of Drmac and  *> procedure is achieved if used in an  accelerated version of Drmac and
 *> Veselic [4,5], and it is the kernel routine in the SIGMA library [6].  *> Veselic [4,5], and it is the kernel routine in the SIGMA library [6].
 *> Some tunning parameters (marked with [TP]) are available for the  *> Some tuning parameters (marked with [TP]) are available for the
 *> implementer.  *> implementer.
 *> The computational range for the nonzero singular values is the  machine  *> The computational range for the nonzero singular values is the  machine
 *> number interval ( UNDERFLOW , OVERFLOW ). In extreme cases, even  *> number interval ( UNDERFLOW , OVERFLOW ). In extreme cases, even
Line 351 Line 349
       SUBROUTINE ZGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V,        SUBROUTINE ZGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V,
      $                   LDV, CWORK, LWORK, RWORK, LRWORK, INFO )       $                   LDV, CWORK, LWORK, RWORK, LRWORK, INFO )
 *  *
 *  -- LAPACK computational routine (version 3.8.0) --  *  -- LAPACK computational routine --
 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --  *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--  *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
 *     June 2016  
 *  *
       IMPLICIT NONE        IMPLICIT NONE
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..

Removed from v.1.7  
changed lines
  Added in v.1.9


CVSweb interface <joel.bertrand@systella.fr>