Statistics
| Branch: | Revision:

root / synthbench / euroben-dm / mod2b / scal.f @ 0:839f52ef7657

History | View | Annotate | Download (846 Bytes)

1 0:839f52ef7657 louridas
      Subroutine scal( n, a, x, incx )
2 0:839f52ef7657 louridas
      Use         numerics
3 0:839f52ef7657 louridas
      Implicit    None
4 0:839f52ef7657 louridas
5 0:839f52ef7657 louridas
      Real(l_) :: a, x(*)
6 0:839f52ef7657 louridas
      Integer  :: i, incx, m, mp1, n, nincx
7 0:839f52ef7657 louridas
! ----------------------------------------------------------------------
8 0:839f52ef7657 louridas
      If ( n <= 0 ) Return
9 0:839f52ef7657 louridas
      If ( incx /= 1 ) Then
10 0:839f52ef7657 louridas
         nincx = n*incx
11 0:839f52ef7657 louridas
         Do i = 1, nincx, incx
12 0:839f52ef7657 louridas
            x(i) = a*x(i)
13 0:839f52ef7657 louridas
         End Do
14 0:839f52ef7657 louridas
         Return
15 0:839f52ef7657 louridas
      End If
16 0:839f52ef7657 louridas
      m = Mod( n, 5 )
17 0:839f52ef7657 louridas
      If ( m /= 0 ) Then
18 0:839f52ef7657 louridas
         Do i = 1, m
19 0:839f52ef7657 louridas
           x(i) = a*x(i)
20 0:839f52ef7657 louridas
         End Do
21 0:839f52ef7657 louridas
         If ( n < 5 ) Return
22 0:839f52ef7657 louridas
      End If
23 0:839f52ef7657 louridas
      mp1 = m + 1
24 0:839f52ef7657 louridas
      Do i = mp1, n, 5
25 0:839f52ef7657 louridas
        x(i)   = a*x(i)
26 0:839f52ef7657 louridas
        x(i+1) = a*x(i+1)
27 0:839f52ef7657 louridas
        x(i+2) = a*x(i+2)
28 0:839f52ef7657 louridas
        x(i+3) = a*x(i+3)
29 0:839f52ef7657 louridas
        x(i+4) = a*x(i+4)
30 0:839f52ef7657 louridas
      End Do
31 0:839f52ef7657 louridas
! ----------------------------------------------------------------------
32 0:839f52ef7657 louridas
      End Subroutine scal