152 SUBROUTINE zspmv( UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY )
161 INTEGER incx, incy, n
162 COMPLEX*16 alpha, beta
165 COMPLEX*16 ap( * ), x( * ), y( * )
172 parameter( one = ( 1.0d+0, 0.0d+0 ) )
174 parameter( zero = ( 0.0d+0, 0.0d+0 ) )
177 INTEGER i, info, ix, iy, j, jx, jy, k, kk, kx, ky
178 COMPLEX*16 temp1, temp2
192 IF( .NOT.
lsame( uplo,
'U' ) .AND. .NOT.
lsame( uplo,
'L' ) )
THEN
194 ELSE IF( n.LT.0 )
THEN
196 ELSE IF( incx.EQ.0 )
THEN
198 ELSE IF( incy.EQ.0 )
THEN
202 CALL
xerbla(
'ZSPMV ', info )
208 IF( ( n.EQ.0 ) .OR. ( ( alpha.EQ.zero ) .AND. ( beta.EQ.one ) ) )
216 kx = 1 - ( n-1 )*incx
221 ky = 1 - ( n-1 )*incy
229 IF( beta.NE.one )
THEN
231 IF( beta.EQ.zero )
THEN
242 IF( beta.EQ.zero )
THEN
249 y( iy ) = beta*y( iy )
258 IF(
lsame( uplo,
'U' ) )
THEN
262 IF( ( incx.EQ.1 ) .AND. ( incy.EQ.1 ) )
THEN
268 y( i ) = y( i ) + temp1*ap( k )
269 temp2 = temp2 + ap( k )*x( i )
272 y( j ) = y( j ) + temp1*ap( kk+j-1 ) + alpha*temp2
279 temp1 = alpha*x( jx )
283 DO 70 k = kk, kk + j - 2
284 y( iy ) = y( iy ) + temp1*ap( k )
285 temp2 = temp2 + ap( k )*x( ix )
289 y( jy ) = y( jy ) + temp1*ap( kk+j-1 ) + alpha*temp2
299 IF( ( incx.EQ.1 ) .AND. ( incy.EQ.1 ) )
THEN
303 y( j ) = y( j ) + temp1*ap( kk )
306 y( i ) = y( i ) + temp1*ap( k )
307 temp2 = temp2 + ap( k )*x( i )
310 y( j ) = y( j ) + alpha*temp2
317 temp1 = alpha*x( jx )
319 y( jy ) = y( jy ) + temp1*ap( kk )
322 DO 110 k = kk + 1, kk + n - j
325 y( iy ) = y( iy ) + temp1*ap( k )
326 temp2 = temp2 + ap( k )*x( ix )
328 y( jy ) = y( jy ) + alpha*temp2