Update LAPACK to 3.9.0

This commit is contained in:
Martin Kroeker 2019-12-29 23:57:02 +01:00 committed by GitHub
parent ff45990663
commit febeb9bcc1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 1623 additions and 153 deletions

View File

@ -93,9 +93,9 @@
*> dimension (LDA,N) *> dimension (LDA,N)
*> On entry, the N-by-N coefficient matrix A. *> On entry, the N-by-N coefficient matrix A.
*> On exit, if iterative refinement has been successfully used *> On exit, if iterative refinement has been successfully used
*> (INFO.EQ.0 and ITER.GE.0, see description below), then A is *> (INFO = 0 and ITER >= 0, see description below), then A is
*> unchanged, if double precision factorization has been used *> unchanged, if double precision factorization has been used
*> (INFO.EQ.0 and ITER.LT.0, see description below), then the *> (INFO = 0 and ITER < 0, see description below), then the
*> array A contains the factors L and U from the factorization *> array A contains the factors L and U from the factorization
*> A = P*L*U; the unit diagonal elements of L are not stored. *> A = P*L*U; the unit diagonal elements of L are not stored.
*> \endverbatim *> \endverbatim
@ -112,8 +112,8 @@
*> The pivot indices that define the permutation matrix P; *> The pivot indices that define the permutation matrix P;
*> row i of the matrix was interchanged with row IPIV(i). *> row i of the matrix was interchanged with row IPIV(i).
*> Corresponds either to the single precision factorization *> Corresponds either to the single precision factorization
*> (if INFO.EQ.0 and ITER.GE.0) or the double precision *> (if INFO = 0 and ITER >= 0) or the double precision
*> factorization (if INFO.EQ.0 and ITER.LT.0). *> factorization (if INFO = 0 and ITER < 0).
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] B *> \param[in] B
@ -421,7 +421,7 @@
30 CONTINUE 30 CONTINUE
* *
* If we are at this place of the code, this is because we have * If we are at this place of the code, this is because we have
* performed ITER=ITERMAX iterations and never satisified the stopping * performed ITER=ITERMAX iterations and never satisfied the stopping
* criterion, set up the ITER flag accordingly and follow up on double * criterion, set up the ITER flag accordingly and follow up on double
* precision routine. * precision routine.
* *

View File

@ -111,9 +111,9 @@
*> elements need not be set and are assumed to be zero. *> elements need not be set and are assumed to be zero.
*> *>
*> On exit, if iterative refinement has been successfully used *> On exit, if iterative refinement has been successfully used
*> (INFO.EQ.0 and ITER.GE.0, see description below), then A is *> (INFO = 0 and ITER >= 0, see description below), then A is
*> unchanged, if double precision factorization has been used *> unchanged, if double precision factorization has been used
*> (INFO.EQ.0 and ITER.LT.0, see description below), then the *> (INFO = 0 and ITER < 0, see description below), then the
*> array A contains the factor U or L from the Cholesky *> array A contains the factor U or L from the Cholesky
*> factorization A = U**H*U or A = L*L**H. *> factorization A = U**H*U or A = L*L**H.
*> \endverbatim *> \endverbatim
@ -431,7 +431,7 @@
30 CONTINUE 30 CONTINUE
* *
* If we are at this place of the code, this is because we have * If we are at this place of the code, this is because we have
* performed ITER=ITERMAX iterations and never satisified the * performed ITER=ITERMAX iterations and never satisfied the
* stopping criterion, set up the ITER flag accordingly and follow * stopping criterion, set up the ITER flag accordingly and follow
* up on double precision routine. * up on double precision routine.
* *

View File

@ -75,7 +75,7 @@
*> Specifies the form of the system of equations: *> Specifies the form of the system of equations:
*> = 'N': A * X = B (No transpose) *> = 'N': A * X = B (No transpose)
*> = 'T': A**T * X = B (Transpose) *> = 'T': A**T * X = B (Transpose)
*> = 'C': A**H * X = B (Conjugate transpose = Transpose) *> = 'C': A**H * X = B (Conjugate transpose)
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] EQUED *> \param[in] EQUED
@ -308,7 +308,7 @@
*> information as described below. There currently are up to three *> information as described below. There currently are up to three
*> pieces of information returned for each right-hand side. If *> pieces of information returned for each right-hand side. If
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most *> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS < 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned. *> the first (:,N_ERR_BNDS) entries are returned.
*> *>
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith *> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
@ -344,14 +344,14 @@
*> \param[in] NPARAMS *> \param[in] NPARAMS
*> \verbatim *> \verbatim
*> NPARAMS is INTEGER *> NPARAMS is INTEGER
*> Specifies the number of parameters set in PARAMS. If .LE. 0, the *> Specifies the number of parameters set in PARAMS. If <= 0, the
*> PARAMS array is never referenced and default values are used. *> PARAMS array is never referenced and default values are used.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] PARAMS *> \param[in,out] PARAMS
*> \verbatim *> \verbatim
*> PARAMS is DOUBLE PRECISION array, dimension NPARAMS *> PARAMS is DOUBLE PRECISION array, dimension NPARAMS
*> Specifies algorithm parameters. If an entry is .LT. 0.0, then *> Specifies algorithm parameters. If an entry is < 0.0, then
*> that entry will be filled with default value used for that *> that entry will be filled with default value used for that
*> parameter. Only positions up to NPARAMS are accessed; defaults *> parameter. Only positions up to NPARAMS are accessed; defaults
*> are used for higher-numbered parameters. *> are used for higher-numbered parameters.

View File

@ -431,7 +431,7 @@
*> information as described below. There currently are up to three *> information as described below. There currently are up to three
*> pieces of information returned for each right-hand side. If *> pieces of information returned for each right-hand side. If
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most *> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS < 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned. *> the first (:,N_ERR_BNDS) entries are returned.
*> *>
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith *> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
@ -467,14 +467,14 @@
*> \param[in] NPARAMS *> \param[in] NPARAMS
*> \verbatim *> \verbatim
*> NPARAMS is INTEGER *> NPARAMS is INTEGER
*> Specifies the number of parameters set in PARAMS. If .LE. 0, the *> Specifies the number of parameters set in PARAMS. If <= 0, the
*> PARAMS array is never referenced and default values are used. *> PARAMS array is never referenced and default values are used.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] PARAMS *> \param[in,out] PARAMS
*> \verbatim *> \verbatim
*> PARAMS is DOUBLE PRECISION array, dimension NPARAMS *> PARAMS is DOUBLE PRECISION array, dimension NPARAMS
*> Specifies algorithm parameters. If an entry is .LT. 0.0, then *> Specifies algorithm parameters. If an entry is < 0.0, then
*> that entry will be filled with default value used for that *> that entry will be filled with default value used for that
*> parameter. Only positions up to NPARAMS are accessed; defaults *> parameter. Only positions up to NPARAMS are accessed; defaults
*> are used for higher-numbered parameters. *> are used for higher-numbered parameters.

View File

@ -48,10 +48,10 @@
*> \verbatim *> \verbatim
*> JOB is CHARACTER*1 *> JOB is CHARACTER*1
*> Specifies the type of backward transformation required: *> Specifies the type of backward transformation required:
*> = 'N', do nothing, return immediately; *> = 'N': do nothing, return immediately;
*> = 'P', do backward transformation for permutation only; *> = 'P': do backward transformation for permutation only;
*> = 'S', do backward transformation for scaling only; *> = 'S': do backward transformation for scaling only;
*> = 'B', do backward transformations for both permutation and *> = 'B': do backward transformations for both permutation and
*> scaling. *> scaling.
*> JOB must be the same as the argument JOB supplied to ZGEBAL. *> JOB must be the same as the argument JOB supplied to ZGEBAL.
*> \endverbatim *> \endverbatim

View File

@ -157,7 +157,7 @@
*> < 0: if INFO = -i, the i-th argument had an illegal value. *> < 0: if INFO = -i, the i-th argument had an illegal value.
*> > 0: if INFO = i, the QR algorithm failed to compute all the *> > 0: if INFO = i, the QR algorithm failed to compute all the
*> eigenvalues, and no eigenvectors have been computed; *> eigenvalues, and no eigenvectors have been computed;
*> elements and i+1:N of W contain eigenvalues which have *> elements i+1:N of W contain eigenvalues which have
*> converged. *> converged.
*> \endverbatim *> \endverbatim
* *

View File

@ -80,13 +80,13 @@
*> desirable, then this option is advisable. The input matrix A *> desirable, then this option is advisable. The input matrix A
*> is preprocessed with QR factorization with FULL (row and *> is preprocessed with QR factorization with FULL (row and
*> column) pivoting. *> column) pivoting.
*> = 'G' Computation as with 'F' with an additional estimate of the *> = 'G': Computation as with 'F' with an additional estimate of the
*> condition number of B, where A=B*D. If A has heavily weighted *> condition number of B, where A=B*D. If A has heavily weighted
*> rows, then using this condition number gives too pessimistic *> rows, then using this condition number gives too pessimistic
*> error bound. *> error bound.
*> = 'A': Small singular values are not well determined by the data *> = 'A': Small singular values are not well determined by the data
*> and are considered as noisy; the matrix is treated as *> and are considered as noisy; the matrix is treated as
*> numerically rank defficient. The error in the computed *> numerically rank deficient. The error in the computed
*> singular values is bounded by f(m,n)*epsilon*||A||. *> singular values is bounded by f(m,n)*epsilon*||A||.
*> The computed SVD A = U * S * V^* restores A up to *> The computed SVD A = U * S * V^* restores A up to
*> f(m,n)*epsilon*||A||. *> f(m,n)*epsilon*||A||.
@ -117,7 +117,7 @@
*> = 'V': N columns of V are returned in the array V; Jacobi rotations *> = 'V': N columns of V are returned in the array V; Jacobi rotations
*> are not explicitly accumulated. *> are not explicitly accumulated.
*> = 'J': N columns of V are returned in the array V, but they are *> = 'J': N columns of V are returned in the array V, but they are
*> computed as the product of Jacobi rotations, if JOBT .EQ. 'N'. *> computed as the product of Jacobi rotations, if JOBT = 'N'.
*> = 'W': V may be used as workspace of length N*N. See the description *> = 'W': V may be used as workspace of length N*N. See the description
*> of V. *> of V.
*> = 'N': V is not computed. *> = 'N': V is not computed.
@ -131,7 +131,7 @@
*> specified range. If A .NE. 0 is scaled so that the largest singular *> specified range. If A .NE. 0 is scaled so that the largest singular
*> value of c*A is around SQRT(BIG), BIG=DLAMCH('O'), then JOBR issues *> value of c*A is around SQRT(BIG), BIG=DLAMCH('O'), then JOBR issues
*> the licence to kill columns of A whose norm in c*A is less than *> the licence to kill columns of A whose norm in c*A is less than
*> SQRT(SFMIN) (for JOBR.EQ.'R'), or less than SMALL=SFMIN/EPSLN, *> SQRT(SFMIN) (for JOBR = 'R'), or less than SMALL=SFMIN/EPSLN,
*> where SFMIN=DLAMCH('S'), EPSLN=DLAMCH('E'). *> where SFMIN=DLAMCH('S'), EPSLN=DLAMCH('E').
*> = 'N': Do not kill small columns of c*A. This option assumes that *> = 'N': Do not kill small columns of c*A. This option assumes that
*> BLAS and QR factorizations and triangular solvers are *> BLAS and QR factorizations and triangular solvers are
@ -229,7 +229,7 @@
*> If JOBU = 'F', then U contains on exit the M-by-M matrix of *> If JOBU = 'F', then U contains on exit the M-by-M matrix of
*> the left singular vectors, including an ONB *> the left singular vectors, including an ONB
*> of the orthogonal complement of the Range(A). *> of the orthogonal complement of the Range(A).
*> If JOBU = 'W' .AND. (JOBV.EQ.'V' .AND. JOBT.EQ.'T' .AND. M.EQ.N), *> If JOBU = 'W' .AND. (JOBV = 'V' .AND. JOBT = 'T' .AND. M = N),
*> then U is used as workspace if the procedure *> then U is used as workspace if the procedure
*> replaces A with A^*. In that case, [V] is computed *> replaces A with A^*. In that case, [V] is computed
*> in U as left singular vectors of A^* and then *> in U as left singular vectors of A^* and then
@ -251,7 +251,7 @@
*> V is COMPLEX*16 array, dimension ( LDV, N ) *> V is COMPLEX*16 array, dimension ( LDV, N )
*> If JOBV = 'V', 'J' then V contains on exit the N-by-N matrix of *> If JOBV = 'V', 'J' then V contains on exit the N-by-N matrix of
*> the right singular vectors; *> the right singular vectors;
*> If JOBV = 'W', AND (JOBU.EQ.'U' AND JOBT.EQ.'T' AND M.EQ.N), *> If JOBV = 'W', AND (JOBU = 'U' AND JOBT = 'T' AND M = N),
*> then V is used as workspace if the pprocedure *> then V is used as workspace if the pprocedure
*> replaces A with A^*. In that case, [U] is computed *> replaces A with A^*. In that case, [U] is computed
*> in V as right singular vectors of A^* and then *> in V as right singular vectors of A^* and then
@ -282,7 +282,7 @@
*> Length of CWORK to confirm proper allocation of workspace. *> Length of CWORK to confirm proper allocation of workspace.
*> LWORK depends on the job: *> LWORK depends on the job:
*> *>
*> 1. If only SIGMA is needed ( JOBU.EQ.'N', JOBV.EQ.'N' ) and *> 1. If only SIGMA is needed ( JOBU = 'N', JOBV = 'N' ) and
*> 1.1 .. no scaled condition estimate required (JOBA.NE.'E'.AND.JOBA.NE.'G'): *> 1.1 .. no scaled condition estimate required (JOBA.NE.'E'.AND.JOBA.NE.'G'):
*> LWORK >= 2*N+1. This is the minimal requirement. *> LWORK >= 2*N+1. This is the minimal requirement.
*> ->> For optimal performance (blocked code) the optimal value *> ->> For optimal performance (blocked code) the optimal value
@ -298,9 +298,9 @@
*> In general, the optimal length LWORK is computed as *> In general, the optimal length LWORK is computed as
*> LWORK >= max(N+LWORK(ZGEQP3),N+LWORK(ZGEQRF), LWORK(ZGESVJ), *> LWORK >= max(N+LWORK(ZGEQP3),N+LWORK(ZGEQRF), LWORK(ZGESVJ),
*> N*N+LWORK(ZPOCON)). *> N*N+LWORK(ZPOCON)).
*> 2. If SIGMA and the right singular vectors are needed (JOBV.EQ.'V'), *> 2. If SIGMA and the right singular vectors are needed (JOBV = 'V'),
*> (JOBU.EQ.'N') *> (JOBU = 'N')
*> 2.1 .. no scaled condition estimate requested (JOBE.EQ.'N'): *> 2.1 .. no scaled condition estimate requested (JOBE = 'N'):
*> -> the minimal requirement is LWORK >= 3*N. *> -> the minimal requirement is LWORK >= 3*N.
*> -> For optimal performance, *> -> For optimal performance,
*> LWORK >= max(N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB, *> LWORK >= max(N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB,
@ -318,10 +318,10 @@
*> LWORK >= max(N+LWORK(ZGEQP3), LWORK(ZPOCON), N+LWORK(ZGESVJ), *> LWORK >= max(N+LWORK(ZGEQP3), LWORK(ZPOCON), N+LWORK(ZGESVJ),
*> N+LWORK(ZGELQF), 2*N+LWORK(ZGEQRF), N+LWORK(ZUNMLQ)). *> N+LWORK(ZGELQF), 2*N+LWORK(ZGEQRF), N+LWORK(ZUNMLQ)).
*> 3. If SIGMA and the left singular vectors are needed *> 3. If SIGMA and the left singular vectors are needed
*> 3.1 .. no scaled condition estimate requested (JOBE.EQ.'N'): *> 3.1 .. no scaled condition estimate requested (JOBE = 'N'):
*> -> the minimal requirement is LWORK >= 3*N. *> -> the minimal requirement is LWORK >= 3*N.
*> -> For optimal performance: *> -> For optimal performance:
*> if JOBU.EQ.'U' :: LWORK >= max(3*N, N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB, *> if JOBU = 'U' :: LWORK >= max(3*N, N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB,
*> where NB is the optimal block size for ZGEQP3, ZGEQRF, ZUNMQR. *> where NB is the optimal block size for ZGEQP3, ZGEQRF, ZUNMQR.
*> In general, the optimal length LWORK is computed as *> In general, the optimal length LWORK is computed as
*> LWORK >= max(N+LWORK(ZGEQP3), 2*N+LWORK(ZGEQRF), N+LWORK(ZUNMQR)). *> LWORK >= max(N+LWORK(ZGEQP3), 2*N+LWORK(ZGEQRF), N+LWORK(ZUNMQR)).
@ -329,15 +329,15 @@
*> required (JOBA='E', or 'G'). *> required (JOBA='E', or 'G').
*> -> the minimal requirement is LWORK >= 3*N. *> -> the minimal requirement is LWORK >= 3*N.
*> -> For optimal performance: *> -> For optimal performance:
*> if JOBU.EQ.'U' :: LWORK >= max(3*N, N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB, *> if JOBU = 'U' :: LWORK >= max(3*N, N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB,
*> where NB is the optimal block size for ZGEQP3, ZGEQRF, ZUNMQR. *> where NB is the optimal block size for ZGEQP3, ZGEQRF, ZUNMQR.
*> In general, the optimal length LWORK is computed as *> In general, the optimal length LWORK is computed as
*> LWORK >= max(N+LWORK(ZGEQP3),N+LWORK(ZPOCON), *> LWORK >= max(N+LWORK(ZGEQP3),N+LWORK(ZPOCON),
*> 2*N+LWORK(ZGEQRF), N+LWORK(ZUNMQR)). *> 2*N+LWORK(ZGEQRF), N+LWORK(ZUNMQR)).
*> 4. If the full SVD is needed: (JOBU.EQ.'U' or JOBU.EQ.'F') and *> 4. If the full SVD is needed: (JOBU = 'U' or JOBU = 'F') and
*> 4.1. if JOBV.EQ.'V' *> 4.1. if JOBV = 'V'
*> the minimal requirement is LWORK >= 5*N+2*N*N. *> the minimal requirement is LWORK >= 5*N+2*N*N.
*> 4.2. if JOBV.EQ.'J' the minimal requirement is *> 4.2. if JOBV = 'J' the minimal requirement is
*> LWORK >= 4*N+N*N. *> LWORK >= 4*N+N*N.
*> In both cases, the allocated CWORK can accommodate blocked runs *> In both cases, the allocated CWORK can accommodate blocked runs
*> of ZGEQP3, ZGEQRF, ZGELQF, SUNMQR, ZUNMLQ. *> of ZGEQP3, ZGEQRF, ZGELQF, SUNMQR, ZUNMLQ.
@ -356,7 +356,7 @@
*> of A. (See the description of SVA().) *> of A. (See the description of SVA().)
*> RWORK(2) = See the description of RWORK(1). *> RWORK(2) = See the description of RWORK(1).
*> RWORK(3) = SCONDA is an estimate for the condition number of *> RWORK(3) = SCONDA is an estimate for the condition number of
*> column equilibrated A. (If JOBA .EQ. 'E' or 'G') *> column equilibrated A. (If JOBA = 'E' or 'G')
*> SCONDA is an estimate of SQRT(||(R^* * R)^(-1)||_1). *> SCONDA is an estimate of SQRT(||(R^* * R)^(-1)||_1).
*> It is computed using SPOCON. It holds *> It is computed using SPOCON. It holds
*> N^(-1/4) * SCONDA <= ||R^(-1)||_2 <= N^(1/4) * SCONDA *> N^(-1/4) * SCONDA <= ||R^(-1)||_2 <= N^(1/4) * SCONDA
@ -375,7 +375,7 @@
*> triangular factor in the first QR factorization. *> triangular factor in the first QR factorization.
*> RWORK(5) = an estimate of the scaled condition number of the *> RWORK(5) = an estimate of the scaled condition number of the
*> triangular factor in the second QR factorization. *> triangular factor in the second QR factorization.
*> The following two parameters are computed if JOBT .EQ. 'T'. *> The following two parameters are computed if JOBT = 'T'.
*> They are provided for a developer/implementer who is familiar *> They are provided for a developer/implementer who is familiar
*> with the details of the method. *> with the details of the method.
*> RWORK(6) = the entropy of A^* * A :: this is the Shannon entropy *> RWORK(6) = the entropy of A^* * A :: this is the Shannon entropy
@ -456,13 +456,13 @@
*> of JOBA and JOBR. *> of JOBA and JOBR.
*> IWORK(2) = the number of the computed nonzero singular values *> IWORK(2) = the number of the computed nonzero singular values
*> IWORK(3) = if nonzero, a warning message: *> IWORK(3) = if nonzero, a warning message:
*> If IWORK(3).EQ.1 then some of the column norms of A *> If IWORK(3) = 1 then some of the column norms of A
*> were denormalized floats. The requested high accuracy *> were denormalized floats. The requested high accuracy
*> is not warranted by the data. *> is not warranted by the data.
*> IWORK(4) = 1 or -1. If IWORK(4) .EQ. 1, then the procedure used A^* to *> IWORK(4) = 1 or -1. If IWORK(4) = 1, then the procedure used A^* to
*> do the job as specified by the JOB parameters. *> do the job as specified by the JOB parameters.
*> If the call to ZGEJSV is a workspace query (indicated by LWORK .EQ. -1 or *> If the call to ZGEJSV is a workspace query (indicated by LWORK = -1 or
*> LRWORK .EQ. -1), then on exit IWORK(1) contains the required length of *> LRWORK = -1), then on exit IWORK(1) contains the required length of
*> IWORK for the job parameters used in the call. *> IWORK for the job parameters used in the call.
*> \endverbatim *> \endverbatim
*> *>
@ -1338,7 +1338,7 @@
IF ( L2ABER ) THEN IF ( L2ABER ) THEN
* Standard absolute error bound suffices. All sigma_i with * Standard absolute error bound suffices. All sigma_i with
* sigma_i < N*EPSLN*||A|| are flushed to zero. This is an * sigma_i < N*EPSLN*||A|| are flushed to zero. This is an
* agressive enforcement of lower numerical rank by introducing a * aggressive enforcement of lower numerical rank by introducing a
* backward error of the order of N*EPSLN*||A||. * backward error of the order of N*EPSLN*||A||.
TEMP1 = SQRT(DBLE(N))*EPSLN TEMP1 = SQRT(DBLE(N))*EPSLN
DO 3001 p = 2, N DO 3001 p = 2, N
@ -1350,7 +1350,7 @@
3001 CONTINUE 3001 CONTINUE
3002 CONTINUE 3002 CONTINUE
ELSE IF ( L2RANK ) THEN ELSE IF ( L2RANK ) THEN
* .. similarly as above, only slightly more gentle (less agressive). * .. similarly as above, only slightly more gentle (less aggressive).
* Sudden drop on the diagonal of R1 is used as the criterion for * Sudden drop on the diagonal of R1 is used as the criterion for
* close-to-rank-deficient. * close-to-rank-deficient.
TEMP1 = SQRT(SFMIN) TEMP1 = SQRT(SFMIN)
@ -1720,7 +1720,7 @@
CALL ZPOCON('L',NR,CWORK(2*N+1),NR,ONE,TEMP1, CALL ZPOCON('L',NR,CWORK(2*N+1),NR,ONE,TEMP1,
$ CWORK(2*N+NR*NR+1),RWORK,IERR) $ CWORK(2*N+NR*NR+1),RWORK,IERR)
CONDR1 = ONE / SQRT(TEMP1) CONDR1 = ONE / SQRT(TEMP1)
* .. here need a second oppinion on the condition number * .. here need a second opinion on the condition number
* .. then assume worst case scenario * .. then assume worst case scenario
* R1 is OK for inverse <=> CONDR1 .LT. DBLE(N) * R1 is OK for inverse <=> CONDR1 .LT. DBLE(N)
* more conservative <=> CONDR1 .LT. SQRT(DBLE(N)) * more conservative <=> CONDR1 .LT. SQRT(DBLE(N))
@ -1765,7 +1765,7 @@
ELSE ELSE
* *
* .. ill-conditioned case: second QRF with pivoting * .. ill-conditioned case: second QRF with pivoting
* Note that windowed pivoting would be equaly good * Note that windowed pivoting would be equally good
* numerically, and more run-time efficient. So, in * numerically, and more run-time efficient. So, in
* an optimal implementation, the next call to ZGEQP3 * an optimal implementation, the next call to ZGEQP3
* should be replaced with eg. CALL ZGEQPX (ACM TOMS #782) * should be replaced with eg. CALL ZGEQPX (ACM TOMS #782)
@ -1823,7 +1823,7 @@
* *
IF ( CONDR2 .GE. COND_OK ) THEN IF ( CONDR2 .GE. COND_OK ) THEN
* .. save the Householder vectors used for Q3 * .. save the Householder vectors used for Q3
* (this overwrittes the copy of R2, as it will not be * (this overwrites the copy of R2, as it will not be
* needed in this branch, but it does not overwritte the * needed in this branch, but it does not overwritte the
* Huseholder vectors of Q2.). * Huseholder vectors of Q2.).
CALL ZLACPY( 'U', NR, NR, V, LDV, CWORK(2*N+1), N ) CALL ZLACPY( 'U', NR, NR, V, LDV, CWORK(2*N+1), N )
@ -2079,7 +2079,7 @@
* *
* This branch deploys a preconditioned Jacobi SVD with explicitly * This branch deploys a preconditioned Jacobi SVD with explicitly
* accumulated rotations. It is included as optional, mainly for * accumulated rotations. It is included as optional, mainly for
* experimental purposes. It does perfom well, and can also be used. * experimental purposes. It does perform well, and can also be used.
* In this implementation, this branch will be automatically activated * In this implementation, this branch will be automatically activated
* if the condition number sigma_max(A) / sigma_min(A) is predicted * if the condition number sigma_max(A) / sigma_min(A) is predicted
* to be greater than the overflow threshold. This is because the * to be greater than the overflow threshold. This is because the

View File

@ -1,3 +1,4 @@
*> \brief \b ZGELQ
* *
* Definition: * Definition:
* =========== * ===========
@ -17,7 +18,17 @@
* ============= * =============
*> *>
*> \verbatim *> \verbatim
*> ZGELQ computes a LQ factorization of an M-by-N matrix A. *>
*> ZGELQ computes an LQ factorization of a complex M-by-N matrix A:
*>
*> A = ( L 0 ) * Q
*>
*> where:
*>
*> Q is a N-by-N orthogonal matrix;
*> L is an lower-triangular M-by-M matrix;
*> 0 is a M-by-(N-M) zero matrix, if M < N.
*>
*> \endverbatim *> \endverbatim
* *
* Arguments: * Arguments:
@ -138,7 +149,7 @@
*> \verbatim *> \verbatim
*> *>
*> These details are particular for this LAPACK implementation. Users should not *> These details are particular for this LAPACK implementation. Users should not
*> take them for granted. These details may change in the future, and are unlikely not *> take them for granted. These details may change in the future, and are not likely
*> true for another LAPACK implementation. These details are relevant if one wants *> true for another LAPACK implementation. These details are relevant if one wants
*> to try to understand the code. They are not part of the interface. *> to try to understand the code. They are not part of the interface.
*> *>
@ -159,10 +170,10 @@
SUBROUTINE ZGELQ( M, N, A, LDA, T, TSIZE, WORK, LWORK, SUBROUTINE ZGELQ( M, N, A, LDA, T, TSIZE, WORK, LWORK,
$ INFO ) $ INFO )
* *
* -- LAPACK computational routine (version 3.7.0) -- * -- LAPACK computational routine (version 3.9.0) --
* -- 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. --
* December 2016 * November 2019
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, M, N, TSIZE, LWORK INTEGER INFO, LDA, M, N, TSIZE, LWORK

View File

@ -33,8 +33,16 @@
*> *>
*> \verbatim *> \verbatim
*> *>
*> ZGELQ2 computes an LQ factorization of a complex m by n matrix A: *> ZGELQ2 computes an LQ factorization of a complex m-by-n matrix A:
*> A = L * Q. *>
*> A = ( L 0 ) * Q
*>
*> where:
*>
*> Q is a n-by-n orthogonal matrix;
*> L is an lower-triangular m-by-m matrix;
*> 0 is a m-by-(n-m) zero matrix, if m < n.
*>
*> \endverbatim *> \endverbatim
* *
* Arguments: * Arguments:
@ -96,7 +104,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date December 2016 *> \date November 2019
* *
*> \ingroup complex16GEcomputational *> \ingroup complex16GEcomputational
* *
@ -121,10 +129,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE ZGELQ2( M, N, A, LDA, TAU, WORK, INFO ) SUBROUTINE ZGELQ2( M, N, A, LDA, TAU, WORK, INFO )
* *
* -- LAPACK computational routine (version 3.7.0) -- * -- LAPACK computational routine (version 3.9.0) --
* -- 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..--
* December 2016 * November 2019
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, M, N INTEGER INFO, LDA, M, N

View File

@ -34,7 +34,15 @@
*> \verbatim *> \verbatim
*> *>
*> ZGELQF computes an LQ factorization of a complex M-by-N matrix A: *> ZGELQF computes an LQ factorization of a complex M-by-N matrix A:
*> A = L * Q. *>
*> A = ( L 0 ) * Q
*>
*> where:
*>
*> Q is a N-by-N orthogonal matrix;
*> L is an lower-triangular M-by-M matrix;
*> 0 is a M-by-(N-M) zero matrix, if M < N.
*>
*> \endverbatim *> \endverbatim
* *
* Arguments: * Arguments:
@ -110,7 +118,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date December 2016 *> \date November 2019
* *
*> \ingroup complex16GEcomputational *> \ingroup complex16GEcomputational
* *
@ -135,10 +143,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE ZGELQF( M, N, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE ZGELQF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
* *
* -- LAPACK computational routine (version 3.7.0) -- * -- LAPACK computational routine (version 3.9.0) --
* -- 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..--
* December 2016 * November 2019
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, LWORK, M, N INTEGER INFO, LDA, LWORK, M, N

View File

@ -1,3 +1,4 @@
*> \brief \b ZGEMLQ
* *
* Definition: * Definition:
* =========== * ===========
@ -142,7 +143,7 @@
*> \verbatim *> \verbatim
*> *>
*> These details are particular for this LAPACK implementation. Users should not *> These details are particular for this LAPACK implementation. Users should not
*> take them for granted. These details may change in the future, and are unlikely not *> take them for granted. These details may change in the future, and are not likely
*> true for another LAPACK implementation. These details are relevant if one wants *> true for another LAPACK implementation. These details are relevant if one wants
*> to try to understand the code. They are not part of the interface. *> to try to understand the code. They are not part of the interface.
*> *>

View File

@ -1,3 +1,4 @@
*> \brief \b ZGEMQR
* *
* Definition: * Definition:
* =========== * ===========
@ -144,7 +145,7 @@
*> \verbatim *> \verbatim
*> *>
*> These details are particular for this LAPACK implementation. Users should not *> These details are particular for this LAPACK implementation. Users should not
*> take them for granted. These details may change in the future, and are unlikely not *> take them for granted. These details may change in the future, and are not likely
*> true for another LAPACK implementation. These details are relevant if one wants *> true for another LAPACK implementation. These details are relevant if one wants
*> to try to understand the code. They are not part of the interface. *> to try to understand the code. They are not part of the interface.
*> *>

View File

@ -1,3 +1,4 @@
*> \brief \b ZGEQR
* *
* Definition: * Definition:
* =========== * ===========
@ -17,7 +18,18 @@
* ============= * =============
*> *>
*> \verbatim *> \verbatim
*> ZGEQR computes a QR factorization of an M-by-N matrix A. *>
*> ZGEQR computes a QR factorization of a complex M-by-N matrix A:
*>
*> A = Q * ( R ),
*> ( 0 )
*>
*> where:
*>
*> Q is a M-by-M orthogonal matrix;
*> R is an upper-triangular N-by-N matrix;
*> 0 is a (M-N)-by-N zero matrix, if M > N.
*>
*> \endverbatim *> \endverbatim
* *
* Arguments: * Arguments:
@ -138,7 +150,7 @@
*> \verbatim *> \verbatim
*> *>
*> These details are particular for this LAPACK implementation. Users should not *> These details are particular for this LAPACK implementation. Users should not
*> take them for granted. These details may change in the future, and are unlikely not *> take them for granted. These details may change in the future, and are not likely
*> true for another LAPACK implementation. These details are relevant if one wants *> true for another LAPACK implementation. These details are relevant if one wants
*> to try to understand the code. They are not part of the interface. *> to try to understand the code. They are not part of the interface.
*> *>
@ -160,10 +172,10 @@
SUBROUTINE ZGEQR( M, N, A, LDA, T, TSIZE, WORK, LWORK, SUBROUTINE ZGEQR( M, N, A, LDA, T, TSIZE, WORK, LWORK,
$ INFO ) $ INFO )
* *
* -- LAPACK computational routine (version 3.7.0) -- * -- LAPACK computational routine (version 3.9.0) --
* -- 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. --
* December 2016 * November 2019
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, M, N, TSIZE, LWORK INTEGER INFO, LDA, M, N, TSIZE, LWORK

View File

@ -33,8 +33,17 @@
*> *>
*> \verbatim *> \verbatim
*> *>
*> ZGEQR2 computes a QR factorization of a complex m by n matrix A: *> ZGEQR2 computes a QR factorization of a complex m-by-n matrix A:
*> A = Q * R. *>
*> A = Q * ( R ),
*> ( 0 )
*>
*> where:
*>
*> Q is a m-by-m orthogonal matrix;
*> R is an upper-triangular n-by-n matrix;
*> 0 is a (m-n)-by-n zero matrix, if m > n.
*>
*> \endverbatim *> \endverbatim
* *
* Arguments: * Arguments:
@ -96,7 +105,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date December 2016 *> \date November 2019
* *
*> \ingroup complex16GEcomputational *> \ingroup complex16GEcomputational
* *
@ -121,10 +130,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE ZGEQR2( M, N, A, LDA, TAU, WORK, INFO ) SUBROUTINE ZGEQR2( M, N, A, LDA, TAU, WORK, INFO )
* *
* -- LAPACK computational routine (version 3.7.0) -- * -- LAPACK computational routine (version 3.9.0) --
* -- 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..--
* December 2016 * November 2019
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, M, N INTEGER INFO, LDA, M, N

View File

@ -33,8 +33,18 @@
*> *>
*> \verbatim *> \verbatim
*> *>
*> ZGEQR2P computes a QR factorization of a complex m by n matrix A: *> ZGEQR2P computes a QR factorization of a complex m-by-n matrix A:
*> A = Q * R. The diagonal entries of R are real and nonnegative. *>
*> A = Q * ( R ),
*> ( 0 )
*>
*> where:
*>
*> Q is a m-by-m orthogonal matrix;
*> R is an upper-triangular n-by-n matrix with nonnegative diagonal
*> entries;
*> 0 is a (m-n)-by-n zero matrix, if m > n.
*>
*> \endverbatim *> \endverbatim
* *
* Arguments: * Arguments:
@ -97,7 +107,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date December 2016 *> \date November 2019
* *
*> \ingroup complex16GEcomputational *> \ingroup complex16GEcomputational
* *
@ -124,10 +134,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE ZGEQR2P( M, N, A, LDA, TAU, WORK, INFO ) SUBROUTINE ZGEQR2P( M, N, A, LDA, TAU, WORK, INFO )
* *
* -- LAPACK computational routine (version 3.7.0) -- * -- LAPACK computational routine (version 3.9.0) --
* -- 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..--
* December 2016 * November 2019
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, M, N INTEGER INFO, LDA, M, N

View File

@ -34,7 +34,16 @@
*> \verbatim *> \verbatim
*> *>
*> ZGEQRF computes a QR factorization of a complex M-by-N matrix A: *> ZGEQRF computes a QR factorization of a complex M-by-N matrix A:
*> A = Q * R. *>
*> A = Q * ( R ),
*> ( 0 )
*>
*> where:
*>
*> Q is a M-by-M orthogonal matrix;
*> R is an upper-triangular N-by-N matrix;
*> 0 is a (M-N)-by-N zero matrix, if M > N.
*>
*> \endverbatim *> \endverbatim
* *
* Arguments: * Arguments:
@ -111,7 +120,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date December 2016 *> \date November 2019
* *
*> \ingroup complex16GEcomputational *> \ingroup complex16GEcomputational
* *
@ -136,10 +145,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE ZGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE ZGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
* *
* -- LAPACK computational routine (version 3.7.0) -- * -- LAPACK computational routine (version 3.9.0) --
* -- 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..--
* December 2016 * November 2019
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, LWORK, M, N INTEGER INFO, LDA, LWORK, M, N

View File

@ -33,8 +33,18 @@
*> *>
*> \verbatim *> \verbatim
*> *>
*> ZGEQRFP computes a QR factorization of a complex M-by-N matrix A: *> ZGEQR2P computes a QR factorization of a complex M-by-N matrix A:
*> A = Q * R. The diagonal entries of R are real and nonnegative. *>
*> A = Q * ( R ),
*> ( 0 )
*>
*> where:
*>
*> Q is a M-by-M orthogonal matrix;
*> R is an upper-triangular N-by-N matrix with nonnegative diagonal
*> entries;
*> 0 is a (M-N)-by-N zero matrix, if M > N.
*>
*> \endverbatim *> \endverbatim
* *
* Arguments: * Arguments:
@ -112,7 +122,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date December 2016 *> \date November 2019
* *
*> \ingroup complex16GEcomputational *> \ingroup complex16GEcomputational
* *
@ -139,10 +149,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE ZGEQRFP( M, N, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE ZGEQRFP( M, N, A, LDA, TAU, WORK, LWORK, INFO )
* *
* -- LAPACK computational routine (version 3.7.0) -- * -- LAPACK computational routine (version 3.9.0) --
* -- 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..--
* December 2016 * November 2019
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, LWORK, M, N INTEGER INFO, LDA, LWORK, M, N

View File

@ -74,7 +74,7 @@
*> Specifies the form of the system of equations: *> Specifies the form of the system of equations:
*> = 'N': A * X = B (No transpose) *> = 'N': A * X = B (No transpose)
*> = 'T': A**T * X = B (Transpose) *> = 'T': A**T * X = B (Transpose)
*> = 'C': A**H * X = B (Conjugate transpose = Transpose) *> = 'C': A**H * X = B (Conjugate transpose)
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] EQUED *> \param[in] EQUED
@ -283,7 +283,7 @@
*> information as described below. There currently are up to three *> information as described below. There currently are up to three
*> pieces of information returned for each right-hand side. If *> pieces of information returned for each right-hand side. If
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most *> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS < 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned. *> the first (:,N_ERR_BNDS) entries are returned.
*> *>
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith *> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
@ -319,14 +319,14 @@
*> \param[in] NPARAMS *> \param[in] NPARAMS
*> \verbatim *> \verbatim
*> NPARAMS is INTEGER *> NPARAMS is INTEGER
*> Specifies the number of parameters set in PARAMS. If .LE. 0, the *> Specifies the number of parameters set in PARAMS. If <= 0, the
*> PARAMS array is never referenced and default values are used. *> PARAMS array is never referenced and default values are used.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] PARAMS *> \param[in,out] PARAMS
*> \verbatim *> \verbatim
*> PARAMS is DOUBLE PRECISION array, dimension NPARAMS *> PARAMS is DOUBLE PRECISION array, dimension NPARAMS
*> Specifies algorithm parameters. If an entry is .LT. 0.0, then *> Specifies algorithm parameters. If an entry is < 0.0, then
*> that entry will be filled with default value used for that *> that entry will be filled with default value used for that
*> parameter. Only positions up to NPARAMS are accessed; defaults *> parameter. Only positions up to NPARAMS are accessed; defaults
*> are used for higher-numbered parameters. *> are used for higher-numbered parameters.

View File

@ -91,7 +91,7 @@
*> \verbatim *> \verbatim
*> SCALE is DOUBLE PRECISION *> SCALE is DOUBLE PRECISION
*> On exit, SCALE contains the scale factor. SCALE is chosen *> On exit, SCALE contains the scale factor. SCALE is chosen
*> 0 <= SCALE <= 1 to prevent owerflow in the solution. *> 0 <= SCALE <= 1 to prevent overflow in the solution.
*> \endverbatim *> \endverbatim
* *
* Authors: * Authors:

1389
lapack-netlib/SRC/zgesvdq.f Normal file

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@
* Definition: * Definition:
* =========== * ===========
* *
* SUBROUTINE CGESVDX( JOBU, JOBVT, RANGE, M, N, A, LDA, VL, VU, * SUBROUTINE ZGESVDX( JOBU, JOBVT, RANGE, M, N, A, LDA, VL, VU,
* $ IL, IU, NS, S, U, LDU, VT, LDVT, WORK, * $ IL, IU, NS, S, U, LDU, VT, LDVT, WORK,
* $ LWORK, RWORK, IWORK, INFO ) * $ LWORK, RWORK, IWORK, INFO )
* *

View File

@ -116,8 +116,8 @@
*> 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
@ -127,9 +127,9 @@
*> 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
@ -137,8 +137,8 @@
*> 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
@ -147,7 +147,7 @@
*> 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
@ -162,9 +162,9 @@
*> \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.
@ -173,7 +173,7 @@
*> 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
@ -181,7 +181,7 @@
*> \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
*> *>
@ -199,16 +199,16 @@
*> \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
@ -223,7 +223,7 @@
*> \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').
@ -243,11 +243,11 @@
*> 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

View File

@ -411,7 +411,7 @@
*> information as described below. There currently are up to three *> information as described below. There currently are up to three
*> pieces of information returned for each right-hand side. If *> pieces of information returned for each right-hand side. If
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most *> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS < 3, then at most
*> the first (:,N_ERR_BNDS) entries are returned. *> the first (:,N_ERR_BNDS) entries are returned.
*> *>
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith *> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
@ -447,14 +447,14 @@
*> \param[in] NPARAMS *> \param[in] NPARAMS
*> \verbatim *> \verbatim
*> NPARAMS is INTEGER *> NPARAMS is INTEGER
*> Specifies the number of parameters set in PARAMS. If .LE. 0, the *> Specifies the number of parameters set in PARAMS. If <= 0, the
*> PARAMS array is never referenced and default values are used. *> PARAMS array is never referenced and default values are used.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] PARAMS *> \param[in,out] PARAMS
*> \verbatim *> \verbatim
*> PARAMS is DOUBLE PRECISION array, dimension NPARAMS *> PARAMS is DOUBLE PRECISION array, dimension NPARAMS
*> Specifies algorithm parameters. If an entry is .LT. 0.0, then *> Specifies algorithm parameters. If an entry is < 0.0, then
*> that entry will be filled with default value used for that *> that entry will be filled with default value used for that
*> parameter. Only positions up to NPARAMS are accessed; defaults *> parameter. Only positions up to NPARAMS are accessed; defaults
*> are used for higher-numbered parameters. *> are used for higher-numbered parameters.

View File

@ -1,3 +1,5 @@
*> \brief \b ZGETSLS
*
* Definition: * Definition:
* =========== * ===========
* *

View File

@ -117,7 +117,7 @@
*> \param[in] MV *> \param[in] MV
*> \verbatim *> \verbatim
*> MV is INTEGER *> MV is INTEGER
*> If JOBV .EQ. 'A', then MV rows of V are post-multipled by a *> If JOBV = 'A', then MV rows of V are post-multipled by a
*> sequence of Jacobi rotations. *> sequence of Jacobi rotations.
*> If JOBV = 'N', then MV is not referenced. *> If JOBV = 'N', then MV is not referenced.
*> \endverbatim *> \endverbatim
@ -125,9 +125,9 @@
*> \param[in,out] V *> \param[in,out] V
*> \verbatim *> \verbatim
*> V is COMPLEX*16 array, dimension (LDV,N) *> V is COMPLEX*16 array, dimension (LDV,N)
*> If JOBV .EQ. 'V' then N rows of V are post-multipled by a *> If JOBV = 'V' then N rows of V are post-multipled by a
*> sequence of Jacobi rotations. *> sequence of Jacobi rotations.
*> If JOBV .EQ. 'A' then MV rows of V are post-multipled by a *> If JOBV = 'A' then MV rows of V are post-multipled by a
*> sequence of Jacobi rotations. *> sequence of Jacobi rotations.
*> If JOBV = 'N', then V is not referenced. *> If JOBV = 'N', then V is not referenced.
*> \endverbatim *> \endverbatim
@ -136,8 +136,8 @@
*> \verbatim *> \verbatim
*> LDV is INTEGER *> LDV is INTEGER
*> The leading dimension of the array V, LDV >= 1. *> The leading dimension of the array V, LDV >= 1.
*> If JOBV = 'V', LDV .GE. N. *> If JOBV = 'V', LDV >= N.
*> If JOBV = 'A', LDV .GE. MV. *> If JOBV = 'A', LDV >= MV.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] EPS *> \param[in] EPS
@ -157,7 +157,7 @@
*> TOL is DOUBLE PRECISION *> TOL is DOUBLE PRECISION
*> TOL is the threshold for Jacobi rotations. For a pair *> TOL is the threshold for Jacobi rotations. For a pair
*> A(:,p), A(:,q) of pivot columns, the Jacobi rotation is *> A(:,p), A(:,q) of pivot columns, the Jacobi rotation is
*> applied only if ABS(COS(angle(A(:,p),A(:,q)))) .GT. TOL. *> applied only if ABS(COS(angle(A(:,p),A(:,q)))) > TOL.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] NSWEEP *> \param[in] NSWEEP
@ -175,7 +175,7 @@
*> \param[in] LWORK *> \param[in] LWORK
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> LWORK is the dimension of WORK. LWORK .GE. M. *> LWORK is the dimension of WORK. LWORK >= M.
*> \endverbatim *> \endverbatim
*> *>
*> \param[out] INFO *> \param[out] INFO

View File

@ -61,7 +61,7 @@
*> In terms of the columns of A, the first N1 columns are rotated 'against' *> In terms of the columns of A, the first N1 columns are rotated 'against'
*> the remaining N-N1 columns, trying to increase the angle between the *> the remaining N-N1 columns, trying to increase the angle between the
*> corresponding subspaces. The off-diagonal block is N1-by(N-N1) and it is *> corresponding subspaces. The off-diagonal block is N1-by(N-N1) and it is
*> tiled using quadratic tiles of side KBL. Here, KBL is a tunning parmeter. *> tiled using quadratic tiles of side KBL. Here, KBL is a tunning parameter.
*> The number of sweeps is given in NSWEEP and the orthogonality threshold *> The number of sweeps is given in NSWEEP and the orthogonality threshold
*> is given in TOL. *> is given in TOL.
*> \endverbatim *> \endverbatim
@ -147,7 +147,7 @@
*> \param[in] MV *> \param[in] MV
*> \verbatim *> \verbatim
*> MV is INTEGER *> MV is INTEGER
*> If JOBV .EQ. 'A', then MV rows of V are post-multipled by a *> If JOBV = 'A', then MV rows of V are post-multipled by a
*> sequence of Jacobi rotations. *> sequence of Jacobi rotations.
*> If JOBV = 'N', then MV is not referenced. *> If JOBV = 'N', then MV is not referenced.
*> \endverbatim *> \endverbatim
@ -155,9 +155,9 @@
*> \param[in,out] V *> \param[in,out] V
*> \verbatim *> \verbatim
*> V is COMPLEX*16 array, dimension (LDV,N) *> V is COMPLEX*16 array, dimension (LDV,N)
*> If JOBV .EQ. 'V' then N rows of V are post-multipled by a *> If JOBV = 'V' then N rows of V are post-multipled by a
*> sequence of Jacobi rotations. *> sequence of Jacobi rotations.
*> If JOBV .EQ. 'A' then MV rows of V are post-multipled by a *> If JOBV = 'A' then MV rows of V are post-multipled by a
*> sequence of Jacobi rotations. *> sequence of Jacobi rotations.
*> If JOBV = 'N', then V is not referenced. *> If JOBV = 'N', then V is not referenced.
*> \endverbatim *> \endverbatim
@ -166,8 +166,8 @@
*> \verbatim *> \verbatim
*> LDV is INTEGER *> LDV is INTEGER
*> The leading dimension of the array V, LDV >= 1. *> The leading dimension of the array V, LDV >= 1.
*> If JOBV = 'V', LDV .GE. N. *> If JOBV = 'V', LDV >= N.
*> If JOBV = 'A', LDV .GE. MV. *> If JOBV = 'A', LDV >= MV.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] EPS *> \param[in] EPS
@ -187,7 +187,7 @@
*> TOL is DOUBLE PRECISION *> TOL is DOUBLE PRECISION
*> TOL is the threshold for Jacobi rotations. For a pair *> TOL is the threshold for Jacobi rotations. For a pair
*> A(:,p), A(:,q) of pivot columns, the Jacobi rotation is *> A(:,p), A(:,q) of pivot columns, the Jacobi rotation is
*> applied only if ABS(COS(angle(A(:,p),A(:,q)))) .GT. TOL. *> applied only if ABS(COS(angle(A(:,p),A(:,q)))) > TOL.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] NSWEEP *> \param[in] NSWEEP
@ -205,7 +205,7 @@
*> \param[in] LWORK *> \param[in] LWORK
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> LWORK is the dimension of WORK. LWORK .GE. M. *> LWORK is the dimension of WORK. LWORK >= M.
*> \endverbatim *> \endverbatim
*> *>
*> \param[out] INFO *> \param[out] INFO