152 SUBROUTINE zsbmv( UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y,
162 INTEGER incx, incy, k, lda, n
163 COMPLEX*16 alpha, beta
166 COMPLEX*16 a( lda, * ), x( * ), y( * )
173 parameter( one = ( 1.0d+0, 0.0d+0 ) )
175 parameter( zero = ( 0.0d+0, 0.0d+0 ) )
178 INTEGER i, info, ix, iy, j, jx, jy, kplus1, kx, ky, l
179 COMPLEX*16 temp1, temp2
196 IF( .NOT.
lsame( uplo,
'U' ) .AND. .NOT.
lsame( uplo,
'L' ) )
THEN
198 ELSE IF( n.LT.0 )
THEN
200 ELSE IF( k.LT.0 )
THEN
202 ELSE IF( lda.LT.( k+1 ) )
THEN
204 ELSE IF( incx.EQ.0 )
THEN
206 ELSE IF( incy.EQ.0 )
THEN
210 CALL
xerbla(
'ZSBMV ', info )
216 IF( ( n.EQ.0 ) .OR. ( ( alpha.EQ.zero ) .AND. ( beta.EQ.one ) ) )
224 kx = 1 - ( n-1 )*incx
229 ky = 1 - ( n-1 )*incy
237 IF( beta.NE.one )
THEN
239 IF( beta.EQ.zero )
THEN
250 IF( beta.EQ.zero )
THEN
257 y( iy ) = beta*y( iy )
265 IF(
lsame( uplo,
'U' ) )
THEN
270 IF( ( incx.EQ.1 ) .AND. ( incy.EQ.1 ) )
THEN
275 DO 50 i = max( 1, j-k ), j - 1
276 y( i ) = y( i ) + temp1*a( l+i, j )
277 temp2 = temp2 + a( l+i, j )*x( i )
279 y( j ) = y( j ) + temp1*a( kplus1, j ) + alpha*temp2
285 temp1 = alpha*x( jx )
290 DO 70 i = max( 1, j-k ), j - 1
291 y( iy ) = y( iy ) + temp1*a( l+i, j )
292 temp2 = temp2 + a( l+i, j )*x( ix )
296 y( jy ) = y( jy ) + temp1*a( kplus1, j ) + alpha*temp2
309 IF( ( incx.EQ.1 ) .AND. ( incy.EQ.1 ) )
THEN
313 y( j ) = y( j ) + temp1*a( 1, j )
315 DO 90 i = j + 1, min( n, j+k )
316 y( i ) = y( i ) + temp1*a( l+i, j )
317 temp2 = temp2 + a( l+i, j )*x( i )
319 y( j ) = y( j ) + alpha*temp2
325 temp1 = alpha*x( jx )
327 y( jy ) = y( jy ) + temp1*a( 1, j )
331 DO 110 i = j + 1, min( n, j+k )
334 y( iy ) = y( iy ) + temp1*a( l+i, j )
335 temp2 = temp2 + a( l+i, j )*x( ix )
337 y( jy ) = y( jy ) + alpha*temp2