summaryrefslogtreecommitdiff
path: root/BLAS/SRC/scopy.f
diff options
context:
space:
mode:
Diffstat (limited to 'BLAS/SRC/scopy.f')
-rw-r--r--BLAS/SRC/scopy.f64
1 files changed, 33 insertions, 31 deletions
diff --git a/BLAS/SRC/scopy.f b/BLAS/SRC/scopy.f
index e0f41fe8..905a64cb 100644
--- a/BLAS/SRC/scopy.f
+++ b/BLAS/SRC/scopy.f
@@ -27,42 +27,44 @@
INTRINSIC MOD
* ..
IF (N.LE.0) RETURN
- IF (INCX.EQ.1 .AND. INCY.EQ.1) GO TO 20
-*
-* code for unequal increments or equal increments
-* not equal to 1
-*
- IX = 1
- IY = 1
- IF (INCX.LT.0) IX = (-N+1)*INCX + 1
- IF (INCY.LT.0) IY = (-N+1)*INCY + 1
- DO 10 I = 1,N
- SY(IY) = SX(IX)
- IX = IX + INCX
- IY = IY + INCY
- 10 CONTINUE
- RETURN
+ IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
*
* code for both increments equal to 1
*
*
* clean-up loop
*
- 20 M = MOD(N,7)
- IF (M.EQ.0) GO TO 40
- DO 30 I = 1,M
- SY(I) = SX(I)
- 30 CONTINUE
- IF (N.LT.7) RETURN
- 40 MP1 = M + 1
- DO 50 I = MP1,N,7
- SY(I) = SX(I)
- SY(I+1) = SX(I+1)
- SY(I+2) = SX(I+2)
- SY(I+3) = SX(I+3)
- SY(I+4) = SX(I+4)
- SY(I+5) = SX(I+5)
- SY(I+6) = SX(I+6)
- 50 CONTINUE
+ M = MOD(N,7)
+ IF (M.NE.0) THEN
+ DO I = 1,M
+ SY(I) = SX(I)
+ END DO
+ IF (N.LT.7) RETURN
+ END IF
+ MP1 = M + 1
+ DO I = MP1,N,7
+ SY(I) = SX(I)
+ SY(I+1) = SX(I+1)
+ SY(I+2) = SX(I+2)
+ SY(I+3) = SX(I+3)
+ SY(I+4) = SX(I+4)
+ SY(I+5) = SX(I+5)
+ SY(I+6) = SX(I+6)
+ END DO
+ ELSE
+*
+* code for unequal increments or equal increments
+* not equal to 1
+*
+ IX = 1
+ IY = 1
+ IF (INCX.LT.0) IX = (-N+1)*INCX + 1
+ IF (INCY.LT.0) IY = (-N+1)*INCY + 1
+ DO I = 1,N
+ SY(IY) = SX(IX)
+ IX = IX + INCX
+ IY = IY + INCY
+ END DO
+ END IF
RETURN
END