Go to the documentation of this file.00001 SUBROUTINE SSWAP(N,SX,INCX,SY,INCY)
00002
00003 INTEGER INCX,INCY,N
00004
00005
00006 REAL SX(*),SY(*)
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 REAL STEMP
00025 INTEGER I,IX,IY,M,MP1
00026
00027
00028 INTRINSIC MOD
00029
00030 IF (N.LE.0) RETURN
00031 IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
00032
00033
00034
00035
00036 IX = 1
00037 IY = 1
00038 IF (INCX.LT.0) IX = (-N+1)*INCX + 1
00039 IF (INCY.LT.0) IY = (-N+1)*INCY + 1
00040 DO 10 I = 1,N
00041 STEMP = SX(IX)
00042 SX(IX) = SY(IY)
00043 SY(IY) = STEMP
00044 IX = IX + INCX
00045 IY = IY + INCY
00046 10 CONTINUE
00047 RETURN
00048
00049
00050
00051
00052
00053
00054 20 M = MOD(N,3)
00055 IF (M.EQ.0) GO TO 40
00056 DO 30 I = 1,M
00057 STEMP = SX(I)
00058 SX(I) = SY(I)
00059 SY(I) = STEMP
00060 30 CONTINUE
00061 IF (N.LT.3) RETURN
00062 40 MP1 = M + 1
00063 DO 50 I = MP1,N,3
00064 STEMP = SX(I)
00065 SX(I) = SY(I)
00066 SY(I) = STEMP
00067 STEMP = SX(I+1)
00068 SX(I+1) = SY(I+1)
00069 SY(I+1) = STEMP
00070 STEMP = SX(I+2)
00071 SX(I+2) = SY(I+2)
00072 SY(I+2) = STEMP
00073 50 CONTINUE
00074 RETURN
00075 END