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