home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / fortran / library / linpack / sscal.for < prev    next >
Text File  |  1984-01-07  |  916b  |  42 lines

  1.       SUBROUTINE  SSCAL(N,DA,DX,INCX)
  2. C
  3. C     SCALES A VECTOR BY A CONSTANT.
  4. C     USES UNROLLED LOOPS FOR INCREMENT EQUAL TO ONE.
  5. C     JACK DONGARRA, LINPACK, 3/11/78.
  6. C
  7.       REAL DA,DX(1)
  8.       INTEGER I,INCX,M,MP1,N,NINCX
  9. C
  10.       IF(N.LE.0)RETURN
  11.       IF(INCX.EQ.1)GO TO 20
  12. C
  13. C        CODE FOR INCREMENT NOT EQUAL TO 1
  14. C
  15.       NINCX = N*INCX
  16.       DO 10 I = 1,NINCX,INCX
  17.         DX(I) = DA*DX(I)
  18.    10 CONTINUE
  19.       RETURN
  20. C
  21. C        CODE FOR INCREMENT EQUAL TO 1
  22. C
  23. C
  24. C        CLEAN-UP LOOP
  25. C
  26.    20 M = MOD(N,5)
  27.       IF( M .EQ. 0 ) GO TO 40
  28.       DO 30 I = 1,M
  29.         DX(I) = DA*DX(I)
  30.    30 CONTINUE
  31.       IF( N .LT. 5 ) RETURN
  32.    40 MP1 = M + 1
  33.       DO 50 I = MP1,N,5
  34.         DX(I) = DA*DX(I)
  35.         DX(I + 1) = DA*DX(I + 1)
  36.         DX(I + 2) = DA*DX(I + 2)
  37.         DX(I + 3) = DA*DX(I + 3)
  38.         DX(I + 4) = DA*DX(I + 4)
  39.    50 CONTINUE
  40.       RETURN
  41.       END
  42.