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.0) RETURN
32 IF (INCX.EQ.1) THEN
33 *
34 * code for increment equal to 1
35 *
36 *
37 * clean-up loop
38 *
39 M = MOD(N,5)
40 IF (M.NE.0) THEN
41 DO I = 1,M
42 SX(I) = SA*SX(I)
43 END DO
44 IF (N.LT.5) RETURN
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
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.0) RETURN
32 IF (INCX.EQ.1) THEN
33 *
34 * code for increment equal to 1
35 *
36 *
37 * clean-up loop
38 *
39 M = MOD(N,5)
40 IF (M.NE.0) THEN
41 DO I = 1,M
42 SX(I) = SA*SX(I)
43 END DO
44 IF (N.LT.5) RETURN
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