1 DOUBLE PRECISION FUNCTION DASUM(N,X,INCX) 2c Copyright (c) 1996 California Institute of Technology, Pasadena, CA. 3c ALL RIGHTS RESERVED. 4c Based on Government Sponsored Research NAS7-03001. 5C>> 1994-11-11 DASUM Krogh Declared all vars. 6c>> 1994-10-20 DASUM Krogh Changes to use M77CON 7c>> 1994-04-19 DASUM Krogh Minor -- Made diff. precision line up. 8C>> 1985-08-02 DASUM Lawson Initial code. 9c--D replaces "?": ?ASUM 10C 11C RETURNS SUM OF MAGNITUDES OF X. 12C DASUM = SUM FROM 0 TO N-1 OF ABS(X(1+I*INCX)) 13C 14 INTEGER N, INCX, NS, I, M, MP1 15 DOUBLE PRECISION X(*) 16 DASUM = 0.0D0 17 IF(N.LE.0)RETURN 18 IF(INCX.EQ.1)GOTO 20 19C 20C CODE FOR INCREMENTS NOT EQUAL TO 1. 21C 22 NS = N*INCX 23 DO 10 I=1,NS,INCX 24 DASUM = DASUM + ABS(X(I)) 25 10 CONTINUE 26 RETURN 27C 28C CODE FOR INCREMENTS EQUAL TO 1. 29C 30C 31C CLEAN-UP LOOP SO REMAINING VECTOR LENGTH IS A MULTIPLE OF 6. 32C 33 20 M = MOD(N,6) 34 IF( M .EQ. 0 ) GO TO 40 35 DO 30 I = 1,M 36 DASUM = DASUM + ABS(X(I)) 37 30 CONTINUE 38 IF( N .LT. 6 ) RETURN 39 40 MP1 = M + 1 40 DO 50 I = MP1,N,6 41 DASUM = DASUM + ABS(X(I)) + ABS(X(I + 1)) + ABS(X(I + 2)) 42 $ + ABS(X(I + 3)) + ABS(X(I + 4)) + ABS(X(I + 5)) 43 50 CONTINUE 44 RETURN 45 END 46