| @@ -89,12 +89,12 @@ | |||
| *> Specifies whether to compute the right singular vectors, that | |||
| *> is, the matrix 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 | |||
| *> matrix V is not computed explicitly; instead it is | |||
| *> applied to an MV-by-N matrix initially stored in the | |||
| *> first MV rows of V. | |||
| *> = 'N' : the matrix V is not computed and the array V is not | |||
| *> = 'N': the matrix V is not computed and the array V is not | |||
| *> referenced | |||
| *> \endverbatim | |||
| *> | |||
| @@ -116,8 +116,8 @@ | |||
| *> A is COMPLEX array, dimension (LDA,N) | |||
| *> On entry, the M-by-N matrix A. | |||
| *> On exit, | |||
| *> If JOBU .EQ. 'U' .OR. JOBU .EQ. 'C': | |||
| *> If INFO .EQ. 0 : | |||
| *> If JOBU = 'U' .OR. JOBU = 'C': | |||
| *> If INFO = 0 : | |||
| *> RANKA orthonormal columns of U are returned in the | |||
| *> leading RANKA columns of the array A. Here RANKA <= N | |||
| *> is the number of computed singular values of A that are | |||
| @@ -127,9 +127,9 @@ | |||
| *> in the array RWORK as RANKA=NINT(RWORK(2)). Also see the | |||
| *> descriptions of SVA and RWORK. The computed columns of U | |||
| *> 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. | |||
| *> If INFO .GT. 0, | |||
| *> If INFO > 0, | |||
| *> the procedure CGESVJ did not converge in the given number | |||
| *> of iterations (sweeps). In that case, the computed | |||
| *> columns of U may not be orthogonal up to TOL. The output | |||
| @@ -137,8 +137,8 @@ | |||
| *> values in SVA(1:N)) and V is still a decomposition of the | |||
| *> input matrix A in the sense that the residual | |||
| *> || A - SCALE * U * SIGMA * V^* ||_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 | |||
| *> one-sided Jacobi SVD algorithm. However, if only the | |||
| *> singular values are needed, the level of numerical | |||
| @@ -147,7 +147,7 @@ | |||
| *> numerically orthogonal up to approximately M*EPS. Thus, | |||
| *> on exit, A contains the columns of U scaled with the | |||
| *> corresponding singular values. | |||
| *> If INFO .GT. 0 : | |||
| *> If INFO > 0 : | |||
| *> the procedure CGESVJ did not converge in the given number | |||
| *> of iterations (sweeps). | |||
| *> \endverbatim | |||
| @@ -162,9 +162,9 @@ | |||
| *> \verbatim | |||
| *> SVA is REAL array, dimension (N) | |||
| *> On exit, | |||
| *> If INFO .EQ. 0 : | |||
| *> If INFO = 0 : | |||
| *> 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. | |||
| *> During the computation SVA contains the Euclidean column | |||
| *> norms of the iterated matrices in the array A. | |||
| @@ -173,7 +173,7 @@ | |||
| *> factored representation is due to the fact that some of the | |||
| *> singular values of A might underflow or overflow. | |||
| *> | |||
| *> If INFO .GT. 0 : | |||
| *> If INFO > 0 : | |||
| *> the procedure CGESVJ did not converge in the given number of | |||
| *> iterations (sweeps) and SCALE*SVA(1:N) may not be accurate. | |||
| *> \endverbatim | |||
| @@ -181,7 +181,7 @@ | |||
| *> \param[in] MV | |||
| *> \verbatim | |||
| *> MV is INTEGER | |||
| *> If JOBV .EQ. 'A', then the product of Jacobi rotations in CGESVJ | |||
| *> If JOBV = 'A', then the product of Jacobi rotations in CGESVJ | |||
| *> is applied to the first MV rows of V. See the description of JOBV. | |||
| *> \endverbatim | |||
| *> | |||
| @@ -199,16 +199,16 @@ | |||
| *> \param[in] LDV | |||
| *> \verbatim | |||
| *> 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 | |||
| *> | |||
| *> \param[in,out] CWORK | |||
| *> \verbatim | |||
| *> CWORK is COMPLEX array, dimension (max(1,LWORK)) | |||
| *> 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) | |||
| *> length of CWORK. | |||
| *> \endverbatim | |||
| @@ -223,7 +223,7 @@ | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (max(6,LRWORK)) | |||
| *> On entry, | |||
| *> If JOBU .EQ. 'C' : | |||
| *> If JOBU = 'C' : | |||
| *> RWORK(1) = CTOL, where CTOL defines the threshold for convergence. | |||
| *> The process stops if all columns of A are mutually | |||
| *> orthogonal up to CTOL*EPS, EPS=SLAMCH('E'). | |||
| @@ -243,11 +243,11 @@ | |||
| *> RWORK(5) = max_{i.NE.j} |COS(A(:,i),A(:,j))| in the last sweep. | |||
| *> This is useful information in cases when CGESVJ did | |||
| *> 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 | |||
| *> Jacobi rotation angles in the last sweep. It can be | |||
| *> 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) | |||
| *> length of RWORK. | |||
| *> \endverbatim | |||
| @@ -261,9 +261,9 @@ | |||
| *> \param[out] INFO | |||
| *> \verbatim | |||
| *> INFO is INTEGER | |||
| *> = 0 : successful exit. | |||
| *> < 0 : if INFO = -i, then the i-th argument had an illegal value | |||
| *> > 0 : CGESVJ 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: CGESVJ did not converge in the maximal allowed number | |||
| *> (NSWEEP=30) of sweeps. The output may still be useful. | |||
| *> See the description of RWORK. | |||
| *> \endverbatim | |||
| @@ -411,7 +411,7 @@ | |||
| *> information as described below. There currently are up to three | |||
| *> pieces of information returned for each right-hand side. If | |||
| *> 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 index in ERR_BNDS_COMP(i,:) corresponds to the ith | |||
| @@ -447,14 +447,14 @@ | |||
| *> \param[in] NPARAMS | |||
| *> \verbatim | |||
| *> 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. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in,out] PARAMS | |||
| *> \verbatim | |||
| *> PARAMS is REAL 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 | |||
| *> parameter. Only positions up to NPARAMS are accessed; defaults | |||
| *> are used for higher-numbered parameters. | |||
| @@ -462,9 +462,9 @@ | |||
| *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | |||
| *> refinement or not. | |||
| *> Default: 1.0 | |||
| *> = 0.0 : No refinement is performed, and no error bounds are | |||
| *> = 0.0: No refinement is performed, and no error bounds are | |||
| *> computed. | |||
| *> = 1.0 : Use the double-precision refinement algorithm, | |||
| *> = 1.0: Use the double-precision refinement algorithm, | |||
| *> possibly with doubled-single computations if the | |||
| *> compilation environment does not support DOUBLE | |||
| *> PRECISION. | |||
| @@ -1,3 +1,5 @@ | |||
| *> \brief \b CGETSLS | |||
| * | |||
| * Definition: | |||
| * =========== | |||
| * | |||
| @@ -120,10 +120,10 @@ | |||
| *> \verbatim | |||
| *> SENSE is CHARACTER*1 | |||
| *> 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'. | |||
| *> \endverbatim | |||
| *> | |||
| @@ -117,7 +117,7 @@ | |||
| *> \param[in] MV | |||
| *> \verbatim | |||
| *> 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. | |||
| *> If JOBV = 'N', then MV is not referenced. | |||
| *> \endverbatim | |||
| @@ -125,9 +125,9 @@ | |||
| *> \param[in,out] V | |||
| *> \verbatim | |||
| *> V is COMPLEX 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. | |||
| *> 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. | |||
| *> If JOBV = 'N', then V is not referenced. | |||
| *> \endverbatim | |||
| @@ -136,8 +136,8 @@ | |||
| *> \verbatim | |||
| *> LDV is INTEGER | |||
| *> 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 | |||
| *> | |||
| *> \param[in] EPS | |||
| @@ -157,7 +157,7 @@ | |||
| *> TOL is REAL | |||
| *> TOL is the threshold for Jacobi rotations. For a pair | |||
| *> 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 | |||
| *> | |||
| *> \param[in] NSWEEP | |||
| @@ -175,14 +175,14 @@ | |||
| *> \param[in] LWORK | |||
| *> \verbatim | |||
| *> LWORK is INTEGER | |||
| *> LWORK is the dimension of WORK. LWORK .GE. M. | |||
| *> LWORK is the dimension of WORK. LWORK >= M. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[out] INFO | |||
| *> \verbatim | |||
| *> 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 | |||
| * | |||
| * Authors: | |||
| @@ -61,7 +61,7 @@ | |||
| *> 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 | |||
| *> 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 | |||
| *> is given in TOL. | |||
| *> \endverbatim | |||
| @@ -147,7 +147,7 @@ | |||
| *> \param[in] MV | |||
| *> \verbatim | |||
| *> 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. | |||
| *> If JOBV = 'N', then MV is not referenced. | |||
| *> \endverbatim | |||
| @@ -155,9 +155,9 @@ | |||
| *> \param[in,out] V | |||
| *> \verbatim | |||
| *> V is COMPLEX 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. | |||
| *> 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. | |||
| *> If JOBV = 'N', then V is not referenced. | |||
| *> \endverbatim | |||
| @@ -166,8 +166,8 @@ | |||
| *> \verbatim | |||
| *> LDV is INTEGER | |||
| *> 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 | |||
| *> | |||
| *> \param[in] EPS | |||
| @@ -187,7 +187,7 @@ | |||
| *> TOL is REAL | |||
| *> TOL is the threshold for Jacobi rotations. For a pair | |||
| *> 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 | |||
| *> | |||
| *> \param[in] NSWEEP | |||
| @@ -205,14 +205,14 @@ | |||
| *> \param[in] LWORK | |||
| *> \verbatim | |||
| *> LWORK is INTEGER | |||
| *> LWORK is the dimension of WORK. LWORK .GE. M. | |||
| *> LWORK is the dimension of WORK. LWORK >= M. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[out] INFO | |||
| *> \verbatim | |||
| *> 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 | |||
| * | |||
| * Authors: | |||
| @@ -1,26 +1,26 @@ | |||
| *> \brief \b CHB2ST_KERNELS | |||
| * | |||
| * @generated from zhb2st_kernels.f, fortran z -> c, Wed Dec 7 08:22:40 2016 | |||
| * | |||
| * | |||
| * =========== DOCUMENTATION =========== | |||
| * | |||
| * Online html documentation available at | |||
| * http://www.netlib.org/lapack/explore-html/ | |||
| * Online html documentation available at | |||
| * http://www.netlib.org/lapack/explore-html/ | |||
| * | |||
| *> \htmlonly | |||
| *> Download CHB2ST_KERNELS + dependencies | |||
| *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/chb2st_kernels.f"> | |||
| *> [TGZ]</a> | |||
| *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/chb2st_kernels.f"> | |||
| *> [ZIP]</a> | |||
| *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/chb2st_kernels.f"> | |||
| *> Download CHB2ST_KERNELS + dependencies | |||
| *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/chb2st_kernels.f"> | |||
| *> [TGZ]</a> | |||
| *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/chb2st_kernels.f"> | |||
| *> [ZIP]</a> | |||
| *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/chb2st_kernels.f"> | |||
| *> [TXT]</a> | |||
| *> \endhtmlonly | |||
| *> \endhtmlonly | |||
| * | |||
| * Definition: | |||
| * =========== | |||
| * | |||
| * SUBROUTINE CHB2ST_KERNELS( UPLO, WANTZ, TTYPE, | |||
| * SUBROUTINE CHB2ST_KERNELS( UPLO, WANTZ, TTYPE, | |||
| * ST, ED, SWEEP, N, NB, IB, | |||
| * A, LDA, V, TAU, LDVT, WORK) | |||
| * | |||
| @@ -32,9 +32,9 @@ | |||
| * INTEGER TTYPE, ST, ED, SWEEP, N, NB, IB, LDA, LDVT | |||
| * .. | |||
| * .. Array Arguments .. | |||
| * COMPLEX A( LDA, * ), V( * ), | |||
| * COMPLEX A( LDA, * ), V( * ), | |||
| * TAU( * ), WORK( * ) | |||
| * | |||
| * | |||
| *> \par Purpose: | |||
| * ============= | |||
| *> | |||
| @@ -124,7 +124,7 @@ | |||
| *> LDVT is INTEGER. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array. Workspace of size nb. | |||
| *> \endverbatim | |||
| @@ -147,7 +147,7 @@ | |||
| *> http://doi.acm.org/10.1145/2063384.2063394 | |||
| *> | |||
| *> A. Haidar, J. Kurzak, P. Luszczek, 2013. | |||
| *> An improved parallel singular value algorithm and its implementation | |||
| *> An improved parallel singular value algorithm and its implementation | |||
| *> for multicore hardware, In Proceedings of 2013 International Conference | |||
| *> for High Performance Computing, Networking, Storage and Analysis (SC '13). | |||
| *> Denver, Colorado, USA, 2013. | |||
| @@ -155,16 +155,16 @@ | |||
| *> http://doi.acm.org/10.1145/2503210.2503292 | |||
| *> | |||
| *> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. | |||
| *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure | |||
| *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure | |||
| *> calculations based on fine-grained memory aware tasks. | |||
| *> International Journal of High Performance Computing Applications. | |||
| *> Volume 28 Issue 2, Pages 196-209, May 2014. | |||
| *> http://hpc.sagepub.com/content/28/2/196 | |||
| *> http://hpc.sagepub.com/content/28/2/196 | |||
| *> | |||
| *> \endverbatim | |||
| *> | |||
| * ===================================================================== | |||
| SUBROUTINE CHB2ST_KERNELS( UPLO, WANTZ, TTYPE, | |||
| SUBROUTINE CHB2ST_KERNELS( UPLO, WANTZ, TTYPE, | |||
| $ ST, ED, SWEEP, N, NB, IB, | |||
| $ A, LDA, V, TAU, LDVT, WORK) | |||
| * | |||
| @@ -181,7 +181,7 @@ | |||
| INTEGER TTYPE, ST, ED, SWEEP, N, NB, IB, LDA, LDVT | |||
| * .. | |||
| * .. Array Arguments .. | |||
| COMPLEX A( LDA, * ), V( * ), | |||
| COMPLEX A( LDA, * ), V( * ), | |||
| $ TAU( * ), WORK( * ) | |||
| * .. | |||
| * | |||
| @@ -195,8 +195,8 @@ | |||
| * .. Local Scalars .. | |||
| LOGICAL UPPER | |||
| INTEGER I, J1, J2, LM, LN, VPOS, TAUPOS, | |||
| $ DPOS, OFDPOS, AJETER | |||
| COMPLEX CTMP | |||
| $ DPOS, OFDPOS, AJETER | |||
| COMPLEX CTMP | |||
| * .. | |||
| * .. External Subroutines .. | |||
| EXTERNAL CLARFG, CLARFX, CLARFY | |||
| @@ -209,7 +209,7 @@ | |||
| * .. | |||
| * .. | |||
| * .. Executable Statements .. | |||
| * | |||
| * | |||
| AJETER = IB + LDVT | |||
| UPPER = LSAME( UPLO, 'U' ) | |||
| @@ -240,10 +240,10 @@ | |||
| V( VPOS ) = ONE | |||
| DO 10 I = 1, LM-1 | |||
| V( VPOS+I ) = CONJG( A( OFDPOS-I, ST+I ) ) | |||
| A( OFDPOS-I, ST+I ) = ZERO | |||
| A( OFDPOS-I, ST+I ) = ZERO | |||
| 10 CONTINUE | |||
| CTMP = CONJG( A( OFDPOS, ST ) ) | |||
| CALL CLARFG( LM, CTMP, V( VPOS+1 ), 1, | |||
| CALL CLARFG( LM, CTMP, V( VPOS+1 ), 1, | |||
| $ TAU( TAUPOS ) ) | |||
| A( OFDPOS, ST ) = CTMP | |||
| * | |||
| @@ -281,14 +281,14 @@ | |||
| * | |||
| V( VPOS ) = ONE | |||
| DO 30 I = 1, LM-1 | |||
| V( VPOS+I ) = | |||
| V( VPOS+I ) = | |||
| $ CONJG( A( DPOS-NB-I, J1+I ) ) | |||
| A( DPOS-NB-I, J1+I ) = ZERO | |||
| 30 CONTINUE | |||
| CTMP = CONJG( A( DPOS-NB, J1 ) ) | |||
| CALL CLARFG( LM, CTMP, V( VPOS+1 ), 1, TAU( TAUPOS ) ) | |||
| A( DPOS-NB, J1 ) = CTMP | |||
| * | |||
| * | |||
| CALL CLARFX( 'Right', LN-1, LM, V( VPOS ), | |||
| $ TAU( TAUPOS ), | |||
| $ A( DPOS-NB+1, J1 ), LDA-1, WORK) | |||
| @@ -296,9 +296,9 @@ | |||
| ENDIF | |||
| * | |||
| * Lower case | |||
| * | |||
| * | |||
| ELSE | |||
| * | |||
| * | |||
| IF( WANTZ ) THEN | |||
| VPOS = MOD( SWEEP-1, 2 ) * N + ST | |||
| TAUPOS = MOD( SWEEP-1, 2 ) * N + ST | |||
| @@ -313,9 +313,9 @@ | |||
| V( VPOS ) = ONE | |||
| DO 20 I = 1, LM-1 | |||
| V( VPOS+I ) = A( OFDPOS+I, ST-1 ) | |||
| A( OFDPOS+I, ST-1 ) = ZERO | |||
| A( OFDPOS+I, ST-1 ) = ZERO | |||
| 20 CONTINUE | |||
| CALL CLARFG( LM, A( OFDPOS, ST-1 ), V( VPOS+1 ), 1, | |||
| CALL CLARFG( LM, A( OFDPOS, ST-1 ), V( VPOS+1 ), 1, | |||
| $ TAU( TAUPOS ) ) | |||
| * | |||
| LM = ED - ST + 1 | |||
| @@ -342,7 +342,7 @@ | |||
| LM = J2-J1+1 | |||
| * | |||
| IF( LM.GT.0) THEN | |||
| CALL CLARFX( 'Right', LM, LN, V( VPOS ), | |||
| CALL CLARFX( 'Right', LM, LN, V( VPOS ), | |||
| $ TAU( TAUPOS ), A( DPOS+NB, ST ), | |||
| $ LDA-1, WORK) | |||
| * | |||
| @@ -359,13 +359,13 @@ | |||
| V( VPOS+I ) = A( DPOS+NB+I, ST ) | |||
| A( DPOS+NB+I, ST ) = ZERO | |||
| 40 CONTINUE | |||
| CALL CLARFG( LM, A( DPOS+NB, ST ), V( VPOS+1 ), 1, | |||
| CALL CLARFG( LM, A( DPOS+NB, ST ), V( VPOS+1 ), 1, | |||
| $ TAU( TAUPOS ) ) | |||
| * | |||
| CALL CLARFX( 'Left', LM, LN-1, V( VPOS ), | |||
| CALL CLARFX( 'Left', LM, LN-1, V( VPOS ), | |||
| $ CONJG( TAU( TAUPOS ) ), | |||
| $ A( DPOS+NB-1, ST+1 ), LDA-1, WORK) | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| @@ -374,4 +374,4 @@ | |||
| * | |||
| * END OF CHB2ST_KERNELS | |||
| * | |||
| END | |||
| END | |||
| @@ -19,7 +19,7 @@ | |||
| * =========== | |||
| * | |||
| * SUBROUTINE CHECON_3( UPLO, N, A, LDA, E, IPIV, ANORM, RCOND, | |||
| * WORK, IWORK, INFO ) | |||
| * WORK, INFO ) | |||
| * | |||
| * .. Scalar Arguments .. | |||
| * CHARACTER UPLO | |||
| @@ -27,7 +27,7 @@ | |||
| * REAL ANORM, RCOND | |||
| * .. | |||
| * .. Array Arguments .. | |||
| * INTEGER IPIV( * ), IWORK( * ) | |||
| * INTEGER IPIV( * ) | |||
| * COMPLEX A( LDA, * ), E ( * ), WORK( * ) | |||
| * .. | |||
| * | |||
| @@ -129,11 +129,6 @@ | |||
| *> WORK is COMPLEX array, dimension (2*N) | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[out] IWORK | |||
| *> \verbatim | |||
| *> IWORK is INTEGER array, dimension (N) | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[out] INFO | |||
| *> \verbatim | |||
| *> INFO is INTEGER | |||
| @@ -210,7 +210,7 @@ | |||
| *> eigenvalues are computed to high relative accuracy when | |||
| *> possible in future releases. The current code does not | |||
| *> make any guarantees about high relative accuracy, but | |||
| *> furutre releases will. See J. Barlow and J. Demmel, | |||
| *> future releases will. See J. Barlow and J. Demmel, | |||
| *> "Computing Accurate Eigensystems of Scaled Diagonally | |||
| *> Dominant Matrices", LAPACK Working Note #7, for a discussion | |||
| *> of which matrices define their eigenvalues to high relative | |||
| @@ -217,7 +217,7 @@ | |||
| *> eigenvalues are computed to high relative accuracy when | |||
| *> possible in future releases. The current code does not | |||
| *> make any guarantees about high relative accuracy, but | |||
| *> furutre releases will. See J. Barlow and J. Demmel, | |||
| *> future releases will. See J. Barlow and J. Demmel, | |||
| *> "Computing Accurate Eigensystems of Scaled Diagonally | |||
| *> Dominant Matrices", LAPACK Working Note #7, for a discussion | |||
| *> of which matrices define their eigenvalues to high relative | |||
| @@ -97,6 +97,7 @@ | |||
| *> B is COMPLEX array, dimension (LDB,N) | |||
| *> The triangular factor from the Cholesky factorization of B, | |||
| *> as returned by CPOTRF. | |||
| *> B is modified by the routine but restored on exit. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] LDB | |||
| @@ -97,6 +97,7 @@ | |||
| *> B is COMPLEX array, dimension (LDB,N) | |||
| *> The triangular factor from the Cholesky factorization of B, | |||
| *> as returned by CPOTRF. | |||
| *> B is modified by the routine but restored on exit. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] LDB | |||
| @@ -102,7 +102,7 @@ | |||
| *> \param[in] A | |||
| *> \verbatim | |||
| *> A is COMPLEX array, dimension (LDA,N) | |||
| *> The symmetric matrix A. If UPLO = 'U', the leading N-by-N | |||
| *> The Hermitian matrix A. If UPLO = 'U', the leading N-by-N | |||
| *> upper triangular part of A contains the upper triangular | |||
| *> part of the matrix A, and the strictly lower triangular | |||
| *> part of A is not referenced. If UPLO = 'L', the leading | |||
| @@ -270,7 +270,7 @@ | |||
| *> information as described below. There currently are up to three | |||
| *> pieces of information returned for each right-hand side. If | |||
| *> 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 index in ERR_BNDS_COMP(i,:) corresponds to the ith | |||
| @@ -306,14 +306,14 @@ | |||
| *> \param[in] NPARAMS | |||
| *> \verbatim | |||
| *> 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. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in,out] PARAMS | |||
| *> \verbatim | |||
| *> PARAMS is REAL 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 | |||
| *> parameter. Only positions up to NPARAMS are accessed; defaults | |||
| *> are used for higher-numbered parameters. | |||
| @@ -321,9 +321,9 @@ | |||
| *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | |||
| *> refinement or not. | |||
| *> Default: 1.0 | |||
| *> = 0.0 : No refinement is performed, and no error bounds are | |||
| *> = 0.0: No refinement is performed, and no error bounds are | |||
| *> computed. | |||
| *> = 1.0 : Use the double-precision refinement algorithm, | |||
| *> = 1.0: Use the double-precision refinement algorithm, | |||
| *> possibly with doubled-single computations if the | |||
| *> compilation environment does not support DOUBLE | |||
| *> PRECISION. | |||
| @@ -42,7 +42,7 @@ | |||
| *> matrices. | |||
| *> | |||
| *> Aasen's algorithm is used to factor A as | |||
| *> A = U * T * U**H, if UPLO = 'U', or | |||
| *> A = U**H * T * U, if UPLO = 'U', or | |||
| *> A = L * T * L**H, if UPLO = 'L', | |||
| *> where U (or L) is a product of permutation and unit upper (lower) | |||
| *> triangular matrices, and T is Hermitian and tridiagonal. The factored form | |||
| @@ -86,7 +86,7 @@ | |||
| *> | |||
| *> On exit, if INFO = 0, the tridiagonal matrix T and the | |||
| *> multipliers used to obtain the factor U or L from the | |||
| *> factorization A = U*T*U**H or A = L*T*L**H as computed by | |||
| *> factorization A = U**H*T*U or A = L*T*L**H as computed by | |||
| *> CHETRF_AA. | |||
| *> \endverbatim | |||
| *> | |||
| @@ -230,7 +230,7 @@ | |||
| RETURN | |||
| END IF | |||
| * | |||
| * Compute the factorization A = U*T*U**H or A = L*T*L**H. | |||
| * Compute the factorization A = U**H*T*U or A = L*T*L**H. | |||
| * | |||
| CALL CHETRF_AA( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) | |||
| IF( INFO.EQ.0 ) THEN | |||
| @@ -43,7 +43,7 @@ | |||
| *> matrices. | |||
| *> | |||
| *> Aasen's 2-stage algorithm is used to factor A as | |||
| *> A = U * T * U**H, if UPLO = 'U', or | |||
| *> A = U**H * T * U, if UPLO = 'U', or | |||
| *> A = L * T * L**H, if UPLO = 'L', | |||
| *> where U (or L) is a product of permutation and unit upper (lower) | |||
| *> triangular matrices, and T is Hermitian and band. The matrix T is | |||
| @@ -257,7 +257,7 @@ | |||
| END IF | |||
| * | |||
| * | |||
| * Compute the factorization A = U*T*U**H or A = L*T*L**H. | |||
| * Compute the factorization A = U**H*T*U or A = L*T*L**H. | |||
| * | |||
| CALL CHETRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV, IPIV2, | |||
| $ WORK, LWORK, INFO ) | |||
| @@ -46,7 +46,7 @@ | |||
| *> | |||
| *> CHESVXX uses the diagonal pivoting factorization to compute the | |||
| *> solution to a complex system of linear equations A * X = B, where | |||
| *> A is an N-by-N symmetric matrix and X and B are N-by-NRHS | |||
| *> A is an N-by-N Hermitian matrix and X and B are N-by-NRHS | |||
| *> matrices. | |||
| *> | |||
| *> If requested, both normwise and maximum componentwise error bounds | |||
| @@ -88,7 +88,7 @@ | |||
| *> A = L * D * L**T, if UPLO = 'L', | |||
| *> | |||
| *> where U (or L) is a product of permutation and unit upper (lower) | |||
| *> triangular matrices, and D is symmetric and block diagonal with | |||
| *> triangular matrices, and D is Hermitian and block diagonal with | |||
| *> 1-by-1 and 2-by-2 diagonal blocks. | |||
| *> | |||
| *> 3. If some D(i,i)=0, so that D is exactly singular, then the | |||
| @@ -161,7 +161,7 @@ | |||
| *> \param[in,out] A | |||
| *> \verbatim | |||
| *> A is COMPLEX array, dimension (LDA,N) | |||
| *> The symmetric matrix A. If UPLO = 'U', the leading N-by-N | |||
| *> The Hermitian matrix A. If UPLO = 'U', the leading N-by-N | |||
| *> upper triangular part of A contains the upper triangular | |||
| *> part of the matrix A, and the strictly lower triangular | |||
| *> part of A is not referenced. If UPLO = 'L', the leading | |||
| @@ -378,7 +378,7 @@ | |||
| *> information as described below. There currently are up to three | |||
| *> pieces of information returned for each right-hand side. If | |||
| *> 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 index in ERR_BNDS_COMP(i,:) corresponds to the ith | |||
| @@ -414,14 +414,14 @@ | |||
| *> \param[in] NPARAMS | |||
| *> \verbatim | |||
| *> 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. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in,out] PARAMS | |||
| *> \verbatim | |||
| *> PARAMS is REAL 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 | |||
| *> parameter. Only positions up to NPARAMS are accessed; defaults | |||
| *> are used for higher-numbered parameters. | |||
| @@ -429,9 +429,9 @@ | |||
| *> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative | |||
| *> refinement or not. | |||
| *> Default: 1.0 | |||
| *> = 0.0 : No refinement is performed, and no error bounds are | |||
| *> = 0.0: No refinement is performed, and no error bounds are | |||
| *> computed. | |||
| *> = 1.0 : Use the double-precision refinement algorithm, | |||
| *> = 1.0: Use the double-precision refinement algorithm, | |||
| *> possibly with doubled-single computations if the | |||
| *> compilation environment does not support DOUBLE | |||
| *> PRECISION. | |||
| @@ -322,7 +322,7 @@ | |||
| * | |||
| * Factorize A as U*D*U**H using the upper triangle of A | |||
| * | |||
| * Initilize the first entry of array E, where superdiagonal | |||
| * Initialize the first entry of array E, where superdiagonal | |||
| * elements of D are stored | |||
| * | |||
| E( 1 ) = CZERO | |||
| @@ -676,7 +676,7 @@ | |||
| * | |||
| * Factorize A as L*D*L**H using the lower triangle of A | |||
| * | |||
| * Initilize the unused last entry of the subdiagonal array E. | |||
| * Initialize the unused last entry of the subdiagonal array E. | |||
| * | |||
| E( N ) = CZERO | |||
| * | |||
| @@ -123,23 +123,22 @@ | |||
| *> | |||
| *> \param[out] HOUS2 | |||
| *> \verbatim | |||
| *> HOUS2 is COMPLEX array, dimension LHOUS2, that | |||
| *> store the Householder representation of the stage2 | |||
| *> HOUS2 is COMPLEX array, dimension (LHOUS2) | |||
| *> Stores the Householder representation of the stage2 | |||
| *> band to tridiagonal. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] LHOUS2 | |||
| *> \verbatim | |||
| *> LHOUS2 is INTEGER | |||
| *> The dimension of the array HOUS2. LHOUS2 = MAX(1, dimension) | |||
| *> The dimension of the array HOUS2. | |||
| *> If LWORK = -1, or LHOUS2=-1, | |||
| *> then a query is assumed; the routine | |||
| *> only calculates the optimal size of the HOUS2 array, returns | |||
| *> this value as the first entry of the HOUS2 array, and no error | |||
| *> message related to LHOUS2 is issued by XERBLA. | |||
| *> LHOUS2 = MAX(1, dimension) where | |||
| *> dimension = 4*N if VECT='N' | |||
| *> not available now if VECT='H' | |||
| *> If VECT='N', LHOUS2 = max(1, 4*n); | |||
| *> if VECT='V', option not yet available. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[out] WORK | |||
| @@ -151,7 +150,7 @@ | |||
| *> \verbatim | |||
| *> LWORK is INTEGER | |||
| *> The dimension of the array WORK. LWORK = MAX(1, dimension) | |||
| *> If LWORK = -1, or LHOUS2=-1, | |||
| *> If LWORK = -1, or LHOUS2 = -1, | |||
| *> then a workspace query is assumed; the routine | |||
| *> only calculates the optimal size of the WORK array, returns | |||
| *> this value as the first entry of the WORK array, and no error | |||
| @@ -50,9 +50,9 @@ | |||
| * Arguments: | |||
| * ========== | |||
| * | |||
| *> \param[in] STAGE | |||
| *> \param[in] STAGE1 | |||
| *> \verbatim | |||
| *> STAGE is CHARACTER*1 | |||
| *> STAGE1 is CHARACTER*1 | |||
| *> = 'N': "No": to mention that the stage 1 of the reduction | |||
| *> from dense to band using the chetrd_he2hb routine | |||
| *> was not called before this routine to reproduce AB. | |||
| @@ -512,7 +512,7 @@ C END IF | |||
| * | |||
| * Call the kernel | |||
| * | |||
| #if defined(_OPENMP) && _OPENMP >= 201307 | |||
| #if defined(_OPENMP) | |||
| IF( TTYPE.NE.1 ) THEN | |||
| !$OMP TASK DEPEND(in:WORK(MYID+SHIFT-1)) | |||
| !$OMP$ DEPEND(in:WORK(MYID-1)) | |||
| @@ -363,7 +363,7 @@ | |||
| * | |||
| * | |||
| * Set the workspace of the triangular matrix T to zero once such a | |||
| * way everytime T is generated the upper/lower portion will be always zero | |||
| * way every time T is generated the upper/lower portion will be always zero | |||
| * | |||
| CALL CLASET( "A", LDT, KD, ZERO, ZERO, WORK( TPOS ), LDT ) | |||
| * | |||
| @@ -37,7 +37,7 @@ | |||
| *> CHETRF_AA computes the factorization of a complex hermitian matrix A | |||
| *> using the Aasen's algorithm. The form of the factorization is | |||
| *> | |||
| *> A = U*T*U**H or A = L*T*L**H | |||
| *> A = U**H*T*U or A = L*T*L**H | |||
| *> | |||
| *> where U (or L) is a product of permutation and unit upper (lower) | |||
| *> triangular matrices, and T is a hermitian tridiagonal matrix. | |||
| @@ -223,7 +223,7 @@ | |||
| IF( UPPER ) THEN | |||
| * | |||
| * ..................................................... | |||
| * Factorize A as L*D*L**H using the upper triangle of A | |||
| * Factorize A as U**H*D*U using the upper triangle of A | |||
| * ..................................................... | |||
| * | |||
| * copy first row A(1, 1:N) into H(1:n) (stored in WORK(1:N)) | |||
| @@ -256,7 +256,7 @@ | |||
| $ A( MAX(1, J), J+1 ), LDA, | |||
| $ IPIV( J+1 ), WORK, N, WORK( N*NB+1 ) ) | |||
| * | |||
| * Ajust IPIV and apply it back (J-th step picks (J+1)-th pivot) | |||
| * Adjust IPIV and apply it back (J-th step picks (J+1)-th pivot) | |||
| * | |||
| DO J2 = J+2, MIN(N, J+JB+1) | |||
| IPIV( J2 ) = IPIV( J2 ) + J | |||
| @@ -376,7 +376,7 @@ | |||
| $ A( J+1, MAX(1, J) ), LDA, | |||
| $ IPIV( J+1 ), WORK, N, WORK( N*NB+1 ) ) | |||
| * | |||
| * Ajust IPIV and apply it back (J-th step picks (J+1)-th pivot) | |||
| * Adjust IPIV and apply it back (J-th step picks (J+1)-th pivot) | |||
| * | |||
| DO J2 = J+2, MIN(N, J+JB+1) | |||
| IPIV( J2 ) = IPIV( J2 ) + J | |||
| @@ -38,7 +38,7 @@ | |||
| *> CHETRF_AA_2STAGE computes the factorization of a real hermitian matrix A | |||
| *> using the Aasen's algorithm. The form of the factorization is | |||
| *> | |||
| *> A = U*T*U**T or A = L*T*L**T | |||
| *> A = U**T*T*U or A = L*T*L**T | |||
| *> | |||
| *> where U (or L) is a product of permutation and unit upper (lower) | |||
| *> triangular matrices, and T is a hermitian band matrix with the | |||
| @@ -277,7 +277,7 @@ | |||
| IF( UPPER ) THEN | |||
| * | |||
| * ..................................................... | |||
| * Factorize A as L*D*L**T using the upper triangle of A | |||
| * Factorize A as U**T*D*U using the upper triangle of A | |||
| * ..................................................... | |||
| * | |||
| DO J = 0, NT-1 | |||
| @@ -453,14 +453,17 @@ c END IF | |||
| * > Apply pivots to previous columns of L | |||
| CALL CSWAP( K-1, A( (J+1)*NB+1, I1 ), 1, | |||
| $ A( (J+1)*NB+1, I2 ), 1 ) | |||
| * > Swap A(I1+1:M, I1) with A(I2, I1+1:M) | |||
| CALL CSWAP( I2-I1-1, A( I1, I1+1 ), LDA, | |||
| $ A( I1+1, I2 ), 1 ) | |||
| * > Swap A(I1+1:M, I1) with A(I2, I1+1:M) | |||
| IF( I2.GT.(I1+1) ) THEN | |||
| CALL CSWAP( I2-I1-1, A( I1, I1+1 ), LDA, | |||
| $ A( I1+1, I2 ), 1 ) | |||
| CALL CLACGV( I2-I1-1, A( I1+1, I2 ), 1 ) | |||
| END IF | |||
| CALL CLACGV( I2-I1, A( I1, I1+1 ), LDA ) | |||
| CALL CLACGV( I2-I1-1, A( I1+1, I2 ), 1 ) | |||
| * > Swap A(I2+1:M, I1) with A(I2+1:M, I2) | |||
| CALL CSWAP( N-I2, A( I1, I2+1 ), LDA, | |||
| $ A( I2, I2+1 ), LDA ) | |||
| IF( I2.LT.N ) | |||
| $ CALL CSWAP( N-I2, A( I1, I2+1 ), LDA, | |||
| $ A( I2, I2+1 ), LDA ) | |||
| * > Swap A(I1, I1) with A(I2, I2) | |||
| PIV = A( I1, I1 ) | |||
| A( I1, I1 ) = A( I2, I2 ) | |||
| @@ -630,14 +633,17 @@ c END IF | |||
| * > Apply pivots to previous columns of L | |||
| CALL CSWAP( K-1, A( I1, (J+1)*NB+1 ), LDA, | |||
| $ A( I2, (J+1)*NB+1 ), LDA ) | |||
| * > Swap A(I1+1:M, I1) with A(I2, I1+1:M) | |||
| CALL CSWAP( I2-I1-1, A( I1+1, I1 ), 1, | |||
| $ A( I2, I1+1 ), LDA ) | |||
| * > Swap A(I1+1:M, I1) with A(I2, I1+1:M) | |||
| IF( I2.GT.(I1+1) ) THEN | |||
| CALL CSWAP( I2-I1-1, A( I1+1, I1 ), 1, | |||
| $ A( I2, I1+1 ), LDA ) | |||
| CALL CLACGV( I2-I1-1, A( I2, I1+1 ), LDA ) | |||
| END IF | |||
| CALL CLACGV( I2-I1, A( I1+1, I1 ), 1 ) | |||
| CALL CLACGV( I2-I1-1, A( I2, I1+1 ), LDA ) | |||
| * > Swap A(I2+1:M, I1) with A(I2+1:M, I2) | |||
| CALL CSWAP( N-I2, A( I2+1, I1 ), 1, | |||
| $ A( I2+1, I2 ), 1 ) | |||
| IF( I2.LT.N ) | |||
| $ CALL CSWAP( N-I2, A( I2+1, I1 ), 1, | |||
| $ A( I2+1, I2 ), 1 ) | |||
| * > Swap A(I1, I1) with A(I2, I2) | |||
| PIV = A( I1, I1 ) | |||
| A( I1, I1 ) = A( I2, I2 ) | |||
| @@ -62,7 +62,7 @@ | |||
| *> \param[in,out] A | |||
| *> \verbatim | |||
| *> A is COMPLEX array, dimension (LDA,N) | |||
| *> On entry, the NB diagonal matrix D and the multipliers | |||
| *> On entry, the block diagonal matrix D and the multipliers | |||
| *> used to obtain the factor U or L as computed by CHETRF. | |||
| *> | |||
| *> On exit, if INFO = 0, the (symmetric) inverse of the original | |||
| @@ -82,7 +82,7 @@ | |||
| *> \param[in] IPIV | |||
| *> \verbatim | |||
| *> IPIV is INTEGER array, dimension (N) | |||
| *> Details of the interchanges and the NB structure of D | |||
| *> Details of the interchanges and the block structure of D | |||
| *> as determined by CHETRF. | |||
| *> \endverbatim | |||
| *> | |||
| @@ -37,7 +37,7 @@ | |||
| *> \verbatim | |||
| *> | |||
| *> CHETRS_AA solves a system of linear equations A*X = B with a complex | |||
| *> hermitian matrix A using the factorization A = U*T*U**H or | |||
| *> hermitian matrix A using the factorization A = U**H*T*U or | |||
| *> A = L*T*L**H computed by CHETRF_AA. | |||
| *> \endverbatim | |||
| * | |||
| @@ -49,7 +49,7 @@ | |||
| *> UPLO is CHARACTER*1 | |||
| *> Specifies whether the details of the factorization are stored | |||
| *> as an upper or lower triangular matrix. | |||
| *> = 'U': Upper triangular, form is A = U*T*U**H; | |||
| *> = 'U': Upper triangular, form is A = U**H*T*U; | |||
| *> = 'L': Lower triangular, form is A = L*T*L**H. | |||
| *> \endverbatim | |||
| *> | |||
| @@ -97,14 +97,16 @@ | |||
| *> The leading dimension of the array B. LDB >= max(1,N). | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is DOUBLE array, dimension (MAX(1,LWORK)) | |||
| *> WORK is COMPLEX array, dimension (MAX(1,LWORK)) | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] LWORK | |||
| *> \verbatim | |||
| *> LWORK is INTEGER, LWORK >= MAX(1,3*N-2). | |||
| *> LWORK is INTEGER | |||
| *> The dimension of the array WORK. LWORK >= max(1,3*N-2). | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[out] INFO | |||
| *> \verbatim | |||
| @@ -198,24 +200,31 @@ | |||
| * | |||
| IF( UPPER ) THEN | |||
| * | |||
| * Solve A*X = B, where A = U*T*U**T. | |||
| * Solve A*X = B, where A = U**H*T*U. | |||
| * | |||
| * 1) Forward substitution with U**H | |||
| * | |||
| IF( N.GT.1 ) THEN | |||
| * | |||
| * Pivot, P**T * B -> B | |||
| * | |||
| * P**T * B | |||
| K = 1 | |||
| DO WHILE ( K.LE.N ) | |||
| KP = IPIV( K ) | |||
| IF( KP.NE.K ) | |||
| $ CALL CSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) | |||
| K = K + 1 | |||
| END DO | |||
| * | |||
| K = 1 | |||
| DO WHILE ( K.LE.N ) | |||
| KP = IPIV( K ) | |||
| IF( KP.NE.K ) | |||
| $ CALL CSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) | |||
| K = K + 1 | |||
| END DO | |||
| * Compute U**H \ B -> B [ (U**H \P**T * B) ] | |||
| * | |||
| * Compute (U \P**T * B) -> B [ (U \P**T * B) ] | |||
| CALL CTRSM( 'L', 'U', 'C', 'U', N-1, NRHS, ONE, A( 1, 2 ), | |||
| $ LDA, B( 2, 1 ), LDB) | |||
| END IF | |||
| * | |||
| CALL CTRSM('L', 'U', 'C', 'U', N-1, NRHS, ONE, A( 1, 2 ), LDA, | |||
| $ B( 2, 1 ), LDB) | |||
| * 2) Solve with triangular matrix T | |||
| * | |||
| * Compute T \ B -> B [ T \ (U \P**T * B) ] | |||
| * Compute T \ B -> B [ T \ (U**H \P**T * B) ] | |||
| * | |||
| CALL CLACPY( 'F', 1, N, A(1, 1), LDA+1, WORK(N), 1) | |||
| IF( N.GT.1 ) THEN | |||
| @@ -226,65 +235,82 @@ | |||
| CALL CGTSV(N, NRHS, WORK(1), WORK(N), WORK(2*N), B, LDB, | |||
| $ INFO) | |||
| * | |||
| * Compute (U**T \ B) -> B [ U**T \ (T \ (U \P**T * B) ) ] | |||
| * 3) Backward substitution with U | |||
| * | |||
| IF( N.GT.1 ) THEN | |||
| * | |||
| CALL CTRSM( 'L', 'U', 'N', 'U', N-1, NRHS, ONE, A( 1, 2 ), LDA, | |||
| $ B(2, 1), LDB) | |||
| * Compute U \ B -> B [ U \ (T \ (U**H \P**T * B) ) ] | |||
| * | |||
| * Pivot, P * B [ P * (U**T \ (T \ (U \P**T * B) )) ] | |||
| CALL CTRSM( 'L', 'U', 'N', 'U', N-1, NRHS, ONE, A( 1, 2 ), | |||
| $ LDA, B(2, 1), LDB) | |||
| * | |||
| K = N | |||
| DO WHILE ( K.GE.1 ) | |||
| KP = IPIV( K ) | |||
| IF( KP.NE.K ) | |||
| $ CALL CSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) | |||
| K = K - 1 | |||
| END DO | |||
| * Pivot, P * B -> B [ P * (U \ (T \ (U**H \P**T * B) )) ] | |||
| * | |||
| K = N | |||
| DO WHILE ( K.GE.1 ) | |||
| KP = IPIV( K ) | |||
| IF( KP.NE.K ) | |||
| $ CALL CSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) | |||
| K = K - 1 | |||
| END DO | |||
| END IF | |||
| * | |||
| ELSE | |||
| * | |||
| * Solve A*X = B, where A = L*T*L**T. | |||
| * Solve A*X = B, where A = L*T*L**H. | |||
| * | |||
| * Pivot, P**T * B | |||
| * 1) Forward substitution with L | |||
| * | |||
| K = 1 | |||
| DO WHILE ( K.LE.N ) | |||
| KP = IPIV( K ) | |||
| IF( KP.NE.K ) | |||
| $ CALL CSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) | |||
| K = K + 1 | |||
| END DO | |||
| IF( N.GT.1 ) THEN | |||
| * | |||
| * Pivot, P**T * B -> B | |||
| * | |||
| K = 1 | |||
| DO WHILE ( K.LE.N ) | |||
| KP = IPIV( K ) | |||
| IF( KP.NE.K ) | |||
| $ CALL CSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) | |||
| K = K + 1 | |||
| END DO | |||
| * | |||
| * Compute (L \P**T * B) -> B [ (L \P**T * B) ] | |||
| * Compute L \ B -> B [ (L \P**T * B) ] | |||
| * | |||
| CALL CTRSM( 'L', 'L', 'N', 'U', N-1, NRHS, ONE, A( 2, 1), | |||
| $ LDA, B(2, 1), LDB ) | |||
| END IF | |||
| * | |||
| CALL CTRSM( 'L', 'L', 'N', 'U', N-1, NRHS, ONE, A( 2, 1), LDA, | |||
| $ B(2, 1), LDB) | |||
| * 2) Solve with triangular matrix T | |||
| * | |||
| * Compute T \ B -> B [ T \ (L \P**T * B) ] | |||
| * | |||
| CALL CLACPY( 'F', 1, N, A(1, 1), LDA+1, WORK(N), 1) | |||
| IF( N.GT.1 ) THEN | |||
| CALL CLACPY( 'F', 1, N-1, A( 2, 1 ), LDA+1, WORK( 1 ), 1) | |||
| CALL CLACPY( 'F', 1, N-1, A( 2, 1 ), LDA+1, WORK( 1 ), 1 ) | |||
| CALL CLACPY( 'F', 1, N-1, A( 2, 1 ), LDA+1, WORK( 2*N ), 1) | |||
| CALL CLACGV( N-1, WORK( 2*N ), 1 ) | |||
| END IF | |||
| CALL CGTSV(N, NRHS, WORK(1), WORK(N), WORK(2*N), B, LDB, | |||
| $ INFO) | |||
| * | |||
| * Compute (L**T \ B) -> B [ L**T \ (T \ (L \P**T * B) ) ] | |||
| * 3) Backward substitution with L**H | |||
| * | |||
| CALL CTRSM( 'L', 'L', 'C', 'U', N-1, NRHS, ONE, A( 2, 1 ), LDA, | |||
| $ B( 2, 1 ), LDB) | |||
| IF( N.GT.1 ) THEN | |||
| * | |||
| * Compute (L**H \ B) -> B [ L**H \ (T \ (L \P**T * B) ) ] | |||
| * | |||
| * Pivot, P * B [ P * (L**T \ (T \ (L \P**T * B) )) ] | |||
| CALL CTRSM( 'L', 'L', 'C', 'U', N-1, NRHS, ONE, A( 2, 1 ), | |||
| $ LDA, B( 2, 1 ), LDB ) | |||
| * | |||
| K = N | |||
| DO WHILE ( K.GE.1 ) | |||
| KP = IPIV( K ) | |||
| IF( KP.NE.K ) | |||
| $ CALL CSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) | |||
| K = K - 1 | |||
| END DO | |||
| * Pivot, P * B -> B [ P * (L**H \ (T \ (L \P**T * B) )) ] | |||
| * | |||
| K = N | |||
| DO WHILE ( K.GE.1 ) | |||
| KP = IPIV( K ) | |||
| IF( KP.NE.K ) | |||
| $ CALL CSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB ) | |||
| K = K - 1 | |||
| END DO | |||
| END IF | |||
| * | |||
| END IF | |||
| * | |||
| @@ -38,7 +38,7 @@ | |||
| *> \verbatim | |||
| *> | |||
| *> CHETRS_AA_2STAGE solves a system of linear equations A*X = B with a real | |||
| *> hermitian matrix A using the factorization A = U*T*U**T or | |||
| *> hermitian matrix A using the factorization A = U**T*T*U or | |||
| *> A = L*T*L**T computed by CHETRF_AA_2STAGE. | |||
| *> \endverbatim | |||
| * | |||
| @@ -50,7 +50,7 @@ | |||
| *> UPLO is CHARACTER*1 | |||
| *> Specifies whether the details of the factorization are stored | |||
| *> as an upper or lower triangular matrix. | |||
| *> = 'U': Upper triangular, form is A = U*T*U**T; | |||
| *> = 'U': Upper triangular, form is A = U**T*T*U; | |||
| *> = 'L': Lower triangular, form is A = L*T*L**T. | |||
| *> \endverbatim | |||
| *> | |||
| @@ -210,15 +210,15 @@ | |||
| * | |||
| IF( UPPER ) THEN | |||
| * | |||
| * Solve A*X = B, where A = U*T*U**T. | |||
| * Solve A*X = B, where A = U**T*T*U. | |||
| * | |||
| IF( N.GT.NB ) THEN | |||
| * | |||
| * Pivot, P**T * B | |||
| * Pivot, P**T * B -> B | |||
| * | |||
| CALL CLASWP( NRHS, B, LDB, NB+1, N, IPIV, 1 ) | |||
| * | |||
| * Compute (U**T \P**T * B) -> B [ (U**T \P**T * B) ] | |||
| * Compute (U**T \ B) -> B [ (U**T \P**T * B) ] | |||
| * | |||
| CALL CTRSM( 'L', 'U', 'C', 'U', N-NB, NRHS, ONE, A(1, NB+1), | |||
| $ LDA, B(NB+1, 1), LDB) | |||
| @@ -69,7 +69,7 @@ | |||
| *> \param[in] N | |||
| *> \verbatim | |||
| *> N is INTEGER | |||
| *> The order of the matrix H. N .GE. 0. | |||
| *> The order of the matrix H. N >= 0. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] ILO | |||
| @@ -86,7 +86,7 @@ | |||
| *> set by a previous call to CGEBAL, and then passed to ZGEHRD | |||
| *> when the matrix output by CGEBAL is reduced to Hessenberg | |||
| *> form. Otherwise ILO and IHI should be set to 1 and N | |||
| *> respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N. | |||
| *> respectively. If N > 0, then 1 <= ILO <= IHI <= N. | |||
| *> If N = 0, then ILO = 1 and IHI = 0. | |||
| *> \endverbatim | |||
| *> | |||
| @@ -98,17 +98,17 @@ | |||
| *> triangular matrix T from the Schur decomposition (the | |||
| *> Schur form). If INFO = 0 and JOB = 'E', the contents of | |||
| *> H are unspecified on exit. (The output value of H when | |||
| *> INFO.GT.0 is given under the description of INFO below.) | |||
| *> INFO > 0 is given under the description of INFO below.) | |||
| *> | |||
| *> Unlike earlier versions of CHSEQR, this subroutine may | |||
| *> explicitly H(i,j) = 0 for i.GT.j and j = 1, 2, ... ILO-1 | |||
| *> explicitly H(i,j) = 0 for i > j and j = 1, 2, ... ILO-1 | |||
| *> or j = IHI+1, IHI+2, ... N. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] LDH | |||
| *> \verbatim | |||
| *> LDH is INTEGER | |||
| *> The leading dimension of the array H. LDH .GE. max(1,N). | |||
| *> The leading dimension of the array H. LDH >= max(1,N). | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[out] W | |||
| @@ -131,7 +131,7 @@ | |||
| *> if INFO = 0, Z contains Q*Z. | |||
| *> Normally Q is the unitary matrix generated by CUNGHR | |||
| *> after the call to CGEHRD which formed the Hessenberg matrix | |||
| *> H. (The output value of Z when INFO.GT.0 is given under | |||
| *> H. (The output value of Z when INFO > 0 is given under | |||
| *> the description of INFO below.) | |||
| *> \endverbatim | |||
| *> | |||
| @@ -139,7 +139,7 @@ | |||
| *> \verbatim | |||
| *> LDZ is INTEGER | |||
| *> The leading dimension of the array Z. if COMPZ = 'I' or | |||
| *> COMPZ = 'V', then LDZ.GE.MAX(1,N). Otherwize, LDZ.GE.1. | |||
| *> COMPZ = 'V', then LDZ >= MAX(1,N). Otherwise, LDZ >= 1. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[out] WORK | |||
| @@ -152,7 +152,7 @@ | |||
| *> \param[in] LWORK | |||
| *> \verbatim | |||
| *> LWORK is INTEGER | |||
| *> The dimension of the array WORK. LWORK .GE. max(1,N) | |||
| *> The dimension of the array WORK. LWORK >= max(1,N) | |||
| *> is sufficient and delivers very good and sometimes | |||
| *> optimal performance. However, LWORK as large as 11*N | |||
| *> may be required for optimal performance. A workspace | |||
| @@ -170,21 +170,21 @@ | |||
| *> \param[out] INFO | |||
| *> \verbatim | |||
| *> INFO is INTEGER | |||
| *> = 0: successful exit | |||
| *> .LT. 0: if INFO = -i, the i-th argument had an illegal | |||
| *> = 0: successful exit | |||
| *> < 0: if INFO = -i, the i-th argument had an illegal | |||
| *> value | |||
| *> .GT. 0: if INFO = i, CHSEQR failed to compute all of | |||
| *> the eigenvalues. Elements 1:ilo-1 and i+1:n of WR | |||
| *> and WI contain those eigenvalues which have been | |||
| *> > 0: if INFO = i, CHSEQR failed to compute all of | |||
| *> the eigenvalues. Elements 1:ilo-1 and i+1:n of W | |||
| *> contain those eigenvalues which have been | |||
| *> successfully computed. (Failures are rare.) | |||
| *> | |||
| *> If INFO .GT. 0 and JOB = 'E', then on exit, the | |||
| *> If INFO > 0 and JOB = 'E', then on exit, the | |||
| *> remaining unconverged eigenvalues are the eigen- | |||
| *> values of the upper Hessenberg matrix rows and | |||
| *> columns ILO through INFO of the final, output | |||
| *> value of H. | |||
| *> | |||
| *> If INFO .GT. 0 and JOB = 'S', then on exit | |||
| *> If INFO > 0 and JOB = 'S', then on exit | |||
| *> | |||
| *> (*) (initial value of H)*U = U*(final value of H) | |||
| *> | |||
| @@ -192,19 +192,19 @@ | |||
| *> value of H is upper Hessenberg and triangular in | |||
| *> rows and columns INFO+1 through IHI. | |||
| *> | |||
| *> If INFO .GT. 0 and COMPZ = 'V', then on exit | |||
| *> If INFO > 0 and COMPZ = 'V', then on exit | |||
| *> | |||
| *> (final value of Z) = (initial value of Z)*U | |||
| *> | |||
| *> where U is the unitary matrix in (*) (regard- | |||
| *> less of the value of JOB.) | |||
| *> | |||
| *> If INFO .GT. 0 and COMPZ = 'I', then on exit | |||
| *> If INFO > 0 and COMPZ = 'I', then on exit | |||
| *> (final value of Z) = U | |||
| *> where U is the unitary matrix in (*) (regard- | |||
| *> less of the value of JOB.) | |||
| *> | |||
| *> If INFO .GT. 0 and COMPZ = 'N', then Z is not | |||
| *> If INFO > 0 and COMPZ = 'N', then Z is not | |||
| *> accessed. | |||
| *> \endverbatim | |||
| * | |||
| @@ -244,8 +244,8 @@ | |||
| *> This depends on ILO, IHI and NS. NS is the | |||
| *> number of simultaneous shifts returned | |||
| *> by ILAENV(ISPEC=15). (See ISPEC=15 below.) | |||
| *> The default for (IHI-ILO+1).LE.500 is NS. | |||
| *> The default for (IHI-ILO+1).GT.500 is 3*NS/2. | |||
| *> The default for (IHI-ILO+1) <= 500 is NS. | |||
| *> The default for (IHI-ILO+1) > 500 is 3*NS/2. | |||
| *> | |||
| *> ISPEC=14: Nibble crossover point. (See IPARMQ for | |||
| *> details.) Default: 14% of deflation window | |||
| @@ -323,8 +323,8 @@ | |||
| PARAMETER ( NTINY = 11 ) | |||
| * | |||
| * ==== NL allocates some local workspace to help small matrices | |||
| * . through a rare CLAHQR failure. NL .GT. NTINY = 11 is | |||
| * . required and NL .LE. NMIN = ILAENV(ISPEC=12,...) is recom- | |||
| * . through a rare CLAHQR failure. NL > NTINY = 11 is | |||
| * . required and NL <= NMIN = ILAENV(ISPEC=12,...) is recom- | |||
| * . mended. (The default value of NMIN is 75.) Using NL = 49 | |||
| * . allows up to six simultaneous shifts and a 16-by-16 | |||
| * . deflation window. ==== | |||
| @@ -132,13 +132,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -125,13 +125,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -65,19 +65,19 @@ | |||
| *> \verbatim | |||
| *> PREC_TYPE is INTEGER | |||
| *> Specifies the intermediate precision to be used in refinement. | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and | |||
| *> P = 'S': Single | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and P | |||
| *> = 'S': Single | |||
| *> = 'D': Double | |||
| *> = 'I': Indigenous | |||
| *> = 'X', 'E': Extra | |||
| *> = 'X' or 'E': Extra | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] TRANS_TYPE | |||
| *> \verbatim | |||
| *> TRANS_TYPE is INTEGER | |||
| *> Specifies the transposition operation on A. | |||
| *> The value is defined by ILATRANS(T) where T is a CHARACTER and | |||
| *> T = 'N': No transpose | |||
| *> The value is defined by ILATRANS(T) where T is a CHARACTER and T | |||
| *> = 'N': No transpose | |||
| *> = 'T': Transpose | |||
| *> = 'C': Conjugate transpose | |||
| *> \endverbatim | |||
| @@ -269,7 +269,7 @@ | |||
| *> information as described below. There currently are up to three | |||
| *> pieces of information returned for each right-hand side. If | |||
| *> 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 index in ERR_BNDS_COMP(i,:) corresponds to the ith | |||
| @@ -21,7 +21,7 @@ | |||
| * REAL FUNCTION CLA_GERCOND_C( TRANS, N, A, LDA, AF, LDAF, IPIV, C, | |||
| * CAPPLY, INFO, WORK, RWORK ) | |||
| * | |||
| * .. Scalar Aguments .. | |||
| * .. Scalar Arguments .. | |||
| * CHARACTER TRANS | |||
| * LOGICAL CAPPLY | |||
| * INTEGER N, LDA, LDAF, INFO | |||
| @@ -114,13 +114,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -147,7 +147,7 @@ | |||
| * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- | |||
| * December 2016 | |||
| * | |||
| * .. Scalar Aguments .. | |||
| * .. Scalar Arguments .. | |||
| CHARACTER TRANS | |||
| LOGICAL CAPPLY | |||
| INTEGER N, LDA, LDAF, INFO | |||
| @@ -107,13 +107,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -65,19 +65,19 @@ | |||
| *> \verbatim | |||
| *> PREC_TYPE is INTEGER | |||
| *> Specifies the intermediate precision to be used in refinement. | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and | |||
| *> P = 'S': Single | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and P | |||
| *> = 'S': Single | |||
| *> = 'D': Double | |||
| *> = 'I': Indigenous | |||
| *> = 'X', 'E': Extra | |||
| *> = 'X' or 'E': Extra | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] TRANS_TYPE | |||
| *> \verbatim | |||
| *> TRANS_TYPE is INTEGER | |||
| *> Specifies the transposition operation on A. | |||
| *> The value is defined by ILATRANS(T) where T is a CHARACTER and | |||
| *> T = 'N': No transpose | |||
| *> The value is defined by ILATRANS(T) where T is a CHARACTER and T | |||
| *> = 'N': No transpose | |||
| *> = 'T': Transpose | |||
| *> = 'C': Conjugate transpose | |||
| *> \endverbatim | |||
| @@ -257,7 +257,7 @@ | |||
| *> information as described below. There currently are up to three | |||
| *> pieces of information returned for each right-hand side. If | |||
| *> componentwise accuracy is not requested (PARAMS(3) = 0.0), then | |||
| *> ERRS_C is not accessed. If N_ERR_BNDS .LT. 3, then at most | |||
| *> ERRS_C is not accessed. If N_ERR_BNDS < 3, then at most | |||
| *> the first (:,N_ERR_BNDS) entries are returned. | |||
| *> | |||
| *> The first index in ERRS_C(i,:) corresponds to the ith | |||
| @@ -110,13 +110,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -103,13 +103,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -66,11 +66,11 @@ | |||
| *> \verbatim | |||
| *> PREC_TYPE is INTEGER | |||
| *> Specifies the intermediate precision to be used in refinement. | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and | |||
| *> P = 'S': Single | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and P | |||
| *> = 'S': Single | |||
| *> = 'D': Double | |||
| *> = 'I': Indigenous | |||
| *> = 'X', 'E': Extra | |||
| *> = 'X' or 'E': Extra | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] UPLO | |||
| @@ -254,7 +254,7 @@ | |||
| *> information as described below. There currently are up to three | |||
| *> pieces of information returned for each right-hand side. If | |||
| *> 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 index in ERR_BNDS_COMP(i,:) corresponds to the ith | |||
| @@ -102,13 +102,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -95,13 +95,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -65,11 +65,11 @@ | |||
| *> \verbatim | |||
| *> PREC_TYPE is INTEGER | |||
| *> Specifies the intermediate precision to be used in refinement. | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and | |||
| *> P = 'S': Single | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and P | |||
| *> = 'S': Single | |||
| *> = 'D': Double | |||
| *> = 'I': Indigenous | |||
| *> = 'X', 'E': Extra | |||
| *> = 'X' or 'E': Extra | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] UPLO | |||
| @@ -246,7 +246,7 @@ | |||
| *> information as described below. There currently are up to three | |||
| *> pieces of information returned for each right-hand side. If | |||
| *> 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 index in ERR_BNDS_COMP(i,:) corresponds to the ith | |||
| @@ -85,7 +85,7 @@ | |||
| *> The leading dimension of the array AF. LDAF >= max(1,N). | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is REAL array, dimension (2*N) | |||
| *> \endverbatim | |||
| @@ -110,13 +110,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -103,13 +103,13 @@ | |||
| *> i > 0: The ith argument is invalid. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is COMPLEX array, dimension (2*N). | |||
| *> Workspace. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] RWORK | |||
| *> \param[out] RWORK | |||
| *> \verbatim | |||
| *> RWORK is REAL array, dimension (N). | |||
| *> Workspace. | |||
| @@ -66,11 +66,11 @@ | |||
| *> \verbatim | |||
| *> PREC_TYPE is INTEGER | |||
| *> Specifies the intermediate precision to be used in refinement. | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and | |||
| *> P = 'S': Single | |||
| *> The value is defined by ILAPREC(P) where P is a CHARACTER and P | |||
| *> = 'S': Single | |||
| *> = 'D': Double | |||
| *> = 'I': Indigenous | |||
| *> = 'X', 'E': Extra | |||
| *> = 'X' or 'E': Extra | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] UPLO | |||
| @@ -254,7 +254,7 @@ | |||
| *> information as described below. There currently are up to three | |||
| *> pieces of information returned for each right-hand side. If | |||
| *> 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 index in ERR_BNDS_COMP(i,:) corresponds to the ith | |||
| @@ -102,7 +102,7 @@ | |||
| *> as determined by CSYTRF. | |||
| *> \endverbatim | |||
| *> | |||
| *> \param[in] WORK | |||
| *> \param[out] WORK | |||
| *> \verbatim | |||
| *> WORK is REAL array, dimension (2*N) | |||
| *> \endverbatim | |||
| @@ -36,7 +36,7 @@ | |||
| *> CLA_WWADDW adds a vector W into a doubled-single vector (X, Y). | |||
| *> | |||
| *> This works for all extant IBM's hex and binary floating point | |||
| *> arithmetics, but not for decimal. | |||
| *> arithmetic, but not for decimal. | |||
| *> \endverbatim | |||
| * | |||
| * Arguments: | |||