|
 |
 |
 |
MAN page from openSUSE Leap 42 blas-man-3.5.0-9.1.noarch.rpm
ctpmv.fSection: LAPACK (3) Updated: Fri Nov 4 2016 Index NAMEctpmv.f - SYNOPSIS Functions/Subroutines subroutine CTPMV (UPLO, TRANS, DIAG, N, AP, X, INCX) CTPMV
Function/Subroutine Documentation subroutine CTPMV (character UPLO, character TRANS, character DIAG, integer N, complex, dimension(*) AP, complex, dimension(*) X, integer INCX)CTPMV Purpose: CTPMV performs one of the matrix-vector operations x := A*x, or x := A**T*x, or x := A**H*x, where x is an n element vector and A is an n by n unit, or non-unit, upper or lower triangular matrix, supplied in packed form.
Parameters: - UPLO
UPLO is CHARACTER*1 On entry, UPLO specifies whether the matrix is an upper or lower triangular matrix as follows: UPLO = 'U' or 'u' A is an upper triangular matrix. UPLO = 'L' or 'l' A is a lower triangular matrix. TRANS
TRANS is CHARACTER*1 On entry, TRANS specifies the operation to be performed as follows: TRANS = 'N' or 'n' x := A*x. TRANS = 'T' or 't' x := A**T*x. TRANS = 'C' or 'c' x := A**H*x. DIAG
DIAG is CHARACTER*1 On entry, DIAG specifies whether or not A is unit triangular as follows: DIAG = 'U' or 'u' A is assumed to be unit triangular. DIAG = 'N' or 'n' A is not assumed to be unit triangular. N
N is INTEGER On entry, N specifies the order of the matrix A. N must be at least zero. AP
AP is COMPLEX array of DIMENSION at least ( ( n*( n + 1 ) )/2 ). Before entry with UPLO = 'U' or 'u', the array AP must contain the upper triangular matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respectively, and so on. Before entry with UPLO = 'L' or 'l', the array AP must contain the lower triangular matrix packed sequentially, column by column, so that AP( 1 ) contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respectively, and so on. Note that when DIAG = 'U' or 'u', the diagonal elements of A are not referenced, but are assumed to be unity. X
X is COMPLEX array of dimension at least ( 1 + ( n - 1 )*abs( INCX ) ). Before entry, the incremented array X must contain the n element vector x. On exit, X is overwritten with the tranformed vector x. INCX
INCX is INTEGER On entry, INCX specifies the increment for the elements of X. INCX must not be zero.
Author: - Univ. of Tennessee
Univ. of California Berkeley Univ. of Colorado Denver NAG Ltd.
Date: - November 2011
Further Details: Level 2 Blas routine. The vector and matrix arguments are not referenced when N = 0, or M = 0 -- Written on 22-October-1986. Jack Dongarra, Argonne National Lab. Jeremy Du Croz, Nag Central Office. Sven Hammarling, Nag Central Office. Richard Hanson, Sandia National Labs.
Definition at line 144 of file ctpmv.f. 144 *145 * -- Reference BLAS level2 routine (version 3.4.0) --146 * -- Reference BLAS is a software package provided by Univ. of Tennessee, --147 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--148 * November 2011149 *150 * .. Scalar Arguments ..151 INTEGER incx,n152 CHARACTER diag,trans,uplo153 * ..154 * .. Array Arguments ..155 COMPLEX ap(*),x(*)156 * ..157 *158 * =====================================================================159 *160 * .. Parameters ..161 COMPLEX zero162 parameter(zero= (0.0e+0,0.0e+0))163 * ..164 * .. Local Scalars ..165 COMPLEX temp166 INTEGER i,info,ix,j,jx,k,kk,kx167 LOGICAL noconj,nounit168 * ..169 * .. External Functions ..170 LOGICAL lsame171 EXTERNAL lsame172 * ..173 * .. External Subroutines ..174 EXTERNAL xerbla175 * ..176 * .. Intrinsic Functions ..177 INTRINSIC conjg178 * ..179 *180 * Test the input parameters.181 *182 info = 0183 IF (.NOT.lsame(uplo,'U') .AND. .NOT.lsame(uplo,'L')) THEN184 info = 1185 ELSE IF (.NOT.lsame(trans,'N') .AND. .NOT.lsame(trans,'T') .AND.186 + .NOT.lsame(trans,'C')) THEN187 info = 2188 ELSE IF (.NOT.lsame(diag,'U') .AND. .NOT.lsame(diag,'N')) THEN189 info = 3190 ELSE IF (n.LT.0) THEN191 info = 4192 ELSE IF (incx.EQ.0) THEN193 info = 7194 END IF195 IF (info.NE.0) THEN196 CALL xerbla('CTPMV ',info)197 RETURN198 END IF199 *200 * Quick return if possible.201 *202 IF (n.EQ.0) RETURN203 *204 noconj = lsame(trans,'T')205 nounit = lsame(diag,'N')206 *207 * Set up the start point in X if the increment is not unity. This208 * will be ( N - 1 )*INCX too small for descending loops.209 *210 IF (incx.LE.0) THEN211 kx = 1 - (n-1)*incx212 ELSE IF (incx.NE.1) THEN213 kx = 1214 END IF215 *216 * Start the operations. In this version the elements of AP are217 * accessed sequentially with one pass through AP.218 *219 IF (lsame(trans,'N')) THEN220 *221 * Form x:= A*x.222 *223 IF (lsame(uplo,'U')) THEN224 kk = 1225 IF (incx.EQ.1) THEN226 DO 20 j = 1,n227 IF (x(j).NE.zero) THEN228 temp = x(j)229 k = kk230 DO 10 i = 1,j - 1231 x(i) = x(i) + temp*ap(k)232 k = k + 1233 10 CONTINUE234 IF (nounit) x(j) = x(j)*ap(kk+j-1)235 END IF236 kk = kk + j237 20 CONTINUE238 ELSE239 jx = kx240 DO 40 j = 1,n241 IF (x(jx).NE.zero) THEN242 temp = x(jx)243 ix = kx244 DO 30 k = kk,kk + j - 2245 x(ix) = x(ix) + temp*ap(k)246 ix = ix + incx247 30 CONTINUE248 IF (nounit) x(jx) = x(jx)*ap(kk+j-1)249 END IF250 jx = jx + incx251 kk = kk + j252 40 CONTINUE253 END IF254 ELSE255 kk = (n* (n+1))/2256 IF (incx.EQ.1) THEN257 DO 60 j = n,1,-1258 IF (x(j).NE.zero) THEN259 temp = x(j)260 k = kk261 DO 50 i = n,j + 1,-1262 x(i) = x(i) + temp*ap(k)263 k = k - 1264 50 CONTINUE265 IF (nounit) x(j) = x(j)*ap(kk-n+j)266 END IF267 kk = kk - (n-j+1)268 60 CONTINUE269 ELSE270 kx = kx + (n-1)*incx271 jx = kx272 DO 80 j = n,1,-1273 IF (x(jx).NE.zero) THEN274 temp = x(jx)275 ix = kx276 DO 70 k = kk,kk - (n- (j+1)),-1277 x(ix) = x(ix) + temp*ap(k)278 ix = ix - incx279 70 CONTINUE280 IF (nounit) x(jx) = x(jx)*ap(kk-n+j)281 END IF282 jx = jx - incx283 kk = kk - (n-j+1)284 80 CONTINUE285 END IF286 END IF287 ELSE288 *289 * Form x := A**T*x or x := A**H*x.290 *291 IF (lsame(uplo,'U')) THEN292 kk = (n* (n+1))/2293 IF (incx.EQ.1) THEN294 DO 110 j = n,1,-1295 temp = x(j)296 k = kk - 1297 IF (noconj) THEN298 IF (nounit) temp = temp*ap(kk)299 DO 90 i = j - 1,1,-1300 temp = temp + ap(k)*x(i)301 k = k - 1302 90 CONTINUE303 ELSE304 IF (nounit) temp = temp*conjg(ap(kk))305 DO 100 i = j - 1,1,-1306 temp = temp + conjg(ap(k))*x(i)307 k = k - 1308 100 CONTINUE309 END IF310 x(j) = temp311 kk = kk - j312 110 CONTINUE313 ELSE314 jx = kx + (n-1)*incx315 DO 140 j = n,1,-1316 temp = x(jx)317 ix = jx318 IF (noconj) THEN319 IF (nounit) temp = temp*ap(kk)320 DO 120 k = kk - 1,kk - j + 1,-1321 ix = ix - incx322 temp = temp + ap(k)*x(ix)323 120 CONTINUE324 ELSE325 IF (nounit) temp = temp*conjg(ap(kk))326 DO 130 k = kk - 1,kk - j + 1,-1327 ix = ix - incx328 temp = temp + conjg(ap(k))*x(ix)329 130 CONTINUE330 END IF331 x(jx) = temp332 jx = jx - incx333 kk = kk - j334 140 CONTINUE335 END IF336 ELSE337 kk = 1338 IF (incx.EQ.1) THEN339 DO 170 j = 1,n340 temp = x(j)341 k = kk + 1342 IF (noconj) THEN343 IF (nounit) temp = temp*ap(kk)344 DO 150 i = j + 1,n345 temp = temp + ap(k)*x(i)346 k = k + 1347 150 CONTINUE348 ELSE349 IF (nounit) temp = temp*conjg(ap(kk))350 DO 160 i = j + 1,n351 temp = temp + conjg(ap(k))*x(i)352 k = k + 1353 160 CONTINUE354 END IF355 x(j) = temp356 kk = kk + (n-j+1)357 170 CONTINUE358 ELSE359 jx = kx360 DO 200 j = 1,n361 temp = x(jx)362 ix = jx363 IF (noconj) THEN364 IF (nounit) temp = temp*ap(kk)365 DO 180 k = kk + 1,kk + n - j366 ix = ix + incx367 temp = temp + ap(k)*x(ix)368 180 CONTINUE369 ELSE370 IF (nounit) temp = temp*conjg(ap(kk))371 DO 190 k = kk + 1,kk + n - j372 ix = ix + incx373 temp = temp + conjg(ap(k))*x(ix)374 190 CONTINUE375 END IF376 x(jx) = temp377 jx = jx + incx378 kk = kk + (n-j+1)379 200 CONTINUE380 END IF381 END IF382 END IF383 *384 RETURN385 *386 * End of CTPMV .387 * AuthorGenerated automatically by Doxygen for LAPACK from the source code. Index- NAME
- SYNOPSIS
- Functions/Subroutines
- Function/Subroutine Documentation
- subroutine CTPMV (character UPLO, character TRANS, character DIAG, integer N, complex, dimension(*) AP, complex, dimension(*) X, integer INCX)
- Author
This document was created byman2html,using the manual pages. |
|
|