185 SUBROUTINE dsbmv(UPLO,N,K,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
193 DOUBLE PRECISION alpha,beta
194 INTEGER incx,incy,k,lda,n
198 DOUBLE PRECISION a(lda,*),x(*),y(*)
204 DOUBLE PRECISION one,zero
205 parameter(one=1.0d+0,zero=0.0d+0)
208 DOUBLE PRECISION temp1,temp2
209 INTEGER i,info,ix,iy,j,jx,jy,kplus1,kx,ky,l
225 IF (.NOT.
lsame(uplo,
'U') .AND. .NOT.
lsame(uplo,
'L'))
THEN
227 ELSE IF (n.LT.0)
THEN
229 ELSE IF (k.LT.0)
THEN
231 ELSE IF (lda.LT. (k+1))
THEN
233 ELSE IF (incx.EQ.0)
THEN
235 ELSE IF (incy.EQ.0)
THEN
239 CALL
xerbla(
'DSBMV ',info)
245 IF ((n.EQ.0) .OR. ((alpha.EQ.zero).AND. (beta.EQ.one))) return
265 IF (beta.NE.one)
THEN
267 IF (beta.EQ.zero)
THEN
278 IF (beta.EQ.zero)
THEN
291 IF (alpha.EQ.zero) return
292 IF (
lsame(uplo,
'U'))
THEN
297 IF ((incx.EQ.1) .AND. (incy.EQ.1))
THEN
302 DO 50 i = max(1,j-k),j - 1
303 y(i) = y(i) + temp1*a(l+i,j)
304 temp2 = temp2 + a(l+i,j)*x(i)
306 y(j) = y(j) + temp1*a(kplus1,j) + alpha*temp2
317 DO 70 i = max(1,j-k),j - 1
318 y(iy) = y(iy) + temp1*a(l+i,j)
319 temp2 = temp2 + a(l+i,j)*x(ix)
323 y(jy) = y(jy) + temp1*a(kplus1,j) + alpha*temp2
336 IF ((incx.EQ.1) .AND. (incy.EQ.1))
THEN
340 y(j) = y(j) + temp1*a(1,j)
342 DO 90 i = j + 1,min(n,j+k)
343 y(i) = y(i) + temp1*a(l+i,j)
344 temp2 = temp2 + a(l+i,j)*x(i)
346 y(j) = y(j) + alpha*temp2
354 y(jy) = y(jy) + temp1*a(1,j)
358 DO 110 i = j + 1,min(n,j+k)
361 y(iy) = y(iy) + temp1*a(l+i,j)
362 temp2 = temp2 + a(l+i,j)*x(ix)
364 y(jy) = y(jy) + alpha*temp2