Go to the documentation of this file.00001 DOUBLE PRECISION FUNCTION DASUM(N,DX,INCX)
00002
00003 INTEGER INCX,N
00004
00005
00006 DOUBLE PRECISION DX(*)
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 DOUBLE PRECISION DTEMP
00025 INTEGER I,M,MP1,NINCX
00026
00027
00028 INTRINSIC DABS,MOD
00029
00030 DASUM = 0.0d0
00031 DTEMP = 0.0d0
00032 IF (N.LE.0 .OR. INCX.LE.0) RETURN
00033 IF (INCX.EQ.1) GO TO 20
00034
00035
00036
00037 NINCX = N*INCX
00038 DO 10 I = 1,NINCX,INCX
00039 DTEMP = DTEMP + DABS(DX(I))
00040 10 CONTINUE
00041 DASUM = DTEMP
00042 RETURN
00043
00044
00045
00046
00047
00048
00049 20 M = MOD(N,6)
00050 IF (M.EQ.0) GO TO 40
00051 DO 30 I = 1,M
00052 DTEMP = DTEMP + DABS(DX(I))
00053 30 CONTINUE
00054 IF (N.LT.6) GO TO 60
00055 40 MP1 = M + 1
00056 DO 50 I = MP1,N,6
00057 DTEMP = DTEMP + DABS(DX(I)) + DABS(DX(I+1)) + DABS(DX(I+2)) +
00058 + DABS(DX(I+3)) + DABS(DX(I+4)) + DABS(DX(I+5))
00059 50 CONTINUE
00060 60 DASUM = DTEMP
00061 RETURN
00062 END