1*> \brief \b DLACPY copies all or part of one two-dimensional array to another.
2*
3*  =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6*            http://www.netlib.org/lapack/explore-html/
7*
8*> \htmlonly
9*> Download DLACPY + dependencies
10*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlacpy.f">
11*> [TGZ]</a>
12*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlacpy.f">
13*> [ZIP]</a>
14*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlacpy.f">
15*> [TXT]</a>
16*> \endhtmlonly
17*
18*  Definition:
19*  ===========
20*
21*       SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
22*
23*       .. Scalar Arguments ..
24*       CHARACTER          UPLO
25*       INTEGER            LDA, LDB, M, N
26*       ..
27*       .. Array Arguments ..
28*       DOUBLE PRECISION   A( LDA, * ), B( LDB, * )
29*       ..
30*
31*
32*> \par Purpose:
33*  =============
34*>
35*> \verbatim
36*>
37*> DLACPY copies all or part of a two-dimensional matrix A to another
38*> matrix B.
39*> \endverbatim
40*
41*  Arguments:
42*  ==========
43*
44*> \param[in] UPLO
45*> \verbatim
46*>          UPLO is CHARACTER*1
47*>          Specifies the part of the matrix A to be copied to B.
48*>          = 'U':      Upper triangular part
49*>          = 'L':      Lower triangular part
50*>          Otherwise:  All of the matrix A
51*> \endverbatim
52*>
53*> \param[in] M
54*> \verbatim
55*>          M is INTEGER
56*>          The number of rows of the matrix A.  M >= 0.
57*> \endverbatim
58*>
59*> \param[in] N
60*> \verbatim
61*>          N is INTEGER
62*>          The number of columns of the matrix A.  N >= 0.
63*> \endverbatim
64*>
65*> \param[in] A
66*> \verbatim
67*>          A is DOUBLE PRECISION array, dimension (LDA,N)
68*>          The m by n matrix A.  If UPLO = 'U', only the upper triangle
69*>          or trapezoid is accessed; if UPLO = 'L', only the lower
70*>          triangle or trapezoid is accessed.
71*> \endverbatim
72*>
73*> \param[in] LDA
74*> \verbatim
75*>          LDA is INTEGER
76*>          The leading dimension of the array A.  LDA >= max(1,M).
77*> \endverbatim
78*>
79*> \param[out] B
80*> \verbatim
81*>          B is DOUBLE PRECISION array, dimension (LDB,N)
82*>          On exit, B = A in the locations specified by UPLO.
83*> \endverbatim
84*>
85*> \param[in] LDB
86*> \verbatim
87*>          LDB is INTEGER
88*>          The leading dimension of the array B.  LDB >= max(1,M).
89*> \endverbatim
90*
91*  Authors:
92*  ========
93*
94*> \author Univ. of Tennessee
95*> \author Univ. of California Berkeley
96*> \author Univ. of Colorado Denver
97*> \author NAG Ltd.
98*
99*> \date September 2012
100*
101*> \ingroup auxOTHERauxiliary
102*
103*  =====================================================================
104      SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
105*
106*  -- LAPACK auxiliary routine (version 3.4.2) --
107*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
108*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
109*     September 2012
110*
111*     .. Scalar Arguments ..
112      CHARACTER          UPLO
113      INTEGER            LDA, LDB, M, N
114*     ..
115*     .. Array Arguments ..
116      DOUBLE PRECISION   A( LDA, * ), B( LDB, * )
117*     ..
118*
119*  =====================================================================
120*
121*     .. Local Scalars ..
122      INTEGER            I, J
123*     ..
124*     .. External Functions ..
125      LOGICAL            LSAME
126      EXTERNAL           LSAME
127*     ..
128*     .. Intrinsic Functions ..
129      INTRINSIC          MIN
130*     ..
131*     .. Executable Statements ..
132*
133      IF( LSAME( UPLO, 'U' ) ) THEN
134         DO 20 J = 1, N
135            DO 10 I = 1, MIN( J, M )
136               B( I, J ) = A( I, J )
137   10       CONTINUE
138   20    CONTINUE
139      ELSE IF( LSAME( UPLO, 'L' ) ) THEN
140         DO 40 J = 1, N
141            DO 30 I = J, M
142               B( I, J ) = A( I, J )
143   30       CONTINUE
144   40    CONTINUE
145      ELSE
146         DO 60 J = 1, N
147            DO 50 I = 1, M
148               B( I, J ) = A( I, J )
149   50       CONTINUE
150   60    CONTINUE
151      END IF
152      RETURN
153*
154*     End of DLACPY
155*
156      END
157