1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
SUBROUTINE ICOPY( N, SX, INCX, SY, INCY )
*
* -- LAPACK auxiliary test routine (version 3.0) --
* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
* Courant Institute, Argonne National Lab, and Rice University
* February 29, 1992
*
* .. Scalar Arguments ..
INTEGER INCX, INCY, N
* ..
* .. Array Arguments ..
INTEGER SX( * ), SY( * )
* ..
*
* Purpose
* =======
*
* ICOPY copies an integer vector x to an integer vector y.
* Uses unrolled loops for increments equal to 1.
*
* Arguments
* =========
*
* N (input) INTEGER
* The length of the vectors SX and SY.
*
* SX (input) INTEGER array, dimension (1+(N-1)*abs(INCX))
* The vector X.
*
* INCX (input) INTEGER
* The spacing between consecutive elements of SX.
*
* SY (output) INTEGER array, dimension (1+(N-1)*abs(INCY))
* The vector Y.
*
* INCY (input) INTEGER
* The spacing between consecutive elements of SY.
*
* =====================================================================
*
* .. Local Scalars ..
INTEGER I, IX, IY, M, MP1
* ..
* .. Intrinsic Functions ..
INTRINSIC MOD
* ..
* .. Executable Statements ..
*
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
*
* Code for both increments equal to 1
*
* Clean-up loop
*
20 CONTINUE
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 CONTINUE
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
RETURN
*
* End of ICOPY
*
END
|