| @@ -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 | |||||
| *> factorization (if INFO.EQ.0 and ITER.LT.0). | |||||
| *> (if INFO = 0 and ITER >= 0) or the double precision | |||||
| *> 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. | ||||
| * | * | ||||
| @@ -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. | ||||
| * | * | ||||
| @@ -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. | ||||
| @@ -359,9 +359,9 @@ | |||||
| *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | ||||
| *> refinement or not. | *> refinement or not. | ||||
| *> Default: 1.0D+0 | *> Default: 1.0D+0 | ||||
| *> = 0.0 : No refinement is performed, and no error bounds are | |||||
| *> = 0.0: No refinement is performed, and no error bounds are | |||||
| *> computed. | *> computed. | ||||
| *> = 1.0 : Use the double-precision refinement algorithm, | |||||
| *> = 1.0: Use the double-precision refinement algorithm, | |||||
| *> possibly with doubled-single computations if the | *> possibly with doubled-single computations if the | ||||
| *> compilation environment does not support DOUBLE | *> compilation environment does not support DOUBLE | ||||
| *> PRECISION. | *> PRECISION. | ||||
| @@ -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. | ||||
| @@ -482,9 +482,9 @@ | |||||
| *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | ||||
| *> refinement or not. | *> refinement or not. | ||||
| *> Default: 1.0D+0 | *> Default: 1.0D+0 | ||||
| *> = 0.0 : No refinement is performed, and no error bounds are | |||||
| *> = 0.0: No refinement is performed, and no error bounds are | |||||
| *> computed. | *> computed. | ||||
| *> = 1.0 : Use the extra-precise refinement algorithm. | |||||
| *> = 1.0: Use the extra-precise refinement algorithm. | |||||
| *> (other values are reserved for future use) | *> (other values are reserved for future use) | ||||
| *> | *> | ||||
| *> PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual | *> PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual | ||||
| @@ -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; | |||||
| *> = 'P', do backward transformation for permutation only; | |||||
| *> = 'S', do backward transformation for scaling only; | |||||
| *> = 'B', do backward transformations for both permutation and | |||||
| *> = 'N': do nothing, return immediately; | |||||
| *> = 'P': do backward transformation for permutation only; | |||||
| *> = 'S': do backward transformation for scaling only; | |||||
| *> = '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 | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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'), | |||||
| *> (JOBU.EQ.'N') | |||||
| *> 2.1 .. no scaled condition estimate requested (JOBE.EQ.'N'): | |||||
| *> 2. If SIGMA and the right singular vectors are needed (JOBV = 'V'), | |||||
| *> (JOBU = '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.1. if JOBV.EQ.'V' | |||||
| *> 4. If the full SVD is needed: (JOBU = 'U' or JOBU = 'F') and | |||||
| *> 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,23 +456,23 @@ | |||||
| *> 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 | |||||
| *> LRWORK .EQ. -1), then on exit IWORK(1) contains the required length of | |||||
| *> If the call to ZGEJSV is a workspace query (indicated by LWORK = -1 or | |||||
| *> 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 | ||||
| *> | *> | ||||
| *> \param[out] INFO | *> \param[out] INFO | ||||
| *> \verbatim | *> \verbatim | ||||
| *> INFO is INTEGER | *> INFO is INTEGER | ||||
| *> < 0 : if INFO = -i, then the i-th argument had an illegal value. | |||||
| *> = 0 : successful exit; | |||||
| *> > 0 : ZGEJSV did not converge in the maximal allowed number | |||||
| *> of sweeps. The computed values may be inaccurate. | |||||
| *> < 0: if INFO = -i, then the i-th argument had an illegal value. | |||||
| *> = 0: successful exit; | |||||
| *> > 0: ZGEJSV did not converge in the maximal allowed number | |||||
| *> of sweeps. The computed values may be inaccurate. | |||||
| *> \endverbatim | *> \endverbatim | ||||
| * | * | ||||
| * Authors: | * Authors: | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -33,8 +33,16 @@ | |||||
| *> | *> | ||||
| *> \verbatim | *> \verbatim | ||||
| *> | *> | ||||
| *> ZGELQ2 computes an LQ factorization of a complex m by n matrix A: | |||||
| *> A = L * Q. | |||||
| *> ZGELQ2 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: | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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. | ||||
| *> | *> | ||||
| @@ -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. | ||||
| *> | *> | ||||
| @@ -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 | ||||
| @@ -33,8 +33,17 @@ | |||||
| *> | *> | ||||
| *> \verbatim | *> \verbatim | ||||
| *> | *> | ||||
| *> ZGEQR2 computes a QR factorization of a complex m by n matrix A: | |||||
| *> A = Q * R. | |||||
| *> ZGEQR2 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: | ||||
| @@ -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 | ||||
| @@ -33,8 +33,18 @@ | |||||
| *> | *> | ||||
| *> \verbatim | *> \verbatim | ||||
| *> | *> | ||||
| *> 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. | |||||
| *> ZGEQR2P 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 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 | ||||
| @@ -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 | ||||
| @@ -33,8 +33,18 @@ | |||||
| *> | *> | ||||
| *> \verbatim | *> \verbatim | ||||
| *> | *> | ||||
| *> ZGEQRFP computes a QR factorization of a complex M-by-N matrix A: | |||||
| *> A = Q * R. The diagonal entries of R are real and nonnegative. | |||||
| *> ZGEQR2P 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 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 | ||||
| @@ -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. | ||||
| @@ -334,9 +334,9 @@ | |||||
| *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | ||||
| *> refinement or not. | *> refinement or not. | ||||
| *> Default: 1.0D+0 | *> Default: 1.0D+0 | ||||
| *> = 0.0 : No refinement is performed, and no error bounds are | |||||
| *> = 0.0: No refinement is performed, and no error bounds are | |||||
| *> computed. | *> computed. | ||||
| *> = 1.0 : Use the double-precision refinement algorithm, | |||||
| *> = 1.0: Use the double-precision refinement algorithm, | |||||
| *> possibly with doubled-single computations if the | *> possibly with doubled-single computations if the | ||||
| *> compilation environment does not support DOUBLE | *> compilation environment does not support DOUBLE | ||||
| *> PRECISION. | *> PRECISION. | ||||
| @@ -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: | ||||
| @@ -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 ) | ||||
| * | * | ||||
| @@ -89,12 +89,12 @@ | |||||
| *> 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 | ||||
| *> | *> | ||||
| @@ -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 INFO .EQ. 0 : | |||||
| *> If JOBU = 'U' .OR. JOBU = 'C': | |||||
| *> 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 INFO .EQ. 0 : | |||||
| *> If JOBU = 'N': | |||||
| *> 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. | |||||
| *> If JOBV .EQ. 'V', then LDV .GE. max(1,N). | |||||
| *> If JOBV .EQ. 'A', then LDV .GE. max(1,MV) . | |||||
| *> The leading dimension of the array V, LDV >= 1. | |||||
| *> If JOBV = 'V', then LDV >= max(1,N). | |||||
| *> 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 | ||||
| @@ -261,9 +261,9 @@ | |||||
| *> \param[out] INFO | *> \param[out] INFO | ||||
| *> \verbatim | *> \verbatim | ||||
| *> INFO is INTEGER | *> INFO is INTEGER | ||||
| *> = 0 : successful exit. | |||||
| *> < 0 : if INFO = -i, then the i-th argument had an illegal value | |||||
| *> > 0 : ZGESVJ did not converge in the maximal allowed number | |||||
| *> = 0: successful exit. | |||||
| *> < 0: if INFO = -i, then the i-th argument had an illegal value | |||||
| *> > 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 | ||||
| @@ -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. | ||||
| @@ -462,9 +462,9 @@ | |||||
| *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | ||||
| *> refinement or not. | *> refinement or not. | ||||
| *> Default: 1.0D+0 | *> Default: 1.0D+0 | ||||
| *> = 0.0 : No refinement is performed, and no error bounds are | |||||
| *> = 0.0: No refinement is performed, and no error bounds are | |||||
| *> computed. | *> computed. | ||||
| *> = 1.0 : Use the extra-precise refinement algorithm. | |||||
| *> = 1.0: Use the extra-precise refinement algorithm. | |||||
| *> (other values are reserved for future use) | *> (other values are reserved for future use) | ||||
| *> | *> | ||||
| *> PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual | *> PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual | ||||
| @@ -1,3 +1,5 @@ | |||||
| *> \brief \b ZGETSLS | |||||
| * | |||||
| * Definition: | * Definition: | ||||
| * =========== | * =========== | ||||
| * | * | ||||
| @@ -120,10 +120,10 @@ | |||||
| *> \verbatim | *> \verbatim | ||||
| *> SENSE is CHARACTER*1 | *> SENSE is CHARACTER*1 | ||||
| *> Determines which reciprocal condition numbers are computed. | *> Determines which reciprocal condition numbers are computed. | ||||
| *> = 'N' : None are computed; | |||||
| *> = 'E' : Computed for average of selected eigenvalues only; | |||||
| *> = 'V' : Computed for selected deflating subspaces only; | |||||
| *> = 'B' : Computed for both. | |||||
| *> = 'N': None are computed; | |||||
| *> = 'E': Computed for average of selected eigenvalues only; | |||||
| *> = 'V': Computed for selected deflating subspaces only; | |||||
| *> = 'B': Computed for both. | |||||
| *> If SENSE = 'E', 'V', or 'B', SORT must equal 'S'. | *> If SENSE = 'E', 'V', or 'B', SORT must equal 'S'. | ||||
| *> \endverbatim | *> \endverbatim | ||||
| *> | *> | ||||
| @@ -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 = 'A', LDV .GE. MV. | |||||
| *> If JOBV = 'V', LDV >= N. | |||||
| *> 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,14 +175,14 @@ | |||||
| *> \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 | ||||
| *> \verbatim | *> \verbatim | ||||
| *> INFO is INTEGER | *> INFO is INTEGER | ||||
| *> = 0 : successful exit. | |||||
| *> < 0 : if INFO = -i, then the i-th argument had an illegal value | |||||
| *> = 0: successful exit. | |||||
| *> < 0: if INFO = -i, then the i-th argument had an illegal value | |||||
| *> \endverbatim | *> \endverbatim | ||||
| * | * | ||||
| * Authors: | * Authors: | ||||
| @@ -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 = 'A', LDV .GE. MV. | |||||
| *> If JOBV = 'V', LDV >= N. | |||||
| *> 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,14 +205,14 @@ | |||||
| *> \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 | ||||
| *> \verbatim | *> \verbatim | ||||
| *> INFO is INTEGER | *> INFO is INTEGER | ||||
| *> = 0 : successful exit. | |||||
| *> < 0 : if INFO = -i, then the i-th argument had an illegal value | |||||
| *> = 0: successful exit. | |||||
| *> < 0: if INFO = -i, then the i-th argument had an illegal value | |||||
| *> \endverbatim | *> \endverbatim | ||||
| * | * | ||||
| * Authors: | * Authors: | ||||