![]() |
LAPACK
3.4.1
LAPACK: Linear Algebra PACKage
|
00001 *> \brief \b ICOPY 00002 * 00003 * =========== DOCUMENTATION =========== 00004 * 00005 * Online html documentation available at 00006 * http://www.netlib.org/lapack/explore-html/ 00007 * 00008 * Definition: 00009 * =========== 00010 * 00011 * SUBROUTINE ICOPY( N, SX, INCX, SY, INCY ) 00012 * 00013 * .. Scalar Arguments .. 00014 * INTEGER INCX, INCY, N 00015 * .. 00016 * .. Array Arguments .. 00017 * INTEGER SX( * ), SY( * ) 00018 * .. 00019 * 00020 * 00021 *> \par Purpose: 00022 * ============= 00023 *> 00024 *> \verbatim 00025 *> 00026 *> ICOPY copies an integer vector x to an integer vector y. 00027 *> Uses unrolled loops for increments equal to 1. 00028 *> \endverbatim 00029 * 00030 * Arguments: 00031 * ========== 00032 * 00033 *> \param[in] N 00034 *> \verbatim 00035 *> N is INTEGER 00036 *> The length of the vectors SX and SY. 00037 *> \endverbatim 00038 *> 00039 *> \param[in] SX 00040 *> \verbatim 00041 *> SX is INTEGER array, dimension (1+(N-1)*abs(INCX)) 00042 *> The vector X. 00043 *> \endverbatim 00044 *> 00045 *> \param[in] INCX 00046 *> \verbatim 00047 *> INCX is INTEGER 00048 *> The spacing between consecutive elements of SX. 00049 *> \endverbatim 00050 *> 00051 *> \param[out] SY 00052 *> \verbatim 00053 *> SY is INTEGER array, dimension (1+(N-1)*abs(INCY)) 00054 *> The vector Y. 00055 *> \endverbatim 00056 *> 00057 *> \param[in] INCY 00058 *> \verbatim 00059 *> INCY is INTEGER 00060 *> The spacing between consecutive elements of SY. 00061 *> \endverbatim 00062 * 00063 * Authors: 00064 * ======== 00065 * 00066 *> \author Univ. of Tennessee 00067 *> \author Univ. of California Berkeley 00068 *> \author Univ. of Colorado Denver 00069 *> \author NAG Ltd. 00070 * 00071 *> \date November 2011 00072 * 00073 *> \ingroup aux_lin 00074 * 00075 * ===================================================================== 00076 SUBROUTINE ICOPY( N, SX, INCX, SY, INCY ) 00077 * 00078 * -- LAPACK test routine (version 3.4.0) -- 00079 * -- LAPACK is a software package provided by Univ. of Tennessee, -- 00080 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 00081 * November 2011 00082 * 00083 * .. Scalar Arguments .. 00084 INTEGER INCX, INCY, N 00085 * .. 00086 * .. Array Arguments .. 00087 INTEGER SX( * ), SY( * ) 00088 * .. 00089 * 00090 * ===================================================================== 00091 * 00092 * .. Local Scalars .. 00093 INTEGER I, IX, IY, M, MP1 00094 * .. 00095 * .. Intrinsic Functions .. 00096 INTRINSIC MOD 00097 * .. 00098 * .. Executable Statements .. 00099 * 00100 IF( N.LE.0 ) 00101 $ RETURN 00102 IF( INCX.EQ.1 .AND. INCY.EQ.1 ) 00103 $ GO TO 20 00104 * 00105 * Code for unequal increments or equal increments not equal to 1 00106 * 00107 IX = 1 00108 IY = 1 00109 IF( INCX.LT.0 ) 00110 $ IX = ( -N+1 )*INCX + 1 00111 IF( INCY.LT.0 ) 00112 $ IY = ( -N+1 )*INCY + 1 00113 DO 10 I = 1, N 00114 SY( IY ) = SX( IX ) 00115 IX = IX + INCX 00116 IY = IY + INCY 00117 10 CONTINUE 00118 RETURN 00119 * 00120 * Code for both increments equal to 1 00121 * 00122 * Clean-up loop 00123 * 00124 20 CONTINUE 00125 M = MOD( N, 7 ) 00126 IF( M.EQ.0 ) 00127 $ GO TO 40 00128 DO 30 I = 1, M 00129 SY( I ) = SX( I ) 00130 30 CONTINUE 00131 IF( N.LT.7 ) 00132 $ RETURN 00133 40 CONTINUE 00134 MP1 = M + 1 00135 DO 50 I = MP1, N, 7 00136 SY( I ) = SX( I ) 00137 SY( I+1 ) = SX( I+1 ) 00138 SY( I+2 ) = SX( I+2 ) 00139 SY( I+3 ) = SX( I+3 ) 00140 SY( I+4 ) = SX( I+4 ) 00141 SY( I+5 ) = SX( I+5 ) 00142 SY( I+6 ) = SX( I+6 ) 00143 50 CONTINUE 00144 RETURN 00145 * 00146 * End of ICOPY 00147 * 00148 END