![]() |
LAPACK
3.4.1
LAPACK: Linear Algebra PACKage
|
00001 *> \brief \b ZLAIPD 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 ZLAIPD( N, A, INDA, VINDA ) 00012 * 00013 * .. Scalar Arguments .. 00014 * INTEGER INDA, N, VINDA 00015 * .. 00016 * .. Array Arguments .. 00017 * COMPLEX*16 A( * ) 00018 * .. 00019 * 00020 * 00021 *> \par Purpose: 00022 * ============= 00023 *> 00024 *> \verbatim 00025 *> 00026 *> ZLAIPD sets the imaginary part of the diagonal elements of a complex 00027 *> matrix A to a large value. This is used to test LAPACK routines for 00028 *> complex Hermitian matrices, which are not supposed to access or use 00029 *> the imaginary parts of the diagonals. 00030 *> \endverbatim 00031 * 00032 * Arguments: 00033 * ========== 00034 * 00035 *> \param[in] N 00036 *> \verbatim 00037 *> N is INTEGER 00038 *> The number of diagonal elements of A. 00039 *> \endverbatim 00040 *> 00041 *> \param[in,out] A 00042 *> \verbatim 00043 *> A is COMPLEX*16 array, dimension 00044 *> (1+(N-1)*INDA+(N-2)*VINDA) 00045 *> On entry, the complex (Hermitian) matrix A. 00046 *> On exit, the imaginary parts of the diagonal elements are set 00047 *> to BIGNUM = EPS / SAFMIN, where EPS is the machine epsilon and 00048 *> SAFMIN is the safe minimum. 00049 *> \endverbatim 00050 *> 00051 *> \param[in] INDA 00052 *> \verbatim 00053 *> INDA is INTEGER 00054 *> The increment between A(1) and the next diagonal element of A. 00055 *> Typical values are 00056 *> = LDA+1: square matrices with leading dimension LDA 00057 *> = 2: packed upper triangular matrix, starting at A(1,1) 00058 *> = N: packed lower triangular matrix, starting at A(1,1) 00059 *> \endverbatim 00060 *> 00061 *> \param[in] VINDA 00062 *> \verbatim 00063 *> VINDA is INTEGER 00064 *> The change in the diagonal increment between columns of A. 00065 *> Typical values are 00066 *> = 0: no change, the row and column increments in A are fixed 00067 *> = 1: packed upper triangular matrix 00068 *> = -1: packed lower triangular matrix 00069 *> \endverbatim 00070 * 00071 * Authors: 00072 * ======== 00073 * 00074 *> \author Univ. of Tennessee 00075 *> \author Univ. of California Berkeley 00076 *> \author Univ. of Colorado Denver 00077 *> \author NAG Ltd. 00078 * 00079 *> \date November 2011 00080 * 00081 *> \ingroup complex16_lin 00082 * 00083 * ===================================================================== 00084 SUBROUTINE ZLAIPD( N, A, INDA, VINDA ) 00085 * 00086 * -- LAPACK test routine (version 3.4.0) -- 00087 * -- LAPACK is a software package provided by Univ. of Tennessee, -- 00088 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 00089 * November 2011 00090 * 00091 * .. Scalar Arguments .. 00092 INTEGER INDA, N, VINDA 00093 * .. 00094 * .. Array Arguments .. 00095 COMPLEX*16 A( * ) 00096 * .. 00097 * 00098 * ===================================================================== 00099 * 00100 * .. Local Scalars .. 00101 INTEGER I, IA, IXA 00102 DOUBLE PRECISION BIGNUM 00103 * .. 00104 * .. External Functions .. 00105 DOUBLE PRECISION DLAMCH 00106 EXTERNAL DLAMCH 00107 * .. 00108 * .. Intrinsic Functions .. 00109 INTRINSIC DBLE, DCMPLX 00110 * .. 00111 * .. Executable Statements .. 00112 * 00113 BIGNUM = DLAMCH( 'Epsilon' ) / DLAMCH( 'Safe minimum' ) 00114 IA = 1 00115 IXA = INDA 00116 DO 10 I = 1, N 00117 A( IA ) = DCMPLX( DBLE( A( IA ) ), BIGNUM ) 00118 IA = IA + IXA 00119 IXA = IXA + VINDA 00120 10 CONTINUE 00121 RETURN 00122 END