1       REAL FUNCTION SASUM(N,SX,INCX)
 2 *     .. Scalar Arguments ..
 3       INTEGER INCX,N
 4 *     ..
 5 *     .. Array Arguments ..
 6       REAL SX(*)
 7 *     ..
 8 *
 9 *  Purpose
10 *  =======
11 *
12 *     SASUM takes the sum of the absolute values.
13 *     uses unrolled loops for increment equal to one.
14 *
15 *  Further Details
16 *  ===============
17 *
18 *     jack dongarra, linpack, 3/11/78.
19 *     modified 3/93 to return if incx .le. 0.
20 *     modified 12/3/93, array(1) declarations changed to array(*)
21 *
22 *  =====================================================================
23 *
24 *     .. Local Scalars ..
25       REAL STEMP
26       INTEGER I,M,MP1,NINCX
27 *     ..
28 *     .. Intrinsic Functions ..
29       INTRINSIC ABS,MOD
30 *     ..
31       SASUM = 0.0e0
32       STEMP = 0.0e0
33       IF (N.LE.0 .OR. INCX.LE.0RETURN
34       IF (INCX.EQ.1THEN
35 *        code for increment equal to 1
36 *
37 *
38 *        clean-up loop
39 *
40          M = MOD(N,6)
41          IF (M.NE.0THEN
42             DO I = 1,M
43                STEMP = STEMP + ABS(SX(I))
44             END DO
45             IF (N.LT.6THEN
46                SASUM = STEMP
47                RETURN
48             END IF
49          END IF
50          MP1 = M + 1
51          DO I = MP1,N,6
52             STEMP = STEMP + ABS(SX(I)) + ABS(SX(I+1)) +
53      $              ABS(SX(I+2)) + ABS(SX(I+3)) +
54      $              ABS(SX(I+4)) + ABS(SX(I+5))
55          END DO
56       ELSE
57 *
58 *        code for increment not equal to 1
59 *
60          NINCX = N*INCX
61          DO I = 1,NINCX,INCX
62             STEMP = STEMP + ABS(SX(I))
63          END DO
64       END IF
65       SASUM = STEMP
66       RETURN
67       END