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