```

SUBROUTINE SSCAL( N, SA, SX, INCX ) 18

c         Multiply vector SX by scalar SA

c  INPUT--  N  Number of elements in vector
c          SA  Single precision scale factor
c          SX  Sing-prec array, length 1+(N-1)*INCX, containing vector
c        INCX  Spacing of vector elements in SX

c OUTPUT-- SX  Replace  SX(1+I*INCX)  with  SA * SX(1+I*INCX)
c                for I = 0 to N-1
c ---------------------------------------------------------------------

c     .. Scalar Arguments ..

INTEGER   INCX, N
REAL      SA
c     ..
c     .. Array Arguments ..

REAL      SX( * )
c     ..
c     .. Local Scalars ..

INTEGER   I, M
c     ..
c     .. Intrinsic Functions ..

INTRINSIC MOD
c     ..

IF( N.LE.0 ) RETURN

IF( INCX.NE.1 ) THEN

DO 10 I = 1, 1 + ( N - 1 )*INCX, INCX
SX( I ) = SA*SX( I )
10    CONTINUE

ELSE

M  = MOD( N, 5 )

IF( M.NE.0 ) THEN
c                           ** clean-up loop so remaining vector length
c                           ** is a multiple of 5.
DO 20 I = 1, M
SX( I ) = SA*SX( I )
20       CONTINUE

END IF
c                             ** unroll loop for speed
DO 30 I = M + 1, N, 5
SX( I ) = SA*SX( I )
SX( I + 1 ) = SA*SX( I + 1 )
SX( I + 2 ) = SA*SX( I + 2 )
SX( I + 3 ) = SA*SX( I + 3 )
SX( I + 4 ) = SA*SX( I + 4 )
30    CONTINUE

END IF

END
```