148 SUBROUTINE dsyr2(UPLO,N,ALPHA,X,INCX,Y,INCY,A,LDA)
156 DOUBLE PRECISION alpha
157 INTEGER incx,incy,lda,n
161 DOUBLE PRECISION a(lda,*),x(*),y(*)
167 DOUBLE PRECISION zero
168 parameter(zero=0.0d+0)
171 DOUBLE PRECISION temp1,temp2
172 INTEGER i,info,ix,iy,j,jx,jy,kx,ky
188 IF (.NOT.
lsame(uplo,
'U') .AND. .NOT.
lsame(uplo,
'L'))
THEN
190 ELSE IF (n.LT.0)
THEN
192 ELSE IF (incx.EQ.0)
THEN
194 ELSE IF (incy.EQ.0)
THEN
196 ELSE IF (lda.LT.max(1,n))
THEN
200 CALL
xerbla(
'DSYR2 ',info)
206 IF ((n.EQ.0) .OR. (alpha.EQ.zero)) return
211 IF ((incx.NE.1) .OR. (incy.NE.1))
THEN
230 IF (
lsame(uplo,
'U'))
THEN
234 IF ((incx.EQ.1) .AND. (incy.EQ.1))
THEN
236 IF ((x(j).NE.zero) .OR. (y(j).NE.zero))
THEN
240 a(i,j) = a(i,j) + x(i)*temp1 + y(i)*temp2
246 IF ((x(jx).NE.zero) .OR. (y(jy).NE.zero))
THEN
252 a(i,j) = a(i,j) + x(ix)*temp1 + y(iy)*temp2
265 IF ((incx.EQ.1) .AND. (incy.EQ.1))
THEN
267 IF ((x(j).NE.zero) .OR. (y(j).NE.zero))
THEN
271 a(i,j) = a(i,j) + x(i)*temp1 + y(i)*temp2
277 IF ((x(jx).NE.zero) .OR. (y(jy).NE.zero))
THEN
283 a(i,j) = a(i,j) + x(ix)*temp1 + y(iy)*temp2