2
SUBROUTINE DCOPY (N, DX, INCX, DY, INCY)
3
C***BEGIN PROLOGUE DCOPY
4
C***PURPOSE Copy a vector.
5
C***LIBRARY SLATEC (BLAS)
7
C***TYPE DOUBLE PRECISION (SCOPY-S, DCOPY-D, CCOPY-C, ICOPY-I)
8
C***KEYWORDS BLAS, COPY, LINEAR ALGEBRA, VECTOR
9
C***AUTHOR Lawson, C. L., (JPL)
10
C Hanson, R. J., (SNLA)
11
C Kincaid, D. R., (U. of Texas)
16
C Description of Parameters
19
C N number of elements in input vector(s)
20
C DX double precision vector with N elements
21
C INCX storage spacing between elements of DX
22
C DY double precision vector with N elements
23
C INCY storage spacing between elements of DY
26
C DY copy of vector DX (unchanged if N .LE. 0)
28
C Copy double precision DX to double precision DY.
29
C For I = 0 to N-1, copy DX(LX+I*INCX) to DY(LY+I*INCY),
30
C where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is
31
C defined in a similar way using INCY.
33
C***REFERENCES C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T.
34
C Krogh, Basic linear algebra subprograms for Fortran
35
C usage, Algorithm No. 539, Transactions on Mathematical
36
C Software 5, 3 (September 1979), pp. 308-323.
37
C***ROUTINES CALLED (NONE)
38
C***REVISION HISTORY (YYMMDD)
40
C 890831 Modified array declarations. (WRB)
41
C 890831 REVISION DATE from Version 3.2
42
C 891214 Prologue converted to Version 4.0 format. (BAB)
43
C 920310 Corrected definition of LX in DESCRIPTION. (WRB)
44
C 920501 Reformatted the REFERENCES section. (WRB)
45
C***END PROLOGUE DCOPY
46
DOUBLE PRECISION DX(*), DY(*)
47
C***FIRST EXECUTABLE STATEMENT DCOPY
49
IF (INCX .EQ. INCY) IF (INCX-1) 5,20,60
51
C Code for unequal or nonpositive increments.
55
IF (INCX .LT. 0) IX = (-N+1)*INCX + 1
56
IF (INCY .LT. 0) IY = (-N+1)*INCY + 1
64
C Code for both increments equal to 1.
66
C Clean-up loop so remaining vector length is a multiple of 7.
69
IF (M .EQ. 0) GO TO 40
86
C Code for equal, positive, non-unit increments.