1*> \brief \b DCOPY 2* 3* =========== DOCUMENTATION =========== 4* 5* Online html documentation available at 6* http://www.netlib.org/lapack/explore-html/ 7* 8* Definition: 9* =========== 10* 11* SUBROUTINE DCOPY(N,DX,INCX,DY,INCY) 12* 13* .. Scalar Arguments .. 14* INTEGER INCX,INCY,N 15* .. 16* .. Array Arguments .. 17* DOUBLE PRECISION DX(*),DY(*) 18* .. 19* 20* 21*> \par Purpose: 22* ============= 23*> 24*> \verbatim 25*> 26*> DCOPY copies a vector, x, to a vector, y. 27*> uses unrolled loops for increments equal to 1. 28*> \endverbatim 29* 30* Arguments: 31* ========== 32* 33*> \param[in] N 34*> \verbatim 35*> N is INTEGER 36*> number of elements in input vector(s) 37*> \endverbatim 38*> 39*> \param[in] DX 40*> \verbatim 41*> DX is DOUBLE PRECISION array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) 42*> \endverbatim 43*> 44*> \param[in] INCX 45*> \verbatim 46*> INCX is INTEGER 47*> storage spacing between elements of DX 48*> \endverbatim 49*> 50*> \param[out] DY 51*> \verbatim 52*> DY is DOUBLE PRECISION array, dimension ( 1 + ( N - 1 )*abs( INCY ) ) 53*> \endverbatim 54*> 55*> \param[in] INCY 56*> \verbatim 57*> INCY is INTEGER 58*> storage spacing between elements of DY 59*> \endverbatim 60* 61* Authors: 62* ======== 63* 64*> \author Univ. of Tennessee 65*> \author Univ. of California Berkeley 66*> \author Univ. of Colorado Denver 67*> \author NAG Ltd. 68* 69*> \ingroup double_blas_level1 70* 71*> \par Further Details: 72* ===================== 73*> 74*> \verbatim 75*> 76*> jack dongarra, linpack, 3/11/78. 77*> modified 12/3/93, array(1) declarations changed to array(*) 78*> \endverbatim 79*> 80* ===================================================================== 81 SUBROUTINE DCOPY(N,DX,INCX,DY,INCY) 82* 83* -- Reference BLAS level1 routine -- 84* -- Reference BLAS is a software package provided by Univ. of Tennessee, -- 85* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 86* 87* .. Scalar Arguments .. 88 INTEGER INCX,INCY,N 89* .. 90* .. Array Arguments .. 91 DOUBLE PRECISION DX(*),DY(*) 92* .. 93* 94* ===================================================================== 95* 96* .. Local Scalars .. 97 INTEGER I,IX,IY,M,MP1 98* .. 99* .. Intrinsic Functions .. 100 INTRINSIC MOD 101* .. 102 IF (N.LE.0) RETURN 103 IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 104* 105* code for both increments equal to 1 106* 107* 108* clean-up loop 109* 110 M = MOD(N,7) 111 IF (M.NE.0) THEN 112 DO I = 1,M 113 DY(I) = DX(I) 114 END DO 115 IF (N.LT.7) RETURN 116 END IF 117 MP1 = M + 1 118 DO I = MP1,N,7 119 DY(I) = DX(I) 120 DY(I+1) = DX(I+1) 121 DY(I+2) = DX(I+2) 122 DY(I+3) = DX(I+3) 123 DY(I+4) = DX(I+4) 124 DY(I+5) = DX(I+5) 125 DY(I+6) = DX(I+6) 126 END DO 127 ELSE 128* 129* code for unequal increments or equal increments 130* not equal to 1 131* 132 IX = 1 133 IY = 1 134 IF (INCX.LT.0) IX = (-N+1)*INCX + 1 135 IF (INCY.LT.0) IY = (-N+1)*INCY + 1 136 DO I = 1,N 137 DY(IY) = DX(IX) 138 IX = IX + INCX 139 IY = IY + INCY 140 END DO 141 END IF 142 RETURN 143* 144* End of DCOPY 145* 146 END 147