Statistiques
| Révision :

root / src / blas / dscal.f @ 5

Historique | Voir | Annoter | Télécharger (1,21 ko)

1 1 pfleura2
      SUBROUTINE DSCAL(N,DA,DX,INCX)
2 1 pfleura2
*     .. Scalar Arguments ..
3 1 pfleura2
      DOUBLE PRECISION DA
4 1 pfleura2
      INTEGER INCX,N
5 1 pfleura2
*     ..
6 1 pfleura2
*     .. Array Arguments ..
7 1 pfleura2
      DOUBLE PRECISION DX(*)
8 1 pfleura2
*     ..
9 1 pfleura2
*
10 1 pfleura2
*  Purpose
11 1 pfleura2
*  =======
12 1 pfleura2
**
13 1 pfleura2
*     scales a vector by a constant.
14 1 pfleura2
*     uses unrolled loops for increment equal to one.
15 1 pfleura2
*     jack dongarra, linpack, 3/11/78.
16 1 pfleura2
*     modified 3/93 to return if incx .le. 0.
17 1 pfleura2
*     modified 12/3/93, array(1) declarations changed to array(*)
18 1 pfleura2
*
19 1 pfleura2
*
20 1 pfleura2
*     .. Local Scalars ..
21 1 pfleura2
      INTEGER I,M,MP1,NINCX
22 1 pfleura2
*     ..
23 1 pfleura2
*     .. Intrinsic Functions ..
24 1 pfleura2
      INTRINSIC MOD
25 1 pfleura2
*     ..
26 1 pfleura2
      IF (N.LE.0 .OR. INCX.LE.0) RETURN
27 1 pfleura2
      IF (INCX.EQ.1) GO TO 20
28 1 pfleura2
*
29 1 pfleura2
*        code for increment not equal to 1
30 1 pfleura2
*
31 1 pfleura2
      NINCX = N*INCX
32 1 pfleura2
      DO 10 I = 1,NINCX,INCX
33 1 pfleura2
          DX(I) = DA*DX(I)
34 1 pfleura2
   10 CONTINUE
35 1 pfleura2
      RETURN
36 1 pfleura2
*
37 1 pfleura2
*        code for increment equal to 1
38 1 pfleura2
*
39 1 pfleura2
*
40 1 pfleura2
*        clean-up loop
41 1 pfleura2
*
42 1 pfleura2
   20 M = MOD(N,5)
43 1 pfleura2
      IF (M.EQ.0) GO TO 40
44 1 pfleura2
      DO 30 I = 1,M
45 1 pfleura2
          DX(I) = DA*DX(I)
46 1 pfleura2
   30 CONTINUE
47 1 pfleura2
      IF (N.LT.5) RETURN
48 1 pfleura2
   40 MP1 = M + 1
49 1 pfleura2
      DO 50 I = MP1,N,5
50 1 pfleura2
          DX(I) = DA*DX(I)
51 1 pfleura2
          DX(I+1) = DA*DX(I+1)
52 1 pfleura2
          DX(I+2) = DA*DX(I+2)
53 1 pfleura2
          DX(I+3) = DA*DX(I+3)
54 1 pfleura2
          DX(I+4) = DA*DX(I+4)
55 1 pfleura2
   50 CONTINUE
56 1 pfleura2
      RETURN
57 1 pfleura2
      END