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