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 |