LAPACK 3.3.0
|
00001 SUBROUTINE ZLACP2( UPLO, M, N, A, LDA, B, LDB ) 00002 * 00003 * -- LAPACK auxiliary routine (version 3.2) -- 00004 * -- LAPACK is a software package provided by Univ. of Tennessee, -- 00005 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 00006 * November 2006 00007 * 00008 * .. Scalar Arguments .. 00009 CHARACTER UPLO 00010 INTEGER LDA, LDB, M, N 00011 * .. 00012 * .. Array Arguments .. 00013 DOUBLE PRECISION A( LDA, * ) 00014 COMPLEX*16 B( LDB, * ) 00015 * .. 00016 * 00017 * Purpose 00018 * ======= 00019 * 00020 * ZLACP2 copies all or part of a real two-dimensional matrix A to a 00021 * complex matrix B. 00022 * 00023 * Arguments 00024 * ========= 00025 * 00026 * UPLO (input) CHARACTER*1 00027 * Specifies the part of the matrix A to be copied to B. 00028 * = 'U': Upper triangular part 00029 * = 'L': Lower triangular part 00030 * Otherwise: All of the matrix A 00031 * 00032 * M (input) INTEGER 00033 * The number of rows of the matrix A. M >= 0. 00034 * 00035 * N (input) INTEGER 00036 * The number of columns of the matrix A. N >= 0. 00037 * 00038 * A (input) DOUBLE PRECISION array, dimension (LDA,N) 00039 * The m by n matrix A. If UPLO = 'U', only the upper trapezium 00040 * is accessed; if UPLO = 'L', only the lower trapezium is 00041 * accessed. 00042 * 00043 * LDA (input) INTEGER 00044 * The leading dimension of the array A. LDA >= max(1,M). 00045 * 00046 * B (output) COMPLEX*16 array, dimension (LDB,N) 00047 * On exit, B = A in the locations specified by UPLO. 00048 * 00049 * LDB (input) INTEGER 00050 * The leading dimension of the array B. LDB >= max(1,M). 00051 * 00052 * ===================================================================== 00053 * 00054 * .. Local Scalars .. 00055 INTEGER I, J 00056 * .. 00057 * .. External Functions .. 00058 LOGICAL LSAME 00059 EXTERNAL LSAME 00060 * .. 00061 * .. Intrinsic Functions .. 00062 INTRINSIC MIN 00063 * .. 00064 * .. Executable Statements .. 00065 * 00066 IF( LSAME( UPLO, 'U' ) ) THEN 00067 DO 20 J = 1, N 00068 DO 10 I = 1, MIN( J, M ) 00069 B( I, J ) = A( I, J ) 00070 10 CONTINUE 00071 20 CONTINUE 00072 * 00073 ELSE IF( LSAME( UPLO, 'L' ) ) THEN 00074 DO 40 J = 1, N 00075 DO 30 I = J, M 00076 B( I, J ) = A( I, J ) 00077 30 CONTINUE 00078 40 CONTINUE 00079 * 00080 ELSE 00081 DO 60 J = 1, N 00082 DO 50 I = 1, M 00083 B( I, J ) = A( I, J ) 00084 50 CONTINUE 00085 60 CONTINUE 00086 END IF 00087 * 00088 RETURN 00089 * 00090 * End of ZLACP2 00091 * 00092 END