~ubuntu-branches/ubuntu/vivid/atlas/vivid

« back to all changes in this revision

Viewing changes to src/blas/f77reference/sswap.f

  • Committer: Package Import Robot
  • Author(s): Sébastien Villemot
  • Date: 2013-06-11 15:58:16 UTC
  • mfrom: (1.1.3 upstream)
  • mto: (2.2.21 experimental)
  • mto: This revision was merged to the branch mainline in revision 26.
  • Revision ID: package-import@ubuntu.com-20130611155816-b72z8f621tuhbzn0
Tags: upstream-3.10.1
Import upstream version 3.10.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      SUBROUTINE SSWAP(N,SX,INCX,SY,INCY)
 
2
*     .. Scalar Arguments ..
 
3
      INTEGER INCX,INCY,N
 
4
*     ..
 
5
*     .. Array Arguments ..
 
6
      REAL SX(*),SY(*)
 
7
*     ..
 
8
*
 
9
*  Purpose
 
10
*  =======
 
11
*
 
12
*     interchanges two vectors.
 
13
*     uses unrolled loops for increments equal to 1.
 
14
*     jack dongarra, linpack, 3/11/78.
 
15
*     modified 12/3/93, array(1) declarations changed to array(*)
 
16
*
 
17
*
 
18
*     .. Local Scalars ..
 
19
      REAL STEMP
 
20
      INTEGER I,IX,IY,M,MP1
 
21
*     ..
 
22
*     .. Intrinsic Functions ..
 
23
      INTRINSIC MOD
 
24
*     ..
 
25
      IF (N.LE.0) RETURN
 
26
      IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
 
27
*
 
28
*       code for unequal increments or equal increments not equal
 
29
*         to 1
 
30
*
 
31
      IX = 1
 
32
      IY = 1
 
33
      IF (INCX.LT.0) IX = (-N+1)*INCX + 1
 
34
      IF (INCY.LT.0) IY = (-N+1)*INCY + 1
 
35
      DO 10 I = 1,N
 
36
          STEMP = SX(IX)
 
37
          SX(IX) = SY(IY)
 
38
          SY(IY) = STEMP
 
39
          IX = IX + INCX
 
40
          IY = IY + INCY
 
41
   10 CONTINUE
 
42
      RETURN
 
43
*
 
44
*       code for both increments equal to 1
 
45
*
 
46
*
 
47
*       clean-up loop
 
48
*
 
49
   20 M = MOD(N,3)
 
50
      IF (M.EQ.0) GO TO 40
 
51
      DO 30 I = 1,M
 
52
          STEMP = SX(I)
 
53
          SX(I) = SY(I)
 
54
          SY(I) = STEMP
 
55
   30 CONTINUE
 
56
      IF (N.LT.3) RETURN
 
57
   40 MP1 = M + 1
 
58
      DO 50 I = MP1,N,3
 
59
          STEMP = SX(I)
 
60
          SX(I) = SY(I)
 
61
          SY(I) = STEMP
 
62
          STEMP = SX(I+1)
 
63
          SX(I+1) = SY(I+1)
 
64
          SY(I+1) = STEMP
 
65
          STEMP = SX(I+2)
 
66
          SX(I+2) = SY(I+2)
 
67
          SY(I+2) = STEMP
 
68
   50 CONTINUE
 
69
      RETURN
 
70
      END