Go to the documentation of this file.00001 SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY)
00002
00003 DOUBLE PRECISION DA
00004 INTEGER INCX,INCY,N
00005
00006
00007 DOUBLE PRECISION DX(*),DY(*)
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 INTEGER I,IX,IY,M,MP1
00026
00027
00028 INTRINSIC MOD
00029
00030 IF (N.LE.0) RETURN
00031 IF (DA.EQ.0.0d0) RETURN
00032 IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
00033
00034
00035
00036
00037
00038
00039 M = MOD(N,4)
00040 IF (M.NE.0) THEN
00041 DO I = 1,M
00042 DY(I) = DY(I) + DA*DX(I)
00043 END DO
00044 END IF
00045 IF (N.LT.4) RETURN
00046 MP1 = M + 1
00047 DO I = MP1,N,4
00048 DY(I) = DY(I) + DA*DX(I)
00049 DY(I+1) = DY(I+1) + DA*DX(I+1)
00050 DY(I+2) = DY(I+2) + DA*DX(I+2)
00051 DY(I+3) = DY(I+3) + DA*DX(I+3)
00052 END DO
00053 ELSE
00054
00055
00056
00057
00058 IX = 1
00059 IY = 1
00060 IF (INCX.LT.0) IX = (-N+1)*INCX + 1
00061 IF (INCY.LT.0) IY = (-N+1)*INCY + 1
00062 DO I = 1,N
00063 DY(IY) = DY(IY) + DA*DX(IX)
00064 IX = IX + INCX
00065 IY = IY + INCY
00066 END DO
00067 END IF
00068 RETURN
00069 END