C DAXPY SOURCE CHAT 06/03/29 21:18:18 5360 SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY) C C CONSTANT TIMES A VECTOR PLUS A VECTOR. C y <- ax + y C USES UNROLLED LOOPS FOR INCREMENTS EQUAL TO ONE. C JACK DONGARRA, LINPACK, 3/11/78. C MODIFIED 12/3/93, ARRAY(1) DECLARATIONS CHANGED TO ARRAY(*) C C modified 16/2/98 double precision -> real*8 C no unrolled loops : compiler can do that C added error handling C IMPLICIT INTEGER(I-N) -INC CCOPTIO REAL*8 DX(*),DY(*),DA INTEGER I,INCX,INCY,IX,IY,N C IF(N.LE.0) GOTO 9999 IF (DA.EQ.0.0D0) RETURN IF(INCX.NE.1.OR.INCY.NE.1) THEN C C CODE FOR UNEQUAL INCREMENTS OR EQUAL INCREMENTS C NOT EQUAL TO 1 C IX = 1 IY = 1 IF(INCX.LT.0)IX = (-N+1)*INCX + 1 IF(INCY.LT.0)IY = (-N+1)*INCY + 1 DO 10 I = 1,N DY(IY) = DY(IY) + DA*DX(IX) IX = IX + INCX IY = IY + INCY 10 CONTINUE ELSE C C CODE FOR BOTH INCREMENTS EQUAL TO 1 C DO 30 I = 1, N DY(I) = DY(I) + DA*DX(I) 30 CONTINUE ENDIF C C Normal termination C RETURN C C Error handling C 9999 CONTINUE WRITE(IOIMP,*) 'dimension lower than 1 transmitted to' WRITE(IOIMP,*) 'subroutine daxpy : nothing done' call erreur(21) RETURN C C End of DAXPY C END