LAPACK  3.4.1
LAPACK: Linear Algebra PACKage
icopy.f
Go to the documentation of this file.
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
 All Files Functions